我正在阅读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!"
答案 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?("~") }