关于spring:Grails:阅读资源包

Grails: Reading the Resource Bundle

我试图从资源包中获取消息/翻译列表,但它失败了(抛出异常)。该应用程序正在 IDEA 的 Tomcat 上运行:

1
2
Locale locale = new Locale("en");
ResourceBundle bundle = ResourceBundle.getBundle('i18n/dictionary', locale);

这里有什么问题。 i18n/dictionary 在类路径上。可能是 \\'i18n/dictionary\\' 错误。

我可以得到消息源,但是我不能从这个(SPRING)对象中得到密钥:

1
def messageSource = grailsAttributes.getApplicationContext().getBean("messageSource");

资源路径不完整。如果您需要前端的转换表,也许以下控制器可能有用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class ClientMessagesController {

def index = {
    Locale locale = session.getAttribute('locale') ?: new Locale("en");
    ResourceBundle bundle = ResourceBundle.getBundle('\\\\grails-app\\\\i18n\\\\clientMessages', locale);

    def sep = '';
    def sb = new StringBuilder();
    sb.append('<script type="text/javascript">\
');
    sb.append('_i18n = {\
');
    bundle.getKeys().each {key ->
        sb.append(sep);
        sb.append(key.replace('.', '_'));
        sb.append(':"');
        sb.append(bundle.getString(key).replace('"', '"'));
        sb.append('"\
');
        sep = ',';
    }
    sb.append('};\
\
')
    render(text: sb.toString());
}

}