repli2dev / gettexttranslator
Nette (PHP 框架) 的翻译器。
v1.2.2
2016-12-09 14:55 UTC
Requires
- php: >=5.3.0
- nette/nette: >=2.1.0
This package is not auto-updated.
Last update: 2024-09-23 15:51:27 UTC
README
Gettext Translator 是一个工具,它通过调试栏面板实现文本的简单易用的翻译。无需编辑或操作 .po/.mo 文件。
与 nette 2.1> 测试,请将任何错误报告到问题
安装和使用
通过 composer 安装
{ "require":{ "salamek/gettexttranslator" } }
使用方法
设置 config.neon 配置文件
common: gettextTranslator: lang: cs #default language files: front: %appDir%/lang # for module Front and other non-specified modules admin: %appDir%/lang-admin # for module Admin # optional with defaults layout: horizontal # or: vertical height: 450 extensions: gettextTranslator: GettextTranslator\DI\Extension
在 BasePresenter.php 中进行设置
class BasePresenter extends Nette\Application\UI\Presenter { /** @persistent */ public $lang; /** @var \GettextTranslator\Gettext */ protected $translator; /** * @param \GettextTranslator\Gettext */ public function injectTranslator(GettextTranslator\Gettext $translator) { $this->translator = $translator; } public function createTemplate($class = NULL) { $template = parent::createTemplate($class); // if not set, the default language will be used if (!isset($this->lang)) { $this->lang = $this->translator->getLang(); } else { $this->translator->setLang($this->lang); } $template->setTranslator($this->translator); return $template; } }
更改语言,例如在 @template.latte 中
Choose language: <a n:href="this, lang => en">English</a> <a n:href="this, lang => cs">Česky</a>
如何翻译字符串
在模板中
{_"Login"} {_"piece", $number} 1 piece <!-- $number = 1; --> 2 pieces <!-- $number = 2; --> 5 pieces <!-- $number = 5; -->
在表单中
protected function createComponentMyForm() { $form = new Form; $form->setTranslator($this->translator); // ... return $form; }
在组件中
public function createTemplate($class = NULL) { $template = parent::createTemplate($class); $template->setTranslator($this->parent->translator); // $translator in presenter has to be public // or $this->translator via construct/inject return $template; }
在闪存消息中
<div n:foreach="$flashes AS $flash" class="alert {$flash->type} fade in"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> {!_$flash->message} </div>
作者
积极开发中
- Adam Schubert
之前由
- Josef Kufner (jk@frozen-doe.net)
- Miroslav Paulík (https://github.com/castamir)
- Roman Sklenář (http://romansklenar.cz)
- Miroslav Smetana
- Jan Smitka
- Patrik Votoček (patrik@votocek.cz)
- Tomáš Votruba (tomas.vot@gmail.com)
- Václav Vrbka (gmvasek@php-info.cz)
在 New BSD 许可证 下