compositephp / localization
基于文件的简单易用本地化和复数化
v0.1.0
2022-10-24 21:48 UTC
Requires
- php: ^8.1
- psr/log: 1 - 3
Requires (Dev)
- vimeo/psalm: ^4.29
This package is auto-updated.
Last update: 2024-09-25 15:37:12 UTC
README
基于文件的简单翻译和复数化 PHP 库。
概述
要求
- PHP 8.1+
- 所需的数据库驱动程序的 PDO 扩展
安装
通过 composer 安装包
$ composer require compositephp/localization
本地化
首先,你需要创建一个新类,并从 Composite\Localization\AbstractLocalization
继承
use Composite\Localization\AbstractLocalization; use Composite\Localization\Language; class Localization extends AbstractLocalization { public function __construct(Language $language) { parent::__construct( language: $language, sourcePath: '/directory/to/your/locale/files', ); } public function general(string $text, array $placeholders = []): string { return $this->get('general', $text, $placeholders); } public function profile(string $text, array $placeholders = []): string { return $this->get('profile', $text, $placeholders); } //other categories //... }
使用方法
其次,在本地化源路径 /directory/to/your/locale/files
中创建分类文件
- general.php
- profile.php
general.php
的示例内容
use Composite\Localization\Language; return [ 'Hello World!' => [ Language::FR->value => 'Bonjour le monde!' ], 'hello_world' => [ Language::EN->value => 'Hello World!', Language::FR->value => 'Bonjour le monde!', ], 'Hello {{first_name}} {{last_name}}!' => [ Language::FR->value => 'Bonjour {{first_name}} {{last_name}}!', ], 'hello_fullname' => [ Language::EN->value => 'Hello {{first_name}} {{last_name}}!', Language::FR->value => 'Bonjour {{first_name}} {{last_name}}!', ], 'Hello {{name}}, you have {{num}} [[new_comment:num]]' => [ Language::FR->value => 'Bonjour {{name}}, vous avez {{num}} [[new_comment:num]]', ], ];
使用方法
use Composite\Localization\Language; $localization = new Localization(Language::FR); $localization->general('Hello World!'); //Bonjour le monde! $localization->general('hello_world'); //Bonjour le monde! $localization->general( 'Hello {{first_name}} {{last_name}}!', ['first_name' => 'John', 'last_name' => 'Smith'] ); //Bonjour John Smith! $localization->general( 'hello_fullname', ['first_name' => 'John', 'last_name' => 'Smith'] ); //Bonjour John Smith! //if translation not exists localization instance will still output it as is $localization->general('Bye World!'); //Bye World! $localization->general('bye_world'); //bye_world $localization->general( 'Bye {{first_name}} {{last_name}}!', ['first_name' => 'John', 'last_name' => 'Smith'] ); //Bye John Smith!
复数化
在包含翻译分类的文件夹 /directory/to/your/locale/files
中创建一个名为 _plural.php
的文件
use Composite\Localization\Language; use Composite\Localization\Plurals\EnglishPlural; use Composite\Localization\Plurals\FrenchPlural; return [ 'new_comment' => [ Language::EN->value => new EnglishPlural('new comment', 'new comments'), Language::FR->value => new FrenchPlural('nouveau commentaire', 'nouveaux commentaires'), ], ];
使用方法
$localization->general( 'Hello {{name}}, you have {{num}} [[new_comment:num]]', ['name' => 'John', 'num' => 1] ); //Bonjour John, vous avez 1 nouveau commentaire $localization->general( 'Hello {{name}}, you have {{num}} [[new_comment:num]]', ['name' => 'John', 'num' => 2] ); //Bonjour John, vous avez 2 nouveaux commentaires
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE
。由 Composite PHP 维护。