요약

  • RFC 3066는 대소문자를 구분하지 않는 언어 태그 문법, 공개 등록, 그리고 접두어 기반 언어 범위를 표준화하면서, 라벨이 자신의 정보 객체에 대해 무엇을 의미하는지는 각 응용 프로그램이 정의하도록 남겨두었습니다.
  • 이 RFC는 공유된 태그 접두어가 상호 이해 가능성을 보장하지 않는다고 명시적으로 경고했습니다. 매칭 결과는 선정 결과일 뿐이며, 콘텐츠가 올바르게 라벨링되었거나 잘 렌더링되었거나 독자가 이해했다는 증거가 아니었습니다.

거대한 인간적 사실을 위한 작은 라벨

인터넷은 다국어 정보를 라우팅하기 위해 보편적인 언어 이론이 필요하지 않았습니다. 메일, HTTP, 마크업, 라이브러리, 음성 도구 등 여러 시스템이 각자 사적인 어휘를 발명하지 않고도 운반할 수 있는 공유 식별자가 필요했습니다.

2001년 1월에 BCP 47로 공개되어 RFC 1766을 대체한 RFC 3066가 그 최소한을 제공했습니다. 언어 태그는 주요 서브태그와 그 뒤에 0개 이상의 하이픈으로 연결된 서브태그로 구성되었습니다. 비교는 대소문자를 무시했습니다. 두 글자 주요 값은 ISO 639에서, 세 글자 값은 ISO 639-2에서 왔습니다.i는 IANA 등록 분기를 열었고,x는 사적 사용을 열었습니다. 두 글자 두 번째 서브태그는 ISO 3166 지역을 식별할 수 있었습니다.

이 문법은 상호 운용 가능한 표기를 만들었습니다. 언어적 진리의 단일한 소유자를 만들지는 않았습니다. ISO 유지 관리 기구가 원천 코드를 배정했습니다. IANA는 네임스페이스와 공개 등록을 관리했습니다. 태그를 운반하는 프로토콜이 객체와의 관계를 정의했습니다. 발신자가 라벨을 선택했습니다. 수신 응용 프로그램이 그것에 어떻게 대응할지 결정했습니다. 그리고 독자는 여전히 그 결과를 경험했습니다.

이 분리는 누락이 아니었습니다. 그것이 설계였습니다.

맥락이 단언을 소유했다

RFC 3066는 “이 객체는 언어 태그 X를 갖는다”는 문장에 하나의 고정된 의미를 부여하는 것을 거부했습니다. 단일 문서에서 태그 집합은 완전한 이해에 필요한 언어들을 명명할 수 있습니다. 컬렉션에서는 구성 요소들 사이에서 발견된 언어들을 단순히 나열할 수도 있습니다. 대안들의 멀티파트 집합에서 라벨들은 개별 선택을 검토하도록 안내하는 힌트였습니다. HTML이나 XML에서 태그는 문서 안의 하나의 범위에 적용되어 사전이나 음성 합성기가 적절한 규칙을 고르도록 도울 수 있었습니다.

태그의 문자들은 같았습니다. 단언은 그렇지 않았습니다.

그렇기 때문에 메타데이터는 그 결합과 분리하여 감사될 수 없습니다.language라는 데이터베이스 필드는 산문을 설명할 수도, 사용자 기본 설정을 설명할 수도, 인터페이스 셸을 설명할 수도, 사용 가능한 대안을 설명할 수도, 요청된 출력을 설명할 수도 있습니다. 값이 모두fr로 읽히더라도 이들은 서로 다른 주장입니다. 그 필드를 사용하는 표준이 어느 것을 의미하는지 말해야 합니다.

RFC 3066는 또한 발신자에게 정확성이 알려져 있고 유용한 곳에서만 정확하라고 조언했습니다. 두 글자 ISO 639-1 코드가 존재하면 세 글자 형식보다 우선했습니다. 프로토콜이 값을 강제하지 않는다면, 미지의 언어에 대해und보다 생략이 바람직했습니다. 프로토콜이 여러 태그를 운반할 수 있다면, 그것들을mul로 평탄화하는 것보다 여러 태그가 바람직했습니다. 미지와 복수는 편리한 토큰 뒤에 숨길 세부 사항이 아니라 보존해야 할 상태였습니다.

접두어는 가계도가 아니라 필터였다

RFC 1766에 대한 주요 추가 사항은 명명된language-range였습니다. 범위는 태그와 동일하거나, 하이픈 경계에서 끝나는 접두어를 형성할 때 태그와 일치했습니다.*는 모든 태그와 일치할 수 있으며, 프로토콜은 추가 와일드카드 의미를 자유롭게 정의할 수 있었습니다. 이것은 응용 프로그램에 간단한 선정 도구를 제공했습니다. 더 넓은 라벨에 대한 요청은 더 구체적인 라벨이 붙은 변형들을 수집할 수 있었습니다.

