cosninix / sin
Laravel 的简单国际化
Requires
- php: ^7|^8
- illuminate/support: ^8.0|^9.0|^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: *
- phpmd/phpmd: ^2.8
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-09-08 11:07:29 UTC
README
Sin 对国际化(i18n)采取了一种全新的方法,适用于简单的项目或开发者可以快速进行即时翻译的情况。其工作方式非常简单:只需以特殊格式定义包含所有语言的字符串,如下所示
"en::What is your name?|nl::Wat je is naam?|de::Wie heisst du?|fr::Comment t'appelles-tu?"
因为 Sin 只使用字符串,所以它可以在代码中,也可以在数据库、yaml 或 json 文件中,或者在任何向用户展示字符串的地方使用。
Sin 与 Laravel 无缝集成,并使用旧的和新的 Laravel 国际化风格,因此它被视为该机制的附加组件。
Sin 对双语应用程序(如荷兰语/英语)最有用,在这种应用程序中,开发者在编码时可以包括即时翻译。
安装
composer install cosninix/sin
sin 包创建了一个 Sin 面向对象别名、一个服务提供商和一个辅助函数
基本用法
echo app('Sin')->lang("nl::via de serviceprovider|en::via the serviceprovider");
echo Sin::lang("nl::via de Sin facade deze keer|en::through the Sin facade this time");
// three underscores
echo ___("nl::via de helper function|en::works with the helper function");
在 blade 中也可以使用 @slang 指令
<h1>@slang('nl::blade constructie|en::blade construct')</h1>
如果未找到 sin 语法,Sin 将字符串原样传递。语法在以 XX:: 格式开头的所有字符串上触发。
Sin::lang('passed without alterations %f'); --> 'passed without alterations %f'
Sin 将每个结果(语法被触发的所有结果)通过 sprintf 运行
Sin::lang("en::We have %d smartphones in stock|nl::nu %d smartphones op voorraad",20);
当然,Sin 不仅仅限于 PHP 代码。只要在展示之前通过 Sin 传递,你就可以在 yaml 或 json 文件中使用 Sin。
list: { options: [ 1, 3 ], text: [ "nl::kies 1|en::choose 1", "nl::Neem er 3|en::Take 3" ] }
例如,这可以在 blade 中的数据库值中完成
<h1>@slang( $stock->article_name )</h1>
Laravel 集成
Sin 使用 app.locale 配置作为默认语言,使用 app.fallback_locale 作为回退语言。如果你使用以下方式更改 app 语言:
App::setLocale('nl');
如果当前语言未找到,则使用回退语言。
你可以通过提供额外的 laravel 键来为 Laravel 翻译做准备,该键可以与传统的 @lang 构造一起使用
Sin::lang('nl::Nederlands|en::English|@@::language_key);
如果 language_key 存在于 Laravel 翻译中,则它具有优先级,否则使用 Sin 翻译。因此,你可以稍后添加传统翻译。