coign/twig-translation

用于Slim框架中 Illuminate\Translation\Translator 的Twig函数

dev-master 2018-09-02 09:45 UTC

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'}) }}

为不同的语言添加新的文件夹。