~stefano-karapetsas/+junk/viridianplayer

« back to all changes in this revision

Viewing changes to AmpacheTools/AmpacheGUI.py

  • Committer: Stefano Karapetsas
  • Date: 2010-12-07 23:15:07 UTC
  • Revision ID: stefano@karapetsas.com-20101207231507-5xt7z49mjlj30kiu
InitialĀ supportĀ forĀ translation

Show diffs side-by-side

added added

removed removed

Lines of Context:
96
96
                else: # don't quit, just hide
97
97
                        if self.first_time_closing:
98
98
                                self.main_gui_toggle_hidden()
99
 
                                self.create_dialog_alert("info", """Viridian is still running in the status bar.  If you do not want Viridian to continue running when the window is closed you can disable it in Preferences.""", True)
 
99
                                self.create_dialog_alert("info", _("Viridian is still running in the status bar.  If you do not want Viridian to continue running when the window is closed you can disable it in Preferences."), True)
100
100
                                self.first_time_closing = False
101
101
                                self.db_session.variable_set('first_time_closing', False)
102
102
                        else: 
106
106
        def destroy(self, widget=None, data=None):
107
107
                """The function when the program exits."""
108
108
                if THREAD_LOCK.locked():
109
 
                        result = self.create_dialog_ok_or_close("Downloads in progress..", "There are unfinished downloads, are you sure you want to quit?")
 
109
                        result = self.create_dialog_ok_or_close(_("Downloads in progress.."), _("There are unfinished downloads, are you sure you want to quit?"))
110
110
                        if result != "ok":
111
111
                                return True
112
112
                self.stop_all_threads()
183
183
                filem = gtk.MenuItem("_File")
184
184
                filem.set_submenu(file_menu)
185
185
 
186
 
                newi = gtk.MenuItem("Reauthenticate")
 
186
                newi = gtk.MenuItem(_("Reauthenticate"))
187
187
                newi.connect("activate", self.button_reauthenticate_clicked)
188
188
                file_menu.append(newi)
189
189
 
190
 
                self.go_to_ampache_menu_item = gtk.MenuItem("Open Ampache")
 
190
                self.go_to_ampache_menu_item = gtk.MenuItem(_("Open Ampache"))
191
191
                self.go_to_ampache_menu_item.connect("activate", lambda x: self.gnome_open(self.ampache_conn.url))
192
192
                self.go_to_ampache_menu_item.set_sensitive(False)
193
193
                file_menu.append(self.go_to_ampache_menu_item)
195
195
                sep = gtk.SeparatorMenuItem()
196
196
                file_menu.append(sep)
197
197
                
198
 
                newi = gtk.ImageMenuItem("Save Playlist", agr)
 
198
                newi = gtk.ImageMenuItem(_("Save Playlist"), agr)
199
199
                img = gtk.image_new_from_stock(gtk.STOCK_SAVE, gtk.ICON_SIZE_MENU)
200
200
                newi.set_image(img)
201
201
                key, mod = gtk.accelerator_parse("<Control>S")
203
203
                newi.connect("activate", self.button_save_playlist_clicked)
204
204
                file_menu.append(newi)
205
205
                
206
 
                newi = gtk.ImageMenuItem("Load Playlist", agr)
 
206
                newi = gtk.ImageMenuItem(_("Load Playlist"), agr)
207
207
                img = gtk.image_new_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_MENU)
208
208
                newi.set_image(img)
209
209
                key, mod = gtk.accelerator_parse("<Control>O")
211
211
                newi.connect("activate", self.button_load_playlist_clicked)
212
212
                file_menu.append(newi)
213
213
                
214
 
                newi = gtk.ImageMenuItem("Export Playlist...")#, agr)
 
214
                newi = gtk.ImageMenuItem(_("Export Playlist..."))#, agr)
215
215
                img = gtk.image_new_from_stock(gtk.STOCK_SAVE_AS, gtk.ICON_SIZE_MENU)
216
216
                newi.set_image(img)
217
217
                #key, mod = gtk.accelerator_parse("<Control>E")
222
222
                sep = gtk.SeparatorMenuItem()
223
223
                file_menu.append(sep)
224
224
                
225
 
                newi = gtk.MenuItem("Clear Album Art")
 
225
                newi = gtk.MenuItem(_("Clear Album Art"))
226
226
                newi.connect("activate", self.button_clear_album_art_clicked)
227
227
                file_menu.append(newi)
228
228
                
229
 
                newi = gtk.MenuItem("Clear Local Cache")
 
229
                newi = gtk.MenuItem(_("Clear Local Cache"))
230
230
                newi.connect("activate", self.button_clear_cached_artist_info_clicked)
231
231
                file_menu.append(newi)
232
232
                
233
 
                newi = gtk.MenuItem("Pre-Cache")
 
233
                newi = gtk.MenuItem(_("Pre-Cache"))
234
234
                newi.connect("activate", self.button_pre_cache_info_clicked)
235
235
                file_menu.append(newi)
236
236
                
250
250
                
251
251
                """Start Edit Menu"""
252
252
                edit_menu = gtk.Menu()
253
 
                editm = gtk.MenuItem("_Edit")
 
253
                editm = gtk.MenuItem(_("_Edit"))
254
254
                editm.set_submenu(edit_menu)
255
255
 
256
256
                newi = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES, agr)
266
266
 
267
267
                """Start View Menu"""
268
268
                view_menu = gtk.Menu()
269
 
                viewm = gtk.MenuItem("_View")
 
269
                viewm = gtk.MenuItem(_("_View"))
270
270
                viewm.set_submenu(view_menu)
271
271
 
272
 
                newi = gtk.CheckMenuItem("Show Playlist")
 
272
                newi = gtk.CheckMenuItem(_("Show Playlist"))
273
273
                show_playlist = self.db_session.variable_get('show_playlist', True)
274
274
 
275
275
                newi.set_active(show_playlist)
276
276
                newi.connect("activate", self.toggle_playlist_view)
277
277
                view_menu.append(newi)
278
278
                
279
 
                self.show_downloads_checkbox = gtk.CheckMenuItem("Show Downloads")
 
279
                self.show_downloads_checkbox = gtk.CheckMenuItem(_("Show Downloads"))
280
280
                show_downloads = self.db_session.variable_get('show_downloads', False)
281
281
                self.show_downloads_checkbox.set_active(show_downloads)
282
282
                self.show_downloads_checkbox.connect("activate", self.toggle_downloads_view)
285
285
                sep = gtk.SeparatorMenuItem()
286
286
                view_menu.append(sep)
287
287
 
288
 
                newi = gtk.CheckMenuItem("View Statusbar")
 
