当前位置: 首页 > 知识库问答 >
问题:

Cakephpi18n翻译格式化程序U_ILLEGAL_ARGUMENT_ERROR

龚弘业
2023-03-14

在CakePHP2中,我使用了这个回购协议。po翻译。但它似乎没有针对CakePHP3进行更新。因此,我运行了i18nshell,并创建了cake。pot文件。然后我做了一些翻译并添加了蛋糕。po将文件放入文件夹src\Locale\

当msgstr部分为空时,timeAgoInWords显示英文单词,如果找到翻译,cakephp显示翻译版本。

但这不适用于阿拉伯语。其他语言也很好用。

在cakephp 3中,制作timeAgoInWords时如下所示:

$string = $this->Time->timeAgoInWords(1338659672, array('end' => '+10 year'));

我得到这个错误:错误:[Aura\Intl\Exc0019\CannotInstantiateFor和新]msgfmt_create:消息格式化程序创建失败:U_ILLEGAL_ARGUMENT_ERROR

错误堆栈:

Error: [Aura\Intl\Exception\CannotInstantiateFormatter] msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR
Request URL: /ar/tools/
Stack Trace:
#0 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/I18n/Formatter/IcuFormatter.php(71): Cake\I18n\Formatter\IcuFormatter->_formatMessage('ar', NULL, Array)
#1 /var/www/vhosts/example.com/httpdocs/app/vendor/aura/intl/src/Aura/Intl/Translator.php(142): Cake\I18n\Formatter\IcuFormatter->format('ar', Array, Array)
#2 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/I18n/functions.php(110): Aura\Intl\Translator->translate('{0} years', Array)
#3 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/I18n/Time.php(384): __dn('cake', '{0} year', '{0} years', 3, 3)
#4 /var/www/vhosts/example.com/httpdocs/app/src/Template/Tools/index.ctp(62): Cake\I18n\Time->timeAgoInWords(Array)
#5 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/View/View.php(833): include('/var/www/vhosts...')
#6 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/View/View.php(793): Cake\View\View->_evaluate('/var/www/vhosts...', Array)
#7 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/View/View.php(464): Cake\View\View->_render('/var/www/vhosts...')
#8 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/Controller/Controller.php(582): Cake\View\View->render(NULL, NULL)
#9 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(120): Cake\Controller\Controller->render()
#10 /var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(87): Cake\Routing\Dispatcher->_invoke(Object(App\Controller\ToolsController))
#11 /var/www/vhosts/example.com/httpdocs/app/webroot/index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#12 {main}

Notice: Notice (8): Undefined offset: 3 in [/var/www/vhosts/example.com/httpdocs/app/vendor/cakephp/cakephp/src/I18n/Formatter/IcuFormatter.php, line 68]
Trace:
Cake\Error\BaseErrorHandler::handleError() - CORE/src/Error/BaseErrorHandler.php, line 138
Cake\I18n\Formatter\IcuFormatter::format() - CORE/src/I18n/Formatter/IcuFormatter.php, line 68
Aura\Intl\Translator::translate() - ROOT/vendor/aura/intl/src/Aura/Intl/Translator.php, line 142
__dn - CORE/src/I18n/functions.php, line 110
Cake\I18n\Time::timeAgoInWords() - CORE/src/I18n/Time.php, line 384
include - APP/Template/Tools/index.ctp, line 62
Cake\View\View::_evaluate() - CORE/src/View/View.php, line 833
Cake\View\View::_render() - CORE/src/View/View.php, line 793
Cake\View\View::render() - CORE/src/View/View.php, line 464
Cake\Controller\Controller::render() - CORE/src/Controller/Controller.php, line 582
Cake\Routing\Dispatcher::_invoke() - CORE/src/Routing/Dispatcher.php, line 120
Cake\Routing\Dispatcher::dispatch() - CORE/src/Routing/Dispatcher.php, line 87
[main] - ROOT/webroot/index.php, line 37

编辑:对于俄语,我得到了非常类似的错误。当我删除src\Locale\ru\cake时。po文件,我再次得到非法参数错误。请注意,俄语有3种复数形式,而英语和其他语言有2种复数形式。


共有1个答案

牛华皓
2023-03-14

我在俄罗斯蛋糕上也犯了同样的错误。阿宝是我翻译的。当我从https://github.com/cakephp/localized/blob/master/src/Locale/ru/cake.po它很好用。

 类似资料:
  • 问题内容: 使用AngularJS和angular-translate,我试图在翻译的文本中插入一个日期作为参数。 翻译包记录了基本任务: 在本地化的json文件中: 这给了我: (英语),这是日期:2015-04-29T00:00:00。 (丹麦文)Dette 2015-04-29T00:00:00 er datoen。 问题: 我想格式化日期以匹配语言(或文化),但现在的语言已经足够好了。 理

  • 翻译 & 本地化 Docusaurus允许使用 Crowdin 轻松实现翻译功能。 以英文撰写的文档文件将上传到 Crowdin,由社区内的用户进行翻译。 使用英文字符串编写的顶层页面可以通过在 <translate> 标签中包装要翻译的任何字符串来翻译。 其他标题和标签也将被找到并正确翻译。 Docusaurus 翻译配置 要用 Docusaurus 生成用于翻译的示例文件,请使用命令行参数 t

  • 我想本地化我的应用程序(按照苹果公司的建议)到几种语言,如英语,西班牙语,法语等。 嗯,我不会说或听不懂所有这些语言,至少我的翻译在母语人士看来很尴尬。 (在线翻译的结果是第一个开始,但当然还不够。)那么,有没有人知道一个服务/平台,在那里我可以从以英语为母语的人那里相互获得翻译。 例如: 我说德国母语,需要我的APP/文本/网站翻译成英语。 另一个家伙可能会说英语母语,需要他的应用程序/文本/网

  • 我在输出用户首选语言的日期时遇到了问题。我有一个中间件,在内核中注册,它根据该用户的首选区域设置呈现应用程序。 这不会改变碳日期的语言(应用程序语言应该改变)。当我通过在刀片视图上显示它们来检查设置时,应用程序正在正确设置所选的碳区域设置。 但是我只能显示在选定的语言中的日期,如果我使用函数为特定的实例,我想我可能有超过100个实例,对于一些,我使用访问器来格式化我的模型中的输出。这是正常行为吗?

  • 有人可以分享他们的eclipse格式化程序设置文件吗?或者向我指出这样一个文件,它将阻止我的eclipse执行以下操作: 所以我只想把looooooooong代码字符串移到下一行(那些不适合eclipse窗口的字符串),但eclipse几乎对所有字符串都这么做。 提前谢谢!

  • 我正在玩我的eclipse格式化程序。 我目前被卡住,无法格式化空的新行。 我知道我可以使用CTRL+SHIFT+F。 但是我希望它在文件保存时自动发生。 下面是另一个例子 此外,我想选择是否应该在ex one结构声明后或在花括号后自动缩进为无空行。