Rumah >rangka kerja php >Laravel >laravel mengubah suai gesaan pengesahan dalam bahasa Cina

laravel mengubah suai gesaan pengesahan dalam bahasa Cina

WBOY
WBOYasal
2023-05-29 10:20:081114semak imbas

Laravel ialah rangka kerja aplikasi web PHP sumber terbuka Ia mempunyai ciri-ciri kod ringkas, mudah difahami dan dipelajari, dan penuh dengan inovasi, jadi ia dialu-alukan oleh semakin ramai pembangun. Antaranya, pengesahan adalah bahagian yang sangat penting dalam rangka kerja Laravel, yang membantu pembangun mengesahkan dan melindungi data borang yang diserahkan oleh pengguna. Walau bagaimanapun, gesaan pengesahan lalai Laravel semuanya dalam bahasa Inggeris, yang tidak sesuai untuk digunakan di tapak Cina Seterusnya, kami akan membincangkan cara mengubah suai gesaan pengesahan rangka kerja Laravel ke dalam bahasa Cina.

0. Pengenalan

Sebelum memulakan kerja pengubahsuaian rasmi, kita perlu menjelaskan beberapa konsep.

Pertama, pengesah lalai rangka kerja Laravel ialah IlluminateValidationValidator.

Kedua, rangka kerja Laravel menggunakan komponen pengesah rangka kerja Symfony secara lalai.

Ketiga, rangka kerja Laravel sendiri menyediakan pelbagai kaedah untuk mengubah suai maklumat segera pengesahan, seperti mengubah suai tatasusunan mesej dalam pengesah, menggunakan pek bahasa, dsb.

1. Ubah suai tatasusunan mesej dalam pengesah

Dalam rangka kerja Laravel, terdapat tatasusunan mesej dalam kelas Pengesah, yang menyimpan semua maklumat gesaan pengesahan, kita boleh Ubah suai maklumat gesaan pengesahan dengan mengubah suai tatasusunan. Berikut ialah contoh kod:

$validator = Validator::make($request->all(), [
    'name' => 'required|max:255',
    'email' => 'required|email|unique:users,email',
    'password' => 'required|confirmed|min:6',
]);

$validator->messages()->add(
    'email.unique', '该邮箱已被注册,请使用其他邮箱。'
);

Dalam kod di atas, kami menggunakan kaedah Pengesah::make untuk mencipta pengesah dan menetapkan tiga peraturan pengesahan: nama diperlukan dan panjangnya tidak boleh melebihi 255 aksara; diperlukan, mestilah alamat e-mel yang sah, dan kata laluan yang unik dalam jadual pengguna diperlukan, sahkan kata laluan, dan mestilah tidak kurang daripada 6 aksara. Kemudian, kami menambah mesej gesaan baharu dengan memanggil kaedah $validator->messages()->add, dengan menyatakan bahawa apabila peraturan pengesahan unik medan e-mel gagal, ia harus menggesa "Alamat e-mel telah didaftarkan, sila gunakan alamat e-mel lain." Dengan cara ini, kami boleh mengubah suai maklumat gesaan pengesahan secara fleksibel.

Perlu diambil perhatian bahawa maklumat segera yang diubah suai menggunakan kaedah ini hanya akan berkuat kuasa apabila pengesah semasa dibuat Jika ia perlu berkuat kuasa untuk semua pengesah, ia perlu ditambahkan pada setiap pengesah.

2. Gunakan pek bahasa

Selain mengubah suai terus tatasusunan mesej dalam Pengesah, Laravel juga menyediakan satu lagi kaedah mudah untuk mengubah suai maklumat gesaan pengesahan, iaitu menggunakan pek bahasa. Rangka kerja Laravel menyediakan pelbagai pakej bahasa secara lalai, termasuk bahasa Inggeris, Sepanyol, Perancis, Jerman, Jepun, Cina, dsb. Kami boleh mencari maklumat segera pengesahan yang sepadan dalam pek bahasa dan mengubah suainya.

Menggunakan pek bahasa dalam Laravel adalah sangat mudah Anda hanya perlu mencipta folder pek bahasa yang sepadan dalam direktori sumber/lang untuk mula mengubah suai maklumat segera pengesahan. Contohnya, jika kita perlu menukar maklumat gesaan pengesahan kepada bahasa Cina, kita perlu mencipta folder zh-CN dalam direktori sumber/lang, mencipta fail validation.php dalam folder ini, dan kemudian tulis maklumat gesaan pengesahan yang diubah suai Hanya pergi ke fail ini. Kod sampel adalah seperti berikut:

<?php
// resources/lang/zh-CN/validation.php

