문제

모든 곳에서 그 때 그것을 만들기 위해서는 다중 언어 응용 프로그램 PHP 에서 모두 말 gettext 최선의 방법입니다 그것을 할 수 있습니다.나는 단지 알고 싶은 이유는?

만드는 것처럼 이 방법은 아래,더 효율적 사용하여 다음 gettext?

<?PHP
//Have seperate language files for each language I add, this would be english file
function lang($phrase){
    static $lang = array(
        'NO_PHOTO' => 'No photo\'s available',
        'NEW_MEMBER' => 'This user is new'
    );
    return $lang[$phrase];
}
//Then in application where there is text from the site and not from users I would do something like this
echo lang('NO_PHOTO');  // No photo's available would show here
?>
도움이 되었습니까?

해결책

GetText의 좋은 점은 일종의 요점 표준이라는 것입니다. 많은 응용 프로그램에서 많은 언어로 사용됩니다. 이는 많은 사람들이 함께 일한다는 것을 의미합니다.

또 다른 좋은 것 (아마도 결과, 원인, 또는 실제로) 몇 가지 도구입니다 포도 예를 들어, getText 파일을 편집하려면 존재합니다 : 일부 PHP를 통과 할 필요가 없습니다. (또는 무엇이든) 소스 코드. 그리고 이것은 매우 중요합니다.

  • 이는 기술이 아닌 사람들이 GetText 현지화 파일을 편집 할 수 있음을 의미합니다
    • 어쩌면 이것은 지금 당신에게 중요하지 않은 것 같습니다.
    • 그러나 큰 오픈 소스 애플리케이션을 작업하고 있다면 성공하고 많은 사람들이 자신의 언어로 필요하면 중요해질 것입니다.
  • 그것은 그들이 응용 프로그램을 깨뜨릴 위험이 없다는 것을 의미합니다 (예를 들어, 인용문의 불일치로 인해 "구문 분석 오류"를 생각하십시오 ;-))

다른 팁

거기에 몇 가지 단점이에서"implementation".

  • 달리 gettext 그것은 구현에 php. ;-)
  • 그 전체로 번역 메모리에 상관없이 당신이 그것을 사용하거나하지 않습니다
  • 는 악화하고 전체 배열의 데이터가 필요할 때마다 하나인(는 동안 꽤 몇 가지 메모리에서 PHP)
  • 그것은 처리하지 못하는 복수 형태에 대한 많은 언어
  • 코드를 사용하여 이 번역이 단단하게 읽을 수 있는
  • 코드를 사용하여 이 번역이 없 포함 대체 사용하는 경우에 없을 번역합니다.

기본적으로,당신의 구현을 널리 사용되는 많은 프로젝트에서는 사람은 죽음을 청구의 국제화 지원과 혁신적인 발명의 바퀴,하지만 걱정하지 않는 비트가 결과에 대해 알고하지 않에서 좋은 나쁘다.

모든 질문에 대해 다음과 같은 대답입니다.

나의 해킹 된 멍청한 멍청한 구현]보다 [Hightly Provess 및 광범위하게 사용 된 솔루션]에서 더 나은 것은 무엇입니까?

  • 그것은 오랫동안 여기에 있었고, 믿거 나 말거나, 경험이 풍부한 Dev가 그것을 일하고 그것을 사용하고 그것을 칭찬했다면, 아마도 이유가 있습니다.
  • 그것은 표준이므로 솔루션이 더 좋을지하더라도 파괴 비용을 지불하는 가격은 그만한 가치가 없습니다.
  • 전역 범위를 염두에두고 개발되기 때문에 구현보다 1000 개를 더 할 수 있지만 아이디어는 문제를 해결하는 것을 목표로합니다.

나는 비판을하지 않습니다. 우리 모두는 우리 자신에게 우리가 똑똑하고 다른 사람들이 과장된 프로그래머임을 확신 시키려고 노력했습니다. 그것은 배우는 방법의 일부입니다. 나는 실제로 그것을 계속하고, 바퀴를 재창조하거나, 내가 해킹 한 키스 코드에 대해 친구 / 동료들과 함께 과시합니다. 시간이 지남에 따라, 당신은 단지 점점 더 적은 일을하게됩니다. 그리고 나는 당신이 실제로 할 자격이있는 날을 그만두는 것을 멈추고 있다고 생각합니다 :-)

그만큼 GetText의 장점은 귀하, Java String 테이블 또는 Windows 리소스와 같은 다른 솔루션과 비교할 때 소스 코드를 더 읽기 쉽게 만든다는 것입니다.

이것을 비교하십시오 :

printf(_("No photo available (error %d)."), err);

이것으로 :

printf(i18n(NO_PHOTO), err);
// or some variant of the same thing

첫 번째 경우, 코드에서 바로 메시지를 볼 수 있으며 그것이 무엇을하는지 정확히 알고 있습니다. 후자의 경우, 상징적 인 상수 만 볼 수 있으며 정확한 텍스트와 형식 지정자를 찾아야합니다.

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