Ruby Way练习卡住了(I18n)

时间:2016-07-14 12:08:51

标签: ruby

我正在阅读Ruby Way第3版。第155页有一个简单的I18n脚本示例,但是当我使用“ruby survay.rb”命令运行它时,它会给我一个错误

/home/name/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/i18n-0.7.0/lib/i18n/backend/base.rb:164:in `load_file': can not load translations from locale/en.yml~, the file type yml~ is not known (I18n::UnknownFileType)

我有最新的红宝石和铁轨。我使用Lubuntu。

源代码/survay.rb

require 'i18n'
I18n.load_path = Dir["locale/*"]
I18n.enforce_available_locales = true
I18n.locale = ENV["LANG"].split("_").first || :en   

puts I18n.t("ask.name")
name = gets.chomp
puts I18n.t("ask.location")
place = gets.chomp
puts I18n.t("ask.children")
childnum = gets.chomp.to_i
puts I18n.t("ask.thanks")

puts name, place, childnum

源代码/locale/en.yml

en: 
    ask:
        name: "What is your name?"
        location: "Where do you live?"
        children: "How many children do you have?"
        thanks: "Thank you!"

3 个答案:

答案 0 :(得分:3)

尝试

I18n.load_path = Dir["locale/*.yml"]

答案 1 :(得分:1)

应该是/locale/en.yml而不是/locale/en.rb

答案 2 :(得分:1)

因此yml~指的是临时文件。

您可以做的一件事是确保在运行脚本之前退出了编辑器。

否则你可以在你的代码中做这样的事情:

Dir["locale/*"].reject { |file| file.end_in?("~") }