이 page는 기록을 위해서 보존되어 있습니다. 언급한 방침은 현재는 개정되어 있을지도 모릅니다. Part of its contents have been copied to other pages:
|
Web2Cit 번역 요약
“(Web2Cit 번역 개요 동영상은 유튜브에서도 볼 수 있습니다)”
번역 규칙은 도메인별로 정의됩니다. 일련의 "번역 틀"과 "URL 경로 패턴", "번역 테스트"가 도메인별로 공동으로 정의됩니다.
"URL 경로 패턴"은 도메인 내의 번역 하위 그룹을 정의합니다.
"번역 템플릿"은 각 "템플릿 필드"(각각 미리 정의된 인용 메타데이터 필드에 매핑됨)에 대해 하나 이상의 번역 절차를 지정합니다. 번역 템플릿은 추상 번역 규칙이 아니라 특정 템플릿 웹페이지에 대해 정의됩니다.
"번역 절차"는 일련의 "선택" 및 "변환" 단계입니다. 선택 단계는 번역 대상에서 값을 선택하고 변환 단계를 순차적으로 적용하여 변환합니다.
프로시저 출력은 그것이 속한 템플릿 필드에 대해 "유효"하거나 유효하지 않을 수 있습니다. 필드가 "필수"로 표시된 경우 변환 대상에 적용할 수 있는 템플릿 필드에 대해 절차 출력이 유효해야 합니다.
템플릿의 모든 템플릿 필드가 적용 가능한 경우 템플릿은 주어진 번역 대상에 적용 가능합니다. 적용 가능한 템플릿은 인용을 내보냅니다.
"번역 대상"이 주어지면 먼저 일치하는 것을 찾을 때까지 모든 URL 경로 패턴에 대한 경로를 순서대로 일치시킵니다. 일치하는 것이 없으면 캐치올 패턴 **
을 사용합니다.
그런 다음 동일한 URL 경로 패턴 그룹에 속하는 번역 템플릿으로 대상 번역을 시도합니다. 적용되는 것을 찾을 때까지 순서대로 하나씩 시도합니다. 적용되지 않는 경우 대체 템플릿을 사용합니다.
또한 번역 테스트는 특정 대상 웹 페이지에 대한 예상 번역 출력을 정의합니다. 이러한 예상 출력은 실제 Web2Cit 번역 출력과 비교할 수 있습니다.
워크플로 제안
가능한 테스트 기반 워크플로 제안은 다음과 같습니다:
- Citoid가 문제를 겪고 있는 대상 URL 찾기
- Web2Cit에도 문제가 있는지 확인하세요
- 예상 결과로 대상 URL에 대한 번역 테스트 작성
- 모든 도메인 테스트가 통과할 때까지 대상 URL에 대한 템플릿을 작성합니다. 필요한 경우 URL 경로 패턴도 정의합니다.[note 1]
- 반복
이 워크플로를 따르는 실습 데모 비디오의 예는 유튜브에서 볼 수 있습니다.
도메인 구성 파일
이 섹션에 대한 소개 비디오는 유튜브에서 볼 수 있습니다.
위치
도메인 구성 파일을 수동으로 편집하게 됩니다(이렇게 하면 Web2Cit을 사용하는 모든 사람의 번역 규칙이 변경됩니다). 이들은 최상위 도메인에서 마지막 하위 도메인에 이르기까지 호스트 이름 레이블당 하나의 하위 디렉토리인 Web2Cit/data/
로 메타에 있습니다.
여기에서 구성 파일의 전체 목록을 찾을 수 있습니다.
예를 들어 호스트 이름 meta.wikimedia.org
의 경우 구성 파일은 Web2Cit/data/org/wikimedia/meta/
입니다.
URL 체계(예: http, https 등), 포트 및 경로는 호스트 이름의 일부가 아닙니다. 예를 들어 URL https://meta.wikimedia.org/wiki/Web2Cit/Early_adopters#Domain_configuration_files
의 경우 meta.wikimedia.org
만 호스트 이름입니다.
도메인당 3개의 구성 파일이 있습니다: templates.json(번역 템플릿용), patterns.json(URL 경로 패턴용), tests.json(번역 테스트용). 예를 들어 meta.wikimedia.org
에 대한 번역 템플릿 구성 파일은 Web2Cit/data/org/wikimedia/meta/templates.json
입니다.
형식
모든 도메인 구성 파일은 JSON 형식으로 작성됩니다(대체 형식은 아래 참조).
일반적으로 JSON 파일에는 다음 "값" 유형의 조합이 있을 수 있습니다:
- 텍스트 문자열. 예를 들어 "xpath".[note 2]
- 불리언 자료형:
true
또는false
. - 배열: 또는 쉼표로 구분된 0개 이상의 값이 있는 목록입니다. 예:
[ "one", "two", "three" ]
. - 객체: 쉼표로 구분된 0개 이상의 "키":값 쌍이 있습니다. 예를 들어:
{
"key1": value1,
"key2": value2
}
미디어위키 편집기는 JSON 파일 편집에 특화되어 있지 않습니다. 별도의 편집기를 사용하여 편집한 다음 결과를 붙여넣는 것이 유용할 수 있습니다.
아래의 각 구성 파일에 대해 사용 가능한 예제 파일과 JSON 스키마 파일이 있습니다. JSON 스키마는 독립 실행형 유효성 검사기 또는 텍스트 편집기 통합을 사용하여 JSON 파일의 유효성을 검사하는 데 사용할 수 있습니다.[1]
JSON 스키마 파일에서 생성된 간단한 형식을 통해 JSON 파일을 편집할 수 있는 json-editor,[2]를 사용하는 것이 좋습니다(아래의 각 구성 파일 섹션에서 직접 링크 사용 가능).
- 기존 JSON 파일을 편집하는 경우 오른쪽에 있는 json-editor의 "JSON 출력" 필드에 붙여넣고 "양식 업데이트"를 클릭합니다.
- 양식을 작성하세요.
- 필드의 JSON 출력을 오른쪽으로 복사하여 메타에 붙여 넣습니다.
templates.json
templates.json
파일은 루트에 Template
개체의 배열을 포함합니다.
Template
객체
각 Template
객체는 "번역 템플릿"을 나타내며 일련의 세 가지 키:값 쌍을 갖습니다.
- 현재 도메인에서 번역 템플릿으로 사용되는 웹페이지의 경로를 나타내는 문자열이 있는
path
키(path
값이 동일한 여러Template
객체는 무시됨). 호스트 이름을 포함하지 마세요./
로 시작하는 경로입니다. 쿼리(?
) 및 조각(#
) 구성 요소를 포함할 수도 있습니다. 예를 들어 템플릿 웹페이지https://example.com/news/article#subsection?id=3
,/news/article#subsection?id=3
를 사용합니다. - 이 "번역 템플릿"에 대한 (선택적) 멋진 이름을 나타내는 값으로 문자열이 있는
label
키. fields
키, 값으로TemplateField
객체 배열 포함.fieldname
값이 동일한 여러TemplateField
객체(아래 참조)는 무시됩니다.
{
"path": string,
"label": string,
"fields": TemplateField[]
}
"대체 템플릿:" 현재 접근 방식에서는 "번역 대상"이 주어지면 번역 템플릿(동일한 URL 경로 패턴 그룹에 있음)이 순서대로 시도되고 첫 번째 "적용 가능한" 템플릿의 출력이 반환됩니다. 적용 가능한 템플릿이 없으면 "대체 템플릿"이 사용되어 현재 지원되는 모든 템플릿 필드에 대해 해당하는 수정되지 않은 인용 응답을 반환합니다(템플릿 필드 이름 참조).[note 3] 이 대체 템플릿의 템플릿 필드 배열을 사용자 정의 번역 템플릿의 기초로 사용할 수 있습니다.[note 4]
TemplateField
객체
차례로, 각 TemplateField
객체는 "번역 템플릿"의 "템플릿 필드"를 나타내며 일련의 세 가지 키:값 쌍을 갖습니다.
- "템플릿 필드"의 이름을 나타내는 문자열을 값으로 포함하는
fieldname
키. 현재 지원되는 값은 템플릿 필드를 참조하세요. required
키, 불리언 값(true
또는false
)으로 템플릿 필드가 필수인지 여부를 나타냅니다.[note 5]Procedure
객체의 배열을 값으로 사용하는procedures
키.
{
"fieldname": string,
"required": boolean,
"procedures": Procedure[]
}
"필수 필드:" 일부 필드는 "필수"입니다. 즉, Template
객체의 fields
배열에 포함되어야 합니다(위 참조). 모든 필수 필드를 포함하지 않는 템플릿은 무시됩니다. 이것은 향후 변경될 수 있습니다.[note 3] 또한 "필수" 필드는 required
키 값에 관계없이 항상 필수입니다. 필수 필드는 번역 필드 유형 섹션에 나열됩니다.
Procedure
객체
차례로 각 Procedure
객체는 "번역 절차"를 나타내며 일련의 두 가지 키:값 쌍을 갖습니다:
Selection
객체의 배열을 값으로 사용하는selections
키.Transformation
객체의 배열을 값으로 사용하는transformations
키.
{
"selections": Selection[],
"transformations": Transformation[]
}
Selection
객체
각 Selection
객체는 "선택 단계"를 나타내며 두 개의 키:값 쌍으로 구성됩니다:
- 특정 유형의 선택 단계를 나타내는 값으로 문자열이 있는
type
키. 현재 지원되는 값은 선택 유형 및 구성을 참조하세요. config
키(값으로 문자열 포함)는 선택 단계의 특정 구성을 나타냅니다. 현재 지원되는 값은 선택 유형 및 구성을 참조하세요.
{
"type": string,
"config": string
}
Transformation
객체
마지막으로 각 Transformation
객체는 "변환 단계"를 나타내며 일련의 세 가지 키:값 쌍을 갖습니다:
- 특정 유형의 변환 단계를 나타내는 값으로 문자열이 있는
type
키. 현재 지원되는 값은 변환 유형 및 구성을 참조하세요. - 변환 단계에 대한 특정 구성을 나타내는 값으로 문자열이 있는
config
키. 현재 지원되는 값은 변환 유형 및 구성을 참조하세요. itemwise
키, 불리언 값(true
또는false
)이 입력의 각 항목에 독립적으로 적용되어야 하는지(true
) 아니면 전체 입력에 전체(false
) 적용되어야 하는지를 나타냅니다. 이것을 선택 사항으로 만들고 변환 유형별로 기본값을 사용하도록 제안되었습니다(작업 T303331 참조).
{
"type": string,
"config": string
"itemwise": boolean
}
patterns.json
patterns.json
파일은 루트에 Pattern
객체의 배열을 포함합니다.
Pattern
객체
각 Pattern
은 "URL 경로 패턴"을 나타내며 두 개의 키:값 쌍으로 구성됩니다:
- URL 일치 그룹을 정의하는 글로브 경로 패턴을 나타내는 값으로 문자열이 있는
pattern
키[note 6] - 이 "URL 경로 패턴"에 대한 (선택 사항) 멋진 이름을 나타내는 값으로 문자열이 있는
label
키:
{
"pattern": string,
"label": string
}
tests.json
tests.json
파일은 루트에 Test
객체의 배열을 포함합니다.
Test
객체
각 Test
객체는 "번역 테스트"를 나타내며 두 개의 키:값 쌍으로 구성됩니다:
- 현재 도메인에서 "번역 테스트"로 사용되는 웹 페이지의 "경로"를 나타내는 문자열이 있는
path
키(같은path
값을 가진 여러Test
객체는 무시됩니다).Template
객체의path
속성과 마찬가지로 호스트 이름을 포함하지 않고 경로가/
로 시작하는지 확인합니다. 쿼리(?
) 및 조각(#
) 구성 요소를 포함할 수도 있습니다. fields
키, 값으로TestField
객체 배열 포함.fieldname
값이 동일한 여러TestField
객체(아래 참조)는 무시됩니다.
{
"path": string,
"fields": TestField[]
}
TestField
객체
각 TestField
객체는 "번역 테스트"의 "테스트 필드"를 나타내며 두 개의 키:값 쌍으로 구성됩니다:
- "필드 이름" 키: 번역 필드 이름이 지원됩니다.
- "목표" 값: 주어진 번역 필드에 대한 예상 번역 출력 또는 "번역 목표"를 나타내는 문자열 배열. 각 문자열 값은 번역 필드의 #Template fields유효성 검사 규칙을 준수해야 합니다. 출력이 예상되지 않음을 명시적으로 표현하려면 빈 배열을 제공하십시오.
{
"fieldname": string,
"goal": string[]
}
대체 형식
JSON 파일을 읽고 쓰는 것은 어려울 수 있습니다. 이것이 Web2Cit 시각 편집기가 도와줄 것입니다!
그 동안 JSON5 또는 YAML과 같이 사람이 읽을 수 있는 대체 형식을 사용할 수도 있습니다. 작업 T302694로 추적되는 것처럼 미래에 지원할 수도 있지만 현재는 그 어떤 것도 지원하지 않습니다.
지금은 온라인 변환기를 사용하여 다음을 수행할 수 있습니다:[note 7]
- JSON 구성 파일을 JSON5 또는 YAML로 변환
- JSON5 또는 YAML에서 구성 파일 편집
- JSON으로 다시 변환하고 JSON 스키마로 검증(위 참조)
- JSON으로 구성 파일 저장
JSON5
JSON5[3]는 JSON과 매우 유사하지만 더 유연하므로 몇 가지 일반적인 JSON 실수를 허용합니다. 우리의 경우 다음 기능이 흥미로울 수 있습니다:
- 키는 인용되지 않을 수 있습니다:
{ unquoted: "value" }
- 문자열은 작은따옴표로 묶을 수 있으며 그 안에 큰따옴표를 사용할 수 있습니다:
'single "quoted" string'
- 객체 및 배열의 후행 쉼표는 괜찮습니다:
{ key1: value1, key2: value2, }
[ a, b, c, ]
YAML
YAML은 들여쓰기 기반(파이썬 문법 언어와 같은)이며 훨씬 짧고 (일반적으로)[4] 쓰기 및 읽기가 더 쉽습니다.
다음은 발췌한 예제 템플릿 구성 파일의 JSON 및 YAML 버전을 나란히 비교한 것입니다:
[
{
"path": "/",
"label": "fancy name",
"fields": [
{
"fieldname": "title",
"required": true,
"procedures": [
{
"selections": [
{
"type": "citoid",
"config": "title"
}, {
...
}
],
"transformations": [
{
"type": "range",
"config": "0",
"itemwise": false
},
{
...
}
]
}
]
},
{
"fieldname": "itemType",
...
}
]
},
{
...
}
]
- path: /
label: fancy name
fields:
- fieldname: title
required: true
procedures:
- selections:
- type: citoid
config: title
- ...
transformations:
- type: range
config: '0'
itemwise: false
- ...
- fieldname: itemType
...
- ...
TemplateField
객체의 procedures
키는 각각 selections
및 transformations
키가 있는 Procedure
객체의 배열을 값으로 사용합니다. 따라서 다음 코드는 두 개의 개별 Procedure
객체를 지정하기 때문에 잘못된 것입니다. 하나는 selections
키이고 다른 하나는 transformations
키입니다:
...
"procedures": [
{
"selections": [
{
"type": "citoid",
"config": "title"
}
]
},
{
"transformations": [
{
"type": "range",
"config": "0",
"itemwise": false
}
]
}
...
...
procedures:
- selections:
- type: citoid
config: title
- transformations:
- type: range
config: 0
itemwise: false
...
유효한 값
선택 유형 및 구성
선택 단계는 "번역 대상" 웹 페이지를 입력으로 사용하고 해당 웹 페이지에서 0개 이상의 선택된 값(문자열) 목록을 반환합니다.
다양한 선택 단계 type
가 있으며 해당 동작은 config
매개변수를 사용하여 사용자 정의됩니다.
URL, JSON-LD, CSS, 헤더 및 텍스트 조각 선택을 포함한 일부 선택 유형은 구현이 보류 중입니다.
시토이드 선택
Citoid 선택 단계는 "translation target"에 대한 Citoid 응답에서 필드를 선택합니다.
- type:
citoid
- config: 모든 유효한 Citoid/Zotero 기본 필드 이름.[note 8] 위키미디어 REST API의
citation
엔드포인트를 사용하여 주어진 URL에 대해 Citoid가 반환하는 것을 확인할 수 있습니다. [5]는mediawiki-basefields
형식을 사용해야 합니다. 모든 작성자 필드는creatorFirst
및creatorLast
필드로 분할됩니다. 예를 들어author
필드는authorFirst
및authorLast
필드로 분할됩니다.
XPath 선택
XPath 선택 단계는 XPath를 사용하여 "번역 대상" HTML에서 노드를 선택합니다.
- type:
xpath
- config: 모든 유효한 XPath v1.0 표현식. 웹 브라우저의 인스펙터(일부 브라우저에서는
F12
로 표시)를 사용하여 HTML 노드에 대한 XPath 표현식을 얻을 수 있습니다. 동일한 노드에 대해 둘 이상의 XPath가 사용될 수 있으며 일부는 다른 것보다 더 강력할 수 있습니다. 또한 일부 브라우저 확장을 사용하여 일치하는 모든 노드를 강조 표시하여 XPath 표현식을 테스트할 수 있습니다.[note 9]
일부 웹 페이지에서는 자바스크립트를 사용하여 콘텐츠가 즉석에서 추가됩니다. Web2Cit은 시토이드와 마찬가지로 웹 페이지에서 자바스크립트를 실행하지 않습니다. 따라서 이러한 경우 사용자가 보는 것이 Web2Cit에서 보는 것과 다를 수 있습니다. 예를 들어 uBlock Origin과 같은 브라우저 확장을 사용하여 자바스크립트를 일시적으로 비활성화하는 것을 고려하세요.
고정 선택
고정 선택 단계는 항상 미리 정의된 동일한 값을 반환합니다.
- type:
fixed
- config: 반환될 미리 정의된 값입니다.
변환 유형 및 구성
변환 단계는 0개 이상의 값 목록을 입력으로 사용합니다. 즉, 하나 이상의 선택 단계의 출력(1) 또는 다른 변환 단계의 출력(2)입니다. 0개 이상의 값(문자열)의 변환된 목록을 반환합니다.
다양한 선택 단계 type
가 있으며 그 동작은 변환이 입력 항목별로 적용되어야 하는지 또는 전체 입력에 적용되어야 하는지를 나타내는 (1) config
매개변수 및 (2) itemwise
매개변수를 사용하여 사용자 정의됩니다.
Match, Replace 및 Custom JS 변환을 포함한 일부 선택 유형은 구현이 보류 중입니다.
변환에 참여
조인 변환 단계는 지정된 구분 기호를 사용하여 목록에 있는 둘 이상의 항목을 하나로 조인합니다.
- type:
join
- config: 사용할 구분 기호
- itemwise "(설정 =
false
)":true
로 설정하면 변환이 입력 목록의 각 문자열에 독립적으로 적용되어 각 문자열을 문자 목록으로 사용합니다.
분할 변환
분할 변환 단계는 지정된 구분 기호에서 문자열을 둘 이상의 하위 문자열로 분할합니다.
- type:
split
- config: 사용할 구분 기호
- itemwise "(설정 =
true
)":false
로 설정하면 문자열의 입력 목록이 먼저 분할이 적용되는 단일 문자열로 결합됩니다.
날짜 변환
날짜 변환 단계는 Sugar library[6]를 사용하여 자연어 날짜를 표준 YYYY-MM-DD 형식으로 구문 분석합니다. 가능하지 않으면 원래 값을 반환합니다.
- type:
date
- config: 현재 지원되는 로케일 중 하나:
ca
,da
,de
,en
,es
,fi
,fr
,it
,ja
,ko
,nl
,no
,pl
,pt
,ru
,sv
,zh-CN
,zh-TW
. - itemwise "(설정 =
true
)"
범위 변환
범위 변환은 하나 이상의 항목 또는 항목 범위를 선택하고 지정된 순서대로 반환합니다. 번호 매기기는 1부터 시작합니다(즉, 첫 번째 항목은 1).
- type:
range
- config: 쉼표로 구분된 하나 이상의 범위입니다. 범위는 다음 형식 중 하나일 수 있습니다:
start:end
:start
부터end
,end
까지의 요소를 선택합니다.start:
:start
에서 목록의 마지막 항목까지 요소를 선택합니다.:end
: 목록의 처음부터end
,end
까지의 요소를 선택합니다.start
:start
인덱스에서 단일 요소를 선택합니다.
- itemwise "(설정 =
false
)":true
로 설정하면 변환이 입력 목록의 각 문자열에 독립적으로 적용되어 각 문자열을 문자 목록으로 사용합니다.
변환 일치
일치 변환은 대상과 일치하는 하나 이상의 하위 문자열을 반환합니다.
type
:match
.config
: 일치하는 대상, 일반 문자열 또는 정규식으로 표현됩니다. 정규식을 사용하려면/
사이에 패턴을 래핑하고 그 뒤에 선택적 플래그가 옵니다.[7] 예를 들어,/(sub)?string/i
는 대소문자를 구분하지 않고string
또는substring
과 일치합니다.[note 10] 정규식으로 해석될 수 있는 문자열(즉, 패턴\/.*\/[a-z]*
과 일치하는 문자열)과 일치해야 하는 경우 대신 정규식으로 표현합니다. 예를 들어, 문자열/.*/
를 문자 그대로 일치시키고 정규식.*
으로 해석되지 않도록 하려면 대신 정규식//\\.\\+//
로 표현하세요(이중 이스케이프된 특수 문자: [8]\\.
및\\+
참고).- itemwise "(설정 =
true
)":
각 일치 항목은 별도의 출력 항목으로 반환됩니다. 예를 들어, 대상 string
에 대해 문자열 내부의 하위 문자열
을 일치시키면 두 항목 배열 출력이 반환됩니다: ["string", "string"]
, 각 일치 항목에 대해 하나씩. 정규식에서 캡처링 그룹을 사용하는 경우 [9] 그룹 일치만 반환됩니다(즉, 전체 일치가 아님).
주어진 입력 항목에 대해 일치하는 항목이 없으면 입력 항목이 무시됩니다(즉, 변환 출력에 포함되지 않음). 예를 들어, 대상 substring
에 대해 두 항목 배열 입력 ["a string with a substring", "a string without it"]
을 일치시키면 한 항목 배열 출력이 반환됩니다: ["substring"]
.
변환 교체(곧 제공될 예정입니다!)
대체 변환은 위에서 설명한 일치 변환과 유사하지만 대상 일치를 대체할 추가 replace
매개변수가 있을 예정입니다.
구현되면 더 많은 정보가 제공될 것입니다.
번역 필드
번역 Template
및 Test
객체는 각각 하나 이상의 번역 필드를 포함합니다. 다음과 같이 각각 설명되는 다양한 번역 필드 유형이 있습니다:
fieldname
,- 해당 필드 유형에 대해 유효한 "번역 절차" 출력 또는 "목표"를 정의하는 유효성 검사 규칙, 그리고
- (유효한) 출력이 매핑되는 Citoid/Zotero 인용 필드를 나타내는 매핑.
번역 필드 유형
현재 다음 필드 유형을 지원합니다:
- 항목 유형: 인용된 리소스의 유형입니다. 이것은 "필수 필드"입니다(템플릿필드 객체 참조)
fieldname
:itemType
- validation: 지원되는 Citoid/Zotero 항목 유형과 일치하는 단일 값[10]. 각 항목 유형에 어떤 인용 틀이 사용되는지 알아보려면 위키백과의
Citoid-template-type-map.json
구성 파일을 참조하세요. - mapping: Citoid/Zotero
itemType
에 매핑됨
- 제목: 인용된 리소스의 제목입니다. 이것은 "필수 필드"입니다(템플릿필드 객체 참조)
fieldname
:title
- validation: 비어 있지 않은 단일 문자열
- mapping: Citoid/Zotero
title
에 매핑됨
- 저자 이름: 인용된 자원 저자의 이름(성과 이름을 구분하는 것이 타당한 저자 이름의 경우)
fieldname
:authorFirst
- validation: 하나 이상의 문자열 목록(빈 문자열은 OK)
- mapping: Citoid/Zotero
author
의 이름에 매핑됨
- 저자 성 또는 전체 이름: 인용된 자원의 저자 성; 또는 전체 이름(이름과 성을 구분하는 것이 의미가 없는 저자 이름의 경우)
fieldname
:authorLast
- validation: 하나 이상의 비어 있지 않은 문자열 목록
- mapping: Citoid/Zotero
author
의 성에 매핑됨
- 출판일: 인용된 자료가 출판된 날짜
fieldname
:date
- validation:
YYYY-MM-DD
,YYYY-MM
또는YYYY
중 하나와 일치하는 단일 값. - mapping: Citoid/Zotero
date
에 매핑됨
- 발행처: 인용된 자원을 포함하는 저작물의 이름; 예를 들어 신문 기사의 신문 이름
fieldname
:publishedIn
- validation: 비어 있지 않은 단일 문자열
- mapping: Citoid/Zotero
publicationTitle
,reporter
및code
에 매핑됨(모두 CSL "컨테이너 제목"에 매핑됨)[10]
- 발행인: 인용된 자료의 발행인
fieldname
:publishedBy
- validation: 비어 있지 않은 단일 문자열
- mapping: Citoid/Zotero
publisher
에 매핑됨
- Language: the locale identifier for the language of the cited resource
fieldname
:language
- validation: a single non-empty string, consisting of one or more parts separated by
-
, with the first part two characters long, and the remaining parts (if any) two or more characters long. For example, es-ar. - mapping: mapped to Citoid/Zotero
language
- 제어: 웹 페이지 콘텐츠를 기반으로 템플릿을 적용할지 여부를 제어하는 데 사용할 수 있는 강제 필수 필드
fieldname
:control
- validation: 비어 있지 않은 단일 문자열
- mapping: Citoid/Zotero 필드에 매핑되지 않음
Web2Cit 서버
More up-to-date and complete information available at Web2Cit/Server
표준 끝점
마지막으로 Web2Cit 번역 서버를 사용하여 대상 웹 페이지를 번역할 수 있습니다. 메타에서 위에서 설명한 공동으로 정의된 구성 파일을 가져와 번역을 제공하는 데 사용합니다.
번역하려는 URL의 시작 부분에 https://web2cit.toolforge.org/
을 추가하기만 하면 됩니다. 예를 들어, https://example.com/article
을 번역하려면 https://web2cit.toolforge.org/https://example.com/article
을 사용하세요.
반환된 간단한 웹 페이지에는 번역 결과가 포함된 메타데이터로 포함되므로 위키백과a의 자동 인용 생성기 또는 조테로 브라우저 커넥터에서 이 URL을 사용할 수 있습니다.[11]
프로젝트 태그 #w2c-server
를 사용하여 파브리케이터에서 발견할 수 있는 모든 버그를 보고하세요.
디버그 엔드포인트
경우에 따라 번역 출력이 예상과 일치하지 않을 수 있습니다. 이는 도메인 구성 파일의 오류 때문이거나 Web2Cit 서버 또는 핵심 라이브러리의 버그 때문일 수 있습니다.
어느 쪽이든 주어진 대상 URL에 대해 시도된 번역 템플릿과 각 선택 및 변환 단계의 출력을 정확히 알고 있으면 진행 중인 작업을 이해하는 데 큰 도움이 됩니다. 이것은 Web2Cit 비주얼 편집기에서 사용할 수 있습니다.
그동안 표준 엔드포인트와 마찬가지로 https://web2cit.toolforge.org/debug/
에 번역 서버의 디버그 엔드포인트를 사용할 수 있습니다. 번역 결과와 다음을 포함한 추가 정보를 받게 됩니다:
- 메타에서 사용된
patterns.json
및templates.json
파일의 개정 ID 또는 누락 또는 손상 여부(이 경우 포괄 패턴 및 대체 틀이 기본적으로 사용됩니다. 번역 요약 참조). - 대상 웹 페이지가 속한 URL 경로 패턴 그룹(
**
은 포괄적인 패턴임)은 어떤 번역 틀을 시도할지 결정합니다. - 대상 웹 페이지에 “적용할 수 있는” 첫 번째 틀까지 번역 틀 목록이 시도되었습니다.
- 각 템플릿에 대해:
- 기반이 되는 틀 웹페이지의 경로(또는 대체 틀의 경우
undefined
) - 틀이 대상 웹페이지에 적용 가능한지 여부(적용되지 않는 틀은 인용을 반환하지 않음을 기억하세요. 번역 요약 참조)
- 틀 필드 목록(아래 참조).
- 기반이 되는 틀 웹페이지의 경로(또는 대체 틀의 경우
- 각 틀 필드에 대해:
- 필드 이름(
itemType
,title
등. 번역 필드 참조) - "필수" 필드인지 여부(템플릿이 "적용 가능"이 되려면 모든 필수 필드의 출력이 "유효"해야 함을 기억하세요);
- 번역 절차 목록(아래 참조);
- 모든 절차 출력의 조합인 현장 출력;
- 필드에 단일 값(
isArray = false
) 또는 값 목록(isArray = true
)이 필요한지 여부; - 필드 출력이 "유효"가 되기 위해 모든 출력 값이 따라야 하는 "패턴";
- 필드 출력이 "유효"한지 여부(다시 말하지만 템플릿을 적용하려면 모든 필수 필드의 출력이 유효해야 함을 기억하세요);
- 템플릿 필드가 대상 웹 페이지에 적용 가능한지 여부(즉, 필수가 아님 또는 필수 AND 유효).
- 필드 이름(
- 각 번역 절차에 대해:
- 다음을 포함하는 선택 객체:
- 선택 단계 목록(아래 참조);
- 모든 선택 단계 출력의 조합인 전체 선택 출력.
- 다음을 포함하는 변형 객체:
- 변환 단계 목록(아래 참조);
- 마지막 변환 단계의 결과(또는 변환 단계가 없는 경우 선택 출력)인 전체 변환 결과.
- 다음을 포함하는 선택 객체:
- 각 선택 단계에 대해:
- 선택 단계 “유형” (
fixed
,citoid
등; 선택 유형 및 구성 참조); - 선택 단계 “구성”;
- 선택 단계 결과.
- 선택 단계 “유형” (
- 각 변환 단계에 대해:
- 변환 단계 “유형” (
range
,join
등; 변환 유형 및 구성 참조); - 변환 단계 “구성”;
- 변환 단계가 입력의 각 항목에 독립적으로 적용되었는지(
itemwise = true
) 또는 전체 입력에 적용되었는지(itemwise = false
); - 변환 단계 결과.
- 변환 단계 “유형” (
구성 파일을 구문 분석할 때 Web2Cit은 잘못된 정의를 무시합니다. 이러한 무시된 요소는 디버깅 정보에 표시되지 않습니다. 예를 들어:
- 동일한 경로에 대한 여러 번역 템플릿(템플릿 객체 참조) 또는 하나 이상의 필수 필드가 누락된 템플릿(템플릿필드 객체 참조);
- 지원되지 않는 필드 이름이 있는 템플릿 필드(번역 필드 참조);
- 선택 또는 변환 배열이 없는 절차(빈 배열은 OK)
- 유효하지 않은 유형 또는 유효하지 않은 구성의 선택 또는 변환 단계(유효값 참조).
이 디버그 끝점은 제안된 Web2Cit 워크플로를 지원하기 위해 번역 테스트 결과를 표시할 수도 있습니다. 작업 T302724에서 추적 중입니다.
샌드박스 엔드포인트
번역 템플릿을 지정하는 것은 간단하지 않습니다. 예상대로 작동하는 구성을 찾을 때까지 시행착오가 필요할 수 있습니다. 구성 파일을 수동으로 편집할 때는 더욱 그렇습니다!
메타에서 도메인 구성 파일을 변경할 때마다 모든 Web2Cit 사용자에 대해 변경하기 때문에 이 시행착오로 인해 일시적으로 모든 사람의 번역이 중단될 수 있습니다. 시각편집기를 사용하면 실제로 메타에 저장하지 않고도 구성 파일을 실험할 수 있습니다.
그동안 https://web2cit.toolforge.org/sandbox/
(또는 추가 디버깅 정보가 필요한 경우 https://web2cit.toolforge.org/debug/sandbox/
)에서 번역 서버의 샌드박스 엔드포인트를 사용하여 사용자 지정 도메인 구성을 사용할 수 있습니다. 예를 들어, example.com
에 대한 구성을 실험하려는 경우:
- "사용자" 이름공간의 사용자 이름 페이지에서 구성 파일을 편집합니다(여기에서
<syntaxhiglight>
태그를 사용하지 마세요):https://meta.wikimedia.org/wiki/사용자:사용자명/Web2Cit/data/com/example/templates.json
(또는patterns.json
또는tests.json
). - 사용자 이름
https://web2cit.toolforge.org/sandbox/사용자명/https://example.com/article
을 나타내는 번역 서버의 샌드박스 끝점을 사용합니다:
구성이 만족스러우면 평소와 같이 "메인" 이름공간에 붙여넣습니다. 위의 예에서는 https://meta.wikimedia.org/wiki/Web2Cit/data/com/example/templates.json
입니다.
보다 자유로운 실험을 가능하게 하는 것 외에도 "사용자" 이름공간에서 구성 파일을 편집하면 다음과 같은 추가 이점이 있습니다:
- 그것은 위키텍스트 편집기보다 JSON 파일을 편집하는 데 훨씬 더 나은 미디어위키 코드 편집기를 사용합니다.
- 아름다운 시각화를 제공하여 JSON 파일을 훨씬 쉽게 검토할 수 있습니다.
Translation tests
This section is still being worked on
Translation tests define a series of translation goals (i.e., expected output values), one per translation field, for a specific test webpage. Translation goals can be used to provide a score between 0 and 1 for the translation output resulting from the corresponding test webpage.
For any given translation field, if a test goal has not been defined, the score is undefined too. Conversely, if the translation output is undefined (no translation procedures defined) or empty, the score is 0.
If both translation output and translation goal are empty, score is 1.
Given a pair of translation output and translation goal arrays, items from the first array are compared against items from the second array. There are three item-to-item comparison functions, depending on the translation field:
- Levenshtein: 1 - dist / maxLength, where dist is the Levenshtein distance between items, and maxLength is the length of the longest item.
- Boolean: 1 for identical items, 0 for non-identical items
- Date: YYYY(-MM(-DD) are split on "-" and individual components are boolean-compared. An average is returned. Examples:
- 2012-12 vs 2012: (1 + 0) / 2 = .5
- 2010-12 vs 2012: (0 + 0) / 2 = 0
- 2012-12 vs 2012-12: (1 + 1) / 2 = 1
- 2012-12-01 vs 2012-12: (1 + 1 + 0) / 3 = .66
First, items are compared in the order they are given. That is, first item in first array vs first item in second array, etc. This is the "ordered" score. This ordered score can be disabled in fields for which the order does not matter.
Second, items are compared irrespective of their order. To do that, the first array is compared against all possible permutations of the second array, and the highest score is kept. This is the "unordered" score. This unordered score can be disabled for fields where strict order is important.
Finally, orderded and unordered score are averaged and returned as final score.
참고
- ↑ 테스트 결과 확인은 아직 지원되지 않습니다. 우리는 이것을 작업 T302724로 추적하고 있습니다
- ↑ 텍스트 문자열은 큰따옴표
"
로 시작하고 끝납니다. 따라서 내부에 큰따옴표를 사용하지 마십시오. 예를 들어,"some "quoted" text"
에서는 문자열이 시작하거나 끝나는 위치가 명확하지 않습니다. 가능한 경우 큰따옴표를 작은따옴표'
으로 바꾸세요:"some 'quoted' text"
. 또는/
를 사용하여 내부 큰따옴표를 "escape":"some /"quoted/" text"
. - ↑ a b 대체 템플릿 및 필수 필드 접근 방식은 T302019에 설명된 대로 향후 변경될 수 있습니다.
- ↑ 여기에서 소스 코드 저장소에서 사용할 수 있는 현재 사용되는 대체 템플릿 정의
- ↑ 필수 필드는 해당 출력이 "적용 가능한" 템플릿에 대해 "유효"해야 하는 필드입니다.
- ↑ 글로브 패턴을 테스트하는 도구가 있습니다. 예를 들어 디지털오션의 글로브 도구를 참조하세요. 그러나 특정 구현 간에 차이가 있을 수 있습니다. Web2Cit 코어 라이브러리는 현재 자바스크립트 minimatch용 글로브 glob matcher를 사용합니다.
- ↑ 예를 들어 toolkit.site의 데이터 형식 변환기
- ↑ Citoid/Zotero 필드는 기본 필드 또는 파생 필드일 수 있습니다. 일부 항목 유형에는 기본 필드에 다시 매핑되는 일부 필드에 대한 파생 필드가 있습니다. Web2Cit에서는 기본 필드만 사용합니다. 여기에서 파생 및 기반 일반 및 작성자 필드 목록을 찾을 수 있습니다.
- ↑ 파이어폭스에 "Try XPath" 또는 크롬에 "CSS and XPath checker"를 줄 수 있습니다.
- ↑ 정규 표현식을 테스트하는 데 도움이 되는 도구(예: regex101)를 사용할 수 있습니다.
각주
- ↑ https://json-schema.org/implementations.html
- ↑ https://github.com/json-editor/json-editor
- ↑ https://json5.org/
- ↑ "YAML: probably not so great after all".
- ↑ https://en.wikipedia.org/api/rest_v1/
- ↑ https://sugarjs.com/
- ↑ https://javascript.info/regexp-introduction#flags
- ↑ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#using_special_characters
- ↑ https://javascript.info/regexp-groups
- ↑ a b "Zotero field to Citation Style Language field mapping".
- ↑ https://www.zotero.org/download/connectors