From b3aea583a5286753b68f87324dd13660efb0cb8b Mon Sep 17 00:00:00 2001 From: cuu Date: Fri, 30 Nov 2018 19:08:35 +0800 Subject: [PATCH] continue translate --- .../10_Settings/Bluetooth/__init__.py | 45 ++++----- .../10_Settings/Bluetooth/net_item.py | 4 +- .../10_Settings/PowerOptions/__init__.py | 10 +- .../GameShell/10_Settings/Storage/__init__.py | 8 +- Menu/GameShell/10_Settings/Time/list_item.py | 6 +- .../Time/timezone_lib_list_page.py | 6 +- Menu/GameShell/10_Settings/Update/__init__.py | 4 +- Menu/GameShell/10_Settings/Wifi/net_item.py | 4 +- Menu/GameShell/10_Settings/Wifi/wifi_list.py | 8 +- Menu/GameShell/10_Settings/list_page.py | 4 +- Menu/GameShell/97_Music Player/list_item.py | 8 +- .../97_Music Player/mpd_spectrum_page.py | 20 ++-- .../97_Music Player/music_lib_list_page.py | 6 +- .../97_Music Player/play_list_page.py | 6 +- Menu/GameShell/98_TinyCloud/__init__.py | 13 +-- sys.py/UI/Emulator/__init__.py | 9 +- sys.py/UI/Emulator/fav_list_page.py | 11 ++- sys.py/UI/Emulator/rom_list_page.py | 11 ++- sys.py/UI/Emulator/rom_so_confirm_page.py | 9 +- sys.py/UI/confirm_page.py | 8 +- sys.py/UI/delete_confirm_page.py | 7 +- sys.py/UI/fonts.py | 94 +++++++++---------- sys.py/UI/foot_bar.py | 3 +- sys.py/UI/lang_manager.py | 71 +++++++++----- sys.py/UI/main_screen.py | 13 +-- sys.py/UI/page.py | 3 +- sys.py/UI/title_bar.py | 8 +- sys.py/langs/00_English.ini | 50 ++++++++++ sys.py/langs/01_日本語.ini | 0 sys.py/langs/02_한국어.ini | 0 sys.py/langs/03_简体中文.ini | 48 ++++++++++ sys.py/langs/04_繁体中文.ini | 0 sys.py/run.py | 4 +- 33 files changed, 316 insertions(+), 185 deletions(-) create mode 100644 sys.py/langs/00_English.ini create mode 100644 sys.py/langs/01_日本語.ini create mode 100644 sys.py/langs/02_한국어.ini create mode 100644 sys.py/langs/03_简体中文.ini create mode 100644 sys.py/langs/04_繁体中文.ini diff --git a/Menu/GameShell/10_Settings/Bluetooth/__init__.py b/Menu/GameShell/10_Settings/Bluetooth/__init__.py index 3e2e4ac..c61890c 100644 --- a/Menu/GameShell/10_Settings/Bluetooth/__init__.py +++ b/Menu/GameShell/10_Settings/Bluetooth/__init__.py @@ -22,17 +22,18 @@ from UI.scroller import ListScroller from UI.icon_pool import MyIconPool from UI.icon_item import IconItem from UI.multi_icon_item import MultiIconItem -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from UI.confirm_page import ConfirmPage from UI.info_page_list_item import InfoPageListItem from UI.multilabel import MultiLabel +from UI.lang_manager import MyLangManager from net_item import NetItem class BleForgetConfirmPage(ConfirmPage): - _ConfirmText = "Confirm Forget?" + _ConfirmText = MyLangManager.Tr("ConfirmForgetQ") def KeyDown(self,event): if event.key == CurKeys["Menu"] or event.key == CurKeys["A"]: @@ -41,7 +42,7 @@ class BleForgetConfirmPage(ConfirmPage): self._Screen.SwapAndShow() if event.key == CurKeys["B"]: - self.SnapMsg("Deleteing...") + self.SnapMsg(MyLangManager.Tr("Deleting")) self._Screen.Draw() self._Screen.SwapAndShow() @@ -68,7 +69,7 @@ class BleForgetConfirmPage(ConfirmPage): class BleInfoPageSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -93,9 +94,9 @@ class BleInfoPageSelector(PageSelector): (x,y,self._Width-4,h),self._BackgroundColor,4,0,self._BackgroundColor) class BleInfoPage(Page): - _FootMsg = ["Nav.","Disconnect","Forget","Back",""] + _FootMsg = [MyLangManager.Tr("Nav"),MyLangManager.Tr("Disconnect"),MyLangManager.Tr("Forget"),MyLangManager.Tr("Back"),""] _MyList = [] - _ListFontObj = fonts["varela15"] + _ListFontObj = MyLangManager.TrFont("varela15") _ListSmFontObj = fonts["varela12"] # small font _ListSm2FontObj= fonts["varela11"] @@ -126,7 +127,7 @@ class BleInfoPage(Page): self._ConfirmPage1 = BleForgetConfirmPage() self._ConfirmPage1._Screen = self._Screen - self._ConfirmPage1._Name = "Confirm Forget" + self._ConfirmPage1._Name = MyLangManager.Tr("ConfirmForget") self._ConfirmPage1._Parent = self self._ConfirmPage1.Init() @@ -204,7 +205,7 @@ class BleInfoPage(Page): proxy_obj = bus.get_object("org.bluez", self._Path) dev = dbus.Interface(proxy_obj, "org.bluez.Device1") - self._Screen._MsgBox.SetText("Forgeting...") + self._Screen._MsgBox.SetText(MyLangManager.Tr("Forgeting")) self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() @@ -229,8 +230,8 @@ class BleInfoPage(Page): proxy_obj = bus.get_object("org.bluez", self._Path) dev = dbus.Interface(proxy_obj, "org.bluez.Device1") - self._Screen._FootBar.UpdateNavText("Disconnecting...") - self._Screen._MsgBox.SetText("Disconnecting...") + self._Screen._FootBar.UpdateNavText(MyLangManager.Tr("Disconnecting")) + self._Screen._MsgBox.SetText(MyLangManager.Tr("Disconnecting")) self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() @@ -260,7 +261,7 @@ class BleInfoPage(Page): if self._AList != None: if "Connected" in self._AList: if self._AList["Connected"] == 1: - self._FootMsg[1] = "Disconnect" + self._FootMsg[1] = MyLangManager.Tr("Disconnect") else: self._FootMsg[1] = "" @@ -322,7 +323,7 @@ class BleInfoPage(Page): class BleListSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -356,9 +357,9 @@ class BleListMessageBox(Label): x = (self._Parent._Width - w)/2 y = (self._Parent._Height - h)/2 padding = 10 - pygame.draw.rect(self._CanvasHWND,SkinManager().GiveColor('White'),(x-padding,y-padding, w+padding*2,h+padding*2)) + pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),(x-padding,y-padding, w+padding*2,h+padding*2)) - pygame.draw.rect(self._CanvasHWND,SkinManager().GiveColor('Black'),(x-padding,y-padding, w+padding*2,h+padding*2),1) + pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Black'),(x-padding,y-padding, w+padding*2,h+padding*2),1) self._CanvasHWND.blit(my_text,(x,y,w,h)) @@ -384,7 +385,7 @@ class BluetoothPage(Page): _BlockCb = None _LastStatusMsg = "" - _FootMsg = ["Nav.","Scan","Info","Back","TryConnect"] + _FootMsg = [MyLangManager.Tr("Nav"),MyLangManager.Tr("Scan"),MyLangManager.Tr("Info"),MyLangManager.Tr("Back"),MyLangManager.Tr("TryConnect")] _Scroller = None _ListFontObj = fonts["notosanscjk15"] @@ -428,7 +429,7 @@ class BluetoothPage(Page): msgbox = BleListMessageBox() msgbox._CanvasHWND = self._CanvasHWND - msgbox.Init(" ",fonts["veramono12"]) + msgbox.Init(" ",MyLangManager.TrFont("veramono12")) msgbox._Parent = self self._MsgBox = msgbox @@ -443,7 +444,7 @@ class BluetoothPage(Page): self._InfoPage = BleInfoPage() self._InfoPage._Screen = self._Screen - self._InfoPage._Name = "Bluetooth info" + self._InfoPage._Name = MyLangManager.Tr("BluetoothInfo") self._InfoPage.Init() def print_normal(self,address, properties): @@ -529,8 +530,8 @@ class BluetoothPage(Page): proxy_obj = bus.get_object("org.bluez", cur_li._Path) dev = dbus.Interface(proxy_obj, "org.bluez.Device1") - self._Screen._FootBar.UpdateNavText("connecting...") - self.ShowBox("connecting...") + self._Screen._FootBar.UpdateNavText(MyLangManager.Tr("Connecting")) + self.ShowBox(MyLangManager.Tr("Connecting")) try: dev.Connect() @@ -577,8 +578,8 @@ class BluetoothPage(Page): return self._Scanning = True - self.ShowBox("Bluetooth scanning...") - self._Screen._FootBar.UpdateNavText("bluetooth scanning") + self.ShowBox(MyLangManager.Tr("BluetoothScanning")) + self._Screen._FootBar.UpdateNavText(MyLangManager.Tr("Scanning")) proxy_obj = self._Dbus.get_object("org.bluez", "/org/bluez/" + self._ADAPTER_DEV) adapter_props = dbus.Interface(proxy_obj,"org.freedesktop.DBus.Properties") @@ -642,7 +643,7 @@ class BluetoothPage(Page): _connecting = self.CheckIfBluetoothConnecting() if _connecting: self.ShutDownConnecting() - self.ShowBox("ShutDownConnecting...") + self.ShowBox(MyLangManager.Tr("ShutDownConnecting")) self.AbortedAndReturnToUpLevel() else: self.AbortedAndReturnToUpLevel() diff --git a/Menu/GameShell/10_Settings/Bluetooth/net_item.py b/Menu/GameShell/10_Settings/Bluetooth/net_item.py index e901a6f..7fbbef0 100644 --- a/Menu/GameShell/10_Settings/Bluetooth/net_item.py +++ b/Menu/GameShell/10_Settings/Bluetooth/net_item.py @@ -9,7 +9,7 @@ from UI.fonts import fonts from UI.icon_item import IconItem from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager class NetItemMultiIcon(MultiIconItem): @@ -123,5 +123,5 @@ class NetItem(object): self._Icons["done"].NewCoord(320-22,self._PosY) self._Icons["done"].Draw() - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'), + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'), (self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) diff --git a/Menu/GameShell/10_Settings/PowerOptions/__init__.py b/Menu/GameShell/10_Settings/PowerOptions/__init__.py index 51ad5ab..016599f 100644 --- a/Menu/GameShell/10_Settings/PowerOptions/__init__.py +++ b/Menu/GameShell/10_Settings/PowerOptions/__init__.py @@ -19,12 +19,12 @@ from UI.scroller import ListScroller from UI.icon_pool import MyIconPool from UI.icon_item import IconItem from UI.multilabel import MultiLabel -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager import config class ListPageSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -103,7 +103,7 @@ class PageListItem(object): self._Labels["Small"]._PosY = self._PosY + (self._Height- self._Labels["Small"]._Height)/2 self._Labels["Small"].Draw() - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) class InfoPage(Page): @@ -445,9 +445,9 @@ class PowerOptionsPage(Page): config.PowerLevel = cur_li._Value if config.PowerLevel!= "supersaving": - os.system("sudo iw wlan0 set power_save off") + os.system("sudo iw wlan0 set power_save off > /dev/null") else: - os.system("sudo iw wlan0 set power_save on") + os.system("sudo iw wlan0 set power_save on > /dev/null") self._Screen._MsgBox.SetText("Applying...") self._Screen._MsgBox.Draw() diff --git a/Menu/GameShell/10_Settings/Storage/__init__.py b/Menu/GameShell/10_Settings/Storage/__init__.py index f2578ce..7a9aeea 100644 --- a/Menu/GameShell/10_Settings/Storage/__init__.py +++ b/Menu/GameShell/10_Settings/Storage/__init__.py @@ -6,7 +6,7 @@ import os ## local UI import from UI.page import Page -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from UI.constants import ICON_TYPES,Width,Height from UI.icon_item import IconItem from UI.icon_pool import MyIconPool @@ -28,7 +28,7 @@ class StoragePage(Page): _BGmsg = "%.1fGB of %.1fGB Used" _DskUsg = None - _HighColor = SkinManager().GiveColor('High') + _HighColor = MySkinManager.GiveColor('High') _FootMsg = ["Nav.","","","Back",""] def __init__(self): @@ -99,7 +99,7 @@ class StoragePage(Page): rect_ = midRect(self._Width/2,self._Height-30,170,17, Width,Height) - aa_round_rect(self._CanvasHWND, rect_, SkinManager().GiveColor('Line'), 5, 0, SkinManager().GiveColor('Line')) + aa_round_rect(self._CanvasHWND, rect_, MySkinManager.GiveColor('Line'), 5, 0, MySkinManager.GiveColor('Line')) rect2 = midRect(self._Width/2,self._Height-30,int(170*(1.0-usage_percent)),17, Width,Height) @@ -107,7 +107,7 @@ class StoragePage(Page): rect2.left = rect_.left rect2.top = rect_.top - aa_round_rect(self._CanvasHWND,rect2, SkinManager().GiveColor('Front'),5,0,SkinManager().GiveColor('Front')) + aa_round_rect(self._CanvasHWND,rect2, MySkinManager.GiveColor('Front'),5,0,MySkinManager.GiveColor('Front')) class APIOBJ(object): diff --git a/Menu/GameShell/10_Settings/Time/list_item.py b/Menu/GameShell/10_Settings/Time/list_item.py index 74f4618..6de8281 100644 --- a/Menu/GameShell/10_Settings/Time/list_item.py +++ b/Menu/GameShell/10_Settings/Time/list_item.py @@ -10,7 +10,7 @@ from UI.label import Label from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager # a item for List # - - - - - - - - - - - -- @@ -32,7 +32,7 @@ class ListItemIcon(IconItem): class ListItemLabel(Label): - _ActiveColor = SkinManager().GiveColor('Active') + _ActiveColor = MySkinManager.GiveColor('Active') _Active = False def Draw(self): @@ -107,7 +107,7 @@ class ListItem(object): self._Labels["Text"]._PosY = self._PosY + (self._Height - self._Labels["Text"]._Height)/2 - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) self._Labels["Text"].Draw() diff --git a/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py b/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py index c2c852c..f55be7e 100644 --- a/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py +++ b/Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py @@ -17,7 +17,7 @@ from UI.keys_def import CurKeys from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool from UI.scroller import ListScroller -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from list_item import ListItem @@ -51,7 +51,7 @@ class TimeLibStack: return len(self.stack) class ListPageSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -190,7 +190,7 @@ class TimezoneListPage(Page): self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self self._BGpng.AddLabel("No timezones found on system!", fonts["varela22"]) - self._BGpng.SetLableColor(SkinManager().GiveColor('Disabled')) + self._BGpng.SetLableColor(MySkinManager.GiveColor('Disabled')) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) diff --git a/Menu/GameShell/10_Settings/Update/__init__.py b/Menu/GameShell/10_Settings/Update/__init__.py index 7dceb7c..1c0d5d9 100644 --- a/Menu/GameShell/10_Settings/Update/__init__.py +++ b/Menu/GameShell/10_Settings/Update/__init__.py @@ -19,7 +19,7 @@ from UI.keys_def import CurKeys from UI.confirm_page import ConfirmPage from UI.download import Download from UI.download_process_page import DownloadProcessPage -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from libs.roundrects import aa_round_rect from libs.DBUS import is_wifi_connected_now @@ -195,7 +195,7 @@ class InfoPageListItem(object): self._Labels["Small"]._PosY = self._PosY + (self._Height - self._Labels["Small"]._Height)/2 self._Labels["Small"].Draw() - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) class UpdatePage(Page): diff --git a/Menu/GameShell/10_Settings/Wifi/net_item.py b/Menu/GameShell/10_Settings/Wifi/net_item.py index 17cc202..0149c2d 100644 --- a/Menu/GameShell/10_Settings/Wifi/net_item.py +++ b/Menu/GameShell/10_Settings/Wifi/net_item.py @@ -9,7 +9,7 @@ from UI.fonts import fonts from UI.icon_item import IconItem from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager class NetItemMultiIcon(MultiIconItem): @@ -195,6 +195,6 @@ class NetItem(object): self._Icons["wifistatus"].NewCoord(self._Width-23,self._PosY) self._Icons["wifistatus"].Draw() - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) diff --git a/Menu/GameShell/10_Settings/Wifi/wifi_list.py b/Menu/GameShell/10_Settings/Wifi/wifi_list.py index d8103fa..af1df85 100644 --- a/Menu/GameShell/10_Settings/Wifi/wifi_list.py +++ b/Menu/GameShell/10_Settings/Wifi/wifi_list.py @@ -15,7 +15,7 @@ from UI.util_funcs import midRect,SwapAndShow from UI.keys_def import CurKeys from UI.scroller import ListScroller from UI.confirm_page import ConfirmPage -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from UI.info_page_list_item import InfoPageListItem from UI.info_page_selector import InfoPageSelector @@ -224,7 +224,7 @@ class WifiInfoPage(Page): class WifiListSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -260,9 +260,9 @@ class WifiListMessageBox(Label): x = (self._Parent._Width - w)/2 y = (self._Parent._Height - h)/2 padding = 10 - pygame.draw.rect(self._CanvasHWND,SkinManager().GiveColor('White'),(x-padding,y-padding, w+padding*2,h+padding*2)) + pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),(x-padding,y-padding, w+padding*2,h+padding*2)) - pygame.draw.rect(self._CanvasHWND,SkinManager().GiveColor('Black'),(x-padding,y-padding, w+padding*2,h+padding*2),1) + pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Black'),(x-padding,y-padding, w+padding*2,h+padding*2),1) self._CanvasHWND.blit(my_text,(x,y,w,h)) diff --git a/Menu/GameShell/10_Settings/list_page.py b/Menu/GameShell/10_Settings/list_page.py index ff48f1b..d48e78e 100644 --- a/Menu/GameShell/10_Settings/list_page.py +++ b/Menu/GameShell/10_Settings/list_page.py @@ -13,14 +13,14 @@ from UI.fonts import fonts from UI.util_funcs import midRect,FileExists from UI.keys_def import CurKeys from UI.scroller import ListScroller -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from list_item import ListItem import myvars class ListPageSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 diff --git a/Menu/GameShell/97_Music Player/list_item.py b/Menu/GameShell/97_Music Player/list_item.py index 3832619..186201a 100644 --- a/Menu/GameShell/97_Music Player/list_item.py +++ b/Menu/GameShell/97_Music Player/list_item.py @@ -10,7 +10,7 @@ from UI.label import Label from UI.fonts import fonts from UI.icon_item import IconItem from UI.util_funcs import midRect -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager # a item for List # - - - - - - - - - - - -- @@ -32,7 +32,7 @@ class ListItemIcon(IconItem): class ListItemLabel(Label): - _ActiveColor = SkinManager().GiveColor('Active') + _ActiveColor = MySkinManager.GiveColor('Active') _Active = False def Draw(self): @@ -117,7 +117,7 @@ class ListItem(object): self._Labels["Text"]._PosY = self._PosY + (self._Height - self._Labels["Text"]._Height)/2 - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1) if self._Playing == True: self._Labels["Text"]._Active =True @@ -128,7 +128,7 @@ class ListItem(object): if self._PlayingProcess > 0: seek_posx = int(self._Width * self._PlayingProcess/100.0) - pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Active'),(self._PosX,self._PosY+self._Height-2),(self._PosX+seek_posx,self._PosY+self._Height-2),2) + pygame.draw.line(self._Parent._CanvasHWND,MySkinManager.GiveColor('Active'),(self._PosX,self._PosY+self._Height-2),(self._PosX+seek_posx,self._PosY+self._Height-2),2) else: self._Labels["Text"].Draw() diff --git a/Menu/GameShell/97_Music Player/mpd_spectrum_page.py b/Menu/GameShell/97_Music Player/mpd_spectrum_page.py index eee8949..a776b77 100644 --- a/Menu/GameShell/97_Music Player/mpd_spectrum_page.py +++ b/Menu/GameShell/97_Music Player/mpd_spectrum_page.py @@ -20,7 +20,7 @@ from UI.util_funcs import midRect from UI.keys_def import CurKeys from UI.icon_item import IconItem from UI.icon_pool import MyIconPool -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from threading import Thread @@ -83,7 +83,7 @@ class MPDSpectrumPage(Page): _SongFont = fonts["notosanscjk12"] _PIFI = None _FIFO = None - _Color = SkinManager().GiveColor('Front') + _Color = MySkinManager.GiveColor('Front') _GobjectIntervalId = -1 _Queue = None _KeepReading = True @@ -163,22 +163,22 @@ class MPDSpectrumPage(Page): self._song_title = Label() self._song_title.SetCanvasHWND(self._RollCanvas) - self._song_title.Init("Untitled",self._SongFont,SkinManager().GiveColor('White')) + self._song_title.Init("Untitled",self._SongFont,MySkinManager.GiveColor('White')) self._title = Label() self._title.SetCanvasHWND(self._CanvasHWND) - self._title.Init("Title:",self._ListFont,SkinManager().GiveColor('White')) + self._title.Init("Title:",self._ListFont,MySkinManager.GiveColor('White')) self._time = Label() self._time.SetCanvasHWND(self._CanvasHWND) - self._time.Init("Time:",self._ListFont,SkinManager().GiveColor('White')) + self._time.Init("Time:",self._ListFont,MySkinManager.GiveColor('White')) self._time2 = Label() self._time2.SetCanvasHWND(self._CanvasHWND) self._time2.Init("00:00-00:00", self._ListFont, - SkinManager().GiveColor('White')) + MySkinManager.GiveColor('White')) self.Start() @@ -229,7 +229,7 @@ class MPDSpectrumPage(Page): def ClearCanvas(self): - self._CanvasHWND.fill(SkinManager().GiveColor('Black')) + self._CanvasHWND.fill(MySkinManager.GiveColor('Black')) def SgsSmooth(self): passes = 1 @@ -343,7 +343,7 @@ class MPDSpectrumPage(Page): if self._RollCanvas != None: # self._RollCanvas.fill((111,22,33)) - self._RollCanvas.fill(SkinManager().GiveColor('Black')) + self._RollCanvas.fill(MySkinManager.GiveColor('Black')) if self._song_title._Width > self._RollW: if (self._song_title._PosX + self._song_title._Width) > self._RollW and self._frames % 30 == 0: self._song_title._PosX -= 1 @@ -417,9 +417,9 @@ class MPDSpectrumPage(Page): else: self._capYPositionArray[i] = value - pygame.draw.rect(self._CanvasHWND,SkinManager().GiveColor('White'),(i*(bw+gap)+margin_left,self._Height-gap-self._capYPositionArray[i]-margin_bottom,bw,gap),0) + pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),(i*(bw+gap)+margin_left,self._Height-gap-self._capYPositionArray[i]-margin_bottom,bw,gap),0) - pygame.draw.rect(self._CanvasHWND,SkinManager().GiveColor('White'),(i*(bw+gap)+margin_left,self._Height-value-gap-margin_bottom,bw,value+gap),0) + pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),(i*(bw+gap)+margin_left,self._Height-value-gap-margin_bottom,bw,value+gap),0) self._vis_values[i] -= 2 diff --git a/Menu/GameShell/97_Music Player/music_lib_list_page.py b/Menu/GameShell/97_Music Player/music_lib_list_page.py index 641f76c..dec0b0f 100644 --- a/Menu/GameShell/97_Music Player/music_lib_list_page.py +++ b/Menu/GameShell/97_Music Player/music_lib_list_page.py @@ -15,7 +15,7 @@ from UI.keys_def import CurKeys from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool from UI.scroller import ListScroller -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from list_item import ListItem @@ -49,7 +49,7 @@ class MusicLibStack: return len(self.stack) class ListPageSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -185,7 +185,7 @@ class MusicLibListPage(Page): self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self self._BGpng.AddLabel("Please upload data over Wi-Fi", fonts["varela22"]) - self._BGpng.SetLableColor(SkinManager().GiveColor('Disabled')) + self._BGpng.SetLableColor(MySkinManager.GiveColor('Disabled')) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) diff --git a/Menu/GameShell/97_Music Player/play_list_page.py b/Menu/GameShell/97_Music Player/play_list_page.py index bb5e273..c40fe57 100644 --- a/Menu/GameShell/97_Music Player/play_list_page.py +++ b/Menu/GameShell/97_Music Player/play_list_page.py @@ -14,7 +14,7 @@ from UI.fonts import fonts from UI.util_funcs import midRect from UI.keys_def import CurKeys from UI.icon_pool import MyIconPool -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager from UI.scroller import ListScroller @@ -23,7 +23,7 @@ from list_item import ListItem import myvars class ListPageSelector(PageSelector): - _BackgroundColor = SkinManager().GiveColor('Front') + _BackgroundColor = MySkinManager.GiveColor('Front') def __init__(self): self._PosX = 0 @@ -184,7 +184,7 @@ class PlayListPage(Page): self._BGpng._MyType = ICON_TYPES["STAT"] self._BGpng._Parent = self self._BGpng.AddLabel("my favourites", fonts["varela18"]) - self._BGpng.SetLableColor(SkinManager().GiveColor('Disabled')) + self._BGpng.SetLableColor(MySkinManager.GiveColor('Disabled')) self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0) self._Scroller = ListScroller() diff --git a/Menu/GameShell/98_TinyCloud/__init__.py b/Menu/GameShell/98_TinyCloud/__init__.py index 5ed09c4..83d3250 100644 --- a/Menu/GameShell/98_TinyCloud/__init__.py +++ b/Menu/GameShell/98_TinyCloud/__init__.py @@ -10,12 +10,13 @@ from UI.fonts import fonts from UI.icon_item import IconItem from UI.icon_pool import MyIconPool from UI.keys_def import CurKeys -from UI.skin_manager import SkinManager +from UI.skin_manager import MySkinManager +from UI.lang_manager import MyLangManager from libs.DBUS import is_wifi_connected_now,get_wifi_ip class TinyCloudPage(Page): - _FootMsg = ["Nav.","","","Back",""] + _FootMsg = [MyLangManager.Tr("Nav"),"","",MyLangManager.Tr("Back"),""] _MyList = [] _ListFontObj = fonts["varela13"] @@ -25,8 +26,8 @@ class TinyCloudPage(Page): _Coords = {} - _URLColor = SkinManager().GiveColor('URL') - _TextColor = SkinManager().GiveColor('Text') + _URLColor = MySkinManager.GiveColor('URL') + _TextColor = MySkinManager.GiveColor('Text') _Scrolled = 0 _PngSize = {} @@ -165,7 +166,7 @@ class TinyCloudPage(Page): def KeyDown(self,event): if event.key == CurKeys["A"] or event.key == CurKeys["Menu"]: - if self._FootMsg[3] == "Back": + if self._FootMsg[3] == MyLangManager.Tr("Back"): self.ReturnToUpLevelPage() self._Screen.Draw() self._Screen.SwapAndShow() @@ -198,7 +199,7 @@ class TinyCloudPage(Page): self._DrawOnce = True if self._HWND != None: - self._HWND.fill(SkinManager().GiveColor('White')) + self._HWND.fill(MySkinManager.GiveColor('White')) self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width, self._Height ) ) diff --git a/sys.py/UI/Emulator/__init__.py b/sys.py/UI/Emulator/__init__.py index 3d201bc..b427bd8 100644 --- a/sys.py/UI/Emulator/__init__.py +++ b/sys.py/UI/Emulator/__init__.py @@ -11,6 +11,7 @@ import sys from UI.delete_confirm_page import DeleteConfirmPage from UI.icon_pool import MyIconPool from UI.keys_def import CurKeys +from UI.lang_manager import MyLangManager from rom_list_page import RomListPage from fav_list_page import FavListPage @@ -34,7 +35,7 @@ class FavDeleteConfirmPage(DeleteConfirmPage): except: print("error in FavDeleteConfirmPage chown ") - self.SnapMsg("Deleteing....") + self.SnapMsg(MyLangManager.Tr("Deleteing")) self._Screen.Draw() self._Screen.SwapAndShow() self.Reset() @@ -75,18 +76,18 @@ class MyEmulator(object): def InitDeleteConfirmPage(self,main_screen): self.DeleteConfirmPage = DeleteConfirmPage() self.DeleteConfirmPage._Screen = main_screen - self.DeleteConfirmPage._Name = "Delete Confirm" + self.DeleteConfirmPage._Name = MyLangManager.Tr("DeleteConfirm") self.DeleteConfirmPage.Init() self.FavDeleteConfirmPage = FavDeleteConfirmPage() self.FavDeleteConfirmPage._Screen = main_screen - self.FavDeleteConfirmPage._Name = "Delete Confirm" + self.FavDeleteConfirmPage._Name = MyLangManager.Tr("DeleteConfirm") self.FavDeleteConfirmPage.Init() def InitFavListPage(self,main_screen): self.FavListPage = FavListPage() self.FavListPage._Screen = main_screen - self.FavListPage._Name = "Favourite Games" + self.FavListPage._Name = MyLangManager.Tr("FavouriteGames") self.FavListPage._Emulator = self._Emulator self.FavListPage._Parent = self diff --git a/sys.py/UI/Emulator/fav_list_page.py b/sys.py/UI/Emulator/fav_list_page.py index e9fffc6..45f1f1e 100644 --- a/sys.py/UI/Emulator/fav_list_page.py +++ b/sys.py/UI/Emulator/fav_list_page.py @@ -18,6 +18,7 @@ from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool from UI.scroller import ListScroller from UI.skin_manager import MySkinManager +from UI.lang_manager import MyLangManager from rom_so_confirm_page import RomSoConfirmPage @@ -91,7 +92,7 @@ class FavListPage(Page): _Icons = {} _Selector=None - _FootMsg = ["Nav","Scan","Remove","","Run"] + _FootMsg = [MyLangManager.Tr("Nav"),MyLangManager.Tr("Scan"),MyLangManager.Tr("Remove"),"",MyLangManager.Tr("Run")] _MyList = [] _ListFont = fonts["notosanscjk15"] _MyStack = None @@ -230,7 +231,7 @@ class FavListPage(Page): bgpng._ImgSurf = MyIconPool._Icons["star"] bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self - bgpng.AddLabel("my favourites games", fonts["varela18"]) + bgpng.AddLabel(MyLangManager.Tr("MyFavGames"), MyLangManager.TrFont("varela18")) bgpng.SetLableColor(MySkinManager.GiveColor('Disabled')) bgpng.Adjust(0,0,self._BGwidth,self._BGheight,0) @@ -244,7 +245,7 @@ class FavListPage(Page): rom_so_confirm_page = RomSoConfirmPage() rom_so_confirm_page._Screen = self._Screen - rom_so_confirm_page._Name = "Download Confirm" + rom_so_confirm_page._Name = MyLangManager.Tr("Download Confirm") rom_so_confirm_page._Parent = self rom_so_confirm_page.Init() @@ -308,7 +309,7 @@ class FavListPage(Page): return if cur_li._MyType == ICON_TYPES["FILE"]: - self._Screen._MsgBox.SetText("Launching...") + self._Screen._MsgBox.SetText(MyLangManager.Tr("Launching")) self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() if self._Emulator["FILETYPE"] == "dir": @@ -418,7 +419,7 @@ class FavListPage(Page): #delete directly without confirm dialog stats = os.stat(cur_li._Path) os.chown(cur_li._Path, stats.st_uid,stats.st_uid) ## normally uid and gid should be the same - self._Screen._MsgBox.SetText("Deleting...") + self._Screen._MsgBox.SetText(MyLangManager.Tr("Deleting")) self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() pygame.time.delay(600) diff --git a/sys.py/UI/Emulator/rom_list_page.py b/sys.py/UI/Emulator/rom_list_page.py index fbb9338..4447ecf 100644 --- a/sys.py/UI/Emulator/rom_list_page.py +++ b/sys.py/UI/Emulator/rom_list_page.py @@ -25,6 +25,7 @@ from UI.multi_icon_item import MultiIconItem from UI.icon_pool import MyIconPool from UI.scroller import ListScroller from UI.skin_manager import MySkinManager +from UI.lang_manager import MyLangManager from rom_so_confirm_page import RomSoConfirmPage @@ -98,7 +99,7 @@ class RomListPage(Page): _Icons = {} _Selector=None - _FootMsg = ["Nav","Scan","Del","Add Fav","Run"] + _FootMsg = [MyLangManager.Tr("Nav"),MyLangManager.Tr("Scan"),MyLangManager.Tr("Del"),MyLangManager.Tr("AddFav"),MyLangManager.Tr("Run")] _MyList = [] _ListFont = fonts["notosanscjk15"] _MyStack = None @@ -264,7 +265,7 @@ class RomListPage(Page): bgpng._ImgSurf = MyIconPool._Icons["empty"] bgpng._MyType = ICON_TYPES["STAT"] bgpng._Parent = self - bgpng.AddLabel("Please upload data over Wi-Fi", fonts["varela22"]) + bgpng.AddLabel(MyLangManager.Tr("UploadViaWifi"), MyLangManager.TrFont("varela22")) bgpng.SetLableColor(MySkinManager.GiveColor('Disabled')) bgpng.Adjust(0,0,self._BGwidth,self._BGheight,0) @@ -278,7 +279,7 @@ class RomListPage(Page): rom_so_confirm_page = RomSoConfirmPage() rom_so_confirm_page._Screen = self._Screen - rom_so_confirm_page._Name = "Download Confirm" + rom_so_confirm_page._Name = MyLangManager.Tr("Download Confirm") rom_so_confirm_page._Parent = self rom_so_confirm_page.Init() @@ -347,7 +348,7 @@ class RomListPage(Page): self._PsIndex = 0 if cur_li._MyType == ICON_TYPES["FILE"]: - self._Screen._MsgBox.SetText("Launching...") + self._Screen._MsgBox.SetText(MyLangManager.Tr("Launching")) self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() @@ -447,7 +448,7 @@ class RomListPage(Page): except: pass - self._Screen._MsgBox.SetText("Adding to Favourite list") + self._Screen._MsgBox.SetText(MyLangManager.Tr("AddFavList")) self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() diff --git a/sys.py/UI/Emulator/rom_so_confirm_page.py b/sys.py/UI/Emulator/rom_so_confirm_page.py index 5e2dded..4d23087 100644 --- a/sys.py/UI/Emulator/rom_so_confirm_page.py +++ b/sys.py/UI/Emulator/rom_so_confirm_page.py @@ -17,13 +17,14 @@ from UI.download_process_page import DownloadProcessPage from UI.keys_def import CurKeys from UI.fonts import fonts from UI.multilabel import MultiLabel +from UI.lang_manager import MyLangManager import config class RomSoConfirmPage(ConfirmPage): - _ListFont = fonts["veramono18"] + _ListFont = MyLangManager.TrFont("veramono18") - _ConfirmText = "Do you want to setup this game engine automatically?" + _ConfirmText = MyLangManager.Tr("SetupGameEngineAutoQ") _MyDownloadPage = None @@ -93,12 +94,12 @@ class RomSoConfirmPage(ConfirmPage): if event.key == CurKeys["B"]: if self.CheckBattery() < 5: - self.SnapMsg("Battery must over 5%") + self.SnapMsg(MyLangManager.Tr("BATOver5Pct")) else: if self._MyDownloadPage == None: self._MyDownloadPage = DownloadProcessPage() self._MyDownloadPage._Screen = self._Screen - self._MyDownloadPage._Name = "Downloading..." + self._MyDownloadPage._Name = MyLangManager.Tr("Downloading") self._MyDownloadPage.Init() self._Screen.PushPage(self._MyDownloadPage) diff --git a/sys.py/UI/confirm_page.py b/sys.py/UI/confirm_page.py index ec0cd95..04e3cdd 100644 --- a/sys.py/UI/confirm_page.py +++ b/sys.py/UI/confirm_page.py @@ -13,7 +13,7 @@ from fonts import fonts from util_funcs import midRect from keys_def import CurKeys from skin_manager import MySkinManager - +from lang_manager import MyLangManager class ListPageSelector(PageSelector): @@ -54,13 +54,13 @@ class ConfirmPage(Page): _Icons = {} _Selector=None - _FootMsg = ["Nav","","","Cancel","Yes"] + _FootMsg = [MyLangManager.Tr("Nav"),"","",MyLangManager.Tr("Cancel"),MyLangManager.Tr("Yes")] _MyList = [] - _ListFont = fonts["veramono20"] + _ListFont = MyLangManager.TrFont("veramono20") _MyStack = None _FileName = "" _TrashDir = "" - _ConfirmText = "Confirm?" + _ConfirmText = MyLangManager.Tr("ConfirmQ") _BGPosX = 0 _BGPosY = 0 _BGWidth = 0 diff --git a/sys.py/UI/delete_confirm_page.py b/sys.py/UI/delete_confirm_page.py index 002fbc6..12c27c3 100644 --- a/sys.py/UI/delete_confirm_page.py +++ b/sys.py/UI/delete_confirm_page.py @@ -13,12 +13,13 @@ from fonts import fonts from util_funcs import midRect from keys_def import CurKeys from confirm_page import ConfirmPage +from lang_manager import MyLangManager class DeleteConfirmPage(ConfirmPage): _FileName = "" _TrashDir = "" - _ConfirmText = "Confirm delete?" + _ConfirmText = MyLangManager.Tr("ConfirmDeleteQ") def SetTrashDir(self,d): self._TrashDir = d @@ -48,14 +49,14 @@ class DeleteConfirmPage(ConfirmPage): shutil.move(self._FileName, self._TrashDir) except shutil.Error as e: if "already exists" in str(e): - self._Screen._MsgBox.SetText("Already existed") + self._Screen._MsgBox.SetText(MyLangManager.Tr("AlreadyExisted")) else: self._Screen._MsgBox.SetText("Error") self._Screen._MsgBox.Draw() self._Screen.SwapAndShow() else: - self.SnapMsg("Deleting....") + self.SnapMsg(MyLangManager.Tr("Deleting")) self._Screen.Draw() self._Screen.SwapAndShow() self.Reset() diff --git a/sys.py/UI/fonts.py b/sys.py/UI/fonts.py index 64d2bd4..13903e1 100644 --- a/sys.py/UI/fonts.py +++ b/sys.py/UI/fonts.py @@ -11,57 +11,57 @@ import config if not pygame.font.get_init(): pygame.font.init() - -skinpath = "../skin/"+config.SKIN+"/truetype" -fonts_path = {} - -fonts_path["varela"] = "%s/VarelaRound-Regular.ttf" % skinpath -fonts_path["veramono"] = "%s/VeraMono.ttf" % skinpath -fonts_path["noto"] = "%s/NotoSansMono-Regular.ttf" % skinpath -fonts_path["notocjk"] = "%s/NotoSansCJK-Regular.ttf" % skinpath - fonts = {} -fonts["varela10"] = pygame.font.Font(fonts_path["varela"],10) -fonts["varela11"] = pygame.font.Font(fonts_path["varela"],11) -fonts["varela12"] = pygame.font.Font(fonts_path["varela"],12) -fonts["varela13"] = pygame.font.Font(fonts_path["varela"],13) -fonts["varela14"] = pygame.font.Font(fonts_path["varela"],14) -fonts["varela15"] = pygame.font.Font(fonts_path["varela"],15) +if not fonts: + skinpath = "../skin/"+config.SKIN+"/truetype" + fonts_path = {} -fonts["varela16"] = pygame.font.Font(fonts_path["varela"],16) -fonts["varela18"] = pygame.font.Font(fonts_path["varela"],18) -fonts["varela20"] = pygame.font.Font(fonts_path["varela"],20) -fonts["varela22"] = pygame.font.Font(fonts_path["varela"],22) -fonts["varela23"] = pygame.font.Font(fonts_path["varela"],23) -fonts["varela24"] = pygame.font.Font(fonts_path["varela"],24) -fonts["varela25"] = pygame.font.Font(fonts_path["varela"],25) -fonts["varela26"] = pygame.font.Font(fonts_path["varela"],26) -fonts["varela27"] = pygame.font.Font(fonts_path["varela"],27) -fonts["varela28"] = pygame.font.Font(fonts_path["varela"],28) -fonts["varela34"] = pygame.font.Font(fonts_path["varela"],34) -fonts["varela40"] = pygame.font.Font(fonts_path["varela"],40) -fonts["varela120"] = pygame.font.Font(fonts_path["varela"],120) + fonts_path["varela"] = "%s/VarelaRound-Regular.ttf" % skinpath + fonts_path["veramono"] = "%s/VeraMono.ttf" % skinpath + fonts_path["noto"] = "%s/NotoSansMono-Regular.ttf" % skinpath + fonts_path["notocjk"] = "%s/NotoSansCJK-Regular.ttf" % skinpath -fonts["veramono25"] = pygame.font.Font(fonts_path["veramono"],25) -fonts["veramono24"] = pygame.font.Font(fonts_path["veramono"],24) -fonts["veramono23"] = pygame.font.Font(fonts_path["veramono"],23) -fonts["veramono22"] = pygame.font.Font(fonts_path["veramono"],22) -fonts["veramono21"] = pygame.font.Font(fonts_path["veramono"],21) -fonts["veramono20"] = pygame.font.Font(fonts_path["veramono"],20) -fonts["veramono18"] = pygame.font.Font(fonts_path["veramono"],18) -fonts["veramono16"] = pygame.font.Font(fonts_path["veramono"],16) -fonts["veramono15"] = pygame.font.Font(fonts_path["veramono"],15) -fonts["veramono14"] = pygame.font.Font(fonts_path["veramono"],14) -fonts["veramono13"] = pygame.font.Font(fonts_path["veramono"],13) -fonts["veramono12"] = pygame.font.Font(fonts_path["veramono"],12) -fonts["veramono11"] = pygame.font.Font(fonts_path["veramono"],11) -fonts["veramono10"] = pygame.font.Font(fonts_path["veramono"],10) + fonts["varela10"] = pygame.font.Font(fonts_path["varela"],10) + fonts["varela11"] = pygame.font.Font(fonts_path["varela"],11) + fonts["varela12"] = pygame.font.Font(fonts_path["varela"],12) + fonts["varela13"] = pygame.font.Font(fonts_path["varela"],13) + fonts["varela14"] = pygame.font.Font(fonts_path["varela"],14) + fonts["varela15"] = pygame.font.Font(fonts_path["varela"],15) -for i in range(10,18): - fonts["notosansmono"+str(i)] = pygame.font.Font(fonts_path["noto"],i) + fonts["varela16"] = pygame.font.Font(fonts_path["varela"],16) + fonts["varela18"] = pygame.font.Font(fonts_path["varela"],18) + fonts["varela20"] = pygame.font.Font(fonts_path["varela"],20) + fonts["varela22"] = pygame.font.Font(fonts_path["varela"],22) + fonts["varela23"] = pygame.font.Font(fonts_path["varela"],23) + fonts["varela24"] = pygame.font.Font(fonts_path["varela"],24) + fonts["varela25"] = pygame.font.Font(fonts_path["varela"],25) + fonts["varela26"] = pygame.font.Font(fonts_path["varela"],26) + fonts["varela27"] = pygame.font.Font(fonts_path["varela"],27) + fonts["varela28"] = pygame.font.Font(fonts_path["varela"],28) + fonts["varela34"] = pygame.font.Font(fonts_path["varela"],34) + fonts["varela40"] = pygame.font.Font(fonts_path["varela"],40) + fonts["varela120"] = pygame.font.Font(fonts_path["varela"],120) -for i in range(10,18): - fonts["notosanscjk"+str(i)] = pygame.font.Font(fonts_path["notocjk"],i) + fonts["veramono25"] = pygame.font.Font(fonts_path["veramono"],25) + fonts["veramono24"] = pygame.font.Font(fonts_path["veramono"],24) + fonts["veramono23"] = pygame.font.Font(fonts_path["veramono"],23) + fonts["veramono22"] = pygame.font.Font(fonts_path["veramono"],22) + fonts["veramono21"] = pygame.font.Font(fonts_path["veramono"],21) + fonts["veramono20"] = pygame.font.Font(fonts_path["veramono"],20) + fonts["veramono18"] = pygame.font.Font(fonts_path["veramono"],18) + fonts["veramono16"] = pygame.font.Font(fonts_path["veramono"],16) + fonts["veramono15"] = pygame.font.Font(fonts_path["veramono"],15) + fonts["veramono14"] = pygame.font.Font(fonts_path["veramono"],14) + fonts["veramono13"] = pygame.font.Font(fonts_path["veramono"],13) + fonts["veramono12"] = pygame.font.Font(fonts_path["veramono"],12) + fonts["veramono11"] = pygame.font.Font(fonts_path["veramono"],11) + fonts["veramono10"] = pygame.font.Font(fonts_path["veramono"],10) + + for i in range(10,28): + fonts["notosansmono"+str(i)] = pygame.font.Font(fonts_path["noto"],i) + + for i in range(10,28): + fonts["notosanscjk"+str(i)] = pygame.font.Font(fonts_path["notocjk"],i) -fonts["arial"] = pygame.font.SysFont("arial",16) + fonts["arial"] = pygame.font.SysFont("arial",16) diff --git a/sys.py/UI/foot_bar.py b/sys.py/UI/foot_bar.py index e150ba1..2b1c956 100644 --- a/sys.py/UI/foot_bar.py +++ b/sys.py/UI/foot_bar.py @@ -12,6 +12,7 @@ from fonts import fonts from multi_icon_item import MultiIconItem from icon_pool import MyIconPool from libs.roundrects import aa_round_rect +from lang_manager import MyLangManager icon_base_path = SkinMap("gameshell/footbar_icons/") @@ -51,7 +52,7 @@ class FootBar: _Icons = {} _IconWidth = 18 _IconHeight = 18 - _LabelFont = fonts["veramono10"] + _LabelFont = MyLangManager.TrFont("veramono10") _State = "normal" _SkinManager = None diff --git a/sys.py/UI/lang_manager.py b/sys.py/UI/lang_manager.py index ab44658..4451fd9 100644 --- a/sys.py/UI/lang_manager.py +++ b/sys.py/UI/lang_manager.py @@ -3,6 +3,8 @@ import pygame import config import ConfigParser +from util_funcs import FileExists +from fonts import fonts class CaseConfigParser(ConfigParser.SafeConfigParser): def optionxform(self, optionstr): @@ -15,56 +17,77 @@ class LangManager(object): _Langs = {} _EngLangs = {} ##default Language dict,must be correct _Config = None - _ConfigFileName = "English.ini" + _ConfigFileName = "00_English.ini" def __init__(self): self.Init() def Init(self): - if not LangManager._Colors: + if not self._Langs: self.SetLangs() def SetLangs(self): - Langs = {} - - SkinManager._Colors = Colors - 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: + print("read lang failed") + None + if self._ConfigFileName == "" or FileExists("langs/"+self._ConfigFileName) == False: + print("miss file") + self._ConfigFileName = "00_English.ini" + else: + print("has file",self._ConfigFileName) + + try: - self._Config.read(fname) + self._Config.read("langs/"+self._ConfigFileName) except Exception, e: - print("read skin config.cfg error %s" % str(e)) + print("read lang ini error %s" % str(e)) return else: - if "Colors" in self._Config.sections(): - colour_opts = self._Config.options("Colors") -# print(colour_opts) - for i in SkinManager._Colors: - if i in colour_opts: - try: - SkinManager._Colors[i] = self.ConvertToRGB( - self._Config.get("Colors", i)) - except Exception, e: - print("error in ConvertToRGB %s" % str(e)) - continue + 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): - if english_key_str in SkinManager._Langs: - return SkinManager._Langs[english_key_str] + print("english_key_str", english_key_str) + if english_key_str in self._Langs: + return self._Langs[english_key_str].decode("utf8") else: - return SkinManager._EngLangs[english_key_str] ##default from english dict + return english_key_str + def TrFont(self,orig_font_str): + font_size_number = int(filter(str.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 MySkinManager + global MyLangManager if MyLangManager == None: MyLangManager = LangManager() diff --git a/sys.py/UI/main_screen.py b/sys.py/UI/main_screen.py index c09dbf5..38af73b 100644 --- a/sys.py/UI/main_screen.py +++ b/sys.py/UI/main_screen.py @@ -21,13 +21,14 @@ from title_bar import TitleBar from foot_bar import FootBar from constants import Width,Height,bg_color from util_funcs import midRect,FileExists,ReplaceSuffix,ReadTheFileContent,CmdClean,MakeExecutable,SkinMap -from fonts import fonts from keys_def import CurKeys from label import Label from untitled_icon import UntitledIcon from Emulator import MyEmulator from skin_manager import MySkinManager +from lang_manager import MyLangManager + from counter_screen import CounterScreen class MessageBox(Label): @@ -135,8 +136,8 @@ class MainScreen(object): _TitleBar = None _FootBar = None _MsgBox = None - _MsgBoxFont = fonts["veramono20"] - _IconFont = fonts["varela15"] + _MsgBoxFont = MyLangManager.TrFont("veramono20") + _IconFont = MyLangManager.TrFont("varela15") _SkinManager = None _Closed = False @@ -431,7 +432,7 @@ class MainScreen(object): iconitem = IconItem() iconitem._FileName = i iconitem._CmdPath = "" - iconitem.AddLabel(i2,self._IconFont) + iconitem.AddLabel(MyLangManager.Tr(i2),self._IconFont) if FileExists( _dir+"/"+i+"/"+i2+".png"): ### 20_Prog/Prog.png , cut 20_ iconitem._ImageName = _dir+"/"+i+"/"+i2+".png" elif FileExists( SkinMap(_dir+"/"+i2+".png") ): @@ -539,7 +540,7 @@ class MainScreen(object): iconitem._ImageName = "" - iconitem.AddLabel(i2.split(".")[0],self._IconFont) + iconitem.AddLabel(MyLangManager.Tr(i2.split(".")[0]),self._IconFont) iconitem._LinkPage = None cur_page._Icons.append(iconitem) @@ -587,7 +588,7 @@ class MainScreen(object): def DrawRun(self): - self._MsgBox.SetText("Launching....") + self._MsgBox.SetText(MyLangManager.Tr("Launching")) self._MsgBox.Draw() def Draw(self): diff --git a/sys.py/UI/page.py b/sys.py/UI/page.py index 9a14168..b78e6a7 100644 --- a/sys.py/UI/page.py +++ b/sys.py/UI/page.py @@ -17,6 +17,7 @@ from constants import ALIGN,icon_width,icon_height,Width,Height,ICON_TYPES from util_funcs import midRect from keys_def import CurKeys from icon_pool import MyIconPool +from lang_manager import MyLangManager class PageStack: def __init__(self): @@ -99,7 +100,7 @@ class Page(object): _Name = "" _Screen = None ## Should be the Screen Class _PageIconMargin = 20 - _FootMsg = ["Nav.","","","","Enter"] ## Default Page Foot info + _FootMsg = [MyLangManager.Tr("Nav"),"","","",MyLangManager.Tr("Enter")] ## Default Page Foot info _SelectedIconTopOffset=20 _EasingDur = 30 diff --git a/sys.py/UI/title_bar.py b/sys.py/UI/title_bar.py index e79d681..5e31c97 100644 --- a/sys.py/UI/title_bar.py +++ b/sys.py/UI/title_bar.py @@ -17,7 +17,7 @@ from fonts import fonts from icon_item import IconItem from multi_icon_item import MultiIconItem from icon_pool import MyIconPool - +from lang_manager import MyLangManager from util_funcs import midRect,SwapAndShow,SkinMap from config import Battery @@ -302,12 +302,12 @@ class TitleBar: cur_time = datetime.now().strftime("%H:%M") time_text_size = fonts["varela12"].size(cur_time) - title_text_size = fonts["varela16"].size(title) + title_text_size = MyLangManager.TrFont("varela16").size(title) - self._CanvasHWND.blit(fonts["varela16"].render(title,True,self._SkinManager.GiveColor("Text")),midRect(title_text_size[0]/2+self._LOffset, + self._CanvasHWND.blit(MyLangManager.TrFont("varela16").render(title,True,self._SkinManager.GiveColor("Text")),midRect(title_text_size[0]/2+self._LOffset, title_text_size[1]/2+(self._BarHeight-title_text_size[1])/2, title_text_size[0],title_text_size[1],Width,Height)) - self._CanvasHWND.blit(fonts["varela12"].render(cur_time,True,self._SkinManager.GiveColor("Text")),midRect(Width-time_text_size[0]/2-self._ROffset, + self._CanvasHWND.blit( fonts["varela12"].render(cur_time,True,self._SkinManager.GiveColor("Text")),midRect(Width-time_text_size[0]/2-self._ROffset, time_text_size[1]/2+(self._BarHeight-time_text_size[1])/2, time_text_size[0],time_text_size[1],Width,Height)) diff --git a/sys.py/langs/00_English.ini b/sys.py/langs/00_English.ini new file mode 100644 index 0000000..b80576c --- /dev/null +++ b/sys.py/langs/00_English.ini @@ -0,0 +1,50 @@ +[Langs] +Settings=Settings +Retro Games=Retro Games +Music Player=Music Player +TinyCloud=TinyCloud +PowerOFF=PowerOFF +Reload UI=Reload UI +freeDM=freeDM +CaveStory=CaveStory +RetroArch=RetroArch +Launching=Launching.... +Nav=Nav +Scan=Scan +Back=Back +Enter=Enter +Remove=Remove +Run=Run +AddToPlayList=Add to Playlist +DownloadConfirm=Download Confirm +MyFavGames=my favourites games +Deleting=Deleting... +AddFav=Add Fav +ADdFavList=Add to favourite list +Del=Del +UploadViaWifi=Please upload data over Wi-Fi +ConfirmDeleteQ=Confirm Delete ? +AlreadyExisted=Already existed +Cancel=Cancel +Yes=Yes +ConfirmQ=Confirm? +Disconnecting=Disconnecting... +ConfirmUpdateToFQ=Confirm Update to %s ? +UpdateToFQ=Update to %s ? +SetupGameEngineAutoQ=Do you want to setup this game engine automatically? +Downloading=Downloading... +BATOver5Pct=Battery must over 5% +DeleteConfirm=Delete Confirm +FavouriteGames=Favourite Games +ConfirmForgetQ=Confirm Forget? +ConfirmForget=Confirm Forget +Disconnect=Disconnect +Forget=Forget +Forgeting=Forgeting... +Info=Info +TryConnect=TryConnect +BluetoothInfo=Bluetooth info +Connecting=Connecting +BluetoothScanning=Bluetooth scanning... +Scanning=Scanning.. +ShutDownConnecting=ShutDownConnecting... diff --git a/sys.py/langs/01_日本語.ini b/sys.py/langs/01_日本語.ini new file mode 100644 index 0000000..e69de29 diff --git a/sys.py/langs/02_한국어.ini b/sys.py/langs/02_한국어.ini new file mode 100644 index 0000000..e69de29 diff --git a/sys.py/langs/03_简体中文.ini b/sys.py/langs/03_简体中文.ini new file mode 100644 index 0000000..97ef7fc --- /dev/null +++ b/sys.py/langs/03_简体中文.ini @@ -0,0 +1,48 @@ +[Langs] +Settings=设置 +Retro Games=复古游戏 +Music Player=音乐播放器 +TinyCloud=彩云 +PowerOFF=关机 +Reload UI=重载菜单 +freeDM=freeDM +CaveStory=洞窟物语 +Launching=正在启动... +Nav=导航 +Scan=扫描 +Back=返回 +Enter=进入 +Remove=删除 +Run=运行 +AddToPlayList=添加到播放列表 +DownloadConfirm=下载确认 +MyFavGames=加星游戏列表 +Deleting=删除中... +AddFav=加星 +Del=删 +UploadViaWifi=请通过无线Wifi上传数据 +ConfirmDeleteQ=确认删除? +AlreadyExisted=已存在 +Cancel=取消 +Yes=是 +ConfirmQ=确认? +Disconnecting=断开连接... +ConfirmUpdateToFQ=确认升级至 %s ? +UpdateToFQ=更新至 %s ? +SetupGameEngineAutoQ=你希望自动安装游戏引擎部件吗? +Downloading=下载中... +BATOver5Pct=电量必须多余5% +DeleteConfirm=删除确认 +FavouriteGames=偏好游戏 +ConfirmForgetQ=确认忽略? +ConfirmForget=确认忽略 +Disconnect=断开 +Forget=忽略 +Forgeting=忽略中... +Info=属性 +TryConnect=试连接 +BluetoothInfo=蓝牙属性 +Connecting=连接中 +BluetoothScanning=蓝牙搜索中... +Scanning=搜索中.. +ShutDownConnecting=断开连接... diff --git a/sys.py/langs/04_繁体中文.ini b/sys.py/langs/04_繁体中文.ini new file mode 100644 index 0000000..e69de29 diff --git a/sys.py/run.py b/sys.py/run.py index d2f3b60..ebfcc16 100644 --- a/sys.py/run.py +++ b/sys.py/run.py @@ -570,9 +570,9 @@ if __name__ == '__main__': if powerlevel != "": config.PowerLevel = powerlevel if powerlevel != "supersaving": - os.system("sudo iw wlan0 set power_save off") + os.system("sudo iw wlan0 set power_save off >/dev/null") else: - os.system("sudo iw wlan0 set power_save on") + os.system("sudo iw wlan0 set power_save on > /dev/null") crt_screen = CreateByScreen() crt_screen.Init()