codewiser / intl
国际化助手
v1.1.0
2024-03-12 15:47 UTC
Requires
- php: ^8.0
- laravel/framework: >=10.0
Requires (Dev)
- phpunit/phpunit: ^10.4
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);