В наших прошлых проектах 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/