Автор оригинала: David Wong.
В наших прошлых проектах laravel нам часто приходилось использовать такие поля, как указатель времени, и преобразовывать их в наш знакомый местный язык. Есть много способов добиться этого, например, написать вспомогательную функцию датчика времени, чтобы преобразовать ее в локальную, или использовать углерод diffForHumans Затем функция заменяется на местный язык
В прошлом мы писали такой код: такой
Но когда нам нужно заменить его китайским, традиционным китайским, японским или корейским, нам нужно написать несколько аналогичных методов, таких как:
Time ABCD CN // Simplified Chinese Time ABCD HK // traditional Chinese Time ABCD JP // Japanese Time ABCD 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 characters
$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/contribution/translate/
Углерод 2.0 поддерживается в laravel 5.8 по умолчанию. Если она ниже этой версии, вы можете использовать carbon 2.0 следующими способами, например laravel 5.6
Добавьте следующие параметры в composer.json
{
"require": {
"nesbot/carbon": "2.24.0 as 1.39.0",
"kylekatarnls/laravel-carbon-2": "^1.0.0"
}
}Затем выполните обновление composer, чтобы обновить наши зависимости
composer update
Наконец, отправьте официальный документ по адресу carbon: https://carbon.nesbot.com/
Оригинал: “https://developpaper.com/on-the-improvement-method-of-timeago-field-language-transformation-in-laravel-project/”