пример howto:
как? путем изменения одной ссылки на другую ссылку
:
setRColor(pl.mylib.R.class,"endColor",pl.myapp.R.color.startColor);
// override app_name in lib R class
setRString(pl.mylib.R.class,"app_name",pl.myapp.R.string.app_name);
базовые методы:
public static void setRColor(Class rClass, String rFieldName, Object newValue) {
setR(rClass, "color", rFieldName, newValue);
}
public static void setRString(Class rClass, String rFieldName, Object newValue) {
setR(rClass, "string", rFieldName, newValue);
}
// AsciiStrings.STRING_DOLAR = "$";
public static void setR(Class rClass, String innerClassName, String rFieldName, Object newValue) {
setStatic(rClass.getName() + AsciiStrings.STRING_DOLAR + innerClassName, rFieldName, newValue);
}
вспомогательные методы:
public static boolean setStatic(String aClassName, String staticFieldName, Object toSet) {
try {
return setStatic(Class.forName(aClassName), staticFieldName, toSet);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}
}
public static boolean setStatic(Class> aClass, String staticFieldName, Object toSet) {
try {
Field declaredField = aClass.getDeclaredField(staticFieldName);
declaredField.setAccessible(true);
declaredField.set(null, toSet);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@ bradenV2 Мое приложение поддерживает многие языки, поэтому я хотел взять строку из моего strings.xml, которая в настоящее время используется, и изменить ее, а затем использовать ее - atuljangra Mar 12 '12 at 22:04
blockquote>ps вышеупомянутое решение хорошо, например, когда u хочет вставлять некоторые данные в уже скомпилированный lib / jar. Но если вы хотите локализовать строки, просто создайте папку под res per LANG CODE, например, значения CC, где cc - код lang (значения-de, values-cs) и т. Д.
, тогда у вас есть 2 варианта:
- «встраивать» зависящий от системы выбор языка - на основе выбранного устройства lang
- с помощью создания ресурсов для конфигурации - вы решаете, какой из языков показывать
, как это:
configuration = new Configuration(resources.getConfiguration()); configuration.setLocale(targetLocale); String localized = Context.createConfigurationContext(configuration) .getResources() .getString(resourceId);
{0}
представлен атрибутом label
входного компонента на стороне представления, который по умолчанию имеет идентификатор клиента, когда он не указан.
Например
<h:inputText value="#{bean.customer.name}" label="Customer name">
Вам также необходимо переопределить формат JSF по умолчанию для сообщений проверки валидатора. Вам нужно добавить следующую запись в пакет сообщений JSF, как указано в <message-bundle>
в faces-config.xml
:
javax.faces.validator.BeanValidator.MESSAGE = {1} {0}
. В этой конкретной записи {1}
будет ярлыком входного компонента JSF и {0}
будет сообщением валидатора компонента.