一个用于复制Laravel语言文件的JavaScript版本包

dev-master 2021-08-21 09:57 UTC

This package is auto-updated.

Last update: 2024-09-22 02:43:22 UTC


README

Version Documentation License: MIT Twitter: developrsunesis

一个提供轻松导出和同步Laravel本地化文件以便在JavaScript中使用的方法的包

问题

我有Laravel项目/网站,在思考如何同步我的本地化和翻译文件以供JavaScript使用时;我的第一个方法是当用户首次访问应用程序时,将本地化内容存储在浏览器的localStorage中。虽然这是一个可行的解决方案,但我意识到这并不足够高效,因为这意味着用户访问的第一个页面可能无法立即翻译字符串,直到本地化内容已存在于localStorage中。另一个解决方案是将本地化内容直接注入到DOMElement中:<data id='lang' value="{{getAllLangContent()}}" />,显然这是一个权衡,因为这会大大增加页面加载时间,但解决了翻译不可用的问题。

最终解决方案

我目前使用的最终解决方案是定期同步本地化文件以供JavaScript使用。该包读取以下文件

resources
├── lang
│   ├── en
│   │   ├── auth.php
│   │   └── dashboard.php
│   ├── fr
│   │   ├── auth.php
│   │   └── dashboard.php

并将其转换为压缩的js文件

public
├── js
│   ├── locales
│   │   ├── en.min.js
│   │   ├── fr.min.js
│   │   └── lang2js.min.js

因此,每个需要使用的区域都将导入到我的blade组件中

...
<footer>
    <script src="{{assets('js/locales/en.min.js')}}"></script>
    <script src="{{assets('js/locales/fr.min.js')}}"></script>
    <script src="{{assets('js/locales/lang2js.min.js')}}"></script>
    <script>
       let helloText = __("index.TEST_2", 'en') // this function is provided by `lang2js.min.js`
       document.getElementById("hellotext").innerHTML = helloText
    </script>
</footer>
...

安装

composer require developersunesis/lang2js

使用方法

你可以简单地运行以下命令

php artisan lang2js:export exportDir=:exportDir

上面的命令从Laravel默认的lang文件夹中读取翻译文件。

但是,如果您想从自定义位置读取翻译文件,可以使用以下命令

php artisan lang2js:export exportDir=:exportPath localesDir=:localesPath

上面的两个命令使用了应用程序的基础路径和您指定的路径作为它们的绝对路径。
示例

php artisan lang2js:export exportDir=/public/js/locales localesDir=/resources/lang

# Uses full path
# exportDir == {YOUR_CURRENT_APP_LOCATION}/public/js/locales
# localesDir == {YOUR_CURRENT_APP_LOCATION}/public/resources/lang

要禁用命令使用您的应用程序基础文件,您可以在命令中添加以下选项

php artisan lang2js:export exportDir=C:/manners/Documents/public/js/locales localesDir=C:/manners/Documents/resources/lang --useBasePath=false

有各种用例,其中之一是为包创建一个计划,定期重新同步JavaScript翻译,这对于使用可以动态更改的Laravel本地化非常有用

$command = "php artisan lang2js:export exportDir=/public/js/locales"
$schedule->command($command)
          ->weekdays()
          ->daily();

# or through a facade function call
$schedule->call(function () {
    $lang2js = new Lang2js();
    $lang2js->setExportsDir("resources/exports");
    $lang2js->export();
})->weekly()->daily();

# or through a facade function call
$schedule->call(function () {
    L2J::setExportsDir("/public/js/locales")->export();
})->weekly()->daily();

作者

👤 Uche Emmanuel

🤝 贡献

欢迎贡献、问题和功能请求!
请随意查看问题页面

展示您的支持

如果此项目对您有帮助,请给予一个⭐️!

此README是用❤️由readme-md-generator生成的