288
                newi = gtk.CheckMenuItem(_("View Statusbar"))
289
289
                view_statusbar = self.db_session.variable_get('view_statusbar', True)
290
290
                newi.set_active(view_statusbar)
291
291
                newi.connect("activate", self.toggle_statusbar_view)
365
365
                self.volume_slider.set_size_request(80, 20)
366
366
                self.volume_slider.set_value(volume)
367
367
        
368
 
                repeat_songs_checkbutton = gtk.CheckButton("Repeat")
 
368
                repeat_songs_checkbutton = gtk.CheckButton(_("Repeat"))
369
369
                repeat_songs_checkbutton.set_active(False)
370
370
                repeat_songs_checkbutton.connect("toggled", self.toggle_repeat_songs)
371
371
                
372
 
                shuffle_songs_checkbutton = gtk.CheckButton("Shuffle")
 
372
                shuffle_songs_checkbutton = gtk.CheckButton(_("Shuffle"))
373
373
                shuffle_songs_checkbutton.set_active(False)
374
374
                shuffle_songs_checkbutton.connect("toggled", self.toggle_shuffle_songs)
375
375
                
376
376
                hbox = gtk.HBox()
377
377
                vbox = gtk.VBox()
378
378
                label = gtk.Label()
379
 
                label.set_markup('<span size="6000"><b>Volume</b></span>')
 
379
                label.set_markup(_('<span size="6000"><b>Volume</b></span>'))
380
380
                vbox.pack_start(label, False, False, 0)
381
381
                vbox.pack_start(self.volume_slider, False, False, 0)
382
382
                
525
525
                tree_view.append_column(new_column)
526
526
                
527
527
                renderer_text = gtk.CellRendererText()
528
 
                new_column = gtk.TreeViewColumn("Current Playlist", renderer_text, markup=1)
 
528
                new_column = gtk.TreeViewColumn(_("Current Playlist"), renderer_text, markup=1)
529
529
                #new_column = guifunctions.create_column("Current Playlist", 1)
530
530
                new_column.set_reorderable(False)
531
531
                new_column.set_resizable(False)
539
539
                
540
540
                hbox = gtk.HBox()
541
541
                
542
 
                button = gtk.Button("Clear Playlist")
 
542
                button = gtk.Button(_("Clear Playlist"))
543
543
                button.connect('clicked', self.audio_engine.clear_playlist)
544
544
                
545
545
                hbox.pack_start(button, False, False, 2)
546
546
                
547
547
                combobox = gtk.combo_box_new_text()
548
 
                combobox.append_text('Replace Mode')
549
 
                combobox.append_text('Add Mode')
 
548
                combobox.append_text(_('Replace Mode'))
 
549
                combobox.append_text(_('Add Mode'))
550
550
                combobox.connect('changed', self.playlist_mode_changed)
551
551
                
552
552
                
572
572
                tree_view.connect("row-activated", self.downloads_on_activated)
573
573
                tree_view.connect("button_press_event", self.downloads_on_right_click)
574
574
                tree_view.set_rules_hint(True)
575
 
                column = gtk.TreeViewColumn("File", gtk.CellRendererText(), text=0)
 
575
                column = gtk.TreeViewColumn(_("File"), gtk.CellRendererText(), text=0)
576
576
                column.set_reorderable(False)
577
577
                column.set_resizable(True)
578
578
                column.set_clickable(False)
582
582
                tree_view.append_column(column)
583
583
                
584
584
                rendererprogress = gtk.CellRendererProgress()
585
 
                column = gtk.TreeViewColumn("Progress")
 
585
                column = gtk.TreeViewColumn(_("Progress"))
586
586
                column.pack_start(rendererprogress, True)
587
587
                column.add_attribute(rendererprogress, "value", 1)
588
588
                column.set_reorderable(False)
647
647
 
648
648
                #albums_column = guifunctions.create_column("Albums", 0)
649
649
                renderer_text = gtk.CellRendererText()
650
 
                albums_column = gtk.TreeViewColumn("Albums", renderer_text, markup=0)
 
650
                albums_column = gtk.TreeViewColumn(_("Albums"), renderer_text, markup=0)
651
651
                albums_column.set_resizable(False)
652
652
                albums_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
653
653
        
700
700
                tree_view.set_search_column(1)
701
701
                
702
702
                i = 0
703
 
                for column in ("Track", "Title", "Artist", "Album", "Time", "Size"):
 
703
                for column in (_("Track"), _("Title"), _("Artist"), _("Album"), _("Time"), _("Size")):
704
704
                        new_column = guifunctions.create_column(column, i)
705
705
                        new_column.set_reorderable(True)
706
706
                        new_column.set_resizable(True)
707
707
                        new_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
708
 
                        if column == "Track":
 
708
                        if column == _("Track"):
709
709
                                new_column.set_fixed_width(60)
710
 
                        elif column == "Title":
 
710
                        elif column == _("Title"):
711
711
                                new_column.set_fixed_width(230)
712
 
                        elif column == "Artist":
 
712
                        elif column == _("Artist"):
713
713
                                new_column.set_fixed_width(170)
714
 
                        elif column == "Album":
 
714
                        elif column == _("Album"):
715
715
                                new_column.set_fixed_width(190)
716
 
                        elif column == "Time":
 
716
                        elif column == _("Time"):
717
717
                                new_column.set_fixed_width(90)
718
 
                        elif column == "Size":
 
718
                        elif column == _("Size"):
719
719
                                new_column.set_fixed_width(70)
720
720
                        tree_view.append_column(new_column)
721
721
                        i += 1
738
738
                #################################
739
739
                self.statusbar = gtk.Statusbar()
740
740
                self.statusbar.set_has_resize_grip(True)
741
 
                self.update_statusbar("Ready")
 
741
                self.update_statusbar(_("Ready"))
742
742
 
743
743
                
744
744
                main_box.pack_start(self.statusbar, False, False, 0)
828
828
                self.ampache_conn.set_credentials(username, password, url)
829
829
                if self.ampache_conn.has_credentials():
830
830
                        self.go_to_ampache_menu_item.set_sensitive(True)
831
 
                        self.update_statusbar("Attempting to authenticate...")
 
831
                        self.update_statusbar(_("Attempting to authenticate..."))
832
832
                        if self.login_and_get_artists("First"):
833
833
                                list = self.db_session.variable_get('current_playlist', None)
834
834
                                if list != None:
835
835
                                        self.load_playlist(list)
836
836
                                        #self.update_playlist_window()
837
837
                else:
838
 
                        self.update_statusbar("Set Ampache information by going to Edit -> Preferences") 
 
838
                        self.update_statusbar(_("Set Ampache information by going to Edit -> Preferences")) 
