apih / laravel-jslang
JavaScript,用于基于 Laravel 的应用程序的语言本地化
Requires
- php: ^8.0
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
README
此软件包提供在浏览器 JavaScript 中使用基于 Laravel 的应用程序的所有语言本地化消息的能力。它还包含一个简单的 JavaScript 翻译器库,该库具有一些与消息交互的方法。
需求
- PHP:
^8.0
- Laravel:
^8.0|^9.0|^10.0|^11.0
安装
您可以通过 Composer 安装此软件包
composer require apih/laravel-jslang
Apih\JsLang\JsLangServiceProvider
类默认自动发现并注册。
如果您想自己注册它,请将服务提供者在 config/app.php
中添加
'providers' => [ /* * Package Service Providers... */ Apih\JsLang\JsLangServiceProvider::class, ],
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Apih\JsLang\JsLangServiceProvider" --tag="jslang-config"
您可以使用以下命令发布 JavaScript 翻译器库
php artisan vendor:publish --provider="Apih\JsLang\JsLangServiceProvider" --tag="jslang-script"
用法
测试
要测试安装是否成功,您可以运行以下代码
use Apih\JsLang\JsLang; $jsLang = app(JsLang::class); echo $jsLang->getUrl('en', 'all'); echo $jsLang->getContents('en', 'all');
它应输出 URL 和语言本地化消息的 JavaScript 代码。
消息类型
有三种消息类型
short
- 在PHP
文件中定义的本地化消息long
- 在JSON
文件中定义的本地化消息all
-short
和long
类型的组合
JavaScript 文件
通过打开 getUrl()
生成的 URL,您将根据提供的区域设置和类型获取相应的内容。默认情况下,内容在运行时生成,除非您使用提供的 Artisan 命令事先生成所有文件。
Artisan 命令
您可以使用以下命令生成所有 JavaScript 文件
php artisan jslang:generate
默认情况下,使用 crc32
哈希算法生成包含在文件名中的内容的哈希值。您可以通过使用 --hash-algo
选项来更改算法。以下示例使用 sha256
哈希算法,并仅从生成的哈希值中取前 12 个字符
php artisan jslang:generate --hash-algo=sha256,12
生成的文件放置在 public/lang
目录中,基于默认配置。建议将此目录放在 .gitignore
文件中。
您可以使用以下命令清除所有生成的文件
php artisan jslang:clear
前端引导
为了在前端使用,需要采取几个步骤。首先,编辑 resources/js/app.js
以添加 JavaScript 翻译器
window.Lang = require('./lang');
然后,使用 npm run dev
或 npm run prod
编译 resources/js/app.js
。
之后,您需要在您的页面上进行配置
<script src="{{ asset('js/app.js') }}"></script> <script src="{{ app(\Apih\JsLang\JsLang::class)->getUrl('en', 'all') }}"></script> <script> Lang.setLocale('en'); Lang.setMessages(window.langData); </script>
为了测试它,您可以在浏览器中打开页面,并在控制台中运行以下代码进行测试
Lang.get('validation.required', { attribute: 'email' }); // Output: The email field is required. Lang.choice('[0] No user|[1] 1 user|[2,*] :count users', 0); // Output: No user Lang.choice('[0] No user|[1] 1 user|[2,*] :count users', 1); // Output: 1 user Lang.choice('[0] No user|[1] 1 user|[2,*] :count users', 2); // Output: 2 users
安全漏洞
如果您发现任何安全相关的问题,请通过电子邮件 hafizuddin_83@yahoo.com 发送,而不是使用问题跟踪器。请将主题前缀为 Laravel JS Lang:
。
鸣谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。