Bonjour,
Je me suis créé une class pour l'utilisation de GetText
Les fichiers traduction dans le dossier public/assets/translations puis le nom de la langue en_US, it_IT etc... Ainsi que le dossier LC_MESSAGES et enfin le fichier .mo et .po nommé default.
le path final est donc public/assets/translations/en_US/LC_MESSAGES/default.po
J'ai donc suivi la doc GetText pour créer ma class.
La class est constitué de plusieurs fonctions pour initialiser la langue, mais je vais afficher le principal et l'expliquer en dessous.
public function __construct(GettextTranslator $translator, Json $json)
{
$this->translator = $translator;
$this->json = $json;
$this->json->setFile(__DIR__.'/config.json');
$this->translator
->setLanguage($this->get().'.'.$this->json->get('encoding'))
->loadDomain($this->json->get('domain'), $this->json->get('folder'))
->register();
}
$this->translator : importe la librairie GetText
$this->json : Class qui permet de parser un fichier JSON
$this->get() : une fonction qui retourne la langue via le cookie ou du navigateur en_US, it_IT etc...
$this->json->get('encoding') : retourne UTF-8
$this->json->get('domain') : retourne le nom du fichier .po/.mo -> default
$this->json->get('folder') : retounrne le path du dossier : /public/assets/translations
Je ne comprends pas d'ou viens le souci, car la traduction fonctionne bien en Anglais, mais pas avec d'autres langues.
Quand je modifie le de traduction Anglais pour essayer de voir s'il m'affiche autre chose que la vraie traduction (provoquer une fausse traduction), cela ne change pas non plus, comme si la traduction était auto-gérer.
Du coup, mon réel souci est que les autres langues ne fonctionnent pas, mise a part l'anglais alors que les dossiers sont identiques, à la chose prêt, le nom du dossier n'est pas le même (en_US, it_IT etc...)
Merci d'avance pour vos aides,
Je vais de mon côté continuer à chercher d'ou vient le souci.
Hello,
Je ne connais absolument pas GetText... par contre ce qui me choque un peu c'est que tu semble configurer un objet instancié en amont de ton constructeur... puisqu'il est passé en paramètre.
Il faudrait vérifier dans quel état est l'objet au moment où il est envoyé au constructeur et enventuellement analyser le code à partir de la création de l'objet (le fameux new ...)
Et sinon... "Quand je modifie le de traduction Anglais pour essayer de voir s'il m'affiche autre chose que la vraie traduction (provoquer une fausse traduction), cela ne change pas non plus, comme si la traduction était auto-gérer."... çà me fait pensser à un problème de mise en cache.