839
839
                        if self.is_first_time:
840
840
                                self.create_dialog_alert("info", """This looks like the first time you are running Viridian.  To get started, go to Edit -> Preferences and set your account information.""", True)
841
841
                
878
878
                self.preferences_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
879
879
                self.preferences_window.set_icon(self.images_pixbuf_viridian_simple)
880
880
                self.preferences_window.set_transient_for(self.window)
881
 
                self.preferences_window.set_title("Viridian Settings")
 
881
                self.preferences_window.set_title(_("Viridian Settings"))
882
882
                self.preferences_window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
883
883
                self.preferences_window.resize(450, 300)
884
884
                self.preferences_window.set_resizable(False)
902
902
                
903
903
                hbox = gtk.HBox()
904
904
                label = gtk.Label()
905
 
                label.set_markup('<b>Account Settings</b>')
 
905
                label.set_markup(_('<b>Account Settings</b>'))
906
906
                hbox.pack_start(label, False, False)
907
907
                
908
908
                account_box.pack_start(hbox, False, False, 3)
910
910
                ### Ampache URL ###
911
911
                hbox = gtk.HBox()
912
912
                hbox.pack_start(gtk.Label("   "), False, False, 0)
913
 
                ampache_label = gtk.Label("Ampache URL:")
 
913
                ampache_label = gtk.Label(_("Ampache URL:"))
914
914
                hbox.pack_start(ampache_label, False, False, 2)
915
915
 
916
916
                self.ampache_text_entry = gtk.Entry()
925
925
 
926
926
                hbox = gtk.HBox()
927
927
                label = gtk.Label("")
928
 
                label.set_markup('<span size="8000"><b>Example: </b>http://example.com/ampache</span>')
 
928
                label.set_markup(_('<span size="8000"><b>Example: </b>http://example.com/ampache</span>'))
929
929
                hbox.pack_end(label, False, False, 2)
930
930
                
931
931
                account_box.pack_start(hbox, False, False, 2)
932
932
                ### Ampache Username ###
933
933
                hbox = gtk.HBox()       
934
934
                hbox.pack_start(gtk.Label("   "), False, False, 0)
935
 
                username_label = gtk.Label("Username:")
 
935
                username_label = gtk.Label(_("Username:"))
936
936
                hbox.pack_start(username_label, False, False, 2)
937
937
 
938
938
                self.username_text_entry = gtk.Entry()
948
948
                ### Ampache Password ###
949
949
                hbox = gtk.HBox()
950
950
                hbox.pack_start(gtk.Label("   "), False, False, 0)
951
 
                password_label = gtk.Label("Password:")
 
951
                password_label = gtk.Label(_("Password:"))
952
952
                hbox.pack_start(password_label, False, False, 2)
953
953
 
954
954
                self.password_text_entry = gtk.Entry()
981
981
                hbox = gtk.HBox()
982
982
                
983
983
                label = gtk.Label()
984
 
                label.set_markup('<b>Notifications</b>')
 
984
                label.set_markup(_('<b>Notifications</b>'))
985
985
                hbox.pack_start(label, False, False)
986
986
                
987
987
                display_box.pack_start(hbox, False, False, 3)
990
990
 
991
991
                hbox.pack_start(gtk.Label("   "), False, False, 0)
992
992
                
993
 
                display_notifications_checkbutton = gtk.CheckButton("Display OSD Notifications")
 
993
                display_notifications_checkbutton = gtk.CheckButton(_("Display OSD Notifications"))
994
994
                if PYNOTIFY_INSTALLED:
995
995
                        display_notifications_checkbutton.set_active(self.display_notifications)
996
996
                else:
1004
1004
                hbox = gtk.HBox()
1005
1005
                
1006
1006
                label = gtk.Label()
1007
 
                label.set_markup('<b>Alternate Row Colors</b>')
 
1007
                label.set_markup(_('<b>Alternate Row Colors</b>'))
1008
1008
                hbox.pack_start(label, False, False)
1009
1009
                
1010
1010
                display_box.pack_start(hbox, False, False, 3)
1011
1011
 
1012
1012
                hbox = gtk.HBox()
1013
1013
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1014
 
                cb = gtk.CheckButton("Artists Column")
 
1014
                cb = gtk.CheckButton(_("Artists Column"))
1015
1015
                cb.connect("toggled", self.toggle_alternate_row_colors, 'artists')
1016
1016
                cb.set_active(self.tree_view_dict['artists'].get_rules_hint())
1017
1017
                hbox.pack_start(cb)
1019
1019
 
1020
1020
                hbox = gtk.HBox()
1021
1021
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1022
 
                cb = gtk.CheckButton("Albums Column")
 
1022
                cb = gtk.CheckButton(_("Albums Column"))
1023
1023
                cb.connect("toggled", self.toggle_alternate_row_colors, 'albums')
1024
1024
                cb.set_active(self.tree_view_dict['albums'].get_rules_hint())
1025
1025
                hbox.pack_start(cb)
1027
1027
 
1028
1028
                hbox = gtk.HBox()
1029
1029
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1030
 
                cb = gtk.CheckButton("Songs Column")
 
1030
                cb = gtk.CheckButton(_("Songs Column"))
1031
1031
                cb.connect("toggled", self.toggle_alternate_row_colors, 'songs')
1032
1032
                cb.set_active(self.tree_view_dict['songs'].get_rules_hint())
1033
1033
                hbox.pack_start(cb)
1035
1035
 
1036
1036
                hbox = gtk.HBox()
1037
1037
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1038
 
                cb = gtk.CheckButton("Playlist Column")
 
1038
                cb = gtk.CheckButton(_("Playlist Column"))
1039
1039
                cb.connect("toggled", self.toggle_alternate_row_colors, 'playlist')
1040
1040
                cb.set_active(self.tree_view_dict['playlist'].get_rules_hint())
1041
1041
                hbox.pack_start(cb)
1043
1043
 
1044
1044
                hbox = gtk.HBox()
1045
1045
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1046
 
                cb = gtk.CheckButton("Downloads Column")
 
1046
                cb = gtk.CheckButton(_("Downloads Column"))
1047
1047
                cb.connect("toggled", self.toggle_alternate_row_colors, 'downloads')
1048
1048
                cb.set_active(self.tree_view_dict['downloads'].get_rules_hint())
1049
1049
                hbox.pack_start(cb)
1060
1060
                hbox = gtk.HBox()
1061
1061
                
1062
1062
                label = gtk.Label()
1063
 
                label.set_markup('<b>Catalog Cache</b>')
 
1063
                label.set_markup(_('<b>Catalog Cache</b>'))
1064
1064
                
1065
1065
                hbox.pack_start(label, False, False)
