국제화 재작성("i18n 재작성")을 사용하여 사용자의 국가 또는 기본 언어에 따라 다른 콘텐츠를 제공합니다. 설정할 수 있는 몇 가지 구성 예는 다음과 같습니다.
프랑스어를 선호하는 모든 사용자에게 동일한 프랑스어 콘텐츠를 제공합니다(국가에 관계없이).
예: 프랑스어 텍스트가 있는 홈페이지프랑스어를 선호하는 사용자에게는 표준 프랑스어 콘텐츠를 제공하지만 프랑스어를 선호하는 캐나다 사용자에게는 대신 캐나다 프랑스어 콘텐츠를 제공합니다.
예: 표준 프랑스어 문구가 있는 홈페이지와 캐나다 프랑스어 문구가 있는 홈페이지언어 기본 설정에 관계없이 모든 캐나다 사용자에게 동일한 콘텐츠를 제공합니다.
예: 사이트의 "기본" 언어가 있지만 캐나다 관련 기능(예: 휴일 테마)이 있는 홈페이지프랑스어를 선호하는 캐나다 사용자에게 캐나다 프랑스어 콘텐츠를 제공합니다.
예: 캐나다 프랑스어 문구와 캐나다 관련 기능(예: 휴일 테마)이 포함된 홈페이지
Firebase 호스팅은 IP 주소에서 사용자의 국가를 결정하고 Accept-Language
요청 헤더(일반적 으로 웹 브라우저에서 자동으로 설정됨 )에서 사용자의 언어 환경설정을 결정합니다.
i18n 재작성 설정
호스팅 사이트에 대해 i18n 재작성을 설정하려면 모든 현지화된 콘텐츠에 대해 "i18n 콘텐츠" 디렉터리를 생성한 다음 i18n
속성을 firebase.json
파일에 추가하여 새 "i18n 콘텐츠" 디렉터리를 가리켜야 합니다.
자세한 단계는 다음과 같습니다.
로컬 앱 디렉토리의
public
폴더 내에서 "i18n 콘텐츠"를 위한 별도의 디렉토리를 만든 다음 사이트에서 지원하는 각 언어 및 국가 조합에 대한 하위 폴더를 만듭니다.각 하위 폴더에서 휴일 테마 홈페이지 또는 언어별 404 페이지와 같이 해당 조합에 특정한 콘텐츠를 추가합니다.
다음은
localized-files
라는 "i18n 콘텐츠" 디렉토리의 예입니다.public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.html
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature fr_ca/ index.html
localized-files/
디렉토리에는 사이트에서 지원하는 각 언어 및 국가 조합에 대한 별도의 하위 폴더가 포함되어 있습니다. 각 하위 폴더의 이름 지정 패턴은 다음 형식 중 하나를 따라야 합니다.languageCode_countryCode
: 해당 언어 기본 설정 및 해당 국가 코드가 있는 사용자 전용 콘텐츠를 포함합니다.languageCode
: 해당 언어 기본 설정이 있는 사용자 전용 콘텐츠를 포함하지만 해당 콘텐츠는 국가별로 다르지 않습니다. 기본적으로languageCode_ALL
과 동일
이러한 코드에 대한 자세한 내용은 아래의 국가 및 언어 코드 하위 섹션을 참조하십시오.
ALL
(대소문자 구분) 값을 사용하여 모든 국가(예:es_ALL/
) 또는 모든 언어(예:ALL_ca/
)를 나타낼 수 있습니다.하위 폴더의 파일은
public
디렉터리나 다른 하위 폴더에 유사한 파일이 있을 필요가 없습니다. 언어 및/또는 국가에 완전히 특정한 콘텐츠를 만들 수 있습니다.firebase.json
파일에i18n
속성을 추가하고 "i18n 콘텐츠"가 포함된 디렉터리를 지정합니다. 우리의 예를 계속:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
root
에 지정된 디렉토리는 모든 "i18n 콘텐츠" 하위 폴더를 포함하는 디렉토리의 이름이어야 합니다. 모든 "i18n 콘텐츠" 하위 폴더를public
디렉터리의 루트에 배치한 경우root
값에/
를 사용합니다.root
값의 선행 및 후행 슬래시는 선택 사항입니다.호스팅 사이트에 "i18n 콘텐츠" 및 구성을 배포합니다.
쿠키 재정의 를 사용하여 설정을 테스트할 수 있습니다.
국가 및 언어 코드
"i18n 콘텐츠" 하위 폴더의 이름을 지정할 때 국가 및 언어 코드 모두에 소문자를 사용해야 합니다. ALL
(대소문자 구분) 값을 사용하여 모든 국가(예: es_ALL/
) 또는 모든 언어(예: ALL_ca/
)를 나타낼 수 있습니다.
호스팅은 사용자의 IP 주소에서 국가 코드를 얻습니다. 국가 코드는 2자로 된 ISO 3166-1 alpha-2 코드 입니다.
언어 코드는 사용자의 Accept-Language
요청 헤더에서 가져옵니다(일반적 으로 웹 브라우저에서 자동으로 설정 됨). ISO 639-1 코드 입니다. 언어 코드를 사용할 때 다음 사항에 유의하십시오.
Hosting은 제공할 "i18n 콘텐츠"를 검색할 때
Accept-Language
헤더의 품질 값을 기준으로 언어를 정렬합니다.호스팅은
Accept-Language
헤더에서 모든 지역 및 국가 하위 태그를 삭제하므로 "i18n 콘텐츠" 하위 폴더 이름의 언어 코드는 이러한 하위 태그를 포함할 수 없습니다. 예를 들어es-419
또는es-US
를 하위 폴더 이름의 언어 코드로 사용할 수 없지만es
는 사용할 수 있습니다.특정 지역 또는 국가 콘텐츠를 제공하려는 경우 지원하려는 특정 언어-국가 콘텐츠가 포함된 하위 폴더를 만들 수 있습니다.
이 예에서 언어 기본 설정이
es
,es-es
또는 심지어es-419
인 스페인의 요청은 호스팅이 모든 언어 코드를es
로 취급하기 때문에es_es/
하위 폴더에서 콘텐츠를 수신합니다.호스팅에서
es-419
를es
로 취급하기 때문에 미국, 멕시코 또는 언어 기본 설정이es-419
인 기타 국가의 요청은es_ALL/
하위 폴더에서 콘텐츠를 수신합니다.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
이 예에서 언어 기본 설정이
es-419
인 멕시코의 요청은 호스팅에서 언어 코드es-419
를es
로 취급하기 때문에es_mx/
하위 폴더에서 콘텐츠를 수신합니다.그러나 언어 기본 설정이
es-419
인 미국의 요청은 호스팅에서es-419
를es
로 취급 하고es_us/
하위 폴더가 없기 때문에es_ALL/
하위 폴더에서 콘텐츠를 수신합니다.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
"i18n 콘텐츠" 우선 순위
i18n 재작성을 설정하면 호스팅은 다음 우선순위에 따라 콘텐츠를 제공합니다.
/__/*
경로 세그먼트로 시작하는 예약된 네임스페이스구성된 리디렉션
정확히 일치하는 정적 콘텐츠
언어 코드 + 국가 코드(예:
fr_ca/
의 콘텐츠)
순서는 요청의Accept-Language
헤더에 있는 각 언어의 품질 값을 따릅니다.국가 코드만(예:
ALL_ca/
의 콘텐츠)언어 코드만(예:
fr/
또는es_ALL/
의 콘텐츠)
순서는 요청의Accept-Language
헤더에 있는 각 언어의 품질 값을 따릅니다."기본" 완전 일치 정적 콘텐츠
이것은public
디렉터리의 루트와 같이 "i18n 콘텐츠" 디렉터리 외부에 있는 콘텐츠입니다.
구성된 재작성
404 처리
i18n 404페이지
이는 정확히 일치하는 정적 콘텐츠에 대해 위에 나열된 것과 동일한 우선 순위를 따릅니다.맞춤 404 페이지
기본 404 페이지(Firebase 제공)
우선 순위의 예
위에서 우리의 예를 계속합시다. 동일한 예제 디렉터리와 예제 요청을 사용합니다.
"i18n 콘텐츠" 디렉터리가 있는 로컬 프로젝트 디렉터리의 예(
localized-files
라고 함)public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.html
요청 정보 예시
언어 코드:
fr
,en
(프랑스어, 그 다음 영어)
언어 코드는Accept-Language
헤더의 품질 값을 기준으로 정렬됩니다.국가 코드:
ca
(캐나다)
정확히 일치하는 우선 순위와 언어 기본 설정에 대한 품질 값에 따라 Hosting은 다음 순서로 요청된 페이지의 디렉토리를 검색합니다.
public/localized-files/fr_ca/
public/localized-files/en_ca/
public/localized-files/ALL_ca/
public/localized-files/fr_ALL/
public/localized-files/fr/
public/localized-files/en_ALL/
public/localized-files/en/
public/
404 처리
어떤 페이지가 사용자에게 제공됩니까?
요청된 페이지:
index.html
fr_ca/
하위 폴더의index.html
Hosting은 먼저
fr_ca/
하위 폴더를 검색하므로 해당 하위 폴더에서index.html
과 정확히 일치하는 항목을 찾습니다.요청한 페이지:
awesome-page.html
fr/
하위 폴더의404.html
호스팅은 먼저 전체 디렉토리(모든 "i18n 콘텐츠" 하위 폴더 및 루트 디렉토리 포함)를 우선순위에 따라 정확한 일치를 검색하지만
awesome-page.html
에 대한 정확한 일치는 없습니다.따라서 Hosting은 정확히 일치 검색과 동일한 i18n 우선 순위를 따르는 404 처리를 시작합니다.
fr/
하위 폴더는 404 페이지를 포함하는 검색된 첫 번째 하위 폴더입니다.
"i18n 콘텐츠" 디렉토리의 이 검색 및 제공에 대해 다음 사항에 유의하십시오.
localized-files/
디렉터리에는 실제로en_ca/
,en_ALL/
또는en/
하위 폴더가 포함되어 있지 않으므로 Hosting은 요청의 언어-국가 조합에 대해 일치하는 하위 폴더를 찾을 때까지 우선 순위 목록을 건너뜁니다.localized-files/
디렉토리에es_ALL/
하위 폴더가 포함되어 있지만 위의 예제 요청 에는es
또는es-foo
언어 코드가 포함되어 있지 않으므로 Hosting은es
와 일치하는 "i18n 콘텐츠"를 검색하지 않습니다.fr/
및fr_ALL/
이라는 하위 폴더는 사용자의 국가 및 언어 기본 설정 관점에서 동일합니다. 그러나 두 하위 폴더가 모두 존재하는 경우 호스팅은fr/
콘텐츠보다 먼저fr_ALL/
콘텐츠를 제공합니다.
쿠키로 언어 및 국가 코드 재정의
쿠키를 사용하여 국가 및 언어 헤더를 재정의함으로써 제공되는 콘텐츠를 변경할 수 있습니다.
다음은 쿠키 재정의를 사용할 수 있는 몇 가지 방법입니다.
다양한 언어/국가 조합으로 기능을 테스트하여 어떤 콘텐츠가 제공되는지 확인하세요.
사용자가 표시되는 콘텐츠를 변경할 수 있습니다. 예를 들어 언어 선택기를 구현한 다음 그에 따라 사용자의
firebase-language-override
쿠키를 설정할 수 있습니다.
쿠키 재정의를 구성하려면 firebase-country-override
및 firebase-language-override
이름 둘 다 또는 둘 중 하나로 쿠키를 설정합니다. 예를 들어 다음 JavaScript 코드 조각은 국가 코드를 ca
로 재정의하고 Accept-Language
헤더를 fr,en
으로 재정의합니다.
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
언어 쿠키 재정의는 하위 태그나 품질 값 없이 기본 설정 순서대로 쉼표로 구분된 언어 코드 목록이어야 합니다.
쿠키 재정의는 로그에 반영되지 않습니다.