在Revel中输出所有语言字符串?

时间:2013-09-03 18:13:48

标签: go revel

我正在Go中开发API服务器,服务器(目前)处理客户端的所有翻译。当API客户端获取特定数据时,它还会询问给定部分可用的翻译。

理想情况下,我希望拥有以下文件夹结构:

/messages
  /home.en
  /home.fr
  /home.sv
  /news.en
  /news.fr
  /news.sv

newshome是不同的模块。

现在我对Revel的问题是,是否可以获取给定模块和给定语言环境的所有语言字符串?例如,为en-US拉出所有主页字符串。

编辑:

我希望输出(我可以返回给客户端)一个键:翻译的值字符串。

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:3)

在我看来,revel使用基于消息的翻译(就像gettext一样),所以你需要 获取翻译的原始字符串。这些字符串存储在Config对象中, 它们本身存储在messages i18n.go中,按语言排序。

如您所见,此映射未导出,因此您无法访问它。最好的方法 解决这个问题是为你想要的东西编写一个函数(通过提供一种语言来获取配置) 导出其中一个现有函数并为revel创建拉取请求。

您可以通过复制loadMessageFile的代码或分析您的版本来解决此问题 狂欢和导出loadMessageFileparseMessagesFile。这也是一个很好的机会 创建拉取请求。

请注意,本地化以robfig/config解析的INI文件格式存储, 所以手动解析也是一种选择(虽然不推荐)。