Ruby on rails 从rails项目中提取I18n转换键

Ruby on rails 从rails项目中提取I18n转换键,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,是否有一些gem或工具可以用来解析代码并将I18n密钥提取到yml文件 因此,如果我在代码中有: <%= t("homepage.header", default: "Cool website") %> GetText可以做到这一点,但对于我的项目,现在我们使用默认的rails设置。当我需要新的翻译密钥时,我不得不手动更新yml文件,这让我非常恼火。如果您在任何地方都使用默认值:,那么有一个解决方案可能适合您: 前往并创建一个帐户和一个新项目 在rails项目中设置localea

是否有一些gem或工具可以用来解析代码并将I18n密钥提取到yml文件

因此,如果我在代码中有:

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

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

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

  • 前往并创建一个帐户和一个新项目
  • 在rails项目中设置localeapp gem,使用API键等配置它
  • 默认情况下,当您访问带有翻译调用的页面时(如示例中所示),它会将翻译发送到语言环境服务器,并将其同步回YAML
  • 或者,如果您具有良好的测试覆盖率,您可以将localeapp配置为在测试环境中运行并运行您的测试套件
这并不理想,也不是Locale的主要目的(即避免手工编辑YAML文件),但在这种情况下应该可以工作


完整披露:我是Locale的共同创始人。

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

\s+t\(\"(?<key>.*?)\"\s*,\s*default:\s*\"(?<value>.*?)\"\)
\s+t\(\”(?*?)\“\s*,\s*默认值:\s*\”(?*?)\)

然后,您所要做的就是访问命名组(上面示例中的键和值)并将其写入YAML文件。根据您想要用来捕获此regexp的编程语言,您可能希望在regexp前面添加(?s)或(?-s),以允许将行尾视为空白(即多行声明)。

对于从谷歌来到这里的任何人来说,这类东西现在都是一块宝石


谢谢您的回答,但我不想寻找任何能够管理它的服务。
default
属性是i18n任务没有涉及的一件事。否则就很好了。
\s+t\(\"(?<key>.*?)\"\s*,\s*default:\s*\"(?<value>.*?)\"\)