diff --git a/src/main/java/org/qortal/controller/Controller.java b/src/main/java/org/qortal/controller/Controller.java index 3d1c85b7..bb990b17 100644 --- a/src/main/java/org/qortal/controller/Controller.java +++ b/src/main/java/org/qortal/controller/Controller.java @@ -886,7 +886,7 @@ public class Controller extends Thread { } } - String tooltip = String.format("%s - %d %s - %s %d", actionText, numberOfPeers, connectionsText, heightText, height) + "\n" + String.format("Build version: %s", this.buildVersion); + String tooltip = String.format("%s - %d %s - %s %d", actionText, numberOfPeers, connectionsText, heightText, height) + "\n" + String.format("%s: %s", Translator.INSTANCE.translate("SysTray", "BUILD_VERSION"), this.buildVersion); SysTray.getInstance().setToolTipText(tooltip); this.callbackExecutor.execute(() -> { diff --git a/src/main/resources/i18n/ApiError_en.properties b/src/main/resources/i18n/ApiError_en.properties index 4010b2fb..ecce979d 100644 --- a/src/main/resources/i18n/ApiError_en.properties +++ b/src/main/resources/i18n/ApiError_en.properties @@ -1,68 +1,81 @@ #Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/) # Keys are from api.ApiError enum -ADDRESS_UNKNOWN = account address unknown - -BLOCKCHAIN_NEEDS_SYNC = blockchain needs to synchronize first - -# Blocks -BLOCK_UNKNOWN = block unknown - -BTC_BALANCE_ISSUE = insufficient Bitcoin balance - -BTC_NETWORK_ISSUE = Bitcoin/ElectrumX network issue - -BTC_TOO_SOON = too soon to broadcast Bitcoin transaction (lockTime/median block time) - -CANNOT_MINT = account cannot mint - -GROUP_UNKNOWN = group unknown - -INVALID_ADDRESS = invalid address - -# Assets -INVALID_ASSET_ID = invalid asset ID - -INVALID_CRITERIA = invalid search criteria - -INVALID_DATA = invalid data - -INVALID_HEIGHT = invalid block height - -INVALID_NETWORK_ADDRESS = invalid network address - -INVALID_ORDER_ID = invalid asset order ID - -INVALID_PRIVATE_KEY = invalid private key - -INVALID_PUBLIC_KEY = invalid public key - -INVALID_REFERENCE = invalid reference - -# Validation -INVALID_SIGNATURE = invalid signature - +### Common ### JSON = failed to parse JSON message -NAME_UNKNOWN = name unknown - -NON_PRODUCTION = this API call is not permitted for production systems - -NO_TIME_SYNC = no clock synchronization yet - -ORDER_UNKNOWN = unknown asset order ID - -PUBLIC_KEY_NOT_FOUND = public key not found - -REPOSITORY_ISSUE = repository error - -# This one is special in that caller expected to pass two additional strings, hence the two %s -TRANSACTION_INVALID = transaction invalid: %s (%s) - -TRANSACTION_UNKNOWN = transaction unknown - -TRANSFORMATION_ERROR = could not transform JSON into transaction +INSUFFICIENT_BALANCE = insufficient balance UNAUTHORIZED = API call unauthorized -ORDER_SIZE_TOO_SMALL = order size too small +REPOSITORY_ISSUE = repository error + +NON_PRODUCTION = this API call is not permitted for production systems + +BLOCKCHAIN_NEEDS_SYNC = blockchain needs to synchronize first + +NO_TIME_SYNC = no clock synchronization yet + +### Validation ### +INVALID_SIGNATURE = invalid signature + +INVALID_ADDRESS = invalid address + +INVALID_PUBLIC_KEY = invalid public key + +INVALID_DATA = invalid data + +INVALID_NETWORK_ADDRESS = invalid network address + +ADDRESS_UNKNOWN = account address unknown + +INVALID_CRITERIA = invalid search criteria + +INVALID_REFERENCE = invalid reference + +TRANSFORMATION_ERROR = could not transform JSON into transaction + +INVALID_PRIVATE_KEY = invalid private key + +INVALID_HEIGHT = invalid block height + +CANNOT_MINT = account cannot mint + +### Blocks ### +BLOCK_UNKNOWN = block unknown + +### Transactions ### +TRANSACTION_UNKNOWN = transaction unknown + +PUBLIC_KEY_NOT_FOUND = public key not found + +# this one is special in that caller expected to pass two additional strings, hence the two %s +TRANSACTION_INVALID = transaction invalid: %s (%s) + +### Naming ### +NAME_UNKNOWN = name unknown + +### Asset ### +INVALID_ASSET_ID = invalid asset ID + +INVALID_ORDER_ID = invalid asset order ID + +ORDER_UNKNOWN = unknown asset order ID + +### Groups ### +GROUP_UNKNOWN = group unknown + +### Foreign Blockchain ### +FOREIGN_BLOCKCHAIN_NETWORK_ISSUE = foreign blokchain or ElectrumX network issue + +FOREIGN_BLOCKCHAIN_BALANCE_ISSUE = insufficient balance on foreign blockchain + +FOREIGN_BLOCKCHAIN_TOO_SOON = too soon to broadcast foreign blockchain transaction (LockTime/median block time) + +### Trade Portal ### +ORDER_SIZE_TOO_SMALL = order amount too low + +### Data ### +FILE_NOT_FOUND = file not found + +NO_REPLY = peer did not reply with data \ No newline at end of file diff --git a/src/main/resources/i18n/SysTray_en.properties b/src/main/resources/i18n/SysTray_en.properties index e581335d..ddaf19ab 100644 --- a/src/main/resources/i18n/SysTray_en.properties +++ b/src/main/resources/i18n/SysTray_en.properties @@ -1,12 +1,14 @@ #Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/) # SysTray pop-up menu -APPLYING_UPDATE_AND_RESTARTING = Applying automatic update and restarting... - AUTO_UPDATE = Auto Update +APPLYING_UPDATE_AND_RESTARTING = Applying automatic update and restarting... + BLOCK_HEIGHT = height +BUILD_VERSION = Build version + CHECK_TIME_ACCURACY = Check time accuracy CONNECTING = Connecting @@ -27,13 +29,6 @@ MINTING_DISABLED = NOT minting MINTING_ENABLED = \u2714 Minting -# Nagging about lack of NTP time sync -NTP_NAG_CAPTION = Computer's clock is inaccurate! - -NTP_NAG_TEXT_UNIX = Install NTP service to get an accurate clock. - -NTP_NAG_TEXT_WINDOWS = Select "Synchronize clock" from menu to fix. - OPEN_UI = Open UI PERFORMING_DB_CHECKPOINT = Saving uncommitted database changes... @@ -42,4 +37,4 @@ SYNCHRONIZE_CLOCK = Synchronize clock SYNCHRONIZING_BLOCKCHAIN = Synchronizing -SYNCHRONIZING_CLOCK = Synchronizing clock +SYNCHRONIZING_CLOCK = Synchronizing clock \ No newline at end of file diff --git a/src/main/resources/i18n/TransactionValidity_en.properties b/src/main/resources/i18n/TransactionValidity_en.properties index 7e3ea324..ff34cd1d 100644 --- a/src/main/resources/i18n/TransactionValidity_en.properties +++ b/src/main/resources/i18n/TransactionValidity_en.properties @@ -1,161 +1,44 @@ - -ACCOUNT_ALREADY_EXISTS = account already exists - -ACCOUNT_CANNOT_REWARD_SHARE = account cannot reward-share - -ALREADY_GROUP_ADMIN = already group admin - -ALREADY_GROUP_MEMBER = already group member - -ALREADY_VOTED_FOR_THAT_OPTION = already voted for that option - -ASSET_ALREADY_EXISTS = asset already exists - -ASSET_DOES_NOT_EXIST = asset does not exist - -ASSET_DOES_NOT_MATCH_AT = asset does not match AT's asset - -ASSET_NOT_SPENDABLE = asset is not spendable - -AT_ALREADY_EXISTS = AT already exists - -AT_IS_FINISHED = AT has finished - -AT_UNKNOWN = AT unknown - -BANNED_FROM_GROUP = banned from group - -BAN_EXISTS = ban already exists - -BAN_UNKNOWN = ban unknown - -BUYER_ALREADY_OWNER = buyer is already owner - -CHAT = CHAT transactions are never valid for inclusion into blocks - -CLOCK_NOT_SYNCED = clock not synchronized - -DUPLICATE_OPTION = duplicate option - -GROUP_ALREADY_EXISTS = group already exists - -GROUP_APPROVAL_DECIDED = group-approval already decided - -GROUP_APPROVAL_NOT_REQUIRED = group-approval not required - -GROUP_DOES_NOT_EXIST = group does not exist - -GROUP_ID_MISMATCH = group ID mismatch - -GROUP_OWNER_CANNOT_LEAVE = group owner cannot leave group - -HAVE_EQUALS_WANT = have-asset is the same as want-asset - -INCORRECT_NONCE = incorrect PoW nonce - -INSUFFICIENT_FEE = insufficient fee +OK = OK INVALID_ADDRESS = invalid address -INVALID_AMOUNT = invalid amount - -INVALID_ASSET_OWNER = invalid asset owner - -INVALID_AT_TRANSACTION = invalid AT transaction - -INVALID_AT_TYPE_LENGTH = invalid AT 'type' length - -INVALID_CREATION_BYTES = invalid creation bytes - -INVALID_DATA_LENGTH = invalid data length - -INVALID_DESCRIPTION_LENGTH = invalid description length - -INVALID_GROUP_APPROVAL_THRESHOLD = invalid group-approval threshold - -INVALID_GROUP_BLOCK_DELAY = invalid group-approval block delay - -INVALID_GROUP_ID = invalid group ID - -INVALID_GROUP_OWNER = invalid group owner - -INVALID_LIFETIME = invalid lifetime - -INVALID_NAME_LENGTH = invalid name length - -INVALID_NAME_OWNER = invalid name owner - -INVALID_OPTIONS_COUNT = invalid options count - -INVALID_OPTION_LENGTH = invalid options length - -INVALID_ORDER_CREATOR = invalid order creator - -INVALID_PAYMENTS_COUNT = invalid payments count - -INVALID_PUBLIC_KEY = invalid public key - -INVALID_QUANTITY = invalid quantity - -INVALID_REFERENCE = invalid reference - -INVALID_RETURN = invalid return - -INVALID_REWARD_SHARE_PERCENT = invalid reward-share percent - -INVALID_SELLER = invalid seller - -INVALID_TAGS_LENGTH = invalid 'tags' length - -INVALID_TX_GROUP_ID = invalid transaction group ID - -INVALID_VALUE_LENGTH = invalid 'value' length - -INVITE_UNKNOWN = group invite unknown - -JOIN_REQUEST_EXISTS = group join request already exists - -MAXIMUM_REWARD_SHARES = already at maximum number of reward-shares for this account - -MISSING_CREATOR = missing creator - -MULTIPLE_NAMES_FORBIDDEN = multiple registered names per account is forbidden - -NAME_ALREADY_FOR_SALE = name already for sale - -NAME_ALREADY_REGISTERED = name already registered - -NAME_DOES_NOT_EXIST = name does not exist - -NAME_NOT_FOR_SALE = name is not for sale - -NAME_NOT_NORMALIZED = name not in Unicode 'normalized' form - NEGATIVE_AMOUNT = invalid/negative amount NEGATIVE_FEE = invalid/negative fee -NEGATIVE_PRICE = invalid/negative price - -NOT_GROUP_ADMIN = account is not a group admin - -NOT_GROUP_MEMBER = account is not a group member - -NOT_MINTING_ACCOUNT = account cannot mint - -NOT_YET_RELEASED = feature not yet released - NO_BALANCE = insufficient balance -NO_BLOCKCHAIN_LOCK = node's blockchain currently busy +INVALID_REFERENCE = invalid reference -NO_FLAG_PERMISSION = account does not have that permission +INVALID_NAME_LENGTH = invalid name length -OK = OK +INVALID_VALUE_LENGTH = invalid 'value' length -ORDER_ALREADY_CLOSED = asset trade order is already closed +NAME_ALREADY_REGISTERED = name already registered -ORDER_DOES_NOT_EXIST = asset trade order does not exist +NAME_DOES_NOT_EXIST = name does not exist + +INVALID_NAME_OWNER = invalid name owner + +NAME_ALREADY_FOR_SALE = name already for sale + +NAME_NOT_FOR_SALE = name is not for sale + +BUYER_ALREADY_OWNER = buyer is already owner + +INVALID_AMOUNT = invalid amount + +INVALID_SELLER = invalid seller + +NAME_NOT_NORMALIZED = name not in Unicode 'normalized' form + +INVALID_DESCRIPTION_LENGTH = invalid description length + +INVALID_OPTIONS_COUNT = invalid options count + +INVALID_OPTION_LENGTH = invalid options length + +DUPLICATE_OPTION = duplicate option POLL_ALREADY_EXISTS = poll already exists @@ -163,22 +46,140 @@ POLL_DOES_NOT_EXIST = poll does not exist POLL_OPTION_DOES_NOT_EXIST = poll option does not exist -PUBLIC_KEY_UNKNOWN = public key unknown +ALREADY_VOTED_FOR_THAT_OPTION = already voted for that option -REWARD_SHARE_UNKNOWN = reward-share unknown +INVALID_DATA_LENGTH = invalid data length -SELF_SHARE_EXISTS = self-share (reward-share) already exists +INVALID_QUANTITY = invalid quantity -TIMESTAMP_TOO_NEW = timestamp too new +ASSET_DOES_NOT_EXIST = asset does not exist + +INVALID_RETURN = invalid return + +HAVE_EQUALS_WANT = have-asset is the same as want-asset + +ORDER_DOES_NOT_EXIST = asset trade order does not exist + +INVALID_ORDER_CREATOR = invalid order creator + +INVALID_PAYMENTS_COUNT = invalid payments count + +NEGATIVE_PRICE = invalid/negative price + +INVALID_CREATION_BYTES = invalid creation bytes + +INVALID_TAGS_LENGTH = invalid 'tags' length + +INVALID_AT_TYPE_LENGTH = invalid AT 'type' length + +INVALID_AT_TRANSACTION = invalid AT transaction + +INSUFFICIENT_FEE = insufficient fee + +ASSET_DOES_NOT_MATCH_AT = asset does not match AT's asset + +ASSET_ALREADY_EXISTS = asset already exists + +MISSING_CREATOR = missing creator TIMESTAMP_TOO_OLD = timestamp too old +TIMESTAMP_TOO_NEW = timestamp too new + TOO_MANY_UNCONFIRMED = account has too many unconfirmed transactions pending -TRANSACTION_ALREADY_CONFIRMED = transaction has already confirmed +GROUP_ALREADY_EXISTS = group already exists -TRANSACTION_ALREADY_EXISTS = transaction already exists +GROUP_DOES_NOT_EXIST = group does not exist + +INVALID_GROUP_OWNER = invalid group owner + +ALREADY_GROUP_MEMBER = already group member + +GROUP_OWNER_CANNOT_LEAVE = group owner cannot leave group + +NOT_GROUP_MEMBER = account is not a group member + +ALREADY_GROUP_ADMIN = already group admin + +NOT_GROUP_ADMIN = account is not a group admin + +INVALID_LIFETIME = invalid lifetime + +INVITE_UNKNOWN = group invite unknown + +BAN_EXISTS = ban already exists + +BAN_UNKNOWN = ban unknown + +BANNED_FROM_GROUP = banned from group + +JOIN_REQUEST_EXISTS = group join request already exists + +INVALID_GROUP_APPROVAL_THRESHOLD = invalid group-approval threshold + +GROUP_ID_MISMATCH = group ID mismatch + +INVALID_GROUP_ID = invalid group ID TRANSACTION_UNKNOWN = transaction unknown +TRANSACTION_ALREADY_CONFIRMED = transaction has already confirmed + +INVALID_TX_GROUP_ID = invalid transaction group ID + TX_GROUP_ID_MISMATCH = transaction's group ID does not match + +MULTIPLE_NAMES_FORBIDDEN = multiple registered names per account is forbidden + +INVALID_ASSET_OWNER = invalid asset owner + +AT_IS_FINISHED = AT has finished + +NO_FLAG_PERMISSION = account does not have that permission + +NOT_MINTING_ACCOUNT = account cannot mint + +REWARD_SHARE_UNKNOWN = reward-share unknown + +INVALID_REWARD_SHARE_PERCENT = invalid reward-share percent + +PUBLIC_KEY_UNKNOWN = public key unknown + +INVALID_PUBLIC_KEY = invalid public key + +AT_UNKNOWN = AT unknown + +AT_ALREADY_EXISTS = AT already exists + +GROUP_APPROVAL_NOT_REQUIRED = group-approval not required + +GROUP_APPROVAL_DECIDED = group-approval already decided + +MAXIMUM_REWARD_SHARES = already at maximum number of reward-shares for this account + +TRANSACTION_ALREADY_EXISTS = transaction already exists + +NO_BLOCKCHAIN_LOCK = node's blockchain currently busy + +ORDER_ALREADY_CLOSED = asset trade order is already closed + +CLOCK_NOT_SYNCED = clock not synchronized + +ASSET_NOT_SPENDABLE = asset is not spendable + +ACCOUNT_CANNOT_REWARD_SHARE = account cannot reward-share + +SELF_SHARE_EXISTS = self-share (reward-share) already exists + +ACCOUNT_ALREADY_EXISTS = account already exists + +INVALID_GROUP_BLOCK_DELAY = invalid group-approval block delay + +INCORRECT_NONCE = incorrect PoW nonce + +INVALID_TIMESTAMP_SIGNATURE = invalid timestamp signature + +INVALID_BUT_OK = invalid but OK + +NOT_YET_RELEASED = feature not yet released \ No newline at end of file diff --git a/src/test/java/org/qortal/test/apps/CheckTranslations.java b/src/test/java/org/qortal/test/apps/CheckTranslations.java index faf1727d..2b59ce84 100644 --- a/src/test/java/org/qortal/test/apps/CheckTranslations.java +++ b/src/test/java/org/qortal/test/apps/CheckTranslations.java @@ -14,9 +14,9 @@ public class CheckTranslations { private static final String[] SUPPORTED_LANGS = new String[] { "en", "de", "zh", "ru" }; private static final Set SYSTRAY_KEYS = Set.of("AUTO_UPDATE", "APPLYING_UPDATE_AND_RESTARTING", "BLOCK_HEIGHT", - "CHECK_TIME_ACCURACY", "CONNECTING", "CONNECTION", "CONNECTIONS", "CREATING_BACKUP_OF_DB_FILES", "DB_BACKUP", "EXIT", - "MINTING_DISABLED", "MINTING_ENABLED", "NTP_NAG_CAPTION", "NTP_NAG_TEXT_UNIX", "NTP_NAG_TEXT_WINDOWS", - "OPEN_UI", "SYNCHRONIZE_CLOCK", "SYNCHRONIZING_BLOCKCHAIN", "SYNCHRONIZING_CLOCK"); + "BUILD_VERSION", "CHECK_TIME_ACCURACY", "CONNECTING", "CONNECTION", "CONNECTIONS", "CREATING_BACKUP_OF_DB_FILES", + "DB_BACKUP", "DB_CHECKPOINT", "EXIT", "MINTING_DISABLED", "MINTING_ENABLED", "OPEN_UI", "PERFORMING_DB_CHECKPOINT", + "SYNCHRONIZE_CLOCK", "SYNCHRONIZING_BLOCKCHAIN", "SYNCHRONIZING_CLOCK"); private static String failurePrefix;