jroedel / zf2-jtranslate
提供翻译GUI的Laminas模块
Requires
- php: ^8.0
- cakephp/utility: ^3.2.0
- laminas/laminas-code: ^3.0.2 || ^2.5.0
- laminas/laminas-i18n: ^2.5.0
- mledoze/countries: ^1.8.0
README
Zend Framework 3模块,提供翻译GUI。使用Laminas\Db。所有未知未翻译的短语都将添加到数据库中。这可以用于翻译静态和动态(例如数据库值)字符串。该模块可以定制以将字符串翻译成任意数量的语言(默认为英语、西班牙语、德语和葡萄牙语)。
此存储库用于生产网站,但远远不是完美的。任何帮助使其对世界更有用的建议都受到欢迎!
安装
-
需要JTranslate
php composer.phar require jroedel/jtranslate
-
将
config/jtranslate.config.php.dist
复制到您的应用程序配置文件夹,并自定义这些值。 -
使用
config/database.sql.dist
中的sql创建两个表。 -
在
application.config.php
文件中启用它<?php return [ 'modules' => [ // ... 'JTranslate', ], // ... ];
-
GUI可以通过
admin/translations
访问。请确保只允许管理员访问jtranslate
和子路由。 bjyoungblood/BjyAuthorize 是一个很好的基于路由的访问控制模块。
工作原理
-
在每个PHP实例开始时,将一个模式添加到
MvcTranslator
,包括位于/module
文件夹中每个加载的模块的/language
文件夹中的 phpArray 文件。 -
在调度时,将
MvcTranslator
的文本域设置为接收请求的控制器的主命名空间。这有助于将翻译与相应的模块一起存储。 -
通过监听翻译器的
EVENT_MISSING_TRANSLATION
事件收集未翻译的短语。 -
在
MvcEvent::EVENT_FINISH
事件中,我们将任何新短语添加到数据库中。 -
当用户从
admin/translations
页面编辑短语时,该模块的所有翻译都将写入对应模块的/language
文件夹中的 phpArray。如果特定模块的/language
文件夹不存在,它将在此时创建。属于不是加载的模块之一的文本域的短语将保存在根目录/language
文件夹的子文件夹中。
注意:永远不要手动编辑翻译的 php 文件,因为这会被数据库覆盖。如果必须进行手动更改,请从数据库中进行更改。