티스토리 뷰
최근 워드프레스 커스터마이징을 하다보니
_(); 요런 함수에 'text' 값을 할당하면
_('text'); 함수가 "텍스트"를 리턴해주는 식의 localization 방식을 사용하길래
구글링 조회 후
간단한 구현을 해 보았다.
워드프레스에서 언어 관련하여 자주 보이는 주요 파일은
en_US.po
en_US.mo
들인데 저 파일 중 텍스트에디터로 .po 파일을 열어보면 규칙성있는 내용이 나타난다.
# 이것은 주석
msgid "text"
msgstr "텍스트"
의 규칙을 가진 쌍으로 입력을 이어가면 된다는것을 알 수 있다.
그러면 워드프레스 환경이 아닌 순수한 PHP 에서는 어떻게 구현할 수 있는지 보자.
PHP Extention 중 gettext 는 미리 탑재시켜야한다.
간단한 지역화 프로젝트를 아래와 같이 구성한다.
단, 한글 번역파일을 만들기위해 en_US 폴더명은 ko_KR 로 지정!
Poedit 다운로드 및 설치, 실행
언어는 한국어로
카탈로그 속성을 들어가서
프로젝트 이름을 지정(하지 않으면 번역된 텍스트가 보이지 않으니 꼭 지정하도록) 한다.
저장!
메뉴를 이용하거나 단축키를 이용하거나
또는 메뉴바의 버튼을 클릭
다음과 같은 경로에 이 예제에서는 messages 라는 파일명으로 지정하여 저장한다.
텍스트편집기로 위에서 생성한 messages.po 파일을 열고
아래 이미지와 같이 추가해준다.
Poedit에서 message.mo 파일을 다시 열면 아래와 같이 나타나면 맞다
파일 > 기본설정에서
아래와같이 체크되어 있어야 한다.
저장!
아래와같이 .mo (컴파일한 번역) 파일이 생성되었으면 잘 된것
프로젝트 / 루트 경로에 index.php 파일 생성하고
아래와같이 코딩
// i18N support infomation $locale = "ko_KR"; $charset = "UTF-8"; if (isset($_GET["locale"])) $locale = $_GET["locale"]; // putenv("LANG={$locale}"); setlocale(LC_ALL, "{$locale}.{$charset}"); // Set the text domain as "messages" $domain = "messages"; bindtextdomain($domain, "./locale"); textdomain($domain); // bind_textdomain_codeset($domain, $charset); echo gettext("Hello world")."!\n"; echo _("Nice to meet you")."~\n"; echo _("This is")."...\n";
echo() 함수에 할당된 텍스트들은
messages.po 에서 msgid 로 지정한 문장들이며
위 소스상에서는 영어이다.
참고로 gettext(); 와 _(); 함수는 동일한 역할을 한다. alias 되어있는...
웹서버에서 위 경로로 접근해보면
아래와 같이 번역되어(msgstr 할당 문장으로 대체되어) 보인다.
# 참고
'웹프로그래밍 > PHP' 카테고리의 다른 글
그누보드 Youtube iframe embed code 보이도록 뷰스킨 패치 (0) | 2015.01.29 |
---|---|
그누보드4 가변 파일 (다중 파일 업로드) 웹접근성 개선 (0) | 2015.01.12 |
워드프레스 사이트/경로 이전 (0) | 2014.12.16 |
IIS 워드프레스 고유주소(Permalink) URL 재작성(ReWrite) 설정 (1) | 2014.12.16 |
IIS 워드프레스 권한설정 for 업데이트 (0) | 2014.12.16 |
- Total
- Today
- Yesterday
- Make Use Of
- How to geek
- 인터넷 통계정보 검색시스템
- 트위터 공유 정보모음
- 웹표준KR
- 치우의 컴맹탈출구
- Dev. Cheat Sheets
- w3schools
- Dev. 조각들
- ASP Ajax Library
- CSS Tricks
- WebResourcesDepot
- jQuery Selectors Tester
- DeveloperSnippets
- Smashing Magazine
- Nettuts+
- devListing
- 웹 리소스 사이트(한)
- Mobile tuts+
- Dream In Code
- Developer Tutorials
- CSS3 Previews
- 자북
- 안드로이드 사이드
- Code Visually
- Code School
- SQLer.com
- 무료 파워포인트 템플릿
- iconPot
- Free PowerPoint Templates
- Design Bombs
- Web Designer Wall
- 1st Webdesigner
- Vandelay Design
- 무료 벡터 이미지 사이트들
- Tripwire Magazine
- Web TrendSet
- WebMonkey
- 윤춘근 프리젠테이션 디자이너 블로그
- cz.cc 무료 DNS
- [웹하드] MediaFire
- [웹하드] DivShare
- 한컴 인터넷 오피스
- IE
- javascript
- API
- iis
- mssql
- 안드로이드
- nodejs
- 한글
- centos
- iphone
- Chrome
- IOS
- laravel
- nginx
- ASP
- Docker
- JQuery
- 워드프레스
- git
- Debug
- JSON
- Linux
- CSS
- sencha touch
- PHP
- classic asp
- Prototype
- Wordpress
- Mac
- Android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |