국제화 재 작성 ( "i18n 재 작성")을 사용하여 사용자의 국가 또는 선호하는 언어에 따라 다른 콘텐츠를 제공합니다. 다음은 설정할 수있는 몇 가지 구성 예입니다.
프랑스어를 선호하는 모든 사용자에게 동일한 프랑스어 콘텐츠를 제공합니다 (국가에 관계없이).
예 : 프랑스어 텍스트가있는 홈페이지프랑스어를 선호하는 사용자에게 표준 프랑스어 콘텐츠를 제공하지만 프랑스어를 선호하는 캐나다 사용자에게는 대신 캐나다 프랑스어 콘텐츠를 제공합니다.
예 : 표준 프랑스어 구문이있는 홈페이지와 캐나다 프랑스어 구문이있는 홈페이지모든 캐나다 사용자에게 동일한 콘텐츠를 제공합니다 (언어 선호도에 관계없이).
예 : 사이트의 "기본"언어가 있지만 캐나다 전용 기능 (예 : 휴일 테마)이있는 홈페이지프랑스어를 선호하는 캐나다 사용자에게 캐나다 프랑스어 콘텐츠를 제공합니다.
예 : 캐나다 프랑스어 구문 및 캐나다 관련 기능 (예 : 휴일 테마)이있는 홈페이지
Firebase 호스팅은 IP 주소에서 사용자의 국가를 결정하고 Accept-Language
요청 헤더에서 사용자의 언어 환경 설정을 결정합니다 (일반적 으로 웹 브라우저에서 자동 설정 ).
i18n 재 작성 설정
호스팅 사이트에 i18n 재 작성을 설정하려면 모든 현지화 된 콘텐츠에 대한 'i18n 콘텐츠'디렉터리를 만든 다음 새 'i18n 콘텐츠'디렉터리를 가리 키도록 firebase.json
파일에 i18n
속성을 추가해야합니다.
자세한 단계는 다음과 같습니다.
로컬 앱 디렉토리의
public
폴더 내에서 "i18n 콘텐츠"를위한 별도의 디렉토리를 만든 다음 사이트에서 지원하는 각 언어 및 국가 조합에 대한 하위 폴더를 만듭니다.각 하위 폴더에서 휴일 테마 홈페이지 또는 언어 별 404 페이지와 같이 해당 조합에 맞는 콘텐츠를 추가합니다.
다음은
localized-files
라는 "i18n content"디렉토리의 예입니다.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 content"하위 폴더를public
디렉토리의 루트에 배치 한 경우 root 값으로/
를 사용root
.root
값의 선행 및 후행 슬래시는 선택 사항입니다.호스팅 사이트에 "i18n 콘텐츠"및 구성을 배포합니다.
쿠키 재정의를 사용하여 설정을 테스트 할 수 있습니다.
국가 및 언어 코드
"i18n content"하위 폴더의 이름을 지정할 때 국가 및 언어 코드 모두에 소문자를 사용해야합니다. 당신의 값을 사용할 수 있습니다 ALL
(원하는 국가를 표시하기 위해 (대소 문자 구분)를 es_ALL/
(같은 또는 다른 언어) ALL_ca/
).
호스팅은 사용자의 IP 주소에서 국가 코드를 가져옵니다. 국가 코드는 두 글자로 된 ISO 3166-1 alpha-2 코드 입니다.
언어 코드는 사용자의 Accept-Language
요청 헤더에서 가져옵니다 (일반적 으로 웹 브라우저에서 자동 으로 설정 됨 ). ISO 639-1 코드 입니다. 언어 코드를 사용할 때 다음 사항에 유의하십시오.
Hosting은 제공 할 "i18n 콘텐츠"를 검색 할 때
Accept-Language
헤더의 품질 값에 따라Accept-Language
합니다.호스팅은
Accept-Language
헤더의 모든 지역 및 국가 하위 태그를 삭제하므로 "i18n 콘텐츠"하위 폴더 이름의 언어 코드에는 이러한 하위 태그가 포함될 수 없습니다. 예를 들어es-419
또는es-US
를 하위 폴더 이름의 언어 코드로 사용할 수 없지만es
는 사용할 수 있습니다.특정 지역 또는 국가 콘텐츠를 제공하려는 경우 지원하려는 특정 언어 국가 콘텐츠가 포함 된 하위 폴더를 만들 수 있습니다.
이 예에서
es
,es-es
또는es-419
의 언어 기본 설정을 사용하는 스페인의 요청은 Hosting이 모든 언어 코드를es
로 취급하기 때문에es_es/
하위 폴더에서 콘텐츠를 수신합니다.미국, 멕시코 또는
es-419
의 언어 기본 설정을 가진 기타 국가의 요청은 Hosting이es-419
를es
로 취급하기 때문에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
인 멕시코의 요청은 Hosting이 언어 코드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 content"디렉토리 외부에있는 컨텐츠입니다.
구성된 재 작성
404 처리
i18n 404 페이지
이는 정확히 일치하는 정적 콘텐츠에 대해 위에 나열된 것과 동일한 우선 순위를 따릅니다.맞춤 404 페이지
기본 404 페이지 (Firebase에서 제공)
우선 순위의 예
위에서부터 우리의 예를 계속합시다. 동일한 예제 디렉토리와 예제 요청을 사용합니다.
"i18n content"디렉토리 (
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 content"디렉토리의 검색 및 서비스에 대해 다음 사항에 유의하십시오.
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";
언어 쿠키 재정의는 하위 태그 또는 품질 값없이 선호도 순서대로 쉼표로 구분 된 언어 코드 목록이어야합니다.
쿠키 재정의는 로그에 반영되지 않습니다.