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