kozicak/l10n-nette-translator

Tracy 的简单 l10n 翻译面板

2.1.0 2019-06-06 07:21 UTC

This package is auto-updated.

Last update: 2024-09-06 19:43:53 UTC


README

Build Status Scrutinizer Code Quality Scrutinizer Code Coverage Total Downloads License

l10nNetteTranslator

Nette 提供简单面板的 l10n 翻译器,适用于 Tracy

Tracy-Panel

Packagist

l10nNetteTranslator 可在 Packagist.org 上找到,只需在 composer.json 中添加依赖即可。

{
  "require" : {
    "zemistr/l10n-nette-translator": "1.*"
  }
}

或者运行 Composer 命令

php composer.phar require zemistr/l10n-nette-translator

不使用 Composer 的使用方法

<?php
require('src/l10nNetteTranslator.php');

示例用法(标准用法,使用文件存储)

只需将以下代码添加到 config.neon

extensions:
    translator: l10nNetteTranslator\ApplicationDI\Extension

translator:
    # languages are required
    languages:
        -
            lang: l10n\Language\CzechLanguage # must implements l10n\Language\ILanguage
            plural: l10n\Plural\PluralRule8 # must implements l10n\Plural\IPlural

        -
            lang: l10n\Language\SlovakLanguage # if language implements l10n\Plural\IPlural, you can ignore plural section

        -
            lang: l10n\Language\EnglishLanguage
            default: true # if is not set, the first language will be set as default

    # storage is optional
    storage: @translator_simple_nette_storage # must implements l10nNetteTranslator\Storage\IStorage

services:
    # You can use any storage implements Nette\Caching\IStorage
    translator_nette_storage:
        class: Nette\Caching\Storages\FileStorage(%appDir%/Texts) # Texts will be saved in %appDir%/Texts as file named by ISO 639-1
        autowired: false

    translator_simple_nette_storage: l10nNetteTranslator\Storage\SimpleNetteStorage(@translator_nette_storage)

并将此代码添加到 presenter 中

/** @var \l10nNetteTranslator\Translator */
protected $translator;

public function injectTranslator(\l10nNetteTranslator\Translator $translator) {
    $this->translator = $translator;
}

protected function beforeRender() {
    $this->template->setTranslator($this->translator);
}

表单中的示例用法

class XxxPresenter extends \Nette\Application\UI\Presenter {
    public function createComponentForm() {
        $form = new Form();
        $form->setTranslator($this->translator);
        ...
        return $form;
    }
}

Latte 中的示例用法

// users -> singular => %n% person
// users -> plural 1 => %n% people

{_'users'} // 1 person
{_'users', 0} // 0 people
{_'users', 50} // 50 people

----

// user -> singular => I am %firstname% %lastname%
{_'user', ['%firstname%' => 'John','%lastname%' => 'Doe']} // I am John Doe
{_'user', 1, ['%firstname%' => 'John','%lastname%' => 'Doe']} // I am John Doe

我如何更改语言?

class XxxPresenter extends \Nette\Application\UI\Presenter {
    public function actionDefault() {
        // argument must be ISO 639-1 code
        $this->translator->setActiveLanguageCode('cs');
    }
}

(c)Martin Zeman (Zemistr),2015 (http://zemistr.eu)