i18n
[i18n] 구글 스프레드시트를 이용해 다국어용 json 파일 export하기
킹미넴
2023. 10. 12. 11:54
다국어 작업을 json에서 text만 놓고 하기엔 불편하기에, 구글 시트로 작업하고 json파일로 뽑아낼 방법을 찾아서 적용해보았다.
1. 시트에 다국어 번역하기
- 시트에 작성한 형식에 따라 당연히 script에 작성할 코드가 약간 달라지는데, 나는 이런 형식으로 만들었다
- 완료라고 적은 부분은 번역을 완료했는지 구분하기 위해 따로 적어둔건데, 스크립트 코드를 보면 이런 부분을 거를 수 있게 예외처리를 해주어야 한다.
2. 확장프로그램 > Apps Script로 이동
- 따로 설치했던 기억은 없고 기본으로 있었다.
3. Apps Sript에 코드를 작성한다.
function getKoreanJSON() {
sheetName = 'web'
const spreadsheet = SpreadsheetApp.openById(${각자의 시트 아이디})
const sheet = spreadsheet.getSheetByName(sheetName)
var lastRow = sheet.getLastRow();
var jsonObject = {};
var currentKeyB = null;
for (var i = 2; i <= lastRow; i++) {
var keyB = sheet.getRange("B" + i).getValue().trim();
var keyC = sheet.getRange("C" + i).getValue().trim();
var valueD = sheet.getRange("D" + i).getValue().trim();
// 한국어이기 때문에 D열!
if (keyB !== "") {
currentKeyB = keyB;
jsonObject[currentKeyB] = {};
}
// 공란일때는 건너뛰고 정보가 있는 키밸류 쌍만 저장
if (keyC !== "" && valueD !== "") {
if (!jsonObject[currentKeyB]) {
jsonObject[currentKeyB] = {};
}
jsonObject[currentKeyB][keyC] = valueD;
}
}
var jsonString = JSON.stringify(jsonObject, null, 2); // 2는 들여쓰기를 의미하며 필요에 따라 조정 가능
// JSON 파일로 내보내기
var file = DriveApp.createFile("ko.json", jsonString);
}
이게 내가 쓴 시트를 기준으로, ko.json파일을 하나 뽑아내는 코드이다.
주의할 점
1. sheeName : 스프레드 시트 하단에 내가 설정한 이름을 써야한다.
2. 각자의 시트 아이디 찾는법
- 번역을 진행한 스프레드 시트 url을 보면, 적어져있다.
https://docs.google.com/spreadsheets/d/{여기에!}/edit#gid=0
3. valueD
- 내 시트를 기준으로, ko.json을 뽑는다면 당연히 value값은 D열의 문자들이 되어야 할것이다.
(영어라면 E열, 일본어라면 F열 이런식)
4. 함수별로 파일 생성
- 동시진행은 안되고, 상단에서 함수를 바꿔가며 실행을 해줘야한다.
5. 생성한 파일은, 구글 내 드라이브에 생성된다.
이 파일들을 그대로 프로젝트의 locales 파일에 넣고 이용하면 된다.
+) Apps Script를 처음 사용할때, 오른쪽 상단의 배포를 한번 진행 해야 함수가 정상 작동 되었었다.
테스트 배포-유형선택-API 실행파일 을 선택해서 배포 해도 함수 사용 가능 했었음.