2012-06-05 44 views
2

我翻譯下面的鍵activity.fr.ymlSymfony2的翻譯與transchoice

user.list.link: '{1}et %count% autre|]1,Inf[voir les %count% autres' 

tranchoice

<a href="{{ moreLink }}" >{% transchoice count from "activity" %}user.list.link{% endtranschoice %}</a> 

,我得到以下錯誤

An exception has been thrown during the rendering of a template ("Unable to choose a translation.")

我覺得翻譯被發現否則我不會得到關於無法選擇翻譯但關鍵碼本身的錯誤。

同樣的yaml甚至其他tranchoice所有其他鍵都翻譯得很好。

我跟着doc並嘗試添加with {'%count%': count}沒有成功。

有人對這裏有什麼不瞭解嗎? 在此先感謝

回答

5

語法很好,但值傳遞爲%count%不能等於0,因爲在複數形式的字符串中沒有{0}定義。 所以我進行了測試以確保值大於等於0並修改了字符串,並修復了它。

user.list.link: '{0}|{1}et %count% autre|]1,Inf[voir les %count% autres' 
1

您需要傳遞用於確定將選擇的翻譯的參數。

請看下面的例子中in the doc

{% transchoice count with {'%name%': 'Fabien'} from "app" %} 
    {0} There is no apples|{1} There is one apple|]1,Inf] There are %count% apples 
{% endtranschoice %} 

適合您的例子:

{% transchoice count with {'%count%': count} from "activity" %} 
    user.list.link 
{% endtranschoice %} 

如果它不工作,也許你的翻譯是找不到的。所以,symfony使用你的密鑰作爲回退,並不能確定一個有效的選擇,因爲你的密鑰不支持這一點。

要進行檢查,儘量使用密鑰這樣的:

user.list.link | user.list.link.many 

不要忘記使用您的活動目錄中的相同的密鑰。

+0

我認爲翻譯已被發現,否則我不會得到一個關於'無法選擇翻譯',但關鍵本身的錯誤。 – svassr

+0

加入您的建議 '{%%}%{count%%:count} from%{user%} user.list.link.link | user.list.many {%endtranschoice%}' 我得到' user.list.link.many'代替模板中的字符串 – svassr

+0

如果沒有找到翻譯,則它是使用的密鑰。用這樣的密鑰選擇翻譯是不可能的。也許錯誤是由於你的翻譯和我的例子之間的空白。試試'user.list.link | user.list.link.many'。 (當然,在您的目錄中使用相同的內容並清除緩存。) –