1066
1066
                
1071
1071
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1072
1072
                
1073
1073
                
1074
 
                cb = gtk.CheckButton("Automatically clear local catalog when Ampache is updated")
 
1074
                cb = gtk.CheckButton(_("Automatically clear local catalog when Ampache is updated"))
1075
1075
                cb.set_active(self.automatically_update)
1076
1076
                cb.connect("toggled", self.toggle_automatically_update)
1077
1077
                
1089
1089
                if self.ampache_conn.has_credentials() and self.ampache_conn.is_authenticated():
1090
1090
                        if self.catalog_up_to_date:
1091
1091
                                image.set_from_stock(gtk.STOCK_YES,gtk.ICON_SIZE_SMALL_TOOLBAR)
1092
 
                                label.set_text("Local catalog is up-to-date.")
 
1092
                                label.set_text(_("Local catalog is up-to-date."))
1093
1093
                        else:
1094
1094
                                image.set_from_stock(gtk.STOCK_NO,gtk.ICON_SIZE_SMALL_TOOLBAR)
1095
 
                                label.set_text("Local catalog is older than Ampache catalog! To update the local catalog go to File -> Clear Local Cache.")
 
1095
                                label.set_text(_("Local catalog is older than Ampache catalog! To update the local catalog go to File -> Clear Local Cache."))
1096
1096
                
1097
1097
                        hbox.pack_start(image, False, False, 5)
1098
1098
                        hbox.pack_start(label, False, False, 0)
1110
1110
                hbox = gtk.HBox()
1111
1111
                
1112
1112
                label = gtk.Label()
1113
 
                label.set_markup('<b>Local Downloads</b>')
 
1113
                label.set_markup(_('<b>Local Downloads</b>'))
1114
1114
                
1115
1115
                hbox.pack_start(label, False, False)
1116
1116
                
1118
1118
                
1119
1119
                hbox = gtk.HBox()
1120
1120
                
1121
 
                label = gtk.Label("    Select where downloaded files should go.")
 
1121
                label = gtk.Label(_("    Select where downloaded files should go."))
1122
1122
                                
1123
1123
                hbox.pack_start(label, False, False, 4)
1124
1124
                
1151
1151
                hbox = gtk.HBox()
1152
1152
                
1153
1153
                label = gtk.Label()
1154
 
                label.set_markup('<b>Status Tray Icon</b>')
 
1154
                label.set_markup(_('<b>Status Tray Icon</b>'))
1155
1155
                
1156
1156
                hbox.pack_start(label, False, False)
1157
1157
                
1158
1158
                trayicon_box.pack_start(hbox, False, False, 3)
1159
1159
                
1160
 
                cb = gtk.CheckButton("Quit Viridian when window is closed")
 
1160
                cb = gtk.CheckButton(_("Quit Viridian when window is closed"))
1161
1161
                cb.connect("toggled", self.toggle_quit_when_window_closed)
1162
1162
                cb.set_active(self.quit_when_window_closed)
1163
1163
                
1164
1164
                hbox = gtk.HBox()
1165
1165
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1166
1166
 
1167
 
                button = gtk.RadioButton(None, "Standard Tray Icon")
 
1167
                button = gtk.RadioButton(None, _("Standard Tray Icon"))
1168
1168
                button.connect("toggled", self.trayicon_settings_toggled, "standard", cb)
1169
1169
                if self.tray_icon_to_display == 'standard':
1170
1170
                        button.set_active(True)
1187
1187
                hbox = gtk.HBox()
1188
1188
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1189
1189
 
1190
 
                button = gtk.RadioButton(button, "Disabled")
 
1190
                button = gtk.RadioButton(button, _("Disabled"))
1191
1191
                button.connect("toggled", self.trayicon_settings_toggled, "disabled", cb)
1192
1192
                if self.tray_icon_to_display == 'disabled':
1193
1193
                        button.set_active(True)
1205
1205
                hbox = gtk.HBox()
1206
1206
                hbox.pack_start(gtk.Label("      "), False, False, 0)
1207
1207
                
1208
 
                label = gtk.Label("Note: changes to the type of icon will take effect the next time this program is opened.")
 
1208
                label = gtk.Label(_("Note: changes to the type of icon will take effect the next time this program is opened."))
1209
1209
                label.set_line_wrap(True)
1210
1210
                
1211
1211
                hbox.pack_start(label, False, False, 4)
1222
1222
                hbox = gtk.HBox()
1223
1223
                
1224
1224
                label = gtk.Label()
1225
 
                label.set_markup('<b>Server Settings</b>')
 
1225
                label.set_markup(_('<b>Server Settings</b>'))
1226
1226
                
1227
1227
                hbox.pack_start(label, False, False)
1228
1228
                
1231
1231
                hbox = gtk.HBox()
1232
1232
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1233
1233
 
1234
 
                hbox.pack_start(gtk.Label("XML RPC Server: "), False, False, 0)
 
1234
                hbox.pack_start(gtk.Label(_("XML RPC Server: ")), False, False, 0)
1235
1235
                
1236
1236
                label = gtk.Label()
1237
1237
                image = gtk.Image()
1238
1238
                
1239
1239
                if self.xml_server.is_running:
1240
1240
                        image.set_from_stock(gtk.STOCK_YES,gtk.ICON_SIZE_SMALL_TOOLBAR)
1241
 
                        label.set_text("Running. (port %d)" % self.xml_server.port)
 
1241
                        label.set_text(_("Running. (port %d)") % self.xml_server.port)
1242
1242
                else:
1243
1243
                        image.set_from_stock(gtk.STOCK_NO,gtk.ICON_SIZE_SMALL_TOOLBAR)
1244
 
                        label.set_text("Not Running.")
 
1244
                        label.set_text(_("Not Running."))
1245
1245
                
1246
1246
                hbox.pack_start(image, False, False, 5)
1247
1247
                hbox.pack_start(label, False, False, 0)
1253
1253
                
1254
1254
                port = gtk.Entry()
1255
1255
 
1256
 
                button = gtk.Button("Start")
 
1256
                button = gtk.Button(_("Start"))
1257
1257
                button.connect("clicked", self.button_xml_server_clicked, 'start', label, image, port)
1258
1258
                #button.set_sensitive(False)
1259
1259
                hbox.pack_start(button, True, True, 0)
1260
1260
                
1261
 
                button = gtk.Button("Stop")
 
1261
                button = gtk.Button(_("Stop"))
1262
1262
                button.connect("clicked", self.button_xml_server_clicked, 'stop', label, image, port)
1263
1263
                #button.set_sensitive(False)
1264
1264
                hbox.pack_start(button, True, True, 0)
1265
1265
                
