lkt / translations
LKT PHP 翻译
2.0.2
2024-09-01 20:20 UTC
Requires
- php: >=8.1.0
- ext-intl: *
- lkt/tools: ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^6.2
This package is auto-updated.
Last update: 2024-10-01 20:28:51 UTC
README
安装
composer require lkt/translations
使用
翻译文件夹和翻译文件
语言通过注册语言文件夹声明。这是你的项目中包含所需php文件的目录。
每个翻译文件必须返回一个数组。
例如
- / - - /translations - - - /en - - - - users.php - - - - ... - - - /es - - - - users.php - - - - ... - - - /it - - - - users.php - - - - ...
users.php的英文版本可以是
<?php return [ 'name' => 'Name', 'billing' => [ 'address' => 'Billing address', 'city' => 'Billing city', ] ];
在代码中注册翻译
每个目录都可以通过addLocalePath
方法加载
use Lkt\Translations\Translations; Translations::addLocalePath('en', __DIR__ . '/translations/en'); Translations::addLocalePath('es', __DIR__ . '/translations/es'); Translations::addLocalePath('it', __DIR__ . '/translations/it'); Translations::addLocalePath('fr', __DIR__ . '/translations/fr');
检索所有可用语言
use Lkt\Translations\Translations; $languages = Translations::getAvailableLanguages(); // An array => ['en', 'es', 'it', 'fr]
访问翻译
use Lkt\Translations\Translations; // Get translations with current language Translations::get('name'); // Nested translations can be accessed using the dot separator: Translations::get('billing.address'); // Specify wanted language Translations::get('name', 'it');
当前语言
默认情况下,使用的语言是加载翻译目录时注册的第一个语言。
如果你想,可以随时这样更新
use Lkt\Translations\Translations; Translations::setLang('es');
附加功能
在语言之间找到丢失的翻译
有时候维护翻译文件可能会有点困难,为此有一个有用的方法
use Lkt\Translations\Translations; $missed = Translations::getMissedTranslations()
此方法将为每个语言返回一个数组,其中包含所有未翻译的键。
例如
[ 'en' => [ 'sayHello' => '' ], 'es' => [ 'sayHello' => 'Hi' ] ]
在语言之间找到具有相同值的翻译
是时候检测是否有已声明但尚未翻译的翻译了。
use Lkt\Translations\Translations; $missed = Translations::getTranslationsNotTranslated()
此方法将为每个语言返回一个数组,其中至少有一个键在其他语言中有相同的值。
例如
[ 'en' => [ 'lorem' => 'ipsum', 'dolor.sit.amet' => 'Amet' ], 'es' => [ 'lorem' => 'ipsum', 'dolor.sit.amet' => 'Amet' ] ]
导出翻译
use Lkt\Translations\Translations; $exported = Translations::export(); // $exported content: [ "en" => [ "lorem" => "ipsum", "dolor.sit.amet" => "Dolor sit amet", ], "fr" => [ "lorem" => "ipsum", "dolor.sit.amet" => "Dolor sit amet fr", "langExclusiveTranslation" => "Hi" ] ];