>  기사  >  PHP 프레임워크  >  Laravel에서 다국어 지원을 위해 미들웨어를 사용하는 방법

Laravel에서 다국어 지원을 위해 미들웨어를 사용하는 방법

王林
王林원래의
2023-11-03 13:07:571248검색

Laravel에서 다국어 지원을 위해 미들웨어를 사용하는 방법

Laravel은 여러 언어를 지원하는 미들웨어를 포함하여 다양한 편리한 기능과 도구를 제공하는 널리 사용되는 PHP 프레임워크입니다. 이 기사에서는 미들웨어를 사용하여 Laravel의 다중 언어 지원을 구현하는 방법을 자세히 설명하고 몇 가지 구체적인 코드 예제를 제공합니다.

  1. 언어 팩 구성

먼저, Laravel의 언어 팩이 여러 언어를 지원할 수 있도록 구성해야 합니다. Laravel에서 언어 패키지는 일반적으로 resources/lang 디렉토리에 배치되며, 각 언어에는 해당 하위 디렉토리가 있습니다. 예를 들어 영어와 프랑스어를 지원하려면 resources/lang 디렉터리에 en과 fr이라는 두 개의 하위 디렉터리를 만들어야 합니다.

그런 다음 각 하위 디렉터리에 번역하려는 모든 문자열이 포함된 message.php 파일을 만들어야 합니다. 예를 들어 en 디렉토리에 message.php 파일을 다음과 같이 생성합니다.

return [
    'welcome' => 'Welcome to my website!',
    'about' => 'About us',
    'contact' => 'Contact us',
];

다음으로, fr 디렉토리에 message.php 파일을 다음과 같이 생성합니다.

return [
    'welcome' => 'Bienvenue sur mon site web!',
    'about' => 'À propos de nous',
    'contact' => 'Contactez-nous',
];

이렇게 언어 패키지를 구성했습니다. 다음으로, 다중 언어 지원을 구현하기 위한 미들웨어를 작성해야 합니다.

  1. 미들웨어 만들기

Laravel에서는 미들웨어를 사용하여 요청을 처리할 수 있습니다. 따라서 사용자의 언어 설정을 확인하고 해당 설정에 따라 적절한 언어 팩을 로드하는 미들웨어를 만들 수 있습니다. 다음은 간단한 미들웨어 예입니다.

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateHttpRequest;

class SetLanguage
{
    public function handle(Request $request, Closure $next)
    {
        // 检查请求中是否设置了语言参数
        $language = $request->input('lang', 'en');

        // 检查语言包是否存在
        if (!in_array($language, ['en', 'fr'])) {
            abort(400, 'Invalid language');
        }

        // 设置当前语言
        app()->setLocale($language);

        // 继续处理请求
        return $next($request);
    }
}

이 미들웨어는 요청의 lang 매개변수를 읽고 해당 값에 따라 현재 언어를 설정합니다. 요청에 lang 매개변수가 없으면 기본값은 영어입니다. 요청에 잘못된 언어가 지정되면 HTTP 400 오류가 반환됩니다.

이 미들웨어를 다음과 같이 app/Http/Kernel.php 파일에 등록할 수 있습니다:

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareSetLanguage::class,
        // ...
    ],
    // ...
];

이러한 방식으로 각 요청은 이 미들웨어를 거쳐 현재 언어를 설정합니다.

  1. 다국어 문자열 사용

언어 팩과 미들웨어를 구성했으므로 이제 코드에서 다국어 문자열을 사용할 수 있습니다. Laravel은 현재 언어에 따라 해당 문자열을 선택할 수 있는 번역 함수 trans()를 제공합니다. 예를 들어 뷰에서 사용할 수 있습니다:

<h1>{{ trans('messages.welcome') }}</h1>

이 예에서 trans() 함수는 현재 언어를 기반으로 해당 "환영" 문자열을 선택하고, 현재 언어가 영어인 경우 "환영합니다"를 반환합니다. 내 웹사이트!”, 프랑스어에서는 “Bienvenue sur mon site web!”이 반환됩니다.

뷰 외에도 컨트롤러, 양식 유효성 검사기, 이메일 템플릿 등 어디에서나 trans() 함수를 사용할 수 있습니다.

요약

이 글에서는 Laravel의 미들웨어를 사용하여 다국어 지원을 구현하는 방법을 소개하고 몇 가지 구체적인 코드 예제를 제공했습니다. 이 접근 방식을 사용하면 애플리케이션에 다국어 기능을 쉽게 추가할 수 있습니다.

위 내용은 Laravel에서 다국어 지원을 위해 미들웨어를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.