2013-12-10 3 views
1

Я работаю над одним продуктом портала. Я сталкиваюсь с проблемой превращения ее в интернационализацию. Я используя следующий кодStruts интернационализация

Locale locale = new Locale(languageHashMap.get(preferredLanguageId)); 
ActionContext.getContext().setLocale(locale); 
session.setAttribute(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale); 

для настройки локали.

В одно время он работает нормально, но когда я снова меняю langauge, меняем язык снова, изменение не отражается на всех страницах. Все равно получите изменения, сделанные только на последнем языке. Любая помощь будет оценена

+0

Как построен preferredLanguageId? И вы пытались использовать переменную Struts (1?) По умолчанию: request.getSession(). SetAttribute (Globals.LOCALE_KEY, locale); – Kloe2378231

+0

EmployeeMgmtActionHelper helper = new EmployeeMgmtActionHelper(); Map languageHashMap = helper.getSupportedLanguageLocaleList(); поэтому в hashmap я получаю локали, которые присутствуют в моей базе данных, и я извлекаю эти локали с карты и создаю более новую. – harry

+0

Речь идет не о "languageHashMap", а "preferredLanguageId". – Kloe2378231

ответ

1

Я предполагаю, что язык не настроен должным образом. Попробуйте следующий код:

создать одну карту

private static Map<Locale, ResourceBundle> messageBundles = new Hashtable<Locale, ResourceBundle>(); 

, а затем использовать следующее:

Locale requestLocale = ActionContext.getContext().getLocale(); 
ResourceBundle rb = messageBundles.get(requestLocale); 

, а затем положить, что пакет ресурсов в рамках запроса.

+0

работает нормально. – harry

0

его работает нормально ....

Locale locale = new Locale(languageHashMap.get(preferredLanguageId)); ActionContext.getContext().setLocale(locale); session.setAttribute(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale);

Смежные вопросы