在laravel 9网站上,我添加了astrotomic/laravel-translatable并获取一组数据,我看到了与预期有点不同的结果因为我在config/translatable. php中定义了2种语言,默认为'en':
'locales' => [
'en',
'fr',
...
'locale' => 'en',
...
我确实请求使用'fr'语言环境:
$banners = Banner
::translatedIn(app()->getLocale())
->get(function ($banner);
我检查日志:
[id] => 5
[text] => laravel library site
[description] => laravel is a powerful php library
...
[translations] => Array
(
[0] => Array
(
[id] => 13
[text] => laravel library site
[description] => laravel is a powerful php library
...
)
[1] => Array
(
[id] => 15
[text] => site de la bibliothèque laravel
[description] => laravel est une puissante bibliothèque php
...
)
)
)
文本中的文本、描述字段(横幅,而不是翻译]子数组...)是"en",而不是"fr",正如我所预期的...
在文件app/Models/banner.php中,我有:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Astrotomic\Translatable\Contracts\Translatable as TranslatableContract;
use Astrotomic\Translatable\Translatable;
class Banner extends Model implements HasMedia, TranslatableContract
{
use InteractsWithMedia;
use Translatable;
protected $table = 'banners';
protected $primaryKey = 'id';
public $timestamps = false;
protected $fillable = [/*'text', 'description',*/ 'url', 'active', 'ordering', 'banner_bgimage_id', 'updated_at'];
public $translatedAttributes = ['text', 'description'];
"laravel/framework": "^9.19",
"astrotomic/laravel-translatable": "^11.11",
在app/应用程序/
<?php
namespace App\Models;
use DB;
use Illuminate\Database\Eloquent\Model;
class BannerTranslation extends Model
{
public $timestamps = false;
protected $fillable = ['text', 'description', 'updated_at'];
}
似乎我没有错过任何配置选项,但什么是错的?
- 附加示例:**
Looking at this docs : https://docs.astrotomic.info/laravel-translatable/package/scopes#translatedin-string-usdlocale-null
我看到一些例子,比如:
Post::translatedIn('en')->get();
以及
$post = Post::first();
但举例来说:
$banner = Banner::first();
$bannerText = $banner->translate('fr')->text;
也返回"en"中的默认值,而不是"fr"
在我的模型中
app/Models/Banner.php
我补充道:
protected $translationForeignKey = 'banner_id';
但这没有帮助,我得到了所有的文本值在默认'en'。我想我在我的模型定义中配置错误的东西,但什么?
"astrotomic/laravel-translatable": "^11.11",
"laravel/framework": "^9.19",
先谢了!
1条答案
按热度按时间cigdeys31#
1.我发现一些奇怪的我的决定,以正常工作,我需要在文件config/translatable.php设置
'区域设置' =〉空,
使用此选项,则获取数据为
我有法国商标。
1.为什么我得到了'翻译'子数组在数据的结果列表?这不是我真正需要的...