radiotray-0.7.3/0000775000175000017500000000000012011044040014273 5ustar carloscarlos00000000000000radiotray-0.7.3/README0000664000175000017500000000252212011025324015160 0ustar carloscarlos00000000000000RadioTray 0.7.3 =============== This is a simple music streaming player that lives on the system tray. By clicking on the RadioTray icon, you'll be presented with a list of pre-configured online radios. By selecting one of those radios, it will start playing. Right now, Radio Tray bundles with pre-configured radios. But you can and should add more manually. Adding online radios to the list is very simple. By right-clicking the RadioTray icon and selecting "Config radios...", you may add the name and URL of an online radio. This version allows you to add direct URLs (to media streams or files) and URLs pointing at playlist formats (pls, m3u, asx, wax, wvx). RadioTray was written in Python and uses gtk and gstreamer libraries (you'll need these to run RadioTray). To run RadioTray, you should run ./radiotray from the extracted tarball. To install, you can run "python setup.py install". Note: there is no uninstall script. Authors & Acknowlegements ------------------------- RadioTray was written by Carlos Ribeiro . RadioTray is Copyright (c) 2009, 2010 by Carlos Ribeiro ; it is distributed under the GNU General Public License, see COPYING for details. Radio Tray icon is a GPL icon made by WooThemes http://www.woothemes.com/2009/02/wp-woothemes-ultimate-icon-set-first-release/ radiotray-0.7.3/data/0000775000175000017500000000000012011044040015204 5ustar carloscarlos00000000000000radiotray-0.7.3/data/plugins/0000775000175000017500000000000012011044040016665 5ustar carloscarlos00000000000000radiotray-0.7.3/data/plugins/notification.plugin0000664000175000017500000000024411726255527022625 0ustar carloscarlos00000000000000[NotificationPlugin] name=Notifications desc=Shows message notifications on the desktop script=NotificationPlugin.py class=NotificationPlugin author=Carlos Ribeiro radiotray-0.7.3/data/plugins/GnomeMediaKeysPlugin.py0000664000175000017500000000441611726255527023316 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from Plugin import Plugin import dbus class GnomeMediaKeysPlugin(Plugin): def __init__(self): super(GnomeMediaKeysPlugin, self).__init__() def initialize(self, name, eventManagerWrapper, eventSubscriber, provider, cfgProvider, mediator, tooltip): self.name = name self.eventManagerWrapper = eventManagerWrapper self.eventSubscriber = eventSubscriber self.provider = provider self.cfgProvider = cfgProvider self.mediator = mediator self.tooltip = tooltip def getName(self): return self.name def activate(self): try: self.bus = dbus.SessionBus() self.bus_object = self.bus.get_object('org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/MediaKeys') self.bus_object.GrabMediaPlayerKeys("RadioTray", 0, dbus_interface='org.gnome.SettingsDaemon.MediaKeys') self.bus_object.connect_to_signal('MediaPlayerKeyPressed', self.handle_mediakey) except: print "Could not bind to Gnome for Media Keys" def handle_mediakey(self, *mmkeys): for key in mmkeys: if key == "Play": if (self.mediator.isPlaying()): self.mediator.stop() else: self.mediator.playLast() elif key == "Stop": if (self.mediator.isPlaying()): self.mediator.stop() radiotray-0.7.3/data/plugins/HelloWorldPlugin.py0000664000175000017500000000330411726255527022523 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from events.EventSubscriber import EventSubscriber from events.EventManager import EventManager from Plugin import Plugin import gtk import time # Basic example of a plugin class HelloWorldPlugin(Plugin): def __init__(self): super(HelloWorldPlugin, self).__init__() print "started" def getName(self): return self.name def activate(self): self.eventSubscriber.bind(EventManager.SONG_CHANGED, self.on_song_changed) self.tooltip.addSource(self.populate_tooltip) time.sleep(20) def populate_tooltip(self): return "Hello" def on_song_changed(self, data): print "song changed" print data def on_menu(self, data): print "menu clicked!" self.eventManagerWrapper.notify('teste', 'testing 1 2 3') def hasMenuItem(self): return True radiotray-0.7.3/data/plugins/MateMediaKeysPlugin.py0000664000175000017500000000441011763507002023116 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from Plugin import Plugin import dbus class MateMediaKeysPlugin(Plugin): def __init__(self): super(MateMediaKeysPlugin, self).__init__() def initialize(self, name, eventManagerWrapper, eventSubscriber, provider, cfgProvider, mediator, tooltip): self.name = name self.eventManagerWrapper = eventManagerWrapper self.eventSubscriber = eventSubscriber self.provider = provider self.cfgProvider = cfgProvider self.mediator = mediator self.tooltip = tooltip def getName(self): return self.name def activate(self): try: self.bus = dbus.SessionBus() self.bus_object = self.bus.get_object('org.mate.SettingsDaemon', '/org/mate/SettingsDaemon/MediaKeys') self.bus_object.GrabMediaPlayerKeys("RadioTray", 0, dbus_interface='org.mate.SettingsDaemon.MediaKeys') self.bus_object.connect_to_signal('MediaPlayerKeyPressed', self.handle_mediakey) except: print "Could not bind to mate for Media Keys" def handle_mediakey(self, *mmkeys): for key in mmkeys: if key == "Play": if (self.mediator.isPlaying()): self.mediator.stop() else: self.mediator.playLast() elif key == "Stop": if (self.mediator.isPlaying()): self.mediator.stop() radiotray-0.7.3/data/plugins/gnomemediakeys.plugin0000664000175000017500000000026311726255527023141 0ustar carloscarlos00000000000000[RadioTrayPlugin] name=Gnome Media Keys desc=Controls Radio Tray through keyboard multimedia keys script=GnomeMediaKeysPlugin.py class=GnomeMediaKeysPlugin author=Carlos Ribeiro radiotray-0.7.3/data/plugins/sleeptimer.config0000664000175000017500000000007711736420036022251 0ustar carloscarlos00000000000000 radiotray-0.7.3/data/plugins/history.plugin0000664000175000017500000000017111726255527021637 0ustar carloscarlos00000000000000[RadioTrayPlugin] name=History desc=Shows song history script=HistoryPlugin.py class=HistoryPlugin author=Carlos Ribeiro radiotray-0.7.3/data/plugins/helloworld.plugin0000664000175000017500000000017711726255527022317 0ustar carloscarlos00000000000000[RadioTrayPlugin] name=HelloWorld desc=This is a test plugin script=HelloWorld.py class=HelloWorldPlugin author=Carlos Ribeiro radiotray-0.7.3/data/plugins/HistoryPlugin.py0000664000175000017500000000502611726255527022114 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from events.EventSubscriber import EventSubscriber from events.EventManager import EventManager from Plugin import Plugin import gtk from lib import utils from lib.common import SYSTEM_PLUGIN_PATH, USER_PLUGIN_PATH import os class HistoryPlugin(Plugin): def __init__(self): super(HistoryPlugin, self).__init__() def getName(self): return self.name def activate(self): self.eventSubscriber.bind(EventManager.SONG_CHANGED, self.on_song_changed) if os.path.exists(os.path.join(USER_PLUGIN_PATH, "history.glade")): self.gladefile = utils.load_ui_file(os.path.join(USER_PLUGIN_PATH, "history.glade")) elif os.path.exists(os.path.join(SYSTEM_PLUGIN_PATH, "history.glade")): self.gladefile = utils.load_ui_file(os.path.join(SYSTEM_PLUGIN_PATH, "history.glade")) else: self.log.error('Error initializing History plugin: history.glade not found') self.text = self.gladefile.get_object('textview1') self.window = self.gladefile.get_object("dialog1") self.last_title = 'none' if (self.window): #dic = { "on_close_clicked" : self.on_close_clicked} self.gladefile.connect_signals(self) def on_song_changed(self, data): if('title' in data.keys()): title = data['title'] if title != self.last_title: self.last_title = title buffer = self.text.get_buffer() buffer.insert(buffer.get_end_iter(),title+'\n') def on_menu(self, data): self.window.show() def on_close_clicked(self, widget): self.window.hide() return True def hasMenuItem(self): return True radiotray-0.7.3/data/plugins/matemediakeys.plugin0000664000175000017500000000024511763506761022762 0ustar carloscarlos00000000000000[RadioTrayPlugin] name=Mate Media Keys desc=Controls Radio Tray through keyboard multimedia keys script=MateMediaKeysPlugin.py class=MateMediaKeysPlugin author=Ken radiotray-0.7.3/data/plugins/NotificationPlugin.py0000664000175000017500000000614111726256106023072 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from Plugin import Plugin import gtk import gobject import pynotify from lib.common import APP_ICON, APPNAME from events.EventManager import EventManager class NotificationPlugin(Plugin): def __init__(self): super(NotificationPlugin, self).__init__() def getName(self): return self.name def initialize(self, name, notification, eventSubscriber, provider, cfgProvider, mediator, tooltip): self.name = name self.notification = notification self.eventSubscriber = eventSubscriber self.provider = provider self.cfgProvider = cfgProvider self.mediator = mediator self.tooltip = tooltip def activate(self): self.notif = None self.lastMessage = None self.eventSubscriber.bind(EventManager.NOTIFICATION, self.on_notification) def on_notification(self, data): message = data['message'] title = data['title'] if self.lastMessage != message: self.lastMessage = message if self.notif == None: if pynotify.init(APPNAME): self.notif = pynotify.Notification(title, message) self.notif.set_urgency(pynotify.URGENCY_LOW) self.set_icon(data) self.notif.set_timeout(pynotify.EXPIRES_DEFAULT) self.notif.show() else: self.log.error('Error: there was a problem initializing the pynotify module') else: self.set_icon(data) self.notif.update(title, message) self.notif.show() def set_icon(self, data): #some radios publish cover data in the 'homepage' tag if('icon' in data.keys()): try: pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(data['icon'], 48, 48) self.notif.set_icon_from_pixbuf(pixbuf) except Exception, e: pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(APP_ICON, 48, 48) self.notif.set_icon_from_pixbuf(pixbuf) print e else: pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(APP_ICON, 48, 48) self.notif.set_icon_from_pixbuf(pixbuf) radiotray-0.7.3/data/plugins/sleeptimer.plugin0000664000175000017500000000022611726255527022310 0ustar carloscarlos00000000000000[RadioTrayPlugin] name=Sleep Timer desc=Stops playing after a predefined time script=SleepTimerPlugin.py class=SleepTimerPlugin author=Carlos Ribeiro radiotray-0.7.3/data/plugins/history.glade0000664000175000017500000000540211726255527021417 0ustar carloscarlos00000000000000 5 Song History 320 260 True normal True 2 True True automatic automatic True True False 1 True end gtk-close True True True True False False 1 False end 0 close radiotray-0.7.3/data/plugins/__init__.py0000664000175000017500000000000011726255527021016 0ustar carloscarlos00000000000000radiotray-0.7.3/data/plugins/SleepTimerPlugin.py0000664000175000017500000001456611736420036022523 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from Plugin import Plugin import gtk import gobject from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF class SleepTimerPlugin(Plugin): def __init__(self): super(SleepTimerPlugin, self).__init__() def initialize(self, name, eventManagerWrapper, eventSubscriber, provider, cfgProvider, mediator, tooltip): self.name = name self.eventManagerWrapper = eventManagerWrapper self.eventSubscriber = eventSubscriber self.provider = provider self.cfgProvider = cfgProvider self.mediator = mediator self.tooltip = tooltip self.menuItem = gtk.CheckMenuItem(self.getName(), False) self.menuItem.connect('activate', self.on_menu) self.menuItem.show() def activate(self): # sleep timer self.sleep_timer_id = None self.min_to_sleep = 0 self.ignore_toggle = False self.min_to_sleep_selected = self.cfgProvider.getConfigValue("sleep_timer") if self.min_to_sleep_selected == None: self.min_to_sleep_selected = 15 self.cfgProvider.setConfigValue("sleep_timer", str(self.min_to_sleep_selected)) else: self.min_to_sleep_selected = int(self.min_to_sleep_selected) self.tooltip.addSource(self.populate_tooltip) def getName(self): return self.name def on_sleep_timer(self): self.min_to_sleep-=1 if self.min_to_sleep == 0: # set menu state self.ignore_toggle = True self.menuItem.set_active(False) self.ignore_toggle = False self.sleep_timer_id = None self.mediator.stop() self.eventManagerWrapper.notify(_("Sleep Timer"), _("Sleep timer expired")) self.tooltip.update() return False self.tooltip.update() return True def on_sleep_menu(self, menu_item): if self.ignore_toggle: return state = menu_item.get_active() if state: if self.sleep_timer_id == None: sleep_timer_val = self.get_sleep_timer_value(self.min_to_sleep_selected) if sleep_timer_val > 0: self.start_sleep_timer(sleep_timer_val, True) self.cfg_provider.setConfigValue("sleep_timer", str(sleep_timer_val)) else: state = False else: self.stop_sleep_timer(True) # set menu state self.ignore_toggle = True menu_item.set_active(state) self.ignore_toggle = False self.updateTooltip() def populate_tooltip(self): if self.sleep_timer_id != None: return _("Sleep: %smin") % str(self.min_to_sleep) else: return None def start_sleep_timer(self, interval, display_msg): self.sleep_timer_id = gobject.timeout_add(interval*60000, self.on_sleep_timer) self.min_to_sleep = interval self.min_to_sleep_selected = interval if display_msg: self.eventManagerWrapper.notify(_("Sleep Timer"), _("%s minute sleep timer started") % str(interval)) def stop_sleep_timer(self, display_msg): gobject.source_remove(self.sleep_timer_id) self.sleep_timer_id = None if display_msg: self.eventManagerWrapper.notify(_("Sleep Timer"), _("Sleep timer stopped")) def get_sleep_timer_value(self, default_value): #gtk.gdk.threads_enter() dialog = gtk.Dialog(_("Edit Sleep Timer"), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) entry = gtk.Entry(4) entry.set_text(str(default_value)) hbox = gtk.HBox() hbox.pack_start(gtk.Label(_("Minutes:")), False, 5, 5) hbox.pack_end(entry, True, True, 5) dialog.vbox.pack_end(hbox, True, True, 20) dialog.set_icon_from_file(APP_ICON_ON) dialog.show_all() ret = dialog.run() sleep_timer_value = 0 if ret == gtk.RESPONSE_ACCEPT: if entry.get_text().isdigit(): sleep_timer_value = int(entry.get_text()) dialog.destroy() #gtk.gdk.threads_leave() return sleep_timer_value def on_menu(self, data): if self.ignore_toggle: return state = self.menuItem.get_active() if state: if self.sleep_timer_id == None: sleep_timer_val = self.get_sleep_timer_value(self.min_to_sleep_selected) if sleep_timer_val > 0: self.start_sleep_timer(sleep_timer_val, True) self.cfgProvider.setConfigValue("sleep_timer", str(sleep_timer_val)) else: state = False else: self.stop_sleep_timer(True) # set menu state self.ignore_toggle = True self.menuItem.set_active(state) self.ignore_toggle = False self.tooltip.update() def hasMenuItem(self): return True radiotray-0.7.3/data/configGui.glade0000664000175000017500000001272611726255527020156 0ustar carloscarlos00000000000000 5 First Time Run Config normal True 2 True True Please select how Radio Tray should appear 4 0 True (this choice will be saved in the configuration file) 4 1 True False 6 2 Icon in the Notification Area True True False True True rb_appindicator 3 App Indicator True True False True True rb_systray 4 1 True end gtk-cancel True True True True False False 0 gtk-ok True True True True False False 1 False end 0 button2 button1 radiotray-0.7.3/data/config.xml0000664000175000017500000000070612011044024017200 0ustar carloscarlos00000000000000 radiotray-0.7.3/data/radiotray.desktop0000664000175000017500000000020611726255527020625 0ustar carloscarlos00000000000000[Desktop Entry] Name=Radio Tray Terminal=false Exec=radiotray Icon=radiotray Type=Application Categories=AudioVideo;Audio;Player;GTK; radiotray-0.7.3/data/configPlugins.glade0000664000175000017500000001260111766200732021033 0ustar carloscarlos00000000000000 350 380 False 5 Config Plugins normal True False 2 True False end gtk-close True True True False True False False 1 False True end 0 True False True False 0 Available Plugins: True False False 0 True True automatic automatic True True True True 1 True False 10 Changes will only be visible after restarting Radio Tray True False False 2 True False False True 3 True True 1 button1 radiotray-0.7.3/data/images/0000775000175000017500000000000012011044040016451 5ustar carloscarlos00000000000000radiotray-0.7.3/data/images/radiotray_connecting.gif0000664000175000017500000000331311731732330023363 0ustar carloscarlos00000000000000GIF89a- !$0&!2#3)%53')5/8(+.6-"082+/92-0;3/<50:&=62<(?8,3=@*:5?,B;@7.5A80C:61ADB93EMCF5;EH7F=IDG?KEHA:GJBrƙSy:yy3O:\s/=O;C+#/ӚlO;K7*;`';̥sv삩asRGBbKGD pHYs  tIMElX6IDATx}yxUչ9I@OҫCPzRZA I8)  X~Qz)N)nL´9$z~%Xb%Xb%Xb%Xb%Xb%Xb%Xb8t$/zj1vBh8L|x캺R麎9ݽ,XUryc L)iӦxQaF-\1CRەRI)N̝;=z6xBH&1B!bι[7n8u,+"xr`c 8̙@ccc"77w !d= RPR>}Ǫ/^cx}}<-[ k^ʏ` L O92g3^ L)XSSs1 5k Ziڵib@`EȻBێEmBd2cW`i"^^~>R7j @ SqG&Tp4ML&󮔲f͚J];83B <?%̱xUMӀsWq-p=i.w*?x~OQ?+lJ0 /ċ4 c` ㎽!i?I)OM6mX|0_RCiތ3AdɒƸ4y"RW̚5kQ x{JVf!R`=6e=~׹.4-:s>9狋Iʺ!t;OkzzzVUWW焐$"U?v庮O7MpetYZZA)B>+ c1^0`ڵga2M{@u`U)Ux{M0&0@pRId2 !'Bill3iҤCLO 83+wbB>}A777ӧt1.Zż}wBz~@J o*. K9? @cK)0$4BaXm+ǎ;XMnA?@X 9 ߧYl$!`̓)ح(?X^s~!l[]Jsi/!DGM( Rppiss7n߉s9Bhuؔ4M#aYU@jRޝJza7 ĉg)@EeggNJ%j,ҳ34g{;fMݯԔ WXf2qSLYF"0̵N {BDM 1Ɨ9h9a$Ԭ`sxoNj[PP-Щ''t9 Xs8ނ NgrBJ B=}pw} !35M#JW cX7s⊳ 0z{{=來2eʁ7JСCqϣٌLTJYf_dŃ)dX ыP)RzYPKK4doB?-0zBi='{CCÙ#FxR!rPc 8v!#4M!T*2;l윜w௄O{wDиSN>Fq\rɗR݊x# %FXz1oڵ(tsu]_ac6lfr־ĄeBST`v-pЋAu]?5WV@b-:Ѫ4mBhhglul wŊp;HBH)TVVe˖}R$4vZ[$:5M[YZZV{UJd5#,mR6OBP_@~ظ# +jo{1͉D;pz'Lrrr{J!4"DxGԮ!{D"AJy2ໆ(!wi8Mo(@)=BfNl&F@@kkk7BhVЎٳt6c5z)gR(B)C)gAZMSm"Ź?/^@A"8c|j~MʤRjPf8d28pٳZZZ]^>r 1 B1qv\ @Tm lk`6m4GH^ۡAJ v,<3d2d Àd2 Dm3^< [<үc̢.97`:Y:WfyW80Ƙx =pj&d20Muܩ@24`R DR0HMC cR &Nm}R9 nR*ҹ]]]I1tuuIíDr- ٨7Mz{{0yjUJu#rV{[Dxw6Rxz/ú/1lu=4Qa+ߩ,Mv=Ì3pGGGuRv9 ktF(c,4%އ1:(!FȰ+ JL5V0 n&4iYHcL)Z&???m?Ƹe@iZB+(_wߜRaNhN@ @GatKt]G^scod2NPLixW_%VJk@\!Uю* teO2޽{I$WY$ ðiEvу1vW>z޳g06f O> B2Il|d[[x`;q0 lȷ3t]uv_u&16  vxr8<;7WKGGBKK ޽v| رGv3Əob%Cv:S?YvJL-kY|ڲeZZZھ};ܹZZZ`޽o>L&x;555B})ʼ1Ɵ,f;~AYPPO78 R̞Ν 꺾1vsw+]dQJAOOxݔ)S2xJB!vik3Bi ܭKh`_uTBA@IpCw^uU)I)a|I)uߘ7xc+ƸXUB>܁ !><oRznǮr@kP^@:۫HV wc.p̙մq)oTk`)sRUUo{Մ Beeeq]4̓@: t }7O@2!Ca`СrȐ!H)_|鿎RZf1ƞ_:w'NJ8ש/Zjw/klᗿ꠱'L? طR?㍺?GY^yĉWM8gu^L)] Ig aR$> q1!ǻwD#^:We)_6:n6|X L>Cnn+_{{u BHՂ 2s̩ĉ?㲲HUWW_iF{uFf.ThWPJ/vaR!WJG !6Up*J4pmm%祔_,RZe/2w(#FZT0Myܹg͙3'0(p9;H?sp1~LylI.(x ;cl4sȼyrKͻR(BhR9)titG JzXڌ=тs>1w'ځuڍg5^~圹s␕! !ʝ!krr,pPJ;\p !JRf%JR:!R*JOuR |^{mkbȐ!VJm袋^xR?pG0Ƴ)Iw96>ͫ3f]655&JHw=hN]ii駃Wwra9Y`xeg)ViaJ0RW80TM4tJx]rss_y'bF#.tdl8PUDrwSJuaV ,[RvRd_XE0B51{_ !7_뺾!4,N۫ xSO=c8> R2?h_űVCA( J֯a744va e(1eFҽΎ2 ~.clC}>=R;7}wѢEgb (wT~? ^(W$ &oNYYԿ !?x8\dB !4NBۥmQ =p ézReVAqRj=ܳ#T=!B=X__]5?UJ G/8RnuEXBc,EqFrs:Xs^XUUhH?JӴ),/Z)nֶF 8X, ؋S5R/PJ[UMZG61hQ5M]HSs^:QH>-#XOikǦi+M>a@'缨0&j !4`UMRʫ kŧjkM.bn#:]]J"A* XYP>!%KL >MR^9L) vK)e1vIee/|_^)>cD'n%HJyEEEB6V0 @ !9AIIɓٳwqίevBaiOGP,Yra0sz[,fikF-aR_yYsou$upD0Xu30ƛ NFp`1bp4xQ+'8+>vJcX'$cxh=v'x6  8n4B/bkx chVP O(eJ.Ȅ1nm7t8uB pLϟ/`1cD MLy4q(~iNUJu]]!Hcu!O~H8~LJ)jfi ^zK,K,K,K,K,K,K,K,ǾWBGIENDB`radiotray-0.7.3/data/images/radiotray_on.png0000664000175000017500000002637711726255527021722 0ustar carloscarlos00000000000000PNG  IHDR>a IDATx} TՙݪYU%L4јڀ"QBHpW b2QI2ә3DŨQH$APYE8.74 е}uvu? jI&jI&jI&jI&jI&jI&jI&>0?INbP cG}ol$QJY~>^x>Q\14~pH$ 4l&o~CﮆOC#_pP"9hiv/ò ?5_m)ϛ{#[> ^v477[4*N49"DŽcRܿ?0LWraa V]hӶa ess^7(s'v}a]_[N{0ę<3<Թ<+*) scgBN~Gkod%SF?,4rUB;0)ݳN;]C6z0,6-㯛6?c$϶/73Ȧ'Fôv/oZ2dgS `b;a駱G/IkBJ9 ώGR੯aJ/a²|;1cഝP8=mߜK5y9*b((>.\`ZrIJڅ)(^GCYX)앴޴`;8;0e3ӊe 8Ci7TOʁWLa]t d΀ o#9! D]W7Vu԰̐_Saum'3 ڠr?}isW)?/ҥLh 4s ,r,#-GqC KJ&/}(z l lyE%! ɛT*j\W|X Nz}: Vi9ο\iGp[eN{n) ~pOtT=iyWzoR\ ؃B&q;`I=AQ+QwkRUJ8U$[ٓNZ[1JW plbe@G#vNڈ6Z L: 1voocw[VV}mK׍[APBB81Z }}.3f?[;>gA[e,JX)uI31{9q;}+1$Q$= `ؔ3^k;wc?c{7ٵ[l%ӟ82[_lhc[ƫc#+YyU:lQXr*a㛑϶^؁C%pݏ7ZNj(^_`Cā {m+Jl_z2{'mQly{?rXYf*qs\=(#O- zQrm$p~~}- Xk̴0ҤŐ:dd}mr?~ƒdvnsǾ`OP~gҷ\#/N]+\bH)N7C݄ݩgvnČI;u;3iFh!g1j /6.ob)G^_$0-LG~?#۟8۳H{#)6 &QrM.8-bEJJbūT ?`0O;qI57V/'=N՝ZT@b@gB  p b74w"q󞣧=O9v#=!+ ll!u r9զo`2+ $†P8R` .{lIX+*ZD. |u^a)Tu}bsy93ӻVr3r10ƼhO.9jҷ˒z"B2IZԙ'y.?lۿK>\+B*Lh!\ )a/hE}E9e'lB♸">kr}e"jz7K|˨F, pA CԶm23~˶U EhR]Ͼd͕HܻnH#ÂZF)Ypen絪 1yro0h^Ri7,lލe^'U'q6g`͋RWTR  أ ~2sܡk%ꁍTjN(nvZA<}r]gh3V"ZQuPBDAYI]78WcXe%`'N0&X&κNsViDL*#^(g~<`9)EMXYл`%ri%{茁vVՔ_eIz 5 QɊ^mۦm\MruK=Mɴ\pW*_Cim(S*['ƪ3Ds^+T1Db+RS qبRwOl Z?)*[p 9 }ͲDԚ! $Gވm_ nN̄ci+CőXwOR~}a0[M1dR9w歗!˖}1%|6"%1Ea#űƵ_M@TUHI8d0G3]uFyL2Tx^>jG`Ry ޖ}}ت"a`/ ,:o$ wʼGs™ОvSJ{w]j gZ9Se%'/25 erX'm 9ZZ@5!w 󚇾cҔR}0PPE{&W'uvz ˅zq?\re%*Cqz;|sIګ0?09n\#^ٷ0@St -֎֟};Tj~Cn|K vBuov󫯬b_z݉?x빍nLXɄWvgy'8,5XHN#9u%V jRihIpΞQkJGav}DF|r9²9Mq8\okӂmaUWmy.hE4 5""D"&hU%Vt`(8sk*G޹da+U7fi[ 0|)H8u8aqՕg֋F#Bb FDLv;TRG#AX I֥ܻPP׹j-DH8gUN3%CKT$LseƳ+!cj/&mO؆׎To J( fFT }&Tr1X` TvV.JfׯMX /LY:'fl8l:4C=` &[sq<>Q߿\R!)YuyLy@M]GZ+QPŢP ܺeW f=#;YLYFCc[VEZR%O KHuC8Q\~G[g7Z@uRVJXoE81^H@G D: 3P&h"KiE<\1R%JA,P&٬od04lP%I^l39c^ۤ1ԧ#1$v G]8(|<p_FހʣF*zdC]! cz+ cƖVA*#y|'*uQ%^= ZzLh\9&A0ށב,X42 CBV~AoA4$$#VBSU &FF tqHE#@E0"ƍDY@Ȫ@ WndyUFBaVc޸ޒ|"z,cy ap"T݃--4-`ǹ>` BIΎCU"t g%ej_2.0Dq&G^a ~%?戉bh R+[;'l[xƦM? ޑl [,^uz-{-v6ÉS~ J˲6pvб{ :8t1eB{' c5|( ]ֆCyI){;1s ͤ$tC^gD,=n>mA~SMŊi˖Q^ޓIgk<œQPp~6Y]Dp<@g i_zCUT?"KT8f`!@;0V 8~vYUWJBBU;pu9?#+?i+pW`80ɱSv,rg6zDj\&x4Ο s`|1{4Q π) Ӝh ¶ Gø| Un_/~_p:@>$A!,V?!lDpo,xzu2_gJpVHRF-gTd0⢧uK{9n}T|;uvK}a !_-"ݤW̘ƋA Hv$4z-r@m$@`̸"29{CkBRD$$눞{^VI& bAV@DhaxX!@/88 I:uhg%rк5+]0q;r8f^#3k{i4c{4u FCF~}w7H`ZR[}x/) N<UX-= Oü|g?O ֒+|O *( ܷZ|na;'6\,t gGʽ6F׳-4x˹nX<_IjKY+UUk(`3`k~柆LOsN)_,{`N0<\믘9_>aM aP;l"RśȚ4St?S?QLUZHhp oF޺tbwCR>¸O:r]M=G(mmP"B?/ ap,ʓa?9٧7WV=]sov+]uOv> ލ"ה0 b޴RcM;OKquR,WY2a "2F&N@2m7/T.5D-+1p'%{lի_q_s ŪոjO$Cw۟-_Q>'QKg?^eO]rt$=U%SC`*\9arC2s6o-Ͳĉa6Riϲ]+ K?Wm| qf8^ Sd Ք42pKDK^J  xhJ5y ϊ+y'oѣ\Y4o_qwi[24BKጟhB<5KI?d{1|`5Mg~9wЌcN;L+?S&,x qҳmAm IDATql,iX5Fd˄I=:ٲMbl3pMZEqA)l7:.+WYJOMN&GϗpgT2{Zx-^wK?"@%\%LZ/9!RO_'M*1.'D>8ϯqX oxs%[:¼a drWwDl~g[q s@ W`e87%PԮʣCEaWے_ ifԙ(_`*%K^Dc;SpnZ q"xBb"<agi5m7@]pe`^N,$N{RHk0Aii_j#i{}7U@ |"CR' bUA,_<Rİý|;*NJt գ1+G_#WhXA,;bP_KUm^%2IZ>wߥv&m hPЇdĩ 9he۹fjܢ GIԷAHic2ͤ7|jlB&2DLUE?Jhe3qĂ̭fKzGTstSJ Iqū8 Kd ) m;uD~N5"da@UD+ڣ2bQ u)h^:i,X,=aL`Qdiv!|>-=jtO!03f̐ҋm#GMqmu.F9|v2z/dIQ'bn^~gҷl˺w 4^Veܳިwǰ[%8GT(Q)[p(("pSZG20]`g8ٍ:r~2E"(>{;R>[L@aT~d-<1^L7nU.1nQr|"Sڅt<雕fO5Hss.$xGv3b]좦a BH4 rg2xo̊F.lٙ|ZP4e$ോӸq-E\{ۖ%@ "CŒJT0#/{㝿d+piم&Չum7_q=&q#t} %FUBONp.]o1Ɗ508+&5OAӖ |-u(L"vr}|ϻ5uC9Vm97c]:ꇁx!OfXٺޯ[r$Tv_jjcf2YjW┱A|AH&y6]_?h̘1R ãA=˒dAY[{ [p;mrdi`쯙 &SqGdRDg2ї/ Vdot֭M+<عԽ fx*/7I:3'tʌ_KPrBţ߽W%+Yn0̍x㼅]|!pidf/ׯ_'T{C:ֽo<:*_aۗW7XN FS֗ VFV2 FNj7kCx颳. Sr usw `CEg0rHOS1_·= LL#y6" fh54 2gbV"ڤI!z^0N b$ryC,y8\xgqpbRqQF5N2QyL\*J)5M$eq^.45lf$3JN{ɑ0i>Pl*qy6v׆WV{ae[i:nP00?3uCŴpeI@ B,m~睲ʠCRWv,XWih T:2-^TrsSvXնp <xhGaȘOhK_ğTQG‹pCST+Xobbnty[Ô&Ͽ~ʝ|S h~6wJzpS3 ;^oº]WP## OuML ЭQuK;_G"Yxǻfds4sqX%|nb#gE ZPRa.@̏H-?rZbֿ@g/Gջ9C~h;b){ޠչDf5|[6n0~0f-> T V@\'.'֩z(>1̏^pNat4%%=:czCx3yO V0]; . #c\Y][/"&u ON?ڵ[UUUdm+^N9hQ.Х ø>|+-#x'rQm ~eyv8`́?x߭\U*7RAncFO]B0ncN .E!-Dн l9㄰[@B(Lv<ڢPq8SX^V>ncZ7]pwX.]>R fTf54C~1B/+$VCczTuΥ pXr[zh=4\еEJv=\0r#ǃED#qOqe^2naӧOo?ι@߇!. 㸗gL)b^{m0?YԷf0ԯSxo^}q ft d|n]:J Х_1b(((((k}}}8~s y\CjwX ^ki;l6`?`@1\d ܁g.az< ܣ.k+@Qbp>qݞ O@\A So<9&@$$x8h$,E0D' cd!d !""<i5d`b19gdK<0 h 7a&Wdn " oTZMBZKHb20>-$r8dTIQ3yU60|dR.e?k\ W݃Zy혀w8ֹ ~@\G jV˥իR!fe[n7ˈ۫O7hJ X@Et{}5 }:7}T@N?^_[A6+w';#81 X66=5y,  :1:o  HlKE,Ca,<@a,,vSgd4 Dk "yh kk۰HJHޘ`͂cy,w~TCya((UIENDB`radiotray-0.7.3/data/images/radiotray.png0000664000175000017500000002637711726255527021226 0ustar carloscarlos00000000000000PNG  IHDR>a IDATx} TՙݪYU%L4јڀ"QBHpW b2QI2ә3DŨQH$APYE8.74 е}uvu? jI&jI&jI&jI&jI&jI&jI&>0?INbP cG}ol$QJY~>^x>Q\14~pH$ 4l&o~CﮆOC#_pP"9hiv/ò ?5_m)ϛ{#[> ^v477[4*N49"DŽcRܿ?0LWraa V]hӶa ess^7(s'v}a]_[N{0ę<3<Թ<+*) scgBN~Gkod%SF?,4rUB;0)ݳN;]C6z0,6-㯛6?c$϶/73Ȧ'Fôv/oZ2dgS `b;a駱G/IkBJ9 ώGR੯aJ/a²|;1cഝP8=mߜK5y9*b((>.\`ZrIJڅ)(^GCYX)앴޴`;8;0e3ӊe 8Ci7TOʁWLa]t d΀ o#9! D]W7Vu԰̐_Saum'3 ڠr?}isW)?/ҥLh 4s ,r,#-GqC KJ&/}(z l lyE%! ɛT*j\W|X Nz}: Vi9ο\iGp[eN{n) ~pOtT=iyWzoR\ ؃B&q;`I=AQ+QwkRUJ8U$[ٓNZ[1JW plbe@G#vNڈ6Z L: 1voocw[VV}mK׍[APBB81Z }}.3f?[;>gA[e,JX)uI31{9q;}+1$Q$= `ؔ3^k;wc?c{7ٵ[l%ӟ82[_lhc[ƫc#+YyU:lQXr*a㛑϶^؁C%pݏ7ZNj(^_`Cā {m+Jl_z2{'mQly{?rXYf*qs\=(#O- zQrm$p~~}- Xk̴0ҤŐ:dd}mr?~ƒdvnsǾ`OP~gҷ\#/N]+\bH)N7C݄ݩgvnČI;u;3iFh!g1j /6.ob)G^_$0-LG~?#۟8۳H{#)6 &QrM.8-bEJJbūT ?`0O;qI57V/'=N՝ZT@b@gB  p b74w"q󞣧=O9v#=!+ ll!u r9զo`2+ $†P8R` .{lIX+*ZD. |u^a)Tu}bsy93ӻVr3r10ƼhO.9jҷ˒z"B2IZԙ'y.?lۿK>\+B*Lh!\ )a/hE}E9e'lB♸">kr}e"jz7K|˨F, pA CԶm23~˶U EhR]Ͼd͕HܻnH#ÂZF)Ypen絪 1yro0h^Ri7,lލe^'U'q6g`͋RWTR  أ ~2sܡk%ꁍTjN(nvZA<}r]gh3V"ZQuPBDAYI]78WcXe%`'N0&X&κNsViDL*#^(g~<`9)EMXYл`%ri%{茁vVՔ_eIz 5 QɊ^mۦm\MruK=Mɴ\pW*_Cim(S*['ƪ3Ds^+T1Db+RS qبRwOl Z?)*[p 9 }ͲDԚ! $Gވm_ nN̄ci+CőXwOR~}a0[M1dR9w歗!˖}1%|6"%1Ea#űƵ_M@TUHI8d0G3]uFyL2Tx^>jG`Ry ޖ}}ت"a`/ ,:o$ wʼGs™ОvSJ{w]j gZ9Se%'/25 erX'm 9ZZ@5!w 󚇾cҔR}0PPE{&W'uvz ˅zq?\re%*Cqz;|sIګ0?09n\#^ٷ0@St -֎֟};Tj~Cn|K vBuov󫯬b_z݉?x빍nLXɄWvgy'8,5XHN#9u%V jRihIpΞQkJGav}DF|r9²9Mq8\okӂmaUWmy.hE4 5""D"&hU%Vt`(8sk*G޹da+U7fi[ 0|)H8u8aqՕg֋F#Bb FDLv;TRG#AX I֥ܻPP׹j-DH8gUN3%CKT$LseƳ+!cj/&mO؆׎To J( fFT }&Tr1X` TvV.JfׯMX /LY:'fl8l:4C=` &[sq<>Q߿\R!)YuyLy@M]GZ+QPŢP ܺeW f=#;YLYFCc[VEZR%O KHuC8Q\~G[g7Z@uRVJXoE81^H@G D: 3P&h"KiE<\1R%JA,P&٬od04lP%I^l39c^ۤ1ԧ#1$v G]8(|<p_FހʣF*zdC]! cz+ cƖVA*#y|'*uQ%^= ZzLh\9&A0ށב,X42 CBV~AoA4$$#VBSU &FF tqHE#@E0"ƍDY@Ȫ@ WndyUFBaVc޸ޒ|"z,cy ap"T݃--4-`ǹ>` BIΎCU"t g%ej_2.0Dq&G^a ~%?戉bh R+[;'l[xƦM? ޑl [,^uz-{-v6ÉS~ J˲6pvб{ :8t1eB{' c5|( ]ֆCyI){;1s ͤ$tC^gD,=n>mA~SMŊi˖Q^ޓIgk<œQPp~6Y]Dp<@g i_zCUT?"KT8f`!@;0V 8~vYUWJBBU;pu9?#+?i+pW`80ɱSv,rg6zDj\&x4Ο s`|1{4Q π) Ӝh ¶ Gø| Un_/~_p:@>$A!,V?!lDpo,xzu2_gJpVHRF-gTd0⢧uK{9n}T|;uvK}a !_-"ݤW̘ƋA Hv$4z-r@m$@`̸"29{CkBRD$$눞{^VI& bAV@DhaxX!@/88 I:uhg%rк5+]0q;r8f^#3k{i4c{4u FCF~}w7H`ZR[}x/) N<UX-= Oü|g?O ֒+|O *( ܷZ|na;'6\,t gGʽ6F׳-4x˹nX<_IjKY+UUk(`3`k~柆LOsN)_,{`N0<\믘9_>aM aP;l"RśȚ4St?S?QLUZHhp oF޺tbwCR>¸O:r]M=G(mmP"B?/ ap,ʓa?9٧7WV=]sov+]uOv> ލ"ה0 b޴RcM;OKquR,WY2a "2F&N@2m7/T.5D-+1p'%{lի_q_s ŪոjO$Cw۟-_Q>'QKg?^eO]rt$=U%SC`*\9arC2s6o-Ͳĉa6Riϲ]+ K?Wm| qf8^ Sd Ք42pKDK^J  xhJ5y ϊ+y'oѣ\Y4o_qwi[24BKጟhB<5KI?d{1|`5Mg~9wЌcN;L+?S&,x qҳmAm IDATql,iX5Fd˄I=:ٲMbl3pMZEqA)l7:.+WYJOMN&GϗpgT2{Zx-^wK?"@%\%LZ/9!RO_'M*1.'D>8ϯqX oxs%[:¼a drWwDl~g[q s@ W`e87%PԮʣCEaWے_ ifԙ(_`*%K^Dc;SpnZ q"xBb"<agi5m7@]pe`^N,$N{RHk0Aii_j#i{}7U@ |"CR' bUA,_<Rİý|;*NJt գ1+G_#WhXA,;bP_KUm^%2IZ>wߥv&m hPЇdĩ 9he۹fjܢ GIԷAHic2ͤ7|jlB&2DLUE?Jhe3qĂ̭fKzGTstSJ Iqū8 Kd ) m;uD~N5"da@UD+ڣ2bQ u)h^:i,X,=aL`Qdiv!|>-=jtO!03f̐ҋm#GMqmu.F9|v2z/dIQ'bn^~gҷl˺w 4^Veܳިwǰ[%8GT(Q)[p(("pSZG20]`g8ٍ:r~2E"(>{;R>[L@aT~d-<1^L7nU.1nQr|"Sڅt<雕fO5Hss.$xGv3b]좦a BH4 rg2xo̊F.lٙ|ZP4e$ോӸq-E\{ۖ%@ "CŒJT0#/{㝿d+piم&Չum7_q=&q#t} %FUBONp.]o1Ɗ508+&5OAӖ |-u(L"vr}|ϻ5uC9Vm97c]:ꇁx!OfXٺޯ[r$Tv_jjcf2YjW┱A|AH&y6]_?h̘1R ãA=˒dAY[{ [p;mrdi`쯙 &SqGdRDg2ї/ Vdot֭M+<عԽ fx*/7I:3'tʌ_KPrBţ߽W%+Yn0̍x㼅]|!pidf/ׯ_'T{C:ֽo<:*_aۗW7XN FS֗ VFV2 FNj7kCx颳. Sr usw `CEg0rHOS1_·= LL#y6" fh54 2gbV"ڤI!z^0N b$ryC,y8\xgqpbRqQF5N2QyL\*J)5M$eq^.45lf$3JN{ɑ0i>Pl*qy6v׆WV{ae[i:nP00?3uCŴpeI@ B,m~睲ʠCRWv,XWih T:2-^TrsSvXնp <xhGaȘOhK_ğTQG‹pCST+Xobbnty[Ô&Ͽ~ʝ|S h~6wJzpS3 ;^oº]WP## OuML ЭQuK;_G"Yxǻfds4sqX%|nb#gE ZPRa.@̏H-?rZbֿ@g/Gջ9C~h;b){ޠչDf5|[6n0~0f-> T V@\'.'֩z(>1̏^pNat4%%=:czCx3yO V0]; . #c\Y][/"&u ON?ڵ[UUUdm+^N9hQ.Х ø>|+-#x'rQm ~eyv8`́?x߭\U*7RAncFO]B0ncN .E!-Dн l9㄰[@B(Lv<ڢPq8SX^V>ncZ7]pwX.]>R fTf54C~1B/+$VCczTuΥ pXr[zh=4\еEJv=\0r#ǃED#qOqe^2naӧOo?ι@߇!. 㸗gL)b^{m0?YԷf0ԯSxo^}q ft d|n]:J Х_1 radiotray-0.7.3/data/configBookmarks.glade0000664000175000017500000005350711726255527021364 0ustar carloscarlos00000000000000 True Configure Radios 500 300 True 6 6 True 6 True False automatic automatic in True True 0 True start gtk-add True False False True False False 0 Add Group True False False False False 1 Separator True False False 0.4699999988079071 False False 2 gtk-edit True False False True False False 3 gtk-remove True True True True False False 4 False 1 0 True end gtk-close True False False True False False 0 False end 1 5 500 normal True 2 True 3 2 6 6 True 1 5 Radio name: False GTK_FILL True True True 1 2 True 1 5 URL : 1 2 GTK_FILL True True 1 2 1 2 True 1 5 Group : 2 3 GTK_FILL True 1 2 2 3 1 True end gtk-cancel True True True True False False 0 gtk-save True True True True False False 1 False end 0 cancelButton okButton 5 500 normal True 2 True 2 2 6 6 True 1 5 Name : False GTK_FILL True 1 5 Parent Group : False 1 2 GTK_FILL True True 1 2 True 1 2 1 2 1 True end gtk-cancel True True True True False False 0 gtk-save True True True True False False 1 False end 0 groupCancelButton groupOkButton 5 Move separator to another group 320 normal True 2 True 2 2 6 6 True Group : False 1 2 GTK_FILL True 1 2 1 2 1 True end gtk-cancel True True True True False False 0 gtk-save True True True True False False 1 False end 0 moveCancelButton moveOkButton radiotray-0.7.3/setup.cfg0000664000175000017500000000007111726255527016144 0ustar carloscarlos00000000000000[sdist] formats=bztar,gztar,zip [install] prefix = /usr radiotray-0.7.3/NEWS0000664000175000017500000000701512011027101014774 0ustar carloscarlos00000000000000Radio Tray 0.7.3 - 09/08/2012 ============================= * Added buffer size control to configuration file ("buffer_sizer") * Added partial support for album cover download * Fixed issues with icon not appearing in some platforms * Improved tooltip on sleeptimer * Fixed issue with configuration location (issue #120) * Added plugin for multimedia keys under Mate (thanks to Ken) * Improved plugin configuration dialog * Updated translations * Added toggle operation to DBus interface * Fix problem with segmentatinon faults * Fix problem with temporary network failures Radio Tray 0.7.2 - 02/02/2012 ============================= * Added several updated translations * Fixed issue with icon on appindicator Radio Tray 0.7.1 - 09/12/2011 ============================= * Added a missing file to package * Updated translations Radio Tray 0.7 - 08/12/2011 ============================= * Added plugins system * Moved sleep timer functionality to a plugin * Improved user interaction in bookmarks configuration dialog * Moved gnome media shortcut keys funcionality to a plugin * Moved notifications to a plugin * New Song History plugin * Added a proper logging * Read-only bookmark support * Updated translations * Increased default radio stations list * Fix for MMS redirects Radio Tray 0.6.4 - ============================= * Several bug fixes * Updated translations * Added first run configuration dialog Radio Tray 0.6.3 - 20/01/2011 ============================= * Fixed build Radio Tray 0.6.2 - 18/01/2011 ============================= * Added --resume parameter to play last radio station * Added application indicator support * Fixed several bugs * Added user-agent information * Added sleep timer * Updated translations and added a few more Radio Tray 0.6.1 - 16/09/2010 ============================= * Added new translations and updated existing ones * Fixed several small bugs * Added sub-menus * Improved configuration dialogs UI a little * Fixed several problems with playlist parsers * Added option to reload bookmarks * Improved notification system * Increased number of stations on the default bookmarks file Radio Tray 0.6 - 11/06/2010 ============================= * Updated translations * Added volume control by using the mouse scrollwheel and corresding information on the tooltip * Added DBus interface * Fixed several small bugs * Added separators to radio menu * Added support for playing directly by URL, via DBus * Added XSPF playlist format support * Added MPRIS support to DBus interface * Added keyboard media keys support * Added ASF playlist format * Improved playlist decoding * Added RAM playlist support * Added configuration file Radio Tray 0.5.1 - 11/04/2010 ============================= * Added contributed translation language files * Improved gui feedback * Several small fixes Radio Tray 0.5 - 20/03/2010 =========================== * Fixed radiotray startup bugs, by reorganizing application structure * Added translation support Radio Tray 0.4 - 16/02/2010 =========================== * Added radio sort operation * Enhanced tooltip, now shows song information * Improved playlist support Radio Tray 0.3 - 30/01/2010 =========================== * Fixed support for apostrophes in radio names * Fixed scrollbar issue * Added support for M3U playlist format * Added support for ASX,WAX and WVX playlist formats Radio Tray 0.2 - 17/01/2010 =========================== * Added support for shoutcast/icecast playlists * Added desktop entry file Radio Tray 0.1 - 09/01/2010 =========================== * Initial release radiotray-0.7.3/src/0000775000175000017500000000000012011044040015062 5ustar carloscarlos00000000000000radiotray-0.7.3/src/AsfPlaylistDecoder.py0000664000175000017500000000426111726255527021212 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lib.common import USER_AGENT from lxml import etree from lxml import objectify from StringIO import StringIO import logging class AsfPlaylistDecoder: def __init__(self): self.log = logging.getLogger('radiotray') self.log.debug('Initializing ASF playlist decoder') def isStreamValid(self, contentType, firstBytes): if('video/x-ms-asf' in contentType and firstBytes.strip().lower().startswith('[reference]')): self.log.info('Stream is readable by ASF Playlist Decoder') return True else: return False def extractPlaylist(self, url): self.log.info('Downloading playlist..') req = urllib2.Request(url) req.add_header('User-Agent', USER_AGENT) f = urllib2.urlopen(req) str = f.read() f.close() self.log.info('Playlist downloaded') self.log.info('Decoding playlist...') playlist = [] lines = str.split("\n") for line in lines: if (line.startswith("Ref") == True): list = line.split("=", 1) tmp = list[1].strip() if (tmp.endswith("?MSWMExt=.asf")): playlist.append(tmp.replace("http", "mms")) else: playlist.append(tmp) return playlist radiotray-0.7.3/src/AppIndicatorGui.py0000664000175000017500000002163711736420036020507 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import sys from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF, APP_INDICATOR_ICON_CONNECT, IMAGE_PATH try: import gtk import gtk.glade import gobject except: sys.exit(1) import textwrap import logging # This class handles the gui interface for the Ubuntu's app indicator API class AppIndicatorGui: def __init__(self, handler, mediator, cfg_provider, provider): self.handler = handler self.mediator = mediator self.cfg_provider = cfg_provider self.provider = provider self.log = logging.getLogger('radiotray') def buildMenu(self): try: import appindicator self.app_indicator = appindicator.Indicator(APPNAME, APP_INDICATOR_ICON_OFF , appindicator.CATEGORY_APPLICATION_STATUS) self.app_indicator.set_status(appindicator.STATUS_ACTIVE) except Exception as e: self.log.debug(e) self.log.warn("Failed to create an Application Indicator!") self.app_indicator = None self.app_indicator.set_icon_theme_path(IMAGE_PATH) self.turnOnOff = None self.metadata_menu_item = None self.perferences_submenu = None self.preferences_menu = None self.radioMenu = gtk.Menu() self.build_app_indicator_menu(self.radioMenu) self.app_indicator.set_menu(self.radioMenu) self.handler.updateTooltip() def build_app_indicator_menu(self, menu): # config menu if self.turnOnOff == None: if not self.mediator.context.station: self.turnOnOff = gtk.MenuItem(_("Turned Off"), False) self.turnOnOff.set_sensitive(False) else: self.turnOnOff = gtk.MenuItem(_('Turn On "%s"') % self.mediator.context.station, False) self.turnOnOff.set_sensitive(True) self.turnOnOff.connect('activate', self.handler.on_turn_on_off) # stream metadata info if self.metadata_menu_item == None: self.metadata_menu_item = gtk.MenuItem("Idle", False) self.metadata_menu_item.set_sensitive(False) # if self.sleep_timer_menu_item == None: # self.sleep_timer_menu_item = gtk.CheckMenuItem(_("Sleep Timer")) if self.preferences_menu == None: self.preferences_menu = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES) menu_config_radios = gtk.MenuItem(_("Configure Radios...")) menu_reload_bookmarks = gtk.MenuItem(_("Reload Bookmarks")) menu_config_plugin = gtk.MenuItem(_("Configure Plugins...")) #Check bookmarks file status menu_config_radios.set_sensitive(self.provider.isBookmarkWritable()) # build menu.append(self.turnOnOff) menu.append(gtk.MenuItem()) menu.append(self.metadata_menu_item) menu.append(gtk.MenuItem()) self.provider.walk_bookmarks(self.group_callback, self.bookmark_callback, menu) menu_config_radios.connect('activate', self.handler.on_preferences) menu_reload_bookmarks.connect('activate', self.handler.reload_bookmarks) menu_config_plugin.connect('activate', self.handler.on_plugin_preferences) menu.append(gtk.MenuItem()) # build preferences menu.append(self.preferences_menu) if self.perferences_submenu == None: self.perferences_submenu = gtk.Menu() self.preferences_menu.set_submenu(self.perferences_submenu) #self.perferences_submenu.append(gtk.MenuItem()) self.perferences_submenu.append(menu_config_radios) self.perferences_submenu.append(menu_reload_bookmarks) # plugins submenu menu_plugins_item = gtk.MenuItem("Plugins", False) self.menu_plugins = gtk.Menu() self.menu_plugins.append(menu_config_plugin) self.menu_plugins.append(gtk.MenuItem()) #add separator menu_plugins_item.set_submenu(self.menu_plugins) menu.append(menu_plugins_item) menu_about = gtk.ImageMenuItem(gtk.STOCK_ABOUT) menu_quit = gtk.ImageMenuItem(gtk.STOCK_QUIT) menu_quit.connect('activate', self.handler.on_quit) menu_about.connect('activate', self.handler.on_about) menu.append(menu_about) menu.append(menu_quit) menu.show_all() try: self.app_indicator.connect("scroll-event", self.app_indicator_scroll) except: # not available in this version of app indicator self.log.info("App indicator scroll events are not available.") def app_indicator_scroll(self, indicator, delta, direction): if direction == 0: self.mediator.volume_up() else: self.mediator.volume_down() def update_radios(self): for child in self.radioMenu.get_children(): self.radioMenu.remove(child) self.build_app_indicator_menu(self.radioMenu) def group_callback(self, group_name, user_data): new_user_data = None if group_name != 'root': group = gtk.MenuItem(group_name, False) user_data.append(group) new_user_data = gtk.Menu() group.set_submenu(new_user_data) else: new_user_data = self.radioMenu return new_user_data def bookmark_callback(self, radio_name, user_data): if radio_name.startswith("[separator-"): separator = gtk.MenuItem() user_data.append(separator) separator.show() else: radio = gtk.MenuItem(radio_name, False) radio.show() radio.connect('activate', self.handler.on_start, radio_name) user_data.append(radio) def state_changed(self, data): state = data['state'] if(state == 'playing'): station = data['station'] self.turnOnOff.set_label(C_('Turns off the current radio.', 'Turn Off "%s"') % station) self.turnOnOff.set_sensitive(True) self.app_indicator.set_icon(APP_INDICATOR_ICON_ON) elif(state == 'paused'): if not self.mediator.context.station: self.turnOnOff.set_label(_('Turned Off')) self.turnOnOff.set_sensitive(False) else: self.turnOnOff.set_label(_('Turn On "%s"' % self.mediator.context.station)) self.turnOnOff.set_sensitive(True) self.app_indicator.set_icon(APP_INDICATOR_ICON_OFF) elif(state == 'connecting'): station = data['station'] self.turnOnOff.set_sensitive(True) self.turnOnOff.set_label(C_('Turns off the current radio.', 'Turn Off "%s"') % station) self.app_indicator.set_icon(APP_INDICATOR_ICON_CONNECT) def setTooltip(self, text): self.metadata_menu_item.set_label(text) def getCommonTooltipData(self): songInfo = self.mediator.getContext().getSongInfo() volume = self.mediator.getVolume() if (self.mediator.getContext().state == 'playing'): if(songInfo): otherInfo = "(vol: %s%%)" % (volume) # don't break volume info... text = textwrap.wrap(songInfo, 30) if (30 - len(text[-1])) >= (len(otherInfo)+1): text[-1] += " " + otherInfo else: text.append(otherInfo) return "\n".join(text) else: return C_("Playing status tooltip information", "Playing (vol: %s%%)") % (volume) else: return C_("Informs Radio Tray is idle as a tooltip.", "Idle (vol: %s%%)") % (volume) def getPluginMenu(self): return self.menu_plugins radiotray-0.7.3/src/XspfPlaylistDecoder.py0000664000175000017500000000410511726255527021416 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lxml import etree from lxml import objectify from StringIO import StringIO from lib.common import USER_AGENT import logging class XspfPlaylistDecoder: def __init__(self): self.log = logging.getLogger('radiotray') self.log.debug('XSPF playlist decoder') def isStreamValid(self, contentType, firstBytes): if('application/xspf+xml' in contentType): self.log.info('Stream is readable by XSPF Playlist Decoder') return True else: return False def extractPlaylist(self, url): self.log.info('Downloading playlist...') req = urllib2.Request(url) req.add_header('User-Agent', USER_AGENT) f = urllib2.urlopen(req) str = f.read() f.close() self.log.info('Playlist downloaded') self.log.info('Decoding playlist...') parser = etree.XMLParser(recover=True) root = etree.parse(StringIO(str),parser) elements = root.xpath("//xspf:track/xspf:location",namespaces={'xspf':'http://xspf.org/ns/0/'}) result = [] for r in elements: result.append(r.text) if (len(result) > 0): return result else: return None radiotray-0.7.3/src/PlsPlaylistDecoder.py0000664000175000017500000000414011726255527021233 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lib.common import USER_AGENT import logging class PlsPlaylistDecoder: def __init__(self): self.log = logging.getLogger('radiotray') self.log.debug('PLS playlist decoder') def isStreamValid(self, contentType, firstBytes): if(('audio/x-scpls' in contentType) or ('application/pls+xml' in contentType) or (firstBytes.strip().lower().startswith('[playlist]'))): self.log.info('Stream is readable by PLS Playlist Decoder') return True else: return False def extractPlaylist(self, url): self.log.info('Downloading playlist...') req = urllib2.Request(url) req.add_header('User-Agent', USER_AGENT) f = urllib2.urlopen(req) str = f.read() f.close() self.log.info('Playlist downloaded') self.log.info('Decoding playlist...') playlist = [] lines = str.splitlines() for line in lines: if line.startswith("File") == True: list = line.split("=", 1) playlist.append(list[1]) return playlist radiotray-0.7.3/src/about.py0000664000175000017500000000211311726255527016575 0ustar carloscarlos00000000000000# -*- coding: utf-8 -*- import gtk from lib import i18n import lib.common as common def on_email(about, mail): gtk.show_uri(gtk.gdk.Screen(), "mailto:%s" % mail, 0L) def on_url(about, link): gtk.show_uri(gtk.gdk.Screen(), link, 0L) gtk.about_dialog_set_email_hook(on_email) gtk.about_dialog_set_url_hook(on_url) TRANSLATORS = _("translator-credits") class AboutDialog(gtk.AboutDialog): def __init__(self, parent = None): gtk.AboutDialog.__init__(self) self.set_icon_from_file(common.APP_ICON) self.set_name(common.APPNAME) self.set_version(common.APPVERSION) self.set_copyright(common.COPYRIGHTS) self.set_logo(gtk.gdk.pixbuf_new_from_file(common.APP_ICON)) self.set_translator_credits(TRANSLATORS) self.set_license(common.LICENSE) self.set_website(common.WEBSITE) self.set_website_label(_("%s's Website") % common.APPNAME) self.set_authors(common.AUTHORS) self.set_artists(common.ARTISTS) self.connect("response", lambda self, *args: self.destroy()) self.show_all() radiotray-0.7.3/src/events/0000775000175000017500000000000012011044040016366 5ustar carloscarlos00000000000000radiotray-0.7.3/src/events/EventManager.py0000664000175000017500000000313111726255527021344 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## class EventManager: STATE_CHANGED = 'state_changed' SONG_CHANGED = 'song_changed' BOOKMARKS_CHANGED = 'bookmarks_changed' STATION_ERROR = 'station_error' VOLUME_CHANGED = 'volume_changed' BOOKMARKS_RELOADED = 'bookmarks_reloaded' NOTIFICATION = 'notification' def __init__(self): self.observersMap = {self.STATE_CHANGED:[], self.SONG_CHANGED:[], self.BOOKMARKS_CHANGED:[], self.STATION_ERROR:[], self.VOLUME_CHANGED:[], self.BOOKMARKS_RELOADED:[], self.NOTIFICATION:[]} def getObserversMap(self): return self.observersMap def notify(self, event, data): observersList = self.observersMap[event] for callback in observersList: callback(data) radiotray-0.7.3/src/events/EventSubscriber.py0000664000175000017500000000250511726255527022101 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## class EventSubscriber: def __init__(self, eventManager): self.eventManager = eventManager def bind(self, event, callback): observersList = self.eventManager.getObserversMap()[event] observersList.append(callback) def unbind(self, event, observer): observersList = self.eventManager.getObserversMap()[event] try: observersList.remove(observer) except: print "no observer in list"radiotray-0.7.3/src/events/EventMngNotificationWrapper.py0000664000175000017500000000241711726256106024423 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import EventManager class EventMngNotificationWrapper: def __init__(self, eventManager): self.eventManager = eventManager def notify(self, title, message): self.eventManager.notify(self.eventManager.NOTIFICATION, {'title': title, 'message':message}) def notify_icon(self, title, message, icon): self.eventManager.notify(self.eventManager.NOTIFICATION, {'title': title, 'message':message, 'icon':icon}) radiotray-0.7.3/src/events/__init__.py0000664000175000017500000000000011726255527020517 0ustar carloscarlos00000000000000radiotray-0.7.3/src/StreamDecoder.py0000664000175000017500000001075611726255527020220 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lib.common import USER_AGENT from lib.DummyMMSHandler import DummyMMSHandler from PlsPlaylistDecoder import PlsPlaylistDecoder from M3uPlaylistDecoder import M3uPlaylistDecoder from AsxPlaylistDecoder import AsxPlaylistDecoder from XspfPlaylistDecoder import XspfPlaylistDecoder from AsfPlaylistDecoder import AsfPlaylistDecoder from RamPlaylistDecoder import RamPlaylistDecoder from UrlInfo import UrlInfo import logging class StreamDecoder: def __init__(self, cfg_provider): plsDecoder = PlsPlaylistDecoder() m3uDecoder = M3uPlaylistDecoder() asxDecoder = AsxPlaylistDecoder() xspfDecoder = XspfPlaylistDecoder() asfDecoder = AsfPlaylistDecoder() ramDecoder = RamPlaylistDecoder() self.log = logging.getLogger('radiotray') self.decoders = [plsDecoder, asxDecoder, asfDecoder, xspfDecoder, ramDecoder, m3uDecoder] self.url_timeout = None try: self.url_timeout = cfg_provider.getConfigValue("url_timeout") if (self.url_timeout == None): self.log.warn("Couldn't find url_timeout configuration") self.url_timeout = 100 cfg_provider.setConfigValue("url_timeout", str(self.url_timeout)) except Exception, e: self.log.warn("Couldn't find url_timeout configuration") self.url_timeout = 100 cfg_provider.setConfigValue("url_timeout", str(self.url_timeout)) self.log.info('Using url timeout = %s', str(self.url_timeout)) def getMediaStreamInfo(self, url): if url.startswith("http") == False: self.log.info('Not an HTTP url. Maybe direct stream...') return UrlInfo(url, False, None) self.log.info('Requesting stream... %s', url) req = urllib2.Request(url) req.add_header('User-Agent', USER_AGENT) try: opener = urllib2.build_opener(DummyMMSHandler()) f = opener.open(req, timeout=float(self.url_timeout)) except urllib2.HTTPError, e: self.log.warn('HTTP Error: No radio stream found for %s - %s', url, str(e)) return None except urllib2.URLError, e: self.log.info('No radio stream found for %s', url) if str(e.reason).startswith('MMS REDIRECT'): newurl = e.reason.split("MMS REDIRECT:",1)[1] self.log.info('Found mms redirect for: %s', newurl) return UrlInfo(newurl, False, None) else: return None except Exception, e: self.log.warn('No radio stream found. Error: %s', str(e)) return None metadata = f.info() firstbytes = f.read(500) f.close() try: self.log.debug('Metadata obtained...') contentType = metadata["Content-Type"] self.log.info('Content-Type: %s', contentType) except Exception, e: self.log.info("Couldn't read content-type. Maybe direct stream...") self.log.info('Error: %s',e) return UrlInfo(url, False, None) for decoder in self.decoders: self.log.info('Checking decoder') if(decoder.isStreamValid(contentType, firstbytes)): return UrlInfo(url, True, contentType, decoder) # no playlist decoder found. Maybe a direct stream self.log.info('No playlist decoder could handle the stream. Maybe direct stream...') return UrlInfo(url, False, contentType) def getPlaylist(self, urlInfo): return urlInfo.getDecoder().extractPlaylist(urlInfo.getUrl()) radiotray-0.7.3/src/StateMediator.py0000664000175000017500000001103212010315044020202 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from AudioPlayerGStreamer import AudioPlayerGStreamer from SysTray import SysTray from lib.common import APPNAME from Context import Context from events.EventManager import EventManager import logging class StateMediator(object): def __init__(self, provider, cfg_provider, eventManager): self.provider = provider self.cfg_provider = cfg_provider self.eventManager = eventManager self.context = Context() self.context.state = Context.STATE_PAUSED radio = self.cfg_provider.getConfigValue("last_station") self.context.station = '' if not radio else radio self.volume = float(self.cfg_provider.getConfigValue("volume_level")) self.bitrate = 0 # validate station if not self.provider.getRadioUrl(radio): self.context.station = '' self.log = logging.getLogger('radiotray') def init(self, audioPlayer): self.audioPlayer = audioPlayer # set volume level (can't call set_volume yet) self.audioPlayer.player.set_property("volume", self.volume) def getContext(self): return self.context # --- control commands ---- def play(self, radio): self.log.debug('Request to play') if(self.context.state == 'playing'): self.stop() url = self.provider.getRadioUrl(radio) if(url): self.context.station = radio self.eventManager.notify(EventManager.STATE_CHANGED, {'state':'connecting', 'station':radio}) self.audioPlayer.start(url) self.cfg_provider.setConfigValue("last_station", radio) else: self.context.station = '' self.stop() def playUrl(self, url): self.log.debug('Request to play: %s', url) if(self.isPlaying): self.audioPlayer.stop() self.eventManager.notify(EventManager.STATE_CHANGED, {'state':'connecting', 'station':Context.UNKNOWN_RADIO}) self.context.station = Context.UNKNOWN_RADIO self.audioPlayer.start(url) def playLast(self): if self.context.station: self.play(self.context.station) def stop(self): self.log.debug('Stopping...') self.audioPlayer.stop() def isPlaying(self): return self.context.state == Context.STATE_PLAYING def volume_up(self): self.audioPlayer.volume_up(float(self.cfg_provider.getConfigValue("volume_increment"))) self.eventManager.notify(EventManager.VOLUME_CHANGED, {'volume':self.getVolume()}) def volume_down(self): self.audioPlayer.volume_down(float(self.cfg_provider.getConfigValue("volume_increment"))) self.eventManager.notify(EventManager.VOLUME_CHANGED, {'volume':self.getVolume()}) def set_volume(self, value): self.log.debug('set volume: %s', str(value)) self.audioPlayer.player.set_property("volume", value) self.systray.updateTooltip() def getVolume(self): return int(round(self.volume * 100)) def updateVolume(self, volume): self.volume = volume self.cfg_provider.setConfigValue("volume_level", str(round(self.volume,2))) def on_state_changed(self, data): self.context.state = data['state'] self.log.debug(self.context.state) def on_station_error(self, data): self.context.state = 'paused' self.log.debug(self.context.state) def on_song_changed(self, data): if('artist' in data.keys()): self.context.artist = data['artist'] if('title' in data.keys()): self.context.title = data['title'] radiotray-0.7.3/src/PluginManager.py0000664000175000017500000001417011736423703020214 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from lib.common import USER_PLUGIN_PATH from lib.common import SYSTEM_PLUGIN_PATH from PluginInfo import PluginInfo from XmlConfigProvider import XmlConfigProvider import os import sys import logging import shutil # The purpose of this class is handle all plugin lifecycle operations class PluginManager: def __init__(self, eventManagerWrapper, eventSubscriber, provider, cfgProvider, mediator, tooltip, pluginMenu): self.eventManagerWrapper = eventManagerWrapper self.eventSubscriber = eventSubscriber self.provider = provider self.cfgProvider = cfgProvider self.mediator = mediator self.tooltip = tooltip self.pluginMenu = pluginMenu self.pluginInfos = {} self.log = logging.getLogger('radiotray') def getPlugins(self): return self.pluginInfos.values() def activatePlugins(self): active = self.cfgProvider.getConfigList('active_plugins') for info in self.pluginInfos.values(): if info.name in active: plugin = info.instance #create custom config provider cfgProvider = None if(os.path.exists(info.configFile)): cfgProvider = XmlConfigProvider(info.configFile) cfgProvider.loadFromFile() plugin.initialize(info.name, self.eventManagerWrapper, self.eventSubscriber, self.provider, cfgProvider, self.mediator, self.tooltip) plugin.start() if plugin.hasMenuItem(): self.pluginMenu.append(plugin.getMenuItem()) def activatePlugin(self, name): self.log.debug('activate') #info = self.pluginInfos[name] #if info != None: # plugin = info.instance #create custom config provider # cfgProvider = None # if(os.path.exists(info.configFile)): # cfgProvider = XmlConfigProvider(info.configFile) # cfgProvider.loadFromFile() # plugin.initialize(info.name, self.eventManagerWrapper, self.eventSubscriber, self.provider, cfgProvider, self.mediator, self.tooltip) # plugin.start() # if plugin.hasMenuItem(): # self.pluginMenu.append(plugin.getMenuItem()) def deactivatePlugin(self, name): self.log.debug('deactivate') #info = self.pluginInfos[name] #if info != None: # plugin = info.instance # plugin.finalize() # self.pluginMenu.remove(plugin.getMenuItem()) def discoverPlugins(self): pluginFiles = [] if os.path.exists(USER_PLUGIN_PATH): self.log.info('finding plugins in user plugin path') files = os.listdir(USER_PLUGIN_PATH) sys.path.insert(0,USER_PLUGIN_PATH) for possible_plugin in files: if possible_plugin.endswith('.plugin'): pluginFiles.append(os.path.join(USER_PLUGIN_PATH, possible_plugin)) else: self.log.info('user plugin dir does not exist. ignoring...') if os.path.exists(SYSTEM_PLUGIN_PATH): self.log.info('finding plugins in system plugin path') files = os.listdir(SYSTEM_PLUGIN_PATH) sys.path.insert(0,SYSTEM_PLUGIN_PATH) for possible_plugin in files: if possible_plugin.endswith('.plugin'): pluginFiles.append(os.path.join(SYSTEM_PLUGIN_PATH, possible_plugin)) else: self.log.info('system plugin dir does not exist. ignoring...') self.pluginInfos = self.parsePluginInfo(pluginFiles) for info in self.pluginInfos.values(): print info.name + ", " + info.desc + ", " + info.script + ", " + info.author m = __import__(info.clazz) m2 = getattr(m, info.clazz) info.instance = m2() def parsePluginInfo(self, plugins): infos = {} for p in plugins: self.log.debug(p) f = open(p,"r") text = f.read() lines = text.splitlines() pInfo = PluginInfo() for line in lines: if line.startswith('name') == True: pInfo.name = line.split("=",1)[1] elif line.startswith('desc') == True: pInfo.desc = line.split("=",1)[1] elif line.startswith('script') == True: pInfo.script = line.split("=",1)[1] elif line.startswith('author') == True: pInfo.author = line.split("=",1)[1] elif line.startswith('class') == True: pInfo.clazz = line.split("=",1)[1] filename = os.path.basename(p) originalFile = os.path.join(os.path.dirname(p), filename[:filename.find('.')] + '.config') correctFile = os.path.join(USER_PLUGIN_PATH, filename[:filename.find('.')] + '.config') if(os.path.exists(originalFile)): os.path.join(os.path.dirname(p), filename[:filename.find('.')] + '.config') if (not os.path.exists(correctFile)): shutil.copyfile(originalFile, correctFile) pInfo.configFile = correctFile infos[pInfo.name] = pInfo return infos radiotray-0.7.3/src/GuiChooserConfiguration.py0000664000175000017500000000361011726255527022265 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade import gobject import os except: sys.exit(1) from lib.common import APP_ICON_ON from lib import utils from lib import i18n import uuid import logging class GuiChooserConfiguration(object): def __init__(self): gladefile = utils.load_ui_file("configGui.glade") self.wTree = gladefile self.dialog = self.wTree.get_object("guiChooserDialog") self.rb_systray = self.wTree.get_object("rb_systray") self.rb_appindicator = self.wTree.get_object("rb_appindicator") self.log = logging.getLogger('radiotray') def run(self): result = self.dialog.run() self.dialog.hide() #user clicks cancel if result == 0: exit(0) if(self.rb_systray.get_active()): self.log.info('user chose notification area') return "systray" else: self.log.info('user chose app indicator') return "appindicator" radiotray-0.7.3/src/M3uPlaylistDecoder.py0000664000175000017500000000376411726255527021154 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lib.common import USER_AGENT import logging class M3uPlaylistDecoder: def __init__(self): self.log = logging.getLogger('radiotray') self.log.debug('M3U playlist decoder') def isStreamValid(self, contentType, firstBytes): if('audio/mpegurl' in contentType or 'audio/x-mpegurl' in contentType): self.log.info('Stream is readable by M3U Playlist Decoder') return True else: lines = firstBytes.splitlines() for line in lines: if(line.startswith("http://")): return True return False def extractPlaylist(self, url): self.log.info('Downloading playlist...') req = urllib2.Request(url) req.add_header('User-Agent', USER_AGENT) f = urllib2.urlopen(req) str = f.read() f.close() self.log.info('Playlist downloaded') self.log.info('Decoding playlist...') lines = str.splitlines() playlist = [] for line in lines: if line.startswith("#") == False and len(line) > 0: playlist.append(line) return playlist radiotray-0.7.3/src/XmlDataProvider.py0000664000175000017500000003342411726255527020541 0ustar carloscarlos00000000000000########################################################################## # Copyright 2010 Edward G. Bruck # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import os from lxml import etree import gtk import logging class XmlDataProvider: def __init__(self, filename): self.log = logging.getLogger('radiotray') if os.access(filename, os.R_OK): #if can read, then use. self.filename = filename else: # if can't read, give error. raise Exception('Bookmarks file not found: ' + filename) def loadFromFile(self): self.log.info('Loading bookmarks file: %s', self.filename) self.root = etree.parse(self.filename).getroot() # this is necessary for the transition from the old xml to the new one groupRoot = self.root.xpath("//group[@name='root']") if len(groupRoot) == 0: new_group = etree.Element('group') new_group.set("name", "root") for child in self.root: child.getparent().remove(child) new_group.append(child) self.root.append(new_group) self.saveToFile() self.log.debug('Bookmarks file loaded with success') def saveToFile(self): self.log.info('Saving bookmarks file: %s', self.filename) out_file = open(self.filename, "w") out_file.write(etree.tostring(self.root, method='xml', encoding='UTF-8', pretty_print=True)) out_file.close() self.log.debug('Bookmarks file save with success') def listRadioNames(self): return [a for a in self.root.xpath("//bookmark/@name") if not a.startswith('[separator')] def listGroupNames(self): return self.root.xpath("//group/@name") def listRadiosInGroup(self, group): return self.root.xpath("//group[@name=$var]/bookmark/@name", var=group) def getRadioUrl(self, name): result = self.root.xpath("//bookmark[@name=$var]/@url", var=name) if(len(result) >= 1): return result[0] def addGroup(self, parent_group_name, new_group_name): # gettting parent group self.log.debug('Adding group %s to parent group %s ...', new_group_name, parent_group_name) parent_group = self.root.xpath("//group[@name=$var]", var=parent_group_name) if parent_group != None: group = self.root.xpath("//group[@name=$var]", var=new_group_name) if group == None or len(group) == 0: self.log.debug('Group is new. Saving with name %s', new_group_name) new_group = etree.SubElement(parent_group[0], 'group') new_group.set("name", unicode(new_group_name)) self.saveToFile() return True self.log.warn('A group with the name "%s" already exists.', new_group_name) return False self.log.error('Error: a parent group with the name "%s" does not exist.', parent_group_name) return False def addRadio(self, rawName, url, group_name='root'): name = unicode(rawName) self.log.info('Adding radio "%s" to group %s', name, group_name) self.log.debug('Radio URL: %s', url) group = self.root.xpath("//group[@name=$var]", var=group_name) if group != None: # First, let us check this name hasn't been used yet. result = self._radioExists(name) if result is None: radio = etree.SubElement(group[0], 'bookmark') radio.set("name", unicode(name)) radio.set("url", unicode(url)) self.log.debug('Radio added with success') self.saveToFile() return True self.log.warn('A radio with the name "%s" already exists.', name) else: self.log.error('A group with the name "%s" does not exist.', group_name) return False def updateRadio(self, oldName, newName, url): self.log.info('Updating radio %s', oldName) self.log.debug('Radio %s changed to radio %s with URL %s', oldName, newName, url) # Flag used to determine if a radio gets added or not radioAdded = None result = self._radioExists(oldName) if result is None: self.log.error('Could not find a radio with the name "%s"', oldName) radioAdded = False else: if oldName == newName: result.set("url", unicode(url)) self.saveToFile() radioAdded = True self.log.debug('Radio updated with success') else: radioXml = self._radioExists(newName) if radioXml is not None: self.log.warn('A radio with the name "%s" already exists.', newName) radioAdded = False else: result.set("name", unicode(newName)) result.set("url", unicode(url)) self.saveToFile() radioAdded = True self.log.debug('Radio updated with success') return radioAdded def updateGroup(self, oldName, newName): self.log.info('Updating group %s to %s', oldName, newName) groupAdded = None newNameStr = unicode(newName) result = self._groupExists(oldName) if result is None: self.log.error('Could not find a group with the name "%s"', oldName) groupAdded = False else: if oldName != newNameStr: groupEx = self._groupExists(newNameStr) if groupEx is not None: self.log.warn('A group with the name "%s" already exists.', newName) groupAdded = False else: result.set("name", unicode(newNameStr)) self.saveToFile() groupAdded = True self.log.debug('Group updated with success') return groupAdded def removeRadio(self, name): self.log.info('Removing "%s" ...', name) radio = self._radioExists(name) if radio != None: self.log.debug('Removing radio with name %s', name) radio.getparent().remove(radio) self.log.info('Radio removed with success') else: group = self._groupExists(name) if group != None: self.log.debug('Removing group with name %s', name) group.getparent().remove(group) self.log.info('Group removed with success') self.saveToFile() def moveRadio(self, name, old_group_name, new_group_name): self.log.info('Moving "%s" from %s to %s ...', name, old_group_name, new_group_name) old_group = self.root.xpath("//group[@name=$var]", var=old_group_name) new_group = self.root.xpath("//group[@name=$var]", var=new_group_name) if old_group != None and new_group != None: radioXml = self._radioExists(name) if radioXml is None: self.log.error('Could not find a radio with the name "%s"', name) else: old_group[0].remove(radioXml) radio = etree.SubElement(new_group[0], 'bookmark') radio.set("name", name) radio.set("url", radioXml.get('url')) self.log.debug('%s moved with success', name) self.saveToFile() return True self.log.error('Could not find given groups') return False def moveUp(self, name): self.log.info('Moving "%s" up...', name) radio = self._radioExists(name) if radio != None: group = radio.getparent() previous = radio.getprevious() if previous != None: index=self.root.xpath("count(//bookmark[@name=$var]/preceding-sibling::*)+1", var=name) group.remove(radio) group.insert(int(index)-2,radio) self.log.debug('%s moved with success', name) self.saveToFile() return True else: # could be a group? group = self.root.xpath("//group[@name=$var]", var=name) if group: parent_group = group[0].getparent() index=self.root.xpath("count(//group[@name=$var]/preceding-sibling::*)+1", var=name) parent_group.remove(group[0]) parent_group.insert(int(index)-2,group[0]) self.log.debug('%s moved with success', name) self.saveToFile() return True return False def moveDown(self, name): self.log.info('Moving "%s" down...', name) radio = self._radioExists(name) if radio != None: next = radio.getnext() if next != None: group = radio.getparent() index=self.root.xpath("count(//bookmark[@name=$var]/preceding-sibling::*)+1", var=name) group.remove(radio) group.insert(int(index),radio) self.log.debug('%s moved with success', name) self.saveToFile() return True else: # could be a group? group = self.root.xpath("//group[@name=$var]", var=name) if group: parent_group = group[0].getparent() index=self.root.xpath("count(//group[@name=$var]/preceding-sibling::*)+1", var=name) parent_group.remove(group[0]) parent_group.insert(int(index),group[0]) self.log.debug('%s moved with success', name) self.saveToFile() return True return False def moveToPosition(self, source, target, position): self.log.info('Moving "%s" to target "%s"...', str(source), str(target)) itemToMove = self._radioExists(source) if itemToMove == None: itemToMove = self._groupExists(source) itemTarget = self._radioExists(target) if itemTarget == None: itemTarget = self._groupExists(target) if itemToMove != None and itemTarget != None: index = itemTarget.getparent().index(itemTarget) if (position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE or position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER): itemTarget.append(itemToMove) elif position == gtk.TREE_VIEW_DROP_BEFORE: itemTarget.getparent().insert(index, itemToMove) elif position == gtk.TREE_VIEW_DROP_AFTER: itemTarget.getparent().insert(index+1, itemToMove) self.log.debug('%s moved with success', str(source)) self.saveToFile() def _radioExists(self, name): radio = None try: radio = self.root.xpath("//bookmark[@name=$var]", var=name)[0] except IndexError, e: # No radio was found self.log.warn('Could not find a radio with the name "%s".', name) return radio def _groupExists(self, name): group = None try: group = self.root.xpath("//group[@name=$var]", var=name)[0] except IndexError, e: # No group was found self.log.warn('Could not find a group with the name "%s".', name) return group def walk_bookmarks(self, group_func, bookmark_func, user_data, group=""): children = self.root.xpath("/bookmarks" + group + "/group | " + "/bookmarks" + group + "/bookmark") for child in children: child_name = child.get('name') if child_name == None: continue if child.tag == 'group': new_user_data = group_func(child_name, user_data) self.walk_bookmarks(group_func, bookmark_func, new_user_data, group + "/group[@name='"+ child_name +"']") else: bookmark_func(child_name, user_data) def getRootGroup(self): return self.root.xpath("//group[@name='root']")[0] def updateElementGroup(self, element, group_name): group = self._groupExists(group_name) if group != None: old_group = element.getparent() old_group.remove(element) group.append(element) self.saveToFile() else: self.log.warn('Could not move element group') def isBookmarkWritable(self): return os.access(self.filename, os.W_OK) radiotray-0.7.3/src/lib/0000775000175000017500000000000012011044040015630 5ustar carloscarlos00000000000000radiotray-0.7.3/src/lib/i18n.py0000664000175000017500000000202311726255527017010 0ustar carloscarlos00000000000000# -*- coding: utf-8 -*- __all__ = ['_', 'C_', 'ngettext'] program = 'radiotray' import locale LC_ALL = locale.setlocale(locale.LC_ALL, '') try: import gettext from gettext import gettext as _, ngettext gettext.install(program, unicode=True) gettext.textdomain(program) locale.textdomain(program) def C_(ctx, s): """Provide qualified translatable strings via context. Taken from gnome-games. """ translated = gettext.gettext('%s\x04%s' % (ctx, s)) if '\x04' in translated: # no translation found, return input string return s return translated import __builtin__ __builtin__.__dict__['ngettext'] = ngettext __builtin__.__dict__['C_'] = C_ except ImportError: import sys print >> sys.stderr, ("You don't have gettext module, no " \ "internationalization will be used.") import __builtin__ __builtin__.__dict__['_'] = lambda x: x __builtin__.__dict__['ngettext'] = lambda x, y, n: (n == 1) and x or y radiotray-0.7.3/src/lib/utils.py0000664000175000017500000000427411726255527017403 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from os.path import exists, join try: import pygtk pygtk.require("2.0") import dbus import dbus.service except: pass try: import gtk except ImportError, e: print str(e) raise SystemExit def load_ui_file(name): import common ui = gtk.Builder() ui.add_from_file(join(common.DEFAULT_CFG_PATH, name)) return ui paths = ("/usr/local/share/radiotray","/usr/share/radiotray") def tryopen(filename): """Returns a reading file handle for filename, searching through directories in the supplied paths.""" try: f = open(filename) return f except IOError, e: for p in paths: try: f = open(join(p,filename)) return f except IOError, e: 0 raise IOError, "Unable to find file "+filename def findfile(filename): """Looks for filename, searching a built-in list of directories; returns the path where it finds the file.""" if exists(filename): return filename for p in paths: x = join(p,filename) print x if exists(x): return x def html_escape(text): """Produce entities within text.""" html_escape_table = { "&": "&", '"': """, "'": "'", ">": ">", "<": "<", } return "".join(html_escape_table.get(c,c) for c in text) radiotray-0.7.3/src/lib/common.py0000664000175000017500000000610411765506541017523 0ustar carloscarlos00000000000000# -*- coding: utf-8 -*- import os import i18n from xdg.BaseDirectory import xdg_data_home try: from defs import * except: APPVERSION = "0.7.3" datadir = "/usr/share" # Application info APPNAME = "Radio Tray" APPDIRNAME = APPNAME.lower().replace(" ","") COPYRIGHT_YEAR = '2009 - 2011' COPYRIGHTS = "%s - Copyright (c) %s\n" \ "Carlos Ribeiro " % (APPNAME, COPYRIGHT_YEAR) WEBSITE = "http://radiotray.sourceforge.net/" AUTHORS = [ _('Developers:'), "Carlos Ribeiro ", _('Contributors:'), 'Og Maciel ', 'Ed Bruck ', 'Behrooz Shabani ', 'Valdur Kana ', ] ARTISTS = [] LICENSE = """Radio Tray Copyright (C) %s - Carlos Ribeiro . Radio Tray is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Radio Tray is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Radio Tray. If not, see . """ % COPYRIGHT_YEAR # Media path if os.path.exists(os.path.abspath('../data/images/')): IMAGE_PATH = os.path.abspath('../data/images/') else: IMAGE_PATH = '%s/%s/images' % (datadir, APPDIRNAME) # Images APP_ICON = os.path.join(IMAGE_PATH, 'radiotray.png') APP_ICON_ON = os.path.join(IMAGE_PATH, 'radiotray_on.png') APP_ICON_OFF = os.path.join(IMAGE_PATH, 'radiotray_off.png') APP_ICON_CONNECT = os.path.join(IMAGE_PATH, 'radiotray_connecting.gif') APP_INDICATOR_ICON_ON = "radiotray_on" APP_INDICATOR_ICON_OFF = "radiotray_off" APP_INDICATOR_ICON_CONNECT = "radiotray_connecting" # Config info CFG_NAME = 'bookmarks.xml' OPTIONS_CFG_NAME = 'config.xml' USER_CFG_PATH = os.path.join(xdg_data_home, APPDIRNAME) OLD_USER_CFG_PATH = os.environ['HOME'] + "/.radiotray/" REL_CFG_DIR = os.path.abspath('../data/') if os.path.exists(os.path.join(REL_CFG_DIR, CFG_NAME)): DEFAULT_CFG_PATH = REL_CFG_DIR else: DEFAULT_CFG_PATH = '%s/%s/' % (datadir, APPDIRNAME) DEFAULT_RADIO_LIST = os.path.join(DEFAULT_CFG_PATH, CFG_NAME) DEFAULT_CONFIG_FILE = os.path.join(DEFAULT_CFG_PATH, OPTIONS_CFG_NAME) # Plugins SYSTEM_PLUGIN_PATH = os.path.join(DEFAULT_CFG_PATH, 'plugins') USER_PLUGIN_PATH = os.path.join(USER_CFG_PATH, 'plugins') #Logfile LOGFILE = os.path.join(USER_CFG_PATH,'radiotray.log') #temporary icon file ICON_FILE = os.path.join(USER_CFG_PATH,'icon') # user-agent try: import platform USER_AGENT = "%s/%s (%s %s; %s/%s (%s))" % ("RadioTray", APPVERSION, platform.system(), platform.machine(), platform.linux_distribution()[0], platform.linux_distribution()[1], platform.linux_distribution()[2]) except: USER_AGENT = "RadioTray/" + APPVERSION radiotray-0.7.3/src/lib/__init__.py0000664000175000017500000000000011726255527017761 0ustar carloscarlos00000000000000radiotray-0.7.3/src/lib/DummyMMSHandler.py0000664000175000017500000000204311726255527021201 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 class DummyMMSHandler(urllib2.BaseHandler): def mms_open(self, request): print request.get_full_url() raise urllib2.URLError("MMS REDIRECT:"+request.get_full_url())radiotray-0.7.3/src/mpris_player.py0000664000175000017500000001414311726255527020177 0ustar carloscarlos00000000000000 import dbus import dbus.service INTERFACE_NAME = 'org.freedesktop.MediaPlayer' class MprisCaps(object): """ Specification for the capabilities field in MPRIS """ NONE = 0 CAN_GO_NEXT = 1 << 0 CAN_GO_PREV = 1 << 1 CAN_PAUSE = 1 << 2 CAN_PLAY = 1 << 3 CAN_SEEK = 0 CAN_PROVIDE_METADATA = 0 CAN_HAS_TRACKLIST = 0 Radiotray_CAPS = (MprisCaps.CAN_GO_NEXT | MprisCaps.CAN_GO_PREV | MprisCaps.CAN_PAUSE | MprisCaps.CAN_PLAY | MprisCaps.CAN_SEEK | MprisCaps.CAN_PROVIDE_METADATA | MprisCaps.CAN_HAS_TRACKLIST) class RadioTrayMprisPlayer(dbus.service.Object): def __init__(self, provider, mediator, bus): dbus.service.Object.__init__(self, bus, '/Player') self.provider = provider self.mediator = mediator self.lastRadio = None @dbus.service.method(INTERFACE_NAME) def Next(self): """ Goes to the next element """ pass @dbus.service.method(INTERFACE_NAME) def Prev(self): """ Goes to the previous element """ pass @dbus.service.method(INTERFACE_NAME) def Pause(self): """ If playing, pause. If paused, unpause. """ if self.mediator.isPlaying : self.Stop() else : self.Play() @dbus.service.method(INTERFACE_NAME) def Stop(self): """ Stop playing """ if self.mediator.isPlaying : self.lastRadio = self.mediator.getCurrentRadio() self.mediator.stop() @dbus.service.method(INTERFACE_NAME) def Play(self): """ If Playing, rewind to the beginning of the current track, else. start playing """ ## what should we play? first radio in list? if self.lastRadio is None : radios = self.provider.listRadioNames() if len(radios)>0 : self.mediator.play(radios[0]) else: self.mediator.play(self.lastRadio) @dbus.service.method(INTERFACE_NAME, in_signature="b") def Repeat(self, repeat): """ Toggle the current track repeat """ pass @dbus.service.method(INTERFACE_NAME, out_signature="(iiii)") def GetStatus(self): """ Return the status of "Media Player" as a struct of 4 ints: * First integer: 0 = Playing, 1 = Paused, 2 = Stopped. * Second interger: 0 = Playing linearly , 1 = Playing randomly. * Third integer: 0 = Go to the next element once the current has finished playing , 1 = Repeat the current element * Fourth integer: 0 = Stop playing once the last element has been played, 1 = Never give up playing """ if self.mediator.isPlaying: playing = 0 ## forget pause it's radio player #elif isPaused: # playing = 1 else: playing = 2 ## does it matter? random = 0 ## Do not have ability to repeat single track go_to_next = 0 ## what about repeat? repeat = 0 return (playing, random, go_to_next, repeat) @dbus.service.method(INTERFACE_NAME, out_signature="a{sv}") def GetMetadata(self): """ Gives all meta data available for the currently played element. """ return { 'location' : unicode(self.provider.getRadioUrl(self.mediator.getCurrentRadio())), 'artist' : unicode(self.mediator.getCurrentRadio()), 'title' : unicode(self.mediator.getCurrentMetaData()), 'album' : u'', 'tracknumber': u'', 'time' : 0, 'mtime' : 0, 'genre' : u'', 'comment' : u'', 'rating' : 0, 'year' : 0, 'date' : 0, 'arturl' : u'', 'audio-bitrate': self.mediator.bitrate, 'audio-samplerate': self.mediator.bitrate } @dbus.service.method(INTERFACE_NAME, out_signature="i") def GetCaps(self): """ Returns the "Media player"'s current capabilities, see MprisCaps """ return Radiotray_CAPS @dbus.service.method(INTERFACE_NAME, in_signature="i") def VolumeSet(self, volume): """ Sets the volume, arument in the range [0, 100] """ if volume < 0 or volume > 100: pass self.mediator.set_volume(volume / 100.0) @dbus.service.method(INTERFACE_NAME, out_signature="i") def VolumeGet(self): """ Returns the current volume (must be in [0;100]) """ return self.mediator.getVolume() @dbus.service.method(INTERFACE_NAME, in_signature="i") def PositionSet(self, millisec): """ Sets the playing position (argument must be in [0, ] in milliseconds) """ pass @dbus.service.method(INTERFACE_NAME, out_signature="i") def PositionGet(self): """ Returns the playing position (will be [0, track_length] in milliseconds) """ return 0 @dbus.service.signal(INTERFACE_NAME, signature="a{sv}") def TrackChange(self, metadata): """ Signal is emitted when the "Media Player" plays another "Track". Argument of the signal is the metadata attached to the new "Track" """ pass @dbus.service.signal(INTERFACE_NAME, signature="(iiii)") def StatusChange(self, struct): """ Signal is emitted when the status of the "Media Player" change. The argument has the same meaning as the value returned by GetStatus. """ pass @dbus.service.signal(INTERFACE_NAME) def CapsChange(self): """ Signal is emitted when the "Media Player" changes capabilities, see GetCaps method. """ pass radiotray-0.7.3/src/ConsoleLog.py0000664000175000017500000000163111726255527017533 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## class ConsoleLog: def log(self, message): print message radiotray-0.7.3/src/AsxPlaylistDecoder.py0000664000175000017500000000502311726255527021231 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lib.common import USER_AGENT from lxml import etree from lxml import objectify from StringIO import StringIO import logging class AsxPlaylistDecoder: def __init__(self): self.log = logging.getLogger('radiotray') self.log.debug('ASX-familiy playlist decoder') def isStreamValid(self, contentType, firstBytes): if(('audio/x-ms-wax' in contentType or 'video/x-ms-wvx' in contentType or 'video/x-ms-asf' in contentType or 'video/x-ms-wmv' in contentType) and firstBytes.strip().lower().startswith(' 0): for i in range(1,len(result)): tmp = result[i] if (tmp.endswith("?MSWMExt=.asf")): result[i] = tmp.replace("http", "mms") return result else: return [] radiotray-0.7.3/src/XmlConfigProvider.py0000664000175000017500000000606211726255527021073 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import os from lxml import etree from lxml import objectify import logging class XmlConfigProvider: def __init__(self, filename): self.log = logging.getLogger('radiotray') if(os.access(filename, os.R_OK) == False): raise Exception('Configuration file not found: ' + filename) else: self.filename = filename def loadFromFile(self): self.root = etree.parse(self.filename).getroot() def saveToFile(self): out_file = open(self.filename, "w") out_file.write(etree.tostring(self.root, method='xml', encoding='UTF-8', pretty_print=True)) out_file.close() def getConfigValue(self, name): result = self.root.xpath("//option[@name=$var]/@value", var=name) if(len(result) >= 1): return result[0] def setConfigValue(self, name, value): setting = self._settingExists(name) if (setting == None): setting = etree.SubElement(self.root, 'option') setting.set("name", name) setting.set("value", value) else: setting.set("value", value) self.saveToFile() def getConfigList(self, name): result = self.root.xpath("//option[@name=$var]/item", var=name) return [x.text for x in result] def setConfigList(self, name, items): setting = self._settingExists(name) if (setting == None): setting = etree.SubElement(self.root, 'option') setting.set("name", name) else: self.log.debug('remove all') children = setting.getchildren() for child in children: self.log.debug('remove child %s', child.text) setting.remove(child) for item in items: it = etree.SubElement(setting, 'item') it.text = item self.saveToFile() def _settingExists(self, name): setting = None try: setting = self.root.xpath("//option[@name=$var]", var=name)[0] except IndexError, e: # Setting wasn't found self.log.warn('Could not find setting with the name "%s".', name) return setting radiotray-0.7.3/src/mpris_root.py0000664000175000017500000000331311726255527017663 0ustar carloscarlos00000000000000# Copyright (C) 2010 behrooz shabani (everplays) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . """/ Object for MPRIS specification interface to radioTray http://wiki.xmms2.xmms.se/wiki/MPRIS#.2F_.28Root.29_object_methods """ import dbus import dbus.service import lib.common as common from SysTray import SysTray INTERFACE_NAME = 'org.freedesktop.MediaPlayer' class RadioTrayMprisRoot(dbus.service.Object): """ / (Root) object methods """ def __init__(self, mediator, bus): dbus.service.Object.__init__(self, bus, '/') self.mediator = mediator @dbus.service.method(INTERFACE_NAME, out_signature="s") def Identity(self): """ Identify the "media player" """ return "%s %s" % (common.APPNAME, common.APPVERSION) @dbus.service.method(INTERFACE_NAME) def Quit(self): """ Makes the "Media Player" exit. """ self.mediator.systray.on_quit(1) @dbus.service.method(INTERFACE_NAME, out_signature="(qq)") def MprisVersion(self): """ Makes the "Media Player" exit. """ return (1, 0) radiotray-0.7.3/src/mpris_tracklist.py0000664000175000017500000000664611726255527020714 0ustar carloscarlos00000000000000# Copyright (C) 2010 behrooz shabani (everplays) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . """/TrackList object for MPRIS specification interface to radiotray http://wiki.xmms2.xmms.se/wiki/MPRIS#.2FTrackList_object_methods """ import dbus import dbus.service INTERFACE_NAME = 'org.freedesktop.MediaPlayer' class RadioTrayMprisTrackList(dbus.service.Object): """ /TrackList object methods """ def __init__(self, bus): #mediator, provider, bus): dbus.service.Object.__init__(self, bus, '/TrackList') ## we don't need these yet! #self.mediator = mediator #self.provider = provider @dbus.service.method(INTERFACE_NAME, in_signature="i", out_signature="a{sv}") def GetMetadata(self, pos): """ Gives all meta data available for element at given position in the TrackList, counting from 0 Each dict entry is organized as follows * string: Metadata item name * variant: Metadata value """ return {} @dbus.service.method(INTERFACE_NAME, out_signature="i") def GetCurrentTrack(self): """ Return the position of current URI in the TrackList The return value is zero-based, so the position of the first URI in the TrackList is 0. The behavior of this method is unspecified if there are zero elements in the TrackList. """ return -1 @dbus.service.method(INTERFACE_NAME, out_signature="i") def GetLength(self): """ Number of elements in the TrackList """ return 0 @dbus.service.method(INTERFACE_NAME, in_signature="sb", out_signature="i") def AddTrack(self, uri, play_immediately): """ Appends an URI in the TrackList. """ return 0 @dbus.service.method(INTERFACE_NAME, in_signature="i") def DelTrack(self, pos): """ Appends an URI in the TrackList. """ pass @dbus.service.method(INTERFACE_NAME, in_signature="b") def SetLoop(self, loop): """ Sets the player's "repeat" or "loop" setting """ pass @dbus.service.method(INTERFACE_NAME, in_signature="b") def SetRandom(self, random): """ Sets the player's "random" setting """ pass @dbus.service.signal(INTERFACE_NAME, signature="i") def TrackListChange(self, num_of_elements): """ Signal is emitted when the "TrackList" content has changed: * When one or more elements have been added * When one or more elements have been removed * When the ordering of elements has changed The argument is the number of elements in the TrackList after the change happened. """ pass radiotray-0.7.3/src/PluginInfo.py0000664000175000017500000000202311726255527017535 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## class PluginInfo: name = "" desc = "" script = "" author = None clazz = "" instance = None configFile = None def __PluginInfo__(self): self.name = "" radiotray-0.7.3/src/SysTrayGui.py0000664000175000017500000002135311726255527017555 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## try: import pygtk pygtk.require("2.1") import gtk except: pass try: import gtk import gtk.glade import gobject except: sys.exit(1) from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF from lib.utils import html_escape # This class handles the gui for the systray mode class SysTrayGui: def __init__(self, handler, mediator, cfg_provider, provider): self.handler = handler self.mediator = mediator self.cfg_provider = cfg_provider self.provider = provider def buildMenu(self): # radios menu self.radioMenu = gtk.Menu() if not self.mediator.context.station: self.turnOnOff = gtk.MenuItem(_("Turned Off"), False) self.turnOnOff2 = gtk.MenuItem(_("Turned Off"), False) self.turnOnOff.set_sensitive(False) self.turnOnOff2.set_sensitive(False) else: self.turnOnOff = gtk.MenuItem(_('Turn On "%s"') % self.mediator.context.station, False) self.turnOnOff.set_sensitive(True) self.turnOnOff2 = gtk.MenuItem(_('Turn On "%s"') % self.mediator.context.station, False) self.turnOnOff2.set_sensitive(True) self.turnOnOff.connect('activate', self.handler.on_turn_on_off) self.turnOnOff2.connect('activate', self.handler.on_turn_on_off) self.update_radios() # config menu self.menu = gtk.Menu() self.turnOnOff2 = gtk.MenuItem(_("Turned Off")) self.turnOnOff2.connect('activate', self.handler.on_turn_on_off) self.turnOnOff2.set_sensitive(False) separator = gtk.MenuItem() menu_item1 = gtk.MenuItem(_("Configure Radios...")) #Check bookmarks file status menu_item1.set_sensitive(self.provider.isBookmarkWritable()) menu_item4 = gtk.MenuItem(_("Reload Bookmarks")) menu_item3 = gtk.ImageMenuItem(gtk.STOCK_ABOUT) menu_item2 = gtk.ImageMenuItem(gtk.STOCK_QUIT) self.menu.append(self.turnOnOff2) self.menu.append(separator) self.menu.append(menu_item1) # plugins sub-menu menu_plugins_item = gtk.MenuItem("Plugins", False) self.menu_plugins = gtk.Menu() menu_plugins_item.set_submenu(self.menu_plugins) menu_item5 = gtk.MenuItem(_("Configure Plugins...")) self.menu_plugins.append(menu_item5) self.menu_plugins.append(gtk.MenuItem()) #add separator self.menu.append(menu_plugins_item) self.menu.append(menu_item4) self.menu.append(gtk.MenuItem()) self.menu.append(menu_item3) self.menu.append(menu_item2) menu_item1.show() menu_item2.show() menu_item3.show() menu_item4.show() self.turnOnOff2.show() separator.show() # set handlers for menu items menu_item1.connect('activate', self.handler.on_preferences) menu_item2.connect('activate', self.handler.on_quit) menu_item3.connect('activate', self.handler.on_about) menu_item4.connect('activate', self.handler.reload_bookmarks) menu_item5.connect('activate', self.handler.on_plugin_preferences) self.menu.show_all() self.icon = gtk.status_icon_new_from_file(APP_ICON_OFF) self.icon.set_tooltip_markup(_("Idle (vol: %s%%)") % (self.mediator.getVolume())) self.icon.connect('button_press_event', self.button_press) self.icon.connect('scroll_event', self.handler.scroll) def button_press(self,widget,event): if(event.button == 1): self.radioMenu.popup(None, None, gtk.status_icon_position_menu, 0, event.get_time(), widget) elif (event.button == 2): if (self.mediator.getContext().state == 'playing'): self.mediator.stop() else: if self.mediator.getContext().station: self.mediator.play(self.mediator.getContext().station) else: self.menu.popup(None, None, gtk.status_icon_position_menu, 2, event.get_time(), widget) def update_radios(self): for child in self.radioMenu.get_children(): self.radioMenu.remove(child) self.radioMenu.append(self.turnOnOff) self.turnOnOff.show() separator = gtk.MenuItem() self.radioMenu.append(separator) separator.show() # build menu self.provider.walk_bookmarks(self.group_callback, self.bookmark_callback, self.radioMenu) self.radioMenu.show_all() def group_callback(self, group_name, user_data): new_user_data = None if group_name != 'root': group = gtk.MenuItem(group_name, False) user_data.append(group) new_user_data = gtk.Menu() group.set_submenu(new_user_data) else: new_user_data = self.radioMenu return new_user_data def bookmark_callback(self, radio_name, user_data): if radio_name.startswith("[separator-"): separator = gtk.MenuItem() user_data.append(separator) separator.show() else: radio = gtk.MenuItem(radio_name, False) radio.show() radio.connect('activate', self.handler.on_start, radio_name) user_data.append(radio) def state_changed(self, data): state = data['state'] if(state == 'playing'): station = data['station'] self.turnOnOff.set_label(C_('Turns off the current radio.', 'Turn Off "%s"') % station) self.turnOnOff.set_sensitive(True) self.turnOnOff2.set_label(C_('Turns off the current radio.', 'Turn Off "%s"') % station) self.turnOnOff2.set_sensitive(True) self.icon.set_from_file(APP_ICON_ON) elif(state == 'paused'): if not self.mediator.context.station: self.turnOnOff.set_label(_('Turned Off')) self.turnOnOff.set_sensitive(False) self.turnOnOff2.set_label(_('Turned Off')) self.turnOnOff2.set_sensitive(False) else: self.turnOnOff.set_label(_('Turn On "%s"') % self.mediator.context.station) self.turnOnOff.set_sensitive(True) self.turnOnOff2.set_label(_('Turn On "%s"') % self.mediator.context.station) self.turnOnOff2.set_sensitive(True) self.icon.set_from_file(APP_ICON_OFF) elif(state == 'connecting'): station = data['station'] self.turnOnOff.set_sensitive(True) self.turnOnOff.set_label(C_('Turns off the current radio.', 'Turn Off "%s"') % station) self.turnOnOff2.set_sensitive(True) self.icon.set_tooltip_markup(C_("Connecting to a music stream.", "Connecting to %s") % station.replace("&", "&")) self.icon.set_from_file(APP_ICON_CONNECT) def setTooltip(self, text): self.icon.set_tooltip_markup(text) def getCommonTooltipData(self): radio = html_escape(self.mediator.getContext().station) songInfo = html_escape(self.mediator.getContext().getSongInfo()) volume = self.mediator.getVolume() if (self.mediator.getContext().state == 'playing'): if(songInfo): return C_("Informs what radio and music is being played as a tooltip.", "Playing %s (vol: %s%%)\n%s") % (radio, volume, songInfo) else: return C_("Informs what radio and music is being played as a tooltip.", "Playing %s (vol: %s%%)") % (radio, volume) else: return C_("Informs Radio Tray is idle as a tooltip.", "Idle (vol: %s%%)") % (volume) def getPluginMenu(self): return self.menu_plugins radiotray-0.7.3/src/testdbus.py0000664000175000017500000000602112004001751017274 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import dbus import sys import getopt def main(argv): try: opts, args = getopt.getopt(argv, "hlr:s", ["help", "list", "radio=", "stop", "up", "down", "current", "metadata", "url=", "toggle"]) bus = dbus.SessionBus() radiotray = bus.get_object('net.sourceforge.radiotray', '/net/sourceforge/radiotray') for opt, arg in opts: if opt in ("-h", "--help"): print "Available commands: list, radio=, stop, up, down, current, metadata, url=" sys.exit() elif opt in ("-l", "--list"): listRadios = radiotray.get_dbus_method('listRadios', 'net.sourceforge.radiotray') radios = listRadios() for radio in radios: print radio elif opt in ("-r", "--radio"): playRadio = radiotray.get_dbus_method('playRadio', 'net.sourceforge.radiotray') playRadio(arg) elif opt in ("-s", "--stop"): turnOff = radiotray.get_dbus_method('turnOff', 'net.sourceforge.radiotray') turnOff() elif opt in ("--up"): volumeUp = radiotray.get_dbus_method('volumeUp', 'net.sourceforge.radiotray') volumeUp() elif opt in ("--down"): volumeDown = radiotray.get_dbus_method('volumeDown', 'net.sourceforge.radiotray') volumeDown() elif opt in ("--current"): getRadio = radiotray.get_dbus_method('getCurrentRadio', 'net.sourceforge.radiotray') print getRadio() elif opt in ("--metadata"): getMetadata = radiotray.get_dbus_method('getCurrentMetaData', 'net.sourceforge.radiotray') print getMetadata() elif opt in ("--url"): print "play url" playUrl = radiotray.get_dbus_method('playUrl', 'net.sourceforge.radiotray') playUrl(arg) elif opt in ("--toggle"): toggle = radiotray.get_dbus_method('togglePlay', 'net.sourceforge.radiotray') toggle() except getopt.GetoptError: sys.exit(2) if __name__ == "__main__": main(sys.argv[1:]) radiotray-0.7.3/src/Plugin.py0000664000175000017500000000403011726255527016721 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import threading import gtk import logging # This class should be extended by plugins implementations class Plugin(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.log = logging.getLogger('radiotray') def initialize(self, name, eventManagerWrapper, eventSubscriber, provider, cfgProvider, mediator, tooltip): self.name = name self.eventManagerWrapper = eventManagerWrapper self.eventSubscriber = eventSubscriber self.provider = provider self.cfgProvider = cfgProvider self.mediator = mediator self.tooltip = tooltip self.menuItem = gtk.MenuItem(self.getName(), False) self.menuItem.connect('activate', self.on_menu) self.menuItem.show() def getName(self): return self.name def activate(self): raise NotImplementedError( "Subclasses should override this" ) def finalize(self): print "Finalizing " + self.name self.join() def setMenuItem(self, item): self.menuItem = item def getMenuItem(self): return self.menuItem def hasMenuItem(self): return False def run(self): self.activate() radiotray-0.7.3/src/UrlInfo.py0000664000175000017500000000241211726255527017043 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## class UrlInfo(object): def __init__(self, url, playlist, contentType, decoder = None): self.url = url self.playlist = playlist self.contentType = contentType self.decoder = decoder def isPlaylist(self): return self.playlist def getContentType(self): return self.contentType def getDecoder(self): return self.decoder def getUrl(self): return self.url radiotray-0.7.3/src/RadioTray.py0000664000175000017500000001573611726255527017400 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from XmlDataProvider import XmlDataProvider from XmlConfigProvider import XmlConfigProvider from AudioPlayerGStreamer import AudioPlayerGStreamer from SysTray import SysTray from StateMediator import StateMediator from NotificationManager import NotificationManager from events.EventManager import EventManager from events.EventMngNotificationWrapper import EventMngNotificationWrapper from events.EventSubscriber import EventSubscriber from DbusFacade import DbusFacade from TooltipManager import TooltipManager from PluginManager import PluginManager import os from shutil import move, copy2 from lib.common import APPDIRNAME, USER_CFG_PATH, CFG_NAME, OLD_USER_CFG_PATH,\ DEFAULT_RADIO_LIST, OPTIONS_CFG_NAME, DEFAULT_CONFIG_FILE,\ USER_PLUGIN_PATH, LOGFILE import mpris from GuiChooserConfiguration import GuiChooserConfiguration import logging from logging import handlers class RadioTray(object): def __init__(self, url=None): self.loadConfiguration() self.logger.info('Starting Radio Tray...') # load configuration # load bookmarks data provider and initializes it self.provider = XmlDataProvider(self.filename) self.provider.loadFromFile() # load config data provider and initializes it self.cfg_provider = XmlConfigProvider(self.cfg_filename) self.cfg_provider.loadFromFile() # load default config data provider and initializes it self.default_cfg_provider = XmlConfigProvider(self.default_cfg_filename) self.default_cfg_provider.loadFromFile() # load Event Manager eventManager = EventManager() eventManagerWrapper = EventMngNotificationWrapper(eventManager) # mediator self.mediator = StateMediator(self.provider, self.cfg_provider, eventManager) # load audio player self.audio = AudioPlayerGStreamer(self.mediator, self.cfg_provider, eventManager) # tooltip manager tooltipManager = TooltipManager() # chooser if(url == '--config'): chooser = GuiChooserConfiguration() gui_engine = chooser.run() self.cfg_provider.setConfigValue("gui_engine", gui_engine) url = None # load gui self.systray = SysTray(self.mediator, self.provider, self.cfg_provider, self.default_cfg_provider, eventManager, tooltipManager) # notification manager self.notifManager = NotificationManager(eventManagerWrapper) # bind events eventSubscriber = EventSubscriber(eventManager) eventSubscriber.bind(EventManager.STATE_CHANGED, self.mediator.on_state_changed) eventSubscriber.bind(EventManager.STATE_CHANGED, self.systray.on_state_changed) eventSubscriber.bind(EventManager.STATE_CHANGED, self.notifManager.on_state_changed) eventSubscriber.bind(EventManager.SONG_CHANGED, self.notifManager.on_song_changed) eventSubscriber.bind(EventManager.SONG_CHANGED, self.mediator.on_song_changed) eventSubscriber.bind(EventManager.SONG_CHANGED, self.systray.on_song_changed) eventSubscriber.bind(EventManager.STATION_ERROR, self.notifManager.on_station_error) eventSubscriber.bind(EventManager.VOLUME_CHANGED, self.systray.on_volume_changed) eventSubscriber.bind(EventManager.BOOKMARKS_RELOADED, self.notifManager.on_bookmarks_reloaded) # config mediator self.mediator.init(self.audio) # start dbus facade dbus = DbusFacade(self.provider, self.mediator) #dbus_mpris = mpris.RadioTrayMpris(self.provider, self.mediator) #load plugin manager self.pluginManager = PluginManager(eventManagerWrapper, eventSubscriber, self.provider, self.cfg_provider, self.mediator, tooltipManager, self.systray.getPluginMenu()) self.systray.setPluginManager(self.pluginManager) self.pluginManager.discoverPlugins() self.pluginManager.activatePlugins() if(url != None): if (url == "--resume"): self.mediator.playLast() else: self.mediator.playUrl(url) # start app self.systray.run() def loadConfiguration(self): if not os.path.exists(USER_CFG_PATH): #self.logger.info("user's directory created") os.mkdir(USER_CFG_PATH) if not os.path.exists(USER_PLUGIN_PATH): os.mkdir(USER_PLUGIN_PATH) self.configLogging() self.logger.debug("Loading configuration...") self.filename = os.path.join(USER_CFG_PATH, CFG_NAME) self.cfg_filename = os.path.join(USER_CFG_PATH, OPTIONS_CFG_NAME) self.default_cfg_filename = DEFAULT_CONFIG_FILE if not os.access(self.filename, os.F_OK): # If bookmarks file doesn't exist self.logger.warn('bookmarks file could not be found. Using default...') #check if it exists an old bookmark file, and then move it to the new location oldfilename = os.path.join(OLD_USER_CFG_PATH, CFG_NAME) if os.access(oldfilename, os.R_OK|os.W_OK): self.logger.info('Found old bookmark configuration and moved it to new location: %s', USER_CFG_PATH) move(oldfilename, self.filename) os.rmdir(OLD_USER_CFG_PATH) else: self.logger.info('Copying default bookmarks file to user directory') copy2(DEFAULT_RADIO_LIST, self.filename) if not os.access(self.cfg_filename, os.R_OK|os.W_OK): self.logger.warn('Configuration file not found. Copying default configuration file to user directory') copy2(DEFAULT_CONFIG_FILE, self.cfg_filename) def configLogging(self): # config logging self.logger = logging.getLogger('radiotray') self.logger.setLevel(logging.DEBUG) handler = logging.handlers.RotatingFileHandler(LOGFILE, maxBytes=2000000, backupCount=1) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) self.logger.addHandler(handler) if __name__ == "__main__": radio = RadioTray() radiotray-0.7.3/src/BookmarkConfiguration.py0000664000175000017500000005016011726255527021765 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade import gobject import os except: sys.exit(1) from XmlDataProvider import XmlDataProvider from lib.common import APP_ICON_ON from lib import utils from lib import i18n import uuid import logging drop_yes = ("drop_yes", gtk.TARGET_SAME_WIDGET, 0) drop_no = ("drop_no", gtk.TARGET_SAME_WIDGET, 0) class BookmarkConfiguration(object): GROUP_TYPE = 'GROUP' RADIO_TYPE = 'RADIO' SEPARATOR_TYPE = 'SEPARATOR' def __init__(self, dataProvider, updateFunc, standalone=False): self.dataProvider = dataProvider self.updateFunc = updateFunc self.standalone = standalone self.log = logging.getLogger('radiotray') # get gui objects gladefile = utils.load_ui_file("configBookmarks.glade") self.wTree = gladefile self.window = self.wTree.get_object("window1") self.list = self.wTree.get_object("treeview1") # edit bookmark self.nameEntry = self.wTree.get_object("nameEntry") self.nameEntryLabel = self.wTree.get_object("label1") self.urlEntry = self.wTree.get_object("urlEntry") self.urlEntryLabel = self.wTree.get_object("label2") self.config = self.wTree.get_object("editBookmark") self.radioGroup = self.wTree.get_object("radioGroup") self.radioGroupLabel = self.wTree.get_object("label8") # edit group self.configGroup = self.wTree.get_object("editGroup") self.groupNameEntry = self.wTree.get_object("groupNameEntry") self.parentGroup = self.wTree.get_object("parentGroup") self.parentGroupLabel = self.wTree.get_object("label4") # separator move self.sepMove = self.wTree.get_object("sepMove") self.sepGroup = self.wTree.get_object("sepGroup") # set icon self.window.set_icon_from_file(APP_ICON_ON) self.config.set_icon_from_file(APP_ICON_ON) self.configGroup.set_icon_from_file(APP_ICON_ON) self.sepMove.set_icon_from_file(APP_ICON_ON) # populate list of radios self.load_data() # config tree ui cell = gtk.CellRendererText() tvcolumn = gtk.TreeViewColumn(_('Radio Name'), cell) self.list.append_column(tvcolumn) tvcolumn.add_attribute(cell, 'text', 0) # config combo ui cell2 = gtk.CellRendererText() self.parentGroup.pack_start(cell2, True) self.parentGroup.add_attribute(cell2, 'text', 0) # config add radio group combo ui cell4 = gtk.CellRendererText() self.radioGroup.pack_start(cell4, True) self.radioGroup.add_attribute(cell4, 'text', 0) # separator new group combo ui cell3 = gtk.CellRendererText() self.sepGroup.pack_start(cell3, True) self.sepGroup.add_attribute(cell3, 'text', 0) # connect events if (self.window): dic = { "on_newBookmarkButton_clicked" : self.on_add_bookmark_clicked, "on_newSeparatorButton_clicked" : self.on_add_separator_clicked, "on_editBookmarkButton_clicked" : self.on_edit_bookmark_clicked, "on_delBookmarkButton_clicked" : self.on_remove_bookmark_clicked, "on_close_clickedButton_clicked" : self.on_close_clicked, "on_nameEntry_activated" : self.on_nameEntry_activated, "on_urlEntry_activated" : self.on_urlEntry_activated, "on_newGroupButton_clicked" : self.on_newGroupButton_clicked} self.wTree.connect_signals(self) # enable drag and drop support self.list.enable_model_drag_source( gtk.gdk.BUTTON1_MASK, [drop_yes], gtk.gdk.ACTION_MOVE) self.list.enable_model_drag_dest( [drop_yes], gtk.gdk.ACTION_MOVE) self.list.connect("drag-data-received", self.onDragDataReceived) self.list.connect("drag-motion", self.onDragMotion) # Connect row activation with bookmarks conf self.list.connect("row-activated", self.on_row_activated) def load_data(self): # the meaning of the three columns is: description, id, type treestore = gtk.TreeStore(str, str, str) root = self.dataProvider.getRootGroup() self.add_group_data(root, None, treestore) self.list.set_model(treestore) #drag and drop support def checkSanity(self, model, source, target): source_path = model.get_path(source) target_path = model.get_path(target) if target_path[0:len(source_path)] == source_path: return False else: return True #drag and drop support def checkParentability(self, model, target, drop_position): if (drop_position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE or drop_position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER) \ and (model.get_value(target, 2) == self.RADIO_TYPE or model.get_value(target, 2) == self.SEPARATOR_TYPE): return False else: return True #drag and drop support def expandToPath(self, treeview, path): for i in range(len(path)): treeview.expand_row(path[:i+1], open_all=False) #drag and drop support def copyRow(self, treeview, model, source, target, drop_position): source_row = model[source] if drop_position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE: new = model.prepend(target, source_row) elif drop_position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER: new = model.append(target, source_row) elif drop_position == gtk.TREE_VIEW_DROP_BEFORE: new = model.insert_before(None, target, source_row) elif drop_position == gtk.TREE_VIEW_DROP_AFTER: new = model.insert_after(None, target, source_row) for n in range(model.iter_n_children(source)): child = model.iter_nth_child(source, n) self.copyRow(treeview, model, child, new, gtk.TREE_VIEW_DROP_INTO_OR_BEFORE) source_is_expanded = treeview.row_expanded(model.get_path(source)) if source_is_expanded: self.expandToPath(treeview, model.get_path(new)) #drag and drop support def onDragDataReceived(self, treeview, drag_context, x, y, selection_data, info, eventtime): #check if there's a valid drop location if(treeview.get_dest_row_at_pos(x, y) == None): self.log.debug("Dropped into nothing") return target_path, drop_position = treeview.get_dest_row_at_pos(x, y) model, source = treeview.get_selection().get_selected() target = model.get_iter(target_path) sourceName = model.get_value(source,1) targetName = model.get_value(target,1) is_sane = self.checkSanity(model, source, target) is_parentable = self.checkParentability(model, target, drop_position) if is_sane and is_parentable: self.copyRow(treeview, model, source, target, drop_position) if (drop_position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE or drop_position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER): treeview.expand_row(target_path, False) drag_context.finish(True, True, eventtime) self.dataProvider.moveToPosition(sourceName, targetName, drop_position) else: drag_context.finish(False, False, eventtime) #drag and drop support def onDragMotion(self, treeview, drag_context, x, y, eventtime): try: target_path, drop_position = treeview.get_dest_row_at_pos(x, y) model, source = treeview.get_selection().get_selected() target = model.get_iter(target_path) except: return is_sane = self.checkSanity(model, source, target) is_parentable = self.checkParentability(model, target, drop_position) if is_sane and is_parentable: treeview.enable_model_drag_dest([drop_yes], gtk.gdk.ACTION_MOVE) else: treeview.enable_model_drag_dest([drop_no], gtk.gdk.ACTION_MOVE) def add_group_data(self, group, parent, treestore): iter = None if(group.get('name') != 'root'): iter = treestore.append(parent, [group.get('name'), group.get('name'), self.GROUP_TYPE]) for item in group: if item.get('name') == None: continue if (item.tag == 'bookmark'): if(item.get('name').startswith('[separator')): treestore.append(iter, ['-- ' + _('Separator') + ' --', item.get('name'), self.SEPARATOR_TYPE]) else: treestore.append(iter, [item.get('name'), item.get('name'), self.RADIO_TYPE]) else: self.add_group_data(item, iter, treestore) def on_add_separator_clicked(self, widget): # hack: generate a unique name name = '[separator-' + str(uuid.uuid4()) + ']' self.dataProvider.addRadio(name, name) self.load_data() def on_add_bookmark_clicked(self, widget): # reset old dialog values self.nameEntry.set_text('') self.urlEntry.set_text('') self.config.set_title(_('Add new station')) self.nameEntry.grab_focus() self.radioGroup.show() self.radioGroupLabel.show() # populate groups liststore = gtk.ListStore(str) for group in self.dataProvider.listGroupNames(): liststore.append([group]) print "group found: " + group self.radioGroup.set_model(liststore) # default to root self.radioGroup.set_active(0) # get current selected group and set it as default selection = self.list.get_selection() (model, iter) = selection.get_selected() if type(iter).__name__=='TreeIter': selectedName = model.get_value(iter,1) selectedType = model.get_value(iter, 2) if (selectedType == self.GROUP_TYPE): groupIndex = self.dataProvider.listGroupNames().index(selectedName) self.radioGroup.set_active(groupIndex) # show dialog result = self.config.run() if result == 2: name = self.nameEntry.get_text() url = self.urlEntry.get_text() index = self.radioGroup.get_active() new_group = liststore[index][0] if len(name) > 0 and len(url) > 0: if self.dataProvider.addRadio(name, url, new_group): self.load_data() else: print 'No radio information provided!' self.config.hide() def on_edit_bookmark_clicked(self, widget): #get current selected element selection = self.list.get_selection() (model, iter) = selection.get_selected() if type(iter).__name__=='TreeIter': selectedName = model.get_value(iter,1) selectedType = model.get_value(iter, 2) liststore = gtk.ListStore(str) for group in self.dataProvider.listGroupNames(): liststore.append([group]) self.log.debug('group found: "%s"', group) if (selectedType == self.RADIO_TYPE): #set combo box model self.radioGroup.set_model(liststore) #get radio bookmark details selectedRadioUrl = self.dataProvider.getRadioUrl(selectedName) selectedRadio = self.dataProvider._radioExists(selectedName) currentGroup = selectedRadio.getparent().get("name") groupIndex = self.dataProvider.listGroupNames().index(currentGroup) # populate dialog with radio information self.nameEntry.set_text(selectedName) self.urlEntry.set_text(selectedRadioUrl) oldName = selectedName self.config.set_title(_('Edit %s') % selectedName) self.nameEntry.grab_focus() self.radioGroup.set_active(groupIndex) # show dialog result = self.config.run() if result == 2: name = self.nameEntry.get_text() url = self.urlEntry.get_text() index = self.radioGroup.get_active() new_group = liststore[index][0] if len(name) > 0 and len(url) > 0: if self.dataProvider.updateRadio(oldName, name, url): model.set_value(iter,0,name) model.set_value(iter,1,name) if new_group != currentGroup: self.dataProvider.updateElementGroup(selectedRadio, new_group) self.load_data() else: self.log.debug('No radio information provided!') self.config.hide() elif(selectedType == self.GROUP_TYPE): #set combo box model self.parentGroup.set_model(liststore) #get group details selectedGroup = self.dataProvider._groupExists(selectedName) currentGroup = selectedGroup.getparent().get("name") groupIndex = self.dataProvider.listGroupNames().index(currentGroup) #populate dialog with group information self.groupNameEntry.set_text(selectedName) self.configGroup.set_title(_('Edit group')) oldName = selectedName self.parentGroup.set_active(groupIndex) result = self.configGroup.run() if result == 2: name = self.groupNameEntry.get_text() index = self.parentGroup.get_active() new_group = liststore[index][0] if len(name) > 0: if(self.dataProvider.updateGroup(oldName, name)): model.set_value(iter,0,name) model.set_value(iter,1,name) if new_group != selectedName and new_group != currentGroup: self.dataProvider.updateElementGroup(selectedGroup, new_group) self.load_data() else: self.log.debug('No group information provided') self.configGroup.hide() elif(selectedType == self.SEPARATOR_TYPE): #Set combo box model self.sepGroup.set_model(liststore) #get radio bookmark details selectedRadio = self.dataProvider._radioExists(selectedName) currentGroup = selectedRadio.getparent().get("name") groupIndex = self.dataProvider.listGroupNames().index(currentGroup) # populate dialog with radio information self.sepMove.set_title(_('Edit Separator')) self.sepGroup.grab_focus() self.sepGroup.set_active(groupIndex) # show dialog result = self.sepMove.run() if result == 2: index = self.sepGroup.get_active() new_group = liststore[index][0] if new_group != currentGroup: self.dataProvider.updateElementGroup(selectedRadio, new_group) self.load_data() self.sepMove.hide() def on_row_activated(self, widget, row, cell): self.on_edit_bookmark_clicked(widget) def on_remove_bookmark_clicked(self, widget): #get current selected element selection = self.list.get_selection() (model, iter) = selection.get_selected() if type(iter).__name__=='TreeIter': selectedRadioName = model.get_value(iter,0) separatorFlag = model.get_value(iter,1) print selectedRadioName + " - " + separatorFlag # if separator then just remove it if not separatorFlag.startswith("[separator-"): confirmation = gtk.MessageDialog( self.window, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, _("Are you sure you want to delete \"%s\"?") % selectedRadioName ) result = confirmation.run() if result == -8: # remove from data provider self.dataProvider.removeRadio(selectedRadioName) # remove from gui model.remove(iter) confirmation.hide() else: self.dataProvider.removeRadio(separatorFlag) # remove from gui model.remove(iter) def on_close_clicked(self, widget): self.updateFunc() self.window.hide() # close the window and quit def on_delete_event(self, widget, event, data=None): if self.standalone: gtk.main_quit() return False def on_nameEntry_activated(self, widget): self.urlEntry.grab_focus() def on_urlEntry_activated(self, widget): self.config.response(2) def on_newGroupButton_clicked(self, widget): # reset old dialog values self.groupNameEntry.set_text('') self.configGroup.set_title(_('Add new group')) self.parentGroupLabel.show() self.parentGroup.show() self.groupNameEntry.grab_focus() # populate parent groups liststore = gtk.ListStore(str) for group in self.dataProvider.listGroupNames(): liststore.append([group]) self.log.debug('group found: "%s"', group) self.parentGroup.set_model(liststore) # default to root self.parentGroup.set_active(0) # get current selected group and set it as default selection = self.list.get_selection() (model, iter) = selection.get_selected() if type(iter).__name__=='TreeIter': selectedName = model.get_value(iter,1) selectedType = model.get_value(iter, 2) if (selectedType == self.GROUP_TYPE): groupIndex = self.dataProvider.listGroupNames().index(selectedName) self.parentGroup.set_active(groupIndex) # show dialog result = self.configGroup.run() if result == 2: # get group name name = self.groupNameEntry.get_text() # get parent group name index = self.parentGroup.get_active() parent_group = liststore[index][0] if len(name) > 0: if self.dataProvider.addGroup(parent_group, name): self.load_data() else: self.log.debug('No group information provided!') self.configGroup.hide() radiotray-0.7.3/src/NotificationManager.py0000664000175000017500000000632411726256106021406 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from lib.common import APPNAME from events.EventMngNotificationWrapper import EventMngNotificationWrapper import urllib2 from lib.common import USER_AGENT, ICON_FILE import logging import traceback class NotificationManager(object): def __init__(self, eventManagerWrapper): self.eventManagerWrapper = eventManagerWrapper self.log = logging.getLogger('radiotray') self.lastState = None def on_state_changed(self, data): state = data['state'] if(state == 'playing' and state != self.lastState): station = data['station'] self.lastState = state self.eventManagerWrapper.notify(_('Radio Tray Playing'), station) def on_song_changed(self, data): self.log.debug(data) station = data['station'] msgTitle = "%s - %s" % (APPNAME , station) msg = None if('artist' in data.keys() and 'title' in data.keys()): artist = data['artist'] title = data['title'] msg = "%s - %s" % (artist, title) elif('artist' in data.keys()): msg = data['artist'] elif('title' in data.keys()): msg = data['title'] if('homepage' in data.keys() and (data['homepage'].endswith('png') or data['homepage'].endswith('jpg'))): #download image try: req = urllib2.Request(data['homepage']) req.add_header('User-Agent', USER_AGENT) response = urllib2.urlopen(req) pix = response.read() f = open(ICON_FILE,'wb') try: f.write(pix) except Exception, e: log.warn('Error saving icon') finally: f.close() self.eventManagerWrapper.notify_icon(msgTitle, msg, ICON_FILE) except Exception, e: traceback.print_exc() self.eventManagerWrapper.notify(msgTitle, msg) else: self.eventManagerWrapper.notify(msgTitle, msg) def on_station_error(self, data): self.eventManagerWrapper.notify(_('Radio Error'), str(data['error'])) def on_bookmarks_reloaded(self, data): self.eventManagerWrapper.notify(_("Bookmarks Reloaded"), _("Bookmarks Reloaded")) radiotray-0.7.3/src/RamPlaylistDecoder.py0000664000175000017500000000367411726255527021227 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import urllib2 from lib.common import USER_AGENT import logging class RamPlaylistDecoder: def __init__(self): self.log = logging.getLogger('radiotray') self.log.debug('RAM playlist decoder') def isStreamValid(self, contentType, firstBytes): if('audio/x-pn-realaudio' in contentType or 'audio/vnd.rn-realaudio' in contentType): self.log.info('Stream is readable by RAM Playlist Decoder') return True else: return False def extractPlaylist(self, url): self.log.info('Downloading playlist...') req = urllib2.Request(url) req.add_header('User-Agent', USER_AGENT) f = urllib2.urlopen(req) str = f.read() f.close() self.log.info('Playlist downloaded') self.log.info('Decoding playlist...') lines = str.splitlines() playlist = [] for line in lines: if line.startswith("#") == False and len(line) > 0: tmp = line.strip() if(len(tmp) > 0): playlist.append(line.strip()) return playlist radiotray-0.7.3/src/AudioPlayerGStreamer.py0000664000175000017500000001733312010336767021516 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import sys, os import pygtk, gtk, gobject import pygst pygst.require("0.10") import gst from StreamDecoder import StreamDecoder from lib.common import USER_AGENT from events.EventManager import EventManager from threading import Timer import logging class AudioPlayerGStreamer: def __init__(self, mediator, cfg_provider, eventManager): self.mediator = mediator self.eventManager = eventManager self.decoder = StreamDecoder(cfg_provider) self.playlist = [] self.retrying = False self.log = logging.getLogger('radiotray') # init player self.souphttpsrc = gst.element_factory_make("souphttpsrc", "source") self.souphttpsrc.set_property("user-agent", USER_AGENT) self.player = gst.element_factory_make("playbin2", "player") fakesink = gst.element_factory_make("fakesink", "fakesink") self.player.set_property("video-sink", fakesink) #buffer size if(cfg_provider._settingExists("buffer_size")): bufferSize = int(cfg_provider.getConfigValue("buffer_size")) if (bufferSize > 0): self.log.debug("Setting buffer size to " + str(bufferSize)) self.player.set_property("buffer-size", bufferSize) bus = self.player.get_bus() bus.add_signal_watch() bus.connect("message", self.on_message) def start(self, uri): urlInfo = self.decoder.getMediaStreamInfo(uri) if(urlInfo is not None and urlInfo.isPlaylist()): self.playlist = self.decoder.getPlaylist(urlInfo) if(len(self.playlist) == 0): self.log.warn('Received empty playlist!') self.mediator.stop() self.eventManager.notify(EventManager.STATION_ERROR, {'error':"Received empty stream from station"}) self.log.debug(self.playlist) self.playNextStream() elif(urlInfo is not None and urlInfo.isPlaylist() == False): self.playlist = [urlInfo.getUrl()] self.playNextStream() else: self.stop() self.eventManager.notify(EventManager.STATION_ERROR, {'error':"Couldn't connect to radio station"}) def playNextStream(self): if(len(self.playlist) > 0): stream = self.playlist.pop(0) self.log.info('Play "%s"', stream) urlInfo = self.decoder.getMediaStreamInfo(stream) if(urlInfo is not None and urlInfo.isPlaylist() == False): self.playStream(stream) elif(urlInfo is not None and urlInfo.isPlaylist()): self.playlist = self.decoder.getPlaylist(urlInfo) + self.playlist self.playNextStream() elif(urlInfo is None): self.playNextStream() else: self.stop() self.eventManager.notify(EventManager.STATE_CHANGED, {'state':'paused'}) self.mediator.updateVolume(self.player.get_property("volume")) def playStream(self, uri): self.player.set_property("uri", uri) self.player.set_state(gst.STATE_PAUSED) # buffer before starting playback def stop(self): self.player.set_state(gst.STATE_NULL) self.eventManager.notify(EventManager.STATE_CHANGED, {'state':'paused'}) def volume_up(self, volume_increment): self.player.set_property("volume", min(self.player.get_property("volume") + volume_increment, 1.0)) self.mediator.updateVolume(self.player.get_property("volume")) def volume_down(self, volume_increment): self.player.set_property("volume", max(self.player.get_property("volume") - volume_increment, 0.0)) self.mediator.updateVolume(self.player.get_property("volume")) def on_message(self, bus, message): t = message.type stru = message.structure if(stru != None): name = stru.get_name() if(name == 'redirect'): slef.log.info("redirect received") self.player.set_state(gst.STATE_NULL) stru.foreach(self.redirect, None) if t == gst.MESSAGE_EOS: self.log.debug("Received MESSAGE_EOS") self.player.set_state(gst.STATE_NULL) self.playNextStream() elif t == gst.MESSAGE_BUFFERING: percent = message.structure['buffer-percent'] if percent < 100: self.log.debug("Buffering %s" % percent) self.player.set_state(gst.STATE_PAUSED) else: self.player.set_state(gst.STATE_PLAYING) elif t == gst.MESSAGE_ERROR: self.log.debug("Received MESSAGE_ERROR") self.player.set_state(gst.STATE_NULL) err, debug = message.parse_error() self.log.warn(err) self.log.warn(debug) if(len(self.playlist)>0): self.playNextStream() else: self.eventManager.notify(EventManager.STATION_ERROR, {'error':debug}) elif t == gst.MESSAGE_STATE_CHANGED: oldstate, newstate, pending = message.parse_state_changed() self.log.debug(("Received MESSAGE_STATE_CHANGED (%s -> %s)") % (oldstate, newstate)) if newstate == gst.STATE_PLAYING: self.retrying = False station = self.mediator.getContext().station self.eventManager.notify(EventManager.STATE_CHANGED, {'state':'playing', 'station':station}) elif oldstate == gst.STATE_PLAYING and newstate == gst.STATE_PAUSED: self.log.info("Received PAUSE state.") if self.retrying == False: self.retrying = True timer = Timer(20.0, self.checkTimeout) timer.start() self.eventManager.notify(EventManager.STATE_CHANGED, {'state':'paused'}) elif t == gst.MESSAGE_TAG: taglist = message.parse_tag() #if there is no song information, there's no point in triggering song change event if('artist' in taglist.keys() or 'title' in taglist.keys()): station = self.mediator.getContext().station metadata = {} for key in taglist.keys(): metadata[key] = taglist[key] metadata['station'] = station self.eventManager.notify(EventManager.SONG_CHANGED, metadata) return True def redirect(self, name, value, data): if(name == 'new-location'): self.start(value) return True def checkTimeout(self): self.log.debug("Checking timeout...") if self.retrying == True: self.log.info("Timed out. Retrying...") uri = self.player.get_property("uri") self.playStream(uri) else: self.log.info("Timed out, but not retrying anymore") radiotray-0.7.3/src/radiotray.py0000775000175000017500000000223612004532653017456 0ustar carloscarlos00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import dbus import sys, os, string from RadioTray import RadioTray from dbus import DBusException from dbus.mainloop.glib import threads_init threads_init() current_path = os.path.realpath(__file__) basedir = os.path.dirname(os.path.realpath(__file__)) if not os.path.exists(os.path.join(basedir, "radiotray.py")): if os.path.exists(os.path.join(os.getcwd(), "radiotray.py")): basedir = os.getcwd() sys.path.insert(0, basedir) os.chdir(basedir) def main(argv): if(len(argv) == 1): print "Trying to load URL: " + argv[0] try: bus = dbus.SessionBus() radiotray = bus.get_object('net.sourceforge.radiotray', '/net/sourceforge/radiotray') if argv[0] == '--config': print "Radio Tray already running." else: print "Setting current radio through DBus..." playUrl = radiotray.get_dbus_method('playUrl', 'net.sourceforge.radiotray') playUrl(argv[0]) except DBusException: RadioTray(argv[0]) else: RadioTray() if __name__ == "__main__": main(sys.argv[1:]) radiotray-0.7.3/src/mpris.py0000664000175000017500000000273611726255527016630 0ustar carloscarlos00000000000000# Copyright (C) 2010 behrooz shabani (everplays) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . """ An implementation of the MPRIS D-Bus protocol for use with radiotray based on Exaile's MPRIS plugin """ import dbus import dbus.service import mpris_root import mpris_tracklist import mpris_player OBJECT_NAME = 'org.mpris.radiotray' class RadioTrayMpris(object): """ Controller for various MPRIS objects. """ def __init__(self, provider, mediator): """ Constructs an MPRIS controller. Note, you must call acquire() """ self.bus = dbus.service.BusName(OBJECT_NAME, bus=dbus.SessionBus()) mpris_root.RadioTrayMprisRoot(mediator, self.bus) # don't need provider mpris_player.RadioTrayMprisPlayer(provider, mediator, self.bus) mpris_tracklist.RadioTrayMprisTrackList(self.bus) # actually TrackList doesn't provide anything yet radiotray-0.7.3/src/DbusFacade.py0000664000175000017500000000507712004002103017422 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import dbus import dbus.service import dbus.glib class DbusFacade(dbus.service.Object): def __init__(self, provider, mediator): self.dataProvider = provider self.mediator = mediator bus_name = dbus.service.BusName('net.sourceforge.radiotray', bus=dbus.SessionBus()) dbus.service.Object.__init__(self, bus_name, '/net/sourceforge/radiotray') @dbus.service.method('net.sourceforge.radiotray') def listRadios(self): return self.dataProvider.listRadioNames() @dbus.service.method('net.sourceforge.radiotray') def getCurrentRadio(self): if self.mediator.isPlaying(): return self.mediator.getContext().station else: return self.mediator.getContext().station + " (not playing)" @dbus.service.method('net.sourceforge.radiotray') def playRadio(self, radioName): self.mediator.play(radioName) @dbus.service.method('net.sourceforge.radiotray') def playUrl(self, url): self.mediator.playUrl(url) @dbus.service.method('net.sourceforge.radiotray') def turnOff(self): self.mediator.stop() @dbus.service.method('net.sourceforge.radiotray') def volumeUp(self): self.mediator.volume_up() @dbus.service.method('net.sourceforge.radiotray') def volumeDown(self): self.mediator.volume_down() @dbus.service.method('net.sourceforge.radiotray') def getCurrentMetaData(self): return self.mediator.getContext().getSongInfo() @dbus.service.method('net.sourceforge.radiotray') def togglePlay(self): if self.mediator.context.state == 'playing' or self.mediator.context.state == 'connecting': self.mediator.stop() else: self.mediator.playLast() radiotray-0.7.3/src/SysTray.py0000664000175000017500000001463711736420036017105 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import sys,os import time try: import pygtk pygtk.require("2.1") import gtk except: pass try: import gtk import gtk.glade import gobject except: sys.exit(1) from AudioPlayerGStreamer import AudioPlayerGStreamer from XmlDataProvider import XmlDataProvider from BookmarkConfiguration import BookmarkConfiguration from PluginConfiguration import PluginConfiguration from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF from lib import i18n from about import AboutDialog from lib.utils import html_escape from GuiChooserConfiguration import GuiChooserConfiguration from events.EventManager import EventManager from SysTrayGui import SysTrayGui from AppIndicatorGui import AppIndicatorGui from TooltipManager import TooltipManager from Context import Context import dbus import textwrap import logging class AboutWindow(object): def __init__(self, dialog_class): self.dialog = None self.dialog_class = dialog_class def on_dialog_destroy(self): self.dialog = None def show(self, parent = None): if self.dialog: self.dialog.present() else: if parent: self.dialog = self.dialog_class(parent) else: self.dialog = self.dialog_class() self.dialog.connect("destroy", lambda *args: self.on_dialog_destroy()) about = AboutWindow(AboutDialog) def about_dialog(parent=None): about.show(parent) class SysTray(object): def __init__(self, mediator, provider, cfg_provider, default_cfg_provider, eventManager, tooltipManager): self.version = APPVERSION self.mediator = mediator self.eventManager = eventManager self.log = logging.getLogger('radiotray') # initialize data provider self.provider = provider self.cfg_provider = cfg_provider self.tooltip = tooltipManager self.ignore_toggle = False # execute gui chooser try: import appindicator self.gui_engine = self.cfg_provider.getConfigValue("gui_engine") if(self.gui_engine == None): self.gui_engine = default_cfg_provider.getConfigValue("gui_engine") if(self.gui_engine == None or self.gui_engine == "chooser"): self.log.debug('show chooser') chooser = GuiChooserConfiguration() self.gui_engine = chooser.run() self.cfg_provider.setConfigValue("gui_engine", self.gui_engine) except Exception as e: self.log.debug('No appindicator support found. Choosing notification area...') self.gui_engine = "systray" if self.gui_engine == "appindicator": self.app_indicator_enabled = True else: self.app_indicator_enabled = False self.cfg_provider.setConfigValue("enable_application_indicator_support", "false") if(self.app_indicator_enabled): self.log.debug('App Indicator selected') self.gui = AppIndicatorGui(self, self.mediator, self.cfg_provider, self.provider) else: self.log.debug('Systray selected') self.gui = SysTrayGui(self, self.mediator, self.cfg_provider, self.provider) self.tooltip.setGui(self.gui) self.tooltip.addSource(self.gui.getCommonTooltipData) self.gui.buildMenu() ###### Action Events ####### def scroll(self,widget, event): if event.direction == gtk.gdk.SCROLL_UP: self.mediator.volume_up() if event.direction == gtk.gdk.SCROLL_DOWN: self.mediator.volume_down() def volume_up(self, menu_item): self.mediator.volume_up() def volume_down(self, menu_item): self.mediator.volume_down() def on_preferences(self, data): config = BookmarkConfiguration(self.provider, self.update_radios) def on_quit(self, data): self.log.info('Exiting...') gtk.main_quit() def on_about(self, data): about_dialog(parent=None) def on_turn_on_off(self, data): if self.mediator.context.state == 'playing' or self.mediator.context.state == 'connecting': self.mediator.stop() else: self.mediator.play(self.mediator.context.station) def on_start(self, data, radio): self.mediator.context.resetSongInfo() self.mediator.play(radio) def updateTooltip(self): self.tooltip.update() def update_radios(self): self.gui.update_radios() def run(self): gtk.gdk.threads_init() gtk.main() def reload_bookmarks(self, data): self.provider.loadFromFile() self.update_radios() self.eventManager.notify(EventManager.BOOKMARKS_RELOADED, {}) def on_state_changed(self, data): if(data['state'] == Context.STATE_PAUSED and self.mediator.context.station == Context.UNKNOWN_RADIO): self.mediator.context.station = '' self.gui.state_changed(data) self.updateTooltip() def on_volume_changed(self, volume): self.updateTooltip() def on_song_changed(self, data): self.updateTooltip() def on_plugin_preferences(self, data): config = PluginConfiguration(self.pluginManager, self.cfg_provider) def getPluginMenu(self): return self.gui.getPluginMenu() def setPluginManager(self, pluginManager): self.pluginManager = pluginManager radiotray-0.7.3/src/__init__.py0000664000175000017500000000000011726255527017213 0ustar carloscarlos00000000000000radiotray-0.7.3/src/Context.py0000664000175000017500000000316511736420036017105 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## class Context: STATE_PLAYING = "playing" STATE_CONNECT = "connecting" STATE_PAUSED = "paused" UNKNOWN_RADIO = C_("Unknown radio specified by URL", "Unknown radio") station = None state = None def __init__(self): self.resetSongInfo() def resetSongInfo(self): self.url = "" self.title = "" self.artist = None self.album = None def getSongInfo(self): if(self.title and len(self.title) > 0 and self.artist and len(self.artist) > 0): return self.artist + " - " + self.title elif(self.title and len(self.title) > 0): return self.title elif(self.artist and len(self.artist) > 0): return self.artist else: return 'Playing' radiotray-0.7.3/src/PluginConfiguration.py0000664000175000017500000000744011726255527021461 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade import gobject import os from lib import utils from lib.common import APP_ICON_ON except: sys.exit(1) import logging class PluginConfiguration(object): def __init__(self, pluginManager, cfgProvider): self.pluginManager = pluginManager self.cfgProvider = cfgProvider self.log = logging.getLogger('radiotray') # load glade and get gui objects gladefile = utils.load_ui_file("configPlugins.glade") self.wTree = gladefile self.window = self.wTree.get_object("dialog1") self.list = self.wTree.get_object("treeview1") # set icon self.window.set_icon_from_file(APP_ICON_ON) # load plugin data liststore = self.load_data() self.list.set_model(liststore) # config plugins view cell1 = gtk.CellRendererToggle() cell1.set_property('activatable', True) cell1.set_activatable(True) cell1.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE) cell1.connect( 'toggled', self.on_toggle, liststore ) tvcolumn1 = gtk.TreeViewColumn(_('Active'), cell1) tvcolumn1.add_attribute( cell1, "active", 0) cell2 = gtk.CellRendererText() tvcolumn2 = gtk.TreeViewColumn(_('Name'), cell2, text=1) self.list.append_column(tvcolumn1) self.list.append_column(tvcolumn2) if (self.window): dic = { "on_close_clicked" : self.on_close_clicked} self.wTree.connect_signals(self) self.window.show() def load_data(self): self.activePlugins = self.cfgProvider.getConfigList('active_plugins') # if plugins == None: # self.cfgProvider.setConfigValue('active_plugins' liststore = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING) plugins = self.pluginManager.getPlugins() for p in plugins: if p.name in self.activePlugins: liststore.append([True, p.name]) else: liststore.append([False, p.name]) return liststore def on_toggle(self, cell, path, model): model[path][0] = not model[path][0] name = model[path][1] self.log.debug('Setting ' + model[path][1] + ' to ' + str(model[path][0])) self.log.debug(self.activePlugins) if(model[path][0] == True): self.log.debug('apppend %s', name) self.activePlugins.append(name) self.pluginManager.activatePlugin(name) else: self.log.debug('remove %s', name) self.activePlugins.remove(name) self.pluginManager.deactivatePlugin(name) self.log.debug(self.activePlugins) def on_close_clicked(self, widget): self.cfgProvider.setConfigList('active_plugins', self.activePlugins) self.window.destroy() radiotray-0.7.3/src/TooltipManager.py0000664000175000017500000000253711736420036020410 0ustar carloscarlos00000000000000########################################################################## # Copyright 2009 Carlos Ribeiro # # This file is part of Radio Tray # # Radio Tray is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 1 of the License, or # (at your option) any later version. # # Radio Tray is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Radio Tray. If not, see . # ########################################################################## from events.EventManager import EventManager class TooltipManager(object): def __init__(self): self.tooltipSources = [] def setGui(self, gui): self.gui = gui def addSource(self, callback): self.tooltipSources.append(callback) def update(self): complete = '' for src in self.tooltipSources: s = src() if s != None: complete += s + '\n' complete = complete.strip("\n") self.gui.setTooltip(complete) radiotray-0.7.3/setup.py0000664000175000017500000000621111731732330016023 0ustar carloscarlos00000000000000#!/usr/bin/env python from distutils.core import setup from distutils.core import setup from distutils.command.install_data import install_data from distutils.dist import Distribution from distutils.command.build import build from distutils.dep_util import newer from distutils.log import info import glob import os import sys import subprocess import platform from src.lib.common import APPNAME, APPVERSION PO_DIR = 'po' MO_DIR = os.path.join('build', 'mo') class RadioTrayDist(Distribution): global_options = Distribution.global_options + [ ("without-gettext", None, "Don't build/install gettext .mo files")] def __init__ (self, *args): self.without_gettext = False Distribution.__init__(self, *args) class BuildData(build): def run (self): build.run (self) if self.distribution.without_gettext: return for po in glob.glob (os.path.join (PO_DIR, '*.po')): lang = os.path.basename(po[:-3]) mo = os.path.join(MO_DIR, lang, 'radiotray.mo') directory = os.path.dirname(mo) if not os.path.exists(directory): info('creating %s' % directory) os.makedirs(directory) if newer(po, mo): info('compiling %s -> %s' % (po, mo)) try: rc = subprocess.call(['msgfmt', '-o', mo, po]) if rc != 0: raise Warning, "msgfmt returned %d" % rc except Exception, e: print "Building gettext files failed. Try setup.py --without-gettext [build|install]" print "%s: %s" % (type(e), e) sys.exit(1) class InstallData(install_data): def run (self): self.data_files.extend (self._find_mo_files ()) install_data.run (self) def _find_mo_files (self): data_files = [] if not self.distribution.without_gettext: for mo in glob.glob (os.path.join (MO_DIR, '*', 'radiotray.mo')): lang = os.path.basename(os.path.dirname(mo)) dest = os.path.join('share', 'locale', lang, 'LC_MESSAGES') data_files.append((dest, [mo])) return data_files if platform.system() == 'FreeBSD': man_dir = 'man' else: man_dir = 'share/man' setup(name='radiotray', version=APPVERSION, author='Carlos Ribeiro', author_email='carlosmribeiro1@gmail.com', url='http://radiotray.sourceforge.net', description='Radio Tray is an online radio stream player', license='GPL', scripts=['radiotray'], data_files = [ ('share/applications', glob.glob('data/*.desktop')), ('share/doc/radiotray-%s' % APPVERSION, ['AUTHORS', 'CONTRIBUTORS', 'COPYING', 'NEWS', 'README']), ('share/radiotray/images', glob.glob('data/images/*.png')), ('share/radiotray/images', glob.glob('data/images/*.gif')), ('share/pixmaps', glob.glob('data/images/radiotray.png')), ('share/radiotray', ['data/configBookmarks.glade', 'data/bookmarks.xml', 'data/config.xml', 'data/configGui.glade', 'data/configPlugins.glade']), ('share/radiotray/plugins', glob.glob('data/plugins/*')), ], package_dir={'radiotray': 'src'}, packages = ['radiotray', 'radiotray.lib', 'radiotray.events'], cmdclass={'build': BuildData, 'install_data': InstallData,}, distclass=RadioTrayDist, ) radiotray-0.7.3/PKG-INFO0000664000175000017500000000041112011044040015364 0ustar carloscarlos00000000000000Metadata-Version: 1.0 Name: radiotray Version: 0.7.3 Summary: Radio Tray is an online radio stream player Home-page: http://radiotray.sourceforge.net Author: Carlos Ribeiro Author-email: carlosmribeiro1@gmail.com License: GPL Description: UNKNOWN Platform: UNKNOWN radiotray-0.7.3/CONTRIBUTORS0000664000175000017500000000021611726255527016204 0ustar carloscarlos00000000000000Og Maciel Behrooz Shabani Ed Bruck Valdur Kana Thomas Perl radiotray-0.7.3/radiotray0000775000175000017500000000050211726255527016246 0ustar carloscarlos00000000000000#!/usr/bin/env python import sys,os from os.path import dirname, join, pardir try: from radiotray import radiotray except ImportError: basedir = os.path.dirname(os.path.realpath(__file__)) workdir = join(basedir,'src') sys.path.insert(0, workdir) os.chdir(workdir) import radiotray radiotray.main(sys.argv[1:]) radiotray-0.7.3/COPYING0000664000175000017500000002327011726255527015364 0ustar carloscarlos00000000000000 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. radiotray-0.7.3/po/0000775000175000017500000000000012011044040014711 5ustar carloscarlos00000000000000radiotray-0.7.3/po/el.po0000664000175000017500000001564112011024776015676 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Dimitris Glezos , 2011. # , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Greek (http://www.transifex.com/projects/p/radiotray/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Προσθήκη ομάδας" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Ομάδα:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Μετακίνηση του διαχωριστή σε άλλη ομάδα" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Όνομα:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Μητρική Ομάδα:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Διαχωριστικό" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Επεξεργασία Σταθμών" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Όνομα σταθμού:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(αυτή η επιλογή θα αποθηκευθεί στο αρχείο ρυθμίσεων)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "App Indicator" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Ρύθμιση Πρώτης Εκτέλεσης" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Εικονίδιο στην Περιοχή Ειδοποιήσεων" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Παρακαλώ επιλέξτε πώς θα εμφανίζεται το Radio Tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Dimitris Glezos \nYannis Poulakakis " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Ιστοσελίδα του %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Όνομα Σταθμού" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Προσθήκη νέου σταθμού" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Επεξεργασία %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Επεξεργασία ομάδας" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Επεξεργασία Διαχωριστικού" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Προσθήκη νέας ομάδας" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Προγραμματιστές:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Συνεργάτες:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Απενεργοποιημένο" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Ενεργοποίηση \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Ρυθμίσεις Σταθμών..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Ανανέωση σελιδοδεικτών" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Ρύθμιση Πρόσθετων..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Απενεργοποίηση \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Αναπαραγωγή (ένταση: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Σε αδράνεια (ένταση: %s%%) " #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Άγνωστος σταθμός" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Το Radio Tray Αναπαράγει" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Πρόβλημα Ραδιοφώνου" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Έγινε επαναφόρτωση σελιδοδεικτών" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Ενεργό" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Όνομα" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Ανενεργό (ένταση: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Σύνδεση με %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Αναπαραγωγή %s (ένταση: %s%%)⏎\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Αναπαραγωγή %s (ένταση: %s%%)" radiotray-0.7.3/po/fi.po0000664000175000017500000001330412011025013015647 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # tp_master , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/radiotray/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Lisää Ryhmä" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Ryhmä :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nimi:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Yläryhmä:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Erotin" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Muuta Radioiden Asetuksia" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Radion nimi:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "Verkko-osoite :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "käännös" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%sn Kotisivut" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Radion Nimi" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Lisää uusi asema" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Muokkaa %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Muokkaa ryhmää" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Muokkaa Erotinta" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Oletko varma, että haluat poistaa radion \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Lisää uusi ryhmä" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Kehittäjät:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Tukijat:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Sammutettu" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Käynnistä \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Säädä Radioiden Asetuksia..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Lataa Kirjanmerkit Uudelleen" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Sammuta \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Tuntematon radio" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Kirjanmerkit Ladattu Uudelleen" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Jouten (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Yhdistetään radioon %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/zh_TW.po0000664000175000017500000001302412011025044016307 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/radiotray/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "新增群組" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "群組" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "名稱" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "上層群組:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "分隔線" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "設置電台" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "電台名稱" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "翻譯貢獻" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s 的網站" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "電台名稱" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "新增電台" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "編輯 %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "編輯群組" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "編輯分隔線" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "確定要刪除 %s?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "新增群組" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "開發人員:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "貢獻者:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "關掉電台" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "設置電台" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "重新整理書籤" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "關閉%s" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "未知電台" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "書籤已重新整理" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "閒置 (音量: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "正在連接 %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/gu.po0000664000175000017500000001234212011024777015705 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Gujarati (http://www.transifex.com/projects/p/radiotray/language/gu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gu\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "રેડિયો નામ" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/it.po0000664000175000017500000001442012011025004015665 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Bernardo Miguel Savone , 2011, 2012. # Daniele Napolitano , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-16 13:00+0000\n" "Last-Translator: Bernardo Miguel Savone \n" "Language-Team: Italian (http://www.transifex.com/projects/p/radiotray/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Aggiungi gruppo" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Gruppo :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Muovi separatore in un altro gruppo" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nome :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Gruppo superiore :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separatore" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configura le radio" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nome radio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(Questa scelta verrà salvata nel file di configurazione)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "App Indicator" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Prima esecuzione di Config" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Icona nell'area di notifica" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Si prega di selezionare come Radio Tray dovrebbe apparire" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Plugins Disponibili:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "I cambiamenti saranno visibili solo dopo il riavvio di Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Configurazione Plugins" #: ../src/about.py:16 msgid "translator-credits" msgstr "Daniele Napolitano " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Sito web di %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nome radio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Aggiungi una nuova stazione" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Modifica %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Modifica gruppo" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Modifica separatore" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Si è sicuri di voler eliminare \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Aggiungi un nuovo gruppo" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Sviluppatori:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contributi:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Spenta" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Accendere \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configura le radio..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Ricarica segnalibri" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configura plugin..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Spegni \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "In riproduzione (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Spento (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Radio sconosciuta" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray in riproduzione" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Errore radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Segnalibri ricaricati" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Attivo" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nome" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inattivo (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Connessione a %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "In riproduzione %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "In riproduzione %s (vol: %s%%)" radiotray-0.7.3/po/fr.po0000664000175000017500000001460612011025041015667 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Alexandre Franke , 2011. # Fred Kwame , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-30 19:00+0000\n" "Last-Translator: dadour13 \n" "Language-Team: French (http://www.transifex.com/projects/p/radiotray/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Ajouter un groupe" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Groupe :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Déplacer le séparateur à un autre groupe" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nom :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Groupe parent :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Séparateur" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurer les radios" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nom de la radio :" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(Ce choix sera enregistré dans la configuration)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicateur d'application" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configuration lors du premier lancement" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Icône dans la zone de notification" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Veuillez sélectionner comment Radio Tray doit apparaître" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "greffons existants" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "les changements seront visible seulement après le redémarrage de Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "ajustement des greffons" #: ../src/about.py:16 msgid "translator-credits" msgstr "Alexandre Franke et David Russo " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Le site web de %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nom de la radio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Ajouter une nouvelle station" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Modifier %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Modifier le groupe" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Modifier le séparateur" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Êtes-vous sûr de vouloir supprimer « %s » ?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Ajouter un nouveau groupe" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Développeurs :" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contributeurs :" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Arrêté" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Allumer « %s »" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configurer les radios…" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Recharger les signets" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configurer les plugins" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Arrêter « %s »" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Lecture en cours (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Inactif (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Radio inconnue" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Lecture Radio Tray" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Erreur de Radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Signets rechargés" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Actif" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nom" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inactif (vol : %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Connexion à %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Lecture en cours %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Lecture en cours %s (vol: %s%%)" radiotray-0.7.3/po/he.po0000664000175000017500000001536512011025050015657 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. # Ariel Nemtzov , 2011, 2012. # zach , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-20 12:39+0000\n" "Last-Translator: Ariel Nemtzov \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/radiotray/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "הוספת קבוצה" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "קבוצה:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "העברת המפריד לקבוצה אחרת" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "שם:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "קבוצת אב:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "חוצץ" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "הגדרת תחנות" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "שם תחנה:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "כתובת:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(בחירה זו תישמר בקובץ ההגדרות)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "מחוון אפליקציות" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "הגדרת ריצה בפעם הראשונה" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "אייקון באזור ההודעות" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "אנא שים לב כיצד התוכנה אמורה להיראות" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "תוספים זמינים:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "ניתן יהיה לראות שינויים רק לאחר הפעלת התוכנה מחדש." #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "התאם תוספים" #: ../src/about.py:16 msgid "translator-credits" msgstr "Transifex Contributions: \\n\n ami7878 https://www.transifex.net/accounts/profile/ami7878/ \\n\n Ariel Nemtzov https://www.transifex.net/accounts/profile/rel_dude/ \\n\n carlosm https://www.transifex.net/accounts/profile/carlosm/ \\n" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "אתר האינטרנט של %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "שם תחנה" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "הוספת תחנה חדשה" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "עריכה %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "עריכת קבוצה" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "עריכת חוצץ" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "האם אתה בטוח שברצונך למחוק את \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "הוספת קבוצה חדשה" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "מפתחים:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "תורמים:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "כבוי" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "הדלק \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "הגדרת תחנות..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "טעינת הסימניות מחדש" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "הגדרת תוספים..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "כבה \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "משמיע (עוצמה: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "מושהה (עוצמת שמע: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "תחנה לא ידועה" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "נגן הרדיו פועל" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "שגיאה בתחנה" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "הסימניות נטענו מחדש" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "פעיל" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "שם" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "מושהה (עוצמת שמע: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "מתחבר לתחנה %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "משמיע %s (עוצמת שמע: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "משמיע %s (עוצמת שמע: %s%%)" radiotray-0.7.3/po/te.po0000664000175000017500000001315312011025050015664 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/radiotray/language/te/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "విభాగిని" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Veeven" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s యొక్క వెబ్ సైటు" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "రేడియో పేరు" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "\"%s\"ని నిజంగానే తొలగించాలనుకుంటున్నారా?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "వికాసకులు:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "తోడ్పాటుదార్లు:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "నిలిపివేసారు" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\"ని నిలిపివేయి" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "%sకి అనుసంధానిస్తున్నాం" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/de.po0000664000175000017500000001442712011025063015655 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # memi , 2011. # Seb Hoff , 2012. # Vinzenz Vietzke , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-01 13:39+0000\n" "Last-Translator: copycat \n" "Language-Team: German (http://www.transifex.com/projects/p/radiotray/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Gruppe hinzufügen" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Gruppe:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Trennzeichen in andere Gruppe verschieben" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Name:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Übergeordnete Gruppe:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separator" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Sender einstellen" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Sendername:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(diese Auswahl wird in der Konfigurationsdatei gespeichert)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Programmanzeige" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Konfiguration beim ersten Start" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Symbol im Benachrichtigungsbereich" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Bitte festlegen, wie RadioTray erscheinen soll" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Verfügbare Plugins" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Die Änderungen werden erst nach einem Radio Tray Neustart sichtbar" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Konfiguration der Plugins" #: ../src/about.py:16 msgid "translator-credits" msgstr "Übersetzung von" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s Webseite" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Sendername" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Neuen Radiosender hinzufügen" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Bearbeite %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Bearbeite Gruppe" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Separator bearbeiten" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Soll folgender Sender wirklich gelöscht werden: \"%s\"" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Neue Gruppe hinzufügen" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Entwickler:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Mitwirkende:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Radio ausgeschaltet" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "\"%s\" anschalten" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Sender einstellen..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Lesezeichen neu laden" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Plugins einrichten..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\" ausschalten" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Play (Vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Untätig (Vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Unbekannter Sender" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray Wiedergabe" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Radio Fehler" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Lesezeichen neu geladen" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktiv" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Name" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inaktiv (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Mit %s verbinden" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Wiedergabe %s (Vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Wiedergabe %s (Vol: %s%%)" radiotray-0.7.3/po/ru.po0000664000175000017500000001614312011025033015705 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Alexey Ivanov , 2011. # Dmitriy , 2011. # , 2011. # Pavel , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-23 12:01+0000\n" "Last-Translator: Pavel Ralovets \n" "Language-Team: Russian (http://www.transifex.com/projects/p/radiotray/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Добавить группу" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Группа:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Переместить разделитель в другую группу" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Имя:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Родительская группа:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Разделитель" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Настройки радиостанций" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Радиостанция:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(Ваш выбор будет сохранен в файле)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Индикатор приложения" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Первый запуск средства настройки" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Значок в области уведомлений" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Пожалуйста, выберите, как Radio Tray должен появляться" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Доступные плагины:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Изменения будут видны после перезапуска Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Настроить плагины" #: ../src/about.py:16 msgid "translator-credits" msgstr "Fomin Denis \nAlexey Ivanov \n " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Веб-сайт %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Радиостанция" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Добавить новую радиостанцию" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Редактировать %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Редактировать группу" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Разделитель" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Вы уверены, что хотите удалить: \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Добавить новую группу" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Разработчики:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Участники:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Выключить радио" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Включить \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Настройки радиостанций..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Перезагрузить закладки" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Настройка плагинов..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Выключить \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Играет (громк: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Ожидание (громк: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Неизвестная радиостанция" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Играет Radio Tray" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Ошибка Radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Закладки перезагружены" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Активно" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Плагины" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Режим ожидания (громкость: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Соединение с %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Играет %s (громк: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Играет %s (громк: %s%%)" radiotray-0.7.3/po/et.po0000664000175000017500000001431612011025021015664 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Kasutaja , 2011. # , 2011, 2012. # valdur55 , 2011. # Valdur Kana , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-22 17:38+0000\n" "Last-Translator: valdur55 \n" "Language-Team: Estonian (http://www.transifex.com/projects/p/radiotray/language/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Rühma lisamine" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Rühm:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Liiguta eraldaja teise rühma." #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nimi:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Ülemrühm:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Eraldaja" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Seadista raadioid" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Raadio nimi:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(see valik salvestakse seadistuste faili)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Applikatsiooni indikaator" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Esimese korra seadistus" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Teavitusala ikoon" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Radio Tray kuvamise viisi valimine" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Saadaolevad plugiad" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Muutused rakenduvad pärast Radio Tray taaskäivitust" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Seadista pluginaid" #: ../src/about.py:16 msgid "translator-credits" msgstr "Valdur Kana " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s koduleht" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Raadio nimi" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Lisa uus raadio" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "%s muutmine" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Rühma muutmine" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Muuda eraldajat" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Kas sa oled kindel, et soovite eemaldada \"%s\" ?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Lisa uus rühm" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Arendajad:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Kaastöötajad:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Peatatud" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Käivita \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Raadiote seadistamine" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Järjehoidjate värskendamine" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Pluginate seadistamine" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Peata \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Esitamine (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Jõude (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Tundmatu raadio" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Raadio Tray esitab" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Raadio Error" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Järjehoidjad on värskendatud" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktiivne" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nimi" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Jõude (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Ühendan %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "%s esitamine (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "%s esitamine (vol: %s%%)" radiotray-0.7.3/po/tr.po0000664000175000017500000001446512011025035015713 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Hasan Yılmaz , 2012. # mehmet nur olcay , 2011. # , 2011. # zeugma , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-25 16:29+0000\n" "Last-Translator: Hasan Yılmaz \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/radiotray/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Grup Ekle" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grup:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Ayracı başka bir gruba taşı" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Ad:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Ana Grup:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Ayraç" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Radyoları Düzenle" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Radyo adı:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(ayar dosyasına kaydedilecek)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Uygulama alanına küçült" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Başlangıç Ayarları" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Sistem Tepsisine küçült" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Radio Tray'in nerede görüneceğini seçin" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Kullanılabilir Eklentiler:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Değişiklikler Radio Tray yeniden başlatıldığında etkin olacak" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Eklentileri Yapılandır" #: ../src/about.py:16 msgid "translator-credits" msgstr "Çeviri: Mehmet Nur Olcay mnurolcay@gmail.com" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s Sitesi" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Radyo Adı" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Yeni istasyon ekle" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "%s radyosunu düzenle" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Grubu düzenle" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Ayracı Düzenle" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "\"%s\" radyosunu silmek istediğinize emin misiniz ?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Yeni grup ekle" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Geliştiriciler:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Katkıda Bulunanlar:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Kapalı" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "%s Radyosunu Aç" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Radyoları Düzenle..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Yer İmlerini Tazele" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Eklentileri Yapılandır..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\" Radyosunu Kapat" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Oynatılıyor (ses: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Beklemede (ses: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Bilinmeyen radyo" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray Oynatılıyor" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Radyo Hatalı" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Yerimleri Tazelendi" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktif" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Adı" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Beklemede (ses: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "%s radyosuna bağlanıyor" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Oynatılıyot %s (ses: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Oynatılıyor %s (ses: %s%%)" radiotray-0.7.3/po/bg.po0000664000175000017500000001411412011025042015643 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/radiotray/language/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Добавяне на група" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Група:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Име:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Родителска група:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Разделител" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Настройване на радиа" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Име на радиото:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "заслуги за превода" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Уебсайт на %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Име на радиото" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Добавяне на нова станция" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Редактиране на %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Редактиране на група" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Редактиране на разделител" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Сигурни ли сте, че искате да изтриете \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Добавяне на нова група" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Разработчици:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Сътрудници:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Изключено" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Настройване на радиата" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Презареждане на отметките" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Изключване на \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Неизвестно радио" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Отметките са презаредени" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Не се възпроизвежда нищо (сила на звука: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Свързване с(ъс) %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/pt.po0000664000175000017500000001442512011025035015705 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # carlosm , 2011. # , 2011. # Vkthor Ix , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-23 16:41+0000\n" "Last-Translator: Vkthor Ix \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/radiotray/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Adicionar grupo" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupo:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Mover o separador para outro grupo" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nome:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grupo superior:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separador" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurar Rádios" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nome da Rádio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(esta escolha será guardada no ficheiro de configurações)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicador da aplicação" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configuração inicial" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ícone na Área de Notificação" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Por favor, seleccione o modo de visualizar o Radio Tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Extensões disponíveis:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "As mudanças só se tornam efectivas após reiniciar o Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Configuração das extensões" #: ../src/about.py:16 msgid "translator-credits" msgstr "Carlos Ribeiro " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Website de %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nome da Rádio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Adicionar nova estação" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Editar %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Editar grupo" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editar separador" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Tem a certeza que deseja remover \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Adicionar novo grupo" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Programadores:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contribuições:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Desligado" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Ligar \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configurar rádios..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Actualizar marcadores" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configurar extensões..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Desligar \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "A reproduzir (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Inactivo (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Rádio desconhecida" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "A reproduzir" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Erro" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Marcadores actualizados" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Activo" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nome" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inactivo (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "A ligar-se a %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "A reproduzir %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "A reproduzir %s (vol: %s%%)" radiotray-0.7.3/po/cs.po0000664000175000017500000001446512011025015015671 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Jan Hrdina , 2011. # Martin Lukeš , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-05 10:13+0000\n" "Last-Translator: Martin Lukeš \n" "Language-Team: Czech (http://www.transifex.com/projects/p/radiotray/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Přidat skupinu" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Skupina:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Přesunout oddělovač do jiné skupiny" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Název:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Nadřazená skupina:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Oddělovač" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Úprava stanic" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Název stanice:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(volba bude uložena v souboru s nastavením)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Applet upozornění" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Nastavení při prvním spuštění" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikona v Oznamovací oblasti" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Vyberte, jak se má Radio Tray zobrazovat" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Dostupné zásuvné moduly" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Změny se projeví až po restartování Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Nastavení zásuvných modulů" #: ../src/about.py:16 msgid "translator-credits" msgstr "Ivo Liska \nJan Hrdina \nMartin Lukeš " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Webová stránka %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Název stanice" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Přidat novou stanici" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Upravit %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Upravit skupinu" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Upravit oddělovač" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Opravdu odstranit \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Přidat novou skupinu" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Vývojáři:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Přispěli:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Vypnuto" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Zapnout \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Upravit stanice …" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Obnovit záložky" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Nastavení zásuvných modulů" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Vypnout \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Přehrává se (hl.: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Nečinné (hl.: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Neznámá stanice" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Právě hraje" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Chyba stanice" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Záložky obnoveny" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktivní" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Název" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Nečinné (hl.: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Připojování k %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Hraje %s (hl.: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Hraje %s (hl.: %s%%)" radiotray-0.7.3/po/nl.po0000664000175000017500000001343712011025034015674 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. # sgrs , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/radiotray/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Groep toevoegen" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Groep :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Naam :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Hoofdgroep :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Scheidingsteken" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Zenders bewerken" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Radiozender :" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "Stream-URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Henk-Jan klein Poelhuis " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s's website" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Radiozender" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Radiozender toevoegen" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "%s bewerken" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Groep bewerken" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Scheidingsteken bewerken" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Weet u zeker dat u \"%s\" wilt verwijderen?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Nieuwe groep toevoegen" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Ontwikkelaars:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Met bijdragen van:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Uitgeschakeld" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "\"%s\" aanzetten" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Zenders bewerken" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Favorieten bijwerken" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\" uitzetten" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Onbekende radiozender" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Favorieten bijgewerkt" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Gepauzeerd (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Verbinden met %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/ca.po0000664000175000017500000001422312011025000015631 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Dani Solà , 2011. # , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-08-01 14:03+0000\n" "Last-Translator: t0n3t \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/radiotray/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Afegir grup" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grup:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Mogui el separador a un altre grup" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nom:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grup pare:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separador" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurar ràdios" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nom de la ràdio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(la selecció serà guardada a l'arxiu de configuració)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicador d'aplicació" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configuració inicial" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Icona a l'àrea de notificacions" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Seleccioni com vol que Radio Tray aparegui" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Plugins disponibles:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Els canvis seran visibles quan reinicieu Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Configurar plugins" #: ../src/about.py:16 msgid "translator-credits" msgstr "Dani Solà / Toni Panadès" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Lloc web de %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nom de la ràdio:" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Afegir nova emissora" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Editar %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Editar grup" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editar separador" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Està segur de voler eliminar \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Afegir un nou grup" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Desenvolupadors:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Col·laboradors:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Desconectat" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Engegar \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configurar ràdios..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Refrescar adreces d'interès" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configurar plugins..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Apagar \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Sonant (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "En espera (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Ràdio desconeguda" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray sonant" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Error de ràdio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Adreces d'interès refrescades" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Actiu" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nom" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inactiu (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Connectant amb %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Sonant %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Sonant %s (vol: %s%%)" radiotray-0.7.3/po/pl.po0000664000175000017500000001443112011025065015675 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Daniel , 2011. # fims , 2011. # Kamil Ś , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-18 05:50+0000\n" "Last-Translator: Kamil Ś \n" "Language-Team: Polish (http://www.transifex.com/projects/p/radiotray/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Dodaj grupę" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupa:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Przenieś separator do innej grupy" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nazwa:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grupa nadrzędna:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Odstęp" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Konfiguracja stacji" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nazwa stacji:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(wybór zostanie zapisany w pliku konfiguracyjnym)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Wskaźnik aplikacji" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Pierwsze uruchomienie ustawień" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikona Powiadamiania" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Ustaw jak Radio Tray powinno się pojawiać" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Dostępne wtyczki:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Zmiany będą widoczne tylko po ponownym uruchomieniu Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Konfiguruj wtyczki" #: ../src/about.py:16 msgid "translator-credits" msgstr "Tłumacze:" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s's Strona WWW" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nazwa stacji" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Dodaj nową stację" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Edytuj %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Edytuj grupę" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Edytuj Separator" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Na pewno usunąć \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Dodaj nową grupę" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Programiści:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Wydawcy:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Zatrzymano" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Włącz \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Konfiguruj stacje..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Przeładuj zakładki" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Konfiguruj wtyczki..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Zatrzymaj \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Odtwarzanie (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Gotowy (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Nieznana stacja radiowa" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Odtwarzanie w Radio Tray" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Błąd stacji radiowej" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Zakładki zostały przeładowane" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktywny" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nazwa" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Nieaktywny (głośność %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Łączenie z %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Odtwarzanie %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Odtwarzanie %s (vol: %s%%)" radiotray-0.7.3/po/es.po0000664000175000017500000001430612011025032015664 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Bernardo Miguel Savone , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/radiotray/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Agregar grupo" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupo:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Mover separador a otro grupo" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nombre:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grupo superior:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separador" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurar radios" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nombre de la radio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(esta opción se guarda en el fichero de configuración)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicador de aplicaciones" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configuración inicial" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Icono en el área de notificación" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Seleccione cómo debe mostrarse Radio Tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Carlos Arenas \n\nMelida Vila \n\nBernardo Miguel Savone " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Sitio web de %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nombre de la radio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Agregar nueva emisora" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Editar %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Editar grupo" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editar separador" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "¿Está seguro de que desea eliminar «%s»?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Agregar nuevo grupo" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Desarrolladores:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Colaboradores:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Apagada" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Encender «%s»" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configurar radios..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Volver a cargar preferidos" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configurar complementos..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Apagar «%s»" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Reproduciendo (vol.: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Apagada (vol.: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Radio desconocida" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray reproduciendo" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Error en la radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Preferidos cargados" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Activo" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nombre" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Apagada (vol.: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Conectándose a «%s»" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Reproduciendo %s (vol.: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Reproduciendo %s (vol.: %s%%)" radiotray-0.7.3/po/si.po0000664000175000017500000001343012011025036015671 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Sinhala (http://www.transifex.com/projects/p/radiotray/language/si/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: si\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "වෙන්කිරීම" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "පරිවර්තක ස්තුතිය" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s ගේ වෙබ් අඩවිය" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "ගුවන් විදුලි සේවයේ නම" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "ඔබට \"%s\" මකාදැමිය යුතු බවට විශ්වාස ද?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "සම්පාදකයන්:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "දායකයන්:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "ගුවන් විදුලි සේවයක් වාදනය නොවේ" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\" වාදනය නවත්වන්න" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "හඳුනාගත නොහැකි ගුවන් විදුලි සේවක්" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "%s හා සම්බන්ධ වෙමින් පවතී" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/sk.po0000664000175000017500000001425312011025062015676 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. # Matej Moško , 2011. # , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/radiotray/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Pridať skupinu" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Skupina:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Presuň oddeľovač do inej skupiny" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Názov:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Nadradená skupina:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Oddeľovač" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Úprava staníc" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Názov stanice:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(táto voľba sa uloží v nastaveniach)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "App Indikátor" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Prvé spustenie programu, nastavania" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikona v oznamovacej oblasti" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Vyberte prosím, ako sa má Radio Tray zobrazovať" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Miroslav Biňas \nRastislav Kober " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s webová stránka" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Názov stanice" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Pridať novú stanicu" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Upraviť %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Upraviť skupinu" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Upraviť oddeľovač" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Naozaj chcete odstrániť \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Pridať novú skupinu" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Vývojári:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Prispeli:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Vypnuté" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Zapnúť \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Nastavenie Radií" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Obnoviť záložky" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Nastaviť Doplnky" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Vypnúť \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Prehráva (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Nečinný (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Neznáme stanica" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray prehráva" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Chyba Rádia" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Záložky obnovené" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktívny" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Názov" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Nečinné (hl:%s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Pripájanie ku %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Prehráva %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Prehráva %s (vol: %s%%)" radiotray-0.7.3/po/sv.po0000664000175000017500000001272612011025060015712 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/radiotray/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Avgränsare" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Daniel Nylander \n\nSkicka synpunkter på översättningen till\n." #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Webbplatsen för %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Radionamn" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Är du säker på att du vill ta bort \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Utvecklare:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Bidragsgivare:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Avstängd" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Stäng av \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Okänd radio" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Ansluter till %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/es_MX.po0000664000175000017500000001465612011025046016305 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. # Ricardo A. Hermosilla Carrillo , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-08-05 17:22+0000\n" "Last-Translator: Javier Przybylkowski \n" "Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/radiotray/language/es_MX/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es_MX\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Añadir grupo" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupo:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Mueve el separador a otro grupo" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nombre:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grupo raíz:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separador" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurar radios" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nombre de la estacion de radio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(esta opción será guardada en el archivo de configuración)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicador de Aplicaciones" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configuración Inicial" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Icono en el Área de Notificación" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Por favor selecione como debe aparecer Radio Tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Complementos Disponibles:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Los cambios solamente seran visibles despues de reiniciar Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Configurar Complementos" #: ../src/about.py:16 msgid "translator-credits" msgstr "Ricardo A. Hermosilla Carrillo , Javier Przybylkowski ," #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Sitio web de %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nombre de la estación de radio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Agregar una nueva estación" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Editar %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Editar grupo" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editar separador" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "¿Está seguro de querer eliminar \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Agregar nuevo grupo" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Desarrolladores:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contribuyentes:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Desconectado" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Encender \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configurar estaciones de radio..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Recargar marcadores" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configure Complementos" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Desconectar \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Reproducción (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Inactivo (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Estacion de radio desconocida" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray Reproduciendo" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Error de Estacion de radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Marcadores recargados" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Activo" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nombre" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inactivo (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Conectando a %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Reproduciendo %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Reproduciendo %s (vol: %s%%)" radiotray-0.7.3/po/ro.po0000664000175000017500000001415012011025040015671 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # CoolGoose , 2011. # , 2012. # ygns , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/radiotray/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Adaugă grup" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grup:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Muta separatorul in alt grup" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nume :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grup părinte:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separator" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Setări radio" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nume Radio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(aceasta alegere va fi salvata in fisierul de configurare)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicator Applicatie" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configurare de inceput" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Iconita in zona de notificare" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Selectati cum doriti sa apara Radio Tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Alexandru Bucur " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s's sit" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nume radio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Adaugă post nou" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Editează %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Editează grup" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editează separator" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Ești sigur că vrei să ștergi \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Adaugă grup nou" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Autori:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contributori:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Radio oprit" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Pornește \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Setează radiouri..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Reîncarcă marcaje" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configura Plugin-uri" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Închide \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Redare (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Inactiv (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Radio necunoscut" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Redare Radio Tray" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Eroare Radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Marcaje Reîncărcate" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Activ" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nume" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inactiv (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Se conectează la %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Redare %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Redare %s (vol: %s%%)" radiotray-0.7.3/po/zh_CN.po0000664000175000017500000001372512011025051016263 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/radiotray/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "添加组" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "分组:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "移动分割线到其他组" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "名称:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "父组:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "分割线" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "配置频道" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "频道名称:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "链接地址:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(您的选择将被保存在配置文件中)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "使用软件通知" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "第一次运行配置" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "使用系统通知区域" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "请选择托盘收音机的通知方式" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "简体中文:imysl0" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s 的网址" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "电台名称" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "添加新站点" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "编辑 %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "编辑组" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "编辑分割线" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "确定删除\"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "添加新组" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "开发者:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "贡献者:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "关闭" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "打开\"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "配置频道..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "重新载入列表" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "配置插件..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "关闭 \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "正在收听 (音量: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "空闲 (音量: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "未知频道" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "托盘收音正在收听" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "频道错误" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "列表重载完毕" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "激活" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "名字" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "空闲 (音量: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "正在连接到 %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "正在收听 %s (音量: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "正在收听 %s (音量: %s%%)" radiotray-0.7.3/po/gl.po0000664000175000017500000001416612011025031015662 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2011. # , 2011. # pikamoku , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Galician (http://www.transifex.com/projects/p/radiotray/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Engadir grupo" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupo:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Mova o separador a outro grupo" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nome:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Grupo superior:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separador" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurar emisoras" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nome da emisora" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(esta elección será gardada no ficheiro de configuración)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicador do aplicativo" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configuración de primeiro inicio" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Icona na área de notificación" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Por favor, seleccione cómo debería aparecer Radio tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Tradutor" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s's Sitio Web" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nome da Emisora" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Engadir nova emisora" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Edita %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Edita grupo" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editar Separador" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Estas seguro de querer eliminar \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Engadir novo grupo" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Desenvolvedores:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contribuíntes:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Apagado" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Acender \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configure Emisoras..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Recargar Marcadores" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configurar conectores..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Deter \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Reproducindo (vol:%s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Inactivo (vol:%s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Emisora descoñecida" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray reproducindo" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Erro na radio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Marcadores cargados" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Activo" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nome" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inactivo (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Conectando con %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Reproducindo %s (vol:%s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Reproducindo %s (vol: %s%%)" radiotray-0.7.3/po/ja.po0000664000175000017500000001466312011025047015663 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Chikahiro Masami , 2011, 2012. # Masami Chikahiro , 2011. # たけし , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-05 10:33+0000\n" "Last-Translator: たけし \n" "Language-Team: Japanese (http://www.transifex.com/projects/p/radiotray/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "グループを追加" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "グループ :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "区切り線を別のグループに移動" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "名前 :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "上位のグループ :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "区切り線" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "ラジオの登録" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "局名:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(この選択は環境設定ファイルに保存されます)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "アプリケーション・インジケータ" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "初めて実行したときの環境設定" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "通知領域にアイコン表示" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "ラジオトレイの表示方法を選択してください" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "利用可能なプラグイン:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "変更点は Radio Tray の再起動後に有効になります" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "プラグインの設定" #: ../src/about.py:16 msgid "translator-credits" msgstr "翻訳者のクレジット" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%sのウェブサイト" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "局名" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "新しいラジオを追加" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "%sを編集" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "グループを編集" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "区切り線を編集" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "\"%s\"を削除してもいいですか?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "新しいグループを追加" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "開発者:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "貢献者:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "停止" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "\"%s\"を開始" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "ラジオの設定..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "ブックマークを読み直す" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "プラグインを設定..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\"を停止" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "再生中 (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "待機中 (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "不明なラジオ" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "ラジオトレイ再生中" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "ラジオ・エラー" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "ブックマークを読み込みました" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "アクティブ" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "名前" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "待機中 (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "%sに接続中" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "再生中 %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "再生中 %s (vol: %s%%)" radiotray-0.7.3/po/pt_BR.po0000664000175000017500000001452212011025043016265 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Rai Biason Toffoletto , 2011. # Ricardo Junin , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/radiotray/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Adicionar Grupo" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupo:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Mover separador para outro grupo" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nome do Grupo:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Pertence ao Grupo:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Separador" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Configurar estações de rádio" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nome da estação de rádio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(a escolha será salvar no arquivo de configuração)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicador do programa" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Configurando na primeira utilização" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ícone na Área de Notificação" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Por favor, selecione como o Radio Tray deve aparecer" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Og Maciel \nRicardo Borges Jr " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Website do %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nome da estação de rádio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Adicionar uma nova estação de rádio" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Editar %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Editar grupo" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Editar separador" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Você tem certeza que deseja excluir \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Adicionar novo grupo" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Desenvolvedores:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contribuição de:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Desligado" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Ligar \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Configurar estações de rádio..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Recarregar marcadores" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Configurando plugins..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Desligar \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Reproduzindo (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Inativo (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Estação de rádio desconhecida" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "O Radio Tray está reproduzindo" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Erro da estação de rádio" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Marcadores Recarregados" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Ativar" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nome" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Inativo (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Conectando a %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Reproduzindo: %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Reproduzindo: %s (vol: %s%%)" radiotray-0.7.3/po/POTFILES.in0000664000175000017500000000161011726255527016516 0ustar carloscarlos00000000000000# List of source files containing translatable strings. # Please keep this file sorted alphabetically. # List of source files containing translatable strings. [encoding: UTF-8] data/radiotray.desktop [type: gettext/glade]data/configBookmarks.glade [type: gettext/glade]data/configGui.glade [type: gettext/glade]data/configPlugins.glade src/about.py src/AsfPlaylistDecoder.py src/AsxPlaylistDecoder.py src/AudioPlayerGStreamer.py src/BookmarkConfiguration.py src/ConsoleLog.py src/DbusFacade.py src/GuiChooserConfiguration.py src/__init__.py src/lib/common.py src/lib/utils.py src/M3uPlaylistDecoder.py src/PlsPlaylistDecoder.py src/radiotray.py src/RadioTray.py src/StateMediator.py src/StreamDecoder.py src/SysTray.py src/XmlConfigProvider.py src/XmlDataProvider.py src/XspfPlaylistDecoder.py src/AppIndicatorGui.py src/Context.py src/NotificationManager.py src/PluginConfiguration.py src/SysTrayGui.py radiotray-0.7.3/po/id.po0000664000175000017500000001400612011025032015646 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/radiotray/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Tambah Kelompok" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Kelompok :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Pindahkan separator ke grup lain" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Nama :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Kelompok Utama :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Pemisah" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Atur Radio" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Nama Radio:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(pilihan ini akan disimpan di file konfigurasi)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indikator aplikasi" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Menjalankan konfigurasi untuk pertama kali" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikon di area notifikasi" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Silahkan pilih bagaimana Radio Tray harus di tampilkan" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "kredit-penerjemah" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Situs %s's" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Nama Radio" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Tambah Stasiun Radio" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Sunting %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Sunting kelompok" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Sunting pemisah" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Anda yakin ingin menghapus \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Tambah kelompok baru" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Para Pengembang:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Para Kontributor:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Matikan" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Nyalakan \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Atur Radio" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Mula-ulang Markahbuku" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Konfigurasi Plugins" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Matikan \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Memutar (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Idle (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Stasiun radio tidak dikenal" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray memutar" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Radio error" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Markahbuku telah Dimulaulang" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktif" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Nama" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Menganggur (vol: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Terhubung ke %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Memutar %s (vol: %s%%)⏎\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Memutar %s (vol: %s%%)" radiotray-0.7.3/po/uk.po0000664000175000017500000001603412011025070015676 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Yarema aka Knedlyk , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-12 12:37+0000\n" "Last-Translator: Yarema aka Knedlyk \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/radiotray/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Додати групу" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Група :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Перемістити роздільник в іншу групу" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Назва :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Батьківська група :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Роздільник" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Налаштування радіо" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Назва радіостанції:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(цей вибір буде збережений у файлі конфігурації)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Індикатор програми" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Запуск конфігурування перший раз" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Іконка в області повідомлень" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Виберіть, яким чином буде відображатися Radio Tray" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Доступні додатки:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "Зміни будуть впроваджені після перезавантаження Radio Tray" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Налаштування додатків" #: ../src/about.py:16 msgid "translator-credits" msgstr "Yarema aka Knedlyk " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Веб-сторінка %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Назва радіостанції" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Додати нову станцію" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Редагувати %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Редагувати групу" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Редагувати роздільник" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Ви дійсно бажаєте видалити \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Додати нову групу" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Розробники:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Помічники:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Виключено" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Включити \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Налаштувати радіостанції..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Перезавантажити закладки" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Налаштування додатків..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Виключити \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Програвання (гучність: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Режим очікування (гучність: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Невідоме радіо" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray програє" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Помилка радіо" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Закладки перезавантажено" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Активне" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Назва" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Очікування (звук: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "З’єднуюся з %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Програвання %s (гучність: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Програвання %s (гучність: %s%%)" radiotray-0.7.3/po/LINGUAS0000664000175000017500000000013211726255527015764 0ustar carloscarlos00000000000000# please keep this list sorted alphabetically # de es fr gu it lt pl pt_BR pt sv uk zh_CN radiotray-0.7.3/po/hr.po0000664000175000017500000001440112011025044015665 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Miro , 2011, 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/radiotray/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Dodaj grupu" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupa:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Premjesti razdjelnik u drugu grupu" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Naziv:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Glavna grupa:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Razdjelnik" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Podešavanje radia" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Naziv radia:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(ovaj izbor će biti spremljen u datoteku podešavanja)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Programčić pokazivača" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Podešavanje prvog puta" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikona u području obavijesti" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Odaberite kako će se Radio Tray pojaviti" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "SilverSpace \ngogo " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s web stranica" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Naziv radia" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Dodaj novu stanicu" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Uredi %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Uredi grupu" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Uredi razdjelnik" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Sigurno želite obrisati \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Dodaj novu grupu" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Razvojni programer:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Doprinjeli:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Isključen" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Uključi \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Podešavanje radia..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Osvježi zabilješke" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Podesite priključak..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Isključi \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Reprodukcija (glasnoća zvuka: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Mirovanje (glasnoća zvuka: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Nepoznati radio" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray reprodukcija" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Greška radio stanice" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Zabilješke su osvježene " #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktivan" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Naziv" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Mirovanje (glasnoća zvuka: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Povezivanje na %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Reprodukcija %s (glasnoća zvuka: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Reprodukcija %s (glasnoća zvuka: %s%%)" radiotray-0.7.3/po/ar.po0000664000175000017500000001362112011025006015657 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/radiotray/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "إضافة مجموعة" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "المجموعة:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "الأسم: " #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "المجموعة الرئيسية: " #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "فاصل" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "إعداد المحطات" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "اسم المحطة: " #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "رابط: " #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "المترجم" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s's الموقع" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "اسم المحطة: " #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "إضافة محطة جديدة" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "تحرير %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "تحرير المجموعة" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "هل أنت متأكد أنك تريد حذف \"%s\" ؟" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "إضافة مجموعة جديدة" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "المطورون: " #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "المساهمون: " #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "إيقاف التشغيل" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "يتم الان إعداد المحطات..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "إعادة تحميل العلامات" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "إيقاف بث \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "محطة غير معروفة" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "تم إعادة تحميل العلامات" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "جاري الاتصال بـ %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/en_GB.po0000664000175000017500000001260512011025041016227 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/radiotray/language/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Robert Readman " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s's Website" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Radio Name" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Are you sure you want to delete \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Developers:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Contributors:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Turned Off" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Turn Off \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Connecting to %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/untitled.pot0000664000175000017500000001210511766204132017304 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "" #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "" #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "" radiotray-0.7.3/po/hu.po0000664000175000017500000001505512011025045015677 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Attila Zsigmond , 2011. # László Gyaraki , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-07-31 10:18+0000\n" "Last-Translator: László Gyaraki \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/radiotray/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Csoport hozzáadása" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Csoport:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Elválasztó mozgatása másik csoportba" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Név:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Szülő csoport:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Elválasztó" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Állomások beállítása" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Rádióállomás neve:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(ez a beállítás lesz mentve a konfigurációs fájlban)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indicator alkalmazás" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Első indítási beállítások" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikon az értesítési területen" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Rádió megjelenése az értesítési területen" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "Elérhető kiegészítők:" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "A változtatások aktiváláshoz indítsa újra a Radio Tray programot." #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "Kiegészítők beállításai" #: ../src/about.py:16 msgid "translator-credits" msgstr "Gábor Lénárt \nL. Csordás \nAttila Zsigmond \nLászló Gyaraki " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s honlapja" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Rádióállomás neve" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Új rádióállomás hozzáadása" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "%s szerkesztése" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Csoport szerkesztése" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Elválasztó szerkesztése" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Biztos benne, hogy törli: \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Új csoport hozzáadása" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Fejlesztők:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Hozzájárulók:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Rádió kikapcsolva" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "\"%s\" bekapcsolása" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Állomások beállítása..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Könyvjelzők visszatöltése" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Bővítmények beállítása..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\" kikapcsolása" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Lejátszás (hangerő: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Kikapcsolva (hangerő: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Ismeretlen rádióállomás" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray lejátszás" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Kapcsolódási hiba" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Könyvjelzők visszatöltve" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktív" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Név" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Kikapcsolva (hangerő: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Kapcsolódás a %s rádióállomáshoz" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "%s (hangerő: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "%s (hangerő: %s%%)" radiotray-0.7.3/po/sl.po0000664000175000017500000001414312011025071015675 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Tadej Borovšak , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/radiotray/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Dodaj skupino" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Skupina:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Premakni ločnik v drugo skupino" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Ime:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Nadrejena skupina:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Ločnik" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Nastavi radijske postaje" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Ime radijske postaje:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(izbira bo shranjena v datoteki z " #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Indikator " #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Nastavitve ob prvem " #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Ikona v opravilni " #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Izberite način prikaza Radijskega " #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Tadej Borovšak " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "Spletna stran %s" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Ime postaje" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Dodaj radijsko postajo" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Uredi %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Uredi skupino" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Uredi ločnik" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Res želite zbrisati \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Dodaj skupino" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Razvijalci:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Sodelavci:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Izklopljen" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Vklopi \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Nastavi radijske postaje ..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Ponovno naloži zaznamke" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Nastavitve vstavkov ..." #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Izklopi \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Predvajam (glasnost: %s %%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "V mirovanju (glasnost: %s %%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Neznana radijska postaja" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray predvaja" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Napaka postaje" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Zaznamki ponovno naloženi" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktiven" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Ime" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "V mirovanju (glasnost: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Povezujem se na %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Predvajam %s (glasnost: %s %%) %s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Predvajam %s (glasnost: %s %%)" radiotray-0.7.3/po/lt.po0000664000175000017500000001454712011025037015710 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Algimantas Margevičius , 2011. # Algimantas Margevičius , 2011. # , 2011. # ashai , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Lithuanian (http://www.transifex.com/projects/p/radiotray/language/lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "Pridėti grupę" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "Grupė:" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "Perkelti skirtuką į kitą grupę" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "Pavadinimas:" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "Dabartinė grupė:" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "Skirtukas" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "Radijų tvarkymas" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "Radijo pavadinimas:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "URL:" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(šis nustatymas bus išsaugotas konfigūracijos faile)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "Programos indikatorius" #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "Pirmą kart paleidus konfigūravimas" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "Piktograma pranešimų skiltyje" #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "Pasirink kaip Radio Tray turi atrodyt" #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "Vilmantas Ramonas \nAlgimantas Margevičius " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s Tinklalapis" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "Radijo stotys" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "Pridėti naują stotį" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "Redaguoti %s" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "Redaguoti grupę" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "Redaguoti skirtuką" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "Ar tikrai norite pašalinti \"%s\"?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "Pridėti naują grupę" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "Programos autoriai:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "Pagalbininkai:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "Išjungta" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "Įjungti \"%s\"" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "Konfigūruoti radijas..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "Perkrauti žymas" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "Konfigūruoti įskiepius" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "Išjungti \"%s\"" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "Grojama (vol: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "Neveiklus (vol: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "Nežinoma radijo stotis" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "Radio Tray groja" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "Radio klaida" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "Žymos perkrautos" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "Aktyvus" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "Pavadinimas" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "Neveiksnus (garsas: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "Jungiasi prie %s" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "Grojama %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "Grojama %s (vol: %s%%)" radiotray-0.7.3/po/ko.po0000664000175000017500000001420212011025057015670 0ustar carloscarlos00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # boram , 2011. # , 2011. msgid "" msgstr "" "Project-Id-Version: Radio Tray\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=295096&atid=1246146\n" "POT-Creation-Date: 2012-06-13 22:38+0100\n" "PO-Revision-Date: 2012-06-13 21:39+0000\n" "Last-Translator: carlosm \n" "Language-Team: Korean (http://www.transifex.com/projects/p/radiotray/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0\n" #: ../data/configBookmarks.glade.h:1 msgid "Add Group" msgstr "그룹 추가" #: ../data/configBookmarks.glade.h:2 msgid "Group :" msgstr "그룹 :" #: ../data/configBookmarks.glade.h:3 msgid "Move separator to another group" msgstr "다른 그룹으로 구분선 이동" #: ../data/configBookmarks.glade.h:4 msgid "Name :" msgstr "이름 :" #: ../data/configBookmarks.glade.h:5 msgid "Parent Group :" msgstr "상위 그룹 :" #: ../data/configBookmarks.glade.h:6 ../src/BookmarkConfiguration.py:258 msgid "Separator" msgstr "구분선" #: ../data/configBookmarks.glade.h:7 msgctxt "yes" msgid "Configure Radios" msgstr "라디오 설정" #: ../data/configBookmarks.glade.h:8 msgctxt "yes" msgid "Radio name:" msgstr "라디오 이름:" #: ../data/configBookmarks.glade.h:9 msgctxt "yes" msgid "URL :" msgstr "주소 :" #: ../data/configGui.glade.h:1 msgid "(this choice will be saved in the configuration file)" msgstr "(선택한 옵션은 설정 파일에 저장합니다)" #: ../data/configGui.glade.h:2 msgid "App Indicator" msgstr "프로그램 " #. Window title for the first time run configuration tool #: ../data/configGui.glade.h:4 msgid "First Time Run Config" msgstr "설정을 처음 실행했습니다" #: ../data/configGui.glade.h:5 msgid "Icon in the Notification Area" msgstr "알림 영역에 아이콘 " #: ../data/configGui.glade.h:6 msgid "Please select how Radio Tray should appear" msgstr "라디오 트레이를 어떻게 표시할지 " #: ../data/configPlugins.glade.h:1 msgid "Available Plugins:" msgstr "" #. Warning message about need to restart application after plugin change #: ../data/configPlugins.glade.h:3 msgid "Changes will only be visible after restarting Radio Tray" msgstr "" #. Plugins configuration window title #: ../data/configPlugins.glade.h:5 msgid "Config Plugins" msgstr "" #: ../src/about.py:16 msgid "translator-credits" msgstr "김보람 " #: ../src/about.py:30 #, python-format msgid "%s's Website" msgstr "%s 웹 사이트" #: ../src/BookmarkConfiguration.py:96 msgid "Radio Name" msgstr "라디오 이름" #: ../src/BookmarkConfiguration.py:275 msgid "Add new station" msgstr "새 방송국 추가" #: ../src/BookmarkConfiguration.py:352 #, python-format msgid "Edit %s" msgstr "%s 편집" #: ../src/BookmarkConfiguration.py:388 msgid "Edit group" msgstr "그룹 편집" #. populate dialog with radio information #: ../src/BookmarkConfiguration.py:422 msgid "Edit Separator" msgstr "구분선 편집" #: ../src/BookmarkConfiguration.py:464 #, python-format msgid "Are you sure you want to delete \"%s\"?" msgstr "정말 \"%s\"(을)를 삭제하시겠습니까?" #: ../src/BookmarkConfiguration.py:506 msgid "Add new group" msgstr "새 그룹 추가" #: ../src/lib/common.py:22 msgid "Developers:" msgstr "개발자:" #: ../src/lib/common.py:24 msgid "Contributors:" msgstr "도움 주신 분들:" #: ../src/AppIndicatorGui.py:69 ../src/AppIndicatorGui.py:201 #: ../src/SysTrayGui.py:52 ../src/SysTrayGui.py:53 ../src/SysTrayGui.py:68 #: ../src/SysTrayGui.py:196 ../src/SysTrayGui.py:198 msgid "Turned Off" msgstr "꺼짐" #: ../src/AppIndicatorGui.py:72 ../src/AppIndicatorGui.py:204 #: ../src/SysTrayGui.py:57 ../src/SysTrayGui.py:59 ../src/SysTrayGui.py:201 #: ../src/SysTrayGui.py:203 #, python-format msgid "Turn On \"%s\"" msgstr "\"%s\" 켜기" #: ../src/AppIndicatorGui.py:89 ../src/SysTrayGui.py:72 msgid "Configure Radios..." msgstr "라디오 설정..." #: ../src/AppIndicatorGui.py:90 ../src/SysTrayGui.py:77 msgid "Reload Bookmarks" msgstr "책갈피 다시 불러오기" #: ../src/AppIndicatorGui.py:91 ../src/SysTrayGui.py:88 msgid "Configure Plugins..." msgstr "플러그인 설정" #: ../src/AppIndicatorGui.py:194 ../src/AppIndicatorGui.py:212 #: ../src/SysTrayGui.py:187 ../src/SysTrayGui.py:190 ../src/SysTrayGui.py:211 #, python-format msgctxt "Turns off the current radio." msgid "Turn Off \"%s\"" msgstr "\"%s\" 끄기" #: ../src/AppIndicatorGui.py:237 #, python-format msgctxt "Playing status tooltip information" msgid "Playing (vol: %s%%)" msgstr "재생 중 (음량: %s%%)" #: ../src/AppIndicatorGui.py:239 ../src/SysTrayGui.py:234 #, python-format msgctxt "Informs Radio Tray is idle as a tooltip." msgid "Idle (vol: %s%%)" msgstr "대기 (음량: %s%%)" #: ../src/Context.py:26 msgctxt "Unknown radio specified by URL" msgid "Unknown radio" msgstr "알 수 없는 라디오" #: ../src/NotificationManager.py:41 msgid "Radio Tray Playing" msgstr "라디오 트레이 재생 중" #: ../src/NotificationManager.py:87 msgid "Radio Error" msgstr "라디오 오류" #: ../src/NotificationManager.py:91 msgid "Bookmarks Reloaded" msgstr "책갈피 다시 불러옴" #: ../src/PluginConfiguration.py:66 msgid "Active" msgstr "활성화" #: ../src/PluginConfiguration.py:71 msgid "Name" msgstr "이름" #: ../src/SysTrayGui.py:116 #, python-format msgid "Idle (vol: %s%%)" msgstr "대기 (음량: %s%%)" #: ../src/SysTrayGui.py:214 #, python-format msgctxt "Connecting to a music stream." msgid "Connecting to %s" msgstr "%s에 연결하는 중" #: ../src/SysTrayGui.py:230 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "" "Playing %s (vol: %s%%)\n" "%s" msgstr "재생 중 %s (vol: %s%%)\n%s" #: ../src/SysTrayGui.py:232 #, python-format msgctxt "Informs what radio and music is being played as a tooltip." msgid "Playing %s (vol: %s%%)" msgstr "재생 중 %s (음량: %s%%)" radiotray-0.7.3/AUTHORS0000664000175000017500000000011211726255527015367 0ustar carloscarlos00000000000000Carlos Ribeiro Og Maciel