michaelspiss/translation

一个无依赖的基于文件的翻译组件。

v0.1.4 2017-08-27 15:25 UTC

This package is not auto-updated.

Last update: 2024-09-29 23:47:34 UTC


README

一个无依赖的基于文件的翻译组件。

Build Status Coverage Status Latest Stable Version License

它支持你抛给它的所有文件格式,复数形式,占位符,已完全测试和文档化。

安装

要使用Composer安装此包,只需运行以下命令

$ composer require michaelspiss/translation

基本用法

实例化一个新的翻译器很容易:只需传入默认区域设置(在这种情况下为'en')和你的翻译目录的路径!

require 'vendor/autoload.php'; // composer autoloader

use MichaelSpiss\Translation\Translator;

$translator = new Translator('en', 'path/to/translations');

组件使用点符号键来标识要加载的字符串。要获取特定语言的字符串,请使用trans()方法并传入键

$translator->trans('message.hello_world');

在这种情况下,字符串将在path/to/translations/en/message.php中找到。该文件本身将如下所示。

文件夹结构

语言字符串存储在初始化时传入的目录中的文件中。在此目录中,每个子目录代表一种支持的语言,并包含翻译文件。

translations/
 |- en/
 |   |- message.php
 |- de/
 |- fr/

翻译文件看起来如下

message.php
<?php

return [
    'hello_world' => 'Hello World!'
];

尽管默认只支持.php文件,但翻译文件可以是任何格式。有关更多信息,请参阅相应的wiki文章

设置区域设置

通常,区域设置只在初始化时设置一次,但组件也允许你在中途更改区域设置

$translator->setLocale('de');

此外,你还可以在不设置新区域设置并之后重置它的情况下,请求特定语言的单个翻译字符串

$translator->trans('message.hello_world', [], 'de');
// or:
$translator->transChoice('message.choice', 1, [], 'de');

使用占位符

在你的翻译文件中,占位符通过将花括号放在占位符名称周围(仅限大写和小写字母)来定义

message.php
<?php

return [
    'with_placeholder' => 'Hello {placeholder}!'
];

现在你可以在trans()调用中添加一个数组,包含占位符的值

$translator->trans('message.with_placeholder', ['placeholder' => 'World']);
// returns "Hello World!"

你可以在字符串中放置任意数量的占位符!

复数形式

要为字符串启用复数形式,只需在翻译文件中将单数和复数形式之间添加一个管道字符

message.php
<?php

return [
    'simple_pluralization' => 'Dog | Dogs'
];

第二种选项更高级,实际上允许你设置自己的规则

<?php

return [
    'advanced_pluralization' => '{0} None | [1,10] Some | [11,*] Many'
];

你可以使用以下表达式

表达式也支持整数和浮点数!

要获取字符串,请使用transChoice()方法,它还接受一个额外的number参数(类型为int或float)

$translator->transChoice('message.simple_pluralization', 4);
// returns "Dogs"

$translator->transChoice('message.advanced_pluralization', 8);
// returns "Some"

阅读更多

如果你想了解有关Translator的方法或如何使用除了.php以外的其他文件格式,请参阅此项目的wiki

PHP要求

  • PHP >= 7.0.0

许可证

MIT