[PYTHON] Skript zum Konvertieren zwischen Xcode-Sprachdateien und tabulatorgetrenntem Text

Ein Skript, das Xcode-Sprachdateien (Localizable.strings) in einfach zu handhabenden tabulatorgetrennten Text (tsv) konvertiert. Bisher habe ich Sprachdateien mit Linguan verwaltet, aber als das Projekt riesig wurde, wurde es schwierig, es zu verwalten. Zum Verwalten mit durch Tabulatoren getrenntem Text.

Installieren des Python-Moduls

bash



pip install unicodecsv

Konvertieren Sie Localizable.strings in Localizable.tsv

i18n_po2tsv.py



import sys, re
import unicodecsv as csv
from collections import OrderedDict

#
# Default encoding
#

reload(sys)
sys.setdefaultencoding('utf8')

#
# File paths
#

tsv_path = 'Localization/Localizable.tsv'
loc_paths = 'PROJECT_NAME/PROJECT_NAME/Resources/UI/{}.lproj/Localizable.strings'

#
# Convert Localizable.strings to Localizable.tsv
#

langs = [
	'ja',
	'en',
]
rows = {}

for lang_code in langs:
	loc_path = loc_paths.format(lang_code)

	print('Reading loc file... ' + loc_path)

	lines = [line.encode('utf-8').rstrip('\n') for line in open(loc_path)]
	for line in lines:
		# print line
		pattern = re.compile(r'\"(.*)\" = \"(.*)\"')
		match = pattern.search(line)
		if match:
			loc_key = match.group(1).encode('utf-8')
			loc_str = match.group(2).encode('utf-8')
	        if loc_key in rows.keys():
	            rows[loc_key].append(loc_str)
	        else:
	            rows[loc_key] = [loc_key, loc_str]

rows_orderd = OrderedDict(sorted(rows.items()))

print('Saving tsv file... ' + tsv_path)
print('')

with open(tsv_path, 'wb') as f:
    writer = csv.writer(f, csv.excel_tab)
    writer.writerows(rows_orderd.values())

print('All done!')

Konvertieren Sie Localizable.tsv in Localizable.strings

i18n_tsv2po.py



import sys
import unicodecsv as csv
import codecs
from collections import OrderedDict

#
# Default encoding
#

reload(sys)
sys.setdefaultencoding('utf8')

#
# File paths
#

tsv_path = 'Localization/Localizable.tsv'
loc_paths = 'PROJECT_NAME/PROJECT_NAME/Resources/UI/{}.lproj/Localizable.strings'

#
# Read Localizable.tsv
#

langs = {
    'ja': {},
    'en': {},
}

print('Reading tsv file... ' + tsv_path)

with open(tsv_path, 'rb') as tsv_in:
    tsv_in = csv.reader(tsv_in, delimiter='\t')
    # next(tsv_in, None)
    for row in tsv_in:
        loc_key = row[0]
        if row[1]:
            loc_str = row[1].encode('utf-8')
            langs['ja'][loc_key] = loc_str
        if row[2]:
            loc_str = row[2].encode('utf-8')
            langs['en'][loc_key] = loc_str

#
# Save Localizable.string
#

print('')

for key, value in langs.iteritems():
    lang_code = key
    loc_path = loc_paths.format(lang_code)

    print('Saving loc file... ' + loc_path)

    with open(loc_path, 'w') as loc_out:
        loc_orderd = OrderedDict(sorted(value.items()))
        for loc_key, loc_str in loc_orderd.iteritems():
            loc_out.write('"' + loc_key + '" = "' + loc_str +  '";\n')
        loc_out.close()

    print('Done!')
    print('')

print('All done!')

Recommended Posts

Skript zum Konvertieren zwischen Xcode-Sprachdateien und tabulatorgetrenntem Text
Skript zum Konvertieren zwischen Django-Sprachdatei (PO) und tabulatorgetrenntem Text (TSV)
Methode zum Konvertieren zwischen westlichem Kalender und japanischem Kalender
Konvertieren Sie HTML in eine Textdatei
Demosaic Bayer FITS-Dateien und konvertieren sie in Farbe TIFF
Konvertieren Sie eine große Anzahl von PDF-Dateien mit pdfminer in Textdateien
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Konvertieren Sie an E-Mails angehängte PDF-Dateien in das Textformat
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
Erstellen Sie eine API zum Konvertieren von PDF-Dateien in TIF-Bilder mit FastAPI und Docker
Ich möchte horizontalen Text in vertikalen Text konvertieren und auf Twitter usw. veröffentlichen.