瀏覽代碼

continue translate

cuu 5 年之前
父節點
當前提交
b3aea583a5
共有 33 個文件被更改,包括 315 次插入184 次删除
  1. 23 22
      Menu/GameShell/10_Settings/Bluetooth/__init__.py
  2. 2 2
      Menu/GameShell/10_Settings/Bluetooth/net_item.py
  3. 5 5
      Menu/GameShell/10_Settings/PowerOptions/__init__.py
  4. 4 4
      Menu/GameShell/10_Settings/Storage/__init__.py
  5. 3 3
      Menu/GameShell/10_Settings/Time/list_item.py
  6. 3 3
      Menu/GameShell/10_Settings/Time/timezone_lib_list_page.py
  7. 2 2
      Menu/GameShell/10_Settings/Update/__init__.py
  8. 2 2
      Menu/GameShell/10_Settings/Wifi/net_item.py
  9. 4 4
      Menu/GameShell/10_Settings/Wifi/wifi_list.py
  10. 2 2
      Menu/GameShell/10_Settings/list_page.py
  11. 4 4
      Menu/GameShell/97_Music Player/list_item.py
  12. 10 10
      Menu/GameShell/97_Music Player/mpd_spectrum_page.py
  13. 3 3
      Menu/GameShell/97_Music Player/music_lib_list_page.py
  14. 3 3
      Menu/GameShell/97_Music Player/play_list_page.py
  15. 7 6
      Menu/GameShell/98_TinyCloud/__init__.py
  16. 5 4
      sys.py/UI/Emulator/__init__.py
  17. 6 5
      sys.py/UI/Emulator/fav_list_page.py
  18. 6 5
      sys.py/UI/Emulator/rom_list_page.py
  19. 5 4
      sys.py/UI/Emulator/rom_so_confirm_page.py
  20. 4 4
      sys.py/UI/confirm_page.py
  21. 4 3
      sys.py/UI/delete_confirm_page.py
  22. 46 46
      sys.py/UI/fonts.py
  23. 2 1
      sys.py/UI/foot_bar.py
  24. 47 24
      sys.py/UI/lang_manager.py
  25. 7 6
      sys.py/UI/main_screen.py
  26. 2 1
      sys.py/UI/page.py
  27. 4 4
      sys.py/UI/title_bar.py
  28. 50 0
      sys.py/langs/00_English.ini
  29. 0 0
      sys.py/langs/01_日本語.ini
  30. 0 0
      sys.py/langs/02_한국어.ini
  31. 48 0
      sys.py/langs/03_简体中文.ini
  32. 0 0
      sys.py/langs/04_繁体中文.ini
  33. 2 2
      sys.py/run.py

+ 23 - 22
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()

+ 2 - 2
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)

+ 5 - 5
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()

+ 4 - 4
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):
 

+ 3 - 3
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()
 

+ 3 - 3
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)
 
 

+ 2 - 2
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):

+ 2 - 2
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)        
         
 

+ 4 - 4
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))
 

+ 2 - 2
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

+ 4 - 4
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()

+ 10 - 10
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       
 

+ 3 - 3
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)
 
 

+ 3 - 3
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()

+ 7 - 6
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 ) )
             
             

+ 5 - 4
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
         

+ 6 - 5
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)

+ 6 - 5
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()
                 

+ 5 - 4
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)

+ 4 - 4
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

+ 4 - 3
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()

+ 46 - 46
sys.py/UI/fonts.py

@@ -11,57 +11,57 @@ import config
 if not pygame.font.get_init():
     pygame.font.init()
 
+fonts = {}
+if not fonts:
+    skinpath = "../skin/"+config.SKIN+"/truetype"
+    fonts_path = {}
 
-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_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)
+    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)
 
-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["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["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["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,18):
-    fonts["notosansmono"+str(i)] = pygame.font.Font(fonts_path["noto"],i)
+    for i in range(10,28):
+        fonts["notosansmono"+str(i)] = pygame.font.Font(fonts_path["noto"],i)
 
-for i in range(10,18):
-    fonts["notosanscjk"+str(i)] = pygame.font.Font(fonts_path["notocjk"],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)
 

+ 2 - 1
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

+ 47 - 24
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()
     

+ 7 - 6
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):

+ 2 - 1
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

+ 4 - 4
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))
 

+ 50 - 0
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...

+ 0 - 0
sys.py/langs/01_日本語.ini


+ 0 - 0
sys.py/langs/02_한국어.ini


+ 48 - 0
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=断开连接...

+ 0 - 0
sys.py/langs/04_繁体中文.ini


+ 2 - 2
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()