Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

국제화(i18n) 재작성 구성

국제화 재작성("i18n rewrites")을 사용하여 사용자의 국가 또는 선호하는 언어에 따라 다른 콘텐츠를 제공합니다. 다음은 설정할 수 있는 몇 가지 구성 예입니다.

  • (에 관계없이 국가의) 프랑스어를 선호하는 모든 사용자에게 동일한 콘텐츠를 프랑스어로 봉사한다.
    예: 프랑스어 텍스트가 있는 홈페이지

  • 프랑스어를 선호하는 사용자에게 표준 프랑스어의 콘텐츠를 제공하지만, 프랑스어를 선호하는 캐나다 사용자를 위해 대신 캐나다 프랑스어 콘텐츠를 제공.
    예: 표준 프랑스어 문구가 있는 홈페이지와 캐나다 프랑스어 문구가 있는 홈페이지

  • (관계없이 언어 설정의) 캐나다의 모든 사용자에게 동일한 콘텐츠를 제공하고 있습니다.
    예: 사이트의 '기본' 언어가 있지만 캐나다 고유의 기능(예: 휴일 테마)이 있는 홈페이지

  • 프랑스어를 선호하는 캐나다 사용자에게 캐나다 프랑스어 콘텐츠를 제공합니다.
    예: 캐나다 프랑스어 표현과 캐나다 고유의 기능(예: 휴일 테마)이 있는 홈페이지

중포 기지 호스팅 자신의 IP 주소와에서 사용자의 언어 환경 설정에서 사용자의 국가를 결정 Accept-Language 요청 헤더 (일반적으로 웹 브라우저에 의해 자동으로 설정 ).

i18n 다시 쓰기 설정

당신의 호스팅 사이트에 대한 국제화 재 작성을 설정하려면, 당신은 그 모든 지역화 된 내용에 대한 "국제화 내용"디렉토리를 생성 추가해야 i18n 당신에 속성을 firebase.json 새로운 "국제화 내용"디렉토리를 가리 키도록 파일.

자세한 단계는 다음과 같습니다.

  1. 로컬 응용 프로그램 디렉토리의 내 public 폴더, 당신의 "국제화 내용"에 대한 별도의 디렉토리는 다음 사이트에서 지원하는 각 언어 및 국가 조합에 대한 하위 폴더를 생성합니다.

    각 하위 폴더에 휴일 테마 홈페이지 또는 언어별 404 페이지와 같이 해당 조합에 대한 콘텐츠를 추가합니다.

    다음은 "국제화 내용"디렉토리라는 예제 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
    

    localized-files/ 디렉토리는 사이트에서 지원하는 각 언어 및 국가 조합에 대해 별도의 하위 폴더가 포함되어 있습니다. 각 하위 폴더의 이름 지정 패턴은 다음 형식 중 하나를 따라야 합니다.

    • languageCode_countryCode : 해당 언어 환경과 그 나라 코드가 사용자의 콘텐츠를 특정을 포함합니다

    • languageCode : 해당 언어 기본 설정을 가진 사용자의 콘텐츠 별을 포함하지만, 내용은 국가 별 아니다; 기본적으로 해당 languageCode_ALL

    서브 섹션을 참조하십시오 나라와 언어 코드 이 코드에 대한 자세한 내용은 아래. 당신의 값을 사용할 수 있습니다 ALL (원하는 국가를 표시하기 위해 (대소 문자 구분)를 es_ALL/ (같은 또는 다른 언어) ALL_ca/ ).

    하위 폴더에있는 파일은에 유사한 파일이 필요하지 않습니다 public 디렉토리 또는 다른 하위 폴더. 언어 및/또는 국가에 완전히 고유한 콘텐츠를 만들 수 있습니다.

  2. 추가 i18n 당신에 속성을 firebase.json 파일과 "국제화의 내용을"들어있는 디렉토리를 지정합니다. 계속해서 예를 들면 다음과 같습니다.

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    지정된 디렉토리 root 모든 "국제화 내용"하위 폴더를 포함하는 디렉토리의 이름이어야합니다. 당신은 당신의 루트에 모든 "국제화 내용"하위 폴더를 배치하면 public 디렉토리, 사용 / 의 값에 대한 root . 에서 선행 및 후행 슬래시 root 값은 선택 사항입니다.

  3. "i18n 콘텐츠" 및 구성을 호스팅 사이트에 배포합니다.

당신은 사용하여 설치를 테스트 할 수 있습니다 쿠키 재정의를 .

국가 및 언어 코드

"i18n content" 하위 폴더의 이름을 지정할 때 국가 및 언어 코드 모두에 소문자를 사용해야 합니다. 당신의 값을 사용할 수 있습니다 ALL (원하는 국가를 표시하기 위해 (대소 문자 구분)를 es_ALL/ (같은 또는 다른 언어) ALL_ca/ ).

호스팅은 사용자의 IP 주소에서 국가 코드를 가져옵니다. 국가 코드는 두 글자입니다 ISO 3166-1 알파 2 코드 .

