Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

국제화(i18n) 재작성 구성

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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

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

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

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

  • 프랑스어를 선호하는 캐나다 사용자에게 캐나다 프랑스어 콘텐츠를 제공합니다.
    예: 캐나다 프랑스어 문구와 캐나다 관련 기능(예: 휴일 테마)이 포함된 홈페이지

Firebase 호스팅은 IP 주소에서 사용자의 국가를 결정하고 Accept-Language 요청 헤더(일반적 으로 웹 브라우저에서 자동으로 설정됨 )에서 사용자의 언어 환경설정을 결정합니다.

i18n 재작성 설정

호스팅 사이트에 대해 i18n 재작성을 설정하려면 모든 현지화된 콘텐츠에 대해 "i18n 콘텐츠" 디렉터리를 생성한 다음 i18n 속성을 firebase.json 파일에 추가하여 새 "i18n 콘텐츠" 디렉터리를 가리켜야 합니다.

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

  1. 로컬 앱 디렉토리의 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
    

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

    • languageCode_countryCode : 해당 언어 기본 설정 해당 국가 코드가 있는 사용자 전용 콘텐츠를 포함합니다.

    • languageCode : 해당 언어 기본 설정이 있는 사용자 전용 콘텐츠를 포함하지만 해당 콘텐츠는 국가별로 다르지 않습니다. 기본적으로 languageCode_ALL 과 동일

    이러한 코드에 대한 자세한 내용은 아래의 국가 및 언어 코드 하위 섹션을 참조하십시오. ALL (대소문자 구분) 값을 사용하여 모든 국가(예: es_ALL/ ) 또는 모든 언어(예: ALL_ca/ )를 나타낼 수 있습니다.

    하위 폴더의 파일은 public 디렉터리나 다른 하위 폴더에 유사한 파일이 있을 필요가 없습니다. 언어 및/또는 국가에 완전히 특정한 콘텐츠를 만들 수 있습니다.

  2. 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 값의 선행 및 후행 슬래시는 선택 사항입니다.

  3. 호스팅 사이트에 "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 는 사용할 수 있습니다.

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

"i18n 콘텐츠" 우선 순위

i18n 재작성을 설정하면 호스팅은 다음 우선순위에 따라 콘텐츠를 제공합니다.

  1. /__/* 경로 세그먼트로 시작하는 예약된 네임스페이스

  2. 구성된 리디렉션

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

    1. 언어 코드 + 국가 코드(예: fr_ca/ 의 콘텐츠)
      순서는 요청의 Accept-Language 헤더에 있는 각 언어의 품질 값을 따릅니다.

    2. 국가 코드만(예: ALL_ca/ 의 콘텐츠)

    3. 언어 코드만(예: fr/ 또는 es_ALL/ 의 콘텐츠)
      순서는 요청의 Accept-Language 헤더에 있는 각 언어의 품질 값을 따릅니다.

    4. "기본" 완전 일치 정적 콘텐츠
      이것은 public 디렉터리의 루트와 같이 "i18n 콘텐츠" 디렉터리 외부에 있는 콘텐츠입니다.

  4. 구성된 재작성

  5. 404 처리

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

    2. 맞춤 404 페이지

    3. 기본 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은 다음 순서로 요청된 페이지의 디렉토리를 검색합니다.

  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 콘텐츠" 디렉토리의 이 검색 및 제공에 대해 다음 사항에 유의하십시오.

  • 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-overridefirebase-language-override 이름 둘 다 또는 둘 중 하나로 쿠키를 설정합니다. 예를 들어 다음 JavaScript 코드 조각은 국가 코드를 ca 로 재정의하고 Accept-Language 헤더를 fr,en 으로 재정의합니다.

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

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

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