2010-11-25 30 views
13

は、例えば、英語からフランス語への翻訳

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}" 

にテキストを実施するための最良の方法は何になるでしょうレールにおける性別と言語に変換するための最良の方法は何ですか渡されたモデルで動作するかっこ(genderized)。 ありがとう!

+0

私はどのような方法で国際化支援性別を考えていません。したがって、自動組み込みソリューションはありません...しかし、私は間違っているかもしれません! – plehoux

+0

私が考えていた2つのアイデアは:モデルの性別を設定し、テキスト(いくつかのlamba)を作成するときにそれを読んだり、動作しないモデルのテキストを上書きするツリー構造を作成します。私はレールアプリを翻訳する最初の人ではないと仮定しているので、うまくいけばこれは優雅なやり方で誰かによって解決されているはずです。 – montrealmike

答えて

10

i18n-inflector-railsコントローラにいわゆる変曲方法を登録できるようにするRailsプラグインもあります。

これらのメソッドは、I18n Inflectorにジェンダーまたは好きな他の任意の種類のデータを透過的に供給します。

例:コントローラで

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 
関連する問題