【问题标题】:Timeout loading translations from YML file with I18n使用 I18n 从 YML 文件加载翻译超时
【发布时间】:2015-02-12 06:02:25
【问题描述】:

我在尝试在 heroku 上加载翻译文件时遇到很多 I18n::InvalidLocaleData 错误:

I18n::InvalidLocaleData can not load translations from /app/config/locales/pt.yml: #<Timeout::Error: execution expired>

这些文件存在于我们的存储库中并通过了 YAML 验证检查。我无法找到此超时错误的任何原因。有关修复或解决方法的任何想法?

一些版本信息:

ruby-2.1.2
rails 3.2.21
i18n 0.6.11

谢谢!


更新

irb(main):001:0> YAML.load(File.open('config/locales/pt.yml'))
=> {"pt"=>{"meet"=>"Conheça", "he_is"=>"ele é", "she_is"=>"ela é", "years_old"=>"anos", "and"=>"e", "from"=>"de", "default"=>"Suas escolhas diárias estão prontas! Vejam antes que expirem em 24 has", "default_chosen"=>"Suas escolhas diárias estão prontas! Vejam antes que expirem em 24 has", "sunset"=>"We've missed you - check your Daily Picks today if you'd like to keep receiving them"}}

【问题讨论】:

  • Yaml 格式有版本 (1.0-1.2)。检查您的验证器是否针对您的解析器解析的相同版本进行验证。我发现解析器(在 PHP 世界中)的不同之处在于它们支持的语法以及它们对不带引号的特殊字符的容忍度
  • 发布YAML.load(File.open('config/locales/pt.yml'))的输出
  • 您是否可能超过 Heroku 的 30 秒超时时间,而这只是一个红鲱鱼? Heroku 将终止任何持续时间超过 30 秒的请求,当它这样做时,您有时会遇到类似这样的令人困惑的错误。
  • 绝对有可能。关于如何确认/解决这个问题的任何想法?

标签: ruby-on-rails heroku localization rails-i18n i18n-gem


【解决方案1】:

首先不是Timeout错误,而是InvalidLocaleData。它通常发生在yaml 文件无效时。最常见的原因之一是人们在yaml 中使用tabs 而不是space。我建议您使用http://www.yamllint.com/ 或类似的方式检查您的yaml 文件。

【讨论】:

  • 其实是超时错误。滚动错误文本,您将看到打印的 Timeout::Error
猜你喜欢
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多