문제

PHP getText 함수를 사용하기 위해 POEDIT에서 언어 파일을 만들었습니다. 이제 테스트하려는 페이지에서, 내가 만든 .po 또는 .mo 파일을 찾거나로드 할 수 없습니다. 내가 뭘 잘못하고있는거야?

$locale = "en_US";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

//my .po ad .mo file is located here /includes/locale/en/default.mo

기본 영어 lang 파일을로드하려고하지만 파일의 일부 텍스트를 언어 파일에서 읽고 있는지 확인하고 현재는 기본 텍스트 만 표시하고 번역을하지 않는 것입니다. 아마도 잘못된 길

도움이 되었습니까?

해결책

나는 마침내 그것을 일하게했다. 나는 여기에 게시하고있을 것이다. 아마도 다른 사람을 도울 수있을 것이다. 그것은 내가 생각하는 방식을 다소 혼란스럽게한다.

나는이 데모에 프랑스어에 FR을 사용하겠습니다

$locale = "fr_fr";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

에서 bindtextdomain 기능 위의 첫 번째 매개 변수는 .PO 언어 파일의 이름입니다. 두 번째 매개 변수는 폴더로가는 경로입니다. 이것은 약간 까다로운/문서화되지 않은 곳입니다 ... 여기에서 설정 한 폴더에서는 2 자리 국가 코드를 사용하여 각 언어에 대한 폴더를 만들어야합니다. 폴더이 폴더를 추가해야했습니다 LC_MESSAGES, 내부에 LC_MESSAGES 당신의 위치입니다 default.po 파일이 이동합니다.

Lang 폴더로가는 길은 여기에 대담한 부분에 대해 아무것도 언급하지 않기 때문에 혼란스러워하는 유일한 방법이었습니다.

랭 폴더/FR_FR/LC_MESSAGES/default.po

그래도 여전히 이상합니다. default.po 나에게 작동하지만 위의 코드에서 다른 것으로 변경 한 다음 .po 및 .mo 파일의 파일 이름을 변경하면 더 이상 작동하지 않으면 작동합니다. default 나에게 이름, 나는 아마도 gettext가 어떤 종류의 장면 뒤에서 캐싱을 할 것이라고 생각하기 시작했다.

다른 팁

나는 그것이 당신의 길이라고 생각합니다.

호스트의 "/contuary/locale"이 올바른 디렉토리입니까? 아니면 그게 뭔가와 관련이 있습니까? 참고 : 홈 디렉토리 나 설치 디렉토리와 관련이없는 전체 PathName이 필요합니다. 그래서 그것은 다음과 같습니다.

  • C :/xampp/htdocs/include/locale
  • /var/www/include/locale
  • /home/username/include/locale

발견 된 전체 디렉토리는 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top