weglot/translate-laravel

此包已被放弃,不再维护。未建议替代包。

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

安装数: 1,024

依赖: 0

建议者: 0

安全: 0

星星: 36

关注者: 9

分支: 3

开放问题: 2

类型:laravel-package

0.3.6 2018-08-13 14:00 UTC

This package is not auto-updated.

Last update: 2022-06-25 17:43:57 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列表中。

如果不起作用,您可以像下面这样将我们的Provider添加到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 Facade 的使用。

如果您想使用缓存,只需将此包配置中的 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)