phpro/mage2-module-translations

通过 Magento 后端管理翻译

1.5.0 2024-07-19 09:43 UTC

This package is auto-updated.

Last update: 2024-09-19 09:58:46 UTC


README

Magento 2 翻译模块

Phpro_Translations 模块可以帮助您通过 Magento 后端管理翻译。

特性

  • 简单的 CRUD 操作管理翻译
  • 通过网格概览进行单行和多行编辑
  • 通过 CLI 使用 CSV 文件导入和导出
  • 通过默认的 Magento 导入/导出功能导入和导出
  • 通过数据补丁脚本准备新的翻译
  • (重新)生成前端翻译(JSON 翻译文件)通过 CLI 和后端

安装

composer require phpro/mage2-module-translations

最终用户文档

下载最终用户文档(PDF)

使用(技术)

地区

所有地区都必须以 ISO 格式定义。地区 = ISO-639(语言)+ "_" + ISO-3166(国家)。

地区示例:en_US, nl_BE, nl_NL, fr_BE, de_DE, ...

导入和导出

导入 Magento 翻译 CSV

CSV 结构必须是(键,值)

"Transkey 1","Transvalue 2"
"Transkey 2","Transvalue 2"
...

使用 phpro:translations:import 命令导入特定地区的 CSV 文件。重复记录将被跳过,不会应用更新。

bin/magento phpro:translations:import /path/to/cs_CZ/cs_CZ.csv cs_CZ --clear-cache

输出

Importing CSV file /path/to/cs_CZ/cs_CZ.csv for locale cs_CZ
#created: 193
#skipped: 4
#failed: 0
Caches cleared: full_page, block_html, translate
Done!

导出到 CSV

使用 phpro:translations:export 命令将数据库翻译导出到一个或多个地区的 CSV 文件。使用空格分隔多个地区。导出的 CSV 文件将写入 Magento 的 var/translations 文件夹。

bin/magento phpro:translations:export nl_BE cs_CZ

输出

Exporting translations to CSV file
Csv file: /path/to/var/translations/20190531_085402_export_nl_BE_cs_CZ.csv
Total written rows: 390
Done!

CSV 结构

"New Account","Nieuwe account",nl_BE
"My Wish List","Mijn verlanglijst",nl_BE
"New Account","Nový účet",cs_CZ
"My Wish List","Mé oblíbené",cs_CZ
...

导入 CSV(包括地区)

您可以使用导出的 CSV 文件(夹)在其他环境中导入。例如,您可以在预览环境中准备新的翻译,稍后在生产环境中导入它们。

CSV 结构必须是(键,值,地区)

"Transkey 1","Transvalue 2",nl_BE
"Transkey 2","Transvalue 2",nl_BE
"Transkey 1","Transvalue 2",fr_BE
"Transkey 2","Transvalue 2",fr_BE
...

使用 phpro:translations:import-full 命令导入 CSV 文件。重复记录将被跳过,不会应用更新。

bin/magento phpro:translations:import-full /path/to/full_import_nl_BE_cs_CZ.csv --clear-cache

输出

Importing CSV file /path/to/full_import_nl_BE_cs_CZ.csv
#created: 10
#skipped: 380
#failed: 0
Caches cleared: full_page, block_html, translate
Done!

通过后端导入

转到“系统”→(数据传输)→“导入”以创建或更新基于 CSV 文件的翻译。请参阅我们的最终用户文档。

重新生成前端翻译

生成/重新生成前端翻译将生成包含所有前端/JS 翻译的 JSON 文件。这些文件存储在 pub/media/phpro_translations 目录中,它们位于相关的主题/地区子目录中。

通过后端

  • 在管理员中转到“翻译 -> 生成前端翻译”。选择“所有商店视图”或选择特定的视图。点击“生成翻译文件”按钮。
  • 通过“系统 -> 缓存管理”清除整个页面和块 HTML 缓存。
  • 请参阅最终用户文档

通过 CLI

  • 使用 phpro:translations:generate-frontend-translations 命令重新生成新的 JSON 文件
  • 请确保您手动清除 full_page 和 block_html 缓存,以应用和启用最新的翻译 JSON 文件。

为单个商店视图重新生成

