Yii::t plural не работает

Уже исправленные репорты или принятые предложения
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Yii::t plural не работает

Сообщение johnluxor »

Добрый день.

Столкнулся с проблемой:

вот код:

Код: Выделить всё

<h1 class="title title-main">
        Найдено <?= $pageCount ?> <?= Yii::t('search', '{n, plural, =0{материалов} =1{материал} =2{материала} other{материалов}}', ['n' => $pageCount]) ?></h1>
Выводит на сайте:

Код: Выделить всё

Найдено 0 {n, plural, =0{материалов} =1{материал} =2{материала} other{материалов}}

PHP Version 5.4.32

INTL
version PECL-3.0.0
ICU version 4.2.1

intl.default_locale no value no value
intl.error_level 0 0
intl.use_exceptions 0 0
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii::t plural не работает

Сообщение samdark »

1. Сообщение переведено?
2. sourceLanguage и language какие?
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Source ru и пробовал ru_Ru
Language ru и пробовал ru_Ru

Пока на сайте один язык где Language и Source Language совпадают
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii::t plural не работает

Сообщение samdark »

Если они совпадают, перевод не выполняется :)

1. http://rmcreative.ru/blog/post/yiit-i-i ... obscheyniy
2. Если всё-таки хочется русского в исходных сообщениях: http://www.yiiframework.com/doc-2.0/yii ... ion-detail
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Так дело в том, что на локальном сервере все отлично работает и выводит нормально.

В таком случае если один язык, есть ли какие-то инструменты для реализации plural?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii::t plural не работает

Сообщение samdark »

Если языков точно точно не будет два и более, то см. пункт 2.
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Добрый день. Попробовал включить forceTranslation, но никакого эффекта это не дало. Так и выводит

Код: Выделить всё

Найдено 1 {n, plural, =0{материалов} =1{материал} =2{материала} other{материалов}}
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii::t plural не работает

Сообщение samdark »

Сможете собрать микро-приложение для тестов и закинуть куда-нибудь в zip?
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Да его даже и собирать не нужно.

Я развернут Yii-app-basic

В конфиг добавил

Код: Выделить всё

'i18n' => [
                'translations' => [
                    '*' => [
                        'class' => 'yii\i18n\PhpMessageSource',
                        'forceTranslation' => true
                    ],
                ],
            ],
и в view/site/index вывел строку

Код: Выделить всё

<?=Yii::t('search', '{n, plural, =0{материалов} =1{материал} =2{материала} other{материалов}}', ['n' => 1]);?>
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Yii::t plural не работает

Сообщение astronin »

а у меня такой вопрос, а приложение вы стартанули в web/index.php файле?

Код: Выделить всё

$application = new yii\web\Application($config);
$application->run();
и Yii::$app случайно ни где не херите?
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Я же говорю запустил basic ничего вообще не менял. Естественно из web/index.php
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Yii::t plural не работает

Сообщение astronin »

ну покажите тут, плиз, весь код из файла web/index.php
(я правда не знаю, где в basic index.php лежит, в папке web или прям в корне...)
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Вот index.php, стандартный

Код: Выделить всё

<?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();
 
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Yii::t plural не работает

Сообщение astronin »

в этом файле
vendor\yiisoft\yii2\BaseYii.php
сразу в начале функции t() сделайте
var_dump(static::$app);
посмотрим, что выдаст
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Выдал огромную простыню. Слишком большая, сюда даже не помещается
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Yii::t plural не работает

Сообщение astronin »

а если тут проверить:
vendor\yiisoft\yii2\i18n\I18N.php
метод format()
в это условие заходит?

Код: Выделить всё

if (preg_match('~{\s*[\d\w]+\s*,~u', $message)) { 
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

Заходит
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Yii::t plural не работает

Сообщение astronin »

ну поглядите тогда в логи, включив в конфиге логирование warning, что такое:

Formatting message for language... failed with error... The message being formatted was...

посмотрим, что там написано и какая вылетает ошибка
johnluxor
Сообщения: 82
Зарегистрирован: 2010.09.10, 19:39

Re: Yii::t plural не работает

Сообщение johnluxor »

В логе только

The message file for category 'search' does not exist:

Но его и не будет, так как язык один всего
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii::t plural не работает

Сообщение samdark »

Воот. Значит у вас source и target разные и force не применился.
Ответить