fomvasss / laravel-translatable
一个用于管理SEO(元标签、XML字段等)的包
1.1.0
2020-12-29 19:52 UTC
Requires
- php: ^7.3|^7.4|^8.0
- illuminate/database: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0.5|^8.0
This package is auto-updated.
Last update: 2024-09-18 20:29:58 UTC
README
这是一个用于创建Eloquent-models翻译内容的Laravel包。为了翻译,创建不同语言的模型,并通过额外的字段建立它们之间的关系。主要优点是无需创建额外的表、模型或特定的JSON字段,所有操作都无需更改。该功能非常易于集成到现有/运行的项目中。你只需要通过连接一个PHP-Trait,将两个字段添加到所需的表/模型即可。
安装
要安装此包,请在终端中
composer require fomvasss/laravel-translatable
发布
在终端中运行
php artisan vendor:publish --provider="Fomvasss\LaravelTranslatable\ServiceProvider"
配置文件将发布到 config/translatable.php
。
用法
- 添加列(在可翻译的DB表中添加
langcode
和translation_uuid
)
示例
Schema::create('articles', function (Blueprint $table) {
...
$table->translatable();
});
// To drop columns
Schema::table('articles', function (Blueprint $table) {
$table->dropTranslatable();
});
- 你的模型应该使用
Fomvasss\LaravelTranslatable\Traits\HasTranslations
特性来启用翻译
示例: app/Models/Article.php
use Fomvasss\LaravelTranslatable\Traits\HasTranslations; class Article extends Model { use HasTranslations; //... }
- 在控制器中获取和保存文章翻译
示例控制器: app/Http/Controllers/ArticleController.php
class ArticleController extends Controller { public function index(Request $request) { // Select by config('app.locale'): $articles = \App\Model\Article::byLang()->paginate(); // OR by request $articles = \App\Model\Article::byLang($request->lang)->paginate(); // ... } public function store(Request $request) { // Let's create an article in English (en) $article1 = \App\Model\Article::create([ 'name' => 'Article 1, for EN language', 'langcode' => 'en', ]); // For the saved article ($article1) will be auto-generated UUID // Example: 70cf3963-cf41-464c-9d81-411d3a524789 // We will create a translation into Ukrainian (uk) for the article ($article1) $article2 = \App\Model\Article::create([ 'name' => 'Стаття 1, для UK мови', 'langcode' => 'uk', 'translation_uuid' => $article1->uuid, ]); // OR $article2 = \App\Model\Article::create(['name' => 'Стаття 1, для UK мови']); $article2->saveTranslatable('uk', $article1->uuid); // A couple langcode & translation_uuid must be unique // ... } public function show($id) { $article = \App\Model\Article::findOrFail($id); // Get related translations list for article $translation = $article->getTranslationList(); return view('stow', compact('article', 'translation')); } }
变更日志
请参阅 CHANGELOG 了解最近的变化。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果你发现任何安全问题,请通过电子邮件 fomvasss@gmail.com 而不是使用问题跟踪器。
鸣谢
许可
MIT许可(MIT)。请参阅 许可文件 了解更多信息。
编码愉快!