Как я могу манипулировать методами перевода cakephp 3, чтобы они не учитывали регистр?

Это часть моего файла src/Locale/en_US/default.po.

msgid "Acg_id"
msgstr "access control group identifier"

msgid "acg_id"
msgstr "access control group identifier"

msgid "Acg_Id"
msgstr "access control group identifier"

мой файл default.po слишком длинный. И я думаю, что так писать нельзя.

msgid "Acg_id"
msgid "acg_id"
msgid "Acg_Id"
msgstr "access control group identifier"

Как я могу реализовать функцию ниже в ядре cakephp

function __($token){
    $translation = translation(strtolower($token));//translation returns translation of token if exists else returns null
    return $translation ? $translation : $token;
}

Тогда мой файл default.po станет слишком коротким :) вот так

msgid "acg_id"
msgstr "access control group identifier"

person anghazi ghermezi    schedule 28.03.2015    source источник


Ответы (1)


Хотя я считаю, что переводы без учета регистра — это плохая практика (почему бы просто не использовать правильные идентификаторы сообщений?), вы можете легко предварительно объявить любой из функции сокращенного перевода в ваших приложениях config/bootstrap.php, до включая автозагрузчик.

// [...]

use Cake\I18n\I18n;

// https://github.com/cakephp/cakephp/blob/3.0.0/src/I18n/functions.php#L26
function __($token, $args = null)
{
    if (!$token) {
        return null;
    }

    $arguments = func_num_args() === 2 ? (array)$args : array_slice(func_get_args(), 1);
    // side note: you may want to use mb_strtolower instead
    return I18n::translator()->translate(strtolower($token), $arguments);
}


// Use composer to load the autoloader.
require ROOT . DS . 'vendor' . DS . 'autoload.php';

// [...]
person ndm    schedule 28.03.2015
comment
Спасибо @ndm. Как я могу реализовать правильные идентификаторы сообщений? Есть ли хороший учебник? - person anghazi ghermezi; 29.03.2015
comment
@anghazighermezi Что я правильно понимаю, так это просто передать их в правильном регистре, это не должно быть слишком сложно, когда они все в нижнем регистре. - person ndm; 29.03.2015