> Magento2中文手册 > 翻译和语言包

翻译和语言包

翻译和语言包概述

Magento 2的翻译,使您可以自定义多语言和多店面。通过翻译词典更容易更新和维护,降低代码的耦合和重复量。

如何生成翻译文件(语言包):

  • 翻译词典,它是一种方便的翻译方法,如一些自定义的模块或主题。
  • 语言包,使您能够将任何或单词和短语应用在Magento 2。

有关更多信息,查看翻译.

第一步

  1. 登录到Magento服务器切换到Magento 2文件系统的所有者用户要有写入的权限.

    如果你使用Bash shell,你也可以使用下面的语法转换到Magento文件系统所有者:

    su <Magento 2文件系统所有者> -s /bin/bash -c <command> 
    sudo -u <Magento 2文件系统所有者>  <command>
    
  2. 添加 <Magento 2 安装目录>/bin 到系统路径,就可以从任何目录运行Magento 2的命令.

    CentOS系统添加到系统路径命令:

    export PATH=$PATH:/var/www/html/magento2/bin
    

您也可以按下列方式运行命令:

  • cd <Magento 2 安装目录>/bin 并运行它们 ./magento <command name>
  • php <Magento 2 安装目录>/bin/magento <command name>

除了这里讨论的命令参数外,请参见常见参数.

生成一个翻译词典

您可以生成一个用于自身使用的翻译字典(例如,在自定义模块中翻译单词或短语)或使用语言包。见以下部分之一:

  • 关于翻译词典
  • 翻译字典怎样工作

翻译字典怎样工作

要翻译单词和短语,你必须 :

  1. 运行命令来启用可翻译单词和短语的组件
  2. 翻译单词和词组。

命令选项:

magento i18n:collect-phrases [-o|--output="<csv文件路径和名称>"] [-m|--magento] <要翻译的目录路径>

创建语言包

更多关于语言包.

本节讨论如何创建一个语言包,该软件包将 CSV 文件写入模块和主题:

  1. 收集和翻译单词和短语.

  2. 运行语言包命令.
  3. 创建目录和文件.
  4. (Optional.) 配置多语言包.

运行语言包命令

命令的用法:

magento i18n:pack [-m|--mode={merge|replace}] [-d|--allow-duplicates] <source> <locale>

创建目录和文件

一个语言包目录(app/i18n/<VendorName>)下的Magento 2文件系统具有下列内容:

  • 所需的许可证文件
  • composer.json
  • registration.php 注册 语言包
  • language.xml 元信息文件

整个路径必须全部小写.

创建这些文件:

  1. app/i18n下创建一个目录.

    例如,Magento的语言包都位于 app/i18n/magento

  2. 添加任何您需要的许可证文件 .
  3. 添加 composer.json 指定语言包的依赖项。
  4. 注册语言包在 registration.php
  5. 添加 language.xml 元信息文件在下一节中讨论.

语言包 language.xml

当声明一个语言包在language.xml配置文件,您必须指定此包的继承关系。

语言继承使您能够创建一个新的翻译基于现有的一个子类翻译重写父类。但是,如果子翻译未能加载载或显示,则使用父。如果某些子翻译缺少短语或单词,则该短语或单词取自父。 语言包继承的例子.

要声明包,请指定以下信息:

<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>en_GB</code>
    <vendor>magento</vendor>
    <package>en_gb</package>
    <sort_order>100</sort_order>
    <use vendor="oxford-university" package="en_us"/>
</language>
  • <code>: 语言包国家代码(必须)
  • <vendor>: 模块供应商名称(必须)
  • <package>: 语言包名称(必须)
  • <sort_order>: 当一个商店有几个语言包时,当前包的优先级
  • <use>: 从继承字典的父语言包区域设置

如果需要,可以指定几个父包。

语言包继承的例子

假设一个语言包来自另外两个包,而这些包也有父和“祖父母”包.

如果一个语言包来自两个包,它的language.xml 可能看起来像下面 :

<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>en_GB</code>
    <vendor>magento</vendor>
    <package>language_pack</package>
    <sort_order>100</sort_order>
    <use vendor="parent-package-one" package="language_package_one"/>
    <use vendor= "parent-package-two" package="language_package_two"/>
</language>

使用翻译命令的例子

  • 示例:为模块或主题创建翻译字典
  • 示例:创建语言包

示例:为模块或主题创建翻译字典

  1. 从你的模块收集短语 :

    magento i18n:collect-phrases -o "/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n/xx_YY.csv" /var/www/html/magento2/app/code/ExampleCorp/SampleModule
    

示例:创建语言包

  1. magento i18n:collect-phrases -o "/var/www/html/magento2/xx_YY.csv" -m
    
  2. magento i18n:pack /var/www/html/magento2/xx_YY.csv -d xx_YY
    
  3. 为语言包创建目录。 /var/www/html/magento2/app/i18n/ExampleCorp/xx_yy

    • composer.json (sample following)
    • registration.php (sample following)
    • language.xml (sample following)

示例composer.json:

{
    "name": "examplecorp/language-xx_yy",
    "description": "Sample language",
    "version": "100.0.2",
    "license": [
        "OSL-3.0",
        "AFL-3.0"
    ],
    "require": {
        "magento/framework": "100.0.*"
    },
    "type": "magento2-language",
    "autoload": {
        "files": [
            "registration.php"
        ]
    }
}

示例 registration.php:

/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    'magento_xx_yy',
    __DIR__
);

示例 language.xml:

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>xx_YY</code>
    <vendor>examplecorp</vendor>
    <package>xx_yy</package>
</language>
  • 缓存管理
  • 索引管理
  • 配置和运行cron(定时任务)
  • 代码编译
  • Magento 2 模式(mode)设置
  • URN(统一资源名称)高亮显示
  • 依赖报告(Dependency reports)
  • 部署静态视图文件
  • 运行单元测试
  • 转换layout(布局) XML 文件
  • 性能测试生成数据