142 lines
4.0 KiB
Python
142 lines
4.0 KiB
Python
#!/usr/bin/env python
|
|
|
|
# General libs
|
|
import re
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
# Tool libs
|
|
import utils
|
|
import conf
|
|
from objects import GameLanguage
|
|
|
|
|
|
utils.title('LANGUAGES')
|
|
if conf.SAVE:
|
|
sys.path.append('../../minecraftcodex')
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'local_settings'
|
|
from database.models import Language, LanguageString
|
|
|
|
###
|
|
# GLOBALS
|
|
###
|
|
STRINGS = []
|
|
LANGUAGES = []
|
|
LANGUAGES_STR = []
|
|
|
|
###
|
|
# LOOK FOR CORRECT JAVA FILES
|
|
###
|
|
utils.sub("Looking for languages files:")
|
|
directory_list = os.listdir(conf.LANGUAGES_PATH)
|
|
utils.echo("found %d file(s)" % len(directory_list), end='\n')
|
|
|
|
###
|
|
# GET LANGUAGES
|
|
###
|
|
try:
|
|
OLD_STRINGS = json.loads(open('strings.json').read())
|
|
except:
|
|
OLD_STRINGS = []
|
|
try:
|
|
OLD_LANGUAGES = json.loads(open('languages.json').read())
|
|
except:
|
|
OLD_LANGUAGES = []
|
|
|
|
utils.sub('Looking for dataz', end='\n')
|
|
for item in directory_list:
|
|
if '.lang' in item:
|
|
if conf.DEBUG:
|
|
print(" Now %s " % item)
|
|
|
|
language = open('%s/%s' % (conf.LANGUAGES_PATH, item))
|
|
language_obj = GameLanguage()
|
|
for line in language.readlines():
|
|
line = line.strip()
|
|
if line and 'X-Generator' not in line:
|
|
key, value = line.split('=', 1)
|
|
if key in conf.LANGUAGES_MASTER_KEYS:
|
|
# Language object
|
|
setattr(language_obj, key.split('.')[1], value)
|
|
else:
|
|
# Language String object
|
|
language_obj.add_string(key, value)
|
|
|
|
# Store for comparision
|
|
if language_obj.code == 'en_US':
|
|
if key not in STRINGS:
|
|
STRINGS.append(key)
|
|
LANGUAGES.append(language_obj)
|
|
|
|
if conf.SAVE:
|
|
for item in LANGUAGES:
|
|
try:
|
|
obj = Language.objects.get(
|
|
name=item.name,
|
|
region=item.region,
|
|
code=item.code
|
|
)
|
|
except Language.DoesNotExist:
|
|
obj = Language(
|
|
name=item.name,
|
|
region=item.region,
|
|
code=item.code
|
|
)
|
|
obj.save()
|
|
for key in item.strings.keys():
|
|
value = item.strings[key]
|
|
try:
|
|
string_obj = LanguageString.objects.get(
|
|
language=obj,
|
|
key=key
|
|
)
|
|
if string_obj.value != value:
|
|
string_obj.value = value
|
|
string_obj.save()
|
|
except LanguageString.DoesNotExist:
|
|
string_obj = LanguageString(
|
|
language=obj,
|
|
key=key,
|
|
value=value
|
|
)
|
|
string_obj.save()
|
|
|
|
|
|
# LANGUAGES
|
|
[LANGUAGES_STR.append(x.name) for x in LANGUAGES]
|
|
new_languages = len(LANGUAGES_STR) - len(OLD_LANGUAGES)
|
|
utils.info("Found %d languages (%d new)." % (len(LANGUAGES_STR), new_languages))
|
|
if len(LANGUAGES_STR) != len(OLD_LANGUAGES):
|
|
utils.sub('Modifications:', end='\n')
|
|
|
|
for lang in LANGUAGES_STR:
|
|
if lang not in OLD_LANGUAGES:
|
|
utils.sub(' + %s' % lang, end='\n', color=utils.colors.GREEN)
|
|
|
|
for lang in OLD_LANGUAGES:
|
|
if lang not in LANGUAGES_STR:
|
|
utils.sub(' - %s' % lang, end='\n', color=utils.colors.RED)
|
|
|
|
olditems = open('languages.json', 'w')
|
|
olditems.write(json.dumps(LANGUAGES_STR))
|
|
olditems.close()
|
|
|
|
# STRINGS
|
|
new_strings = len(STRINGS) - len(OLD_STRINGS)
|
|
utils.info("Found %d strings (%d new) -based on en_US-." % (len(STRINGS), new_strings))
|
|
if len(STRINGS) != len(OLD_STRINGS):
|
|
utils.sub('Modifications:', end='\n')
|
|
|
|
for string in STRINGS:
|
|
if string not in OLD_STRINGS:
|
|
utils.sub(' + %s' % string, end='\n', color=utils.colors.GREEN)
|
|
|
|
for string in OLD_STRINGS:
|
|
if string not in STRINGS:
|
|
utils.sub(' - %s' % string, end='\n', color=utils.colors.RED)
|
|
|
|
olditems = open('strings.json', 'w')
|
|
olditems.write(json.dumps(STRINGS))
|
|
olditems.close()
|