surda / language-switcher
Nette 框架的语言切换控制
v1.3.1
2019-10-05 10:16 UTC
Requires
- php: >=7.1
- nette/di: ^3.0
- surda/themeable-controls: ^1.0
Requires (Dev)
- nette/tester: ^2.0
- ninjify/nunjuck: 0.3.x-dev
- phpstan/phpstan: ^0.11
- phpstan/phpstan-deprecation-rules: ^0.11
- phpstan/phpstan-nette: ^0.11
- phpstan/phpstan-strict-rules: ^0.11
This package is auto-updated.
Last update: 2024-09-05 21:36:53 UTC
README
安装
推荐的方式是通过 Composer
composer require surda/language-switcher
之后,您需要在 config.neon 中注册扩展
extensions: languageSwitcher: Surda\LanguageSwitcher\DI\LanguageSwitcherExtension
最小配置
languageSwitcher: locales: cs: Čeština en: English default: cs
所有配置选项列表
languageSwitcher: locales: cs: Čeština en: English default: cs locale: cs useAjax: false locale2Country: en: us cs: cz template: path/to/your/latte/file.latte # or templates: default: path/to/your/latte/file.latte navbar: path/to/your/latte/navbar.latte
使用方法
注入语言切换器 + $locale
持久属性
use Nette\Application\UI\Presenter; use Surda\LanguageSwitcher\TLanguageSwitcher; class BasePresenter extends Presenter { use TLanguageSwitcher; }
不注入 $locale
持久属性的注入语言切换器
use Nette\Application\UI\Presenter; use Surda\LanguageSwitcher\TLanguageSwitcherWithoutLocaleProperty; class BasePresenter extends Presenter { use TLanguageSwitcherWithoutLocaleProperty; /** @persistent */ public $locale = 'cs'; }
自定义
use Nette\Application\UI\Presenter; use Surda\LanguageSwitcher\LanguageSwitcherFactory; use Surda\LanguageSwitcher\LanguageSwitcherControl; class BasePresenter extends Presenter { /** @var LanguageSwitcherFactory */ private $languageSwitcherFactory; /** @persistent */ public $locale = 'cs'; public function injectLanguageSwitcherFactory(LanguageSwitcherFactory $LanguageSwitcherFactory) { $this->languageSwitcherFactory = $LanguageSwitcherFactory; } /** * @return LanguageSwitcherControl */ protected function createComponentLanguageSwitcher(): LanguageSwitcherControl { $control = $this->languageSwitcherFactory->create(); $control->setLocale($this->locale); $control->onChange[] = function (LanguageSwitcherControl $control, string $locale): void { $this->redirect('this', ['locale' => $locale]); }; return $control; } }
模板
{control languageSwitcher} or {control languageSwitcher default}
通过模板类型设置控制模板(参见 config.neon)
{control languageSwitcher navbar}
自定义组件选项
class ProductPresenter extends Presenter { /** * @return LanguageSwitcherControl */ protected function createComponentLanguageSwitcher(): LanguageSwitcherControl { // Init items per page component $control = $this->languageSwitcherFactory->create(); // All allowed locales $control->setLocales(['cs' => 'Czech', 'en' => 'English']); // Default locale $control->setDefaultLocale('cs'); // Current locale $control->setLocale('cs'); // To use your own template (default type) $control->setTemplate('path/to/your/latte/file.latte'); // To use your own template $control->setTemplates([ 'default' => 'path/to/your/latte/file.latte', 'navbar' => 'path/to/your/latte/navbar.latte', ]); // Enable ajax (defult is disable) $control->enableAjax(); // Disable ajax $control->disableAjax(); return $control; } }
模板文件 bootstrap4.nav-item.flag.latte
使用来自 https://github.com/lipis/flag-icon-css 的旗帜图标