2007/02/06

freevo 中文化

因為決定採用 geexbox devel, 且打開 freevo 選項,對其中文化也非常有必要,但是一直無法解決。今天終於給我看到曙光了!

首先,你得翻譯 freevo.po <-- 來自 freevo.pot, 這個檔我是用 gtranslator 翻譯的,您可自行下載修改

其次,得修改設定檔,一個是預設的是 /usr/share/freevo/freevo_config.py, 另外也可以設在 $HOME/.freevo/local_conf.py。你可以修改前者,或者因為後者沒字型相關設定,也就是直接放進後者即可。
假設字型是 OpenSung.ttf, 例如是在 /usr/share/fonts/chinese/TrueType/OpenSung.ttf,底下的內容請參考前面說的設定檔來修改。

OSD_DEFAULT_FONTNAME = 'OpenSung.ttf'
OSD_DEFAULT_FONTSIZE = 18
OSD_FORCE_FONTNAME = None
OSD_FORCE_FONTSIZE = None
OSD_EXTRA_FONT_PATH = [ '/usr/share/fonts/chinese/TrueType' ]
OSD_FONT_ALIASES = { 'arial_bold.ttf' : 'OpenSung.ttf',
'vera.ttf' : 'OpenSung.ttf',
'veramono.ttf' : 'OpenSung.ttf',
'verabi.ttf' : 'OpenSung.ttf',
'verabd.ttf': 'OpenSung.ttf' }


若您想要上面的設定正常運作的話,需要修改 osd.py, 否則 OSD_DEFAULT_FONTNAME 及 ALIASES 裡的字型要設成絕對路徑才行。

osd.py 可以在 /usr/lib/python2.4/site-packages/freevo 找到,其中需要修改的只有 __getfont__(), 如下:


def __getfont__(self, filename, ptsize):
#print 'getfont %s with size %d' % (os.path.basename(filename), ptsize)
ptsize = int(ptsize / 0.7) # XXX pygame multiplies by 0.7 for some reason

if hasattr(config, 'OSD_FORCE_FONTNAME') and config.OSD_FORCE_FONTNAME:
filename = config.OSD_FORCE_FONTNAME
ptsize *= hasattr(config, 'OSD_FORCE_FONTSIZE') and config.OSD_FORCE_FONTSIZE or 1.5

#print '\tloadfont %s with size %d' % (filename, ptsize)
font = self.__loadfont__(filename, ptsize)
if not font:

# search OSD_EXTRA_FONT_PATH for this font
fontname = os.path.basename(filename)
for path in config.OSD_EXTRA_FONT_PATH:
if fontname.lower() in config.OSD_FONT_ALIASES:
fname = os.path.join(path, config.OSD_FONT_ALIASES[fontname.lower()])
else:
fname = os.path.join(path, fontname)
#print '\ttrying to loadfont %s with size %d' % (fname, ptsize)
font = self.__loadfont__(fname, ptsize)
if font:
break

if not font:
for path in config.OSD_EXTRA_FONT_PATH:
fname = os.path.join(path, os.path.basename(config.OSD_DEFAULT_FONTNAME))
ptsize = config.OSD_DEFAULT_FONTSIZE
#print '\ttrying default font: %s with size %d' % (fname, ptsize)
font = self.__loadfont__(fname, ptsize)
if font:
break

if not font:
print 'Couldnt load font "%s"' % config.OSD_DEFAULT_FONTNAME
raise

return font

3 意見:

Daniel 提到...

您好, 我剛開始試用 freevo, 但是發現不好設定, 請問您可以將您設定好的 local_conf.py 以及 TV.XML 放出來供參考嘛? 另外, 台灣的 tV.XML 到底要怎麼取得呢?

菠蘿麵包 提到...

快一年前的東西,我找時間翻出來後再貼。我記得是別支工具產生的。

菠蘿麵包 提到...

我不曉得你的 freevo 怎麼安裝的,我自己沒有電視棒或是電視卡,所以目前無法測試。你可以試試

http://www.pimvlaar.net/freevo/local_conf.py.13jan2008

tv.xml 可以用 xmltv 取得