我试图从资源包中获取消息/翻译列表,但它失败了(抛出异常)。该应用程序在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");
答案 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('"', '"'));
sb.append('"\n');
sep = ',';
}
sb.append('};\n</script>\n')
render(text: sb.toString());
}
}