【发布时间】:2017-01-18 06:43:45
【问题描述】:
我没有使用 Rails,也没有做过任何国际化,所以我试图了解 this particular example 的工作原理,但我有点难过:
r18n-desktop gem 从 YAML 文件中读取以进行翻译。很简单。
YAML 文件en.yml:
user:
edit: Edit user
name: User name is %1
count: !!pl
1: There is 1 user
n: There are %1 users
log:
signup: !!gender
male: Он зарегистрировался
female: Она зарегистрировалась
测试 ruby 代码:
require 'r18n-desktop'
R18n.from_env('./localizations/')
R18n::Filters.add('gender') do |translation, config, user|
puts translation
puts config
puts user
translation[user.gender]
end
include R18n::Helpers
class Ayy
attr_accessor :gender
end
girl = Ayy.new
girl.gender = :female
puts t.user.count(5)
puts t.log.signup girl
输出:
有5个用户
本地化测试.rb:13:in puts: 无法将 R18n::Translation 转换为 Array(R18n::Translation#to_ary 提供 R18n::Untranslated)(TypeError)来自本地化-test.rb:13:in puts' 来自本地化-test.rb:13:in '
附录:看起来错误出在 puts 而不是“翻译”中。翻译的实际结果是log.signup[],但性别没有通过。
t.log.signup() 期待什么?
【问题讨论】:
标签: ruby internationalization yaml