X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Fresources%2FTrans.java;fp=src%2Fbe%2Fnikiroo%2Fjvcard%2Fresources%2FTrans.java;h=8dce6f1f9eb575744a552280864f7d1f1fd5efb0;hb=9b8cb729d5105f34eb4b1e5975166c6c5f867fa2;hp=537b3a3cfb38877363a0159835eeb501001d2ad9;hpb=f578f3af81728d5f2590bc69ad125ef143d9d8f6;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/resources/Trans.java b/src/be/nikiroo/jvcard/resources/Trans.java index 537b3a3..8dce6f1 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); @@ -298,5 +309,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, // }; }