stanislav-web/phalcon-translate

Phalcon Translate 服务。简单地将您的自定义模板部分翻译成其他语言 :-)

1.3.1-stable 2015-07-12 15:30 UTC

README

Code Coverage Total Downloads License Latest Stable Version

Phalcon Translate 服务。简单地将您的自定义模板部分翻译成其他语言 :-)

变更日志

  • 1.3.1 [修复] 默认语言使用
  • 1.3 [修复] 支持 Phalcon 2.x // [小修复] 翻译适配器 Native offsetGet 在 2.0 中不工作
  • 1.2 [修复,功能] 能够在各个服务中重用一组翻译
  • 1.1 添加了 setDefault() 方法来监视未定义的语言

兼容性

  • PSR-1,PSR-2,PSR-4 标准

系统要求

  • PHP 5.4.x >
  • Phalcon 扩展 1.3.x,2.x

安装

首先通过 composer 更新依赖项。将以下内容添加到您的 composer.json 中

"require": {
    "stanislav-web/phalcon-translate": "1.*"
}
php composer.phar install

或者

php composer.phar require stanislav-web/phalcon-translate 1.*

(不要忘记包含 composer 自动加载器)

或者在您的加载器服务中手动 require

    $loader->registerNamespaces([
        'Translate\Translator' => 'path to src'
    ]);

您可以创建一个可注入的服务

    $this->di['translate'] = function() {
        return new Translate\Translator();
    };

用法

推荐的翻译目录配置(例如)

/app/languages/{LANG}/{PART}.php

LANG meant "ru", "en", "de"
PART meant "menu", "header", "footer"

翻译文件

<?php
return [
    'MY ACCOUNT'    =>  'My Account',
    'LOGIN'         =>  'Log in',
    'LOGOUT'        =>  'Log out',
    'WELCOME'       =>  'Welcome, %s! We glad to see you! You are %d',
];

配置和使用

    // get translate service
    $translate = $this->di->get('translate');
    
     // forward slash must be...  // lang can get from headers or cookies
    $translate->setTranslatePath('/app/Modules/Frontend/languages/')->setLanguage('en');
    
    // 1.1-stable Added setDefault() method to watch undefined languages
    $translate->setDefault('en');
    
    // so now you have a directory for "English".. 
    // Next you need to choise a part of translate.
    // I do something like this
    
    $this->view->setVars('t', $translate);
    
    // ... in my view or layout i get a part of translate
    
    echo $t->assign('menu')->translate('MY ACCOUNT'); // My Account
    
    // or use otherwise
    $this->partial('sidebar', ['t' => $t->assign('sidebar')]);
    echo $t->translate('LOGIN');
    
    // translate by template variable
    printf($t->translate('WELLCOME'), 'User', 100); // Output: Welcome,User! We glad to see you! You are 100

##问题