8 juillet 2015 1 commentaire — gem, github, i18n, rails, url
Les URLs de votre site sont visibles et méritent autant d’attention que le reste de votre interface. Dans ce cas, pourquoi avoir des chemins en anglais uniquement alors que le reste de votre site est traduit ?
https://monsite.com/en/books/1/edit
https://monsite.com/fr/books/1/edit
https://monsite.com/es/books/1/edit
Je trouve que les adresses suivantes, traduites, sont plus élégantes et compréhensibles par tous :
https://monsite.com/en/books/1/edit
https://monsite.com/fr/livres/1/éditer
https://monsite.com/es/libros/1/editar
Mieux, non ?
Pour avoir des URLs pareilles avec Ruby on Rails sans pour autant tout dupliquer, j’ai développé la gemme route_localize.
Une fois installée, il suffit d’entourer les routes à traduire dans config/routes.rb
:
scope localize: %w(en fr es) do
resources :books
end
Vous pouvez ensuite traduire les chemins que vous voulez dans vos fichiers de localisation :
fr:
routes:
books: livres
edit: éditer
Et voilà ! Magie !
Enfin, si vous souhaitez faire passer vos utilisateurs d’une langue à l’autre sur votre site un petit helper prends la langue voulue et vous retourne le chemin traduit.
6 juillet 2015 — authentification, gem, github, i18n, opensource, rails, ruby
J’ai créé une petite gemme Ruby. Son petit nom c’est devise-track_locale. Si vous utilisez Ruby on Rails et Devise sur un site multilangue, cela vous permets d’enregistrer la dernière langue utilisée par l’utilisateur, automatiquement.
C’est un module Devise, donc son installation est aussi simple que d’ajouter :track_locale
dans la liste de modules Devise et un champ locale
sur les utilisateurs.
Ce n’est pas grand chose, mais plutôt que de garder cette fonctionnalité sur un site j’en ai fait une petite librairie externe, réutilisable, open-source, testée. Et je compte bien en faire autant pour tous ces petits développements qui sortent des fonctionnalités du cœur de mes sites.
est un développeur web vivant à Paris — Contact — Archives
Textes et contenus sous licence Creative Commons.