coign / twig-translation
用于Slim框架中 Illuminate\Translation\Translator 的Twig函数
dev-master
2018-09-02 09:45 UTC
Requires
- php: >=5.3.0
- illuminate/translation: >=4.0
- slim/slim: >=2.3.0
- slim/views: >=0.1.2
- twig/twig: >=1.16.0
This package is not auto-updated.
Last update: 2024-09-24 18:48:35 UTC
README
此仓库使用Twig和Illuminate/Translation进行整个应用的翻译,提供了一个用于分析的分枝扩展类。然后,该类使用一个辅助函数来使用模型分枝。翻译器函数尝试调用Illuminate/translation对象的trans()或translate()函数。
如何安装
使用 Composer
在应用文件夹中打开命令提示符并粘贴以下内容
composer require coign/twig-translation
如何使用
Slim
以下是一个可以使用Twig的示例,要安装Twig,请点击以下链接 Twig View 仓库。
我建议通过中间件调用这些函数。添加Illuminate/translation的扩展。
use Illuminate\Translation\Translator; use Illuminate\Translation\FileLoader; use Illuminate\Filesystem\Filesystem;
然后...
$container = $app->getContainer(); $app->add(function (\Slim\Http\Request $request, $response, $next) use ($app,$container) { //pegar linguagem do navegador $lang = $request->getHeader('Accept-Language'); //mostrar apenas os dois primeiros caractéries $language = substr($lang[0],0,2); //pegar as configurações (caminho) da renderização $settings = $container->get('settings')['renderer']; //invocar container view para adicionar a extenssão $view = $container->get('view'); $view->addExtension(new \Dkesberg\Slim\Twig\Extension\TranslationExtension()); //$settings['template_path_lang'] esse é o diretório da pasta de tradução //Aonde pode ser alterada em settings.php $translator = new Translator(new FileLoader(new Filesystem(), $settings['template_path_lang']), $language); //Idioma padrão do site $translator->setFallback('en'); //Execultar tradução $app->translator = $translator; //Gravar a tradução do usuario em uma _SESSION para usar em formularios navegador etc.. $_SESSION['lang'] = $language; // executar um outro middleware com o atual route return $next($request, $response); });
我们在templates/lang文件夹中有翻译目录,其中将包含语言。请记住,每个文件夹都是一个语言...
/templates
/lang
/pt
/home.php
/about.php
/en
/home.php
/about.php
每个翻译文件将有一个包含翻译的数组。例如:/en/home.php
return array( 'Welcome' => 'Hello' );
/pt/home.php
return array( 'Welcome' => 'Olá' );
在模板中使用
要在模板中使用,您需要首先调用目录的文件名,在我们的例子中是home.php,然后是您想要调用的数组键。我们将以以下方式调用它:home.welcome
{{ translate('home.Welcome') }}
您可以使用缩写。
{{ _('home.welcome') }}
或者,如以下示例所示,我们有一个用于欢迎和显示用户名的数组/pt/messages.php
return array( 'hello' => 'Olá :name!' );
在上面的示例中,您需要在模板中使用以下调用方式:
{{ trans('messages.hello', {'name': 'João Doe'}) }}
为不同的语言添加新的文件夹。