쿠키나 세션에 의존하지 않고 Laravel에서 다국어 번역 경로를 어떻게 만들 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-03 15:24:30
원래의
583명이 탐색했습니다.

How can I create multilingual, translated routes in Laravel without relying on cookies or sessions?

Laravel에서 다국어 번역 경로 생성

이 가이드는 Laravel에서 다국어 번역 경로를 생성하기 위한 포괄적인 솔루션을 제공하여 현재 언어가 쿠키나 세션에 의존하지 않고 URL만으로 결정됩니다.

구현:

1. 번역 파일:

app/lang/[LANGUAGE]/routes.php 디렉토리에 원하는 경로에 대한 번역 파일을 만듭니다. 예를 들어 폴란드어(pl), 영어(en) 및 프랑스어(fr)의 경우:

  • app/lang/pl/routes.php:

    return array(
      'contact' => 'kontakt',
      'about'   => 'o-nas'
    );
    로그인 후 복사
  • app/lang/en/routes.php:

    return array(
      'contact' => 'contact',
      'about'   => 'about-us'
    );
    로그인 후 복사

2. 구성:

app/config/app.php 업데이트:

  • 기본 언어 설정(예: 폴란드어):

    'locale' => 'pl',
    로그인 후 복사
  • 대체 언어 목록(영어 및 프랑스어):

    'alt_langs' => array ('en', 'fr'),
    로그인 후 복사
  • 로케일 접두사 정의:

    'locale_prefix' => '', // Will be dynamically updated at runtime
    로그인 후 복사

3. 경로:

app/routes.php 편집:

...

// Set locale and locale_prefix if an alternative language is selected
if (in_array(Request::segment(1), Config::get('app.alt_langs'))) {
    App::setLocale(Request::segment(1));
    Config::set('app.locale_prefix', Request::segment(1));
}

// Set route patterns based on the translated routes
foreach(Lang::get('routes') as $k => $v) {
    Route::pattern($k, $v);
}

Route::group(array('prefix' => Config::get('app.locale_prefix')), function()
{
    Route::get(
        '/',
        function () {
            return "main page - ".App::getLocale();
        }
    );

    Route::get(
        '/{contact}/',
        function () {
            return "contact page ".App::getLocale();
        }
    );

    Route::get(
        '/{about}/',
        function () {
            return "about page ".App::getLocale();
        }
    );
});
...
로그인 후 복사

이 구성은 첫 번째 URL 세그먼트를 기반으로 로케일 및 로케일 접두사를 동적으로 업데이트합니다(대체 언어와 일치하는 경우). 번역된 경로에 따라 경로 패턴을 설정합니다.

4. 리디렉션(선택 사항):

알 수 없는 URL의 경우 기본 언어(/) 대신 현재 언어 접두어(예: /en)로 리디렉션합니다.

// app/start/global.php
App::missing(function()
{
   return Redirect::to(Config::get('app.locale_prefix'),301);
});
로그인 후 복사

위 내용은 쿠키나 세션에 의존하지 않고 Laravel에서 다국어 번역 경로를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!