언어 Language Class¶
언어 클래스는 국제화를 위해서 언어파일에서 데이터를 추출하여 텍스트를 채워넣습니다.
CodeIgniter의 system 폴더안에 있는 language 폴더에는 언어파일 셋이 있습니다. 여러분이 직접 언어 파일을 만들어서 에러 메세지등을 다른 언어로 표시하게 할 수 있습니다.
언어파일은 일반적으로 system/language 디렉토리에 저장됩니다. 다른방법으로 application 폴더안에 language 폴더를 만든후 언어파일을 저장할 수도 있습니다. CodeIgniter 는 system/language 디렉토리를 먼저 검색 한 후에, application/language 디렉토리를 오버라이드 합니다.
Note
각 언어파일은 각 언어 폴더안에 위치해야 합니다. 예를 들어, 영어(english)는 다음 폴더에 위치합니다: system/language/english
여러 언어 다루기 Handling Multiple Languages¶
어플리케이션에서 여러 언어를 지원하기 위해, application/language/ 디렉토리 안에 각각의 언어를 제공할 수 있습니다. 그리고 application/config/config.php 파일안에서 기본 언어를 지정할 수 있습니다.
application/language/english/ 디렉토리는 에러 메세지등 어플리케이션에서 필요로 하는 언어 파일을 포함합니다.
각각의 다른 관용구 디렉토리는 translations 저장소(repositories)에서 핵심 언어 파일을 얻을 수 있습니다. 또는 여러분 자신이 변역한 것을 여러분의 어플리케이션에 추가할 수 있습니다.
예를 들면 세션 변수 같이 현재 사용하고 있는 언어를 저장할 수 있습니다.
샘플 언어 파일 Sample Language Files¶
system/
language/
english/
...
email_lang.php
form_validation_lang.php
...
application/
language/
english/
error_messages_lang.php
french/
...
email_lang.php
error_messages_lang.php
form_validation_lang.php
...
언어 교체 예제 Example of switching languages¶
$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key');
국제화 Internationalization¶
CodeIgniter 의 언어 클래스는 여러분의 사이트에서 여러 언어를 지원하기 위한 쉽고 가벼운 방법을 제공합니다. 이것은 일반적으로 국제화 및 지역화(internationalization and localization) 를 위한 것은 아닙니다.
우리는 언어를 가리키기 위해, 예를 들면 영어를 위해 “en”, “en-US”, or “en-CA-x-ca” 와 같은 국제 표준을 사용하기 보다는, 일반적인 이름의 관용구 같은 것을 사용합니다.
Note
응용 프로그램에서 위와 같은 약어를 사용하지 못하도록 하는 것은 없습니다!
언어 클래스 사용하기 Using the Language Class¶
언어 파일 생성 Creating Language Files¶
언어파일은 _lang.php 라는 접미어와 확장자를 갖습니다. 예를 들어, 에러 메세지를 포함한 파일을 만든다고 합시다. 그파일이름은 다음과 같겠지요: error_lang.php
언어파일안에서는 데이터는 아래 예제와 같이 $lang 라는 배열안에 한 줄씩 추가해줍니다:
$lang['language_key'] = 'The actual message to be shown';
Note
특정파일안에서 공통적으로 사용하는 접두어를 배열 키에 지정하는 것이 좋습니다. 그렇게하면 같은 이름을 가진것이 다른파일에 있다고 해도 충돌할 염려가 없습니다. 예를 들어, 아래와 같이 에러 메세지를 추가할 때 error_ 접두어를 붙이면 좋습니다.
$lang['error_email_missing'] = 'You must submit an email address';
$lang['error_url_missing'] = 'You must submit a URL';
$lang['error_username_missing'] = 'You must submit a username';
언어 파일 로딩 Loading A Language File¶
특정파일의 한 줄을 가져오고싶다면, 파일을 먼저 로드해야 합니다. 언어파일은 다음과 같이 로드합니다:
$this->lang->load('filename', 'language');
filename 은 로드하고자 하는 파일이름이며 확장자는 붙이지 않습니다, 그리고 language 는 포함하고 있는 언어셋입니다(예, english). 두 번째 파라미터를 빠뜨린다면, application/config/config.php 에 설정되어 있는 기본언어파일이 로드 됩니다.
언어 파일의 배열을 첫 번째 파라미터에 넘김으로, 여러 개의 언어 파일을 동시에 로딩할 수 있습니다.
$this->lang->load(array('filename1', 'filename2'));
Note
language 파라미터는 문자로만 구성될 수 있습니다.
텍스트 한 줄 가져오기 Fetching a Line of Text¶
언어파일이 로드된 후, 다음 함수를 이용하여 한 줄의 텍스트를 가져올 수 있습니다:
$this->lang->line('language_key');
language_key 는 가져오고자 하는 줄의 배열키 입니다.
라인이 존재하는지 확실하지 않은 경우에 에러 로깅을 비활성화 할려면, 함수의 두 번째 요소에 FALSE를 전달하면 됩니다:
$this->lang->line('misc_key', FALSE);
Note
이 함수는 한 줄을 리턴하며, 화면에 출력하지는 않습니다.
언어파일로 폼 레이블 입히기 Using language lines as form labels¶
이 기능은 언어라이브러리에서 deprecated 되었습니다. 그리고 언어(Language Helper) 의 lang() 함수로 이동되었습니다.
언어 자동로드 Auto-loading Languages¶
특정 언어를 전역적으로 사용해야한다면, 시스템이 초기화 될 때 CodeIgniter 에서 자동로드 (auto-load) 하도록 할 수 있습니다. application/config/autoload.php 파일을 열어서 autoload 배열에 language(s) 를 추가하시면 됩니다.
클래스 레퍼런스 Class Reference¶
- class CI_Lang¶
- load($langfile[, $idiom = ''[, $return = FALSE[, $add_suffix = TRUE[, $alt_path = '']]]])¶
인수: - $langfile (mixed) – Language file to load or array with multiple files
- $idiom (string) – Language name (i.e. ‘english’)
- $return (bool) – Whether to return the loaded array of translations
- $add_suffix (bool) – Whether to add the ‘_lang’ suffix to the language file name
- $alt_path (string) – An alternative path to look in for the language file
반환값: Array of language lines if $return is set to TRUE, otherwise void
반환형: mixed
언어 파일 로딩하기.
- line($line[, $log_errors = TRUE])¶
인수: - $line (string) – Language line key name
- $log_errors (bool) – Whether to log an error if the line isn’t found
반환값: Language line string or FALSE on failure
반환형: 문자열
이미 로드된 언어 파일에서 라인번호로 한 줄을 가져오기.