Copyright © 2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
이 문서는 웹에서 매니페스트 파일 및 이와 유사한 문서 형식의 명세와 관련된 정의와 모범 사례를 제공합니다.
이 절은 이 문서가 발행된 시점의 문서 상태를 설명합니다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 https://www.w3.org/TR/의 W3C 기술 보고서 색인에서 확인할 수 있습니다.
웹의 일부 명세는 함께 소비될 파일 또는 리소스 집합을 정의하는 일을 다룹니다. 일반적인 설계 패턴은 어떤 리소스를 사용할 수 있는지와 다양한 리소스를 어떻게 사용해야 하는지를 정의하거나, 리소스 모음에 대한 다양한 종류의 메타데이터를 제공하는 매니페스트 또는 구성 파일을 제공하는 것입니다. 이 문서는 웹에서 매니페스트 파일 및 이와 유사한 문서 형식의 명세와 관련된 정의와 모범 사례를 제공합니다.
이 문서는 국제화 워킹 그룹이 노트 트랙을 사용하여 그룹 노트로 발행했습니다.
이 그룹 노트는 국제화 워킹 그룹의 승인을 받았지만, W3C 자체 또는 그 회원의 승인을 받은 것은 아닙니다.
이 문서는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업이 아닌 다른 것으로 인용하는 것은 적절하지 않습니다.
W3C 특허 정책은 이 문서에 대해 어떠한 라이선스 요구사항이나 약속도 부과하지 않습니다.
이 문서는 2023년 11월 03일 W3C 프로세스 문서의 적용을 받습니다.
웹의 일부 명세는 함께 소비될 파일 또는 리소스 집합을 정의하는 일을 다룹니다. 일반적인 설계 패턴은 어떤 리소스를 사용할 수 있는지와 다양한 리소스를 어떻게 사용해야 하는지를 정의하거나, 리소스 모음에 대한 다양한 종류의 메타데이터를 제공하는 매니페스트 또는 구성 파일을 제공하는 것입니다.
이와 같은 명세의 예로는 Webapp [APPMANIFEST], Miniapp [MINIAPP-MANIFEST], ePub [EPUB-33]가 있습니다.
매니페스트 파일 형식은 일반적으로 지역화할 수 없는 구문 콘텐츠 또는 사용자가 제공한 값을 포함합니다. 그러나 대부분의 매니페스트 파일 형식은 적어도 일부 지역화 가능 콘텐츠 필드도 포함합니다. 지역화 가능 콘텐츠 값을 포함하는 매니페스트 파일 형식을 정의하는 명세는 사용자가 매니페스트를 여러 언어로 지역화할 수 있는 수단을 제공해야 합니다. 이 문서는 매니페스트 구축 및 관리와 관련된 몇 가지 모범 사례와 함께, 일반적인 설계의 장단점을 다룹니다.
이러한 모범 사례와 그 밖의 여러 모범 사례는 지원 자료로 연결되는 링크와 함께 명세 개발자를 위한 국제화 모범 사례 [INTERNATIONAL-SPECS]에서도 확인할 수 있습니다. 여기에 있는 모범 사례 외에도, 웹의 언어 메타데이터와 관련된 추가 모범 사례는 [STRING-META]에서 확인할 수 있습니다. 핵심 용어는 국제화 용어집 [I18N-GLOSSARY]에서도 확인할 수 있습니다.
웹에서 매니페스트 파일이 사용될 수 있는 방식은 다양하며, 이러한 방식은 매니페스트 지역화 전략의 선택에 영향을 줍니다.
패키지된 매니페스트. 일부 매니페스트는 애플리케이션 또는 문서를 구성하기 위해 다른 파일과 함께 패키지됩니다. 매니페스트는 일반적으로 더 큰 콘텐츠 집합의 일부로 소비되고, 해당 콘텐츠는 하나의 단위로 다운로드되므로, 이러한 유형의 매니페스트는 로케일을 기반으로 한 이름이나 경로를 가진 여러 파일을 사용하는 것과 같은 더 모듈화된 지역화 전략을 사용할 수 있습니다.
축약 설명 매니페스트. 일부 매니페스트는 애플리케이션, 문서 또는 기타 리소스에 대한 축약 설명으로 사용되도록 의도됩니다. 이러한 유형의 매니페스트는 실제 리소스나 그 구성 부분을 가져오기 위한 선행 단계로 클라이언트가 다운로드하는 경우가 많습니다. 여러 파일을 가져오는 것은 지연 시간, 크기, 저장 공간 측면의 영향을 가지므로, 이러한 유형의 매니페스트는 일반적으로 단일 파일 또는 덜 모듈화된 접근법을 사용하려고 합니다.
또 다른 고려사항은 명세가 사용하는 언어 협상 전략입니다. 매니페스트가 잘 알려진 URL에 캐시되는 것이 아니라 요청 시 생성될 수 있다면, 지역화는 요청별로 적용될 수 있습니다. 이는 축약 매니페스트 스타일에 더 가깝습니다. 어떤 구현은 협상할 수 있지만 다른 구현은 그렇지 못한 경우에는, 명세가 서로 다른 전략의 사용을 허용하는 것이 중요할 수 있습니다.
현대 운영 환경은 사용할 수 있는 매우 광범위한 로케일 집합을 지원하며, 애플리케이션 소유자는 하나의 지역화된 애플리케이션 또는 문서로 다양한 사용자를 만족시키고자 하는 경우가 많다는 점을 염두에 두어야 합니다. 명세의 예는 필연적으로 세 개나 네 개 정도의 로케일로 제한되지만, 실제 애플리케이션에서 50개 이상의 특정 로케일을 사용하는 것은 드문 일이 아닙니다.
매니페스트는 사용자의 언어 환경설정을 사용 가능한 지역화 리소스와 일치시켜야 합니다. 사용자의
로케일 환경설정은 기본 언어 하위 태그 이상의 내용을 포함할 수 있습니다. 예를 들어
zh-Hans 같은 태그의 스크립트(“간체 한자 스크립트로 쓰인 중국어”를 의미)나,
fr-CA 같은 태그의 지역(“캐나다에서 사용되는 프랑스어”를 의미), 또는 둘 다를
포함할 수 있습니다. 일부 시스템은 달력, 숫자 모양, 정렬 등과 같은 맞춤 정보를 포함하는
[BCP47]의 확장인 유니코드 로케일
식별자를 지원합니다. 자세한 내용은 [LTLI]를 참조하세요.
지역화된 리소스를 사용자의 로케일 환경설정에 맞추는 작업은 보통 “로케일 폴백”을 포함하며, [BCP47]의 “lookup” 매칭 방식이나 [CLDR]의 “best match” 방식 같은 메커니즘을 사용합니다. 이러한 방식은 각 리소스의 언어 태그를 비교하여, 사용자의 환경설정과 완전히 일치하는 가장 긴 태그를 찾습니다. 또한 일반적으로 지역화된 리소스 중 사용자의 환경설정과 일치하는 것이 없을 때 사용할 기본 로케일도 있습니다.
(5. 경로와 파일 이름 지역화의 비교에서 볼 수 있는 것과 같은) 사용 가능한 리소스의 언어 태그나, 어떤 형태의 언어 맵에 있는 항목( 3.4 언어 맵 참조)에 대한 언어 태그 매칭은, 첫 번째 잠재적 일치가 전체적으로 가장 좋은 일치가 아닐 수 있으므로 구현이 사용 가능한 모든 값을 검사해야 할 수 있습니다.
예를 들어 다음 언어 맵을 생각해 보세요.
"localized-resource": {
"en": {"value": "This is English"},
"en-GB": {"value": "This is UK English"},
"en-US": {"value": "This is US English"}
}
사용자의 로케일 환경설정이
en-GB 또는 en-US라면, 가장 적합한 일치 항목이 목록에 포함되어
있습니다. en 항목은 어느 값에도 일치하는 것으로 간주될 수 있으므로,
가장 적합한 일치를 찾으려면 당연히 전체 목록을 읽어야 합니다.
사용자의 로케일 환경설정이 en-AE(아랍에미리트에서 사용되는 영어)라면,
목록에서 가장 적합한 일치는 en이지만, 일부 best matching 구현은 대역 외
정보를 적용하여 더 긴 태그와 일치시킬 수도 있습니다.
사용자의 로케일 환경설정이 fr-FR(프랑스에서 사용되는 프랑스어)라면,
어떤 값도 일치하지 않으며 사용할 값을 선택하기 위해 어떤 형태의 기본값 적용이 필요합니다.
마지막으로, 사용자의 로케일 환경설정은 로케일 설정을 맞춤화하는 데 사용되는 하위 태그나
언어 변형과 같은 추가 하위 태그를 포함할 수 있습니다. 맞춤형 로케일의 예로는
en-US-u-hc-h23(미국 영어이지만 “hour cycle”이 24시간제로 설정됨)이
있습니다. 언어 변형의 예로는 en-GB-oxendict(영국 영어이지만 Oxford English
Dictionary의 철자 관례를 사용)가 있습니다.
로케일 폴백은 사용자의 환경설정을 사용 가능한 값 목록과 비교하고, 정확히 일치하는 항목이 없으면
마지막 하위 태그를 제거한 뒤 반복하는 방식으로 구현됩니다. 이는 [BCP47]의 언어 태그 매칭 부분
(특히 [RFC4647])에서 “lookup”으로 설명됩니다.
따라서 en-GB-oxendict 태그는 위 언어 맵과 다음과 같이 비교됩니다.
en-GB-oxendict // 일치 없음
en-GB // en-GB와 일치
en // en-GB가 없으면 en과 일치
(default) // 일치 없음, 기본값 사용
매니페스트에 저장된 자연어 값은 다른 문서 형식이나 데이터 구조와 마찬가지로, 소비자가 성공적으로 사용하려면 언어와 방향 메타데이터가 필요합니다. 요구사항에 대한 자세한 정보는 [STRING-META]를 참조하세요.
매니페스트의 문자열 값에는 네 가지 일반적인 직렬화 방식이 있으며, 이 절에서 이를 설명합니다. 명세는 이들을 함께 사용하여 완전한 지역화 솔루션을 형성하도록 의도되어 있습니다.
비언어적 필드(즉, 인간 언어가 아닌 데이터를 포함하는 문자열)의 경우, 언어 또는 방향 메타데이터는 값과 연결되어서는 안 됩니다. 여기에는 애플리케이션 내부 데이터 값 [INTERNATIONAL-SPECS]도 포함된다는 점에 유의하세요.
소비자가
데이터에 언어 태그를 할당해야 하는 경우, 값 zxx(비언어적)를 사용해야
합니다. 소비자가 데이터에 기본
방향을 할당해야 하는 경우, 값 auto를 사용해야 합니다.
단일 언어로 나타나는 지역화
가능
텍스트 필드의 경우, 값을 나타내기 위해 데이터 구조를 사용하세요. 권장 표현은 세 개의 필드를
가진 객체입니다. value 필드는 실제 문자열을 포함합니다. lang 필드는
유효한 [BCP47] 언어 태그를 포함합니다. dir
필드는 문자열의 기본
방향(값
ltr, rtl, 또는 auto 중 하나)을 포함합니다.
[STRING-META]의 지역화 가능 WebIDL 딕셔너리를 참조하세요.
단일 언어 지역화 가능 텍스트 필드는 주어진 문서에 자연어 문자열이 몇 개만 있을 때 가장 효과적입니다. 매니페스트와 같은 문서가 많은 자연어 문자열을 포함하면 이는 비효율적이 됩니다. 이러한 문자열을 인코딩하는 복잡성을 줄이기 위한 한 가지 우회 방법은 언어와 기본 방향에 대한 문서 수준 기본값을 설정하는 것입니다. 언어가 방향을 함의하지 않으므로 이들은 별도의 값입니다. 위에서 설명한 단일 언어 지역화 가능 텍스트 필드 표현을 사용하여, 주어진 문자열 값에서 어느 값이든 재정의할 수 있는 기능은 여전히 있어야 합니다.
[JSON-LD] @context 메커니즘을
사용할 수 있는 명세의 경우, 문서 수준 기본값을 제공하기 위해 @language 및
@direction 필드를 사용하세요.
명세가 자체 문서 수준 기본값을 정의한다면, 두 개의 선택적 필드를 제공하세요.
language라고 불러야
하며, 유효한 [BCP47] 언어 태그를 포함하도록 명시해야
합니다. 명세는 구현이 [BCP47] 언어 태그가 올바른 형식인지
확인하기만
하면 된다고 명시해야 합니다.
direction이라고 불러야 하며, ltr, rtl, 또는
auto 값을
지원해야 합니다.
세계는 단일 언어만 사용하지 않습니다. 하나의 언어만 포함하는 문서를 가진다는 것은 매니페스트를 지역화하기 위해 언어마다 하나씩 여러 반복본을 제공해야 함을 의미합니다. 이는 매니페스트를 요청할 때 언어 협상을 필요로 할 수도 있습니다.
이를 해결하는 한 가지 방법은 매니페스트 문서 안의 각 지역화 가능 텍스트 필드에 다국어 값을 허용하는 것입니다.
언어 선택은 단순히 언어 태그 문자열 값을 사용자가 선호하는 로케일과 정확히 일치시키는 것만은 아닙니다. 객체 표현으로 된 일반적인 지역화 가능 텍스트 필드는 값과 연결된 언어 태그를 알아내기 위해 객체를 역직렬화해야 합니다. 주어진 매니페스트 파일에 값이 많을 때 이는 비효율적일 수 있습니다. 이러한 경우에는 언어 맵을 사용하여 지역화 가능 텍스트 값을 구성하는 것이 모범 사례입니다. 이러한 맵은 선택을 목적으로 언어 태그를 노출하지만, 값 쪽에서는 여전히 객체 표현을 사용합니다. 주어진 문자열 값에 대해 언어와 방향을 모두 재정의해야 할 수 있기 때문입니다.
지역화된 매니페스트를 만들기 위한 몇 가지 일반적인 접근법이 있습니다. 각 접근법은 특정한 장점을 제공하고 특정한 단점도 가집니다.
단일 매니페스트 접근법은 언어 값의 배열을 사용하여 지역화 가능 필드를 정의함으로써 지역화를 제공합니다.
단일 매니페스트의 장점은 다음과 같습니다.
이 접근법에는 다음과 같은 단점도 있습니다.
단일 매니페스트는 지역화 가능 콘텐츠 필드의 수가 제한되어 있거나 언어 수가 제한되어 있는 더 작은 소스 파일에서 가장 잘 작동합니다. 대부분의 단일 매니페스트는 실제 선택을 수행하기 위해 ([JSON-LD]에서 볼 수 있는 것과 같은) 일종의 “언어 색인” 체계를 정의합니다.
로케일별 매니페스트는 지원되는 각 언어 또는 로케일마다 별도의 파일을 만듭니다. 일반적으로
명세는 매니페스트 파일을 할당하고 찾기 위해 path 또는 filename에
기반한 구성 체계 중 하나를 선택합니다.
로케일별 매니페스트의 장점은 다음과 같습니다.
단점은 다음과 같습니다.
일반적인 절충안은 지역화할 수 없는 콘텐츠의 대부분 또는 전부를 포함하는 중앙 매니페스트 파일을 두고, 지역화 가능 콘텐츠를 포함하는 별도의 파일을 결합하는 것입니다. 어떤 경우에는 중앙 매니페스트 파일이 지역화 가능 콘텐츠의 기본값을 포함합니다. 중앙 매니페스트는 사용 가능한 로케일의 디렉터리나 목록 (또는 언어별 매니페스트의 URL)을 포함할 수도 있어, 클라이언트가 실제로 사용 가능한 지역화 파일만 가져오려고 시도하면 되게 할 수 있습니다.
일부 매니페스트는 경로를 수정하여 매니페스트의 지역화된 변형을 저장하기로 선택합니다. 다른 매니페스트는 파일 이름을 수정하는 방식을 선호합니다.
경로 기반 저장 방식은 여러 파일을 함께 지역화할 수 있다는 장점이 있습니다. 예를 들어 지역화된 매니페스트는 지역화된 아이콘, 로고, 스타일시트, README, 서비스 약관 파일을 매니페스트와 함께 포함할 수 있습니다. 새 언어는 새 디렉터리를 추가하여 추가할 수 있습니다.
경로 기반 시스템에는 파일 이름이 일반적으로 “모두 동일”하며, 특정 파일의 내용이 파일 이름만으로는 명확하지 않고 애플리케이션 계층 구조에서의 위치를 통해서만 알 수 있다는 단점이 있습니다.
파일 이름 기반 저장 방식은 파일의 내용이 파일 이름만으로 명확하며, 이 점에서 파일 관리가 때때로 더 쉬울 수 있다는 장점이 있습니다.
매니페스트 지역화는 매니페스트 안의 문자열 콘텐츠가 각 개별 데이터 값에 대해 언어와 방향 메타데이터를 제공해야 할 필요를 제거하지 않는다는 점에 유의하세요. 매니페스트 파일은 언어와 방향에 대한 파일 전체의 기본값을 정의할 수 있지만, 특정 파일은 두 값 중 어느 것이든 재정의할 수 있어야 합니다. 자세한 내용은 [STRING-META]를 참조하세요.
일부 매니페스트는 지역화된 파일에서 값의 “희소 채우기”를 허용합니다. 예를 들어,
en-US(영어, 미국) 파일은 미국에 특화된 값 한두 개만 포함하고,
대부분의 콘텐츠는 en(영어) 파일에 의존할 수 있습니다. 명세는 잘못된 구성 오류나 누락된
번역을 피하기 위해 희소 채우기가 허용되는지와 그것이 어떻게 작동하는지를 명확히 해야 합니다.