В наших прошлых проектах larravel часто использовалось время. Есть много способов реализовать такие поля, как ago, и преобразовать их в знакомый нам местный язык, например, написать время. Вспомогательная функция ago преобразует его в локальный или использует carbon s diffForHumans Функция затем заменяется на местный язык.
Код, который мы написали в прошлом, выглядит так: такой
Однако, когда нам нужно заменить его китайским, традиционным китайским, японским или корейским, нам нужно написать несколько аналогичных методов, таких как:
time_ ago_ Cn // Simplified Chinese time_ ago_ HK // traditional Chinese time_ ago_ JP // Japanese time_ ago_ Ko // Korean
Когда проект становится международным или нуждается в поддержке большего количества языков, это не очень удобно. Однако недавно, когда я прочитал официальные документы carbon, я обнаружил, что carbon поддерживает несколько языков, то есть carbon реализовал все вышеперечисленное… (это добавляет еще одну сумму к нашему техническому долгу)
Если мы хотим поддерживать китайский язык, мы можем добавить в модель описанные выше методы
public function createdAt($locale = 'zh')
{
Carbon::setLocale($locale);
return $this->created_at->diffForHumans();
}Затем вызываются следующие методы:
//Chinese
$user > createdat(); // 9 months ago
//Simplified traditional Chinese
$user->createdAt('zh_ HK '); // 9 months ago
//Japanese
$user->createdAt('ja_ JP '); // 9 months agoЕсли вы хотите сделать его более общим, рекомендуется инкапсулировать его как вспомогательную функцию
function time_ago($time, $locale = 'zh')
{
$time = $time instanceof Carbon ? $time : Carbon::parse($time);
Carbon::setLocale($locale);
return $time->diffForHumans();
}Языковая поддержка Carbon: https://carbon.nesbot.com/contribute/translate/
По умолчанию Carbon2.0 поддерживается в laravel 5.8. Если он ниже этой версии, вы можете использовать carbon2.0 следующими способами, например larave5.6
оставайтесь композитором.json Добавьте следующие параметры в
{
"require": {
"nesbot/carbon": "2.24.0 as 1.39.0",
"kylekatarnls/laravel-carbon-2": "^1.0.0"
}
}Затем мы выполняем обновление composer, чтобы обновить наши зависимости
composer update
Наконец, мы отправим официальный адрес документа по углероду: https://carbon.nesbot.com/