我没有使用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个用户
定位-test.rb:13:在 puts:无法将R18n :: Translation转换为Array(R18n ::翻译#to_ary给出R18n :: Untranslated)(TypeError)来自localization-test.rb:13:in puts'from localization-test.rb:13:in “
Addenum:看起来错误在puts
而不是“翻译”。翻译的实际结果是log.signup[]
,但性别没有通过。
t.log.signup()
期待什么?答案 0 :(得分:0)
好像您忘了为!!gender
自定义类型设置过滤器。
R18n只有很少的内置过滤器 - 如!!pl
。性别过滤器不是内置的,您需要手动定义它。
R18n Filter docs已包含针对性别的简单过滤示例:
R18n::Filters.add('gender') do |translation, config, user|
translation[user.gender]
end