Ruby on rails 3 翻译成rails中有性别的语言的最佳方式是什么
例如,从英语翻译成法语Ruby on rails 3 翻译成rails中有性别的语言的最佳方式是什么,ruby-on-rails-3,internationalization,Ruby On Rails 3,Internationalization,例如,从英语翻译成法语 submit: create: 'Create %{model}' update: 'Update %{model}' submit: 'Save %{model}' 将成为 submit: create: "Créer un(e) %{model}" update: "Modifier ce(tte) %{model}" submit: "Enregistrer ce(tte) %{model}" 对于任何传递
submit:
create: 'Create %{model}'
update: 'Update %{model}'
submit: 'Save %{model}'
将成为
submit:
create: "Créer un(e) %{model}"
update: "Modifier ce(tte) %{model}"
submit: "Enregistrer ce(tte) %{model}"
对于任何传递的模型,实现括号中的文本(性别化)的最佳方法是什么。
谢谢 看看,这似乎是一个有趣的项目。还有Rails插件,它允许在控制器中注册所谓的拐点方法
这些方法将透明地向I18n拐点输入有关性别或任何其他您喜欢的拐点类型的数据
例如:
fr:
i18n:
inflections:
gender:
h: "hommes"
f: "femmes"
n: "neutre"
m: @h
default: n
welcome: "@{h,n:Cher|f:Chère|Bonjour}{ }{h:Monsieur|f:Dame|n:Vous|à tous}"
然后在控制器中:
class ApplicationController < ActionController::Base
before_filter :set_gender
inflection_method :gender
# inflection method for the kind gender
def gender
@gender
end
def set_gender
if user_signed_in? # assuming Devise is in use
@gender = current_user.gender # assuming there is @gender attribute
else
@gender = nil
end
end
end
class UsersController < ApplicationController
def say_welcome
t('welcome')
# => "Cher Vous" (for empty gender or gender == :n)
# => "Chère Dame" (for gender == :f)
# etc.
end
end
class ApplicationController“Cher Vous”(用于空性别或性别==:n)
#=>“圣母院”(性别==:f)
#等等。
结束
结束
我认为I18n在任何方面都不支持性别。所以没有自动内置的解决方案。。。但也许我错了!我想到的两个想法是:在模型中设置性别,然后在创建文本(一些lamba)时阅读,或者创建一个树结构,在那里我将覆盖不起作用的模型的文本。我假设我不是第一个翻译rails应用程序的人,所以希望有人以优雅的方式解决了这个问题。