我想讓我的Grails應用程序只支持一種語言,我可以在某處定義,完全忽略客戶端的頭文件或「lang」參數。有什麼辦法可以做到嗎?謝謝。如何強制Grails只使用一種語言?
15
A
回答
19
在config/spring/resources.groovy
中定義一個LocaleResolver
bean來設置默認語言環境。
beans = {
localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver) {
defaultLocale = new Locale("de","DE")
java.util.Locale.setDefault(defaultLocale)
}
}
如果你沒有對付lang
參數這是有用的 - 否則它會得到重寫。甚至忽略lang
參數值,你可以在每次要求設置在Filter
語言環境:
import org.springframework.web.servlet.support.RequestContextUtils as RCU
...
def filters = {
all(controller:'*', action:'*') {
before = {
def locale = new Locale("sv","SV")
RCU.getLocaleResolver(request).setLocale(request, response, locale)
}
}
}
這種做法似乎有些重複的語言環境對每個請求重新設置。通過配置選項禁用瀏覽器語言環境檢測會更加優雅。
5
刪除所有messages_xx.properties
文件並只保留messages.properties
文件。 這是缺省消息捆綁包,如果系統找不到正確的消息捆綁包,系統將始終回退到該缺省消息捆綁包。
通過這種方式,您仍然可以使用消息(並因此保留將應用程序國有化的選項),但用戶將始終使用相同的語言。
3
Grails的默認LocaleResolver
是SessionLocaleResolver
。如果您想始終使用de_DE,則可以將其更改爲FixedLocaleResolver
。
beans {
localeResolver(FixedLocaleResolver) {
locale = new Locale("de", "DE")
}
}
如果要限制爲一組語言環境,那麼你將需要一個過濾器,並使用SessionLocaleResolver#setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
方法。
相關問題
- 1. 如何強制Alfresco共享只使用一種語言,獨立於瀏覽器語言環境?
- 2. 如何強制以另一種語言顯示
- 3. 如何強制應用程序目標在IOS中使用一種語言?
- 4. 強制Grails使用正確語言代碼的message.properties?
- 5. 如何用同一種語言實現一種語言比語言更快?
- 6. 如何在Android中使用多種語言,如多種語言
- 7. 強制用戶使用某種語言作爲輸入
- 8. PowerShell是一種強類型語言嗎?
- 9. Joomla強制語言
- 10. 如何使用qTranslate強制wordpress後端使用特定語言?
- 11. 是否有可能強制本地化到另一種語言?
- 12. Sitecore將頁面強制爲一種語言
- 13. Rails使用一種語言和兩種語言的其他語言的本地化控制面板模塊
- 14. 如何使用多種開發語言
- 15. 在另一個語言中使用一種語言定義?
- 16. 如何強制eclipse使用指定的界面語言?
- 17. 在一種語言的語音到另一種語言
- 18. 在php項目中使用gettext - 只有一種語言翻譯
- 19. 如何將文本從一種語言翻譯成另一種語言android?
- 20. 使用CSS來定位一種語言
- 21. 使用另一種語言的magic.mgc
- 22. bosun使用哪種語言?
- 23. Xcode 8如何添加一種語言?
- 24. 如何實現一種功能語言
- 25. 將一種語言翻譯成另一種語言?
- 26. 如何使用python將輸入文本從一種語言翻譯爲另一種語言?
- 27. 如何強制一個語言環境部件
- 28. 用一種語言搜索,但用另一種語言進入網站
- 29. 如何使用AWS Lambda中另一種語言編寫的包?
- 30. 如何使用Clang從C++轉換到另一種語言
這不是對上述問題的回答。 ArmlessJohn特別要求能夠*覆蓋用戶的語言設置。這只是設置默認值。請閱讀您再次鏈接的答案。 – OverZealous 2012-01-11 03:50:41
感謝您的通知 - 我已經相應地更新了我的答案。 – david 2012-01-11 13:52:11
小心! java.util.Locale.setDefault(defaultLocale)將改變整個JVM的默認語言環境,這可能是非常糟糕的,因爲很多代碼在所有語言環境中都認爲「i」.toUpperCase()。equals(「I」) 。它不... 許多聰明的實用程序會做出這樣的假設。 – JesperSM 2014-11-18 22:36:34