mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
Merge #21694: build: Use XLIFF file to provide more context to Transifex translators
35d52397e7
Add bitcoin_en.xlf intermediate translation file to the repo (Hennadii Stepanov)99686b6519
qt [experimental]: Add a translation comment and a disambiguation string (Hennadii Stepanov)f959b75e8c
build: Add Qt lconvert tool to depends (Hennadii Stepanov)2045e4cdd2
build: Use XLIFF file to provide more context to Transifex translators (Hennadii Stepanov) Pull request description: Currently, only a class name is provided to the Transifex translators as a context. Neither `disambiguation` parameter of the `tr()` function nor [translator comments](https://doc.qt.io/qt-5/i18n-source-translation.html#translator-comments), being included as XML elements to `*.ts` translation files, are not parsed by the Transifex due to its [limited support](https://docs.transifex.com/formats/qt-ts) of such files. This PR makes possible to provide all of the context details via an intermediate [XLIFF](https://docs.transifex.com/formats/xliff) translation file. With this PR `make -C src translate` produces the `src/qt/locale/bitcoin_en.xlf` file which must be provided to the Transifex as a translation source instead of `src/qt/locale/bitcoin_en.ts`. Closes #21465. An example translatable string with additional `<context>` and `<note>` XML elements:35d52397e7/src/qt/locale/bitcoin_en.xlf (L126-L132)
ACKs for top commit: laanwj: ACK35d52397e7
Tree-SHA512: cc19e3c09501d240153550d75d7697b5f824cb553f4223beaff66be4d3e6f98d7b5bb14f2d1e1d5ad014eaaa498a7f672e7ff0054ced53ace8c1e6f7e49f6d8a
This commit is contained in:
commit
90e0faaa44
8 changed files with 6365 additions and 328 deletions
|
@ -3,5 +3,5 @@ host = https://www.transifex.com
|
|||
|
||||
[bitcoin.qt-translation-021x]
|
||||
file_filter = src/qt/locale/bitcoin_<lang>.ts
|
||||
source_file = src/qt/locale/bitcoin_en.ts
|
||||
source_file = src/qt/locale/bitcoin_en.xlf
|
||||
source_lang = en
|
||||
|
|
|
@ -225,6 +225,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt5 rcc5 rcc], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt5 lrelease5 lrelease], $qt_bin_path)
|
||||
BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt5 lupdate5 lupdate],$qt_bin_path, yes)
|
||||
BITCOIN_QT_PATH_PROGS([LCONVERT], [lconvert-qt5 lconvert5 lconvert], $qt_bin_path, yes)
|
||||
|
||||
MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)'
|
||||
case $host in
|
||||
|
@ -258,7 +259,10 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
|
|||
AC_MSG_ERROR([libQtDBus not found. Install libQtDBus or remove --with-qtdbus.])
|
||||
fi
|
||||
if test "x$LUPDATE" = x; then
|
||||
AC_MSG_WARN([lupdate is required to update qt translations])
|
||||
AC_MSG_WARN([lupdate tool is required to update Qt translations.])
|
||||
fi
|
||||
if test "x$LCONVERT" = x; then
|
||||
AC_MSG_WARN([lconvert tool is required to update Qt translations.])
|
||||
fi
|
||||
],[
|
||||
bitcoin_enable_qt=no
|
||||
|
|
|
@ -261,13 +261,15 @@ define $(package)_config_cmds
|
|||
qtbase/bin/qmake -o qttranslations/Makefile qttranslations/qttranslations.pro && \
|
||||
qtbase/bin/qmake -o qttranslations/translations/Makefile qttranslations/translations/translations.pro && \
|
||||
qtbase/bin/qmake -o qttools/src/linguist/lrelease/Makefile qttools/src/linguist/lrelease/lrelease.pro && \
|
||||
qtbase/bin/qmake -o qttools/src/linguist/lupdate/Makefile qttools/src/linguist/lupdate/lupdate.pro
|
||||
qtbase/bin/qmake -o qttools/src/linguist/lupdate/Makefile qttools/src/linguist/lupdate/lupdate.pro && \
|
||||
qtbase/bin/qmake -o qttools/src/linguist/lconvert/Makefile qttools/src/linguist/lconvert/lconvert.pro
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C qtbase/src $(addprefix sub-,$($(package)_qt_libs)) && \
|
||||
$(MAKE) -C qttools/src/linguist/lrelease && \
|
||||
$(MAKE) -C qttools/src/linguist/lupdate && \
|
||||
$(MAKE) -C qttools/src/linguist/lconvert && \
|
||||
$(MAKE) -C qttranslations
|
||||
endef
|
||||
|
||||
|
@ -275,6 +277,7 @@ define $(package)_stage_cmds
|
|||
$(MAKE) -C qtbase/src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && \
|
||||
$(MAKE) -C qttools/src/linguist/lrelease INSTALL_ROOT=$($(package)_staging_dir) install_target && \
|
||||
$(MAKE) -C qttools/src/linguist/lupdate INSTALL_ROOT=$($(package)_staging_dir) install_target && \
|
||||
$(MAKE) -C qttools/src/linguist/lconvert INSTALL_ROOT=$($(package)_staging_dir) install_target && \
|
||||
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets
|
||||
endef
|
||||
|
||||
|
|
|
@ -356,6 +356,8 @@ $(srcdir)/qt/bitcoinstrings.cpp: FORCE
|
|||
translate: $(srcdir)/qt/bitcoinstrings.cpp $(QT_FORMS_UI) $(QT_FORMS_UI) $(BITCOIN_QT_BASE_CPP) qt/bitcoin.cpp $(BITCOIN_QT_WINDOWS_CPP) $(BITCOIN_QT_WALLET_CPP) $(BITCOIN_QT_H) $(BITCOIN_MM)
|
||||
@test -n $(LUPDATE) || echo "lupdate is required for updating translations"
|
||||
$(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LUPDATE) $^ -locations relative -no-obsolete -ts $(srcdir)/qt/locale/bitcoin_en.ts
|
||||
@test -n $(LCONVERT) || echo "lconvert is required for updating translations"
|
||||
$(AM_V_GEN) QT_SELECT=$(QT_SELECT) $(LCONVERT) -o $(srcdir)/qt/locale/bitcoin_en.xlf -i $(srcdir)/qt/locale/bitcoin_en.ts
|
||||
|
||||
$(QT_QRC_LOCALE_CPP): $(QT_QRC_LOCALE) $(QT_QM)
|
||||
@test -f $(RCC)
|
||||
|
|
|
@ -309,7 +309,8 @@ void AddressBookPage::on_exportButton_clicked()
|
|||
|
||||
if(!writer.write()) {
|
||||
QMessageBox::critical(this, tr("Exporting Failed"),
|
||||
tr("There was an error trying to save the address list to %1. Please try again.").arg(filename));
|
||||
//: %1 is a name of the file (e.g., "addrbook.csv") that the bitcoin addresses were exported to.
|
||||
tr("There was an error trying to save the address list to %1. Please try again.", "An error message.").arg(filename));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,13 +17,17 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
|||
"-maxtxfee is set very high! Fees this large could be paid on a single "
|
||||
"transaction."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Cannot downgrade wallet from version %i to version %i. Wallet version "
|
||||
"unchanged."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Cannot obtain a lock on data directory %s. %s is probably already running."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Cannot provide specific connections and have addrman find outgoing "
|
||||
"connections at the same."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Cannot upgrade a non HD split wallet without upgrading to support pre split "
|
||||
"keypool. Please use version 169900 or no version specified."),
|
||||
"Cannot upgrade a non HD split wallet from version %i to version %i without "
|
||||
"upgrading to support pre-split keypool. Please use version %i or no version "
|
||||
"specified."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Distributed under the MIT software license, see the accompanying file %s or "
|
||||
"%s"),
|
||||
|
@ -31,17 +35,35 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
|||
"Error reading %s! All keys read correctly, but transaction data or address "
|
||||
"book entries might be missing or incorrect."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: Dumpfile format record is incorrect. Got \"%s\", expected \"format\"."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: Dumpfile identifier record is incorrect. Got \"%s\", expected \"%s\"."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: Dumpfile version is not supported. This version of bitcoin-wallet "
|
||||
"only supports version 1 dumpfiles. Got dumpfile with version %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: Listening for incoming connections failed (listen returned error %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -"
|
||||
"fallbackfee."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"File %s already exists. If you are sure this is what you want, move it out "
|
||||
"of the way first."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay "
|
||||
"fee of %s to prevent stuck transactions)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"More than one onion bind address is provided. Using %s for the automatically "
|
||||
"created Tor onion service."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"No dump file provided. To use createfromdump, -dumpfile=<filename> must be "
|
||||
"provided."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"No dump file provided. To use dump, -dumpfile=<filename> must be provided."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"No wallet file format provided. To use createfromdump, -format=<format> must "
|
||||
"be provided."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Please check that your computer's date and time are correct! If your clock "
|
||||
"is wrong, %s will not work properly."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
|
@ -96,10 +118,13 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
|||
"Unable to rewind the database to a pre-fork state. You will need to "
|
||||
"redownload the blockchain"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Warning: Private keys detected in wallet {%s} with disabled private keys"),
|
||||
"Unknown wallet file format \"%s\" provided. Please provide one of \"bdb\" or "
|
||||
"\"sqlite\"."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Warning: The network does not appear to fully agree! Some miners appear to "
|
||||
"be experiencing issues."),
|
||||
"Warning: Dumpfile wallet format \"%s\" does not match command line specified "
|
||||
"format \"%s\"."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Warning: Private keys detected in wallet {%s} with disabled private keys"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Warning: We do not appear to fully agree with our peers! You may need to "
|
||||
"upgrade, or other nodes may need to upgrade."),
|
||||
|
@ -109,7 +134,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "%s is set very high!"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "-maxmempool must be at least %d MB"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "A fatal internal error occurred, see debug.log for details"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Cannot downgrade wallet"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Cannot resolve -%s address: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Cannot set -peerblockfilters without -blockfilterindex."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Cannot write to data directory '%s'; check permissions."),
|
||||
|
@ -122,6 +146,8 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Could not parse asmap file %s"),
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "Disk space is too low!"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Do you want to rebuild the block database now?"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Done loading"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Dump file %s does not exist."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error creating %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error initializing block database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error initializing wallet database environment %s!"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading %s"),
|
||||
|
@ -131,9 +157,17 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Error loading %s: Wallet requires newer versi
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading block database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error opening block database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error reading from database, shutting down."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error reading next record from wallet database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error upgrading chainstate database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Couldn't create cursor into database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Disk space is low for %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Dumpfile checksum does not match. Computed %s, expected %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Got key that was not hex: %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Got value that was not hex: %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Keypool ran out, please call keypoolrefill first"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Missing checksum"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Unable to parse version %u as a uint32_t"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Unable to write record to new wallet"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Failed to listen on any port. Use -listen=0 if you want this."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Failed to rescan the wallet during initialization"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Failed to verify database"),
|
||||
|
@ -143,6 +177,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Importing..."),
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "Incorrect or no genesis block found. Wrong datadir for network?"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Initialization sanity check failed. %s is shutting down."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Insufficient funds"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -i2psam address or hostname: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -onion address or hostname: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -proxy address or hostname: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid P2P permission: '%s'"),
|
||||
|
@ -159,7 +194,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Need to specify a port with -whitebind: '%s'"
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "No proxy server specified. Use -proxy=<ip> or -proxy=<ip:port>."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Not enough file descriptors available."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Prune cannot be configured with a negative value."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Prune mode is incompatible with -blockfilterindex."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Prune mode is incompatible with -txindex."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Pruning blockstore..."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Reducing -maxconnections from %d to %d, because of system limitations."),
|
||||
|
@ -180,7 +214,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Specified -walletdir \"%s\" is not a director
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "Specified blocks directory \"%s\" does not exist."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Starting network threads..."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "The source code is available from %s."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "The specified config file %s does not exist\n"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "The specified config file %s does not exist"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "The transaction amount is too small to pay the fee"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "The wallet will avoid paying less than the minimum relay fee."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "This is experimental software."),
|
||||
|
@ -197,6 +231,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Unable to bind to %s on this computer. %s is
|
|||
QT_TRANSLATE_NOOP("bitcoin-core", "Unable to create the PID file '%s': %s"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unable to generate initial keys"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unable to generate keys"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unable to open %s for writing"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unable to start HTTP server. See debug log for details."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unknown -blockfilterindex value %s."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unknown address type '%s'"),
|
||||
|
|
File diff suppressed because it is too large
Load diff
5688
src/qt/locale/bitcoin_en.xlf
Normal file
5688
src/qt/locale/bitcoin_en.xlf
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue