asm/translation-loader-bundle

Symfony2 插件,用于数据库翻译加载

安装数: 13,193

依赖项: 2

建议者: 0

安全: 0

星标: 23

关注者: 4

分支: 9

公开问题: 14

类型:symfony-bundle

v1.0.7 2015-02-28 13:10 UTC

This package is auto-updated.

Last update: 2024-08-26 03:18:32 UTC


README

Build Status Latest Stable Version Total Downloads Scrutinizer Code Quality SensioLabsInsight

knpbundles.com phpci build status

TranslationLoaderBundle 允许您对 Symfony 标准版的翻译进行多项操作。它主要依赖于翻译组件和 doctrine。因此您可以...

  • 导入所有捆绑的翻译(如果它们在默认路径中)
  • 以您喜欢的格式导出所有翻译
  • 通过命令行添加翻译

安装

  1. asm/translation-loader-bundle 添加到项目的依赖项中

    $ composer require asm/translation-loader-bundle "~1.0"
  2. 在内核中注册插件

    // app/AppKernel.php
    // ...
    
     public function registerBundles()
     {
         $bundles = array(
             // ...
             new Asm\TranslationLoaderBundle\AsmTranslationLoaderBundle(),
         );
    
         return $bundles;
     }
  3. 如果您想要管理界面,请添加路由配置

    # 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许可证。请参阅完整的许可证文本许可证

自由软件,太棒了!