국제화라고도하는 다중 언어 지원은 현대 웹 애플리케이션의 주요 기능입니다. 대부분의 풀 스택 PHP 프레임 워크에는 다국어 지원이있어 각 언어에 대한 기존 소스 코드를 복사하지 않고도 응용 프로그램의 인터페이스를 다른 언어로 동적으로 제시 할 수 있습니다. 오늘날 우리는 Codeigniter에서 여러 언어를 활성화하는 방법과 핵심 기능을 사용자 정의하기위한 몇 가지 팁에 대해 논의 할 것입니다.
키 포인트
Codeigniter에서 다국어 지원을 구현하려면 필요한 파일을 구성하고, 언어 파일 생성, 이러한 파일을 컨트롤러에로드하고, 언어로드 책임을 후크에 할당해야합니다.
언어 파일은 응용 프로그램/언어 디렉토리에 배치해야하며 각 언어에는 별도의 디렉토리가 있습니다. 이 파일에는 컨트롤러에로드하고 응용 프로그램 전체에서 사용할 수있는 다른 언어로 된 메시지가 포함되어 있습니다.
CodeInter 후크는 각 컨트롤러에 수동으로로드하지 않고 각 컨트롤러의 언어 파일을 자동으로로드하는 데 사용될 수 있습니다. Post_Controller_Constructor Hook 가이 목적으로 사용될 수 있습니다.
세션 또는 쿠키 값을 사용하여 활성 언어를 추적하여 사용자에게 링크를 제공하여 응용 프로그램의 다른 언어 간 전환. Languageloader 클래스를 수정하여 세션에서 언어를 동적으로로드 할 수 있습니다.
-
다국어 지원 구성 -
-
우리는 또한 다른 언어로 메시지가 포함 된 실제 파일을 만들어야합니다. 이러한 파일은 응용 프로그램/언어 디렉토리에 배치해야하며 각 언어에는 별도의 디렉토리가 있습니다. 예를 들어, 영어 파일은 응용 프로그램/언어/영어 디렉토리에 있어야하며 프랑스어 파일은 응용 프로그램/언어/프랑스 디렉토리에 있어야합니다. 샘플 응용 프로그램에 오류 메시지가 포함 된 일부 언어 파일을 작성하겠습니다. 영어/message_lang.php 파일을 만듭니다 (모든 언어 파일은 _lang.php로 끝나는 것이 중요합니다). 다음 코드에는 언어 파일의 내용에 대한 몇 가지 예제 항목이 포함되어 있습니다.
물론 단일 언어 디렉토리에 여러 언어 파일을 가질 수 있습니다. 메시지의 컨텍스트 및 목적에 따라 메시지를 다른 파일로 그룹화하고 일관성을 위해 파일 별 키워드로 메시지 키를 접두사로 그룹화하는 것이 좋습니다. 다른 방법은 각 컨트롤러에 대해 별도의 메시지 파일을 만드는 것입니다. 이 기술의 장점은 전체 언어 파일이 아닌 필요한 메시지 만로드하여 일부 성능을 향상시킬 수 있다는 것입니다. -
언어 파일로드
우리는 언어 파일을 만들었음에도 불구하고 컨트롤러에로드 될 때까지 유효하지 않습니다. 다음 코드는 컨트롤러에 이러한 파일을로드하는 방법을 보여줍니다.<?php $config['language'] = 'english';
로그인 후 복사
로그인 후 복사
우리는 일반적으로 컨트롤러와보기에 언어 파일을 사용합니다 (모델에서 언어 파일을 사용하는 것은 좋지 않습니다). 여기서는 컨트롤러 생성자를 사용하여 언어 파일을로드하여 클래스 내내 언어 파일을 사용할 수있게 한 다음 클래스의 index () 메소드에서 참조합니다. lang- & gt; load () 메소드의 첫 번째 매개 변수는 _lang 접미사가없는 언어 파일 이름입니다. 두 번째 매개 변수는 선택 사항이며 언어 디렉토리입니다. 여기에 제공되지 않으면 구성에서 기본 언어를 가리 킵니다. lang- & gt; line () 메소드를 사용하여 언어 파일의 항목을 직접 참조하고 뷰 템플릿에 전달 된 데이터에 반환 값을 할당 할 수 있습니다. 그런 다음 관점에서 위의 언어 메시지를 $ language_msg로 사용할 수 있습니다. 때때로 우리는 또한 뷰에서 직접 언어 파일을로드해야합니다. 예를 들어, 형태 태그에 언어 항목을 사용하는 것은보기에서 직접 메시지를로드하고 액세스 해야하는 좋은 이유로 간주 될 수 있습니다. 이러한 파일은 컨트롤러에서와 동일한 액세스 방법을 사용하여보기에서 액세스 할 수 있습니다.
제대로 작동하지만 $를 사용하면 뷰 템플릿 코드가 실제 클래스가 아닐 때 혼란 스러울 수 있습니다. 또한 다음 코드와 언어 비서를 사용하여 뷰에 언어 항목을로드하여 코드를보다 간결하게 만듭니다. <?php $lang["msg_first_name"] = "First Name";
$lang["msg_last_name"] = "Last Name";
$lang["msg_dob"] = "Date of Birth";
$lang["msg_address"] = "Address";
로그인 후 복사
로그인 후 복사
이것은 기본적으로 Codeigniter Language Files를 시작할 때 알아야 할 모든 것입니다. 그러나 이것이 간단하더라도 각 컨트롤러에 필요한 언어 파일을로드하는 것은 특히 프로젝트에 수백 개의 클래스가 포함 된 경우 불필요한 복제입니다. 다행스럽게도 CodeIgniter Hook를 사용하여 각 컨트롤러의 언어 파일을 자동으로로드하기위한 빠르고 효율적인 솔루션을 구축 할 수 있습니다.
<?php class TestLanguage extends CI_Controller
{
public function __construct() {
parent::__construct();
$this->lang->load("message","english");
}
function index() {
$data["language_msg"] = $this->lang->line("msg_hello_english");
$this->load->view('language_view', $data);
}
}
로그인 후 복사
로그인 후 복사
<<> hooks에 언어 로딩 책임을 지정 <🎜
CodeIgniter는 실행 중에 내장 후크를 호출합니다. 사용자 안내서에서 전체 후크 목록을 찾을 수 있습니다. 컨트롤러가 인스턴스화 된 직후와 다른 메소드 호출 전에 호출되는 Post_Controller_Constructor Hook를 사용합니다. 기본 구성 파일에서 enable_hooks 매개 변수를 설정하여 응용 프로그램에서 후크를 활성화합니다.
그런 다음 다음 코드와 같이 Config Directory에서 Hooks.php 파일을 열고 사용자 정의 후크를 만들 수 있습니다.
이것은 후크를 정의하고이를 실행하는 데 필요한 정보를 제공합니다. 실제 구현은 Application/Hooks 디렉토리의 사용자 정의 클래스로 작성됩니다.
여기에서는 $ this- & gt; lang을 사용하여 언어 라이브러리에 액세스 할 수 없으므로 get_instance () 함수를 사용하여 CI 객체 인스턴스를 얻은 다음 이전과 같이 언어를로드해야합니다. 언어 파일은 이제 컨트롤러에 수동으로로드하지 않고 응용 프로그램의 모든 컨트롤러에 사용할 수 있습니다.
<?php $this->lang->line("msg_hello_english");
로그인 후 복사
<<> 다른 언어들 사이의 전환
일단 여러 언어를 지원 한 후에는 사용자가 언어를 클릭하고 전환 할 수있는 응용 프로그램 메뉴 중 하나에서 각 언어에 대한 링크를 사용자에게 제공 할 수 있습니다. 세션 또는 쿠키 값을 사용하여 활성 언어를 추적 할 수 있습니다. 이전에 생성 한 후크 클래스를 사용하여 언어 스위칭을 어떻게 관리하는지 살펴 보겠습니다. 먼저 언어를 전환하기 위해 클래스를 만들어야합니다.
그런 다음 사용 가능한 각 언어를 전환하려면 링크를 정의해야합니다.
<?php $config['language'] = 'english';
로그인 후 복사
로그인 후 복사
사용자가 특정 언어를 선택할 때마다 Switchlangswitch 클래스의 SwitchLanguage () 메소드는 선택한 언어를 세션에 할당하고 사용자를 홈페이지로 리디렉션합니다. 이제 활성 언어는 세션에서 변경되지만 활성 언어에 대한 특정 언어 파일을로드 할 때까지 여전히 영향을받지 않습니다. 또한 세션에서 언어를 동적으로로드하려면 후크 클래스를 수정해야합니다.
Languageloader 클래스에서는 활성 언어를 얻고 필요한 언어 파일을로드하거나 세션 키가 존재하지 않으면 기본 언어를로드합니다. 이 수업에서 단일 언어에 대해 여러 언어 파일을로드 할 수 있습니다. <?php $lang["msg_first_name"] = "First Name";
$lang["msg_last_name"] = "Last Name";
$lang["msg_dob"] = "Date of Birth";
$lang["msg_address"] = "Address";
로그인 후 복사
로그인 후 복사
<🎜 🎜> <<> 결론
대부분의 풀 스택 PHP 프레임 워크에는 다국어 지원이있어 응용 프로그램의 인터페이스를 다른 언어로 쉽게 제시 할 수 있습니다. 이 기사에서는 Codeigniter에서 여러 언어를 제공하는 방법을 보았습니다. 물론 다국어 솔루션을 구축하는 다른 방법이 있으므로 Codeigniter 및 기타 프레임 워크에서 다국어 지원을 구현하는 데있어 모범 사례와 경험을 자유롭게 논의하십시오. 귀하의 의견을 기대합니다! Fotolia의 사진 <?php class TestLanguage extends CI_Controller
{
public function __construct() {
parent::__construct();
$this->lang->load("message","english");
}
function index() {
$data["language_msg"] = $this->lang->line("msg_hello_english");
$this->load->view('language_view', $data);
}
}
로그인 후 복사
로그인 후 복사
CodeIgniter 다국어 지원 FAQ (FAQ)
(원본 문서에 언급 된 FAQ 부분은 여기에 포함되어야합니다. 콘텐츠가 길기 때문에 여기에 생략되어 있습니다. 원본 문서에 따라 전체적으로 추가하십시오.)
위 내용은 PHP 마스터 | Codeigniter의 다국어 지원의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!