Symfony traductions ne fonctionne pas
J'ai fait la liste de contrôle suivante:
- créé fichier de traduction en respectant le format de domaine.lang.chargeur
- effacé le cache
- vérifié que la langue catalogue est créé dans le dossier cache
Bien que dans mon template twig fichier,
{{ 'message'|trans }}
jamais traduit.
Où puis-je regarder les suivants dans l'ordre pour faire des traductions de travail?
Est-il une chance que La Doctrine Traduisible Extension que je suis en utilisant génère certains types de conflits?
Où en êtes-vous essayer d'utiliser les traductions? La forme, le contrôleur, le modèle?
Essayez de l'utiliser à partir d'un modèle
essayez de reproduire le problème sur une nouvelle fourche de symfony standard (avec la même version que la tienne), et de les partager. Il est difficile de savoir sans que l'ensemble de votre app/config, compositeur.json, et le résultat de app/check.php
Meanwile, pouvez-vous explicitement donner ce que vous avez fait ? "créé translation fichier en respectant le format de domaine.lang.chargeur" ne veut pas dire que c'est correct 🙂 Où avez-vous mis le fichier par exemple ? Ce nom exact?
La version de Symfony utilisez-vous?
Essayez de l'utiliser à partir d'un modèle
essayez de reproduire le problème sur une nouvelle fourche de symfony standard (avec la même version que la tienne), et de les partager. Il est difficile de savoir sans que l'ensemble de votre app/config, compositeur.json, et le résultat de app/check.php
Meanwile, pouvez-vous explicitement donner ce que vous avez fait ? "créé translation fichier en respectant le format de domaine.lang.chargeur" ne veut pas dire que c'est correct 🙂 Où avez-vous mis le fichier par exemple ? Ce nom exact?
La version de Symfony utilisez-vous?
OriginalL'auteur Michael | 2013-10-02
Vous devez vous connecter pour publier un commentaire.
Avez-vous activé le service de Traducteur dans votre fichier de config??
La langue catalogue est créé dans votre dossier de cache indépendamment de savoir si votre traducteur est activé ou non.
Avez-vous essayez de traduire dans votre contrôleur??
Désolé, j'ai oublié de confirmer.. bien sûr, la config n'est pas commenté.
OriginalL'auteur Ankit Khedekar
Dans Symfony 3.0 j'ai dû effacer le cache:
Je vois que vous avez déjà fait cela, peut-être qu'il aide les autres comme moi.
OriginalL'auteur zuzuleinen
Essayer de spécifier le domaine. Si vous ne spécifiez pas de domaine par défaut, les messages.
Puis les traductions peuvent être trouvés dans
annuaire;
Par exemple
some_domain.fr.yml
. Dernière étape consiste à configurer vos paramètres régionaux. Vous pouvez obtenir des paramètres régionaux en cours de demande avec$request->getLocale()
P. S. essayez de
rm -r app/cache
à assurez-vous que le cache est suppriméc'est à peu près
$request->getLocale()
?console cache:clear
a fait le tour pour moi, merciOriginalL'auteur Alexey B.
Je pouvais utiliser l'une des traductions, mais pas les autres et ne savais pas pourquoi. Si vous avez des ennuis avec des traductions aussi, lisez ceci.
Tout d'abord, la liste de contrôle standard:
php app/console cache:clear
commande.$this->getRequest()->setLocale('en');
dans le Contrôleur, vous pouvez aussi essayer d'utiliser$this->get('translator')->trans('Some message');
directement dans votre Contrôleur.Regarder pour
BOM
dans le fichier traduit. Le traducteur qui traduit le fichier yml utilisé UTF8 qui est OK, mais l'éditeur il a utilisé les feuilles de la NOMENCLATURE au début du fichier. C'est dangereux, probablement en raison de PHP en utf-8 BOM bug car il ajoute quelques caractères invisibles à première section de votre fichier.Btw, le débogage de vos traductions peut être très utile, aussi.
OriginalL'auteur Jakub Krol
Selon la Symfony Traductions page de Documentation, si vous n'êtes pas à l'aide d'un Conteneur De Service pour votre traduction but, ce sont de simples étapes pour y aller:
Activer et configurer De Symfony service de traduction.
YAML
PHP
Résumé des chaînes de caractères (c'est à dire "messages") en les enveloppant dans du appels pour le Traducteur ("De Base De La Traduction").
Créer des ressources de traduction/fichiers pour chaque langue supportée que traduire chaque message dans l'application.
Symfony regarde les fichiers de messages (c'est à dire des traductions) dans les emplacements par défaut suivants:
app/Resources/translations
répertoire;app/Resources/<bundle name>/translations
répertoire;la
Resources/translations/
répertoire à l'intérieur de chaque faisceau.Traduction De Nom De Fichier
Le nom de fichier des fichiers de traduction est également important: chaque message fichier doit être nommé selon le chemin suivant: domaine.paramètres régionaux.chargeur (par exemple, nom de fichier:
navigation.en.xlf
):de domaine: Une façon optionnelle d'organiser les messages dans des groupes (par exemple,
admin
,navigation
ou le défautmessages
) - voir En Utilisant Les Domaines De Message;locale: La locale que la traduction (par ex. fr, fr, etc);
chargeur: Comment Symfony doit charger et analyser le fichier (par exemple, xlf, php, yml, etc).
Le chargeur peut être le nom de n'importe quel format enregistré. Par défaut, Symfony fournit de nombreux chargeurs, y compris:
xlf
: XLIFF fichier;php
: PHP fichier;yml
: YAML fichier.Le choix du format à utiliser est entièrement à vous, c'est une question de goût. L'option recommandée est d'utiliser
xlf
pour les traductions.Déterminer, définir et de gérer les paramètres régionaux de l'utilisateur de la demande et éventuellement sur l'ensemble de la session de l'utilisateur.
Vider le cache:
Le Processus De Traduction
Pour traduire le message, Symfony utilise un processus simple:
OriginalL'auteur Trix
Je peux déjà répondre à tes 2 questions:
1: vous pouvez regarder
https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php#L97
https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Translation/Translator.php
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Translation/Translator.php#L174
2: Si vous parlez gedmo extensions doctrine, ou Knplabs DoctrineBehaviors, non, il n'existe aucun moyen il est en conflit avec symfonys du traducteur. Ce sont des 2 pièces indépendant.
OriginalL'auteur Florian
Juste face à la même question et il fixe par
$this->get('translator')->setLocale('fr');
dans l'action du contrôleur. Je l'ai corrigé en ajoutant{_locale}
dans la route de chemin.OriginalL'auteur SiteTester