문제

GetText (w/ poedit)에 대한 몇 가지 튜토리얼이 있습니다. 불행히도 대부분 Unix 환경을위한 것입니다. 그리고 더 불행한 것은 Windows XP에서 WAMP 서버를 실행하고 있다는 것입니다 (그러나 UNIX 환경을 위해 개발하고 있음). 튜토리얼은 GetText가 제대로 작동하지 않을 수 없습니다. 남자 페이지에서 (http://us3.php.net/manual/book.gettext.php), Windows 환경에서는 다른 프로세스 인 것 같습니다. 나는 의견에서 몇 가지 솔루션을 시도했지만 여전히 작동 할 수는 없습니다! 제발, 나는 이것에 대해 많은 시간을 보냈습니다. 누군가 가이 일을 할 수있는 올바른 방향으로 나를 지적 할 수 있기를 바랍니다! (그리고 나는 내 좌절을 공유하는 다른 사람들이 있다고 확신합니다). 지금까지 내 설정과 함께, 나는 "Hello World!" 반면 번역 된 문자열을 가져와야합니다.

지금까지 내 설정/코드는 다음과 같습니다.

<?php
// test.php
if (!defined('LC_MESSAGES')) {
    define('LC_MESSAGES', 6);

}
$locale = "deu_DEU"; // apparently the locales are different on a WINDOWS platform

putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("greetings", ".\locale");
textdomain("greetings");


echo _("Hello World"); 

?>

폴더 구조

root:     C:\Program Files\WampServer 2\www
test.php: C:\Program Files\WampServer 2\www\site
.po:      C:\Program Files\WampServer 2\www\site\locale\deu_DEU\LC_MESSAGES\greetings.po
.mo:      C:\Program Files\WampServer 2\www\site\locale\deu_DEU\LC_MESSAGES\greetings.mo

조언 해주세요! 시간 내 줘서 고마워 :)

도움이 되었습니까?

해결책 6

로케일이 설치되지 않았기 때문입니다.

다른 팁

로컬 컴퓨터에서 getText로 작업하는 동안 문제가 발생했으며 검색 후이 페이지를 찾은 후 문제를 해결했습니다.http://www.kipras.com/getting-gettext-to-work-in-apache--windows/96

웹 페이지에서 인용하고 있습니다.

Linux 서버 (또는 기타 서버 분리 된 Windows)에서는 다음과 같은 방법입니다.

setlocale(LC_MESSAGES, “en_US”);

Windows에서 로컬을 설정하는 올바른 방법은 다음과 같습니다.

putenv(“LC_ALL=en_US”);

나는 같은 문제가 있었고 거의 하루 정도 낭비했습니다. 마지막으로, 나는 매우 간단한 솔루션, 즉 WAMP 서버 (버전 2.1)를 제거하고 최신 버전을 설치하십시오 (Wampserver 2.1e -32 비트). 이상하지만 문제를 완전히 해결했습니다.

다음은 저를 위해 일한 샘플 코드입니다.

<?php

    $locale = "deu_DEU";

    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale);

    bindtextdomain("greetings", "./locale");
    textdomain("greetings");

    echo _("Hello World");

?>

도움이되기를 바랍니다.

나는 이것에 대해 전체 조사를하지 않았지만 당신의 실수 중 하나는 당신이 유효하지 않은 로케일 코드를 사용했다고 확신합니다.

"de"만 로케일 코드로 사용하십시오. 작동해야합니다. 또한 PHP에 GetText Extension이 설치 및 활성화되어 있는지 확인하십시오 (PHPINFO로 확인).

너무 늦었을 수도 있지만 WAMP PHP 설정에서 "짧은 오픈 태그"를 활성화 할 때까지 비슷한 문제가있었습니다.

이것은 나를 위해 일한 솔루션입니다. 이것은 최신 Wampserver에서 작동합니다. (원천: http://www.extradrm.com/blog/?p=1035 )

1) 여기에서 php-gettext를 다운로드하십시오. https://launchpad.net/php-gettext/+ download 그리고 압축을 풀어라

2) 패키지 루트에있는 다음 파일을 test -language.php : -gettext.inc -gettext.php -streams.php와 동일한 폴더에 추가합니다.

3) php.ini를 열고 wampserver php_gettext.dll :

;extension=php_gettext.dll

4) 이것은 새로운 테스트 파일 Test-language.php입니다

<?php
error_reporting(E_ALL | E_STRICT);

// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', 'C:/wamp/www/test/locale');
define('DEFAULT_LOCALE', 'es_ES');

require_once('gettext.inc');

$supported_locales = array('en_US', 'sr_CS', 'de_CH','es_ES');
$encoding = 'UTF-8';

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;

//var_dump($locale);die();

// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset'))
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);

echo gettext("HELLO_WORLD");
?>

이 모든 후에는 로케일 폴더, en_us (또는 기타 언어) 폴더, lc_messages 폴더를 만들고 messages.po 파일을 넣어야합니다.

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