gpt4 book ai didi

ruby-on-rails - 如何让 i18n 意识到 "genders"在性别敏感的语言中,例如法语

转载 作者:行者123 更新时间:2023-12-03 22:32:55 24 4
gpt4 key购买 nike

我必须用法语翻译一个网站。现在,法语和许多其他语言一样,有性别和屈折变化。问题是:

  • 如何创建包含可变部分为男性或女性的消息的 yaml 文件...
  • 如何修改 i18n 生成器以支持此功能?
  • 是否有任何 gem 或插件支持这个?
  • 最佳答案

    这也是意大利语的常见问题。

    一种不需要插件的解决方案是使用特定于性别的键。

    it: 
    presentation_f: "Sig.ra %{customer_name}"
    presentation_m: "Sig. %{customer_name}"

    您可以在模型中创建一个方法,该方法在输入中输入一个键并返回修改后的性别键:
    module Genderize
    def genderize(key)
    "#{key}_#{self.gender}"
    end
    end

    class Customer
    include Genderize

    def gender
    gender_field_from_database_or_wherever || 'm'
    end
    end

    在您的 Controller 或 View 中,您可以执行以下操作:
    t(@person.genderize('presentation'), customer_name: @person.name)

    这个例子有点做作,但你明白了。

    你可以做的另一件事是写一个 tg函数(意思是 t-genderized),它作为第二个参数
    获取性别方法的模型:
    def tg(key, model, options={})
    gender_key = "#{key}_#{model.gender}"
    I18n.t(gender_key, options)
    end

    与上面基本相同,没有污染模型,而是使用全局函数。

    i18n-inflector-rails看起来是一个有趣的项目,但根据我的经验,将 yaml 文件传递​​给非技术翻译人员并具有额外的复杂性来解释并不罕见:
    en:
    welcome: "Dear @{f:Lady|m:Sir|n:You|All}"

    对他们来说可能太多了。而这个:
    en:
    welcome_f: "Dear Lady"
    welcome_m: "Dear Sir"
    welcome_n: "Dear You"

    阅读解释要容易得多。

    我还建议(这是一个与问题无关的免费建议)保持 yaml 文件尽可能平坦,更喜欢命名空间字符串作为键,而不是嵌套结构。例如这样做:
    it: 
    home_page_welcome: "Welcome to the home page!"

    而不是这个:
    it: 
    home_page:
    welcome: "Welcome to the home page!"

    您在 Controller 和 View 中付出了更多的冗长,但最终得到的代码可以更轻松地移动,而无需重新排列 yaml fies 中的树结构。当翻译的文件返回给您时,找出困惑的缩进也会容易得多。

    关于ruby-on-rails - 如何让 i18n 意识到 "genders"在性别敏感的语言中,例如法语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21438041/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com