0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
# https://github.com/ruby-i18n/i18n # https://github.com/svenfuchs/rails-i18n # Узнать дефолтную локаль I18n.default_locale # Различные методы определять и изменять локаль динамически # app/controllers/application_controller.rb class ApplicationController < ActionController::Base around_action :set_locale_param private def default_url_options { locale: I18n.locale } end # Локаль может быть передана как в query param, так и в url # http://localhost:3000/users?locale=ru # http://localhost:3000/ru/users def set_locale_param(&action) locale = params[:locale] || I18n.default_locale I18n.with_locale(locale, &action) end def set_locale_param_with_cookie(&action) locale = params[:locale] || cookies[:locale] || I18n.default_locale I18n.with_locale(locale, &action) cookies[:locale] = I18n.locale end def set_locale_domain(&action) # http://en.example.com # http://ru.example.com locale = request.subdomains.first I18n.locale = if I18n.available_locales.include?(locale.to_sym) locale else I18n.default_locale end end def set_locale_headers logger.debug(request.env['HTTP_ACCEPT_LANGUAGE']) locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first logger.debug("LOCALE: #{locale}") I18n.locale = if I18n.available_locales.include?(locale.to_sym) locale else I18n.default_locale end end end # config/routes.rb Rails.application.routes.draw do # http://en.example.com # http://ru.example.com scope '/(:locale)', locale: /en|ru/ do root 'welcome#index' resources :users end end # config/application.rb require_relative "boot" require "rails/all" # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module I18nApp class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.1 # Задать локаль по умолчанию # https://guides.rubyonrails.org/i18n.html#configure-the-i18n-module config.I18n.default_locale = :ru # :en # Разрешенные локали config.I18n.available_locales = [:en, :ru] # Указать путь, откуда будут загружаться локали # Rails.root возвращает полный путь до проекта config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')] end end
1
# https://github.com/ruby-i18n/i18n # https://github.com/svenfuchs/rails-i18n # Узнать дефолтную локаль I18n.default_locale # Различные методы определять и изменять локаль динамически # app/controllers/application_controller.rb class ApplicationController < ActionController::Base around_action :set_locale_param private def default_url_options { locale: I18n.locale } end # Локаль может быть передана как в query param, так и в url # http://localhost:3000/users?locale=ru # http://localhost:3000/ru/users def set_locale_param(&action) locale = params[:locale] || I18n.default_locale I18n.with_locale(locale, &action) end def set_locale_param_with_cookie(&action) locale = params[:locale] || cookies[:locale] || I18n.default_locale I18n.with_locale(locale, &action) cookies[:locale] = I18n.locale end def set_locale_domain(&action) # http://en.example.com # http://ru.example.com locale = request.subdomains.first I18n.locale = if I18n.available_locales.include?(locale.to_sym) locale else I18n.default_locale end end def set_locale_headers logger.debug(request.env['HTTP_ACCEPT_LANGUAGE']) locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first logger.debug("LOCALE: #{locale}") I18n.locale = if I18n.available_locales.include?(locale.to_sym) locale else I18n.default_locale end end end # config/routes.rb Rails.application.routes.draw do # http://en.example.com # http://ru.example.com scope '/(:locale)', locale: /en|ru/ do root 'welcome#index' resources :users end end # config/application.rb require_relative "boot" require "rails/all" # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module I18nApp class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.1 # Задать локаль по умолчанию # https://guides.rubyonrails.org/i18n.html#configure-the-i18n-module config.I18n.default_locale = :ru # :en # Разрешенные локали config.I18n.available_locales = [:en, :ru] # Указать путь, откуда будут загружаться локали # Rails.root возвращает полный путь до проекта config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')] end end