2012-01-30 144 views
4

我試圖從資源包中獲取消息/翻譯列表,但它失敗(拋出異常)。該應用程序在IDEA上運行於Tomcat上:Grails:閱讀資源包

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

這裏有什麼問題。 i18n /字典在課程路徑上。可能是'i18n /字典'是錯誤的。

我能夠得到的消息來源,但我不能從這個(SPRING)對象獲取鍵:

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

回答

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()); 
} 

}

+4

請勿自行構建JSON,使用'JsonBuilder' – 2014-09-27 13:33:17