我正在Go中开发API服务器,服务器(目前)处理客户端的所有翻译。当API客户端获取特定数据时,它还会询问给定部分可用的翻译。
理想情况下,我希望拥有以下文件夹结构:
/messages
/home.en
/home.fr
/home.sv
/news.en
/news.fr
/news.sv
news
和home
是不同的模块。
现在我对Revel的问题是,是否可以获取给定模块和给定语言环境的所有语言字符串?例如,为en-US拉出所有主页字符串。
编辑:
我希望输出(我可以返回给客户端)一个键:翻译的值字符串。
任何指导都将不胜感激。
答案 0 :(得分:3)
在我看来,revel使用基于消息的翻译(就像gettext一样),所以你需要
获取翻译的原始字符串。这些字符串存储在Config对象中,
它们本身存储在messages
i18n.go中,按语言排序。
如您所见,此映射未导出,因此您无法访问它。最好的方法 解决这个问题是为你想要的东西编写一个函数(通过提供一种语言来获取配置) 或导出其中一个现有函数并为revel创建拉取请求。
您可以通过复制loadMessageFile
的代码或分析您的版本来解决此问题
狂欢和导出loadMessageFile
或parseMessagesFile
。这也是一个很好的机会
创建拉取请求。
请注意,本地化以robfig/config
解析的INI文件格式存储,
所以手动解析也是一种选择(虽然不推荐)。