X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Fresources%2FTrans.java;h=c48d6af7907407d0036113c294ee07d11f6a0588;hb=3634193b7a8927e68a3ae3d38fff4f6bd36c4ee5;hp=537b3a3cfb38877363a0159835eeb501001d2ad9;hpb=7da41ecd30228908bf2afcd07ff7943ab59d4c01;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/resources/Trans.java b/src/be/nikiroo/jvcard/resources/Trans.java index 537b3a3..c48d6af 100644 --- a/src/be/nikiroo/jvcard/resources/Trans.java +++ b/src/be/nikiroo/jvcard/resources/Trans.java @@ -19,6 +19,7 @@ import java.util.ResourceBundle; public class Trans { private ResourceBundle map; private boolean utf = true; + private Locale locale; /** * Create a translation service with the default language. @@ -43,11 +44,16 @@ public class Trans { * * @param stringId * the ID to translate + * @param values + * the values to insert instead of the place holders in the + * translation * - * @return the translated text + * @return the translated text with the given value where required */ - public String trans(StringId stringId) { + public String trans(StringId stringId, String... values) { StringId id = stringId; + String result = null; + if (!isUnicode()) { try { id = StringId.valueOf(stringId.name() + "_NOUTF"); @@ -57,18 +63,19 @@ public class Trans { } if (id == StringId.NULL) { - return ""; - } - - if (id == StringId.DUMMY) { - return "[dummy]"; - } - - if (map.containsKey(id.name())) { - return map.getString(id.name()); + result = ""; + } else if (id == StringId.DUMMY) { + result = "[dummy]"; + } else if (map.containsKey(id.name())) { + result = map.getString(id.name()); + } else { + result = id.toString(); } - return id.toString(); + if (values != null && values.length > 0) + return String.format(locale, result, (Object[]) values); + else + return result; } /** @@ -98,7 +105,8 @@ public class Trans { * instance */ private void setLanguage(String language) { - map = Bundles.getBundle("resources", getLocaleFor(language)); + locale = getLocaleFor(language); + map = Bundles.getBundle("resources", locale); } /** @@ -246,7 +254,10 @@ public class Trans { builder.append("FORMAT: " + format); } - builder.append(")\n# "); + builder.append(")"); + if (info.length() > 0) { + builder.append("\n# "); + } } builder.append(info); @@ -283,6 +294,8 @@ public class Trans { @Meta(what = "", where = "", format = "", info = "") KEY_ACTION_EDIT_CONTACT, // @Meta(what = "", where = "", format = "", info = "") + KEY_ACTION_EDIT_CONTACT_RAW, // + @Meta(what = "", where = "", format = "", info = "") KEY_ACTION_SAVE_CARD, // @Meta(what = "", where = "", format = "", info = "") KEY_ACTION_DELETE_CONTACT, // @@ -298,5 +311,13 @@ public class Trans { KEY_ACTION_FULLSCREEN, // @Meta(what = "", where = "", format = "", info = "") KEY_ACTION_SWITCH_FORMAT, // multi-usage + @Meta(what = "Action key", where = "Contact list, Edit Contact", format = "", info = "Add a new contact/field") + KEY_ACTION_ADD, // + @Meta(what = "User question: TEXT", where = "Contact list", format = "", info = "New contact") + ASK_USER_CONTACT_NAME, // + @Meta(what = "User question: [Y|N]", where = "Contact list", format = "%s = contact name", info = "Delete contact") + CONFIRM_USER_DELETE_CONTACT, // + @Meta(what = "Error", where = "Contact list", format = "%s = contact name", info = "cannot delete a contact") + ERR_CANNOT_DELETE_CONTACT, // }; }