Localizzazione URL in Ruby on Rails
Quando si parla di internazionalizzazione e localizzazione delle applicazioni web spesso non viene data la giusta importanza alla localizzazione degli indirizzi, aspetto fondamentale in termini di SEO.
A partire da Rails 2.2 è stato aggiunto al framework il supporto nativo a I18n e L10n con una gestione delle traduzioni e delle regole di localizzazione (date, valute etc.) basata su file .yml.
Al supporto nativo mancano ancora 2 aspetti a mio parere importanti:
- La localizzazione dei contenuti
- La localizzazione degli indirizzi
Per quanto riguarda i contenuti continuo ad usare con soddisfazione il mio Model Localization Plugin riadattato in maniera molto semplice dall’utilizzo di GetText.locale a I18n.locale per l’identificazione della lingua corrente.
Per la localizzazione degli indirizzi ho di recente provato il translate_routes plugin che permette l’internazionalizzazione di tutti gli indirizzi dell’applicazione con una sola riga di codice oltre, ovviamente, alle traduzioni stesse su file .yml.
Localizzazione degli indirizzi
Supponiamo di avere una webapp in lingua inglese ed una risorsa project identificata da indirizzi del tipo:
- http://www.example.com/ projects
- http://www.example.com/ projects / my-great-project
L’utilizzo del plugin permette di aggiungere le route seguenti:
- http://www.example.com/ it / progetti
- http://www.example.com/ it / progetti / my-great-project
Per completare la localizzazione basta gestire la traduzione dei permalink sul database (localizzazione dei contenuti) per avere:
- http://www.example.com/ it / progetti
- http://www.example.com/ it / progetti / il-mio-grande-progetto
Da notare come la linua base (in questo caso l’inglese) non abbia bisogno del prefisso en. Questo significa che nel momento in cui decidiamo di aggiungere il supporto multi-lingua alla nostra applicazione, tutti i “vecchi” indirizzi rimangono inalterati.