escapework / laravel-translations
帮助您轻松翻译Laravel模型的包
0.1.0
2016-10-03 14:04 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- mockery/mockery: @stable
- phpunit/phpunit: @stable
This package is auto-updated.
Last update: 2024-08-29 04:40:03 UTC
README
轻松将Laravel模型翻译成所需语言。
安装
将以下行添加到您的 composer.json
文件中
"escapework/laravel-translations": "0.2.*"
并将以下服务提供者添加到您的Laravel提供者中
EscapeWork\Translations\TranslationServiceProvider::class
运行以下命令以发布迁移
$ php artisan vendor:publish --provider="EscapeWork\Translations\TranslationServiceProvider"
$ php artisan migrate
用法
创建本地化
首先,您需要创建将进行翻译的模型本地化。
EscapeWork\Translations\Locale::create(['id' => 'pt-br', 'title' => 'Português (Brasil)']); EscapeWork\Translations\Locale::create(['id' => 'en', 'title' => 'English']);
然后,您需要在模型中导入 Translatable
。
use EscapeWork\Translations\Translatable; ... class Product extends Model { use Translatable; }
存储翻译
要存储翻译,您可以执行以下操作
// $data can have as many fields you want $data = [ 'title' => 'My translated title', 'description' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit', ]; $product->storeTranslation((array) $data, 'pt-br');
以下是如何使用Laravel $request
对象的示例。
$product = Product::find(1); foreach ((array) $request->translations as $locale => $data) { $product->storeTranslation((array) $data, $locale); }
从模型中删除翻译
$product->deleteTranslations();
获取翻译
要获取现有翻译,只需这样做
$product = Product::find(1); echo $product->translations->_get('title'); // this will get the translation for the current config('app.locale') value
如果您需要特定区域的翻译,只需将区域作为第二个参数传递
$product = Product::find(1); echo $product->translations->_get('title', 'pt-br');
如果不传递 $locale
,则默认值为 config('app.locale')
的值。
您也可以这样做来使生活更加容易
class Product extends Model { ... public function getTitleAttribute() { return $this->translations->_get('title'); } ... } // then, just call like a simple field echo $product->title;
下一步
- 测试;
- 利用MySQL 5.7 JSON类型,其中翻译中的搜索将可用;
许可
查看许可文件。