도구번역
Tool번역 도구를 위한 매뉴얼입니다. 자유롭게 번역하세요!
목적
Toolforge의 많은 도구에는 인터페이스 번역이 없습니다. 다시 말해서, 한 언어(일반적으로 영어)로만 제공됩니다. 인터페이스에서 여러 언어를 지원하는 도구조차도 새로운 언어와 번역을 추가하기 위해 투박한 방법을 사용합니다. 도구번역은 커뮤니티(TM)가 도구에 대한 번역을 제공하기 위해 중앙 집중식의 사용자 친화적인 방법을 제공합니다. 도구는 이 메커니즘을 지원해야합니다. 즉, 인터페이스에서 정적 텍스트가 아닌 동적 텍스트를 사용하려면 한 번 "작업"해야합니다. 원본 블로그 게시물.
번역
- 도구로 이동
- 요청할 경우, 도구 승인
- 상단의 드롭 다운 상자 또는 메인 페이지의 목록에서 번역할 도구를 선택
- 번역할 언어 선택 또는 추가
- 새로운 번역이 들어가야하는 "셀" 또는 개선하려는 번역을 두 번 클릭
- 텍스트 입력. HTML(자바 스크립트 없음!)을 사용할 수 있습니다. 동일한 "키 이름"을 가진 다른 도구에서 번역에 대한 제안이 있을 수 있으며, 이를 텍스트의 기초로 사용할 수 있습니다.
- 확인을 클릭. 완료! 브라우저 캐싱 문제는 제쳐두고 다음에 로드할 때 번역이 해당 도구에 표시되어야 합니다.
자료
- 도구번역 인터페이스(도구 자체에 사용됩니다!)의 데모 비디오
- 간단한 데모 도구 및 HTML/JS 소스
- 약간 더 야심찬 예로서 위키 러브스 모뉴먼트 (위키데이터 판)
- 저장소(git repo)
기술
번역은 Toolforge의 데이터베이스에 저장됩니다. 번역의 이전 버전은 유지되며 번역은 해당 편집자에게 귀속됩니다.("최근 변경 사항" 도구를 사용할 수 있습니다.)
번역 데이터에 대한 접근을 단순화하기 위해 모든 번역은 변경될 때마다 업데이트되는 JSON 파일에도 저장됩니다. 예 "demotool1":
- toolinfo.json, 도구에 대한 정보가 포함된 JSON 파일
- en.json, 해당 도구의 영어 번역이 포함 된 JSON 파일. 다른 언어는 해당 언어 코드를 사용하여 동일한 방식으로 작동합니다.
모든 유효한 언어가 포함된 JSON 파일도 있습니다.
데이터베이스
소스 데이터는 Toolforge의 tools-db에 있는 s53069__tooltranslate_p
데이터베이스(mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p
)에 저장됩니다. 필요한 경우 거기에서 데이터를 가져올 수도 있습니다.
다음 표를 사용할 수 있습니다:
- tool
- id | name | label | url | owner
- translation
- id | tool_id | language | key | json | user | timestamp | current
입문: HTML/JS
- 데모 코드 확인
- 번역도구 JS 코드에는 여러분이 사용할 수 있는 선택 목록이 있습니다.
- 만일 여러분이 번역된 문자열을 원한다면(예제 객체
tt
를 사용하여),tt.t(key)
또는tt.t(key,{lang:language_code})
가 가져옵니다. - HTML에서 태그에
tt
속성을 추가합니다. 예를 들어,<span tt='key'></span>
. - 다음을 포함하는 번역 문자열 "https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default"에서 "$9"까지는 각각 "tt1"에서 "tt9"까지의 태그 속성으로 자동 대체됩니다. 이는 텍스트를 여러 조각으로 분할하지 않고 인터페이스 언어를 변경할 수 있도록하기 위한 것입니다. 속성이 누락된 경우 번역이 수정되지 않습니다. 자바스크립트에서,
tt.t(key,{params:['value for https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default','value for https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/tt.js?at=master&fileviewer=file-view-default']})
.
입문: PHP
Toolforge에 다음과 같이 포함할 수 있는 PHP 클래스가 있습니다:
require_once ( "/data/project/tooltranslate/public_html/tt.php") ;
그런 다음 클래스를 인스턴스화 할 수 있습니다:
$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // '도구'를 제외한 모든 것은 선택 사항입니다.
직접 사용
PHP에서 인터페이스 번역을 얻는 방법에는 두 가지가 있습니다. 하나는 번역된 문자열을 직접 가져 오는 것이지만
print "<p>" . $tt->t('translation_key') . "</p>" ;
이것은 페이지를 다시 로드하지 않으면 번역을 변경할 수 없다는 단점이 있습니다.
JS를 통해서 사용하세요.
여러분은 대신에 HTML "번역 태그"(위 참조)를 추가하고 클래스가 필요한 JS 호출을 추가하도록 할 수 있습니다. 또 다른 장점은 위의 "직접" 번역을 사용하지 않으면 PHP 클래스가 번역 파일을 로드할 필요가 없다는 것입니다. HTML/JS 번역을 사용하려면, 여러분 페이지 HTML의 <head> 섹션에 넣을 필요가 있습니다.
<script src="https://tools-static.wmflabs.org/tooltranslate/tt.js">
(jQuery 또한 필요할 것입니다.) 문서를 생성하실 때 위쪽 대신에 다음을 작성하세요:
print "<p tt='translation_key'></p>" ;
출력의 어딘가에 (아마도 끝 부분) 호출 코드를 추가해야합니다:
print $tt->getJS() ;
이렇게하면 필요한 JS가 초기화되고 PHP 인스턴스(대체 언어 등)에서 사용되는 매개 변수가 재생됩니다. "번역 드롭다운"을 원하면 HTML 코드에 감싸기 요소를 추가하세요.
<div id='tooltranslate_wrapper'></div>
그런 다음 "jQuery 접근자"를 getJS 메소드 호출에 대한 매개 변수로 제공하십시오:
print $tt->getJS('#tooltranslate_wrapper') ;
작동 예제는 다음 도구를 참조하세요.