gpt4 book ai didi

ruby-on-rails - rails I18n : setting initial locale from HTTP_ACCEPT_LANGUAGE

转载 作者:行者123 更新时间:2023-12-01 17:45:56 24 4
gpt4 key购买 nike

感谢大家的帮助。

我在做什么:我正在设计一个必须提供多种语言版本的公司网站

我做了什么:具有多个静态页面的 Rails 应用程序。我使用了 Ryan Bates 的示例来说明如何在 Rails 中使用 I18n 功能,特别是使用路由来设置语言环境:

MyApp::Application.routes.draw do

scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
root to: 'static_pages#home'

match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
end

match '*path', to: redirect("/#{I18n.locale}/%{path}")
match '', to: redirect("/#{I18n.locale}")

我的应用程序 Controller 如下所示:

class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale

private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end

def default_url_options(options = {})
{locale: I18n.locale}
end
end

我在服务器启动时的日志显示以下内容:

Started GET "/en" for 127.0.0.1 at 2012-11-14 22:41:01 +0400
Processing by StaticPagesController#home as HTML
Parameters: {"locale"=>"en"}
Rendered static_pages/home.en.html.erb within layouts/application (1.0ms)
Compiled custom.css (5905ms) (pid 9864)
Compiled application.css (15ms) (pid 9864)
Rendered layouts/_shim.html.erb (0.0ms)
Rendered layouts/_header.html.erb (12.0ms)
Rendered layouts/_footer.html.erb (2.0ms)
Completed 200 OK in 6741ms (Views: 6740.4ms | ActiveRecord: 0.0ms)

我正在尝试做什么:我希望当用户未在 url 中指定区域设置(例如仅键入 www.example.com)时,rails 会从 request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first 获取接受的区域设置并将访问者重定向到他的首选语言。此时我无法弄清楚我的 I18n.locale 首先设置在哪里。

最佳答案

这很神奇HTTP_ACCEPT_LANGUAGE

另一个需要考虑的Locale Setter

后一个允许您检查用户首选项、http_accept_lang 代码等。

关于ruby-on-rails - rails I18n : setting initial locale from HTTP_ACCEPT_LANGUAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391948/

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