PrestaShop类覆盖中的新转换的正确域是什么? [英] What is the correct domain for a new translation in a PrestaShop class override?
问题描述
您能帮助我使用$this->trans()
函数中的";domain";参数吗?
在我自己的模块中,我有一个CartRule类的覆盖。我的覆盖工作正常-它被Presta从我的模块复制到覆盖文件夹,并且代码起作用。
我的内部有一个新的翻译字符串,但我不知道要为";域";赋予什么值。
我的代码:
$this->trans('Promotion codes cannot be combined', array(), 'Shop.Notifications.Error'); \ ID, parameters, domain
对于我已尝试的域:
Shop.Notifications.Error&Quot;(与其他字符串相同):然后查看BO&>主题翻译&>我的主题(或经典主题)&>法语(商店语言)
";模块.[我的模块].Admin";(对于我的模块,我使用了一个大写的简称):然后在BO&>模块翻译&>我的模块&>法语(商店语言)中查找。此方法遵循PrestaShop rules。
每次我都没有找到我的字符串。
您有什么想法吗?
注:有关SO的其他答案使用$this->l
,这在此上下文中不可用。
我也尝试过$this->module->trans()
,但";模块";在此上下文中不可用。
推荐答案
首先,我们必须在您的模块中指定哪些字符串是可翻译的。
为Prestashop(1.7.5版及更早版本)翻译:
第三方物流:
{l s='My text to translate' mod='modulename'}
PHP:
$this->module->l('My text to translate');
为Prestashop(1.7.6版及更高版本)翻译:
第三方物流:
{l s='My text to translate' d='Modules.Modulename.Somefile'}
小枝:
{{ 'My text to translate'|trans({}, 'Modules.Modulename.Admin') }}
PHP:
// For back-office translations we use "Admin"
$this->trans('My text to translate', array(), 'Modules.Modulename.Admin');
// For front-office translations we use "Shop"
$this->trans('My text to translate', array(), 'Modules.Modulename.Shop');
您可以看到,我们需要将其声明为模块中的可翻译字符串,模块名称(大写),然后定义可翻译字符串的位置管理员,商店
重要说明 使用prestashop,需要在您的模块中声明新的翻译系统。因此,在您的主php文件中,mymode.php添加以下代码:
public function isUsingNewTranslationSystem()
{
return true;
}
PrestaShop开发人员文档(译文)
有关经典模块翻译系统(1.7.5和<;)的信息可以found here。
有关新模块翻译系统(1.7.6和>;)的信息可以found here。
翻译您的模块:
定义所有可翻译的字符串后,我们将我们的模块安装到Prestashop网上商店。
安装模块后,我们必须转到:
- 后台
- 国际->;翻译
- 修改翻译
- 翻译类型->;已安装的模块翻译
- 选择模块->;模块名称
- 选择您的语言-&>您要翻译的语言
此进度将在您的模块中生成转换文件(.php)。
转换文件位置:模块名/Translations/iscode.php
要知道的是,当您的模块有一个已翻译的PHP文件(示例en.php)时,您可以多次翻译相同的en.php文件,并将其保存在不同的等代码下,例如nl.php。
这篇关于PrestaShop类覆盖中的新转换的正确域是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!