weglot/weglot-laravel

此包已被废弃,不再维护。作者建议使用weglot/translate-laravel包。

无缝集成 Weglot 到您的 Laravel 项目中

安装: 9

依赖: 0

建议者: 0

安全: 0

星星: 35

关注者: 7

分支: 3

开放问题: 2

类型:laravel-package

0.3.6 2018-08-13 14:00 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:13:22 UTC


README

创建一个新的项目并使用子域名集成(技术:其他)来翻译您的 Laravel 网站。

68747470733a2f2f63646e2e7765676c6f742e636f6d2f6c6f676f2f6c6f676f2d686f722e706e67

Laravel 包

WeglotSlack Latest Stable Version Maintainability License

概览

无缝集成 Weglot 到您的 Laravel 项目。

要求

  • PHP 版本 5.5 及以上
  • Laravel 5.*
  • Weglot API 密钥,从免费级别开始

安装

您可以通过Composer安装库。运行以下命令

composer require weglot/translate-laravel

要使用库,请使用 Composer 的自动加载

require_once __DIR__. '/vendor/autoload.php';

入门

包注册

此包使用自动发现,当您从 Composer 中调用它时,您不需要做任何事情,Provider 将会自动添加到您的 config/app.php providers 列表中。

如果这不起作用,您可以将我们的提供者添加到 config/app.php,如下所示

return [
    // ...

    'providers' => [
        // ... Other packages ...
        Weglot\Translate\TranslateServiceProvider::class
    ],

    // ...
];

快速配置

对于 Laravel 包,您可以通过以下操作发布配置文件

$ php artisan vendor:publish --provider="Weglot\Translate\TranslateServiceProvider" --tag="config"

您将在 config/weglot-translate.php 中找到配置文件,其中包含默认值。如果您想深入了解配置,我建议您查阅此 README 的相应部分

配置

以下是一个完整的配置文件

<?php

return [
    'api_key' => env('WG_API_KEY'),
    'original_language' => config('app.locale', 'en'),
    'destination_languages' => [
        'fr'
    ],
    'exclude_blocks' => ['.site-name'],
    'exclude_urls' => ['\/admin\/.*'],
    'prefix_path' => '',
    'cache' => false,

    'laravel' => [
        'controller_namespace' => 'App\Http\Controllers',
        'routes_web' => 'routes/web.php'
    ]
];

这是一个配置示例,请输入您自己的 API 密钥、您希望翻译成的目标语言和原始语言。

  • api_key : 是您的个人 API 密钥。您可以在Weglot上注册以获取 API 密钥。
  • original_language : 原始语言是翻译前的网站语言。
  • destination_languages : 是您希望网站翻译成的语言。
  • prefix_path : 如果您的 Laravel 安装不在 webroot 上(例如:如果 https://my.website.com/foo/ 是您的实际根目录),请将其设置为指定 Laravel 安装路径
  • cache : 如果您想使用缓存或不使用缓存。这不是必填字段,默认设置为 false。有关更多详细信息,请参阅缓存部分

还有其他非必填参数

  • exclude_blocks:在这里您可以列出所有不希望被翻译的块。在这个例子中,您可以看到所有带有site-name类的块都不会被翻译。
  • exclude_urls:您可以防止URL路径被翻译(例如,在这个例子中的管理员路径)

还有一些与Laravel相关的参数

  • laravel.controller_namespace:在重写路由时内部使用,如果您Laravel命名空间不是App或您的控制器已移动,则可以更改它。
  • laravel.routes_web:在重写路由时内部使用,参考包含您所有Web路由的文件。

路由

由于我们需要为每种目标语言添加路由,因此我们需要一种强大的方式来操作URL。

我们选择通过命名路由和route()辅助函数来实现。

当您创建路由时,必须按照以下方式提供名称

Route::get('/', 'Controller@method')
    ->name('my_route_name');

然后您可以在您的blade模板中按照以下方式使用它

<a href="{{ route('my_route_name') }}">My link</a>

就像这样,我们将检测当前语言并在需要时调整URL。

强制语言

您可以按照以下方式强制任何语言

<a href="{{ route('my_route_name', ['_wg_lang' => 'es']) }}">My link</a>

这样,它将强制为这个链接强制es语言!

缓存

我们为我们的包实现了使用Cache外观。

如果您想使用缓存,只需在这个包配置中将cache参数设置为true。它将连接到Laravel缓存行为。

如果您想清除您的翻译缓存,只需使用以下命令:weglot:cache:clear

$ php artisan weglot:cache:clear

辅助函数参考

weglotCurrentUrlInstance

这是该插件的核心辅助函数之一,它返回一个Weglot\Util\Url的实例,它负责

  • 检测当前语言
  • 基于当前URL翻译的URL是什么
  • 给定的URL是否可翻译(基于excludedUrls选项)
  • 生成href链接

以下是一些使用示例

$url = weglotCurrentUrlInstance();

// returns current language
$lang = $url->detectCurrentLanguage();

// returns all translated urls
$urls = $url->currentRequestAllUrls();
/**
 * Will return an array like this:
 * Array(
 *   'en' => 'https://weglot.com/',
 *   'fr' => 'https://weglot.com/fr',
 *   'es' => 'https://weglot.com/es',
 *   'de' => 'https://weglot.com/de'
 * )
 **/

// returns a boolean to know if the current url is translable
$translable = $url->isTranslable();

// returns string containing DOM with hreflang tags
$hreflangTags = $url->generateHrefLangsTags();
/**
 * Will return an array like this:
 * <link rel="alternate" href="https://weglot.com" hreflang="en"/>
 * <link rel="alternate" href="https://weglot.com/fr" hreflang="fr"/>
 * <link rel="alternate" href="https://weglot.com/es" hreflang="es"/>
 * <link rel="alternate" href="https://weglot.com/de" hreflang="de"/>
 **/

weglotButtonRender

您可以使用辅助函数weglotButtonRender添加语言按钮

有两个布局存在

<!-- first layout -->
{{ weglotButtonRender(1) }}

<!-- second layout -->
{{ weglotButtonRender(2) }}

如果您想覆盖这些模板,可以使用以下Artisan命令发布它们

$ php artisan vendor:publish --provider="Weglot\Translate\TranslateServiceProvider" --tag="views"

weglotHrefLangRender

Hreflang链接是描述您的网站并告诉网络爬虫(如搜索引擎)此页面是否可用其他语言的一种方式。有关Google关于hreflang的更多详细信息:[https://support.google.com/webmasters/answer/189077](https://support.google.com/webmasters/answer/189077)

您可以通过辅助函数weglotHrefLangRender添加它们

只需在<head>标签的末尾放置该函数

<html>
    <head>
        ...

        {{ weglotHrefLangRender() }}
    </head>

weglotLanguage

这是一个简单的辅助函数,用于将ISO 639-1代码转换为完整语言名称。它可以接受一个布尔参数,允许您选择使用英语名称或原始语言名称。

以下是一个快速示例

$name = weglotLanguage('bg');
// $name will contains: "Bulgarian"

$name = weglotLanguage('bg', false);
// $name will contains: "български"

示例

您将在每个存储库中找到一个简短的README,其中包含有关示例的详细信息

关于

translate-laravel 由 Weglot 开发团队指导和支持。

translate-laravel 由 Weglot SAS 维护和资助。 translate-laravel 的名称和标志是 Weglot SAS 的商标。

授权

MIT 许可证 (MIT)