모듈:TNT
Module이 모듈을 사용하면 다국어 템플릿 및 모듈 프로젝트의 일부로 템플릿 및 모듈을 쉽게 번역할 수 있습니다.TNT 모듈에서는 영어 텍스트를 모듈이나 템플릿에 저장하는 대신 모듈을 언어 중립으로 설계하여 Commons의 표 형식의 데이터 페이지에 다국어 텍스트를 저장할 수 있습니다.이렇게 하면 모듈 또는 템플릿이 변환된 문자열(메시지)을 사용하거나 메시지가 아직 번역되지 않은 경우 영어로 폴백됩니다.번역테이블을 갱신하면 페이지가 자동으로 갱신됩니다(시간이 걸릴 수 있습니다).다만 Wiki에서는 템플릿이나 모듈을 변경할 필요가 없습니다.이 프로세스는 미디어와 매우 유사합니다.Wiki의 현지화로 {{PLUAL...}와 같은 모든 표준 현지화 규칙을 지원합니다.}} 및 기타 파라미터.
이 모듈은 #invoke를 사용하는 템플릿 및 다른 모듈에서 사용할 수 있습니다.간단한 예제는 데이터:I18n/템플릿:Graphs.tab - 2개의 메시지가 포함된 테이블로, 각 메시지에는 1개의 파라미터가 있습니다.관례상 모든 변환 테이블에는 '데이터:I18n/...' 접두사: 다른 유형의 데이터와 구분합니다.
템플릿에서 사용
| 묘사 | 위키 마크업 |
|---|---|
| 템플릿에서 이 명령어는 Commons' Data를 사용하여 source_table 메시지를 변환합니다.I18n/템플릿:Graphs.탭 변환 테이블 | {{#제외:TNT 메시지 I18n/템플릿:Graphs.tab source_table }} |
| 메시지에 매개 변수가 포함되어 있는 경우 메시지 ID 뒤에 매개 변수를 지정할 수 있습니다. | {{#제외:TNT 메시지 I18n/템플릿:My Template.tab message-with-params param1 param2 } |
템플릿 파라미터 변환
템플릿 매개 변수는 일반적으로 템플릿의 /doc 하위 페이지 내에 JSONtemplatedata 블록으로 저장됩니다.번역은 편리하지만 글로벌템플릿에 새로운 파라미터가 추가되면 모든 /doc 페이지를 모든 언어로 갱신해야 합니다.TNT는 Commons에 저장된 테이블에서 템플리트 블록을 자동으로 생성함으로써 이를 지원합니다.이 행을 모든 /doc 서브페이지에 배치하면 Data:템플리트/그래프:Lines.tab 테이블에서는 모든 언어로 필요한 템플릿 정보를 생성할 수 있습니다.로컬 커뮤니티는 템플릿 매뉴얼 전체를 번역하지 않은 경우에도 모든 템플릿파라미터를 일원적으로 갱신하여 표시할 수 있습니다.{{#제외:TNT 문서 그래프:회선 }} 모듈에서 사용
템플릿과 마찬가지로 모듈도 현지화에 다음 모듈을 사용해야 합니다.
현지의 TNT = 요구하다('모듈:TNT') -- 변환 테이블을 사용하여 <messageId> 문자열을 2개의 파라미터로 포맷합니다. 현지의 본문 = TNT.포맷('I18n/My_module_messages', 'messageId', '1번', 'flash2', ...) - 동일하지만 특정 언어로 번역합니다. 현지의 본문 = TNT.format In Language('fr', 'I18n/My_module_messages', 'messageId', '1번', 'flash2', ...) TNTTool 사용
모듈: TNTool의 특징:
- 질문 함수: 부울 또는 수치 인덱스 리턴 포함.다른 모듈 또는 템플릿에서 호출됩니다.포함:
- 대소문자를 구분하는 옵션.
- 번역된 텍스트 값이 여러 개일 수 있습니다(각 값은 " "로 구분됩니다).
- 쓰기는 제쳐두고 접두사로 "I18n/"를 추가하고 테이블 이름의 접미사로 ".tab" 확장자를 추가합니다.
- 몇 가지 예시를 들 수 있습니다.
-- -- 도입부: (!!!)이 페이지의 이름을 변경하지 마세요!!) -- 이 모듈에서는 템플릿 또는 모듈을 복사/붙일 수 있습니다. -- Wiki는 번역이 변경되지 않습니다.모든 번역 텍스트가 저장됩니다. -- Commons(공통)의 글로벌 Data:.*. 탭 페이지에 표시되며 모든 곳에서 사용됩니다. -- -- 참조: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules -- -- 주의: -- 이 모듈의 이름을 변경하지 마십시오.모든 Wiki에서 동일해야 합니다. -- 이 코드는 https://www.mediawiki.org/wiki/Module:TNT 에서 관리되고 있습니다. --복사되어 변경사항이 덮어쓰기 될 수 있으므로 다른 곳에서 수정하지 마십시오. --제안은 https://www.mediawiki.org/wiki/Module_talk:TNT에서 할 수 있습니다. -- - 설명: -- "msg" 함수는 Commons 데이터 세트를 사용하여 메시지를 변환합니다. -- 지정된 키(예를 들어 source-table)와 옵션 인수를 함께 사용합니다. -- 현재 콘텐츠 언어의 Wiki 마크업으로 이동합니다. -- lang=xx 를 사용하여 언어를 설정합니다.예: -- -- {{#parames:}TNT 메시지 -- I18n/템플릿:Graphs.tab <!--https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --> -- source-table <!--는 ID = "source-table" --> 변환 메시지를 사용합니다. -- param1 }} <!--옵션 파라미터 --> -- -- -- "doc" 함수는 템플릿의 <templatedata> 파라미터 문서를 생성합니다. -- 이렇게 하면 모든 템플릿 파라미터를 하나의 Commons 데이터 세트에 저장하고 현지화할 수 있습니다. -- 메모: "doc"는 모든 문서가 다음 데이터에 있다고 가정합니다.커먼스의 템플리트/*. -- -- {{#parames:}TNT 문서 그래프:회선 }} -- https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab 를 사용합니다. -- 현재 페이지가 [Template]인 경우:그래프: Lines/doc -- 현지의 p = {} 현지의 i18n데이터셋 = 'I18n/모듈:TNT.탭' -- 로컬 함수의 포워드 선언 현지의 sanitize Dataset(데이터 세트 검사), 로드 데이터, 링크, format Message(형식 메시지) 기능. p.메시지(틀) 현지의 데이터 세트, 아이디 현지의 파라미터 = {} 현지의 언어 = 제로 위해서 k, v 에 쌍들(틀.args) 하다 한다면 k == 1 그리고나서 데이터 세트 = 음.본문.다듬다(v) 그렇지 않으면 k == 2 그리고나서 아이디 = 음.본문.다듬다(v) 그렇지 않으면 유형(k) == '숫자' 그리고나서 table.insert(파라미터, 음.본문.다듬다(v)) 그렇지 않으면 k == '실패' 그리고. v ~= '_' 그리고나서 언어 = 음.본문.다듬다(v) 끝. 끝. 돌아가다 format Message(형식 메시지)(데이터 세트, 아이디, 파라미터, 언어) 끝. -- 위의 p.msg()와 동일하지만 다른 lua 모듈에서 사용됩니다. -- 파라미터: 데이터셋 이름, 메시지 키, 옵션 인수 -- 2개의 파라미터의 예: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') 기능. p.포맷(데이터 세트, 열쇠, ...) 현지의 체크 타입 = 요구하다('라이브러리 유틸').체크 타입 체크 타입('형식', 1, 데이터 세트, '문자열) 체크 타입('형식', 2, 열쇠, '문자열) 돌아가다 format Message(형식 메시지)(데이터 세트, 열쇠, {...}) 끝. -- 위의 p.msg()와 동일하지만 언어 파라미터와 함께 다른 lua 모듈에서 사용됩니다. -- 파라미터: 언어 코드, 데이터 집합 이름, 메시지 키, 옵션 인수 -- 2개의 파라미터의 예: formatInLanguage('s', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset') 기능. p.format In Language(언어, 데이터 세트, 열쇠, ...) 현지의 체크 타입 = 요구하다('라이브러리 유틸').체크 타입 체크 타입('format In Language', 1, 언어, '문자열) 체크 타입('format In Language', 2, 데이터 세트, '문자열) 체크 타입('format In Language', 3, 열쇠, '문자열) 돌아가다 format Message(형식 메시지)(데이터 세트, 열쇠, {...}, 언어) 끝. -- 첫 번째 파라미터에 'c:' 프리픽스를 추가하는 오래된 함수입니다. -- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab' 기능. p.링크(틀) 돌아가다 링크(틀.args[1]) 끝. 기능. p.문서(틀) 현지의 데이터 세트 = '템플릿타/' .. sanitize Dataset(데이터 세트 검사)(틀.args[1]) 돌아가다 틀:확장 태그('인증필', p.get Template Data(데이터 세트)) .. format Message(형식 메시지)(i18n데이터셋, 'edit_doc', {링크(데이터 세트)}) 끝. 기능. p.get Template Data(데이터 세트) -- TODO: lua가 "모든" 언어에 대해 올바른 색인화를 시작하면 '_' 매개 변수를 추가합니다. 현지의 데이터. = 로드 데이터(데이터 세트) 현지의 이름 = {} 위해서 _, 들판 에 쌍들(데이터..스키마.필드) 하다 table.insert(이름, 들판.이름.) 끝. 현지의 파라미터 = {} 현지의 param Order(파라미터 순서) = {} 위해서 _, 배를 젓다 에 쌍들(데이터..데이터.) 하다 현지의 newVal = {} 현지의 이름. = 제로 위해서 포스, 값 에 쌍들(배를 젓다) 하다 현지의 컬럼명 = 이름[포스] 한다면 컬럼명 == 이름 그리고나서 이름. = 값 또 다른 newVal[컬럼명] = 값 끝. 끝. 한다면 이름. 그리고나서 파라미터[이름.] = newVal table.insert(param Order(파라미터 순서), 이름.) 끝. 끝. -- {1}을(를) 처리하는 json 부호화 관련 작업:{...}}: [{...]로서}] 파라미터['zzz123']='' 현지의 json = 음.본문.json Encode(입력 코드)({ 파라미터=파라미터, param Order(파라미터 순서)=param Order(파라미터 순서), 묘사=데이터..묘사 }) json = string.gsub(json,"zzz123" "?" ,, "") 돌아가다 json 끝. -- 로컬 기능 sanitize Dataset(데이터 세트 검사) = 기능.(데이터 세트) 한다면 것은 아니다. 데이터 세트 그리고나서 돌아가다 제로 끝. 데이터 세트 = 음.본문.다듬다(데이터 세트) 한다면 데이터 세트 == '' 그리고나서 돌아가다 제로 그렇지 않으면 스트링.서브(데이터 세트,-4) ~= '.탭' 그리고나서 돌아가다 데이터 세트 .. '.탭' 또 다른 돌아가다 데이터 세트 끝. 끝. 로드 데이터 = 기능.(데이터 세트, 언어) 데이터 세트 = sanitize Dataset(데이터 세트 검사)(데이터 세트) 한다면 것은 아니다. 데이터 세트 그리고나서 에러(format Message(형식 메시지)(i18n데이터셋, 'error_no_module', {})) 끝. -- 이 모듈을 복사하려고 하는 서드파티에게 도움이 되는 오류를 전달합니다. 한다면 것은 아니다. 음.익스텐트 또는 것은 아니다. 음.익스텐트.데이터. 또는 것은 아니다. 음.익스텐트.데이터..얻다 그리고나서 에러('JsonConfig 확장자가 없습니다.https://commons.wikimedia.org/wiki/Data:'을 로드할 수 없습니다. .. 데이터 세트) 끝. 현지의 데이터. = 음.익스텐트.데이터..얻다(데이터 세트, 언어) 한다면 데이터. == 거짓의 그리고나서 한다면 데이터 세트 == i18n데이터셋 그리고나서 -- 주기적인 콜을 방지합니다. 에러('공통 데이터 집합 누락' .. i18n데이터셋) 또 다른 에러(format Message(형식 메시지)(i18n데이터셋, 'error_bad_module', {링크(데이터 세트)})) 끝. 끝. 돌아가다 데이터. 끝. -- 데이터 집합 이름을 지정하면 접두사가 'commons:data:'인 제목으로 변환합니다. 링크 = 기능.(데이터 세트) 돌아가다 'c:데이터:' .. 음.본문.다듬다(데이터 세트 또는 '') 끝. format Message(형식 메시지) = 기능.(데이터 세트, 열쇠, 파라미터, 언어) 위해서 _, 배를 젓다 에 쌍들(로드 데이터(데이터 세트, 언어).데이터.) 하다 현지의 아이디, 메시지 = 개봉하다(배를 젓다) 한다면 아이디 == 열쇠 그리고나서 현지의 결과 = 음.메세지.new Raw Message(메시지, 개봉하다(파라미터 또는 {})) 돌아가다 결과:평지() 끝. 끝. 한다면 데이터 세트 == i18n데이터셋 그리고나서 -- 주기적인 콜을 방지합니다. 에러('잘못된 메시지 키' .. 열쇠 .. '"') 또 다른 에러(format Message(형식 메시지)(i18n데이터셋, 'error_bad_msgkey', {열쇠, 링크(데이터 세트)})) 끝. 끝. 돌아가다 p