728x90
반응형
- 본 내용은 과거 번역 파일 정리 자동화 프로그램 작업에 대한 업무 일지이다.
시작
- 회사에서 서비스에 사용되는 다국어 데이터의 검수 및 정리를 위한 액셀 파일 필요
- 수기로 작업하던 방식에 불만을 갖게 되어, 나도 모르게 자동화 프로그램을 만들어주겠다고 선언해 버렸다
- 기능 정리를 해 보면 아래와 같다.
- 번역 파일을 액셀파일로 만들고, 수정 뒤에 다시 액셀파일을 번역 파일 생성해 주는 프로그램 각각을 만들어야 할 것으로 판단하였음
- 파일 뿐만 아니라, DB의 데이터도 처리해야 해야 했음
- 복기하는 겸, 그 내용의 일지를 옮겨 적어본다.
액셀 파일 생성 프로그램 - 번역 파일 -> 하나의 액셀 파일
- 다국어 데이터를 사용하는 서비스는 총 3개
- 파일들은 백엔드에서 사용하는 파일 / 프론트에서 사용하는 파일 / DB 에서 사용하는 파일 각각은 front / back / DB 폴더 안에 위치
- 프론트에서 사용하는 다국어는 json 파일로 관리되고, 백엔드에서는 .properties 파일과 DB로 관리됨
- properties 파일: <단어> = <번역된 단어> 형태로 관리됨
- 기능에 따라 폴더가 구분되어있음. 이 폴더명을 back_<폴더명> 명으로 사용
- ko.properties, en.properties로 파일이 나뉘어져 있다.
- 두 파일은 같은 key를 공유하고 있기 때문에, 하나의 시트에 합쳐서 보여질 수 있게 한다.
- key, ko, en 으로 칼럼을 잡았다.
- json 파일: {"key1": {"key2": {"단어": "번역내용"}}} 형태로 관리됨
- key2 아래에 Depth 가 최대 두개까지 더 들어갈 수 있다.
- 파일은 한국어 ko.json과 en.json 두가지로 나뉘어지고, 두 파일을 하나의 sheet 에서 보여주게끔 진행해야 함
- sheet명은 front_json 으로 잡음
- 따라서 First, Second, Thir, Fourth, Ko, En 을 칼럼으로 잡았다.
- DB: Sequential 한 id 값이 Primary Key 이고, ko 필드에 한국어 / en 영어 데이터가 저장되어 있음
- 프로그램 실행 시, DB 에서 데이터 조회
- 테이블 명을 db_<테이블명> 명으로 잡음
- id, ko, en 으로 칼럼명을 잡았다.
- properties 파일: <단어> = <번역된 단어> 형태로 관리됨
번역 파일 재생성 - 하나의 액셀 파일 -> 기존 폴더 구조에 맞게 번역 파일로 분리
- 액셀 파일에 저장 및 수정이 되어 전달 받았을 때, 다시 번역 파일 생성 및 데이터 업데이트/삽입 프로그램
- json, properties 파일과 DB 내용을 다시 업데이트 해 주기
- sheet 명의 prefix에 따라, front / back / db 로직으로 분리
- 다시 생성한 번역 파일들은 dist 폴더 아래에 저장
- properties 파일 - dist폴더 아래에 prefix(back)으로 디렉토리 생성 후 그 아래에 파일 저장
- 각각 시트명에 대한 폴더 생성
- ko / en 칼럼들은 en.properties / ko.properties 파일로 분리 시켜 저장
- <key칼럼> = <번역 내용> 으로 데이터 생성해서 저장
- json 파일 - dist 폴더 아래에 prefix(front)으로 디렉터리 생성 후 그 아래에 파일 저장
- ko 칼럼은 ko.json 파일로, en 칼럼은 en.json 파일로 저장
- First, Second, Third, Fourth 칼럼들은 각각 json의 키깂으로 사용.
- DB 데이터 - 해당 데이블에 데이터 업데이트 / 삽입
- id 값을 PK 로 사용하고 있기 때문에, INSERT INTO ON DUPLICATE KEY 로 쿼리
- 실 사용 서버에 적용시키기 전 개발 서버의 DB에 적용
설계
- 언어는 Golang으로 선택. 실행 파일을 빌드해서 넘기기에 용이하며, 여러 OS 에서 실행가능함
- 번역 파일들은 그 폴더 채로 assets 폴더 안에 옮겨두고 프로그램 실행하면 읽고 각 폴더명에 맞게 sheet 생성 및 데이터 저장
- 폴더 없이 가장 상위 레벨 디렉토리의 파일은 default 라는 시트명 안에 저장
- DB 데이터들은 데이터 조회 후, 테이블명을 sheet 명으로 지정하고 id - ko - en 형식으로 데이터 저장
- 액셀 파일들은 하나의 파일 안에 모든 데이터가 저장되어야 함
- 처리가 완료되면, 프로그램은 종료되고 실행 파일과 같은 디렉토리에 액샐파일 생성
728x90
반응형
'기록 > 업무일지' 카테고리의 다른 글
[업무일지] 오케스트레이션 관련 제안 (1) | 2024.11.26 |
---|---|
[업무일지] 서버 구성 관련 제안 정리 (1) | 2024.11.25 |
[업무일지:번역파일] 액셀 자동화 업무일지 - 3 property 데이터 저장 (1) | 2024.11.11 |
[업무일지:번역파일] 액셀 자동화 업무일지 - 2 json 파일 읽기 (2) | 2024.11.08 |