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