Translation fixes

Translator class no longer logs warnings for every failed translation.

Commented out unused ApiError enum entries.
Renamed some ApiError names like "_NO_EXISTS" to "_UNKNOWN".
Removed old src/main/resources/globalization/* files.

Added CheckTranslations test app.

Fixed some extraneous/missing ApiError aspects in some API-related classes.
e.g. added NAME_UNKNOWN to GET /names/{name}
This commit is contained in:
catbref
2020-03-02 12:49:15 +00:00
parent a68caa2de1
commit e425fe5d5a
16 changed files with 455 additions and 571 deletions

View File

@@ -94,7 +94,7 @@ public class AssetsApiTests extends ApiCommon {
try {
assertNotNull(this.assetsResource.getAssetOrder(FAKE_ORDER_ID_BASE58));
} catch (ApiException e) {
assertTrue(e.error == ApiError.ORDER_NO_EXISTS.getCode());
assertTrue(e.error == ApiError.ORDER_UNKNOWN.getCode());
}
}
@@ -103,13 +103,13 @@ public class AssetsApiTests extends ApiCommon {
try {
assertNotNull(this.assetsResource.getAssetOrderTrades(FAKE_ORDER_ID_BASE58, null, null, null));
} catch (ApiException e) {
assertTrue(e.error == ApiError.ORDER_NO_EXISTS.getCode());
assertTrue(e.error == ApiError.ORDER_UNKNOWN.getCode());
}
try {
assertNotNull(this.assetsResource.getAssetOrderTrades(FAKE_ORDER_ID_BASE58, 1, 1, true));
} catch (ApiException e) {
assertTrue(e.error == ApiError.ORDER_NO_EXISTS.getCode());
assertTrue(e.error == ApiError.ORDER_UNKNOWN.getCode());
}
}

View File

@@ -0,0 +1,58 @@
package org.qortal.test.apps;
import java.util.Arrays;
import java.util.Collections;
import java.util.Locale;
import java.util.Set;
import java.util.stream.Collectors;
import org.qortal.api.ApiError;
import org.qortal.globalization.Translator;
import org.qortal.transaction.Transaction.ValidationResult;
public class CheckTranslations {
private static final String[] SUPPORTED_LANGS = new String[] { "en", "de", "zh", "ru" };
private static final Set<String> SYSTRAY_KEYS = Set.of("BLOCK_HEIGHT", "CHECK_TIME_ACCURACY", "CONNECTION", "CONNECTIONS",
"EXIT", "MINTING_DISABLED", "MINTING_ENABLED", "OPEN_NODE_UI", "SYNCHRONIZE_CLOCK", "SYNCHRONIZING_CLOCK");
private static String failurePrefix;
public static void main(String[] args) {
for (String lang : SUPPORTED_LANGS) {
System.out.println(String.format("\n# Checking '%s' translations", lang));
Locale.setDefault(Locale.forLanguageTag(lang));
failurePrefix = "!!" + lang + ":";
checkTranslations("TransactionValidity", lang, Arrays.stream(ValidationResult.values()).map(value -> value.name()).collect(Collectors.toSet()));
checkTranslations("ApiError", lang, Arrays.stream(ApiError.values()).map(value -> value.name()).collect(Collectors.toSet()));
checkTranslations("SysTray", lang, SYSTRAY_KEYS);
}
}
private static void checkTranslations(String className, String lang, Set<String> keys) {
System.out.println(String.format("## Checking '%s' translations for %s", lang, className));
Set<String> allKeys = Translator.INSTANCE.keySet(className, lang);
if (allKeys == null) {
System.out.println(String.format("NO '%s' translations for %s!", lang, className));
allKeys = Collections.emptySet();
}
for (String key : keys) {
allKeys.remove(key);
String translation = Translator.INSTANCE.translate(className, lang, key);
if (translation.startsWith(failurePrefix))
System.out.println(String.format("Missing key '%s' in %s_%s.properties", key, className, lang));
}
// Any leftover keys?
for (String key : allKeys)
System.out.println(String.format("Extraneous key '%s' in %s_%s.properties", key, className, lang));
}
}