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 실행파일 을 선택해서 배포 해도 함수 사용 가능 했었음.