2021
07.04

NDC 홈페이지 링크
https://ndc.nexon.com/session/sessionView?sessNo=100007303

 

 

1. 클라이언트 수준에서의 대응

1) 개행 없는 언어 대응

 - 생각보다 많은 언어가 띄어쓰기가 없다.

   -> 런타임에 글자폭을 계산해서 개행하거나, 형태소 분석으로 공백의 폭이 0인 반각 공백을 미리 삽입하는 방법들을 생각해 볼 수 있다.

 - 태국어는 띄어쓰기는 물론 물음표와 마침표도 없다!

 

2) 언어별 폰트

 - 같은 한자라도 한/중/일 에서 쓰는 방식이 다른데, 유니코드상 코드 포인트가 동일하다!

 - 때문에 언어별로 폰트를 다르게 써야한다.

   (한국은 한자를 많이 사용하는 편이 아니라 발표자는 한글과 번체를 NotoSansCJK_tc로 같이 사용했다고 함)

 - 한문이 들어간 폰트는 무겁기 때문에 필요할 때 로딩할 수 있게 하자.

 - 러시아어 같은 언어는 번역시 텍스트양이 1.5배 정도 늘어난다.  

 

3) 텍스트가 포함된 이미지 처리

 - 말 그대로 최대한 넣지마라. 텍스트 영역으로 빼라.

 

4) 금칙어 적용 범위

 - 모든 언어를 같은 금칙어를 사용하는 경우 

   -> 엉뚱하게 아랍어 금칙어에 한글 채팅이 금칙어로 걸린다.

 - 언어별로 금칙어 분리

   -> 다른 언어권이 같이 채팅할경우 한쪽만 금칙어가 걸린다.

 

5) 닉네임 관련 처리

 - 보통 특수문자를 제외하는 경우가 많다. 하지만 특수문자의 범위가 어디까지인가?

 - 입력중일때와 입력이 끝났을 때의 규칙이 다름에 주의하자. (천지인 대응)

 

 

2. 파일 포맷 선정

1) 파일 포맷 선정

 - 작업용 포맷은 Json 추천

  -> git이 line-by-line으로 인식하기 때문에 충돌 최소화

 - 최종 포맷은 TSV, CSV, BSON 추천

  -> Json은 구분자 때문에 용량낭비가 심하다.

 

2) 인코딩 이슈

 - UTF-16 LE (유니코드)를 추천

  -> 한중일 언어를 2Byte로 표현가능. (UTF-8은 3Byte)

 - Git과 텍스트 편집기의 기본인코딩은 UTF-8 사용

 - 편집기는 Visual Studio Code를 추천 (파일 인코딩 자동감지)

 

3) 부가정보 기록

 - 화자 (화자와 대상에 따라 어투)

 - 텍스트 순서 (정렬용 인덱스)

 - UI 너비 (UI상 몇자까지 허용)

 - 타겟 버전 (이번 패치에 포함?)

 

 

3. 개발환경 구축

1) 긴급 패치용 텍스트 분리

 - 텍스트는 패치 직전까지 빈번하게 수정된다.

 - 긴급패치를 할 수 있도록 미리 별도로 텍스트 분리

  -> 전체텍스트는 에셋번들로 관리되지만, 버전관리 & 암호화 하지 않는 텍스트 패치를 하나 더 제공  

 

2) 텍스트 포맷팅

 - 한글 조사처리에는 KoreanFormatter를 사용

 - https://github.com/tcaesvk/KoreanFormatInfo/blob/master/ConsoleApplication/Program.cs

 - 단, 조사처리 부분도 번역하지 않도록 번역 요청전에 미리 협의해야한다.

 

 

4. 기타 글로벌 서비스 문제

 1) 중국관련

  - 액체류 표현 금지, 해골 금지

 

 2) 일본관련

  - 자금 결제법 관련

   -> 동일 아이템을 구성시 보너스는 50%까지 가능

   -> 다른 아이템 섞을 시, 보너스는 30%까지 가능

   -> 보너스는 UI상 반드시 구분

   -> 유료 주얼과 무료 주얼은 DB상 반드시 구분

 

 

 

COMMENT