From a74bef815ca1ebb575c33af4e1f7b98a7332020e Mon Sep 17 00:00:00 2001 From: Oskar Wiksten Date: Mon, 11 Feb 2013 16:12:46 +0000 Subject: [PATCH] Updated translation MO-file parser to read the MO filename from strings.xml. --- AndorsTrail/res/values-de/strings.xml | 5 ++++ AndorsTrail/res/values-fr/strings.xml | 4 +++ AndorsTrail/res/values-it/strings.xml | 5 ++++ AndorsTrail/res/values-ja/strings.xml | 6 ++++ AndorsTrail/res/values-pl/strings.xml | 5 ++++ AndorsTrail/res/values-pt-rBR/strings.xml | 5 ++++ AndorsTrail/res/values-pt/strings.xml | 5 ++++ AndorsTrail/res/values-ru/strings.xml | 4 +++ AndorsTrail/res/values/strings.xml | 1 + .../conversation/ConversationLoader.java | 2 +- .../AndorsTrail/resource/ResourceLoader.java | 2 +- .../resource/TranslationLoader.java | 30 ++++++++++++------- .../resource/parsers/ItemTypeParser.java | 3 +- 13 files changed, 64 insertions(+), 13 deletions(-) diff --git a/AndorsTrail/res/values-de/strings.xml b/AndorsTrail/res/values-de/strings.xml index ac1673f2f..d2ded41e0 100644 --- a/AndorsTrail/res/values-de/strings.xml +++ b/AndorsTrail/res/values-de/strings.xml @@ -557,5 +557,10 @@ Bestätige das Überschreiben von Spielständen Zeigt eine Frage an ob beim Speichern auf einen bereits existierenden Spielstand dieser überschrieben werden soll. + + + + + de.mo diff --git a/AndorsTrail/res/values-fr/strings.xml b/AndorsTrail/res/values-fr/strings.xml index e4aadbd6c..b0073b216 100644 --- a/AndorsTrail/res/values-fr/strings.xml +++ b/AndorsTrail/res/values-fr/strings.xml @@ -485,4 +485,8 @@ Immunise contre les coups critiques Taux de coups critiques : + + + + fr.mo diff --git a/AndorsTrail/res/values-it/strings.xml b/AndorsTrail/res/values-it/strings.xml index 5d1c5b3c1..0fb41e436 100644 --- a/AndorsTrail/res/values-it/strings.xml +++ b/AndorsTrail/res/values-it/strings.xml @@ -320,4 +320,9 @@ 2.0f + + + + it.mo + diff --git a/AndorsTrail/res/values-ja/strings.xml b/AndorsTrail/res/values-ja/strings.xml index f49f62107..a4fac72ce 100644 --- a/AndorsTrail/res/values-ja/strings.xml +++ b/AndorsTrail/res/values-ja/strings.xml @@ -513,4 +513,10 @@ あなたの命中率より %1$d 以上回避率が低い敵に攻撃するたび、その攻撃は %2$d%% の確率で対象に脳震盪(concussion)を起こします。concussionは攻撃に関する戦闘能力を劇的に下げ、対象は有効な攻撃を当てることが難しくなります。 About + + + + + ja.mo + \ No newline at end of file diff --git a/AndorsTrail/res/values-pl/strings.xml b/AndorsTrail/res/values-pl/strings.xml index cd15341e3..c6da50ea4 100644 --- a/AndorsTrail/res/values-pl/strings.xml +++ b/AndorsTrail/res/values-pl/strings.xml @@ -559,5 +559,10 @@ Translated by toudi5-bełchatów Potwierdź nadpisanie gry Zadaje pytanie zawsze, gdy chcesz nadpisać grę na slocie, który jest już zajęty. + + + + + pl.mo diff --git a/AndorsTrail/res/values-pt-rBR/strings.xml b/AndorsTrail/res/values-pt-rBR/strings.xml index df20aacd0..def05f2b1 100644 --- a/AndorsTrail/res/values-pt-rBR/strings.xml +++ b/AndorsTrail/res/values-pt-rBR/strings.xml @@ -559,4 +559,9 @@ Confirma re-escrita de salvamento Pergunta o que deve ser feito caso tente-se gravar sobre um salvamento anterior. + + + + pt-rBR.mo + diff --git a/AndorsTrail/res/values-pt/strings.xml b/AndorsTrail/res/values-pt/strings.xml index 70427713a..53dbba43b 100644 --- a/AndorsTrail/res/values-pt/strings.xml +++ b/AndorsTrail/res/values-pt/strings.xml @@ -475,4 +475,9 @@ Optimized drawing Desactiva esta opção caso apareçam artefactos gráficos. Ao activar esta opção apenas serão redesenhados no écrã os blocos alterados em cada fotograma. + + + + pt.mo + diff --git a/AndorsTrail/res/values-ru/strings.xml b/AndorsTrail/res/values-ru/strings.xml index 0c1373f08..504e64174 100644 --- a/AndorsTrail/res/values-ru/strings.xml +++ b/AndorsTrail/res/values-ru/strings.xml @@ -558,5 +558,9 @@ Перезаписать сохранение Настройка диалога подтверждения при попытке перезаписать сохранение + + + + ru.mo diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml index 77c4f4a10..ba7969781 100644 --- a/AndorsTrail/res/values/strings.xml +++ b/AndorsTrail/res/values/strings.xml @@ -564,6 +564,7 @@ Use item cost (AP): %1$s moves. Combat log + [Quest completed: \"%1$s\"] [Quest updated: \"%1$s\"] diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationLoader.java index 62ecdf671..e56af5e47 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationLoader.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/conversation/ConversationLoader.java @@ -21,7 +21,7 @@ public final class ConversationLoader { return conversationCollection.getPhrase(phraseID); } - TranslationLoader translationLoader = new TranslationLoader(r.getAssets()); + TranslationLoader translationLoader = new TranslationLoader(r.getAssets(), r); ConversationListParser conversationListParser = new ConversationListParser(translationLoader); int resourceID = resourceIDsPerPhraseID.get(phraseID); conversationCollection.initialize(conversationListParser, ResourceLoader.readStringFromRaw(r, resourceID)); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java index 2bb3dfa59..37a7476a8 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java @@ -42,7 +42,7 @@ public final class ResourceLoader { final int mTileSize = world.tileManager.tileSize; - TranslationLoader translationLoader = new TranslationLoader(r.getAssets()); + TranslationLoader translationLoader = new TranslationLoader(r.getAssets(), r); DynamicTileLoader loader = new DynamicTileLoader(world.tileManager.tileCache); prepareTilesets(loader, mTileSize); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TranslationLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TranslationLoader.java index 95b3bcdc2..ac2e051b6 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TranslationLoader.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TranslationLoader.java @@ -1,9 +1,12 @@ package com.gpl.rpg.AndorsTrail.resource; import android.content.res.AssetManager; +import android.content.res.Resources; +import com.gpl.rpg.AndorsTrail.R; import com.gpl.rpg.AndorsTrail.util.L; import java.io.BufferedInputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; @@ -11,21 +14,30 @@ import java.nio.charset.Charset; public final class TranslationLoader { private final BinaryMoFileParser parser; - public TranslationLoader(AssetManager mgr) { - BinaryMoFileParser parser = null; + public TranslationLoader(AssetManager mgr, Resources res) { + this.parser = createParser(mgr, res); + } + + private static final String translationDir = "translation" + File.separator; + private static BinaryMoFileParser createParser(AssetManager mgr, Resources res) { + String translationFilename = res.getString(R.string.localize_resources_from_mo_filename); + if (translationFilename == null || translationFilename.length() <= 0) return null; + + translationFilename = translationDir + translationFilename; + try { - InputStream is = mgr.open("messages.mo"); - parser = new BinaryMoFileParser(is); + InputStream is = mgr.open(translationFilename); + return new BinaryMoFileParser(is); } catch (IOException e) { - L.log("ERROR: Reading from translation asset failed: " + e.toString()); + L.log("ERROR: Reading from translation asset \"" + translationFilename + "\" failed: " + e.toString()); + return null; } - this.parser = parser; } private String tr(String s) { if (s == null) return null; - if (s.length() <= 1) return s; if (parser == null) return s; + if (s.length() <= 1) return s; try { //String t = parser.translate(s); //L.log(translations.size() + " : " + s + " -> " + t); @@ -46,14 +58,13 @@ public final class TranslationLoader { public String translateItemCategoryName(String s) { return tr(s); } public String translateActorConditionName(String s) { return tr(s); } public String translateItemTypeName(String s) { return tr(s); } + public String translateItemTypeDescription(String s) {return tr(s); } public String translateMonsterTypeName(String s) { return tr(s); } public String translateQuestName(String s) { return tr(s); } public String translateQuestLogEntry(String s) { return tr(s); } public String translateConversationPhrase(String s) { return tr(s); } public String translateConversationReply(String s) { return tr(s); } - //public static HashSet translations = new HashSet(); - private static final class BinaryMoFileParser { private final InputStream is; private final BufferedInputStream reader; @@ -86,7 +97,6 @@ public final class TranslationLoader { byte[] bytes = s.getBytes(charset); byte[] translation = find(bytes); if (translation == null || translation.length <= 0) return s; - //translations.add(s); return new String(translation, charset); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java index 066d2df73..0863f8552 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ItemTypeParser.java @@ -35,6 +35,7 @@ public final class ItemTypeParser extends JsonCollectionParserFor { public Pair parseObject(JSONObject o) throws JSONException { final String id = o.getString(JsonFieldNames.ItemType.itemTypeID); final String itemTypeName = translationLoader.translateItemTypeName(o.getString(JsonFieldNames.ItemType.name)); + final String description = translationLoader.translateItemTypeDescription(o.optString(JsonFieldNames.ItemType.description, null)); final ItemTraits_OnEquip equipEffect = itemTraitsParser.parseItemTraits_OnEquip(o.optJSONObject(JsonFieldNames.ItemType.equipEffect)); final ItemTraits_OnUse useEffect = itemTraitsParser.parseItemTraits_OnUse(o.optJSONObject(JsonFieldNames.ItemType.useEffect)); final ItemTraits_OnUse hitEffect = itemTraitsParser.parseItemTraits_OnUse(o.optJSONObject(JsonFieldNames.ItemType.hitEffect)); @@ -46,7 +47,7 @@ public final class ItemTypeParser extends JsonCollectionParserFor { id , ResourceParserUtils.parseImageID(tileLoader, o.getString(JsonFieldNames.ItemType.iconID)) , itemTypeName - , o.optString(JsonFieldNames.ItemType.description, null) + , description , itemCategories.getItemCategory(o.getString(JsonFieldNames.ItemType.category)) , o.optInt(JsonFieldNames.ItemType.displaytype, ItemType.DISPLAYTYPE_ORDINARY) , hasManualPrice