fomvasss/laravel-translatable

一个用于管理SEO(元标签、XML字段等)的包

安装: 4

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:composer-package

1.1.0 2020-12-29 19:52 UTC

This package is auto-updated.

Last update: 2024-09-18 20:29:58 UTC


README

License Build Status Latest Stable Version Total Downloads Quality Score

这是一个用于创建Eloquent-models翻译内容的Laravel包。为了翻译,创建不同语言的模型,并通过额外的字段建立它们之间的关系。主要优点是无需创建额外的表、模型或特定的JSON字段,所有操作都无需更改。该功能非常易于集成到现有/运行的项目中。你只需要通过连接一个PHP-Trait,将两个字段添加到所需的表/模型即可。

安装

要安装此包,请在终端中

composer require fomvasss/laravel-translatable

发布

在终端中运行

php artisan vendor:publish --provider="Fomvasss\LaravelTranslatable\ServiceProvider"

配置文件将发布到 config/translatable.php

用法

  1. 添加列(在可翻译的DB表中添加 langcodetranslation_uuid

示例

Schema::create('articles', function (Blueprint $table) {
    ...
    $table->translatable();
});

// To drop columns
Schema::table('articles', function (Blueprint $table) {
    $table->dropTranslatable();
});
  1. 你的模型应该使用 Fomvasss\LaravelTranslatable\Traits\HasTranslations 特性来启用翻译

示例: app/Models/Article.php

use Fomvasss\LaravelTranslatable\Traits\HasTranslations;

class Article extends Model
{
    use HasTranslations;
    //...
}
  1. 在控制器中获取和保存文章翻译

示例控制器: 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)。请参阅 许可文件 了解更多信息。

编码愉快!