从rails项目中提取I18n转换键

时间:2012-10-22 12:23:34

标签: ruby-on-rails internationalization

是否有一些宝石或工具可用于解析我的代码并将I18n密钥提取到yml文件中?

所以,如果我有代码:

<%= t("homepage.header", default: "Cool website") %>

它会添加到yml文件

homepage:
  header: "Cool website"

GetText可以做到,但对于我的项目,我们现在使用默认的rails设置。当我需要新的翻译密钥时,我不得不手动更新yml文件。

3 个答案:

答案 0 :(得分:2)

如果您在任何地方使用default:,那么有一个可能适合您的解决方案:

  • 转到Locale并创建一个帐户和一个新项目
  • 在rails项目中设置localeapp gem,使用API​​密钥等配置它......
  • 默认情况下,当您访问带有翻译调用的页面时,它会将翻译发送到Locale服务器,然后将其同步回YAML。
  • 或者,如果您具有良好的测试覆盖率,则可以将localeapp配置为在测试环境中运行并运行测试套件。

不理想,而不是Locale的主要目的(这是为了避免手动编辑YAML文件),但它应该适用于这种情况。

完全披露:我共同创立了Locale。

答案 1 :(得分:2)

对于那些从谷歌来到这里的人来说,现在有了所有这类东西的宝石。

https://github.com/glebm/i18n-tasks

答案 2 :(得分:1)

我还没有听说过Ruby on Rails这样的工具,但我很确定它存在。另一方面,您可以自己创建一个 - 可以使用相对简单的正则表达式来完成,如:

\s+t\(\"(?<key>.*?)\"\s*,\s*default:\s*\"(?<value>.*?)\"\)

然后,您只需访问命名组(上例中的键和值)并将其写入YAML文件。根据要用于捕获此正则表达式的编程语言,您可能需要在正则表达式前添加(?s)或(?-s)以允许将行结尾视为空格(即多行声明)