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是否存在我看不见的默认设置。
谢谢
阿布舍克·库马尔
在这种情况下,您可以执行以下本地化操作:
app/Providers/AppServiceProvider.php添加'locale' => function () {
return app()->getLocale();
}
Run Code Online (Sandbox Code Playgroud)
使用安装laravel-vue-i18n包npm i laravel-vue-i18n并将其导入到您需要的组件中。例如:import { trans } from 'laravel-vue-i18n';
在导入 的同一组件中trans,您可以像这样使用它:
{{ trans('My Profile')}}
Run Code Online (Sandbox Code Playgroud)
export default {
setup() {
methods: {
changeLang(lang) {
Inertia.get(route("language", lang));
location.reload();
},
},
Run Code Online (Sandbox Code Playgroud)
5.为每种语言添加新的en.json或hindi.json文件。这些文件应包含您用于翻译的所有字符串。例如:
{
"My Profile": "some hindi text",
}
Run Code Online (Sandbox Code Playgroud)
Route::get('language/{language}', function ($language) {
session()->put('locale', $language);
return;
})->name('language');
Run Code Online (Sandbox Code Playgroud)
现在,单击更改语言下拉列表后,定义的字符串将被更改。
如果您遇到任何问题,我有一个正在运行的示例。