atk4/i18n

Atk4 的 Symfony 翻译组件接口

v1.0.0 2021-04-04 13:28 UTC

This package is not auto-updated.

Last update: 2024-09-18 00:51:48 UTC


README

敏捷工具包 UI 的 Symfony\Translation 组件接口

sample

安装

composer require atk4/i18n

使用

初始化

翻译器需要初始化。

use Atk4\I18n\Service;

Service::init($locale, $formatter, $cachePath, $cacheOptions, $clearCache);

string $locale

Symfony 翻译器使用的默认语言区域。

MessageFormatterInterface $formatter

[可选] - 您可以提供自己的符合 Symfony 的 MessageFormatterInterface 的格式化程序。如果为 null,则 symfony 翻译组件将默认创建一个。

string $cachePath

[可选] - 这将在指定位置缓存翻译资源文件。在生产环境中推荐使用,因为它将加快资源加载速度。

$cahePath = 'dir/to/caches'

array $cacheOptions

[可选] - 将根据此选项生成缓存文件。一个好的用法是为翻译版本指定缓存。

$caheOptions = ['version' => '1.0.0']

bool $clearCache

[可选] - 将清除缓存文件并重新生成资源文件。用于开发。

添加资源文件

一旦翻译器已初始化,请将其添加到您的翻译资源文件中。

Service::addResource($path, $locale, $format);

string $path

您的资源文件所在的目录路径。为了正确加载,此目录必须按照语言区域组织。

├── languages
│   ├── en
│   │   ├── messages.en.php
│   │   └── messages+intl-icu.en.php
│   ├── en_US
│   │   ├── messages.en_US.php
│   │   └── messages+intl-icu.en_US.php
│   ├── fr
│   │   ├── messages.fr.php
│   │   └── messages+intl-icu.fr.php
│   ├── fr_FR
│   │   ├── messages.fr_FR.php
│   │   └── messages+intl-icu.fr_FR.php

通过指定语言路径,服务将自动加载指定语言区域目录和文件类型格式内的所有资源。

重要

资源文件名必须遵循以下约定

  • 默认消息:[domain].[locale].[format]
  • ICU 消息:[domain]+intl-icu.[locale].[format]

string $locale

从该语言区域目录加载文件的目录。

string $format

位于指定语言区域目录中的文件格式。

服务支持以下类型的文件:php, yaml, po, csv, json, xlf, ini, mo, qt。

The shortcut function _t().

服务提供了一个快捷函数,以便直接翻译消息。

use function Atk4\I18n\Resource\_t;

echo _t($id, $param, $domain, $locale)

string $id

要翻译的资源 ID。

array $param

[可选] - 翻译资源所需的参数。通常用于 ICU 消息格式。

string $domain

[可选] - 域名。默认为 'messages'。

string $locale

[可选] - 语言区域名称。默认为服务初始化方法中使用的语言区域。

可翻译的消息 T::class。

您可以使用可翻译消息 T::class 在稍后阶段定义某些要翻译的消息。

use Atk4\I18n\T;

// create translatable msg instance.
$msg = T::from($id, $param, $domain)
//...

// output $msg in specified locale when need.
echo $msg->in('fr_FR');

备用语言区域

symfony\translation 组件支持不可用语言区域资源的回退策略。

Service::addFallbackLocales(array $locales)

更多信息