IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

globalite problème online avec les browsers de langues étrangères


Sujet :

Ruby on Rails

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut globalite problème online avec les browsers de langues étrangères
    Bonjour,

    J'ai juste mis ma première application en ruby on rails online mais j'ai un petit souci avec le plugin globalite.

    En local le plugin fonctionne parfaitement, il détecte correctement la langue définie par le navigateur et le site s'ouvre dans cette langue. Si le navigateur est en anglais par exemple (mon site est prévu en français et nl), le site s'ouvre automatiquement en néerlandais localement.

    Je ne sais pas pourquoi mais cette spécification ne fonctionne plus online. Pour un navigateur défini en anglais, le site s'ouvre avec beaucoup d'erreurs "localization_missing", seul le texte statique est correctement mis en néerlandais mais tout le contenu venant de mes controllers n'est pas affiché en nl, j'ai juste "localization_missing"

    Quelqu'un aurait-il déjà eu ce problème?

    Pour info, pour gérer les langues, j'ai créé un controller "language" qui reprend les 2 langues disponibles, fr et nl.

    Dans environment.rb, j'ai ajouté ceci: “Globalite.language = :nl” pour forcer le site en néerlandais si le navigateur n'est ni en fr ni en nl.

    Voici mon fichier application.rb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    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
    Voici comment je définis la sélection des langues dans mes controllers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @homepages = Homepage.find_all_by_language_id(Language.resolve(Locale.code.to_s[0,2]))
    Ceci me permet donc d'avoir une liste déroulante pour la création de chaque nouvel item où je choisis "fr" ou "nl".

    Merci à tous pour votre aide!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 115
    Points : 50
    Points
    50
    Par défaut
    bonjour,

    Je me suis rendu compte qu'apparemment globalite détecte que le browser est en anglais et il essaie de faire le lien avec un fichier en.yml qui n'existe pas vu que mon site est en fr et nl uniquement, de là les erreurs "localization_missing". Comment puis-je forcer globalite à ouvrir le site en fr si le browser n'est pas dans une des 2 langues utilisées sur mon site?

    Merci à tous pour votre aide,

Discussions similaires

  1. Problème de session avec les Browser Iexplorer
    Par Andry dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2008, 08h10
  2. Problème technique avec les états : lenteur
    Par stagolee dans le forum IHM
    Réponses: 5
    Dernier message: 21/09/2006, 11h19
  3. Réponses: 19
    Dernier message: 13/07/2006, 13h35
  4. problème sql avec les concepteurs visual basic
    Par Le Rebel dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/05/2006, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo