Module 在PrestaShop类重写中,新翻译的正确域是什么?

Module 在PrestaShop类重写中,新翻译的正确域是什么?,module,overriding,prestashop,translation,Module,Overriding,Prestashop,Translation,您能帮助我使用$this->trans()函数中的“domain”参数吗 在我自己的模块中,我有一个CartRule类的重写。我的覆盖工作正常-它由Presta和代码函数从我的模块复制到覆盖文件夹 我有一个新的翻译字符串在里面,我不知道给“域”什么值 我的代码: $this->trans('Promotion codes cannot be combined', array(), 'Shop.Notifications.Error'); \\ ID, parameters, domain

您能帮助我使用
$this->trans()
函数中的“domain”参数吗

在我自己的模块中,我有一个CartRule类的重写。我的覆盖工作正常-它由Presta和代码函数从我的模块复制到覆盖文件夹

我有一个新的翻译字符串在里面,我不知道给“域”什么值

我的代码:

$this->trans('Promotion codes cannot be combined', array(), 'Shop.Notifications.Error'); \\ ID, parameters, domain
对于我尝试过的域:

  • “Shop.Notifications.Error”(与其他字符串相同):然后查看BO>主题翻译>我的主题(或经典主题)>法语(商店语言)

  • “Modules.[Mymodule].Admin”(对于Mymodule,我使用了一个大写的短名称):然后查看BO>模块翻译>我的模块>法语(存储语言)。这种方法遵循以下原则

  • 每次我都没有找到我的字符串

    你有什么想法吗

    注意:其他答案请使用
    $this->l
    ,这在本文中不可用。
    我也尝试了
    $this->module->trans()
    ,但是“module”在这个上下文中不可用。

    首先在您的模块中,我们必须指定哪些字符串是可翻译的

    为Prestashop(版本1.7.5及更高版本)翻译:

    第三方物流:

    PHP:

    为Prestashop(1.7.6版及更新版本)翻译:

    第三方物流:

    细枝:

    PHP:

    您可以看到,我们需要使用模块名称(大写)声明其为模块中的可翻译字符串,然后定义可翻译字符串的位置

    重要提示 使用prestashop新翻译系统需要在模块中声明。因此,在主php文件mymodule.php中添加以下代码:

        public function isUsingNewTranslationSystem()
        {
            return true;
        }
    
    PrestaShop开发者文档(翻译)

    有关经典模块翻译系统(1.7.5和)的信息,请参阅

    翻译您的模块:

    定义所有可翻译字符串后,我们将模块安装到Prestashop web shop

    安装模块后,我们必须转到:

  • 后台
  • 国际->翻译
  • 修改翻译
  • 翻译类型->已安装模块翻译
  • 选择您的模块->模块名称
  • 选择您的语言->要翻译的语言
  • 此过程将在模块中生成一个翻译文件(.php)

    翻译文件位置:modulename/translations/isocode.php


    很高兴知道,当您有一个模块的已翻译PHP文件(例如en.PHP)时,您可以多次翻译相同的en.PHP文件,并将其保存在不同的等位代码下,例如nl.PHP。

    首先,在您的模块中,我们必须指定哪些字符串是可翻译的

    为Prestashop(版本1.7.5及更高版本)翻译:

    第三方物流:

    PHP:

    为Prestashop(1.7.6版及更新版本)翻译:

    第三方物流:

    细枝:

    PHP:

    您可以看到,我们需要使用模块名称(大写)声明其为模块中的可翻译字符串,然后定义可翻译字符串的位置

    重要提示 使用prestashop新翻译系统需要在模块中声明。因此,在主php文件mymodule.php中添加以下代码:

        public function isUsingNewTranslationSystem()
        {
            return true;
        }
    
    PrestaShop开发者文档(翻译)

    有关经典模块翻译系统(1.7.5和)的信息,请参阅

    翻译您的模块:

    定义所有可翻译字符串后,我们将模块安装到Prestashop web shop

    安装模块后,我们必须转到:

  • 后台
  • 国际->翻译
  • 修改翻译
  • 翻译类型->已安装模块翻译
  • 选择您的模块->模块名称
  • 选择您的语言->要翻译的语言
  • 此过程将在模块中生成一个翻译文件(.php)

    翻译文件位置:modulename/translations/isocode.php


    很高兴知道,当您有一个模块的已翻译PHP文件(例如en.PHP)时,您可以多次翻译相同的en.PHP文件,并将其保存在不同的等位代码下,例如nl.PHP。

    对不起,忘了说这是PrestaShop v1.7.6.5对不起,忘了说这是PrestaShop v1.7.6.5谢谢。你重复了我在问题中所说的大部分内容。我相信你答案的相关部分是使用
    isUsingNewTranslationSystem
    功能,我会尝试一下。这只是一种给出完整答案的方式,可以在将来帮助其他人,因为翻译方法最近才有所改变。
    正在使用新的翻译系统
    是您在编码时犯的错误。你也没有指出你在哪里使用哪个版本,这就是为什么我需要指出新的翻译只适用于最新的prestashop版本。我解决了我的问题!为了强调我必须使用的内容:1)
    $this->trans('My text to translate',array(),'Modules.Modulename.Admin')
    和2)
    正在使用新的TranslationSystem
    。在PrestaShop v1.7.6.5中。谢谢@CrezzurThanks。你重复了我在问题中所说的大部分内容。我相信你答案的相关部分是使用
    isUsingNewTranslationSystem
    功能,我会尝试一下。这只是一种给出完整答案的方式,可以在将来帮助其他人,因为翻译方法最近才有所改变。
    正在使用新的翻译系统
    是您在编码时犯的错误。您也没有指出您使用的版本,这就是我需要指出的原因
        {l s='My text to translate' d='Modules.Modulename.Somefile'}
    
        {{ 'My text to translate'|trans({}, 'Modules.Modulename.Admin') }}
    
        // 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');
    
        public function isUsingNewTranslationSystem()
        {
            return true;
        }