asm / translation-loader-bundle
Symfony2 插件,用于数据库翻译加载
Requires
- php: >=5.3.0
- doctrine/orm: ~2.2,>=2.2.3
- symfony/config: ~2.2
- symfony/console: ~2.2
- symfony/dependency-injection: ~2.2
- symfony/event-dispatcher: ~2.2
- symfony/filesystem: ~2.2
- symfony/finder: ~2.2
- symfony/http-kernel: ~2.2
- symfony/translation: ~2.2
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-26 03:18:32 UTC
README
TranslationLoaderBundle 允许您对 Symfony 标准版的翻译进行多项操作。它主要依赖于翻译组件和 doctrine。因此您可以...
- 导入所有捆绑的翻译(如果它们在默认路径中)
- 以您喜欢的格式导出所有翻译
- 通过命令行添加翻译
安装
-
将
asm/translation-loader-bundle
添加到项目的依赖项中$ composer require asm/translation-loader-bundle "~1.0"
-
在内核中注册插件
// app/AppKernel.php // ... public function registerBundles() { $bundles = array( // ... new Asm\TranslationLoaderBundle\AsmTranslationLoaderBundle(), ); return $bundles; }
-
如果您想要管理界面,请添加路由配置
# app/config/routing.yml asm_translation_loader.gui: resource: "@AsmTranslationLoaderBundle/Resources/config/routing.yml" prefix: /translation
它是如何工作的?
它非常简单。对于您所做的每个缓存清除,翻译导出器都会在您的缓存目录中生成一个 MessageCatalogue,应用程序稍后会从其中检索所有翻译和相应的回退。到目前为止,一切都很好... 我们不会改变这一点,而是将翻译从文件移动到平面数据库表,这样在某些情况下更容易更改和维护。安装并按照设置步骤操作后,您的缓存 MessageCatalogue 将直接从数据库中创建。
入门
###EntityManager 您可以告诉插件使用除默认管理器之外的 EntityManager。因此,您需要向您的 app/config/config.yml 添加一个配置节点
asm_translation_loader: driver: orm database: entity_manager: <yourmanager_here> # default: null
###历史记录 如果启用,历史记录功能会监听 doctrine 操作并为每次更改添加条目,添加当前登录的用户名。
asm_translation_loader: history: true # default false
###设置翻译表
php app/console doctrine:schema:update --force
这将为您创建翻译表,以便您开始导入。
###将所有翻译导入到数据库
php app/console asm:translations:import
请注意:导入可能需要一段时间,因为该过程会检查每个翻译是否已经存在,然后插入或更新。我对此处的建议持开放态度;这个命令还有一个 "-c",您可以在清除数据库后再使用,对于已经填充的表来说可能更快。
###生成虚拟翻译文件或使用配置
php app/console asm:translations:dummy
由于翻译加载器基于文件,因此您必须为想要与翻译数据库一起使用的每种语言创建空文件,例如 "messages.en_US.db"。我还没有找到一种好方法来解决这个问题,所以目前您可以使用虚拟文件生成器,该生成器为您的数据库中的每个消息域/区域创建这样的文件。这些文件将放置在 app/Resources/translations/*。另一种选择是为特定的区域和消息域配置加载器。
asm_translation_loader: resources: fr: [ foo, bar ] de: baz en: ~ driver: orm history: true # default false database: entity_manager: default
###删除旧翻译文件 在检查您的翻译表后,您应该从自定义插件的目录中删除所有翻译文件。键入一个短
php app/console ca:cl
并检查您的 Symfony 缓存目录,以查看我们刚刚从数据库填充的新 MessageCatalogue :-)
###有趣的东西 如果您对数据库翻译感到厌倦,不要绝望:只需使用文件导出器并重新生成您的文件!
php app/console help asm:translations:dump
检查 app/Resources/translations 中的翻译文件,如果移除所有 *.db 文件,则您将回到文件模式!
###测试 我尚未完成我的测试设置,并乐意得到一点贡献 ;-)
贡献
非常感谢 xabbuh 支持重构和测试(实现)!任何想要贡献的人都非常受欢迎!
许可
AsmTranslationLoaderBundle遵循MIT许可证。请参阅完整的许可证文本许可证。
自由软件,太棒了!