transactpro / phalcon-translate
此包最新版本(1.0.2)没有可用的许可证信息。
Phalcon 的翻译模块
1.0.2
2015-10-27 23:31 UTC
Requires
- ext-phalcon: ^2.0
This package is not auto-updated.
Last update: 2024-09-14 18:25:55 UTC
README
##工作原理:此翻译模块旨在能够存储/访问数据库中的任何键。所有翻译映射在任何时候都可以访问,而不需要启动新的查询。匹配翻译映射中的键有三个步骤
- 提供的或默认语言
- 后备语言
- 键的原始形式
示例 #1
We have `test` key with value `Test value` in our translation map for English only.
When we will ask for `test` with language key (`en` is enabled as fallback language):
- en: `Test value`
- de: `Test value`
- ru: `Test value`
When we will ask for `test` with language key (without fallback language):
- en: `Test value`
- de: `test`
- ru: `test`
示例 #2
We have `test` key with value `Test value`/`Тестовое значение` in our translation map for English and Russian.
When we will ask for `test` with language key (`en` is enabled as fallback language):
- en: `Test value`
- de: `Test value`
- ru: `Тестовое значение`
- without: `Test value`
When we will ask for `test` with language key (without fallback language):
- en: `Test value`
- de: `test`
- ru: `Тестовое значение`
- without: `Test value`
安装
"require": { "transactpro/phalcon-translate": "~1.0" }
使用和配置
####首先,您必须创建翻译表
CREATE TABLE `translation` ( `translation_id` INT(11) NOT NULL AUTO_INCREMENT, `language` VARCHAR(5) NOT NULL, `key_name` VARCHAR(48) NOT NULL, `value` TEXT NOT NULL, PRIMARY KEY (`translation_id`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM AUTO_INCREMENT=1;
####将共享服务 translate
设置到您的 依赖注入
容器中,提供您的翻译模型类名称。示例
$di->setShared('translate', function ($lang = false) use ($config, $di) { $adapter = new \TransactPro\Translation\Translate( TranslationModel::class, $lang ); // setting default language that will be used when _() called without language parameter $adapter->setDefaultLanguage('en'); // if fallback language is set, it will look in that translation map for value $adapter->setFallbackLanguage('de'); /* * You can also provide them as options in third param array like: * [ * 'default' => 'en', * 'fallback' => 'de' * ] */ return $adapter; });
####您可以为您的 Volt 或 Twig 添加过滤器。示例
trans($key, $lang = null) { $di = Di::getDefault(); $translate = $di->getShared('translate'); return $translate->_($key, $lang); }
####如果您的表(模型)与提供的 translation.sql
不匹配,您可以映射自己的列作为第三个参数数组中设置的选项
$di->setShared('translate', function ($lang = false) use ($config, $di) { $adapter = new Translate( TranslationModel::class, $lang, [ 'languageColumn' => 'lang', 'keyColumn' => 'lang-key', 'valueColumn' => 'lang-value' ] ); return $adapter; });