1266
 
                button = gtk.Button("Restart")
 
1266
                button = gtk.Button(_("Restart"))
1267
1267
                button.connect("clicked", self.button_xml_server_clicked, 'restart', label, image, port)
1268
1268
                #button.set_sensitive(False) 
1269
1269
                hbox.pack_start(button, True, True, 0)
1270
1270
                
1271
 
                hbox.pack_start(gtk.Label('Port: '), False, False, 1)
 
1271
                hbox.pack_start(gtk.Label(_('Port: ')), False, False, 1)
1272
1272
                
1273
1273
                
1274
1274
                port.set_text(str(self.db_session.variable_get('xmlrpc_port', XML_RPC_PORT)))
1280
1280
                hbox = gtk.HBox()
1281
1281
                hbox.pack_start(gtk.Label("      "), False, False, 0)
1282
1282
 
1283
 
                cb = gtk.CheckButton("Start XML RPC server when Viridan starts")
 
1283
                cb = gtk.CheckButton(_("Start XML RPC server when Viridan starts"))
1284
1284
                cb.connect("toggled", self.toggle_start_xml_rpc_server) 
1285
1285
                start_xml_rpc_server = self.db_session.variable_get('enable_xmlrpc_server', False)
1286
1286
                cb.set_active(start_xml_rpc_server)
1299
1299
                hbox = gtk.HBox()
1300
1300
                
1301
1301
                label = gtk.Label()
1302
 
                label.set_markup('<b>System</b>')
 
1302
                label.set_markup(_('<b>System</b>'))
1303
1303
                
1304
1304
                hbox.pack_start(label, False, False)
1305
1305
                
1309
1309
                
1310
1310
                hbox.pack_start(gtk.Label("   "), False, False, 0)
1311
1311
                
1312
 
                label = gtk.Label("To delete all personal information (including your username, password, album-art, cached information, etc.) press this button. NOTE: This will delete all personal settings stored on this computer and Viridian will close itself.  When you reopen, it will be as though it is the first time you are running Viridian.")
 
1312
                label = gtk.Label(_("To delete all personal information (including your username, password, album-art, cached information, etc.) press this button. NOTE: This will delete all personal settings stored on this computer and Viridian will close itself.  When you reopen, it will be as though it is the first time you are running Viridian."))
1313
1313
                label.set_line_wrap(True)
1314
1314
                
1315
1315
                hbox.pack_start(label, False, False)
1320
1320
                
1321
1321
                hbox.pack_start(gtk.Label("       "), False, False, 0)
1322
1322
                
1323
 
                cb = gtk.Button("Reset Everything")
 
1323
                cb = gtk.Button(_("Reset Everything"))
1324
1324
                cb.connect("clicked", self.button_reset_everything_clicked)
1325
1325
                
1326
1326
                hbox.pack_start(cb, False, False, 2)
1329
1329
                """End System Settings"""
1330
1330
                
1331
1331
                """End Notebook"""
1332
 
                notebook.append_page(account_box,  gtk.Label("Account"))
1333
 
                notebook.append_page(display_box,  gtk.Label("Display"))
1334
 
                notebook.append_page(catalog_box,  gtk.Label("Catalog"))
1335
 
                notebook.append_page(download_box, gtk.Label("Downloads"))
1336
 
                notebook.append_page(trayicon_box, gtk.Label("Tray Icon"))
1337
 
                notebook.append_page(server_box,   gtk.Label("Server"))
1338
 
                notebook.append_page(system_box,   gtk.Label("System"))
 
1332
                notebook.append_page(account_box,  gtk.Label(_("Account")))
 
1333
                notebook.append_page(display_box,  gtk.Label(_("Display")))
 
1334
                notebook.append_page(catalog_box,  gtk.Label(_("Catalog")))
 
1335
                notebook.append_page(download_box, gtk.Label(_("Downloads")))
 
1336
                notebook.append_page(trayicon_box, gtk.Label(_("Tray Icon")))
 
1337
                notebook.append_page(server_box,   gtk.Label(_("Server")))
 
1338
                notebook.append_page(system_box,   gtk.Label(_("System")))
1339
1339
                
1340
1340
                """Start Bottom Bar"""
1341
1341
                bottom_bar = gtk.HBox()
1370
1370
                                
1371
1371
                self.help_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
1372
1372
                self.help_window.set_transient_for(self.window)
1373
 
                self.help_window.set_title("Viridian Help")
 
1373
                self.help_window.set_title(_("Viridian Help"))
1374
1374
                self.help_window.set_icon(self.images_pixbuf_viridian_simple)
1375
1375
                self.help_window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
1376
1376
                self.help_window.resize(350, 300)
1382
1382
                vbox.set_border_width(10)
1383
1383
                
1384
1384
                label = gtk.Label()
1385
 
                label.set_markup('<span size="14000"><b>Viridian Help</b></span>')
 
1385
                label.set_markup(_('<span size="14000"><b>Viridian Help</b></span>'))
1386
1386
                vbox.pack_start(label, False, False, 1)
1387
1387
                
1388
1388
                hbox = gtk.HBox()
1389
 
                label = gtk.Label("Home Page:")
 
1389
                label = gtk.Label(_("Home Page:"))
1390
1390
                link  = guifunctions.hyperlink('http://viridian.daveeddy.com')
1391
1391
                hbox.pack_start(label, False, False, 1)
1392
1392
                hbox.pack_start(link,  False, False, 2)
1393
1393
                vbox.pack_start(hbox,  False, False, 0)
1394
1394
                
1395
1395
                hbox = gtk.HBox()
1396
 
                label = gtk.Label("Launchpad:")
 
1396
                label = gtk.Label(_("Launchpad:"))
1397
1397
                link  = guifunctions.hyperlink('https://launchpad.net/viridianplayer')
1398
1398
                hbox.pack_start(label, False, False, 1)
1399
1399
                hbox.pack_start(link,  False, False, 2)
1400
1400
                vbox.pack_start(hbox,  False, False, 0)
1401
1401
                
1402
1402
                hbox = gtk.HBox()
1403
 
                label = gtk.Label("FAQ:")
 
1403
                label = gtk.Label(_("FAQ:"))
1404
1404
                link  = guifunctions.hyperlink('https://answers.launchpad.net/viridianplayer/+faqs')
1405
1405
                hbox.pack_start(label, False, False, 1)
1406
1406
                hbox.pack_start(link,  False, False, 2)
1407
1407
                vbox.pack_start(hbox,  False, False, 0)
1408
1408
                
1409
1409
                hbox = gtk.HBox()
1410
 
                label = gtk.Label("Bugs:")
 
1410
                label = gtk.Label(_("Bugs:"))
