ryanj93 / php-locale-kit
一个简单的库,允许使用PHP管理语言包和翻译文本。
Requires
- php: >=7.0
Requires (Dev)
- php: >=7.0
Suggests
- php-tiny-cacher: Needed if you are going to take advantage of data caching.
This package is not auto-updated.
Last update: 2024-09-18 23:57:54 UTC
README
PHP Locale Kit 是一个简单的库,允许基于SQLite3数据库管理语言包。它还提供了一些实用工具,可以用于翻译文本以及检测其语言,支持使用Google和Yandex作为服务提供商。该包附带了一个CLI实用工具,允许创建和翻译语言包,更多信息和文档请参阅名为 "cli.md" 的文件。
安装
在安装此包之前,请确保已安装 sqlite3
扩展,通常此扩展与您的PHP安装一起提供。要通过Composer安装此包,只需运行以下命令
composer require ryanj93/php-locale-kit
用法:包
"Package" 类允许从语言包中获取标签,在使用之前,当然需要设置包的路径和要使用的区域设置,该区域设置必须由包支持,您可以为区域设置设置一个,允许库根据给定的区域代码的语言切换到回退区域设置,例如,如果您设置了 "en-US" 作为区域设置,但该包不支持它,则库将寻找任何与 "en" 匹配的区域设置,除非启用严格模式,以下是一个示例
$package = new Package(); //path, locale, strict mode //$locale is a string containing the locale code selected, if different by the given code, it means that a fallback locale has been picked. $locale = $package->setPackage('path/to/the/package.db', 'en-US', false);
您可以使用以下方法获取所有支持的区域设置列表
//Get all locales. $locales = $package->getSupportedLocales(); //Check for a specific locale support. //locale, strict mode $value = $package->isLocaleSupported('en-US', false);
现在您能够获取标签,您可以使用以下方法,传递一个包含标签ID的数组,ID可以是数字或字符串,具体取决于包,标签将作为关联数组返回,其中键是标签ID,值是其文本,如果找不到标签,则将其省略,以下是一个示例
$labels = $package->getLabels(array(1, 2, 3));
当然,您可以使用以下方法从包中获取所有标签
$labels = $package->getAllLabels();
用法:翻译器
"Translator" 类允许翻译和检测文本的语言,目前,它只支持Google和Yandex作为服务提供商,要使用它,您需要从您将要使用的提供商那里获取一个API密钥,默认情况下,使用Yandex,因为它提供免费的计划,每月可翻译高达10000000个字符,您可以从Yandex 这里 获取免费的API密钥,以下是一个设置示例
$translator = new Translator(); //token, text format $translator->setupYandex('YOUR API TOKEN HERE', Translator::HTML);
现在您可以使用此方法翻译一个或多个文本
//text, target language, original language $texts = $translator->translateText(array('Ciao mondo!'), 'en', 'it');
请注意,您可以选择省略原始语言,在这种情况下,它将被提供商自动检测。翻译的文本将作为关联数组返回,其中键是原始文本,值是翻译文本。以类似的方式,您可以检测一个或多个文本的语言,以下是一个示例
//text, target language, original language $detections = $translator->detectLanguage(array('Ciao mondo!'));
它将返回一个关联数组,其中键是原始文本,值是检测到的语言的代码。如果您需要获取服务提供商支持的所有语言的列表,您可以使用以下方法
$languages = $translator->getSupportedLanguages('en');
这两个类都支持数据缓存,您可以使用这些方法设置缓存
//Setup cached for the package. $package->setCache(true)->setCacheHandler($cache); //Setup cached for the translator. $translator->setCache(true)->setCacheHandler($cache);
数据缓存由库 "php-tiny-cacher" 提供,如示例所示,变量 "$cache" 是 "PHPTinyCacher" 类的实例,允许使用不同的选项存储数据,如Redis、Memcached和文件。您可以在其 GitHub 上的存储库 上找到更多关于它的信息。
如果你喜欢这个项目并认为它很有用,请不要害怕,大胆地贡献你的力量。你可以报告错误、问题或建议,或者如果你愿意,可以在这里捐款 这里。
你在寻找Node.js版本吗?请查看 这里。