weglot / translate-laravel
无缝将Weglot集成到您的Laravel项目中
Requires
- cache/illuminate-adapter: ^0.2.0
- illuminate/filesystem: ^5.4
- weglot/weglot-php: ^0.6
This package is not auto-updated.
Last update: 2022-06-25 17:43:57 UTC
README
创建一个新项目,并使用子域名集成(技术:其他)来翻译您的Laravel网站。
Laravel包
概述
无缝将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 的商标。