2010-11-25 27 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 2010-11-25 02:42:42

回答

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