Как при добавлении опций создавать переменные для всех языков
21.04.2024 08:22:35 pm
Тут я уже писал: Тема: Журнал пользователя движка phpFOX 3 (Сообщение отдельно: 6388), что при добавлении какой либо опции, описание к ней добавляется только на английском языке. В том же посте есть пример решения. Тут покажу, что было изначально, и как я это исправил.
Для примера возьмем код из файла: "module/admincp/include/service/module/process.class.php":
И меняем его на:
Когда я думал, как исправить проблему описанную в посте: Тема: Журнал пользователя движка phpFOX 3 (Сообщение отдельно: 6388), я думал, что это единственное место, где мне придется править, чтобы фразы были для всех языков. Оказалось таких мест хватает. Тогда я подумал - зачем везде править, если можно изменить всего в одном месте, и забыть об этом навсегда. Это место находится в файле: "module/language/include/service/phrase/process.class.php", под кодом (Метод
Я добавил код:
Теперь фразы будут добавляться для всех языков, везде.
Есть один недостаток: Фраза будет для всех языков на том языке, на котором Вы ее написали. Но это решается исправлением в Админ разделе > Менеджер фраз.
Для примера возьмем код из файла: "module/admincp/include/service/module/process.class.php":
$sPhrase = phpfox::getService('language.phrase.process')->add(array(
'var_name' => 'admin_menu_' . strtolower($aMenu['phrase']),
'product_id' => $iProductId,
'module' => $sName . '|' . $sName,
'text' => array(
'en' => $aMenu['phrase']
)
)
);
И меняем его на:
$langIDs = [];
$langs = phpfox::getService('language')->get();
foreach ($langs as $lang)
{
$langIDs[$lang['language_id']] = $aMenu['phrase'];
}
$sPhrase = phpfox::getService('language.phrase.process')->add(array(
'var_name' => 'admin_menu_' . strtolower($aMenu['phrase']),
'product_id' => $iProductId,
'module' => $sName . '|' . $sName,
'text' => $langIDs
)
);
Когда я думал, как исправить проблему описанную в посте: Тема: Журнал пользователя движка phpFOX 3 (Сообщение отдельно: 6388), я думал, что это единственное место, где мне придется править, чтобы фразы были для всех языков. Оказалось таких мест хватает. Тогда я подумал - зачем везде править, если можно изменить всего в одном месте, и забыть об этом навсегда. Это место находится в файле: "module/language/include/service/phrase/process.class.php", под кодом (Метод
add
): if (isset($aVals['module']))
{
$aParts = explode('|', $aVals['module']);
}
Я добавил код:
$langs = phpfox::getService('language')->get();
if (!is_array($aVals['text']) | count($aVals['text']) != count($langs))
{
if (is_array($aVals['text']))
{
$aVals['text'] = end($aVals['text']);
}
$textLang = [];
foreach ($langs as $lang)
{
$textLang[$lang['language_id']] = $aVals['text'];
}
$aVals['text'] = $textLang;
}
Теперь фразы будут добавляться для всех языков, везде.
Есть один недостаток: Фраза будет для всех языков на том языке, на котором Вы ее написали. Но это решается исправлением в Админ разделе > Менеджер фраз.
- Жалоба