- 1
- 260578
- 조회 수 495
첫 관문에서 막혀버렸습니다.
$language = "ko-KR"; putenv("LANG=$language"); setlocale(LC_ALL, $language); $domain = $language; $str = bindtextdomain($domain, "./locale"); textdomain($domain); echo _('helloWorld');
/web | ||||
locale | ||||
ko-KR | ||||
LC_MESSAGES | ||||
ko-KR.mo | ||||
ko-KR.po | ||||
test.php |
구글링을 통해 알아봐도 짤막하게 나와있는게 다여서 염치불구하고 질문 드립니다.
ko-KR.po 파일 내용
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2020-06-01 16:23+0900\n"
"PO-Revision-Date: 2020-06-01 16:52+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3.1\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ko\n"
# 한국어 번역 파일.
msgid "helloWorld"
msgstr "안녕"
왜 표시가 안 되는지 알 수 있을까요? 부탁드립니다.
1. 플랫폼마다 언어 코드가 다릅니다. 예를 들어 한국어의 경우 리눅스에서는 ko_KR.UTF-8이며 윈도우상에서는 Korean_Korea.949입니다. setlocale 호출시 setlocale(LC_ALL, "ko_KR.UTF-8", "Korean_Korea.949") 처럼 호출하면 알아서 사용 가능한 언어코드로 설정해줍니다.
(언어별/OS별 코드페이지는 https://docs.moodle.org/dev/Table_of_locales 에서 체크 가능합니다)
2. 운영체제에서 해당 언어를 사용할수 있어야 합니다. 우분투 등 리눅스의 경우 locale -a로 체크후 ko_KR이 없다면 sudo locale-gen ko로 생성할수 있습니다.
3. domain에는 언어파일의 이름이 옵니다. 이 이름은 언어별로 모두 같아야 하므로 파일명을 언어코드로 하는건 추후 언어 추가시 헷갈릴수 있어 비추천합니다.
즉 언어 지정이 잘못되어 기본값인 영어를 표시해야 하나, 없으므로 아무것도 표시되지 않는 상황으로 언어코드를 수정하시면 됩니다.