ThinkPHP에서 국제화 (I18N) 및 현지화 (L10N) 구현
ThinkPhp에는 더 큰 프레임 워크와 같은 내장 된 포괄적 인 I18N/L10N 지원이 없습니다. 그러나 기술의 조합과 잠재적으로 외부 라이브러리를 활용하여 효과적으로 구현할 수 있습니다. 핵심 전략은 코드에서 번역 가능한 문자열을 분리하고 메커니즘을 사용하여 사용자의 로케일을 기반으로 적절한 번역을 선택하는 것입니다.
일반적인 접근법은 다음과 같습니다.
- 언어 파일 만들기 : 전용 디렉토리 (예 :
application/lang
) 내에서 별도의 언어 파일 (예 :en.php
,es.php
,fr.php
)을 만듭니다. 각 파일에는 키가 문자열의 고유 식별자를 나타내고 값은 번역 된 텍스트를 나타내는 연관 배열이 포함됩니다. 예를 들어,en.php
:
<code class="php"><?php return [ 'hello' => 'Hello', 'welcome' => 'Welcome to our website!', 'login' => 'Login', ];</code>
-
언어 탐지 : 사용자가 선호하는 언어를 결정하십시오. 이것은 몇 가지 방법을 통해 수행 할 수 있습니다.
- 브라우저 로케일 :
$_SERVER['HTTP_ACCEPT_LANGUAGE']
사용하여 브라우저가 선호하는 언어를 얻으십시오. 이것은 종종 신뢰할 수 없지만 좋은 출발점입니다. - 사용자 기본 설정 : 사용자의 선호 언어를 데이터베이스 또는 세션에 저장하십시오. 이것은보다 정확하고 일관된 경험을 제공합니다.
- URL 매개 변수 : 사용자가 URL에서 직접 언어를 지정할 수 있습니다 (예 :
/en
,/es
).
- 브라우저 로케일 :
- 언어 로딩 : 감지 된 로케일을 기반으로 적절한 언어 파일을로드하십시오. ThinkPhp의
Lang
클래스 (버전에서 사용 가능한 경우) 또는 사용자 정의 기능을 사용할 수 있습니다. 사용자 정의 기능 사용 예 :
<code class="php">function loadLanguage($locale = 'en') { $langFile = APP_PATH . 'lang/' . $locale . '.php'; if (file_exists($langFile)) { return require $langFile; } return []; // Fallback to default language } $lang = loadLanguage(getLocale()); // getLocale() is a helper function to detect the locale</code>
- 번역 된 문자열 사용 : 언어 파일에 정의 된 키를 사용하여 번역 된 문자열에 액세스하십시오. 예를 들어:
<code class="php">echo $lang['hello']; // Outputs "Hello" (or the translation in the selected language)</code>
번역 키가 누락 된 경우 잠재적 오류를 우아하게 처리해야합니다.
ThinkPhp 응용 프로그램에서 번역 된 문자열 관리 모범 사례
- 일관된 명명 규칙을 사용하십시오 : 언어 키에 대한 명확하고 일관된 이름 지정 규칙을 유지하십시오. 이는 유지 보수성을 향상시키고 오류를 줄입니다.
- 중앙 집중식 언어 파일 : 모든 언어 파일을 잘 조직 된 단일 디렉토리로 유지하십시오.
- 버전 제어 : 버전 제어 시스템 (GIT)에서 언어 파일을 추적하여 변경 및 번역을 효율적으로 관리합니다.
- 번역 관리 도구 : 번역 관리 도구 (예 : Poeditor, Crowdin)를 사용하여 번역가와의 협력을 촉진하고 대규모 프로젝트를 관리하는 것을 고려하십시오. 이러한 도구를 사용하면 종종 언어 파일을 다양한 형식으로 내보낼 수 있습니다.
- 상황에 맞는 번역 : 가능한 경우, 모호성을 피하기 위해 언어 키에 컨텍스트를 제공하십시오. 예를 들어, 단지
'submit'
대신'submit_form'
사용하십시오. - 정기적 인 업데이트 : 응용 프로그램 텍스트의 변경 사항을 반영하도록 언어 파일을 업데이트하십시오.
ThinkPHP에서 i18N 및 L10N으로 다른 날짜 및 숫자 형식 처리
ThinkPhp에는 날짜 및 번호 형식을위한 I18N이 내장되어 있지 않습니다. PHP의 Intl
확장자를 사용해야합니다. PHP 구성에서 활성화되어 있는지 확인하십시오.
Intl
확장 내에서 IntlDateFormatter
및 NumberFormatter
클래스가 중요합니다. 예는 다음과 같습니다.
<code class="php">use IntlDateFormatter; use NumberFormatter; // ... (Language detection as before) ... $formatter = new IntlDateFormatter($locale, IntlDateFormatter::LONG, IntlDateFormatter::NONE); echo $formatter->format(time()); // Formats the current date according to the locale $numberFormatter = new NumberFormatter($locale, NumberFormatter::DECIMAL); echo $numberFormatter->format(1234.56); // Formats the number according to the locale</code>
원하는 날짜/시간 형식과 일치하도록 IntlDateFormatter
스타일 상수 (예 : IntlDateFormatter::SHORT
, IntlDateFormatter::MEDIUM
)를 조정하십시오. 마찬가지로 필요에 따라 NumberFormatter
스타일을 조정하십시오.
ThinkPhp에서 i18n/l10n 구현을 단순화하기 위해 쉽게 사용할 수있는 확장 또는 패키지
I18N/L10N에만 초점을 맞춘 널리 인기있는 전용 ThinkPhp 확장은 없습니다. 위에서 설명한 접근법은 일반적으로 충분합니다. 그러나 다음과 같은 기존 PHP 라이브러리를 활용할 수 있습니다.
- GetText : 널리 사용되는 GNU GetText 라이브러리는 국제화를위한 강력한 프레임 워크를 제공합니다. ThinkPHP 프로젝트에 수동으로 통합해야합니다. 더 많은 설정이 필요하지만 강력하고 표준화 된 접근 방식을 제공합니다.
- Symfony의 번역 구성 요소 : ThinkPHP의 경우에는 특별히 그렇지 않지만 Symfony의 번역 구성 요소는 번역 측면을 처리하기 위해 프로젝트에 통합 될 수있는 잘 알려진 라이브러리입니다. ThinkPhp 응용 프로그램의 구조와 통합하려면 더 많은 작업이 필요합니다.
더 간단한 응용 프로그램의 경우 첫 번째 섹션에 설명 된 수동 접근 방식이 충분할 수 있습니다. 많은 번역이있는 대규모 프로젝트의 경우 gettext
또는 유사한 라이브러리를 사용하는보다 체계적인 접근 방식이 바람직 할 수 있습니다. 특정 라이브러리를 선택하기 전에 이점에 대한 통합의 복잡성을 신중하게 평가하십시오.
위 내용은 ThinkPHP에서 국제화 (I18N) 및 현지화 (L10N)를 구현하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
