2013-10-17 7 views
2

내가 내 PHP 프로젝트의 다음 파일이 국가 코드없이 gettext를 사용하려고 시도 속성 -> 언어 (들과 ES_ES 각각)는 ('ES'대신 'ES_ES')

그리고 localization.php 파일

$language = "es_ES.UTF-8"; 
putenv("LANG=$language"); 
setlocale(LC_ALL, $language); 
bindtextdomain(STRING_DOMAIN, LOCALE_PATH); 
textdomain(STRING_DOMAIN); 

echo "Test translation: "._('string to translate'); 

이 코드는 잘 작동하고 '번역 문자열'에이 코드가 올바르게 표시됩니다. 그러나 제네릭 'es'코드를 사용하려고하면 :

$language = "es.UTF-8"; 

... 문자열이 번역되지 않습니다. 내 우분투에 설치된 로케일과 관련있는 것 같습니다 (es_ES.utf8은 있지만 es.utf8이 존재하지 않습니다)

gettext가 es.UTF-8 파일을 강제로 사용할 수 있습니까?

답변

2

해결 방법으로 항상 localedef을 사용하여 기존 로캘을 기반으로 새 로캘을 컴파일 할 수 있습니다. es_ES.UTF-8에 따라 es을 만들려면 여기

localedef -i es_ES -f UTF-8 es.UTF8 

을하지만 것은 번역 파일의 간단한 로딩을 넘어 지역을 커버 몇 가지 중요한 질문에 온다. 날짜 및 시간 형식, 측정 값 등과 같은 로캘 별 정보는 설치된 로캘에 따라 다르므로 로캘 사용과 관련된 계획을 세우는 것이 좋습니다. 스페인어 (스페인)에 es_ES을 사용한다고 가정하면 es은 무엇입니까? 그것은 es_IC (카나리아 제도) 또는 일부 라틴 아메리카 풍미와 같은 스페인어의 특정 풍미를위한 것입니까?

다음은 명확한 예입니다. 스페인어의 다양한 풍미를 다루기 위해 로케일의 사용자 정의 된 레퍼토리를 디자인하려면 다음과 같이하십시오. es_MXes_419 (419 라틴 아메리카의 지리적 지역 번호)에

locale-gen es_ES.UTF-8 es_MX.UTF-8 es_AR.UTF-8 

가 그럼 난 es_AR에 따라 es_US 기반으로하고 싶은 : 첫째 나는 locale-gen 쉽게 설치할 수있는 그 로케일을 추가

localedef -i es_MX -f UTF-8 es_US.UTF-8 
    localedef -i es_AR -f UTF-8 es_419.UTF-8