我正在尝试使用trans_choice()
将字符串格式化为“注释”或“注释”,具体取决于它们的数量。它应该是相当简单的,就像这样。
在我看来:
{{ trans_choice('posts.num comments', $post->comments->count()) }}
在帖子本地化文件中:
return [
'num comments' => 'comment|comments',
];
但是,每一个都只返回“评论”。如果我进入修补程序:
>>> trans_choice('posts.num comments', 1);
=> "comment"
>>> trans_choice('posts.num comments', 2);
=> "comment"
>>> trans_choice('posts.num comments', 4);
=> "comment"
我确定我错过了一些明显的东西,但它看起来好像我完全按照文档。
编辑:问题似乎在Symfony\Component\Translation\MessageSelector
的某处,但我还没有找出原因。
答案 0 :(得分:9)
答案 1 :(得分:1)
如果您是巴西人,那可能就是您的答案!
我遇到了同样的问题,发现这是因为我的语言环境选项(和lang文件夹)。 而不是' br'我们必须使用' xbr'为了Symphony在PluralizationRules(vendor / symphony / translation / PluralizationRules)中找到它。
在该文件中有一个包含所有可用语言的数组,因此可以查看它。
P.S。我使用的是Laravel 5.3
答案 2 :(得分:1)
我知道这篇文章很旧,但是我遇到了这个问题,因此,如果Joel's解决方案不起作用,希望我的解决方案对某人有所帮助。
我正在使用Laravel 7.x,并且在一个项目中使用本地化来解决美国英语与英语之间的差异(即中心与中心)。
我将本地化文件夹设置为默认文件夹 en ,将 en_ca 作为加拿大英语文件夹,其中 en 后备语言。
使用use Laravel\Fortify\Actions\EnableTwoFactorAuthentication;
class UserObserver
{
public function created(User $user, EnableTwoFactorAuthentication $enable)
{
$enable($user);
...
时,我发现必须专门设置翻译字符串中的计数,否则当在非默认语言环境中查看页面时,翻译引擎只会吐出单数。
更改完成后,无论设置了哪种语言环境,trans_choice()
都可以正常工作。
例如,无论我在哪里:
trans_choice()
我将其更改为:
'general.posts' => 'Posts|Posts',
此后一切正常。