指定 storeId 参数以针对特定商店视图(地区)重新生成。使用 bin/magento store:list 命令显示商店 ID。

bin/magento phpro:translations:generate-frontend-translations 5

为所有商店视图重新生成

留空 storeId 参数以针对所有商店视图重新生成。

bin/magento phpro:translations:generate-frontend-translations

在构建过程中

我们建议在 setup:upgrade --keep-generated 步骤之后,使用 phpro:translations:generate-frontend-translations 重新生成所有前端翻译,然后在禁用维护之前。

浏览器缓存优化

翻译的JSON文件存储在具有特定版本字符串的目录pub/media/phpro_translations中。您可以通过配置Cache-Control头来选择让浏览器最优地缓存这些文件。以下是一个Nginx示例。

location /media/phpro_translations/ {
    add_header X-Frame-Options "SAMEORIGIN";
    add_header Cache-Control "public";
    expires +1y;
}

从代码库收集翻译

使用phpro:translations:prepare-keys命令从代码库收集翻译短语并准备它们。这将为每个可用的区域创建翻译。

在开发期间添加翻译

要准备、创建或删除翻译,您可以将\Phpro\Translations\Api\TranslationDataManagementInterface作为依赖项注入到您的模块的数据补丁脚本中。

准备

为Magento实例的所有启用区域添加翻译键。如果没有设置默认翻译,则翻译键将用作默认翻译。

use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\Patch\NonTransactionableInterface;
use Phpro\Translations\Model\TranslationDataManagement;

class HelloWorldTranslations implements DataPatchInterface, NonTransactionableInterface
{
    private TranslationDataManagement $translationDataManagement;
    
    public function __construct(
        TranslationDataManagement $translationDataManagement
    ) {
        $this->translationDataManagement = $translationDataManagement;
    }

    public function apply() 
    {
        $this->translationDataManagement->prepare('Hello world!');
        $this->translationDataManagement->prepare('Welcome %1', 'Hello %1');
        // other translation keys here...
    }
}    

创建

为指定区域添加翻译。

use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\Patch\NonTransactionableInterface;
use Phpro\Translations\Model\TranslationDataManagement;

class HelloWorldTranslations implements DataPatchInterface, NonTransactionableInterface
{
    private TranslationDataManagement $translationDataManagement;

    public function __construct(
        TranslationDataManagement $translationDataManagement
    ) {
        $this->translationDataManagement = $translationDataManagement;
    }

    public function apply() 
    {
        $this->translationDataManagement->create('Hello world!', 'Hallo wereld!!!', ['nl_NL', 'nl_BE']);
        $this->translationDataManagement->create('Hello world!', 'Hello world!!!', ['en_US']);
        // other translation keys here...
    }
}

删除

删除指定翻译键和区域(s)的翻译。如果没有指定区域,则将使用所有启用的区域进行删除。

use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\Patch\NonTransactionableInterface;
use Phpro\Translations\Model\TranslationDataManagement;

class DeleteHelloWorldTranslations implements DataPatchInterface, NonTransactionableInterface
{
    private TranslationDataManagement $translationDataManagement;

    public function __construct(
        TranslationDataManagement $translationDataManagement
    ) {
        $this->translationDataManagement = $translationDataManagement;
    }

    public function apply() 
    {
        $this->translationDataManagement->delete('Hello world!');
        $this->translationDataManagement->delete('Welcome %1', ['nl_BE', 'nl_NL']);
        // other translation keys here...
    }
}

PWA

可以使用复选框"前端"来标记需要导出到PWA安装的翻译。通过REST API调用,可以从PWA翻译文件中检索并存储翻译。

可以在构建脚本中使用的API调用

curl -G -k -H "Authorization: Bearer <token>" --data-urlencode "searchCriteria[filter_groups][0][filters][0][field]=frontend" --data-urlencode "searchCriteria[filter_groups][0][filters][0][value]=1" --data-urlencode "searchCriteria[filter_groups][1][filters][0][field]=locale" --data-urlencode "searchCriteria[filter_groups][1][filters][0][value]=<locale>" <Magento base url>rest/V1/phpro-translations/translation/search

Hyvä

安装Hyvä兼容性模块。最低版本为1.2.3。

composer require hyva-themes/magento2-phpro-translations