我应该如何使用 Inertia 通过 Laravel 和 Vue 支持我的项目的本地化?

Abh*_*mar 6 php localization inertiajs laravel vue.js

我是 Laravel 的中级。我在 Laravel 中为我的客户发布了一些项目。

我使用 Inertia 与Laravel 和 Vue启动了一个项目。我使用了 Laravel 10 的入门工具包以及 Breeze 和 vue。当我设置项目并配置各种内容时,我浏览了Laravel 10 通过 artisan 命令发布的lang目录。

我陷入本地化困境。我只知道如何使用 Laravel 进行翻译和本地化。这是 Laravel 和 vue 对我来说绝对是新的。

我研究了如何实现本地化,但发现 3 到 4 年前的资源没有正确的实现,需要付出大量的努力,甚至缺乏 Laravel 的一些翻译功能。

正如我所说,我使用了入门工具包,并使用 artisan 命令发布了 lang 目录。我尝试更改failed位于auth.php. lang/en/auth.php通过输入错误的凭据进行检查,发现我的更新消息有误。但是现在我创建了hi印度印地语的目录。我复制auth.php并翻译了该文件的所有三条消息。我更改了默认区域设置config/app.php使用错误的凭据再次进行了测试。这次它没有显示我的印地语翻译。它再次显示相同的英文翻译。我再次尝试更改英语翻译行,它显示了更新的行。

我检查了这些文件组件以查找翻译源,我意识到它只是显示了一条错误消息form。我不知道为什么当我更改默认区域设置时它没有获取我的翻译文件。

我正在寻找一种更简单、更有效的方式在Laravel 中使用 Vue 和 Inertia进行本地化。

经过大量研究,我找到了这个包https://github.com/rmariuzzo/Laravel-JS-Localization

请让我知道它是否会以有效的方式完成这项工作,或者Laravel 中的 Vue 和 Inertia是否存在我看不见的默认设置。

谢谢

阿布舍克·库马尔

Hef*_*faz 9

在这种情况下,您可以执行以下本地化操作:

  1. 里面app/Providers/AppServiceProvider.php添加
'locale' => function () {
     return app()->getLocale();
            }
Run Code Online (Sandbox Code Playgroud)
  1. 使用安装laravel-vue-i18nnpm i laravel-vue-i18n并将其导入到您需要的组件中。例如:import { trans } from 'laravel-vue-i18n';

  2. 在导入 的同一组件中trans,您可以像这样使用它:

{{ trans('My Profile')}}
Run Code Online (Sandbox Code Playgroud)
  1. 在您更改语言的组件中(您可能有一个更改语言下拉列表),添加以下内容:
export default {
    setup() {
    methods: {
        changeLang(lang) {
            Inertia.get(route("language", lang));
            location.reload();
        },
    },
Run Code Online (Sandbox Code Playgroud)

5.为每种语言添加新的en.jsonhindi.json文件。这些文件应包含您用于翻译的所有字符串。例如:

{
    "My Profile": "some hindi text",
}
Run Code Online (Sandbox Code Playgroud)
  1. 为您的语言更改事件添加路线”
Route::get('language/{language}', function ($language) {
        session()->put('locale', $language);
        return;
    })->name('language');
Run Code Online (Sandbox Code Playgroud)

现在,单击更改语言下拉列表后,定义的字符串将被更改。

如果您遇到任何问题,我有一个正在运行的示例。