ローカル(ローカライズ)Googleスプレッドシートによる自動化

3499 ワード

ローカル(ローカライズ)Googleスプレッドシートによる自動化


概要


ローカライズ(以下「ローカライズ」)の要素は、仕事の複雑さとは関係なく、かなり面倒でコミュニケーションが難しい部分です.
この文章は、他のプロジェクトや後続の開発のコストと時間を短縮するためのより良い方法があるかどうかについてです.
これは概念的に複雑ではない方法であり、実装もそれほど難しくないため、フロントエンドの開発者でなくても、翻訳プロセスを理解するために一度読んでほしいと考えています.

従来の方法


現在進行中のプロジェクトで実装されている地域化.
ハングルテキストをuserTranslate()というhook(関数)に挿入し、関数を使用して言語設定に基づいて翻訳済みテキストを返します.
上記の手順では、必要な要素は、入力テキストと一致する各言語固有のテキストです.
これは、各json(またはjsのobject)からロードする方法です.
en.json
{
    "원본 텍스트" : "번역될 텍스트",
    "커뮤니티" : "Communiy",
    "스토어" : "Store"
}
上記の例に示すように、en.json(英語)、jp.json(日本語)などが存在しなければならないため,各jsonオブジェクトを生成する.(번역해야할 텍스트 * 지원해야할 언어의 갯수)コピーPasteを繰り返すのに多くの時間がかかりました.
また、自動完了のサポートが得られないため、エラーが発生する可能性があり、開発時間が増加します.
(キー値を変数化して1つの位置に格納して変数をインポートする方法を使用していますが、他の問題もあります.ここではこれらの問題については説明しません.)

構想する


上記各言語を含むJSONを作成するために、Googleスプレッドシートを参考にしました.
以前、データテーブルをexcelに保存する機能を作ったのを覚えています.
スプレッドシートからハングル文字を抽出してゼロ、日和のjsonを作成するのは難しくないと思いますので、この方法で見ることにしました.

用意する。


まず、クラウドコンソールに接続して、スプレッドシートにアクセスできるbotを作成する必要があります.
Google Cloud Platform
アイテムを作成したら、サイドバーの[APIとサービス]をクリックすると、次の画面が表示されます.

「ユーザー認証情報の作成」でサービスアカウントを作成します.
また、APIを使用する場合は、ロボットのアカウント情報を検証する必要があります.
作成したサービスアカウントの詳細に入り、鍵を追加します.新しい鍵を作成するjsonファイルとして保存されていることを確認します.
以降のスプレッドシートに対応するサービスアカウントを追加した場合は、APIを使用するときに、対応するロボットにアクセスしてデータを取得できます.
spreadsheet-sync.js
const fs = require('fs');
const path = require('path');
const { GoogleSpreadsheet } = require('google-spreadsheet');
const creds = require(서비스 계정 인증정보 json);

const doc = new GoogleSpreadsheet(스프레드 시트의 아이디값);

(async () => {
  await doc.useServiceAccountAuth(creds);
  await doc.loadInfo();
  const sheet = doc.sheetsByTitle[이용할 시트의 이름];
  // 참조할 시트의 제목 ( sheetsByIndex 등으로도 가능합니다 )
  const rows = await sheet.getRows();
  console.log(rows);
  const en = {};
  const jp = {};
  const cn = {};
  const tw = {};
  for (const row of rows) {
    en[row['한']] = row['영'];
        // 선택한 시트의 컬럼 이름을 이용
    jp[row['한']] = row['일'];
    cn[row['한']] = row['중(간)'];
    tw[row['한']] = row['중(번)'];
  }
  // fs.writeFileSync('../en.json', JSON.stringify(en, null, 4));
})();
モジュールの作成を完了するには、上記の例を参照してください.
次に配置するコンストラクションスクリプトで、スクリプトを実行してからコンストラクションスクリプトを実行すると完了します.

発展点

  • バージョンが生成されるたびに対応するJSONが生成されるため、このスクリプトは1日に数回実行されます.
  • を防止するために、devバージョンでテスト時に1回実行し、テストバージョンにプッシュし、マージ時に実行します.gitignoreファイルをテストバージョンで実行しないように調整できます.
  • などのパブリケーション時に再実行するだけです.
  • 翻訳可能なテキストがない場合、for文をオプションのリンクとして파파고 API 혹은 구글 APIにインポートすればよい(この場合、さらに検証するために記録する必要がある)
  • .
    for (const row of rows) {
        en[row['한']] = row['영'] || fetchFromPapago(row['한'], 'en');
            // 선택한 시트의 컬럼 이름을 이용
        jp[row['한']] = row['일'] || fetchFromPapago(row['한'], 'jp');
        cn[row['한']] = row['중(간)'] || fetchFromPapago(row['한'], 'cn');
        tw[row['한']] = row['중(번)'] || fetchFromPapago(row['한'], 'tw');
      }