将您的 Laravel 语言翻译添加到资产管道中,以便在 Vue 或 React 等 JavaScript 包中使用。

安装次数: 2,986

依赖项: 0

建议者: 0

安全: 0

星级: 21

关注者: 1

分支: 2

开放问题: 2

语言:JavaScript

v0.9.63 2024-07-25 17:19 UTC

This package is auto-updated.

Last update: 2024-09-25 17:41:08 UTC


README

Stand With Ukraine Stand With Ukraine Russian Warship Go Fuck Yourself Made in Ukraine

最初基于 Zora,但进行了大量修改。

生成 JS 文件中的翻译

此库允许您将 Laravel 翻译生成到资产管道中,以便在 Vue(React 即将推出)等 JavaScript 包中使用。

需求

  • Laravel: ^9.* 或更高版本
  • InertiaJS: ^1.*
  • VueJS: ^3.*
  • ViteJS: ^3.*

安装

首先,使用 composer 安装此包

composer require cyberwolfstudio/lingua

该包将自动注册自己。

接下来,向您的 vite.config.js 添加别名

 resolve: {
    alias: {
        ...
        'lingua-js': resolve(__dirname, 'vendor/cyberwolfstudio/lingua/dist/index.js')
    },
},

要构建您的 Laravel 翻译到 JS 文件,使用

php artisan lingua:generate

您可以按需自动化此过程。但我们推荐您使用名为 vite-plugin-run 的 vite 插件。使用您的包管理器安装它,并将以下行添加到您的 vite.config.js 插件部分。

 run({
    name: "generate translations",
    run: ['php', 'artisan', 'lingua:generate'],
    pattern: ['resources/lang/**', 'lang/**'],
})

使用示例:(仅在 serve 过程中运行)

{
            ...run([
                {
                    name: 'generate translations',
                    run: ['php', 'artisan', 'lingua:generate'],
                    pattern: ['resources/lang/**', 'lang/**'],
                },
                {
                    name: 'generate ziggy',
                    run: ['php', 'artisan', 'ziggy:generate'],
                    pattern: ['routes/**'],
                }
            ]),
            apply: 'serve'
        }

VueJS

在您的 resources/js/app.js 和(如果您使用 SSR) resources/js/ssr.js 中添加导入

import { LinguaVue } from 'lingua-js'
import { Lingua } from './lingua'

并注册 LinguaVue 插件

...
.use(LinguaVue, {
    Lingua
})

locale 键添加到您的 HandleInertiaRequest::share 方法中

[
    ...
    locale' => fn() => app()->getLocale(),
    ...
]

这样,您的应用程序就会知道您的初始语言环境。

React

即将推出

使用方法

在您的模板标签中使用它,就像 Laravel 风格一样

__(key: string, replacers: array)

//or

trans(key: string, replacers: array)

您还可以通过注入来在 setup 函数中使用 trans。

const trans = inject('trans') 

变更日志

在此处所做的所有更改将描述在 Changelog.md 文件中。