다국어 기능을 위한 gettext, 하지만 평소에도 쓰면 좋아요
작성일시 : 2024년 09월 21일 (토)
PHP에서 gettext는 다국어를 위한 확장기능이며
PHP에서 gettext기능을 이용하기 위해서는 활성화 되어 있어야 되며 phpinfo()에서 gettext부분이 있어야 됩니다.
이부분에 없다면 php.ini 에서 extension=gettext.so(윈도우는 dll)부분에서 앞에 주석을 없애고 재시작 하세요
phpinfo()에서 이렇게 한줄만 나오면 gettext를 사용할 수 있는 환경인것입니다.
gettext기능은 원래 다국어 지원을 위해서 만들어진 기능으로 이렇게 모든 문자열을 한곳에서 처리하므로 각 언어에 맞게 수정한 파일들을 각 언어별 폴더에 넣어놓으면 모든 문자열이 각 언어로 바뀌게 됩니다.
보통 프로그램을 보면 사용자에게 보이는 문자열(메뉴, 버튼의 텍스트, 애러-성공 메세지)이 곳곳에 쓰이는데
gettext기능을 사용해서 다국어로 변환 할수 있고 통합적으로 관리 할 수 있습니다.
예를 들면 gettext기능을 쓰지 않고 메세지 수정할 일이 생겼다고 한다면 이 텍스트가 들어있는게 100개라면 100개가 있는곳을 찾아서 전부 수정해주어야 겠지요?... 헉 소리 납니다.
하지만 gettext기능을 이용한다면 po파일을 열어서 수정후 저장(mo파일) 하면 처리가 끝나게 됩니다.
그러므로 다국어를 쓰지 않을때도 저런 수정관련을 위해서 써주면 매우 좋은 기능입니다.
프로그램상에서는 gettext('문자열')로 쓰이게 되는데 gettext()대신에 짧게 _()로 사용하는게 일반적입니다.
즉 _() = gettext() 입니다. 'gettext'라고 매번 쓰는것보다 '_'가 훨씬 간단하고 좋지요?
_('문자열')로 사용하면 됩니다.
워드프레스나 다른 프레임워크에서는 __()등의 함수('_'가 두개임)를 쓰는데 저 함수는 해당프레임워크에서 제공해주는 함수로서 PHP기본 gettext와는 다릅니다.
물론 해당 프레임워크에서는 저것을 쓰는것이 더 편의성이 있고 맞는 방법이지만 다른것이라는 것만 인식하면 바뀌었을때 헷갈리는 일이 없겠지요?
gettext의 세부 사용방법은 여기를 참고하세요
http://php.net/manual/kr/book.gettext.php
또한 gettext는 직접 작성하기보다는 po에디터라는 전용 에디터를 사용하는데
www.poedit.net 로 받아서 사용하세요
댓글 (0)