Grails:阅读资源包

时间:2012-01-30 23:57:52

标签: spring grails resourcebundle

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

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

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

我能够获取消息源,但我无法从此(SPRING)对象获取密钥:

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

1 个答案:

答案 0 :(得分:1)

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

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">\n');
    sb.append('_i18n = {\n');
    bundle.getKeys().each {key ->
        sb.append(sep);
        sb.append(key.replace('.', '_'));
        sb.append(': "');
        sb.append(bundle.getString(key).replace('"', '&quot;'));
        sb.append('"\n');
        sep = ',';
    }
    sb.append('};\n</script>\n')
    render(text: sb.toString());
}

}