Excel의 문장 관리 파일에서 Android/iOS의 문장 데이터 만들기

14760 단어 AndroidPythoniOS

하고 싶은 일


Android/iOS 응용 프로그램을 동시에 개발하는 상황에서 문장에 차이가 생기지 않도록 문장 관리 파일을 따로 만들 생각입니다.이번에는 Excel 기술 문언으로 파일을 관리하고 안드로이드/iOS의 문언 데이터를 만들어 보려고 합니다.다음은 MacOS High Sierra 환경입니다.

외부 사양


입력 데이터: Excel 파일
출력 데이터:string.xml(Android)、Localizable.settings(iOS)
기능:
  • Excel에서 파일을 가져온 후 위의 문장 데이터를 출력합니다
  • ja, en 등의 언어 설정 출력과 언어에 대응하는 문장 데이터
  • 소프트웨어 사용


    xlrd라는 python 라이브러리를 사용하면python으로 Excel 파일을 만들 수 있습니다.
  • python
  • xlrd https://xlrd.readthedocs.io/en/latest/
  • $ pip install xlrd
    

    파일 가져오기


    입력한 Excel 파일의 형식은 다음과 같습니다.문장의 ID와 일본어, 영어의 순서 배열의 형식.

    Excel의 문자 코드는 UTF16LE입니다.

    Excel 파일 가져오기


    xlrd를 사용하여 Excel 파일에서 데이터를 읽습니다.Excel 파일은 다음 함수를 통해 읽을 수 있습니다.
    import xlrd
    
    wb = xlrd.open_workbook('ファイルパス', encoding_override='utf_16_le')
    
    UTF16LE의 경우 지정하지 않아도 되지만 이전 Excel 파일을 열 때는 UTF16LE가 아니므로 인코딩을 지정해야 합니다.
    https://xlrd.readthedocs.io/en/latest/unicode.html
    Excel 파일에서 워크시트를 여는 방법은 다음과 같습니다.
    https://xlrd.readthedocs.io/en/latest/api.html#module-xlrd.book
  • sheet_by_index(sheetx)
  • sheet_by_name(sheet_name)
  • 이번에는 이름으로 자리를 열겠습니다.입력 데이터에서 작업표의 이름은'strings'입니다.
    sheet = wb.sheet_by_name('strings')
    
    Excel 파일 경로와 언어 ("ja", "en") 를 지정한 후 문장 데이터가 생성된 키의 목록과 데이터 목록을 얻을 수 있는 클래스는 다음과 같습니다.
    class StringBase:
        def __init__(self, input_document, lang):
            self.input_document = input_document
            self.lang = lang
    
        def parse_values_by_language(self, sheet):
            titles = sheet.row_values(0)
            col = 0
            for title in titles:
                if title == self.lang:
                    values = sheet.col_values(col)
                    del values[0] # remove title of colomn values                                                                                                                                                    
                    return values
                else:
                    col = col + 1
            return null
    
        def parse_strings(self):
            wb = xlrd.open_workbook(self.input_document, encoding_override='utf_16_le')
            sheet = wb.sheet_by_name('strings')
            keys = sheet.col_values(0)
            del keys[0] # remove title of colomn values                                                                                                                                                              
            values = self.parse_values_by_language(sheet)
            if len(keys) != len(values):
                print 'Invalid String Base Excel File !!'
                return null,null
            return keys, values
    
    

    Android를 문서 파일로 내보내기


    Android는string입니다.xml은 출력 파일입니다. 위의 문장 키와 데이터 목록에서 XML 파일을 만드는 클래스는 다음과 같습니다.python2.7과에서 하는 일도 있고 UTF8을 위해 encode를 합니다.
    class AndroidFile:
        def __init__(self, keys, values):
            self.keys = keys
            self.values = values
    
        def output_string_file(self):
            f = open('string.xml', mode='w')
            f.write('<resources>\n')
            for i in range(len(keys)):
                key = keys[i].encode('utf-8')
                value = values[i].encode('utf-8')
                f.write('    <string name=\"' + key + '\">' + value + '</string>\n')
            f.write('</resources>\n')
            f.close
    
    출력 파일은 다음과 같이 출력됩니다.
    <resources>
        <string name="app_name">アプリケーション名</string>
        <string name="search">検索</string>
        <string name="search_description">デバイスを検索します</string>
        <string name="search_note">デバイスがスマートフォンから遠い場合は見つかりません。</string>
        <string name="next"></string>
        <string name="prev"></string>
    </resources>
    

    iOS를 문장 파일로 내보내기


    iOS 응용 프로그램의 문장 파일은 Localizable입니다.strings이지만 문장 키와 데이터 목록에서 문장 파일을 만드는 클래스를 만들었습니다.
    class IOSFile:
        def __init__(self, keys, values):
            self.keys = keys
            self.values = values
    
        def output_string_file(self):
            f = open('Localizable.strings', mode='w')
            for i in range(len(keys)):
                key = keys[i].encode('utf-8')
                value = values[i].encode('utf-8')
                f.write('\"' + key + '\" = \"' + value + '\";\n')
            f.close
    
    출력 파일은 다음과 같습니다.
    "app_name" = "アプリケーション名";
    "search" = "検索";
    "search_description" = "デバイスを検索します";
    "search_note" = "デバイスがスマートフォンから遠い場合は見つかりません。";
    "next" = "次";
    "prev" = "前";
    

    끝날 때


    상기 도구를 통해 문장의 관리 자체는 Excel로 진행되며 거기에서 안드로이드, iOS의 문장 파일을 만들 수 있다.

    좋은 웹페이지 즐겨찾기