在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:iain/http_accept_language开源软件地址:https://github.com/iain/http_accept_language开源编程语言:Ruby 94.2%开源软件介绍:HttpAcceptLanguageA gem which helps you detect the users preferred language, as sent by the "Accept-Language" HTTP header. The algorithm is based on RFC 2616, with one exception: when a user requests "en-US" and "en" is an available language, "en" is deemed compatible with "en-US". The RFC specifies that the requested language must either exactly match the available language or must exactly match a prefix of the available language. This means that when the user requests "en" and "en-US" is available, "en-US" would be compatible, but not the other way around. This is usually not what you're looking for. Since version 2.0, this gem is Rack middleware. ExampleThe class SomeController < ApplicationController
def some_action
http_accept_language.user_preferred_languages # => %w(nl-NL nl-BE nl en-US en)
available = %w(en en-US nl-BE)
http_accept_language.preferred_language_from(available) # => 'nl-BE'
http_accept_language.user_preferred_languages # => %w(en-GB)
available = %w(en-US)
http_accept_language.compatible_language_from(available) # => 'en-US'
http_accept_language.user_preferred_languages # => %w(nl-NL nl-BE nl en-US en)
available = %w(en nl de) # This could be from I18n.available_locales
http_accept_language.preferred_language_from(available) # => 'nl'
end
end You can easily set the locale used for i18n in a before-filter: class SomeController < ApplicationController
before_filter :set_locale
private
def set_locale
I18n.locale = http_accept_language.compatible_language_from(I18n.available_locales)
end
end If you want to enable this behavior by default in your controllers, you can just include the provided concern: class ApplicationController < ActionController::Base
include HttpAcceptLanguage::AutoLocale
#...
end Then set available locales in config.i18n.available_locales = %w(en nl de fr) To use the middleware in any Rack application, simply add the middleware: require 'http_accept_language'
use HttpAcceptLanguage::Middleware
run YourAwesomeApp Then you can access it from class YourAwesomeApp
def initialize(app)
@app = app
end
def call(env)
available = %w(en en-US nl-BE)
language = env.http_accept_language.preferred_language_from(available)
[200, {}, ["Oh, you speak #{language}!"]]
end
end Available methods
InstallationWithout BundlerInstall the gem With BundlerAdd the gem to your Gemfile: gem 'http_accept_language' Run Released under the MIT license |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论