【问题标题】:Getting language/country name from accept-language in Ruby on Rails从 Ruby on Rails 中的接受语言获取语言/国家/地区名称
【发布时间】:2015-12-26 06:08:44
【问题描述】:

我正在尝试根据用户的 accept-language 标头收集一些分析数据。将"en-US,en;q=0.8" 转为English (United States) 会很有帮助。

我真正见过的唯一方法是使用 I18n 并将名称放入 yaml 文件中。这似乎不是一个很好的解决方案,因为我必须“翻译”每种可能性。如果我使用它来获取用户的首选语言并翻译页面,那将是有意义的,但这是一个不同的用例。

我可以使用任何 gem/gist 来查找语言的显示名称吗?

【问题讨论】:

    标签: ruby-on-rails ruby rails-i18n http-accept-language


    【解决方案1】:

    我会从维基百科复制languagecountry 代码列表并将它们转换为哈希:

    LANGUAGE_CODES = {
      aa: 'Afar',
      ab: 'Abkhaz',
      # ...
      zu: 'Zulu'
    }
    
    COUNTRY_CODES = {
      AD: 'Andorra',
      AE: 'United Arab Emirates',
      # ...
      ZW: 'Zimbabwe'
    }
    

    使用这个哈希值,一个简单的方法应该能够提取您感兴趣的语言和国家/地区信息:

    def language_info(accepted_language)
      language, country = accepted_language.scan(/(\w{2})-(\w{2})/)
    
      if language && country
        "#{LANGUAGE_CODES[language]} (#{COUNTRY_CODES[country]})"
      end
    end
    
    # language_info(request.env['HTTP_ACCEPT_LANGUAGE'])
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    相关资源
    最近更新 更多