首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CakePHP 3.6.10翻译不显示'defaultLocale‘值的行为

CakePHP 3.6.10翻译不显示'defaultLocale‘值的行为
EN

Stack Overflow用户
提问于 2018-08-24 16:36:40
回答 1查看 123关注 0票数 0

我已经添加了翻译行为,一切都很好,我可以切换到任何语言等等。唯一不起作用的是当我切换到与在app.php中设置为defaultLocale的语言相同的语言时:

代码语言:javascript
复制
'App' => [
    ...
    'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
    ...
],

我不明白翻译后的字段。

当我删除'defaultLocale‘设置时,它适用于所有语言。

有人能告诉我这里出了什么问题吗?

@ndm谢谢,这对我很有帮助。然而,现在我遇到了另一个问题。这就是如何制作多语言输入表单?所以我有4种语言(地区):en_US,nl_BE,fr_BE,de_BE和ru_RU。defaultLocale为en_US。因此,为了添加一个新记录,我这样做了:

代码语言:javascript
复制
// for the defaultLocale
echo $this->Form->control('title');
// for all other languages I iterate over every language except of the defaultLocale
foreach ($supported_locales as $key => $val):
    if ($key !== $default_locale):
        echo $this->Form->control('_translations.' . $key . '.title');
    endif;
endforeach;

这可以很好地工作。尽管我不确定这是不是合适的蛋糕方式?

但是在视图中(使用禁用的表单)并编辑defaultLocale字段

代码语言:javascript
复制
echo $this->Form->control('title');

显示此时选定区域设置的翻译值,而不是保存在源表中的defaultLocale。F.e.当你将语言切换到俄语时,你会看到:

英语:Русскийтитул荷兰语:荷兰文标题法语:德语:德语标题俄语:Русскийтитул

因此,您缺少缺省语言环境的值。

我是不是忽略了什么,有没有更简单的方法让它“开箱即用”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 17:08:05

根据设计,翻译行为期望默认区域设置的内容出现在源表中,而不是翻译表中。这类似于使用翻译函数和语言文件,function calls (源表)包含默认区域设置消息,而language files (转换表)包含本地化消息。

引用自文档:

TranslateBehavior背后的理念是,您有一个表示默认语言的实体,以及可以覆盖此类实体中某些字段的多个翻译。..。

因此,这种行为的工作方式是为了能够保留未覆盖的字段,例如,如果您的源表包含titlecontent字段,并且content字段在fr_FR区域设置中只有一个转换,那么在查询fr_FR区域设置的记录时,title将包含未转换的(默认区域设置)内容。

另请参阅

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52000517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档