wildalmighty / gettext
PHP - JS gettext 转换器
dev-master
2013-09-10 12:59 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-24 03:28:36 UTC
README
由 Oscar Otero 创建 http://oscarotero.com oom@oscarotero.com
GNU Affero GPL 版本 3. https://gnu.ac.cn/licenses/agpl-3.0.html
Gettext 是一个 PHP 库,用于导入/导出/编辑 PO、MO、PHP、JS 文件等格式的 gettext。
功能
- 用 php 5.3 编写
- 可扩展性,支持插件
包含以下类
- Gettext\Translation - 包含翻译定义
- Gettext\Entries - 翻译集合
- Gettext\Translator - PHP 的 gettext 实现
提取器
提取器是类,可以从任何源提取 gettext 值,并返回包含它们的 Gettext\Entries 实例。
- Gettext\Extractors\PhpCode - 扫描 PHP 文件以查找所有 gettext 函数并收集其字符串
- Gettext\Extractors\JsCode - 扫描 JavaScript 文件以查找所有 gettext 函数并收集其字符串
- Gettext\Extractors\PhpArray - 从返回值数组的 PHP 文件中获取字符串(PhpArray 生成器的补充)
- Gettext\Extractors\Po - 从 PO 文件中获取字符串
- Gettext\Extractors\Mo - 从 MO 文件中获取字符串
生成器
生成器接受 Gettext\Entries 实例,并将数据导出为以下格式之一。
- Gettext\Generators\Mo - 生成 Mo 文件
- Gettext\Generators\Po - 生成 Po 文件
- Gettext\Generators\Jed - 生成与 Jed 库兼容的 json 文件
- Gettext\Generators\PhpArray - 生成返回包含所有值的 Php 文件
如何使用?
首先,让我们扫描一个 Po 文件
//Include the autoloader if you don't use composer or PSR-0 loader include('myLibsFolder/Gettext/autoloader.php'); use Gettext\Extractors\Po as PoExtractor; $translations = PoExtractor::extract('my-file.po');
现在,我们可以编辑一些翻译
$translation = $translations->find(null, 'apples'); if ($translation) { $translation->setTranslation('Mazáns'); }
然后导出为 Php 文件和 json 文件,用于与 Jed 库一起使用 (http://slexaxton.github.com/Jed/)
use Gettext\Generators\PhpArray as PhpArrayGenerator; use Gettext\Generators\Jed as JedGenerator; PhpArrayGenerator::generateFile($translations, 'locate.php'); JedGenerator::generateFile($translations, 'locate.json');
现在我们可以在代码中使用这些翻译
use Gettext\Translator as Gt; Gt::loadTranslations('locate.php'); echo Gt::gettext('apples'); //Returns Mazás
您可以使用翻译函数,它是 Gettext\Translator 的简短版本,使用起来更方便
echo __('apples'); //Returns Mazás __e('apples'); //echo Mazás
并且您可以使用相同的翻译在 JavaScript 中与 Jed 库一起使用 (http://slexaxton.github.com/Jed/)
$.getJSON('locate.json', function (locale) { i18n = new Jed({ locale_data: locale }); alert(i18n.gettext('apples')); //alerts "Mazás" });
待办事项
- 自定义复数解析器
- 使用域进行操作