rougin/transcribe

一个简单的PHP本地化包。

v0.3.1 2016-09-11 09:32 UTC

This package is auto-updated.

Last update: 2024-09-04 14:52:16 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Total Downloads

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 了解更多信息。