搜尋
首頁php框架Laravellaravel修改驗證提示中文

Laravel是一款開源的PHP Web應用程式框架,具有程式碼簡潔、易於理解和學習、充滿創新的特點,因此受到越來越多開發者的歡迎。其中,驗證是Laravel框架中非常重要的一部分,它幫助開發者驗證和保護使用者提交的表單資料。但是,Laravel預設的驗證提示訊息都是英文的,不便於中文網站的使用,接下來,我們就來探討如何將Laravel框架的驗證提示訊息修改成中文。

0、引言

在開始正式的修改工作之前,我們需要先明確幾個概念。

第一,Laravel框架預設的驗證器是IlluminateValidationValidator。

第二,Laravel框架中預設使用了Symfony框架的validator元件。

第三,Laravel框架本身提供了多種修改驗證提示資訊的方法,例如修改驗證器中的messages陣列、使用語言套件等。

1、修改驗證器中的messages數組

在Laravel框架中,Validator類別中有一個messages數組,它儲存所有的驗證提示訊息,在使用Validator時,我們可以透過修改該陣列的方式來修改驗證提示訊息。以下是一段範例程式碼:

$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', '该邮箱已被注册,请使用其他邮箱。'
);

在上述程式碼中,我們使用Validator::make方法建立了一個驗證器,並設定了三個驗證規則:name必填、長度不超過255個字元; email必填、必須為合法的郵箱地址、在users表中唯一;password必填、確認密碼、長度不少於6個字元。然後,我們透過呼叫$validator->messages()->add方法來新增了一個新的提示訊息,指定了當email欄位的驗證規則unique失敗時,應該提示「該郵箱已被註冊,請使用其他郵箱。」這樣,我們就可以靈活地修改驗證提示資訊了。

要注意的是,使用這種方法修改的提示訊息只會在建立目前驗證器時生效,如果需要對所有的驗證器都生效,則需要在每個驗證器中都添加一遍。

2、使用語言包

除了在Validator中直接修改messages數組,Laravel還提供了另一種便捷的方法來修改驗證提示信息,那就是使用語言包。 Laravel框架預設提供了多種語言包,包括英文、西班牙語、法語、德語、日語、中文等。我們可以在語言包中找到對應的驗證提示訊息,並進行修改。

在Laravel使用語言包非常簡單,只需要在resources/lang目錄下建立對應的語言包資料夾,即可開始修改驗證提示資訊。例如,如果我們需要將驗證提示資訊改成中文,則需要在resources/lang目錄下建立zh-CN資料夾,並在該資料夾下建立validation.php文件,然後將修改後的驗證提示資訊寫入到該文件中即可。範例程式碼如下:

<?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 不一致。',
];

在上述程式碼中,我們定義了required、max等多個驗證規則的提示資訊。這些資訊會在Laravel框架中用於驗證使用者提交的表單數據,並在驗證失敗時進行提示。這種方法比較適合在全站範圍內修改驗證提示訊息,不用在每個Validator物件中都添加一次。

3、Symfony驗證元件的翻譯

除了上述兩種方法外,Symfony驗證元件也提供了內建翻譯的功能,我們可以使用這個功能將Laravel框架中的驗證提示訊息翻譯成中文。

要使用Symfony驗證元件的翻譯功能,我們首先需要安裝symfony/translation元件,方法如下:

composer require symfony/translation

然後,我們需要在Laravel框架中設定翻譯器,在AppServiceProvider類別的boot方法中加入以下程式碼:

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;
    }
}

在上述程式碼中,我們在AppServiceProvider中使用了Symfony驗證元件提供的翻譯功能。其中,我們設定了翻譯器的語言為中文,並載入了Symfony驗證元件自帶的翻譯檔案validators.zh.xlf。在getTranslatorMessages方法中,我們定義了需要翻譯的驗證提示訊息。這樣,當Laravel框架驗證表單資料時,Symfony翻譯元件就會自動將英文的驗證提示訊息翻譯成中文。

要注意的是,這種方法比較麻煩,需要安裝新的元件,並修改Laravel框架的ServiceProvider類別。

4、總結

以上就是修改Laravel框架驗證提示訊息的方法,包括在Validator中直接修改messages陣列、使用語言套件、Symfony驗證元件的翻譯等方法。不同的方法適用於不同的場景,可以根據自己的需求進行選擇。

