[PYTHON] Script pour convertir entre les fichiers de langue Xcode et le texte délimité par des tabulations

Un script qui convertit les fichiers de langue Xcode (Localizable.strings) en texte délimité par des tabulations (tsv) facile à gérer. Jusqu'à présent, je gérais des fichiers de langue avec Linguan, mais à mesure que le projet devenait énorme, il devenait difficile à gérer. Pour gérer avec du texte délimité par des tabulations.

Installer le module Python

bash



pip install unicodecsv

Convertir Localizable.strings en 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!')

Convertir Localizable.tsv en 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

Script pour convertir entre les fichiers de langue Xcode et le texte délimité par des tabulations
Script pour convertir entre le fichier de langue Django (PO) et le texte délimité par des tabulations (TSV)
Méthode de conversion entre le calendrier occidental et le calendrier japonais
Convertir le HTML en fichier texte
Démarrez les fichiers Bayer FITS et convertissez-les en TIFF couleur
Convertissez un grand nombre de fichiers PDF en fichiers texte à l'aide de pdfminer
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
Convertir un PDF joint en courrier électronique au format texte
Convertir des fichiers PDF en fichiers PNG avec GIMP
Créez une API pour convertir des fichiers PDF en images TIF avec FastAPI et Docker
Je souhaite convertir du texte horizontal en texte vertical et le publier sur Twitter, etc.