2016-09-10 3 views
0

У меня сценарий, в котором i18n становится накладным для авторов контента. Авторы хотят, чтобы метки диалогов были на английском языке только для всех локалей. Но некоторые заголовки/ярлыки в диалоговом окне локализованы, поскольку они доступны в словарях otb. Пример ярлыка «Дополнительно» из диалогового окна свойств страницы переводится для неанглийских сайтов.AEM Как предотвратить локализацию извне?

Есть ли способ предотвратить вторжение?

ответ

0

Если вы ссылаетесь на документацию AEM для i18n, вы можете видеть, что ее управляют языковой стандарт/язык, установленный в slingRequest. Вы можете переопределить это явным образом фиксируя i18n, но если вы делаете, что ни один из ваших переводов не будет работать -

Locale pageLang = new Locale("en"); 
ResourceBundle resourceBundle = slingRequest.getResourceBundle(pageLang); 
I18n i18n = new I18n(resourceBundle); 

An другой альтернативы (немного дополнительных усилий) в вам нужно сделать, это только для диалоговых окон -

  • Создайте свой собственный словарь для перевода см here
  • Используйте уникальное имя-интервал для ключей например - myapp.mycomponent_abc.label
  • Используйте выше ключи в в диалоге компонентов, чтобы ваша версия перевода была выбрана. Если для всех языков вам нужны только английские диалоги, все, что вам нужно сделать, это дублировать свой английский словарь и сменить языковой ключ на нем на соответствующий язык, сохраняя при этом переводы на английском языке.
+0

второй вариант - это то, что я сделал. эта локализация для cq виджетов происходит otb. Следовательно, can not override otb вызывает установку языка по умолчанию. Но я создал пользовательские словари, которые работают. –

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