언어 코드는 사용자의에서 얻을 수 있습니다 Accept-Language 요청 헤더 (일반적으로 웹 브라우저에 의해 자동으로 설정 ). 그들은는 ISO 639-1 코드 . 언어 코드를 사용할 때 다음 사항에 유의하십시오.

  • 봉사 할 수있는 "국제화 내용"에 대한 검색을 호스팅 할 때,의 품질 값에 따라 언어 주문 Accept-Language 헤더를.

  • 호스팅은 어떤 지역 및 국가 하위 태그 떨어 Accept-Language 는 "국제화 내용"하위 폴더 이름의 언어 코드는이 하위 태그를 포함 할 수 있도록 헤더를. 예를 들어, 당신은 사용할 수 없습니다 es-419 또는 es-US 하위 폴더 이름의 언어 코드로,하지만 당신은 사용할 수 있습니다 es .

    특정 지역 또는 국가 콘텐츠를 제공하려는 경우 지원하려는 특정 언어 국가 콘텐츠가 포함된 하위 폴더를 만들 수 있습니다.

"i18n 콘텐츠" 우선순위

i18n 다시 쓰기를 설정하면 호스팅은 다음 우선 순위에 따라 콘텐츠를 제공합니다.

  1. 로 시작 예약 네임 스페이스 /__/* 패스 세그먼트 (segment)

  2. 구성 리디렉션

  3. 정확히 일치하는 정적 콘텐츠

    1. 언어 코드 + 국가 코드 (예를 들어, 콘텐츠 fr_ca/ )
      순서는 요청의 각 언어에 대한 품질 값은 다음과 Accept-Language 헤더를.

    2. 국가 코드 만 (예를 들어, 콘텐츠 ALL_ca/ )

    3. 단지 언어 코드 (예를 들어, 콘텐츠 fr/ 또는 es_ALL/ )
      순서는 요청의 각 언어에 대한 품질 값은 다음과 Accept-Language 헤더를.

    4. "기본" 정확히 일치하는 정적 콘텐츠
      이것은 루트에서처럼 "국제화 내용"디렉토리 외부에있는 콘텐츠입니다 public 디렉토리.

  4. 구성 재 작성

  5. 404 취급

    1. i18n 404페이지
      이는 정확히 일치하는 정적 콘텐츠에 대해 위에 나열된 것과 동일한 우선 순위를 따릅니다.

    2. 사용자 정의 404 페이지

    3. 기본 404 페이지(Firebase 제공)

우선 순위의 예

위에서부터 예제를 계속해 보겠습니다. 동일한 예제 디렉토리와 예제 요청을 사용합니다.

  • 에 "국제화 내용"디렉토리 예는 로컬 프로젝트 디렉토리 (라고 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은 다음 순서로 요청된 페이지의 디렉토리를 검색합니다.

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404 취급

사용자에게 어떤 페이지가 제공됩니까?

  • 요청 페이지 : index.html

  • 요청 페이지 : awesome-page.html

"i18n content" 디렉토리의 이 검색 및 제공에 대해 다음 사항에 유의하십시오.

  • localized-files/ 디렉토리는 실제로는 포함되어 있지 않습니다 en_ca/ , en_ALL/ 또는 en/ 하위 폴더, 그래서 요청의 언어 - 국가 조합에 대한 일치하는 하위 폴더를 찾을 때까지 그냥 우선 순위 목록을 아래로 건너 뜁니다 호스팅.

  • 짝수하지만 localized-files/ 디렉토리를 포함하는이 es_ALL/ 하위 폴더, 위의 예 요청은 포함되지 않습니다 es 또는 es-foo 그래서 "국제화 내용"일치의이 검색되지 않습니다 호스팅, 언어 코드를 es .

  • 하위 폴더라는 fr/fr_ALL/ 사용자의 국가 및 언어 환경 설정의 관점에서 동일합니다. 그러나 두 하위 폴더가 존재하는 경우, 호스팅이 될 것입니다 fr_ALL/ 전 내용 fr/ 컨텐츠를.

국가 및 언어 헤더를 재정의하는 쿠키를 사용하여 제공되는 콘텐츠를 변경할 수 있습니다.

다음은 쿠키 재정의를 사용할 수 있는 몇 가지 방법입니다.

  • 다른 언어/국가 조합으로 기능을 테스트하여 어떤 콘텐츠가 제공되는지 확인합니다.

  • 사용자가 보는 콘텐츠를 변경할 수 있도록 합니다. 예를 들어, 다음, 언어 선택기를 구현하는 사용자 설정할 수 있습니다 firebase-language-override 따라 쿠키를.

: 이들 이름은 모두 또는 하나와 구성 쿠키 무시, 세트 쿠키 firebase-country-overridefirebase-language-override . 예를 들어, 다음 JavaScript 코드 조각 재정의 국가 코드가되게합니다 caAccept-Language 헤더로 fr,en :

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

언어 쿠키 재정의는 하위 태그나 품질 값 없이 기본 설정에 따라 쉼표로 구분된 언어 코드 목록이어야 합니다.

쿠키 재정의는 로그에 반영되지 않습니다.