현지의 p = 요구하다 "모듈:유닛 테스트" 현지의 해석_IETF = 요구하다 "모듈:샌드박스/에루튜온".해석_IETF 현지의 재밌어요 = 요구하다 "모듈:재밌다 현지의 쇼를 하다 = { 언어 = 기능. (서브태그, 열쇠) 한다면 것은 아니다. 서브태그[열쇠] 그리고나서 돌아가다 제로 끝. 돌아가다 (%s: <code> %s </code>):포맷(열쇠, 서브태그[열쇠] 또는 '') 끝., 변종 = 기능. (서브태그, 열쇠) 한다면 것은 아니다. 서브태그[열쇠] 그리고나서 돌아가다 제로 끝. 돌아가다 (%s: <code> %s </code>):포맷( 열쇠, 유형(서브태그[열쇠]) == "테이블" 그리고. table.concat(서브태그[열쇠], ", ") 또는 서브태그[열쇠] 또는 '') 끝., 에러 = 기능. (서브태그, 열쇠) 한다면 것은 아니다. 서브태그.에러 그리고나서 돌아가다 제로 끝. 돌아가다 ("오류: %s at <code> %s </code>") :포맷(서브태그.에러, 서브태그.무효한 또는 "???") 끝., } 쇼를 하다.대본 = 쇼를 하다.언어 쇼를 하다.지역 = 쇼를 하다.언어 쇼를 하다.프라이빗 사용 = 쇼를 하다.변종 현지의 항목들 = { "언어", 스크립트, "지역", "실패", "프라이빗_use", "에러" } -- 「오류」와 함께 「오류」 현지의 할 수 있다 = {} 할 수 있다.__인덱스 = 테이블 현지의 기능. show_parsed_parsags(해석된_오류 진단) 한다면 것은 아니다. 해석된_오류 진단 그리고나서 돌아가다 '실패' 끝. 현지의 결과 = 설정 가능한({}, 할 수 있다) 위해서 _, 열쇠 에 아이페어(항목들) 하다 결과:삽입하다(쇼를 하다[열쇠](해석된_오류 진단, 열쇠)) 끝. 돌아가다 결과:콘센트("; ") 끝. 기능. p:test_filength_를 실행하다IETF() 현지의 예 = { { "ru", { 언어 = "ru" } }, { "ru-Latn", { 언어 = "ru", 대본 = "라틴" } }, { "fr-CA", { 언어 = "fr", 지역 = 'CA' } }, { "ru-1708", { 언어 = "ru", 변종 = "1021708" } }, { "zh-Latn-pinyin", { 언어 = "zh", 대본 = "라틴", 변종 = '핀"in } }, { sl-rozaj-biske, { 언어 = "sl", 변종 = { '로자지', "비스케" } } }, { "sl-rozaj-biske-discle", { 언어 = "sl", 변종 = { '로자지', "비스케", "1994" } } }, { "en-CA-newfound", { 언어 = "en", 지역 = 'CA', 변종 = "실패" } }, { "ine-x-contract", { 언어 = "ine", 프라이빗 사용 = "실패" } }, Pokorny가 사용하는 PIE 문자 변환 시스템을 나타낼 수 있습니까? { "아이네엑스 포코니", { 언어 = "ine", 프라이빗 사용 = { "실패", "포커니" } } }, { "x-fake-private-use", { 프라이빗 사용 = { '짝퉁', '프라이빗', '사용' } } }, "실패", { "아이네!!!", { 에러 = "문자 표시", 무효한 = "!!!" } }, { "페", { 에러 = "문자 표시", 무효한 = "페" } }, { "라틴", { 에러 = "언어 서브태그 없음", 무효한 = "라틴" } }, { "ru-Latn-Cyrl", { 언어 = "ru", 대본 = "라틴", 에러 = "서브태그 추가", 무효한 = "시릴" } }, { '블라블라블라블라', { 에러 = "언어 서브태그 없음", 무효한 = '블라블라블라블라' } }, { '루블라블라블라블라', { 언어 = "ru", 에러 = "서브태그 추가", 무효한 = '블라블라블라블라' } }, { "ru-Latn-blahblahblah", { 언어 = "ru", 대본 = "라틴", 에러 = "서브태그 추가", 무효한 = '블라블라블라블라' } }, { "ru-x-blahblahblah", { 언어 = "ru", 에러 = "개인 사용 하위 태그의 길이가 범위를 벗어남", 무효한 = "x-blahblahblah" } }, { "ru-x", { 언어 = "ru", 에러 = "빈 개인 사용 하위 태그", 무효한 = "x" } }, { "블라블라-라튼", { 에러 = "언어 서브태그 없음", 무효한 = "블라블라-라튼" } }, { "", 제로 }, -- { mw.log, 0 } 。 -- { nero , nero } 。 } 현지의 색인 = 재밌어요.색인("실패", 예) table.insert(예, 색인, "대문자와 소문자를 구분합니다.") 위해서 i = 1, 색인 - 1 하다 -- 유효한 태그의 대문자로 표시된 버전의 테스트 케이스를 삽입합니다. 현지의 상부_상부 = 음.클론(예[i]) 상부_상부[1] = 상부_상부[1]:위쪽의() table.insert(예, 색인 + i, 상부_상부) 끝. 자신:반복하다( 예, 기능. (자신, IETF_코드, 기대됩니다) 자신:동등.( ('<code style="white-space: nowrap;">%s </code>'):포맷(IETF_코드), show_parsed_parsags(해석_IETF(IETF_코드)), show_parsed_parsags(기대됩니다)) 끝.) 끝. -- 테스트 케이스 테이블의 함수 이름을 읽기 쉬운 헤더로 변경합니다. 위해서 k, v 에 요구하다 "모듈:테이블 도구".정렬 페어(p) 하다 한다면 유형(k) == "문자열' 그리고나서 현지의 new_k = k:서브("^test_(.+)", "%1의 <code> </code> 테스트 케이스") 한다면 new_k ~= k 그리고나서 p[k] = 제로 p[new_k] = v 끝. 끝. 끝. 돌아가다 p