peteraba/foo-translate

用于在Opulence中轻松创建国际应用的库。

dev-scrutinizer-patch-2 2017-04-19 21:08 UTC

This package is auto-updated.

Last update: 2024-09-09 21:50:17 UTC


README

Opulence中轻松创建多语言应用的库。

Build Status License composer.lock Scrutinizer Code Quality Code Coverage Build Status

设置

通过composer安装库

composer install peteraba/foo-translate

将引导程序添加到您的应用程序中

# config/bootstrappers.php

return [
    // ...
    Foo\Translate\Bootstrapper\TranslatorBootstrapper::class,
];

resources/lang中添加您的翻译,因为它已经存在以进行验证。

在您的.env.app.php中添加您的默认语言

Environment::setVar('DEAFULT_LANGUAGE', "hu");

用法

位于resources/lang/${DEFAULT_LANG}下的文件将被自动加载。在语言文件中定义的值通过一个:字符进行命名空间,因此application.php中定义的mainPageTitle值可以引用为application:mainPageTitle

用户类可以通过从IOC容器加载为ITranslator来访问翻译器。

Fortune中,您可以调用助手tr来获取翻译。

示例

resources/lang/en/form.php

<?php

return [
    'createNewLabel' => 'Create new %s',
];

src/Project/Form/Login.php

class Login
{
    /**
     * @param ITranslator $translator
     * @param string      $entityName
     */
    public function __construct(ITranslator $translator, string $entityName)
    {
        $this->translator = $translator;
        $this->entityName = $entityName;
    }

    /**
     * @return Button
     */
    public function createSaveButton(): Button
    {
        return new Button($this->translator->translate('form:createNewLabel', $this->entityName));
    }
}

resources/views/forms/login.fortune.php

<button>{{ tr("form:createNewLabel", $entityName) }}</button>

注意

  1. 如果没有提供,库将默认使用英语(en)作为默认语言。
  2. 引导程序不是懒加载的,因为国际应用通常需要在整个应用程序中使用翻译。
  3. 目前翻译没有缓存,但这是一个计划中的功能。