saimons/ud-translator

Nette Framework 的本地化网络插件。

dev-master 2015-06-01 13:47 UTC

This package is not auto-updated.

Last update: 2024-10-02 08:40:00 UTC


README

插件用于 Nette Framework 的网页本地化。

安装

config.neon

        UDTranslator:
                adminRole: administrator
                debugMode: TRUE
                diagnostics:
                        time: +1 day
                        path: %tempDir%/cache/_UDTranslator/
                        limit: 300

adminRole: Nette\Security\User 的角色名称,该角色在 UDTranslator 中具有管理员权限,NULL 表示所有人都可以编辑

debugMode: TRUE/FALSE 缓存字符串

diagnostics: 用于搜索未使用的字符串

time: 缓存字符串的最小时间,之后使用的字符串将更新显示的状态

path: 用于缓存使用的字符串的文件位置

limit: 如果缓存的字符串数量少于该值,则不再使用缓存,并且当发现新字符串时,将内部存储无效化

使用缓存是为了减轻启用诊断时的初始压力。一旦响应并且未使用的字符串数量达到 limit,则在每次发现新字符串时都会无效化存储。

basepresenter.php

abstract class BasePresenter extends Presenter {

    /** @persistent  */
    public $lang;
    
    /** @var UDTranslator\NetteTranslator */
    protected $translator;
    
    /** @var UDTranslator\Services\Editor */
    protected $translatorEditor;

    /**
     * 
     * @return array
     */
    public static function getPersistentParams() {
        return array('lang');
    }    
    
    /**
     * @param GettextTranslator\Gettext
     */
    public function injectUDTranslator(NetteTranslator $translator, Editor $editor)
    {
        $this->translator = $translator;
        $this->translatorEditor = $editor;
        
    }
    
    /**
     * 
     * @param type $class
     * @return type
     */
    public function createTemplate($class = NULL)
    {
        $template = parent::createTemplate($class);        
        // if not set, the default language will be used
        if (!isset($this->lang)) {
            $this->lang = 'en';
        } else {
            $this->translator->setLang($this->lang);
        }
        $template->setTranslator($this->translator);
        return $template;
    }
    
    /**
     * Component for editing translation
     * @return DTranslator\Services\Editor
     */
    protected function createComponentTranslatorEditor() {
        $this->translatorEditor->setLang($this->lang);
        return $this->translatorEditor;
    }
}

bootstrap.php

UDTranslator\DI\UDTranslator::register($configurator);

将 layout.latte 文件放置在 html 文件的末尾

{control translatorEditor}
</body>

CSS: 从文件中加载样式。