다국어 지원
응용 프로그램에 국제 지원이 포함되어 있으면 관련 언어 팩 파일을 정의할 수 있습니다.
언어 팩 열기 및 로드
기본 시스템에서는 기본 언어 팩을 로드하지만 자동 감지 및 자동 전환이 필요한 경우 여러 언어를 사용하려면 전역 미들웨어 정의 파일에 미들웨어 정의를 추가해야 합니다.
'think\middleware\LoadLangPack',
기본적으로 시스템은 구성된 기본 언어 패키지를 로드하며 현재 시스템의 언어를 자동으로 감지하지 않습니다. 다국어 관련 설정은 lang.php 구성 파일에서 설정합니다.
기본 언어는 default_lang 구성 매개변수에 의해 설정됩니다. 시스템 기본 설정은
// 默认语言 'default_lang' => 'zh-cn',
미들웨어를 활성화한 후 시스템이 자동으로 감지하고 자동으로 감지된 다중 언어 변수 이름을 설정할 수 있습니다. 구성 파일:
// 自动侦测的GET变量名 'detect_var' => 'lang',
자동 감지를 켠 후 먼저 요청한 URL이나 쿠키에 언어 변수가 포함되어 있는지 확인한 다음 HTTP_ACCEPT_LANGUAGE를 기반으로 현재 언어를 자동으로 식별하고 해당 언어 팩을 로드합니다.
자동으로 언어를 감지할 때 허용되는 언어 목록을 설정하고 목록에 없는 언어도 기본 언어를 사용하려면 다음을 구성하면 됩니다.
// 设置允许的语言 'allow_lang_list' => ['zh-cn', 'en-us']
쿠키를 사용하려는 경우 언어를 저장하면
// 使用Cookie保存 'use_cookie' => true, // Cookie保存变量 'cookie_var' => 'think_lang',
설정이 가능합니다. 설정 후 자동으로 감지된 언어는 쿠키를 통해 기록되며, 다음번에는 쿠키를 통해 직접 언어가 결정됩니다.
언어 변수 정의
언어 변수 정의는 다음과 같이 작성하면 됩니다.
Lang::get('add user error'); // 使用系统封装的助手函数 lang('add user error');
여러 언어를 사용해야 하는 경우 즉, 문자열 정보를 Lang::get으로 변경해야 합니다. 표현하는 방법입니다.
언어 정의는 일반적으로 영어로 설명됩니다.
언어 파일 정의
자동으로 로드된 응용 프로그램 언어 파일은 다음 위치에 있습니다.
// 单应用模式 app\lang\当前语言.php // 多应用模式 app\应用\lang\当前语言.php
다른 언어 패키지를 로드해야 하는 경우 확장_목록을 통해 설정할 수 있습니다. 예:
'extend_list' => [ 'zh-cn' => [ app()->getBasePath() . 'lang\zh-cn\app.php', app()->getBasePath() . 'lang\zh-cn\core.php', ], ]
현재 핵심 프레임워크만 zh-cn 언어 패키지가 내장되어 있습니다. 다른 언어로 된 프롬프트가 필요한 경우 언어 팩을 확장하여 직접 로드할 수 있습니다.
ThinkPHP 언어 파일 정의는 반환 배열 방식을 채택합니다.
return [ 'hello thinkphp' => '欢迎使用ThinkPHP', 'data type error' => '数据类型错误', ];
일반적으로 컨트롤러에서는 다중 언어가 사용되지만 모델 클래스의 자동 확인 기능은 프롬프트 정보를 사용합니다. 이 부분도 다중 언어 기능을 사용할 수 있습니다.
다국어 기능을 사용하는 경우(현재 언어 패키지에 'lang_var'=>'제목 필수!'를 정의했다고 가정) 다음 문자열을 사용하여 원래 오류 메시지를 대체할 수 있습니다.
{%lang_var}
컨트롤러에서 값을 할당하지 않고 템플릿에서 언어 변수를 출력하고 싶다면 템플릿 엔진 특수 태그를 직접 사용하여 언어 정의 값을 직접 출력하면 됩니다.
{$Think.lang.lang_var}
lang_var 언어를 출력할 수 있습니다. 현재 언어 패키지에 정의된 정의입니다.
변수 전달 지원
언어 패키지 정의 시 변수 전달을 지원합니다. 두 가지 방법이 있습니다.
이름이 지정된 바인딩 방법을 사용합니다. 예:
'file_format' => '文件格式: {:format},文件大小:{:size}',
언어 문자열을 출력할 때 변수 값을 전달합니다. 템플릿 그게 다입니다:
{:lang('file_format',['format' => 'jpeg,png,gif,jpg','size' => '2MB'])}
두 번째 방법은 형식 문자열을 사용하는 것입니다. 타사 번역 도구를 사용해야 하는 경우 이 방법을 사용하여 변수를 정의하는 것이 좋습니다.
'file_format' => '文件格式: %s,文件大小:%d',
템플릿에서 다국어 출력 방식이 다음과 같이 변경되었습니다.
{:lang('file_format',['jpeg,png,gif,jpg','2MB'])}
언어 그룹화
먼저 lang.php 구성 파일에서 언어 그룹화를 활성화해야 합니다.
// 开启多语言分组 'allow_group' => true
그런 다음 여러 언어를 정의할 때 그룹화 정의를 사용할 수 있습니다
return [ 'user' => [ 'welcome' => '欢迎回来', 'login' => '用户登录', 'logout' => '用户登出', ] ];
그런 다음 다음 방법을 사용하여 다국어 변수를 얻습니다
Lang::get('user.login'); lang('user.login');