ローカル(ローカライズ)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.jsconst 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));
})();
モジュールの作成を完了するには、上記の例を参照してください.
次に配置するコンストラクションスクリプトで、スクリプトを実行してからコンストラクションスクリプトを実行すると完了します.
発展点
{
"원본 텍스트" : "번역될 텍스트",
"커뮤니티" : "Communiy",
"스토어" : "Store"
}
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));
})();
파파고 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');
}
Reference
この問題について(ローカル(ローカライズ)Googleスプレッドシートによる自動化), 我々は、より多くの情報をここで見つけました https://velog.io/@red/로컬라이징-지역화-구글-스프레드-시트로-자동화하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol