static private Trans transService;
/**
- * Translate the given {@link StringId}.
+ * Translate the given {@link StringId} into user text.
*
- * @param id
+ * @param stringId
* the ID to translate
+ * @param values
+ * the values to insert instead of the place holders in the
+ * translation
*
- * @return the translation
+ * @return the translated text with the given value where required
*/
- static public String trans(StringId id) {
- return transService.trans(id);
+ static public String trans(StringId id, String... values) {
+ return transService.trans(id, (String[]) values);
}
/**
System.exit(ERR_SYNTAX);
return;
}
-
+
i18nDir = args[index];
} else {
filesTried = true;
files.addAll(open(arg));
}
}
-
+
// Force headless mode if we run in forced-text mode
if (textMode != null && textMode) {
// same as -Djava.awt.headless=true
public class Trans {
private ResourceBundle map;
private boolean utf = true;
+ private Locale locale;
/**
* Create a translation service with the default language.
*
* @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");
}
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;
}
/**
* instance
*/
private void setLanguage(String language) {
- map = Bundles.getBundle("resources", getLocaleFor(language));
+ locale = getLocaleFor(language);
+ map = Bundles.getBundle("resources", locale);
}
/**
builder.append("FORMAT: " + format);
}
- builder.append(")\n# ");
+ builder.append(")");
+ if (info.length() > 0) {
+ builder.append("\n# ");
+ }
}
builder.append(info);
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, //
};
}
KEY_ACTION_INVERT = Invert colours
KEY_ACTION_FULLSCREEN = Fullscreen
KEY_ACTION_SWITCH_FORMAT = Change view
+# (WHAT: Action key, WHERE: Contact list, Edit Contact)
+# Add a new contact/field
+KEY_ACTION_ADD = Add
+# (WHAT: User question: TEXT, WHERE: Contact list)
+# New contact
+ASK_USER_CONTACT_NAME = New contact name:
+# (WHAT: User question: [Y|N], WHERE: Contact list, FORMAT: %s = contact name)
+# Delete contact
+CONFIRM_USER_DELETE_CONTACT = Delete "%s"? [Y/N]
+# (WHAT: Error, WHERE: Contact list, FORMAT: %s = contact name)
+# cannot delete a contact
+ERR_CANNOT_DELETE_CONTACT = Cannot delete "%s"
KEY_ACTION_INVERT = Invert colours
KEY_ACTION_FULLSCREEN = Fullscreen
KEY_ACTION_SWITCH_FORMAT = Change view
+# (WHAT: Action key, WHERE: Contact list, Edit Contact)
+# Add a new contact/field
+KEY_ACTION_ADD = Add
+# (WHAT: User question: TEXT, WHERE: Contact list)
+# New contact
+ASK_USER_CONTACT_NAME = New contact name:
+# (WHAT: User question: [Y|N], WHERE: Contact list, FORMAT: %s = contact name)
+# Delete contact
+CONFIRM_USER_DELETE_CONTACT = Delete "%s"? [Y/N]
+# (WHAT: Error, WHERE: Contact list, FORMAT: %s = contact name)
+# cannot delete a contact
+ERR_CANNOT_DELETE_CONTACT = Cannot delete "%s"
KEY_ACTION_INVERT = Couleurs inversées
KEY_ACTION_FULLSCREEN = Plein écran
KEY_ACTION_SWITCH_FORMAT = Autre affichage
+# (WHAT: Action key, WHERE: Contact list, Edit Contact)
+# Add a new contact/field
+KEY_ACTION_ADD = Ajouter
+# (WHAT: User question: TEXT, WHERE: Contact list)
+# New contact
+ASK_USER_CONTACT_NAME = Nom du nouveau contact:
+# (WHAT: User question: [Y|N], WHERE: Contact list, FORMAT: %s = contact name)
+# Delete contact
+CONFIRM_USER_DELETE_CONTACT = Supprimer "%s"? [Y/N]
+# (WHAT: Error, WHERE: Contact list, FORMAT: %s = contact name)
+# cannot delete a contact
+ERR_CANNOT_DELETE_CONTACT = Impossible de supprimer "%s"
List<KeyAction> actions = new LinkedList<KeyAction>();
// TODO ui
- actions.add(new KeyAction(Mode.ASK_USER, 'a', Trans.StringId.DUMMY) {
+ actions.add(new KeyAction(Mode.ASK_USER, 'a',
+ Trans.StringId.KEY_ACTION_ADD) {
@Override
public Object getObject() {
return card;
@Override
public String getQuestion() {
- // TODO i18n
- return "new contact name: ";
+ return Main.trans(Trans.StringId.ASK_USER_CONTACT_NAME);
}
@Override
@Override
public String getQuestion() {
- // TODO i18n
- return "Delete contact? [Y/N]";
+ Contact contact = getSelectedContact();
+ String contactName = "null";
+ if (contact != null)
+ contactName = "" + contact.getPreferredDataValue("FN");
+
+ return Main.trans(Trans.StringId.CONFIRM_USER_DELETE_CONTACT, contactName);
}
@Override
return null;
}
- // TODO i18n
- return "Cannot delete contact";
+ String contactName = "null";
+ if (contact != null)
+ contactName = "" + contact.getPreferredDataValue("FN");
+
+ return Main.trans(Trans.StringId.ERR_CANNOT_DELETE_CONTACT,
+ contactName);
}
return null;