Bonjour,
Je voudrais faire un site multilingue, et j'ai deux soucis

  1. Quand je mets un domaine du style lorem.com avec l'extension fr,en et uk : exemple: lorem.com/fr, lorem.com/en et lorem.com/uk
    comment dois je créer mes contrôlleurs pour qu'il prenne en compte la "langue" en deux lettre. ?

  2. Une fois que le premier est résolu, comment faire pour que le controller, aille chercher en base de données la traduction des libellés ?
    Exemple: je suis sur lorem.com/uk , je voudrais récupérer pour le même controlleur , simplement la langue. Ou y a t'il un moyen plus simple ?

3 réponses


Bonjour.

Grafikart a fait un tutoriel vidéo sur l'internationalisation avec le Behavior (comportement) Translate, il y donne une méthode pour récupérer la langue demandé via le routing, il te faudra peut-être l'adapter pour la version de CakePHP actuelle, mais ça te donnera une idée sur comment faire.

Regardes ici : Tutoriel vidéo CakePHP : Internationalisation

sylvain
Auteur

Oui j'ai déjà regarde? mais ça ne répond pas a mon problème.
Car dans le tuto, on y parle de label static.
Par exemple un menu qui est connu à l'avance. (Home, services, portfolio, contact.)
Pour moi, le menu est dynamique , ce sont des pages avec un titre et un contenu , qui doivent être traduit . Et si je souhaite ajouter une page prix avec son contenu traduit. Le tuto ne marche plus

J'ai bien peur que ça ne soit pas possible.
En gros l'internationalisation, c'est :

-utiliser une variable au lieu d'une chaîne brute pour la vue
-renseigner un champ en config avec la langue souhaitée
-faire un fichier .po pour chaque langue qui va contenir la traduction de la chaine souhaitée

Si c'est du contenu dynamique, il faut, lors de l'insertion ou de la modificaiton en base, modifier les fichiers .po en question et je pense que ça risque d'être galère.*

Plus d'infos ici

Edit : c'est peut être possible finalement avec le Behavior translate mais je ne sais pas du tout si c'est ce que tu souhaite