加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 什么是最好的方式来翻译一个语言与性别在轨

发布时间:2020-12-16 20:14:03 所属栏目:百科 来源:网络整理
导读:例如从英语翻译成法语 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}"

在括号(性别化)中实现文本的最佳方法是使用任何传递的模型.
谢谢!

解决方法

还有 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读