transactpro/phalcon-translate

此包最新版本(1.0.2)没有可用的许可证信息。

Phalcon 的翻译模块

1.0.2 2015-10-27 23:31 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:25:55 UTC


README

SensioLabsInsight

Latest Version Total Downloads

##工作原理:此翻译模块旨在能够存储/访问数据库中的任何键。所有翻译映射在任何时候都可以访问,而不需要启动新的查询。匹配翻译映射中的键有三个步骤

  • 提供的或默认语言
  • 后备语言
  • 键的原始形式

示例 #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;
});