1411
1411
                link  = guifunctions.hyperlink('https://bugs.launchpad.net/viridianplayer')
1412
1412
                hbox.pack_start(label, False, False, 1)
1413
1413
                hbox.pack_start(link,  False, False, 2)
1414
1414
                vbox.pack_start(hbox,  False, False, 0)
1415
1415
                
1416
1416
                hbox = gtk.HBox()
1417
 
                label = gtk.Label("Questions:")
 
1417
                label = gtk.Label(_("Questions:"))
1418
1418
                link  = guifunctions.hyperlink('https://answers.launchpad.net/viridianplayer')
1419
1419
                hbox.pack_start(label, False, False, 1)
1420
1420
                hbox.pack_start(link,  False, False, 2)
1467
1467
                tree_view.set_rules_hint(True)
1468
1468
                
1469
1469
                i = 0
1470
 
                for column in ("Name", "Songs", "Owner", "Type"):
1471
 
                        if column == "Name":
 
1470
                for column in (_("Name"), _("Songs"), _("Owner"), _("Type")):
 
1471
                        if column == _("Name"):
1472
1472
                                renderer_text = gtk.CellRendererText()
1473
1473
                                new_column = gtk.TreeViewColumn(column, renderer_text, markup=0)
1474
1474
                        else:
1476
1476
                        new_column.set_reorderable(True)
1477
1477
                        new_column.set_resizable(True)
1478
1478
                        new_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
1479
 
                        if column == "Name":
 
1479
                        if column == _("Name"):
1480
1480
                                new_column.set_fixed_width(200)
1481
 
                        elif column == "Songs":
 
1481
                        elif column == _("Songs"):
1482
1482
                                new_column.set_fixed_width(70)
1483
 
                        elif column == "Owner":
 
1483
                        elif column == _("Owner"):
1484
1484
                                new_column.set_fixed_width(90)
1485
 
                        elif column == "Type":
 
1485
                        elif column == _("Type"):
1486
1486
                                new_column.set_fixed_width(60)
1487
1487
                        tree_view.append_column(new_column)
1488
1488
                        i += 1
1496
1496
                text_entry.set_text('')
1497
1497
                if type == 'Save':
1498
1498
                        hbox = gtk.HBox()
1499
 
                        hbox.pack_start(gtk.Label("Playlist Name: "), False, False, 1)
 
1499
                        hbox.pack_start(gtk.Label(_("Playlist Name: ")), False, False, 1)
1500
1500
                        hbox.pack_start(text_entry, False, False, 2)
1501
1501
                        vbox.pack_start(hbox, False, False, 2)
1502
1502
 
1513
1513
                if type == 'Load':
1514
1514
                        button = gtk.Button(stock=gtk.STOCK_OPEN)
1515
1515
                elif type == 'Export':
1516
 
                        button = gtk.Button("Export as M3U...")
 
1516
                        button = gtk.Button(_("Export as M3U..."))
1517
1517
                button.connect("clicked", self.button_load_or_save_playlist_clicked, tree_view.get_selection(), text_entry, type)
1518
1518
 
1519
1519
                bottom_bar.pack_start(remove, False, False, 2)
1570
1570
                """Create a menu when the user right clicks the sys tray icon."""
1571
1571
                menu = gtk.Menu()
1572
1572
                
1573
 
                show_window = gtk.MenuItem("Show Window")
 
1573
                show_window = gtk.MenuItem(_("Show Window"))
1574
1574
                show_window.connect('activate', self.status_icon_activate)
1575
1575
                menu.append(show_window)
1576
1576
                
1577
1577
                ### Display Song Info is song is playing ###
1578
1578
                if self.audio_engine.get_state() != "stopped" and self.audio_engine.get_state() != None:
1579
1579
                        menu.append(gtk.SeparatorMenuItem())
1580
 
                        np = gtk.MenuItem("- Now Playing -")
 
1580
                        np = gtk.MenuItem(_("- Now Playing -"))
1581
1581
                        if self.audio_engine.get_state() == "paused":
1582
 
                                np = gtk.MenuItem("- Now Playing (paused) -")
 
1582
                                np = gtk.MenuItem(_("- Now Playing (paused) -"))
1583
1583
                        np.set_sensitive(False)
1584
1584
                        menu.append(np)
1585
1585
 
1792
1792
                                #else: #do nothing, pull from cache
1793
1793
                                                        
1794
1794
                        # load the artists window with, you guessed it, artists
1795
 
                        self.update_statusbar("Pulling Artists...")
 
1795
                        self.update_statusbar(_("Pulling Artists..."))
1796
1796
                        self.check_and_populate_artists()
1797
1797
                        artists = dbfunctions.get_artist_dict(self.db_session)
1798
1798
                        model = self.artist_list_store
1800
1800
                                artist_name = artists[artist_id]['name']
1801
1801
                                custom_name = artists[artist_id]['custom_name']
1802
1802
                                model.append([artist_name, artist_id, custom_name])
1803
 
                        self.update_statusbar("Ready.")
 
1803
                        self.update_statusbar(_("Ready."))
1804
1804
                        return True
1805
1805
                else: # auth failed
1806
 
                        self.update_statusbar("Authentication Failed.")
 
1806
                        self.update_statusbar(_("Authentication Failed."))
1807
1807
                        return False
1808
1808
                
1809
1809
                                
1836
1836
                self.check_and_populate_albums(self.artist_id)
1837
1837
                albums = dbfunctions.get_album_dict(self.db_session, self.artist_id)
1838
1838
 
1839
 
                model.append(["<b>All Albums (%d)</b>" % (len(albums)), -1, -1, 0])
 
1839
                model.append([_("<b>All Albums (%d)</b>") % (len(albums)), -1, -1, 0])
1840
1840
                for album in albums:
1841
1841
                        album_name    = albums[album]['name']
1842
1842
                        album_year    = albums[album]['year']
1843
1843
                        precise_rating = albums[album]['precise_rating']
1844
1844
                        album_id    = album
1845
 
                        self.update_statusbar("Fetching Album: " + album_name)
 
1845
                        self.update_statusbar(_("Fetching Album: ") + album_name)
1846
1846
                        album_string = album_name + ' (' + str(album_year) + ')'
1847
1847
                        if album_year == 0:
1848
1848
                                album_string = album_name
1878
1878
                        for album_id in list:
1879
1879
                                if album_id != -1:
1880
1880
                                        if self.__add_songs_to_list_store(album_id):
1881
 
                                                self.update_statusbar("Fetching Album id: " + str(album_id))
 
1881
                                                self.update_statusbar(_("Fetching Album id: ") + str(album_id))
1882
1882
                        self.update_statusbar(album_name.replace('<b>', '').replace('</b>', '') + " - " + self.artist_name)
