mirror of
https://github.com/clockworkpi/launcher.git
synced 2025-12-12 17:58:50 +01:00
117 lines
3.3 KiB
Python
117 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
import os
|
|
import pygame
|
|
import config
|
|
import ConfigParser
|
|
from util_funcs import FileExists
|
|
from fonts import fonts
|
|
|
|
class CaseConfigParser(ConfigParser.SafeConfigParser):
|
|
def optionxform(self, optionstr):
|
|
return optionstr
|
|
|
|
class LangManager(object):
|
|
"""
|
|
"""
|
|
|
|
_Langs = {}
|
|
_Config = None
|
|
_ConfigFileName = "00_English.ini" ## double % to escape
|
|
_CJKMode = False
|
|
|
|
def __init__(self):
|
|
self.Init()
|
|
|
|
def Init(self):
|
|
if not self._Langs:
|
|
self.SetLangs()
|
|
|
|
def UpdateLang(self):
|
|
self._Langs = {}
|
|
self.SetLangs()
|
|
|
|
def IsCJKMode(self):## in MultiLabel, latins seped by white spaces,CJK no needs for that
|
|
latins = ["English"]
|
|
self._CJKMode = True
|
|
|
|
for i in latins:
|
|
if i in self._ConfigFileName:
|
|
self._CJKMode= False
|
|
break
|
|
|
|
return self._CJKMode
|
|
|
|
def SetLangs(self):
|
|
self._Config = CaseConfigParser()
|
|
#print("SetLangs")
|
|
fname = ".lang"
|
|
|
|
try:
|
|
with open(fname, "r") as f:
|
|
self._ConfigFileName = f.read()
|
|
self._ConfigFileName = self._ConfigFileName.strip("\r\n ")
|
|
#print(self._ConfigFileName)
|
|
except:
|
|
os.system("touch .lang")
|
|
print("read lang failed")
|
|
None
|
|
|
|
|
|
if self._ConfigFileName == "" or FileExists("langs/"+self._ConfigFileName) == False:
|
|
#print("miss file")
|
|
self._ConfigFileName = "00_English.ini"
|
|
else:
|
|
pass
|
|
#print("has file",self._ConfigFileName)
|
|
|
|
|
|
try:
|
|
self._Config.read("langs/"+self._ConfigFileName)
|
|
except Exception, e:
|
|
print("read lang ini error %s" % str(e))
|
|
return
|
|
else:
|
|
if "Langs" in self._Config.sections():
|
|
lang_opts = self._Config.options("Langs")
|
|
for i in lang_opts:
|
|
try:
|
|
self._Langs[i] = self._Config.get("Langs", i)
|
|
except Exception, e:
|
|
print("error %s" % str(e))
|
|
continue
|
|
|
|
def Tr(self,english_key_str):
|
|
#print("english_key_str", english_key_str)
|
|
if english_key_str in self._Langs:
|
|
#print( self._Langs[english_key_str] )
|
|
return self._Langs[english_key_str].decode("utf8")
|
|
else:
|
|
return english_key_str
|
|
|
|
def TrFont(self,orig_font_str):
|
|
try:
|
|
font_size_number = int(filter(str.isdigit, orig_font_str))
|
|
except TypeError:
|
|
font_size_number = int(filter(unicode.isdigit, orig_font_str))
|
|
if font_size_number > 120:
|
|
raise Exception('font string format error')
|
|
|
|
if "English.ini" in self._ConfigFileName:
|
|
return fonts[orig_font_str]
|
|
else:
|
|
if font_size_number > 28:
|
|
raise Exception('cjk font string format error '+ str(font_size_number))
|
|
|
|
return fonts["notosanscjk"+str(font_size_number)]
|
|
|
|
##global MyLangManager Handler
|
|
MyLangManager = None
|
|
|
|
def InitMyLangManager():
|
|
global MyLangManager
|
|
if MyLangManager == None:
|
|
MyLangManager = LangManager()
|
|
|
|
|
|
InitMyLangManager()
|