jroedel/zf2-jtranslate

提供翻译GUI的Laminas模块

1.0.0 2022-07-19 22:47 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:26:01 UTC


README

Zend Framework 3模块,提供翻译GUI。使用Laminas\Db。所有未知未翻译的短语都将添加到数据库中。这可以用于翻译静态和动态(例如数据库值)字符串。该模块可以定制以将字符串翻译成任意数量的语言(默认为英语、西班牙语、德语和葡萄牙语)。

此存储库用于生产网站,但远远不是完美的。任何帮助使其对世界更有用的建议都受到欢迎!

安装

  1. 需要JTranslate

    php composer.phar require jroedel/jtranslate
    
  2. config/jtranslate.config.php.dist 复制到您的应用程序配置文件夹,并自定义这些值。

  3. 使用 config/database.sql.dist 中的sql创建两个表。

  4. application.config.php 文件中启用它

    <?php
    return [
        'modules' => [
            // ...
            'JTranslate',
        ],
        // ...
    ];
    
  5. GUI可以通过 admin/translations 访问。请确保只允许管理员访问 jtranslate 和子路由。 bjyoungblood/BjyAuthorize 是一个很好的基于路由的访问控制模块。

工作原理

  1. 在每个PHP实例开始时,将一个模式添加到 MvcTranslator,包括位于 /module 文件夹中每个加载的模块的 /language 文件夹中的 phpArray 文件。

  2. 在调度时,将 MvcTranslator 的文本域设置为接收请求的控制器的主命名空间。这有助于将翻译与相应的模块一起存储。

  3. 通过监听翻译器的 EVENT_MISSING_TRANSLATION 事件收集未翻译的短语。

  4. MvcEvent::EVENT_FINISH 事件中,我们将任何新短语添加到数据库中。

  5. 当用户从 admin/translations 页面编辑短语时,该模块的所有翻译都将写入对应模块的 /language 文件夹中的 phpArray。如果特定模块的 /language 文件夹不存在,它将在此时创建。属于不是加载的模块之一的文本域的短语将保存在根目录 /language 文件夹的子文件夹中。

注意:永远不要手动编辑翻译的 php 文件,因为这会被数据库覆盖。如果必须进行手动更改,请从数据库中进行更改。