1883
1883
                else: # single album
1884
1884
                        if self.__add_songs_to_list_store(album_id):
1962
1962
                                        # create popup
1963
1963
                                        song_id = treeview.get_model()[path][2]
1964
1964
                                        m = gtk.Menu()
1965
 
                                        i = gtk.MenuItem("Remove From Playlist")
 
1965
                                        i = gtk.MenuItem(_("Remove From Playlist"))
1966
1966
                                        i.connect('activate', self.remove_from_playlist, song_id, treeview, list)
1967
1967
                                        m.append(i)
1968
 
                                        i = gtk.MenuItem("Download Songs")
 
1968
                                        i = gtk.MenuItem(_("Download Songs"))
1969
1969
                                        i.connect('activate', self.download_songs_clicked, list)
1970
1970
                                        m.append(i)
1971
1971
                                        m.show_all()
1977
1977
                                        # create popup
1978
1978
                                        song_id = treeview.get_model()[path][2]
1979
1979
                                        m = gtk.Menu()
1980
 
                                        i = gtk.MenuItem("Remove From Playlist")
 
1980
                                        i = gtk.MenuItem(_("Remove From Playlist"))
1981
1981
                                        i.connect('activate', self.remove_from_playlist, song_id, treeview)
1982
1982
                                        m.append(i)
1983
 
                                        i = gtk.MenuItem("Download Song")
 
1983
                                        i = gtk.MenuItem(_("Download Song"))
1984
1984
                                        i.connect('activate', self.download_song_clicked, song_id)
1985
1985
                                        m.append(i)
1986
1986
                                        m.show_all()
1996
1996
                                # create popup
1997
1997
                                full_path = treeview.get_model()[path][2]
1998
1998
                                m = gtk.Menu()
1999
 
                                i = gtk.MenuItem("Open Song")
 
1999
                                i = gtk.MenuItem(_("Open Song"))
2000
2000
                                i.connect('activate', lambda _: self.gnome_open(full_path))
2001
2001
                                m.append(i)
2002
 
                                i = gtk.MenuItem("Open Containing Folder")
 
2002
                                i = gtk.MenuItem(_("Open Containing Folder"))
2003
2003
                                i.connect('activate', lambda _: self.gnome_open(os.path.dirname(full_path)))
2004
2004
                                m.append(i)
2005
2005
                                m.show_all()
2015
2015
                                # create popup
2016
2016
                                album_id = treeview.get_model()[path][1]
2017
2017
                                m = gtk.Menu()
2018
 
                                i = gtk.MenuItem("Add Album to Playlist")
 
2018
                                i = gtk.MenuItem(_("Add Album to Playlist"))
2019
2019
                                i.connect('activate', self.add_album_to_playlist)
2020
2020
                                m.append(i)
2021
 
                                i = gtk.MenuItem("Download Album")
 
2021
                                i = gtk.MenuItem(_("Download Album"))
2022
2022
                                i.connect('activate', self.download_album_clicked)
2023
2023
                                m.append(i)
2024
2024
                                m.show_all()
2037
2037
                                        path, col, cellx, celly = pthinfo
2038
2038
                                        # create popup
2039
2039
                                        m = gtk.Menu()
2040
 
                                        i = gtk.MenuItem("Add Songs to Playlist")
 
2040
                                        i = gtk.MenuItem(_("Add Songs to Playlist"))
2041
2041
                                        i.connect('activate', self.add_songs_to_playlist, list)
2042
2042
                                        m.append(i)
2043
 
                                        i = gtk.MenuItem("Download Songs")
 
2043
                                        i = gtk.MenuItem(_("Download Songs"))
2044
2044
                                        i.connect('activate', self.download_songs_clicked, list)
2045
2045
                                        m.append(i)
2046
2046
                                        m.show_all()
2052
2052
                                        # create popup
2053
2053
                                        song_id = treeview.get_model()[path][6]
2054
2054
                                        m = gtk.Menu()
2055
 
                                        i = gtk.MenuItem("Add Song to Playlist")
 
2055
                                        i = gtk.MenuItem(_("Add Song to Playlist"))
2056
2056
                                        i.connect('activate', self.add_song_to_playlist, song_id)
2057
2057
                                        m.append(i)
2058
 
                                        i = gtk.MenuItem("Download Song")
 
2058
                                        i = gtk.MenuItem(_("Download Song"))
2059
2059
                                        i.connect('activate', self.download_song_clicked, song_id)
2060
2060
                                        m.append(i)
2061
2061
                                        m.show_all()
2130
2130
                        self.db_session.variable_set('credentials_username', username)
2131
2131
                        self.db_session.variable_set('credentials_password', password)
2132
2132
                        self.db_session.variable_set('credentials_url', url)
2133
 
                        self.update_statusbar("Saved Credentials")
2134
 
                        print "Credentials Saved"
 
2133
                        self.update_statusbar(_("Saved Credentials"))
 
2134
                        print _("Credentials Saved")
2135
2135
                        self.destroy_settings(window)
2136
2136
                        self.login_and_get_artists("changed")
2137
2137
                else:
2138
 
                        self.update_statusbar("Couldn't save credentials!")
2139
 
                        print "[Error] Couldn't save credentials!"
 
2138
                        self.update_statusbar(_("Couldn't save credentials!"))
 
2139
                        print _("[Error] Couldn't save credentials!")
2140
2140
                        return False
2141
2141
                return True
2142
2142
 
2147
2147
                
2148
2148
        def button_open_downloads_file_chooser_clicked(self, widget, data=None):
2149
2149
                """Open file chooser for the downloads directory."""