return [
    'required' => ' :attribute 为必填项。',
    'max' => [
        'numeric' => ' :attribute 不能大于 :max。',
        'file' => ' :attribute 不能大于 :max kb。',
        'string' => ' :attribute 不能超过 :max 个字符。',
        'array' => ' :attribute 不能超过 :max 个项。',
    ],
    'email' => ' :attribute 必须为合法的邮箱地址。',
    'unique' => ' :attribute 已存在,请使用其他 :attribute。',
    'confirmed' => '两次输入的 :attribute 不一致。',
];

Dalam kod di atas, kami mentakrifkan maklumat segera untuk berbilang peraturan pengesahan seperti yang diperlukan dan maks. Maklumat ini akan digunakan dalam rangka kerja Laravel untuk mengesahkan data borang yang diserahkan oleh pengguna dan menggesa apabila pengesahan gagal. Kaedah ini lebih sesuai untuk mengubah suai maklumat gesaan pengesahan di seluruh tapak, tanpa menambahkannya pada setiap objek Pengesah.

3. Terjemahan komponen pengesahan Symfony

Selain daripada dua kaedah di atas, komponen pengesahan Symfony juga menyediakan fungsi terjemahan terbina dalam Kami boleh menggunakan fungsi ini untuk menterjemah gesaan pengesahan maklumat dalam rangka kerja Laravel Diterjemah ke dalam bahasa Cina.

Untuk menggunakan fungsi terjemahan komponen pengesahan Symfony, kita perlu memasang komponen symfony/terjemahan seperti berikut:

composer require symfony/translation

Kemudian, kita perlu menyediakan penterjemah dalam rangka kerja Laravel , dalam kelas AppServiceProvider Tambahkan kod berikut pada kaedah but:

use IlluminateSupportFacadesLang;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->app->singleton('translator', function($app){
            $loader = new SymfonyComponentTranslationLoaderArrayLoader;
            $translator = new SymfonyComponentTranslationTranslator('zh');
            $translator->addLoader('array', $loader);
            $translator->addResource('array', require __DIR__ . '/../vendor/symfony/validator/Resources/translations/validators.zh.xlf', 'zh');
            $loader->load($this->getTranslatorMessages());

            return new IlluminateTranslationTranslator($translator);
        });
    }

    public function getTranslatorMessages()
    {
        $messages = [
            'required' => ':attribute 为必填项。',
            'max' => [
                'numeric' => ':attribute 不能大于 :max。',
            ],
            'email' => ':attribute 必须为合法的邮箱地址。',
            'unique' => ':attribute 已存在,请使用其他 :attribute。',
            'confirmed' => '两次输入的 :attribute 不一致。',
        ];

        return $messages;
    }
}

Dalam kod di atas, kami menggunakan fungsi terjemahan yang disediakan oleh komponen pengesahan Symfony dalam AppServiceProvider. Antaranya, kami menetapkan bahasa penterjemah kepada bahasa Cina dan memuatkan fail terjemahan validators.zh.xlf yang disertakan dengan komponen pengesahan Symfony. Dalam kaedah getTranslatorMessages, kami mentakrifkan mesej gesaan pengesahan yang perlu diterjemahkan. Dengan cara ini, apabila rangka kerja Laravel mengesahkan data borang, komponen terjemahan Symfony akan secara automatik menterjemah maklumat segera pengesahan bahasa Inggeris ke dalam bahasa Cina.

Perlu diambil perhatian bahawa kaedah ini lebih menyusahkan dan memerlukan pemasangan komponen baharu dan mengubah suai kelas ServiceProvider bagi rangka kerja Laravel.

4. Ringkasan

Di atas ialah kaedah untuk mengubah suai maklumat segera pengesahan rangka kerja Laravel, termasuk mengubah suai terus tatasusunan mesej dalam Pengesah, menggunakan pek bahasa dan terjemahan komponen pengesahan Symfony. Kaedah yang berbeza sesuai untuk senario yang berbeza, dan anda boleh memilih mengikut keperluan anda sendiri.

Dalam pembangunan sebenar, kami biasanya menggunakan gabungan kaedah di atas, seperti menambah maklumat segera pengesahan tersuai dalam Pengesah, dan mengatasi dan melaraskannya dalam pakej bahasa, untuk memastikan kawalan yang diperhalusi, dan boleh mengurus dan menyelenggara keseluruhan tapak dengan mudah.

Atas ialah kandungan terperinci laravel mengubah suai gesaan pengesahan dalam bahasa Cina. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:pertanyaan laravel terbesarArtikel seterusnya:pertanyaan laravel terbesar