slexx/ lang
国际化库
v0.1
2017-12-28 19:20 UTC
Requires
- slexx/config: ^1.0
- slexx/pattern: ^1.2
- slexx/request: ^1.1
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-29 04:55:01 UTC
README
一个用于管理本地化的类,不依赖于文件系统,可以与任何文件和文件夹结构一起工作。可以处理json、yaml、ini和php文件。
// Устанавливаем файлы с переводами Lang::setFile('ru', 'messages', __DIR__ . '/locales/ru/messages.json'); Lang::setFile('en', 'messages', __DIR__ . '/locales/en/messages.yaml'); // Устанавливаем локализацию Lang::setLocale(Lang::searchLocale('ru')); // Добываем переводы в нужных местах Lang::translate('messages:key');
安装
通过composer安装
$ composer require slexx/lang
文档
Lang::setFile($locale, $namespace, $path)
安装本地化文件
参数
异常
返回: void
Lang::hasFile($locale, $namespace)
检查本地化文件是否存在
参数
返回: bool
Lang::getFile($locale, $namespace)
获取本地化文件的路径
参数
返回: string,null - 文件路径或null(如果不存在)
Lang::removeFile($locale, $namespace)
删除本地化文件
参数
返回: void
Lang::getLocales()
获取所有可用本地化列表
返回: string[]
Lang::props($string, $props)
替换字符串中的变量
返回: string
示例
echo Lang::props('Hello, :name!', ['name' => 'World']); // Hello, World!
Lang::parseAcceptLanguage()
解析HTTP头Accept-Language
返回: array
示例
var_dump(Lang::parseAcceptLanguage()); // [ // ['code' => 'ru', 'region' => 'RU', 'quality' => 1], // ['code' => 'ru', 'region' => null, 'quality' => 0.8], // ['code' => 'en', 'region' => 'US', 'quality' => 0.6], // ['code' => 'en', 'region' => null, 'quality' => 0.4], // ... // ]
Lang::hasLocale($locale)
检查本地化是否可用
参数
返回: bool
Lang::setLocale($locale)
设置本地化
参数
异常
返回: void
Lang::getLocale()
获取本地化
返回: string
Lang::searchLocale([$default])
根据Accept-Language头搜索最合适的本地化。在使用此方法之前,应使用setFile方法指定本地化文件
参数
返回: string - 最合适的本地化的ISO代码
Lang::raw($path)
获取未经处理的原始翻译
参数
异常
返回: array,string,null
Lang::translate($path[, $props])
获取带有参数替换的翻译
参数
异常
返回: string
示例
messages.php
<?php return [ 'hello' => 'Привет, :name!', ];
index.php
Lang::setFile('ru', 'messages', __DIR__ . '/messages.php'); Lang::setLocale('ru'); echo Lang::translate('messages:hello', ['name' => 'Алексей']); // Выведет: 'Привет, Алексей!'
Lang::setPluralFunction($locale, $function)
为语言设置复数函数
返回: void
示例
Lang::setPluralFunction('ru', function($n) { return $n%10==1&&$n%100!=11?0:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?1:2); }); Lang::setPluralFunction('en', function($n) { return $n>1?1:0; });
Lang::removePluralFunction($locale)
删除语言的复数函数
返回: void
Lang::hasPluralFunction($locale)
检查语言是否存在复数函数
返回: bool
Lang::getPluralFunction($locale)
获取语言的复数函数
返回: callable,null
Lang::getPluralFunction($path, $counter[, $props])
复数翻译
返回: string
异常
示例
blog.php
<?php return [ 'comments' => [':count комментарий', ':count комментария', ':count коментариев'], ];
index.php
Lang::setFile('ru', 'blog', __DIR__ . '/blog.php'); Lang::setLocale('ru'); Lang::plural('blog:comments', 1); // 1 комментарий Lang::plural('blog:comments', 2); // 2 комментария Lang::plural('blog:comments', 45); // 45 коментариев