Показывать имя месяцев на испанском языке с Laravel и Highcharts

Я выполняю консультацию посредством Laravel и печатаю ее посредством графиков используя книжный магазин названный Highcharts. Недостаток состоит в том, что он печатает меня месяцы на английском, и я хочу, чтобы он напечатал их мне на испанском языке: есть какой-то книжный магазин, которого я появлялся бы месяцы на испанском языке с драйвера Laravel?

Здесь я оставляю код драйвера Laravel и изображение того, что он показывает мне

public function report_precebo_anual_conversion_final(Request $request)
{
    if ($request->ajax()) {

        $collection = Precebo::select(DB::raw('date_format(str_to_date(mes_traslado,"%m")
        ,"%M") as mes,avg(conversion_ajust_fin) as total'))
        ->where('año_destete',[$request->ano])
        ->groupBy('mes_traslado')->get();

        $arrayT = [];
        foreach ($collection as $value) {
            $arrayT[] = [$value->mes,$value->total];
        }
        // dd($arrayT);
        return response()->json(['status'=>'success','data'=>$arrayT],200); 
    }
}

introducir la descripción de la imagen aquí

1
задан 26.02.2018, 21:33
3 ответа

Есть несколько форм в той, которая ты можешь решать твою проблему internacionalizaciГіn.

Выбора:

  • В твоей базе данных: Ты можешь добиваться, чтобы твоя база данных возвратила имя месяца на твоем языке конфигурируя местность и используя funciГіn monthname как в этом примере:

    SET lc_time_names = 'es_Es';
    select monthname(now());
    

    Недостаток с этим, - что твое программное обеспечение tendrГЎ, что конфигурировать помещения в каждой консультации, если ты хочешь обслужить более чем одного языка.

  • В твоем драйвере:

    ты Можешь возвращать с твоей консультации число месяца с funciГіn month из следующей формы:

    select month(now());
    

    , Когда у тебя будет информация, в php ты можешь делать что-то как:

    <?php
    
    $months = [1 => 'enero', 'febrero', 'marzo', '...']; // los nombres empiezan de 1 en sql
    echo $months[2];
    
    /* en tu caso... */
    $arrayT[] = [$months[$value->numero_mes], $value->total];
    

    Сейчас, если aГєn ты хочешь возвратить имена месяцев на английском с базы данных:

    <?php
    
    $value->mes // esto es January, February, etc.
    

    ты должен менять стоимость array (1) на имя месяца на английском:

    <?php
    
    $months = ['january' => 'enero', 'february' => 'febrero', 'march' => 'marzo', '...' => '...'];
    

    ты Можешь смотреть на себя пример в это соединение . Помни, что, чтобы использовать месяцы как индексы numГ©ricos, ты должен возвращать число с базы данных.

    Кроме того, если ты используешь Laravel, ты можешь использовать internacionalizaciГіn, что у него есть по умолчанию заявляя месяцы в lang/es/meses.php (это пример) следующей формы:

    <?php
    
    return [
        1 => 'Enero',
        'Febrero',
        'Marzo'
    ];
    

    потом в твоем драйвере:

    $arrayT[] = [__('meses.' . $value->numero_mes), $value->total];
    
  • В клиенте:

    Предыдущее - vГЎlido tambiГ©n в клиенте. Ты можешь посылать индекс и обрабатывать это в Js перед тем, как показывать данные в твой grГЎficos или можешь использовать функции форматирования Highcharts как в этот пример из свойства xAxis.labels.formatter . Смотри этот пример:

let months = {
    1: 'enero',
    2: 'febrero',
    3: 'marzo'
};

Highcharts.chart('container', {

    title: {
        text: 'Ejemplo'
    },

    xAxis: {
        categories: [1, 2, 3],
        labels: {
            formatter: function () {
                return months[this.value];
            }
        }
    },

    series: [{
        data: [29.9, 71.5, 106.4]
    }]
});
<script src="https://code.highcharts.com/highcharts.js"></script>

<div id="container" style="height: 400px; width: 500px"></div>
4
ответ дан 24.11.2019, 01:36
  • 1
    большая часть выборов подает меня, но у меня есть pequeñ или проблема, когда я делаю array months, говорит мне, что q january костлявая январь не определен –  Juan Esteban Yarce 28.02.2018, 16:34
  • 2
    В js или php? Попробуй копировать и прикреплять имена переменных, quizá это ошибка tipográ fico –  UselesssCat 28.02.2018, 16:41
  • 3
    в php, когда ты делаешь костлявый array месяцев этот $months = [1 = > ' enero' ' febrero' '....'] он говорит мне q в январе не определено это q мне кажется очень редким $arrayT [] = [$months [$ оценил - > numero_mes], $ оцените - > общее количество]; очевидно я меняюсь ему numero_mes из-за месяца, который является прозвищем базы данных –  Juan Esteban Yarce 28.02.2018, 16:50
  • 4
    Edité немного ответ. Ты должен использовать индексы numé богатые только, если в твоей консультации SQL ты используешь funció n month() иначе ты должен использовать текст в inglé s как ключ, ej: 'november' => 'noviembre' –  UselesssCat 28.02.2018, 17:12
  • 5
    в MYSQL я использую эту функцию DATE_FORMAT (STR_TO_DATE (mes_traslado," %m"), " %M") СХВАТИ месяц, благодаря тому, что одинокое поле имеет в месяце, не вся цепь даты q - añ o-mes-dia, только он имеет в месяце, но если я использую это само, не было бы проблемы –  Juan Esteban Yarce 28.02.2018, 17:14

Этот ответ не заменяет получающую, дополняет ее.

Остается выбор, который ты можешь иметь в виду, если ты хочешь представить на нескольких языках, и это та использования "Локалисатион" де Ларавэль:

В файле языка (в моем случае general.php).

(См., что estГЎn формы mГЎs обычные писания один месяц):

    'mes'=>'{1}enero|{2}febrero|{3}marzo|{4}abril|{5}mayo|{6}junio|{7}julio|{8}agosto|{9}septiembre|{10}octubre|{11}noviembre|{12}diciembre',
    'Mes'=>'{1}Enero|{2}Febrero|{3}Marzo|{4}Abril|{5}Mayo|{6}Junio|{7}Julio|{8}Agosto|{9}Septiembre|{10}Octubre|{11}Noviembre|{12}Diciembre',
    'mesabr'=>'{1}ene|{2}feb|{3}mar|{4}abr|{5}may|{6}jun|{7}jul|{8}ago|{9}sep|{10}oct|{11}nov|{12}dic',
    'Mesabr'=>'{1}Ene|{2}Feb|{3}Mar|{4}Abr|{5}May|{6}Jun|{7}Jul|{8}Ago|{9}Sep|{10}Oct|{11}Nov|{12}Dic',
    'MESabr'=>'{1}ENE|{2}FEB|{3}MAR|{4}ABR|{5}MAY|{6}JUN|{7}JUL|{8}AGO|{9}SEP|{10}OCT|{11}NOV|{12}DIC',

И dГіnde захотите быть использованным:

// Para $value->numero_mes=2

trans_choice('general.mes', $value->numero_mes)
//devuelve: febrero

trans_choice('general.Mes', $value->numero_mes)
//devuelve: Febrero

trans_choice('general.mesabr', $value->numero_mes)
//devuelve: feb

trans_choice('general.Mesabr', $value->numero_mes)
//devuelve: Feb

trans_choice('general.MESabr', $value->numero_mes)
//devuelve: FEB

AsГ - ты считаешь покрытыми все языки, которые ты хочешь использовать без больших осложнений.

1
ответ дан 24.11.2019, 01:36

Есть, что set -ear Locale языка, PHP в мешок setlocale (LC_TIME, 'es_ES') и снимать utf8 из-за акцента espaГ±ol meidante Crabon Уголь:: setUtf8 (false) Заботившиеся

у тебя должен быть язык установленный на сервере. Выполни посредством SSH

locale - в

Ты dirГЎ языки, которые есть у машины, если ты не имеешь, он состоит espaГ±ol или язык в том, чтобы ты нуждался, нужно устанавливать это, но это этот другой тип проблемы, что deberГ, - чтобы идти в другой трэд segГєn, понимаю я

public function report_precebo_anual_conversion_final(Request $request)
{

    setlocale(LC_TIME, 'es_ES');
    Carbon::setUtf8(false);
    if ($request->ajax()) {
        $collection = Precebo::select(DB::raw('mes_traslado as mes, avg(conversion_ajust_fin) as total'))
        ->where('año_destete',[$request->ano])
        ->groupBy('mes_traslado')->get();
        $arrayT = [];
        foreach ($collection as $value) {
            $arrayT[] = [Carbon::setToStringFormat('F'); Carbon::createFromFormat('Y-m-d', '2018-01-23')->formatLocalized('%B'), $value->total];
        }
        // dd($arrayT);
        return response()->json(['status'=>'success','data'=>$arrayT],200); 
    }
}
1
ответ дан 24.11.2019, 01:36
  • 1
    я бросать ошибку синтаксиса в часть setTostrinformat эта запятая не должна идти там, он не будет, где эта запятая должна быть, это стрела?? –  Juan Esteban Yarce 27.02.2018, 15:40

Теги

Похожие вопросы