Tag: 国际化

I18n:使用’t(:test_key)’,’t(’test_key’)’和’t(’。test_key’)’有什么区别?

我正在使用Ruby on Rails 3.1,我想知道如何 , 何时以及为什么我应该使用以下代码而不是另一个代码来国际化我的应用程序( I18n gem ): t(:test_key) t(‘test_key’) t(‘.test_key’) 也就是说,使用t(:test_key) , t(‘test_key’)和t(‘.test_key’)之间的“微妙”区别是什么? 关于这个问题的最佳做法是什么?

I18n :: InvalidLocale :: en不是有效的语言环境

我正在尝试使用I18n.transliterate来“标准化”一些带有重音字符的文本,这样我就可以用不同的语言进行分析和比较。 但是,使用此方法时会弹出以下错误 I18n::InvalidLocale: :en is not a valid locale from /home/xxx/.rvm/gems/ruby-2.1.5/gems/i18n-0.7.0/lib/i18n.rb:284:in `enforce_available_locales!’ from /home/xxx/.rvm/gems/ruby-2.1.5/gems/i18n-0.7.0/lib/i18n.rb:235:in `transliterate’ from (irb):2 from /home/xxx/.rvm/rubies/ruby-2.1.5/bin/irb:11:in `’ 我已经对这个问题进行了一些搜索,我只找到了与Rails配置相关的解决方案。 我只是在Ruby文件中使用它,没有任何与Rails相关的内容,所以…我该怎么办?

你如何解救I18n :: MissingTranslationData?

我希望能够拯救I18n::MissingTranslationData如下所示: begin value = I18n.t(‘some.key.that.does.not.exist’) puts value return value if value rescue I18n::MissingTranslationData puts “Kaboom!” end 我尝试了以上,但它似乎没有进入救援区。 我只是看到,在我的控制台上(因为puts ): translation missing: some.key.that.does.not.exist 。 我从未见过Kaboom! 。 我如何让它工作?

错误无法在任何来源中找到i18n-0.7.0

本周六(12月27日),我将项目Rails版本从4.1.5升级到版本4.2.0。 我还将Ruby版本从2.1.2升级到2.1.5。 今天,我试图运行一个控制器生成器: bin/rails g controller Clients index ,我意识到该命令不起作用。 我收到此错误: Could not find i18n-0.7.0 in any of the sources 我尝试了其他命令,如: bin/rake db:migrate , bin/rake和同样的问题。 但我可以使用: bin/rails s运行服务器。 我也可以浏览网站。

如何排序YAML文件?

我一直在尝试用Ruby对i18n翻译YAML文件进行排序,这样我就能以更好,更有条理的方式管理新翻译,但我一直想知道是否有什么可以轻松完成任务。 我找到了一个YAML文件编写器,所以我可以将哈希写入文件,但我的问题是正确地对哈希进行排序。 如果我得到哈希h , h.sort返回一个数组,我仍然没有想出一个简单的方法来做到这一点。 我有这样的YAML文件: pt-br: global: misc: total: “Total” all: “Todos” close: “Fechar” cancel: “Cancelar” crud: access: “Acessar” back: “Voltar” edit: “Editar” confirm: “Confirmar” send: “Enviar” … (文件大于此) 但我想用这种方式对它们进行排序: pt-br: global: crud: access: “Acessar” back: “Voltar” confirm: “Confirmar” edit: “Editar” send: “Enviar” misc: all: “Todos” cancel: “Cancelar” close: “Fechar” total: “Total” 我认为一些简单的递归方法可以帮助我这样: def […]

Rails 3在生产模型中的翻译

我正在尝试将应用程序翻译成日语,一切顺利,直到我投入生产。 由于cache_classes现在为true,因此模型中的任何转换都将恢复为默认语言环境。 我知道我可能应该直接在yml文件中定位翻译,但我不确定如何为以下简化代码执行此操作: class TimeseriesForecast I18n.t(‘forecast_timeseries.location_name’), :local_date_time => I18n.t(‘forecast_timeseries.local_date_time’), :zulu_date_time => I18n.t(‘forecast_timeseries.zulu_date_time’), :temp_mean => I18n.t(‘forecast_timeseries.temp_mean’) } end 非常感谢

open-uri从iso-8859编码的网页返回ASCII-8BIT

我正在使用open-uri来阅读声称在iso-8859-1中编码的网页。 当我读取页面内容时,open-uri返回以ASCII-8BIT编码的字符串。 open(“http://www.nigella.com/recipes/view/DEVILS-FOOD-CAKE-5310”) {|f| p f.content_type, f.charset, f.read.encoding } => [“text/html”, “iso-8859-1”, #] 我猜这是因为网页的字节(或字符)\ x92不是有效的iso-8859字符。 http://en.wikipedia.org/wiki/ISO/IEC_8859-1 。 我需要将网页存储为utf-8编码文件。 关于如何处理编码不正确的网页的任何想法。 我可以捕获exception并尝试猜测正确的编码,但这看起来很麻烦且容易出错。

如何指定一个适用于英语以外的欧洲语言的正则表达式字符范围?

我正在使用Ruby的正则表达式引擎。 我需要编写一个执行此操作的正则表达式 WIKI_WORD = /\b([az][\w_]+\.)?[AZ][az]+[AZ]\w*\b/ 除了英语之外,还可以使用其他欧洲语言。 我不认为字符范围[az]会覆盖德语等小写字母。

有没有办法用轨道引用yaml中的常量?

有没有办法让我的en.yml文件包含常量? # en.yml foo: bar: I love BAZ so much! # initializers/constants.rb BAZ = “stackoverflow.com” I18n.t(“foo.bar”) -> “I love stackoverflow.com so much!” ? 如果没有,有没有办法自我引用yaml文件? foo: bar: I love *baz* so much! baz: stackoverflow.com I18n.t(“foo.bar”) -> “I love stackoverflow.com so much!”

使用Ruby / Rails中的特定排序规则对值进行排序

是否可以使用Ruby中的特定排序规则对值数组进行排序? 我需要根据da_DK排序规则进行排序。 鉴于数组%w(Aarhus Aalborg Assens)我想让[‘Assens’, ‘Aalborg’, ‘Aarhus’]回归丹麦语中的正确顺序。 标准排序方法 %w(Aarhus Aalborg Assens).sort 返回看起来像ascii顺序的东西(至少不是丹麦语顺序): [“Aalborg”, “Aarhus”, “Assens”] 环境是Snow Leopard和Linux运行ruby 1.9.2和Rails 3.0.5。