我有一个包含多种语言的应用程序,现在我想在URL中集成该语言。这样的事情:https://example.com/en/main/cars
https://example.com/fr/main/cars
等等。该应用程序适用于所有语言,只是URL中缺少该语言。
我已经检查了this和this,但我没有成功。我将不胜感激。
在helpers.rb
我有:
def set_locale( new_locale )
allowed_locales = %w[ de en fr it sk ]
if allowed_locales.map{|l| l.to_sym }.include?( new_locale.to_sym )
session[:locale] = new_locale.to_sym
else
session[:locale] = default_locale
end
end
alias_method :set_lang, :set_locale
def locale
session[:locale] || default_locale
end
def default_locale
:de
end
def t( *args )
I18n.locale = locale
I18n.t( *args )
end
def l( *args )
I18n.locale = locale
I18n.l( *args )
end
在app.rb
我定义了这样的内容:
Class Something < Sinatra::Application
helpers Sinatra::Something::Helpers
I18n.load_path += Dir[File.join(settings.root, 'locales', '??.yml').to_s]
before "/*" do
set_locale params[:locale] if params[:locale]
set_locale params[:lang] if params[:lang]
set_locale params[:l] if params[:l]
end
end
答案 0 :(得分:0)
根据您展示的代码,您无法将网址的第一部分设置为语言参数。尝试从您链接的文档中添加前置过滤器:
before '/:locale/*' do
I18n.locale = params[:locale]
request.path_info = '/' + params[:splat ][0]
end
或者,您可以编辑路线以包含并命名此参数。