2150
 
                dialog = gtk.FileChooserDialog("Choose Folder...",
 
2150
                dialog = gtk.FileChooserDialog(_("Choose Folder..."),
2151
2151
                                                None,
2152
2152
                                                gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
2153
2153
                                                (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
2205
2205
        def button_save_playlist_clicked(self, widget, data=None):
2206
2206
                """The save playlist button was clicked."""
2207
2207
                if not self.audio_engine.get_playlist():
2208
 
                        self.create_dialog_alert("error", "Cannot save empty playlist.", True)
2209
 
                        print "Cannot save empty playlist"
 
2208
                        self.create_dialog_alert("error", _("Cannot save empty playlist."), True)
 
2209
                        print _("Cannot save empty playlist")
2210
2210
                        return False
2211
2211
                self.show_playlist_select('Save')
2212
2212
                return False
2350
2350
        def button_pre_cache_info_clicked(self, widget=None, data=None):
2351
2351
                """Pre-cache all album and song info."""
2352
2352
                if self.ampache_conn.is_authenticated() == False:
2353
 
                        self.create_dialog_alert("warn", "Not Authenticated", True)
 
2353
                        self.create_dialog_alert("warn", _("Not Authenticated"), True)
2354
2354
                        return False
2355
2355
                try: # check to see if this function is running
2356
2356
                        if self.button_pre_cache_locked == True:
2426
2426
                """Right click on album art."""
2427
2427
                # create popup
2428
2428
                m = gtk.Menu()
2429
 
                i = gtk.MenuItem("Open Image")
 
2429
                i = gtk.MenuItem(_("Open Image"))
2430
2430
                i.connect('activate', lambda x: self.gnome_open(self.current_album_art_file))
2431
2431
                m.append(i)
2432
 
                i = gtk.MenuItem("Refresh Album Art")
 
2432
                i = gtk.MenuItem(_("Refresh Album Art"))
2433
2433
                i.connect('activate', self.__re_fetch_album_art)
2434
2434
                m.append(i)
2435
2435
                m.show_all()
2515
2515
                about.set_icon(self.images_pixbuf_viridian_simple)
2516
2516
                about.set_version("1.1")
2517
2517
                about.set_copyright("(c) Dave Eddy <dave@daveeddy.com>")
2518
 
                about.set_comments("Viridian is a front-end for an Ampache Server (see http://ampache.org)")
 
2518
                about.set_comments(_("Viridian is a front-end for an Ampache Server (see http://ampache.org)"))
2519
2519
                about.set_website("http://viridian.daveeddy.com")
2520
2520
                about.set_authors(["Author:", "Dave Eddy <dave@daveeddy.com>", "http://www.daveeddy.com", "", "AudioEngine by:", "Michael Zeller <link@conquerthesound.com>", "http://conquerthesound.com"])
2521
2521
                about.set_artists(["Skye Sawyer <skyelauren.s@gmail.com>", "http://www.skyeillustration.com", "", "Media Icons by:", "http://mysitemyway.com", "http://ampache.org"])
2622
2622
                self.refresh_gui()
2623
2623
                
2624
2624
                ### Send notifications OSD ###
2625
 
                self.notification("Now Playing", song_title + ' - ' + artist_name + ' - ' + album_name, self.current_album_art_file)
 
2625
                self.notification(_("Now Playing"), song_title + ' - ' + artist_name + ' - ' + album_name, self.current_album_art_file)
2626
2626
                # rating stars
2627
2627
                stars = self.current_song_info['precise_rating']
2628
2628
                i = 0
2636
2636
                        
2637
2637
        def audioengine_error_callback(self, error_message):
2638
2638
                """Display the gstreamer error in the notification label."""
2639
 
                self.update_statusbar("An error has occured.")
 
2639
                self.update_statusbar(_("An error has occured."))
2640
2640
                self.create_dialog_alert('warn', """GStreamer has encountered an error, this is most likely caused by:
2641
2641
- gstreamer-plugins not being installed.
2642
2642
- Ampache not transcoding the file correctly.
2780
2780
                """Takes a list of song_ids and loads it into the audio engine."""
2781
2781
                self.audio_engine.clear_playlist()
2782
2782
                self.audio_engine.set_playlist(list)
2783
 
                self.update_statusbar('Loading Playlist...')
 
2783
                self.update_statusbar(_('Loading Playlist...'))
2784
2784
                i = 1
2785
2785
                print list
2786
2786
                for song in list:
2787
 
                        self.update_statusbar('Querying for song %d/%d in playlist' % (i, len(list)))
 
2787
                        self.update_statusbar(_('Querying for song %d/%d in playlist') % (i, len(list)))
2788
2788
                        if not dbfunctions.song_has_info(self.db_session, song):
2789
2789
                                song = self.ampache_conn.get_song_info(song)
2790
2790
                                self.check_and_populate_albums(song['artist_id'])
2791
2791
                                self.check_and_populate_songs( song['album_id'])
2792
2792
                        i += 1
2793
2793
                self.update_playlist_window()
2794
 
                self.update_statusbar('Playlist loaded')
 
2794
                self.update_statusbar(_('Playlist loaded'))
2795
2795
                
2796
2796
        def add_album_to_playlist(self, widget):
2797
2797
                """Adds every song in the visible list store and adds it to the playlist."""
2896
2896
        def download_songs_clicked(self, widget, list):
2897
2897
                """The user is downloading multiple songs from the playlist."""
2898
2898
                if not os.path.exists(self.downloads_directory):
2899
 
                        self.create_dialog_alert("warn", "The folder %s does not exist.  You can change the folder in Preferences." % (self.downloads_directory), True)
 
2899
                        self.create_dialog_alert("warn", _("The folder %s does not exist.  You can change the folder in Preferences.") % (self.downloads_directory), True)
2900
2900
                        return False
2901
2901
                if self.show_downloads_checkbox.active == False:
2902
2902
                        self.side_panel.show()
2909
2909
                """The user cliked download album."""
2910
2910
                # check to see if the downloads directory exists
2911
2911
                if not os.path.exists(self.downloads_directory):
2912
 
                        self.create_dialog_alert("warn", "The folder %s does not exist.  You can change the folder in Preferences." % (self.downloads_directory), True)
 
2912
                        self.create_dialog_alert("warn", _("The folder %s does not exist.  You can change the folder in Preferences.") % (self.downloads_directory), True)
2913
2913
                        return False
2914
2914
                if self.show_downloads_checkbox.active == False:
2915
2915
                        self.side_panel.show()
2922
2922
                """The user clicked download song."""
2923
2923
                # check to see if the downloads directory exists
2924
2924
                if not os.path.exists(self.downloads_directory):
2925
 
                        self.create_dialog_alert("warn", "The folder %s does not exist.  You can change the folder in Preferences." % (self.downloads_directory), True)
 
2925
                        self.create_dialog_alert("warn", _("The folder %s does not exist.  You can change the folder in Preferences.") % (self.downloads_directory), True)
2926
2926
                        return False
2927
2927
                if show_panel and self.show_downloads_checkbox.active == False:
2928
2928
                        self.side_panel.show()
2941
2941
                print "get url '%s' to '%s'" % (url, dst)
2942
2942
                urllib.urlretrieve(url, dst,
2943
2943
                                lambda nb, bs, fs, url=url: self._reporthook(nb,bs,fs,url,iter1))
2944
 
                self.notification("Download Complete", os.path.basename(url).replace('%20',' ').replace('%27', "'"))
 
2944
                self.notification(_("Download Complete"), os.path.basename(url).replace('%20',' ').replace('%27', "'"))
2945
2945
                THREAD_LOCK.release()
2946
2946
                #urllib.urlretrieve(url, dst, self._reporthook, iter1)
2947
2947