PrestaShop class 覆盖中新翻译的正确域是什么?
What is the correct domain for a new translation in a PrestaShop class override?
你能帮我在 $this->trans()
函数中使用“domain”参数吗?
在我自己的模块中,我有一个 CartRule class 的覆盖。我的覆盖工作正常 - Presta 和代码功能将其从我的模块复制到覆盖文件夹。
我里面有一个新的翻译字符串,我不知道给“domain”赋什么值。
我的代码:
$this->trans('Promotion codes cannot be combined', array(), 'Shop.Notifications.Error'); \ ID, parameters, domain
我试过的域名:
"Shop.Notifications.Error"(与其他字符串相同):然后在 BO > 主题翻译 > 我的主题(或 classic 主题)> 法语(存储语言)
"Modules.[Mymodule].Admin"(对于 Mymodule,我使用了大写的简称):然后查看 BO > 模块翻译 > 我的模块 > 法语(商店语言)。这种方法遵循 PrestaShop rules.
每次都找不到我的字符串。
你有什么想法吗?
N.B。 SO 上的其他答案使用 $this->l
,这在这种情况下不可用。
我也试过 $this->module->trans()
但“模块”在这种情况下不可用。
首先,在您的模块中,我们必须指定哪些字符串是可翻译的。
Prestashop(版本 1.7.5 及更早版本)的翻译:
TPL:
{l s='My text to translate' mod='modulename'}
PHP:
$this->module->l('My text to translate');
为 Prestashop(版本 1.7.6 和更新版本)翻译:
TPL:
{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');
Ash 你可以看到我们需要声明它是来自 Module 的可翻译字符串,使用 Modulename(大写),然后定义可翻译字符串的位置 Admin, shop
重要提示
使用 prestashop 新的翻译系统需要在你的模块中声明。所以在你的主 php 文件中,mymodule.php 添加以下代码:
public function isUsingNewTranslationSystem()
{
return true;
}
PrestaShop 开发人员文档(翻译)
有关 Classic 模块翻译系统(1.7.5 和 <)的信息可以是 found here。
有关新模块翻译系统(1.7.6 和 >)的信息可以是 found here。
正在翻译您的模块:
定义所有可翻译字符串后,我们将模块安装到 Prestashop web-shop。
当我们的模块安装完成后,我们必须去:
- 后台
- 国际 -> 翻译
- 修改翻译
- 翻译类型 -> 安装的模块翻译
- Select 你的模块 -> modulename
- Select您的语言 -> 您要翻译的语言
此进度将在您的模块中生成一个翻译文件 (.php)。
翻译文件位置:modulename/translations/isocode.php
值得一提的是,如果您有一个已翻译的 PHP 模块文件(示例 en.php),您可以翻译相同的文件,en.php,多次归档并将其保存在不同的 isocode 下,例如 nl.php.
你能帮我在 $this->trans()
函数中使用“domain”参数吗?
在我自己的模块中,我有一个 CartRule class 的覆盖。我的覆盖工作正常 - Presta 和代码功能将其从我的模块复制到覆盖文件夹。
我里面有一个新的翻译字符串,我不知道给“domain”赋什么值。
我的代码:
$this->trans('Promotion codes cannot be combined', array(), 'Shop.Notifications.Error'); \ ID, parameters, domain
我试过的域名:
"Shop.Notifications.Error"(与其他字符串相同):然后在 BO > 主题翻译 > 我的主题(或 classic 主题)> 法语(存储语言)
"Modules.[Mymodule].Admin"(对于 Mymodule,我使用了大写的简称):然后查看 BO > 模块翻译 > 我的模块 > 法语(商店语言)。这种方法遵循 PrestaShop rules.
每次都找不到我的字符串。
你有什么想法吗?
N.B。 SO 上的其他答案使用 $this->l
,这在这种情况下不可用。
我也试过 $this->module->trans()
但“模块”在这种情况下不可用。
首先,在您的模块中,我们必须指定哪些字符串是可翻译的。
Prestashop(版本 1.7.5 及更早版本)的翻译:
TPL:
{l s='My text to translate' mod='modulename'}
PHP:
$this->module->l('My text to translate');
为 Prestashop(版本 1.7.6 和更新版本)翻译:
TPL:
{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');
Ash 你可以看到我们需要声明它是来自 Module 的可翻译字符串,使用 Modulename(大写),然后定义可翻译字符串的位置 Admin, shop
重要提示 使用 prestashop 新的翻译系统需要在你的模块中声明。所以在你的主 php 文件中,mymodule.php 添加以下代码:
public function isUsingNewTranslationSystem()
{
return true;
}
PrestaShop 开发人员文档(翻译)
有关 Classic 模块翻译系统(1.7.5 和 <)的信息可以是 found here。
有关新模块翻译系统(1.7.6 和 >)的信息可以是 found here。
正在翻译您的模块:
定义所有可翻译字符串后,我们将模块安装到 Prestashop web-shop。
当我们的模块安装完成后,我们必须去:
- 后台
- 国际 -> 翻译
- 修改翻译
- 翻译类型 -> 安装的模块翻译
- Select 你的模块 -> modulename
- Select您的语言 -> 您要翻译的语言
此进度将在您的模块中生成一个翻译文件 (.php)。
翻译文件位置:modulename/translations/isocode.php
值得一提的是,如果您有一个已翻译的 PHP 模块文件(示例 en.php),您可以翻译相同的文件,en.php,多次归档并将其保存在不同的 isocode 下,例如 nl.php.