Хобрук: Ваш путь к мастерству в программировании

Переводы Laravel 5.4 с постоянными значениями

У меня проблема с переводами. Я новичок в них, так как никогда не пробовал добавлять переводы в проект. У меня есть эта модель для уведомлений в Laravel 5.4:

// /App/Notification.php
class Notification extends Model
{
    const NO_STATUS = 0;
    const SENT      = 100;
    const ACCEPTED  = 200;
    const ERROR     = 300;

    public static $statuses = [
        self::NO_STATUS => 'No status',
        self::SENT      => 'Sent',
        self::ACCEPTED  => 'Accepted',
        self::ERROR     => 'Error',
    ];
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'from', 'to', 'status',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        //
    ];

    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'from' => 'integer',
        'status' => 'integer',
    ];

    public function isSent()
    {
        return $this->status == self::SENT;
    }

    public function isAccepted()
    {
        return $this->status == self::ACCEPTED;
    }

    public function isError()
    {
        return $this->status == self::ERROR;
    }

    public static function statuses()
    {
        return self::statuses();
    }

    public function getStatusAttribute($value)
    {
       return self::$statuses[$value];
    }
}

И у меня есть этот файл перевода, который я собираюсь использовать для преобразования числовых значений, хранящихся в базе данных в качестве статуса, в читаемый текст для пользователей, когда они видят список уведомлений в представлении:

// /resources/lang/en/constants.php
return [

    /*
     * Notifications constants
     */
    'notification' => [
        'no_status' => 'No status',
        'sent'      => 'Sent',
        'accepted'  => 'Accepted',
        'error'     => 'Error',
    ],
];

У меня есть функция доступа getStatusAttribute в модели для получения его кода состояния в виде текста, но я не могу установить значение статического атрибута (очевидно), например:

public static $statuses = [
    self::NO_STATUS => trans('constants.notification.no_status'),
    self::SENT      => trans('constants.notification.sent'),
    self::ACCEPTED  => trans('constants.notification.accepted'),
    self::ERROR     => trans('constants.notification.error'),
];

Любое предложение о том, как я могу достичь этого?

Я хочу, чтобы возвращаемое свойство в объекте стало уже переведенным текстом, вместо того, чтобы перевести его в представление, если это возможно.

Спасибо за ваше время.

26.07.2017

Ответы:


1

Вы должны возвращать функцию, а не константу.

Class Status
{
    public static function getStatusArray = [
        self::NO_STATUS => __('constants.notification.no_status'),
        self::SENT      => __('constants.notification.sent'),
        self::ACCEPTED  => __('constants.notification.accepted'),
        self::ERROR     => __('constants.notification.error'),
    ];
} 

После этого вы можете вызвать функцию следующим образом:

array_get(App\Class::getStatusArray(), 1)
22.11.2018
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..