kunstmaan/translator-bundle
Composer 安装命令:
composer require kunstmaan/translator-bundle
包简介
A bundle which enables editing translations in the admin interface without need for editing the translations files. Translations will be stored in a (default) database and retrieved on the most efficient way possible.
README 文档
README
A bundle which enables editing translations in the admin interface without need for editing the translations files. Translations will be stored in a (default) database and retrieved on the most efficient way possible.
Installation requirements
You should be able to get Symfony >=2.3 up and running before you can install the KunstmaanTranslatorBundle.
Installation instructions
Assuming you have installed composer.phar or composer binary:
$ composer require kunstmaan/translator-bundle 2.3.*@dev
$ composer require doctrine/migrations dev-master
$ composer require doctrine/doctrine-migrations-bundle dev-master
Add the KunstmaanTranslatorBundle to your AppKernel.php file:
new Kunstmaan\TranslatorBundle\KunstmaanTranslatorBundle(), new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
Add the KunstmaanTranslatorBundle to your routing.yml. Take your own routing into account, it's possible you will need to add the following code prior to your own routing configurations
KunstmaanTranslatorBundle:
resource: "@KunstmaanTranslatorBundle/Resources/config/routing.yml"
prefix: /{_locale}/
requirements:
_locale: "%requiredlocales%"
Configuration
Overwrite the KunstmaanTranslatorBundle config to your needs in config.yml, these are the default values:
kunstmaan_translator:
enabled: true
default_bundle: own
bundles: []
cache_dir: %kernel.cache_dir%/translations
managed_locales: []
file_formats: ['yml', 'yaml', 'xliff']
debug: defaults to the kernel.debug parameter (boolean)
enabled: Enabled or disable the KunstmaanTranslatorBundledefault_bundle: Which bundles are used for the import functionality in the backend. Possible values: 'own', 'all', 'custom'.- own : All bundles in your src directory
- all : All bundles in your src directory + all bundles in your vendor directory
- custom : Only the bundles you specify in
bundles
bundles: A list of bundles that will be used for the import functionality in the backend. Only used whendefault_bundleis set to 'custom'.cache_dir: Cached translations dirmanaged_locales: Which locale translation files should be importedfile_formats: Which type of translation files should be importeddebug: When debug is enabled the translation caching is disabled
Example configurations:
kunstmaan_translator:
managed_locales: ['en', 'fr', 'es']
kunstmaan_translator:
default_bundle: own
managed_locales: ['en', 'fr', 'es']
debug: false
kunstmaan_translator:
enabled: true
default_bundle: custom
bundles: ['MyCompanyCoolBundle', 'MyCompanyAwesomeBundle']
managed_locales: ['en', 'fr', 'es']
Database schema
Update your database schema with doctrine
bin/console doctrine:schema:update --force
Database schema updated successfully! "1" queries were executed
Migrate dev translations to production
Use the following command to generate a doctrine migration with all new and updated translations from your current environment.
bin/console kuma:translator:migrations:diff
When you want to include these migrated translations into your (other) environment use the normal doctrine migrate command.
bin/console doctrine:migrations:migrate
Import existing translation files
When migrating your current project you can easily import the existing translation files.
Without parameters, all translations, locales from the current main project will be included.
If you have already existing translations in the database with the same combination of 'domain', 'keyword', 'locale', non of them will be overwritten
bin/console kuma:translator:import
To force overwrite the existing translations in the stasher:
bin/console kuma:translator:import --force
To import translations from a specific bundle:
bin/console kuma:translator:import --bundle=superCoolNewApplicationBundle
To import only specific locales:
bin/console kuma:translator:import --locales=nl,fr,de
To import translations from the global Resources (app/Resources/translations)
bin/console kuma:translator:import --globals
How does the cache work
Translations are stored in a database, but cached (as Symfony normally does) when not running in debug mode.
$kernel = new AppKernel('prod', false); // translations are cached an read from this cache
$kernel = new AppKernel('dev', true); // translations are always loaded from the stash (slower, more queries)
When editing translations in the backend changes aren't immediately visible on your website.
The backend will show a warning message when not newer or updated translations aren't loaded into the cache.
Click on the Refresh live button to rebuild the cache.
Clear cache and request status
Clear translation cache files, this will trigger a rebuild of the translation cache when visiting a page
bin/console kuma:translator:cache --flush
Request status of the current cache
bin/console kuma:translator:cache --status
Reset translation flags
When all translations are up to date, e.g when migrated all develop translations into production. You need to reset all the flags which mark translations as new or updated. Otherwise already migrated translations will be added into later migrations again (which can cause errors with inserts and unique keys)
bin/console kuma:translator:flag --reset
Lookup keyword/domain of your translations
You probably don't always remember which keyword and/or domain your translations on specific pages are using. To solve this problem you can add an extra GET parameter to your request. Add ?transSource=1 to your url to see all sources of the translated labels.
You instead of "Hello world" you might see header.hello_world (messages). This means:
- keyword is header.hello_world
- domain is messages
Symfony Profiler integration
The Symfony Profiler show the number of translations used on the current request:
When you click on this item, you can see all translations used on the current request and a link to add or edit them in the Kunstmaan Admin backend.
Workflow example (new project)
- Add translations (with keywords) in your template files (dev)
- Add the translations of (1) into your backend via "Add Translation" (dev)
- Repeat 1 & 2
- Create migrations diff
bin/console kuma:translator:migrations:diff(dev) - Reset translation flags
bin/console kuma:translator:flag --reset(dev) - Deploy your application
- Execute doctrine migrations
bin/console doctrine:migrations:migrate(prod) - Edit/add translations (prod)
- When ready editing/adding, click
Refresh liveorbin/console kuma:translator:cache --flush(prod) - Repeat 7 & 8 when editing/adding translations in prod
Workflow example (existing project)
- Import current translations, click
Import -> Importorbin/console kuma:translator:import(prod/dev) - If you did 1 in dev, go to 4 of
"Workflow example (new project)", otherwise go to 7"Workflow example (new project)"
Features
- Import bundle/global translations from any type of translation file
- Import only specific translations (onlu from console command)
- Force import to overwrite existing translations with same domain/keyword/locale
- Edit stored translations from the backend interface
- Add new translations from the backend interface
- Translations are cached (if debug is disabled)
- Warning when cached translations aren't up to date with the stored translations
- Clear translation cache to rebuild translations from the stored translations
- Newer or updated translations are flagged
- Create a Doctrine Migrations file with all flagged translations
- Reset all flagged translations (from console command)
- Clear and check translation cache from console command
- Check your page with the keyword and domain of all translations
Development instructions
Run unit tests
./vendor/bin/phpunit -c phpunit.xml.dist
Run PHP CS Fixer, after installing php-cs-fixer system wide
php-cs-fixer fix .
How to create your own file exporter
- Tag your exporter with `translation.exporter
- implement \Kunstmaan\TranslatorBundle\Service\Exporter\FileExporterInterface
NOTE : exporting isn't stable (yet)
kunstmaan/translator-bundle 适用场景与选型建议
kunstmaan/translator-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 128.06k 次下载、GitHub Stars 达 50, 最近一次更新时间为 2013 年 08 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「translations」 「translator」 「kunstmaan」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 kunstmaan/translator-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kunstmaan/translator-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 kunstmaan/translator-bundle 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Extends the MinkContext and adds some additional (sub)contexts like creating a screenshot when a step fails or wait for Ajax to finish before continuing assertPageContainsText()
The KunstmaanLiveReloadBundle injects the livereload script from grunt-contrib-watch into your html page.
Deepl Automated translations for Laravel lang files
Enable indexing Kunstmaan Bundles CMS pages in Algolia
The Kunstmaan Language chooser bundle supplies your project with basic but extendible language chooser
A lot of sites enable users to vote or participate in actions where Facebook Likes are counted and rewarded. The KunstmaanVotingBundle was created to allow a faster setup of that kind of actions and will provide a backlog of votes your users casted. That way you can look for irregularities and autom
统计信息
- 总下载量: 128.06k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 51
- 点击次数: 28
- 依赖项目数: 3
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2013-08-08


