2017-07-04 2 views

Antwort

0

Pluralisierung ist ein sehr komplexes Thema und Symfony umfasst es im Rahmen, wenn die Translation Component:

Nachricht Pluralisierung ein hartes Thema ist als die Regeln sehr komplex sein können.

Sie würden also im Grunde benötigen Übersetzungen für das System aktivieren und die benötigten Strings mit der transChoice() Methode des Übersetzers Dienst oder dem ‚transchoice‘ Tag/Filter in Ihrem Zweig Vorlage übersetzen.

Um dies zu umgehen, verwenden Sie die transChoice() -Methode oder den transchoice Tag/Filter in Ihrer Vorlage.

den Übersetzer Service mit

// the %count% placeholder is assigned to the second argument... 
$translator->transChoice(
    'There is one apple|There are %count% apples', 
    10 
); 


// ...but you can define more placeholders if needed 
$translator->transChoice(
    'Hurry up %name%! There is one apple left.|There are %count% apples left.', 
    10, 
    // no need to include %count% here; Symfony does that for you 
    array('%name%' => $user->getName()) 
); 

Zweig-Tags

{% trans %}Hello %name%{% endtrans %} 

{% transchoice count %} 
    {0} There are no apples|{1} There is one apple|]1,Inf[ There are %count% apples 
{% endtranschoice %} 

UPDATE

Wenn Sie nicht wissen, die Zeichenfolge, die Sie vorher kann die internen Inflector Component, verwenden aber den Haftungsausschluss und die Tatsache bewusst sein, dass dies nur für Strings in Englisch arbeiten würde:

Diese Komponente zur Zeit als internen markiert. Benutze es nicht in deinem eigenen Code. Brechen von Änderungen kann in der nächsten Nebenversion von Symfony eingeführt werden, oder die Komponente selbst wird möglicherweise vollständig entfernt.

Eine Alternative wäre, Ihre eigene Beugungsklasse, z. something like this und erstellen Sie einen Dienst daraus.

+0

Ich kenne die Saite vorher nicht, also kann ich das nicht benutzen. –

+0

Sie können versuchen, die [Inflector Komponente] (https://github.com/symfony/inflector), obwohl es für den internen Gebrauch gekennzeichnet ist nur ;-) – lordrhodos

+0

fand ich diese Lösung gestern Abend. Inflector-Komponente ist nur für den internen Gebrauch markiert, wie Sie gesagt haben. Es gibt jedoch einige populäre Pakete wie FOSRestBundle, die es verwenden. Ich habe auch Doctrine's Inflector gesehen. Dieser scheint mir etwas fortgeschritten zu sein. Vielen Dank für Ihre Antwort. –