• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 17/01/2017

Choisissez votre langue

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Si vous traduisez votre site en plusieurs langues, l’utilisateur doit être capable de choisir la sienne. L’idée est de modifier intelligemment la variable I18n.locale qui contient la langue actuellement utilisée par le site. Exemple pour mettre le site en français :

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :set_locale

  private

  def set_locale
    I18n.locale = "fr"
  end
end

Problème : que mettre à la place de "fr" pour s’adapter à l’utilisateur ?

Vous pourriez :

  • stocker la langue de l’utilisateur en base de données et l’utiliser quand vous détectez la présence de@current_user (exemple sur Github) ;

  • ou encore stocker la langue dans une variable de session ou un cookie si l’utilisateur n’est pas connecté (exemple sur Github).

Un cookie ?

Les  cookies  sont une forme particulière de session : ils ne disparaissent pas à la fermeture du navigateur de l'utilisateur. C'est un hash particulier, au même titre que session,flash etparams. Je recommande de ne pas de l'utiliser pour des données sensibles (comme le maintient de la connexion de l'utilisateur) et de les garder pour stocker des informations comme la langue de‌ l'utilisateur.

Via le navigateur

Une autre façon de faire est d’utiliser la langue du navigateur. Ce n’est pas simple à coder, par chance la gem http_accept_language le fait pour vous.

Après l’avoir ajouté à votre Gemfile et fait votre bundle install, vous n’avez besoin d’ajouter qu’une ligne dans votre application_controller.rb (cette information est dans la documentation de la gem, cf. le lien ci-dessus) :

class ApplicationController < ActionController::Base
  include HttpAcceptLanguage::AutoLocale
  protect_from_forgery with: :exception
end

C’est aussi simple que cela : testez !

Exemple de certificat de réussite
Exemple de certificat de réussite