weglot / 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-02-01 13:13:22 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 列表中。
如果这不起作用,您可以将我们的提供者添加到 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 的商标。