FBT + Crowdin + GitHub 통합

(Jorge Dalmendray) (12 월 22 일 , 2020)

(이전 기사)에서 설명했습니다. FBT (Facebook Translation) 프레임 워크를 React Native 애플리케이션과 통합하는 방법. 번역 과정에서 어떻게 갭이 있었는지 설명하는 기사를 마쳤습니다 : 실제 번역 그 자체입니다.

번역 과정을 좀 더 자세히 살펴 보겠습니다.

  1. 래핑하면서 코드 작성 fbt 태그의 문자열
  2. 소스 코드에서 모든 문자열을 추출하여 번역 할 준비를합니다. 이것은 fbt 라이브러리의 간단한 스크립트로 관리됩니다.
  3. GAP : 번역 할 문자열 제출
  4. GAP : 번역이 완료된 후 최대한 빨리 앱에 다시 넣을 수있는 방법이 필요합니다.
  5. 이익!

Crowdin 을 입력합니다. Crowdin은 팀의 현지화 관리를 간소화하는 클라우드 기반 솔루션입니다. 이 도구는 문자열을 관리하고 번역자를 고용하며 번역이 정확하고 앱 컨텍스트 내에서 이루어 지도록하는 도구입니다.

이 기사에서는 GitHub 저장소를 Crowdin과 통합하여 새 문자열을 자동으로 업로드하는 방법을 설명합니다. 번역 및 번역이 준비되었을 때 자동으로 Pull Request (PR)를 생성하는 방법.

FBT를 사용할 때 두 개의 간단한 스크립트를 실행하여 소스 코드에서 모든 문자열을 추출 할 수 있습니다.

  1. fbt-manifest :이 스크립트 fbt() 호출 또는 태그가 포함 된 모든 소스 파일을 찾습니다.

  2. fbt-collect :이 스크립트는 fbt-manifest 스크립트의 입력을 받고 그 안에있는 모든 파일을 살펴보고 문자열과 설명을 별도의 파일로 추출한 다음 .source\_strings.json

이 시점에서 Crowdin에게 .source\_strings.json 파일이 어디에 있는지 알려 주어야합니다. 사용자가 설정 한 일정에 따라 해당 문자열을 플랫폼에 추가하고 번역가에게 번역 할 준비가 된 새 문자열에 대해 알립니다.

Crowdin을 GitHub 저장소

  1. GitHub 저장소를 Crowdin과 통합 : 이렇게하면 R에 Crowdin repo에서 ead 한 다음 검토를 위해 PR을 제출합니다. 참고 : GitHub를 사용하지 않는 경우 기타 Crowdin 통합

을 참조하세요. a>

  • 프로젝트 루트에 crowdin.yml 구성 파일을 만듭니다. 여기에서 Crowdin에 소스 문자열을 가져올 위치와 번역을 넣을 위치를 알려줍니다. 아래 파일 내용의 예 :
  • files:
    - source: /i18n/fbt/.source\_strings.json
    translation: /i18n/fbt/translations/\%two\_letters\_code\%/translation.json

    이 구성 파일에 대한 자세한 내용은 Crowdin의 문서 를 참조하세요.

    이 시점에서 .source\_strings.json 파일은 fbt의 스크립트를 실행하여 업데이트되며, GitHub와 통합 할 때 설정 한 동기화 일정에 따라 Crowdin의 플랫폼으로 새 문자열을 가져옵니다.

    그런 다음 전문 번역 서비스를 주문할 수 있습니다. 플랫폼을 통해 또는 새 번역이 추가 될 때 기계 번역 을 사용하도록 선택합니다. Crowdin 리포지토리에 PR이 다시 생성됩니다. 이 시점에서 수동으로 변경 사항을 수락 및 병합하거나 GitHub 작업을 생성하여 변경 사항을 자동으로 수락하고 병합 할 수 있습니다!

    Crowdin 출력을 FBT 읽기 쉬운 형식으로 변환

    이전 마지막 단계 번역을 사용하여 fbt-translate 스크립트를 실행할 수 있습니다. 이 스크립트는 FBT 플랫폼이 이해하는 파일을 생성하고 결국 코드에서 설정하게 될 파일입니다.

    fbt-translate :

    "translate-fbts": "fbt-translate --translations translations/*.json --jenkins > src/translatedFbts.json"

    React에서의 사용 :

    init({
    translations: require("../translatedFbts.json"),
    hooks: {
    getViewerContext: () => viewerContext,
    },
    });

    React Native에서의 사용 :

    • React Native / Android 용 fbt-translate 스크립트의 출력을 Android 문자열 리소스 파일로 변환해야합니다. 스크립트 가이 단계에 도움이됩니다.

    "generate-android-fbt": "babel-node i18n/scripts/generate-android-localizables-executor.js"

    실행 후 Android 애플리케이션을 실행할 준비가되었습니다.

    • React Native / iOS의 경우 fbt-translate 스크립트를 iOS 문자열 리소스 파일 에 추가합니다.이를 달성하기위한 스크립트는 없지만 항상 기여할 수 있습니다. 🙂

    최종 생각

    이 시점에서 앱에서 문자열을 자동으로 추출 할 수 있어야합니다. Crowdin에 업로드하고 번역이 준비되면 PR을 받으십시오. 아시다시피이 프로세스의 몇 단계는 수동입니다. 몇 가지 제안 :

    실행할 GitHub 작업, CircleCI 단계 (또는 CI / CD에 사용하는 모든 단계)를 만듭니다.

    • fbt-manifestfbt-collect
    • Crowdin이 생성 한 PR 자동 병합
    • fbt-translate Crowdin PR이 병합 된 후
    • Android의 경우 fbt-translate 스크립