Dynamic String Internationalization 섹션에서 개발자 안내서를 다시 읽어야합니다.
접근 방식은 로케일 지원을 코딩해야 함을 의미합니다. 우리는 Dictionary 클래스를 사용하여이 작업을 수행했습니다. 로케일 지원을 제공하는 트릭은 각 로케일에 대한 사전을 갖는 것입니다.
1 단계 쿠키와 함께 GWT module.gwt.xml의 로캘 개념을 사용하는지 확인하십시오. gwt 응용 프로그램이로드되기 전에 쿠키 GWT_LOCALE이 설정되었는지 확인하십시오. 당신이 수요에 게으르게이 인출하고자하는 경우 선행 HTML 스크립트 태그 또는 사용 RequestBuilder를 사용하여
<extend-property name="locale" values="en,ar,de" />
<set-property name="locale" value="en" />
<set-property-fallback name="locale" value="en" />
<set-configuration-property name="locale.cookie" value="GWT_LOCALE" />
<set-configuration-property name="locale.useragent" value="Y" />
단계 2 로드 WidgetMessages.js. WidgetMessages.js
의 내용
var widget_messages_en = {
"today" : "Today",
"now" : "Now"
};
var widget_messages_ar= {
"today" : "۷ڤدجچ",
"now" : "چڤت"
}
var widget_messages_de= {
"today" : "Today",
"now" : "Now"
}
단계 3 프로세스 및 로컬 해시 맵에 사전로드합니다.
private static Map<String, Dictionary> I18N_DICTIONARIES = new HashMap<String, Dictionary>();
private static Dictionary createDictionary(String dictionaryName)
{
String moduleId = dictionaryName + "_messages_" + LocaleInfo.getCurrentLocale().getLocaleName();
Dictionary dictionary = Dictionary.getDictionary(moduleId);
I18N_DICTIONARIES.put(dictionaryName, dictionary);
return dictionary;
}
public static String getI18NString(String dictionaryName, String stringToInternationalize)
{
Dictionary dictionary = I18N_DICTIONARIES.get(dictionaryName);
if (dictionary == null)
{
dictionary = createDictionary(dictionaryName);
}
String i18string = null;
if (dictionary == null)
return stringToInternationalize;
try
{
i18string = dictionary.get(stringToInternationalize);
}
catch (Exception e)
{
}
return i18string;
}
주 - 당신이 i18nstrings에 문자열을 처리하고 위젯에 사용할 수있는 위의 접근 방식의 여러 가지 변화를 시도 할 수 있습니다 ....
출처
2013-03-07 08:58:46
SSR