Рубрики
Uncategorized

О методе улучшения преобразования языка поля time ago в проекте laravel

Автор оригинала: 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/”