rougin / transcribe
一个简单的PHP本地化包。
v0.3.1
2016-09-11 09:32 UTC
Requires
- php: >=5.3.0
- tebru/multi-array: ~0.2
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
README
Transcribe 是一个简单的PHP本地化包。本地化源可以是文件基础(类似于 Laravel的本地化)或来自数据库连接。
安装
通过 Composer 安装 Transcribe
$ composer require rougin/transcribe
基本用法
从目录加载文本列表
Transcribe
包需要一个本地化文件,其中包含文本及其翻译的列表(例如,fil_PH.php
)
// locales/fil_PH.php $texts = array(); $texts['language'] = 'linguahe'; $texts['name'] = 'pangalan'; $texts['school'] = 'paaralan'; return $texts;
在 Transcribe
类中指定本地化文件的路径
// index.php use Rougin\Transcribe\Source\DirectorySource; use Rougin\Transcribe\Transcribe; // Specify the localization source --- $path = (string) __DIR__ . '/locales'; $source = new DirectorySource($path); // ----------------------------------- $transcribe = new Transcribe($source);
从数据库加载文本列表
或者,本地化源可以是数据库。它应在指定的表中具有以下字段
name
- 数据库表名language
- 基于区域设置的语言名称(例如en_GB
)text
- 关键字或要翻译的文本translation
- 基础语言的翻译
| language | text | translation |
| -------- | ------ | ----------- |
| fil_PH | name | pangalan |
| fil_PH | school | paaralan |
// index.php use Rougin\Transcribe\Source\DirectorySource; use Rougin\Transcribe\Transcribe; // Create a PDO instance ----------------- $dsn = 'mysql:host=localhost;dbname=demo'; $pdo = new PDO($dsn, 'root', ''); // --------------------------------------- // Specify the fields from the table --- $table = array('name' => 'words'); $table['language'] = 'language'; $table['translation'] = 'translation'; $table['text'] = 'text'; // ------------------------------------- $source = new DatabaseSource($pdo, $table); $transcribe = new Transcribe($source);
从不同的源加载文本列表
如果有多个本地化源,可以使用 SourceCollection
类将它们存储到单个类中
// index.php use Rougin\Transcribe\Source\DatabaseSource; use Rougin\Transcribe\Source\DirectorySource; use Rougin\Transcribe\Source\SourceCollection; use Rougin\Transcribe\Transcribe; $collection = new SourceCollection; // "$database" is a DatabaseSource // "$directory" is a DirectorySource $collection->add($database)->add($directory); $transcribe = new Transcribe($collection);
从词汇表中获取文本
使用 get
方法获取指定的翻译。同时使用 all
方法获取所有可用的文本
// Returns all stored texts $texts = $transcribe->all(); // Returns translation of 'name' in 'fil_PH' group (e.g "pangalan") $text = $transcribe->get('fil_PH.name');
添加新源
通过实现 SourceInterface
添加自定义源是可能的
namespace Rougin\Transcribe\Source; interface SourceInterface { /** * Returns an array of words. * * @return array<string, array<string, string>> */ public function words(); }
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
测试
$ composer test
鸣谢
许可证
MIT许可证(MIT)。请参阅 LICENSE 了解更多信息。