2017-09-04 3 views
0

j'obtenir des traductions si:Obtenez des traductions Symfony2

$translated = $this->container->get('translator') 
     ->getCatalogue($language) 
     ->all(); 

Mais j'ai donc toutes les traductions.

Par exemple, il y a un fichier avec le contenu suivant:

symfony: 
    is: 
     great: Symfony is great 
     amazing: Symfony is amazing 
    has: 
     bundles: Symfony has bundles 
user: 
    login: Login 

Comment puis-je obtenir seulement certains d'entre eux (seul utilisateur ou seulement symfony)? Merci d'avance.

MISE À JOUR: l'a fait:

$messages = []; 
foreach ($translated['messages'] as $key => $message) { 
    if (stripos($key, 'frontend')) { 
     $messages[$key] = $message; 
    } 
} 

Mais est-il pas un tel construit fonctionnel?

+0

de quels critères voulez-vous que certaines traductions? – Mcsky

Répondre

1

From the doc:

$translated = $this->get('translator')->trans('Symfony is great'); 

EDIT:

En regardant votre question mise à jour, si vous avez un oeil à MessageCatalogueInterface, je pense que vous pourriez faire quelque chose comme Catalogue-> tous ('votredomaine'), si vous organisez vos transcriptions en domaines.

Jetez un oeil ici:

/** 
* Gets the messages within a given domain. 
* 
* If $domain is null, it returns all messages. 
* 
* @param string $domain The domain name 
* 
* @return array An array of messages 
*/ 
public function all($domain = null); 
+0

Pas ce dont j'ai besoin –

+0

Pas après avoir mis à jour votre question non. Comme ils vous ont répondu maintenant, ce que vous voulez faire n'est pas possible car les traductions ne sont pas vraiment «imbriquées». – Strnm

+0

Merci pour votre réponse, j'ai ajouté ma décision à la question, n'y a-t-il pas quelque chose de similaire? –

0

Qu'est-ce que vous voulez faire est pas possible que lors de la lecture du fichier de traduction Symfony normalise les touches qui sont imbriquées dans votre fichier YAML. Ainsi, le catalogue ne contiendra que les clés de message symfony.is.great, symfony.is.amazing, symfony.has.bundles et user.login.

La possibilité d'imbriquer des clés est uniquement du sucre syntaxique fourni par la classe YamlFileLoader du composant Translation.

+0

Il s'avère que je ne peux obtenir que toutes les traductions et que je peux non seulement me séparer? –

+0

Oui, car il n'y a rien comme une partie de la traduction dans le catalogue de messages généré. – xabbuh

0

Si vous souhaitez recevoir certaines traductions, les transférer vers un autre fichier avec le bon nom de domaine (dans mon exemple ce sera le frontend):

enter image description here

Et maintenant, je peux obtenir des traductions comme suit :

$messages = $this->container->get('translator') 
    ->getCatalogue($language) 
    ->all('frontend'); 

Merci pour le conseil strnm

+0

Heureux de l'entendre fonctionner! Envisager d'accepter ma réponse comme valide si cela a fonctionné pour votre problème:) – Strnm