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