RFC는 즉시 이 추론의 한계를 설정했습니다. 태그가 같은 시퀀스로 시작하는 언어들이 상호 이해 가능하다는 보장은 없었습니다. 접두어 규칙은 응용 프로그램이 유용하다고 판단하는 곳에서 작동했습니다. 문자열 계층은 인간 이해의 계층을 증명하지 않았습니다.

이 구분은 RFC 4647에 살아 있으며, RFC 4647은 옛 알고리즘을 Basic Filtering이라 명명하고 Extended Filtering 및 Lookup과 구분합니다. 필터는 집합을 반환할 수 있습니다. Lookup은 하나의 태그를 선택할 수 있습니다. 어느 작업도 독자와 면담하지 않습니다. 성공적인 비교는 선언된 문자열들이 특정 우선순위 목록 아래에서 알고리즘을 충족했다는 것만 말합니다. 그것 자체로는 문해력, 방언, 문자 체계, 접근성, 번역 품질, 또는 콘텐츠가 잘못 라벨링되었는지에 대해 아무것도 말하지 않습니다.

따라서 올바른 운영 연쇄에는 여러 영수증이 있습니다: 실제로 공개된 기본 설정, 후보 콘텐츠에 사용 가능한 라벨, 매칭 알고리즘과 그 버전, 선정된 객체, 그 객체의 실제 언어와 문자 체계, 렌더링 또는 음성 출력, 사용자의 수정, 그리고 최종 작업 결과. 이 연쇄를language_match=true로 축약하는 것은 텍스트 비교에 결코 가졌던 적 없는 권위를 부여하는 일입니다.

등록은 기억을 만들었지, 이해를 만들지 않았다

생성 규칙 밖의 태그들은 공개 절차를 거쳤습니다. 요청자가 설명과 참고 자료를 제공하면, 공개 목록이 2주간 검토하고 지정된 검토자가 전달하거나 거부했습니다. 불복 절차는 IETF 절차를 따랐습니다. 등록은 삭제되지 않았습니다. 태그가 폐기되면 그 기록은 다른 값을 권고하도록 수정되었습니다.

이것은 제도적 기억 시스템이었습니다. 공개된 설명은 운영자가 태그가 무엇을 가리키는지 학습하는 데 도움이 되었고, 폐기 처리는 오래된 데이터의 해석을 보존했습니다. 그것은 그 태그를 붙인 모든 객체를 인증하지는 않았습니다. 등록은 “우리가 어떤 식별자를 조정하나?”에 답했습니다. “이 문서가 정말 그 언어인가?”에는 답하지 않았습니다.

사적 사용 태그는 이 경계를 더욱 명확히 했습니다.x-태그는 사적 합의를 맺은 당사자들에게 사용될 수 있었지만, IANA는 그 연속성을 등록하지도 않았고 전역적 의미를 제공하지도 않았습니다. 사적 조정은 보편적 상호 운용성을 사칭하지 않았기 때문에 정당했습니다.

RFC 4646은 이후 전체 태그 레지스트리를 언어 서브태그 레지스트리로 대체했습니다. 이는 언어, 문자 체계, 지역, 변형과 같은 위치에 더 명시적 구조를 부여하고 안정성을 강화했습니다: 유효한 태그는 나중에 무효가 되어서는 안 됩니다. RFC 5646은 그 아키텍처를 다듬었으며, RFC 4647과 함께 현재 BCP 47을 이룹니다. IANA는 이제 RFC 3066 언어 태그 레지스트리를 폐쇄 상태로 유지하고 새 사양을 서브태그 레지스트리로 안내합니다.

후속 아키텍처도 RFC 3066의 중심적 절제를 지우지 않았습니다. 더 나은 구조는 라벨을 더 쉽게 구문 분석하고 보존하게 만듭니다. 그러나 그것을 인간 이해에 대한 관찰로 바꾸지는 못합니다.

기본 설정 공개에는 인간적 비용이 있었다

RFC 1766은 보안을 무관하게 취급했습니다. RFC 3066는 구체적인 우려를 기록했습니다. 콘텐츠 협상 중에 전송된 언어 범위는 수신자가 국적을 추론하고 감시 대상을 식별하는 데 도움이 될 수 있었습니다. 이 문서는 언어가 곧 국적이라고 주장하지 않았습니다. 위험은 관찰자가 그렇게 추론할 수 있기 때문에 발생했습니다.

이것은 미묘한 헌법적 지점입니다. 사용자는 서비스를 개선하기 위해 기본 설정을 공개했습니다. 서버는 지문화 가능한 신호를 받았습니다. 매칭 알고리즘은 사용 가능한 표현들 사이에서 고르는 데 필요한 정보만을 요구했지만, 로깅, 상관 분석, 보존은 그 신호에 두 번째 삶을 줄 수 있었습니다.

따라서 최소한으로 유용한 라벨이 자동으로 최소 위험 공개는 아닙니다. 시스템은 기본 설정 목록을 비례적으로 유지하고, 그것으로부터 신원을 추론하지 말아야 하며, 선정에 필요한 영수증을 무관한 목적으로 구축된 프로파일과 분리해야 합니다.

출처