trinityrank/multilanguage

为同一页面但在其他语言的页面添加替代多语言标签

v1.0.0 2022-11-22 16:37 UTC

This package is auto-updated.

Last update: 2024-09-23 16:06:28 UTC


README

Latest Version on Packagist Total Downloads

为同一页面但在其他语言的页面添加替代多语言标签。

安装

步骤 1:安装包

要开始使用 Laravel 多语言,使用 Composer 命令将包添加到您的 composer.json 项目的依赖中

前端和后端

    composer require trinityrank/multilanguage

仅对于后端,我们也需要这个包

    composer require epartment/nova-dependency-container

Laravel Nova 管理员 - 后端部分

步骤 2:数据库

  • 您需要从包中发布迁移
    php artisan vendor:publish --provider="Trinityrank\Multilanguage\MultilanguageServiceProvider" --tag="multilanguage-migration"
  • 然后您需要为所有租户运行迁移
    php artisan tenant:artisan "migrate"
  • 或仅为一个特定的租户
    php artisan tenant:artisan "migrate" --tenant=[--TENANT-ID--]

步骤 3:更新数据库默认语言

  • 将数据库字段 "multilang_language" 更新为您的网站默认语言
    UPDATE `articles` SET `multilang_language`='us' WHERE 1;
    UPDATE `pages` SET `multilang_language`='us' WHERE 1;
    UPDATE `categories` SET `multilang_language`='us' WHERE 1;
    UPDATE `static_pages` SET `multilang_language`='us' WHERE 1;

步骤 4:添加字段

  • 将字段添加到您的(操作员)资源的 "fields" 方法中
    use Trinityrank\Multilanguage\MultilanguagePanel;
    
    ...
    
    MultilanguagePanel::make()
  • 或如果您使用条件字段,只需将其添加到 "fields" 方法中
    // use "$this" or "self::", depends of resource structure
    $this->getMultilanguagePanel('Multilanguage', 'multilanguage')
  • 取决于语言选择的字段
    // use "$this" or "self::", depends of resource structure
    // $this->getMultilanguageCategory("Language", [Resource::class, Model::class, ['rules']]),
    // example:
    $this->getMultilanguageCategory("Language", [ReviewPageCategory::class, TypesReviewPageCategory::class, ['required']]),

步骤 5:如果您正在使用条件字段

在租户默认配置中添加此内容

    'conditional_fields' => [
        ...

        '{{your_page_type_name}}' => [
            'categories' => [
                'visible' => true,
                'rules' => ['required', 'min:1', 'max:1', ... ]
            ],
        ]

        ...
    ]

在租户-{{tenant name}} 配置中添加此内容

    'conditional_fields' => [
        ...

        '{{your_page_type_name}}' => [
            'language' => [
                'visible' => true
            ],
            'categories' => [
                'visible' => true,
                'visibility' => ['onlyOnIndex'],
                'rules' => ['required', 'min:1', 'max:1']
            ],
        ]

        ...
    ]

步骤 6:添加语言

在您的 "config\app.php" 中添加多语言区域(使用 ISO 语言代码)。例如

    'locales' => [
        "us" => "USA",
        "uk" => "Great Britain",
        "ca" => "Canada",
        "au" => "Australia",
        "de" => "German",
        "at" => "Austria",
    ],

前端部分

步骤 7:前端部分

将辅助函数添加到 "composer.json" 文件中

        "autoload": {
            "files": [
                "vendor/trinityrank/multilanguage/src/Frontend/helpers.php"
            ],
            ...
        } 

然后运行

    composer dump-autoload

并将默认的 "route()" 方法更改为 "multilang_route()"

步骤 8:添加语言

在您的 "config\app.php" 中添加多语言区域(使用 ISO 语言代码)。例如

    'locales' => ['us', 'uk', 'ca', 'au', 'de', 'at'],

步骤 9:添加 hreflang 元标签

  • 为 hreflang 元标签,将以下内容添加到您的 master.blade 文件中的 head 标签中
    <!-- Multilanguage alternate link tags -->
    {!! Trinityrank\Multilanguage\Frontend\HreflangDisplay::meta_tags($item) !!}
  • app.php 文件的底部添加此部分代码,并根据网站设置更改值
    // Url structure scheme (same as multicore tenant config file)
    'services' => [
        'deals' => false,
        'MoneyPage' => [
            'include_category_in_url' => false,
            'slug' => 'best',
        ],
        'News' => [
            'include_category_in_url' => false,
            'slug' => 'news',
        ],
        'Blog' => [
            'include_category_in_url' => false,
            'slug' => false,
        ],
        'ReviewPage' => [
            'include_category_in_url' => false,
            'slug' => 'reviews',
        ]
    ],