Bonjour à tous,
J’ai placé ma première appli’ rails en ligne mais j’ai un petit souci
avec globalite.
En local, le fall back fonctionne bien; si le navigateur est dans une
langue qui n’est pas utilisée sur le site (ici fr et nl), donc par ex.
si le navigateur est en anglais, en local le site s’ouvre par défaut en
nl correctement.
Mais en ligne ça ne fonctionne plus, je reçois des erreurs
“localization_missing”, apparemment globalite ne renvoie plus
automatiquement vers mon fichier langue nl.yml.
Quelqu’un aurait-il une idée pour m’aider?
Merci à tous,
Dans mon fichier environment.rb, j’ai ajouté ceci “Globalite.language =
:nlâ€
Mon fichier application.rb
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
include AuthenticatedSystem
See ActionController::RequestForgeryProtection for details
Uncomment the :secret if you’re not using the cookie session store
protect_from_forgery # :secret => ‘5880ee74dae8cc2f2a3cc02e4976d601’
around_filter :set_locale
private
Set the locale from the parameters, the session, or the navigator
If none of these works, the Globalite default locale is set (en-*)
def set_locale
@current_path = request.env[‘PATH_INFO’]
@request_method = request.env[‘REQUEST_METHOD’]
if params[:user_locale]
logger.debug params[:user_locale]
Locale.code = params[:user_locale]
#get_matching_ui_locale(params[:user_locale][:code]) #||
session[:locale] || get_valid_lang_from_accept_header ||
Globalite.default_language
session[:locale] = Locale.code
elsif session[:locale]
Locale.code = session[:locale]
else
Locale.code = get_valid_lang_from_accept_header.local_case
end
logger.debug “[globalite] Locale set to #{Locale.code}”
yield
Locale.reset!
end
def get_sorted_langs_from_accept_header
accept_langs = (request.env[‘HTTP_ACCEPT_LANGUAGE’] ||
“en-us,en;q=0.5”).split(/,/) rescue nil
return nil unless accept_langs
wl = {}
accept_langs.each {|accept_lang|
if (accept_lang + ‘;q=1’) =~ /^(.+?);q=([^;]+)./
wl[($2.to_f rescue -1.0)]= $1
end
}
logger.debug “[globalite] client accepted locales: #{wl.sort{|a,b|
b[0] <=> a[0] }.map{|a| a[1] }.to_sentence}”
wl.sort{|a,b| b[0] <=> a[0] }.map{|a| a[1] }
end
def get_valid_lang_from_accept_header
get_sorted_langs_from_accept_header.detect{|l|
get_matching_ui_locale(l) }
end
def get_matching_ui_locale(locale)
lang = locale[0,2].downcase
if Globalite.ui_locales.values.include?(locale.local_case)
locale.local_case
end
Globalite.ui_locales.values.each do |value|
value.to_s =~ /#{lang}-/ ? value : nil
end
end
end
class String
def local_case
if self[3,5]
“#{self[0,2]}-#{self[3,5].upcase}”.to_sym
else
“#{self[0,2]}-*”.to_sym
end
end
end
Hereunder where I defin the language in my controllers:
@homepages =
Homepage.find_all_by_language_id(Language.resolve(Locale.code.to_s[0,2]))
Thanks in advance for your help!