国际化助手

v1.1.0 2024-03-12 15:47 UTC

This package is auto-updated.

Last update: 2024-09-12 17:02:42 UTC


README

日期和时间本地化

在应用当前区域设置中格式化日期和时间。

intl(now())->short();
# 12/13/52 3:30pm

intl(now())->shortDate();
# 12/13/52

intl(now())->full();
# Tuesday, April 12, 1952 AD 3:30:42pm PST

intl(now())->fullTime();
# 3:30:42pm PST

$interval = now()->toPeriod(now()->addHour());
intl($interval)->long();
# January 12, 1952 from 3:30:30pm to 4:30:30pm

多语言模型属性

此类属性以 JSON 对象的形式存储在数据库中。

use \Illuminate\Database\Eloquent\Model;
use \Codewiser\Intl\Casts\AsMultiLingual;
use \Codewiser\Intl\Traits\HasLocalizations;

/**
 * @property string $name 
 */
class User extends Model
{
    use HasLocalizations;
    
    protected $casts = [
        'name' => AsMultiLingual::class
    ];
}

存储

新值将隐式存储在当前区域设置中。

然而,您可以显式定义区域设置。

$user->withLocale('en', fn(User $user) => $user->name = 'Michael');
$user->withLocale('es', fn(User $user) => $user->name = 'Miguel');

读取

值将隐式检索到当前区域设置中。只需正确应用从 User-Agent 的 Accept-Language 标头,用户就会获得首选语言的内容。

如果请求的区域设置的值为空,则返回第一个非空值。

您可以显式定义区域设置。

$nameInEn = $user->withLocale('en', fn(User $user) => $user->name);
$nameInEs = $user->withLocale('es', fn(User $user) => $user->name);