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应用程序的人,所以希望有人以优雅的方式解决了这个问题。