apih/laravel-jslang

JavaScript,用于基于 Laravel 的应用程序的语言本地化

v1.2.6 2024-03-16 06:32 UTC

This package is not auto-updated.

Last update: 2024-09-28 09:12:24 UTC


README

Latest Version on Packagist Total Downloads License

此软件包提供在浏览器 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 - shortlong 类型的组合

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 devnpm 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)。请参阅 许可证文件 了解更多信息。