在實際開發中,我們通常會結合使用上述多種方法,例如在Validator中添加自定義的驗證提示信息,並在語言包中進行覆蓋和調整,這樣既可以保證精細化的控制,又可以方便地進行全站的管理與維護。

以上是laravel修改驗證提示中文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
技術問題:確保公平地訪問分佈式團隊成員的工具和資源技術問題:確保公平地訪問分佈式團隊成員的工具和資源Apr 29, 2025 am 12:40 AM

確保分佈式團隊成員公平獲取工具和資源的方法包括:1)使用低帶寬替代方案,如異步視頻或文本更新,解決連接問題;2)設立核心重疊工作時間,並提供靈活工作時間,管理時區差異;3)通過翻譯功能和文化意識培訓,適應不同文化需求。這些策略有助於創建一個包容和高效的遠程工作環境。

即時消息必備:在遠程設置中促進實時通信即時消息必備:在遠程設置中促進實時通信Apr 29, 2025 am 12:38 AM

ForenHancingRemoteCollaboration,AninStantMessagingToolMusThave:1)可靠性ForConsistentMessageDelivery,2)AnintuiveduserInterInterInterterfaceForeasyNavigation,3)Real-Timenotificationstostostostostostostostostostostostostostostostostostayupdated,4)SeamelesselessfileSlessFileSlessFileSlessFileSlesselessFileSleSlessForefliceForefliceDocumentExchange,5)集成

在分佈式團隊中工作時,您是否曾面臨任何挑戰?在分佈式團隊中工作時,您是否曾面臨任何挑戰?Apr 29, 2025 am 12:35 AM

Thebiggestchallengeofmanagingdistributedteamsiscommunication.Toaddressthis,usetoolslikeSlack,Zoom,andGitHub;setclearexpectations;fostertrustandautonomy;implementasynchronousworkpatterns;andintegratetaskmanagementwithcommunicationplatformsforefficient

新的Laravel版本有什麼安全性改進?新的Laravel版本有什麼安全性改進?Apr 29, 2025 am 12:17 AM

Laravel的最新版本在安全性方面有显著提升,包括:1.增强的CSRF保护,通过更robust的token验证机制;2.改进的SQL注入防护,通过增强的查询构建方法;3.更好的会话加密,确保用户数据安全;4.改进的认证系统,支持更细粒度的用户认证和多因素认证(MFA)的实现。

時區探戈:在全球勞動力中導航計劃衝突時區探戈:在全球勞動力中導航計劃衝突Apr 29, 2025 am 12:13 AM

TonavigatesChedulingConflictSinaglobalworkforce,Usetechnology,Ensathy and Strategicplanning:1)hosporlikeTimeBuddyorCalendlyForscheduling; 2)RotateMeetingTimeStoEnsurefairness; 3)spentCoreSurefair; 3)specoreCoreHoursibible foreverlap; 4)

Laravel的全堆棧開發:管理API和前端邏輯Laravel的全堆棧開發:管理API和前端邏輯Apr 28, 2025 am 12:22 AM

在Laravel全棧開發中,管理API和前端邏輯的有效方法包括:1)使用RESTful控制器和資源路由管理API;2)通過Blade模板和Vue.js或React處理前端邏輯;3)通過API版本控制和分頁優化性能;4)保持後端和前端邏輯分離,確保可維護性和可擴展性。

翻譯失落:分佈式團隊中的文化細微差別和誤解翻譯失落:分佈式團隊中的文化細微差別和誤解Apr 28, 2025 am 12:22 AM

TotackleculturalIntricaciesIndistributedTeams,fosteranenvironmentcelebratingDifferences,BemindfulofCommunication,andusetoolsforclarity.1)ImpartimentCulturalexchangessessionStossessessionStosharestories andraditions.2)

測量連接:分析和見解遠程通信有效性測量連接:分析和見解遠程通信有效性Apr 28, 2025 am 12:16 AM

Toassesstheeffectivenessofremotecommunication,focuson:1)Engagementmetricslikemessagefrequencyandresponsetime,2)Sentimentanalysistogaugeemotionaltone,3)Meetingeffectivenessthroughattendanceandactionitems,and4)Networkanalysistounderstandcommunicationpa

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具