2011-11-11 3 views
1

최근 Apache2를 사용하여 Linux에서 실행되는 PHP 응용 프로그램을 번역하는 데 시간을 보냈습니다. gettext를 작동 시키려면 필자가 지원하고자하는 모든 언어에 대한 시스템 디렉토리를 만져야했기 때문에 모든 언어로 gettext에서 텍스트를 가져올 수있는 더 쉬운 방법이 있는지 궁금합니다.gettext는 어떤 언어를 사용할 수 있는지를 어떻게 알 수 있습니까?

./locale/sv_SE/LC_MESSAGES/default.po 
./locale/es_BO/LC_MESSAGES/default.po 

및 코드 :

내 로케일 파일은 내 프로젝트의 하위 디렉토리에 다음과 같이 ./gettext.php에 있습니다

<?php 
setlocale(LC_ALL, "es_BO.utf8"); 
bindtextdomain("default", "locale/"); # usually works 
textdomain("default"); 
echo echo _("test"); 
?> 

C 코드가 정확히입니다 동일한 코드이지만 일부 헤더가 있습니다.

이 코드 출력되지 않게 내가 es_BO에 이미 존재하는 SV_SE 로케일 연결이 추한 해킹과 폭 넓은 볼리비아 스페인어 시스템을 "사용"하지 않으면 나의 스페인어 번역 :

sudo ln -s /usr/lib/locale/sv_SE.utf8 /usr/lib/locale/es_BO.utf8 

업데이트를

내 질문이 잘못되었다고 생각하니 "어떻게하면 그 일을 피할 수 있습니까? ln -s 명령을 사용하거나 잘못 입력하면 알려주시겠습니까?" 기본적으로 내가는/usr/lib 디렉토리/로케일 "또는 어떻게 간단한 방법으로 해당 파일을 필요에 gettext 이유를 알고 싶은 유일한 번역 메시지에 gettext를 사용한다.

갱신 2 내가 setlocal(LC_MESSAGES, "es_BO.utf8") 그러나 그것을 사용하여 시도 아직는/usr/lib 디렉토리/로케일의 메시지를 필요로한다.

+0

한 가지를 (또한, gettext를은 현재 로케일을 사용하려고 시도하고, 실패 할 경우에만 C 다시 떨어질 수 전혀 아무것도 파악되지 않습니다) 아마도 LC_ALL의 생각. gettext에서 날짜 형식화 및 숫자 형식화를 읽어야합니다. 그건 내가 아직도/usr/lib/locale에 언어를 가지고있을 필요가 없다. –

+0

아하, 너의 여분의 설명이 훨씬 더 의미가있다. 나는 Bort가 이것을 다루었다고 생각해. :) – sarnold

+0

포인터에 대한 감사합니다, 나는 내 자신의 (너무 밝은) 문학의 광휘에서 길을 잃는 경향이 있습니다. :-) –

답변

1

특정 번역이 제대로 당신은 내가 당신의 현재 언어 해킹 작동 생각

#!/bin/bash 
export LANG=es_BO 
./yourprog 

로 제대로 언어 환경을 호출해야 작동 여부를 확인하기위한 LANG = SV_SE 때문에 너의 현재의 sy 안에 줄기. 그렇지 않으면 gettext에 대한 자세한 내용을 읽는 것이 좋습니다.

+0

'locale (7)'을 잊지 마라. 더 좋은 개요 일 수있다. – sarnold

+0

내가 LANG = es_BO.utf8 로케일을 설정하면 재미있을 것입니다. 해킹을해도 해고되지는 않습니다. –

+0

나는이 대답이 정말로 무엇을 의미하는지 확신 할 수 없다. 나는 내 자신을 분명히 표현하지 못한다는 것을 나에게 지적한다. 하지만 기본적으로 gettext를 사용한 번역은 제대로 작동하지 않는다는 것을 알고 있습니다. 이유를 이해하려고 노력 중입니다. –

1

locale -a을 사용하면 시스템에 생성 된 로케일 목록을 얻을 수 있습니다. 이 목록에 추가하려면 /etc/locale.gen을 편집하고 locale-gen으로 다시 실행하십시오.

내가 LC_MESSAGES를 대신 사용하려고 않았지만

관련 문제