PHP에서 gettext에 문제가 있습니다. 원어로 된 단어 나 표현이 다른 의미를 가질 수있는 상황을 생각해보십시오.Gettext 다른 번역
예 : 단어 A
단어에는 두 가지 의미가 있습니다. 하나는 B
이고 하나는 C
입니다. 웹 사이트의 일부에서는 B
을 사용해야합니다. 그리고 다른 부분에서는 C
을 사용해야합니다.
우리가 쓸 때 B
또는 C
을 어떻게 얻을 수 있습니까? 이 문제를 해결할 확실한 방법이 있어야합니다.
PHP에서 gettext에 문제가 있습니다. 원어로 된 단어 나 표현이 다른 의미를 가질 수있는 상황을 생각해보십시오.Gettext 다른 번역
예 : 단어 A
단어에는 두 가지 의미가 있습니다. 하나는 B
이고 하나는 C
입니다. 웹 사이트의 일부에서는 B
을 사용해야합니다. 그리고 다른 부분에서는 C
을 사용해야합니다.
우리가 쓸 때 B
또는 C
을 어떻게 얻을 수 있습니까? 이 문제를 해결할 확실한 방법이 있어야합니다.
Gettext는 소위 message contexts을 지원합니다. PHP는 이것에 대한 기본 메소드가 없지만 it can easily be implemented입니다.
다른 컨텍스트에서 "금액"이라는 용어를 사용하려는 경우 - 한 맥락에서 "항목 세트 수"를 의미하고, 다른 컨텍스트에서는 "송장 금액"을 의미합니다.
은 여러 단계로 작동합니다
첫째, 대신 gettext()
기능을 사용하여, 당신은 사용자 정의를 사용합니다; contextGettext()
이라고 부르 자.
echo contextGettext('amount', 'count of items');
echo contextGettext('amount', 'invoice amount');
이 방법은 다음과 같다 :
function contextGettext($string, $context)
{
// http://www.php.net/manual/de/book.gettext.php#89975
$contextString = "{$context}\004{$string}";
$translation = gettext($contextString);
return ($translation === $contextString) ? $string : $translation;
}
참고 \004
:이 gettext의 사양에 따라, 상기 메시지 문자열의 컨텍스트 식별자을 구분 세퍼레이터이다. (. 아무것도 그냥 배경을 알고, 정말 걱정 할 필요가 없습니다)이 xgettext
도구로 번역 문자열을 수집 할 때
, 당신은 상황에 맞는 문자열을 다음 --keyword
인수를 추가합니다 :
xgettext … --keyword="contextGettext:2c,1" …
카탈로그 번역 .mo
파일을 생성하고 webserve를 다시 시작
msgctxt "count of items"
msgid "amount"
msgstr ""
msgctxt "invoice amount"
msgid "amount"
msgstr ""
: 귀하의 .po
파일은 다음과 같은 항목이 있습니다 r을 사용하면 웹 응용 프로그램에서 올바른 문자열을 올바른 위치에 출력합니다.
데모를 게시하고 이미 시도한 코드를 표시 할 수 있습니까? – BenM
쓸 내용이 없습니다. 이미 사용 했으니 까. 문제는 동일한 단어로 여러 번역이 필요하다는 것입니다. –
죄송합니다. 이미 시도한 내용을 보여주고 작동하지 않는 이유를 설명하는 것이 좋습니다. 아무도 당신을 위해 그것을 쓰려고하지 않습니다. – BenM