개발프로그램2019. 3. 6. 18:03

Locale File Manager

 

i18n 의 json 으로된 다국어 팩을 관리해주는 프로그램입니다.

 

 

 

 

언어별로 분리된 JSON 형식의 파일을 읽어서, 그리드에 통합하여 보여주고, 행단위로 추가/수정/삭제하여,

json 파일로 다시 저장이 가능합니다.

 

엑셀로 Export 하여, 번역가에게 전달하여, 엑셀에서 바로 번역 작업을 하고,

Import 할 수 있습니다.

 

편집이 끝난후, write 하게 되면, 각각의 언어별로 분리하여, json 파일로 저장해 줍니다.

 

 

 

각 언어별 json 파일은 아래와 같이 폴더명이 언어단축코드로 되어 있으며, 안에 .json 또는 .txt 으로 되어 있습니다.

프로그램에서 저장을 하면, 기존 로딩된 파일과 같은 이름으로 저장을 하며, 이때, 기존 파일은 .bak 파일로 백업합니다.

 

 

 

 

json 파일의 형식은 json object 형식에 맞게 되어 있어야 하며,

아래와 같이 2 depth 또는 3 depth 까지 지원합니다.

 

 

 

 

편집 방법은 그리드의 셀안에서 바로 수정이 가능하며,

오른쪽 편집 FORM 에서 수정할 수 있고, 추가도 가능합니다.

 

불필요한 행의 삭제는 그리드에서 행단위로 선택 후 Delete 키를 누르면 삭제가 됩니다.

 

 

또한 구글번역기 또는 네이버 파파고 번역기를 이용하여, 바로 번역을 해볼 수 있습니다.

 

 

 

 

편집창의 TEXTBOX 를 더블클릭하면, 자동으로 번역이 됩니다.

 

번역결과를 TEXTBOX 로 가져오기 위해서는 마우스로 번역텍스트를 긁어서 (DRAG) TEXTBOX 로 떨궈놓기 (DROP) 만 하면 됩니다.

 

 

번역가가 따로 있을경우, .json 파일로 보내주고 편집하라고 하면, 혼란이 생기기 때문에,

Export Excel 로  .xls 파일을 보내주고, 번역을 요청하십시요.

번역이 완료된 .xls 파일을 Import Excel 해서 저장하시면, 언어  단위 개별 .json 으로 저장이 됩니다.

 

 

 

ps. 윈도우10 이상, 닷넷 프레임웍 4.7.2 이상이 설치되어 있어야 실행됩니다.

 

 

LocaleFileManager_v3_3_3.zip
3.31MB

 

 

압축을 풀고 LocaleFileManager.exe 를 실행하세요.

readme.txt 파일을 읽어주세요.

 

 

 

Release Note

 

v1.6 - 2020.03.31 Release

- 네이버 파파고, 구글 번역기 선택하여 번역할 수 있는 기능 추가

 

 

본 프로그램의 첨부파일을 다른곳에 게시하실 수 없습니다. 
블로그 링크를 올리거나 소개하는 것은 전혀 상관이 없습니다.
카페가 블로그 등에 많은 소개 부탁드립니다.

 

 

Posted by 헝개
개발팁2018. 11. 7. 11:58

자바스크립트에서 다국어 지원을 위한, 라이브러리로 i18n 을 사용하다면,


다국어 text 정의는, 언어 key 와 언어 text 쌍의 json 파일로 관리가 된다.


i18n.t('key.key2.key3')


특정 key 를 현재 언어의 다국어 text 로 변환할때, 위와 같이 javascript 에서 사용하거나,


<span data-i18n='key.key2.key3'></span>


위와 같이 태그 안에서 직접 key 를 호출할 수 있다.



만약, 현재언어의 key.key2.key3 라는 키가 없다면, 대체 text 가 출력되거나, 기본 언어(default language) 의 key 를 찾아서, text 를 출력하게 된다.



누락된 key 가 있는지, 각 언어마다 빠진 데이터가 있는지를 찾아내기는 힘든일이다.


이때, 누락된 데이터가 나오면, 자동으로 알려준다면, 얼마나 쉽게 빠진 text 를 추가할 수 있겠는가..


i18n의 sendMissing 이라는 기능을 이용하면, 쉽게 누락데이터를 관리할 수 있다.



i18n 초기화 함수인 $.i18n.init 의 option 으로 아래와 같은 코드를 작성하면 된다.



        sendMissing: true,              // 번역데이터가 없을때 서버에 전송한다.

        sendMissingTo: 'fallback',

        resPostPath: '/System/I18nMissingKey_Insert'    // 번역데이터가 없을때 서버에 POST 로 넘겨주는 URL


위의 코드 의미는, 누락데이터가 발생했을떼, 웹서버의 /System/I18nMissingKey_Insert 주소로 POST (포스팅) 을 하게 된다.


웹서버는 닷넷이든 자바이든 상관없이, form 방식의 post 데이터를 받아서 처리하면 된다.


실제 서버로 전송되는 데이터는 name / value 의 form data 이고, 아래와 같은 형태이다.


key1.key2.key3=기본text


FORM 데이터의 name 값이 정해진 값이 아니라, key 값을 그대로 전송하기 때문에, form 객체에서 첫번째 항목을 읽어서 처리하면 되겠다.


실제 ASP.NET MVC 에서 Form ModelBinder 로 받아서 첫번째 항목을 DB 에 저장하는 소스이다.

사용하는 언어에 맞게 코딩하면 된다.



        [HttpPost]

        public JsonResult I18nMissingKey_Insert([ModelBinder(typeof(FormRequestModelBinder))] JObject reqParam)

        {

            dynamic param = new

            {

                TKey = ((Newtonsoft.Json.Linq.JProperty)(reqParam.First)).Name, // Request 값중에 첫번째 값을 가져온다.

                DefaultValue = reqParam[((Newtonsoft.Json.Linq.JProperty)(reqParam.First)).Name].ToString(),

                LangCode = this.GetCurrentLang()

            };


            SpotResult result = (new Biz_I18nMissingKey()).Insert(param);


            return Json(result);

        } 

 



아래 화면은 실제 DB 에 저장된, 누락데이터를 조회하고, 등록하는 기능이다.

각 언어별 json 파일로 분리해서 저장하고 있다.




위 코드는 누락된 i18n 데이터만을 관리하고 있지만,


실제, i18n 으로 번역 key / text 를 각각의 json 파일로 관리하는것은 쉽지가 않다.


이를 편하게 관리하기 위해, 각각의 json 파일을 merge 해서, 하나의 datatable 로 관리하도록 한 화면이다.




Posted by 헝개