diff --git a/deluge/common.py b/deluge/common.py index 78c8e1b5d..fa9222698 100644 --- a/deluge/common.py +++ b/deluge/common.py @@ -207,7 +207,7 @@ def get_pixmap(fname): """ return resource_filename("deluge", os.path.join("ui", "data", "pixmaps", fname)) -def resource_filename(package, path): +def resource_filename(module, path): # While developing, if there's a second deluge package, installed globally # and another in develop mode somewhere else, while pkg_resources.require("Deluge") # returns the proper deluge instance, pkg_resources.resource_filename does @@ -215,8 +215,7 @@ def resource_filename(package, path): # enough. # This is a work-around that. return pkg_resources.require("Deluge>=%s" % get_version())[0].get_resource_filename( - pkg_resources.resource_filename.im_self, - os.path.join(package, path) + pkg_resources._manager, os.path.join(*(module.split('.')+[path])) ) def open_file(path): @@ -682,17 +681,22 @@ def create_localclient_account(append=False): # Initialize gettext -try: - if hasattr(locale, "bindtextdomain"): - locale.bindtextdomain("deluge", resource_filename("deluge", "i18n")) - if hasattr(locale, "textdomain"): - locale.textdomain("deluge") - gettext.bindtextdomain("deluge", resource_filename("deluge", "i18n")) - gettext.textdomain("deluge") - gettext.install("deluge", resource_filename("deluge", "i18n")) -except Exception, e: - raise - log.error("Unable to initialize gettext/locale!") - log.exception(e) - import __builtin__ - __builtin__.__dict__["_"] = lambda x: x +def setup_translations(setup_pygtk=False): + try: + if hasattr(locale, "bindtextdomain"): + locale.bindtextdomain("deluge", resource_filename("deluge", "i18n")) + if hasattr(locale, "textdomain"): + locale.textdomain("deluge") + gettext.bindtextdomain("deluge", resource_filename("deluge", "i18n")) + gettext.textdomain("deluge") + gettext.install("deluge", resource_filename("deluge", "i18n")) + if setup_pygtk: + import gtk + import gtk.glade + gtk.glade.bindtextdomain("deluge", resource_filename("deluge", "i18n")) + gtk.glade.textdomain("deluge") + except Exception, e: + log.error("Unable to initialize gettext/locale!") + log.exception(e) + import __builtin__ + __builtin__.__dict__["_"] = lambda x: x diff --git a/deluge/core/daemon.py b/deluge/core/daemon.py index 0343febe5..ad5bc4bfb 100644 --- a/deluge/core/daemon.py +++ b/deluge/core/daemon.py @@ -33,10 +33,7 @@ # import os -import gettext -import locale import logging -import pkg_resources from twisted.internet import reactor import twisted.internet.error @@ -101,19 +98,7 @@ class Daemon(object): ) # Initialize gettext - try: - locale.setlocale(locale.LC_ALL, '') - if hasattr(locale, "bindtextdomain"): - locale.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - if hasattr(locale, "textdomain"): - locale.textdomain("deluge") - gettext.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - gettext.textdomain("deluge") - gettext.install("deluge", pkg_resources.resource_filename("deluge", "i18n")) - except Exception, e: - log.error("Unable to initialize gettext/locale: %s", e) - import __builtin__ - __builtin__.__dict__["_"] = lambda x: x + deluge.common.setup_translations() # Twisted catches signals to terminate, so just have it call the shutdown # method. diff --git a/deluge/core/preferencesmanager.py b/deluge/core/preferencesmanager.py index d42be335c..9a478c73d 100644 --- a/deluge/core/preferencesmanager.py +++ b/deluge/core/preferencesmanager.py @@ -37,7 +37,6 @@ import os import logging import threading -import pkg_resources from twisted.internet.task import LoopingCall from deluge._libtorrent import lt @@ -450,10 +449,8 @@ class PreferencesManager(component.Component): geoip_db = "" if os.path.exists(value): geoip_db = value - elif os.path.exists( - pkg_resources.resource_filename("deluge", - os.path.join("data", "GeoIP.dat"))): - geoip_db = pkg_resources.resource_filename( + elif os.path.exists(deluge.common.resource_filename("deluge", os.path.join("data", "GeoIP.dat"))): + geoip_db = deluge.common.resource_filename( "deluge", os.path.join("data", "GeoIP.dat") ) else: diff --git a/deluge/main.py b/deluge/main.py index d440082c1..9c65cf5fe 100644 --- a/deluge/main.py +++ b/deluge/main.py @@ -89,6 +89,7 @@ def start_ui(): # Setup the logger deluge.log.setupLogger(level=options.loglevel, filename=options.logfile, filemode=logfile_mode) + deluge.common.setup_translations() if options.config: if not os.path.exists(options.config): @@ -184,6 +185,7 @@ this should be an IP address", metavar="IFACE", # Setup the logger deluge.log.setupLogger(level=options.loglevel, filename=options.logfile, filemode=logfile_mode) + deluge.common.setup_translations() import deluge.configmanager if options.config: diff --git a/deluge/tests/common.py b/deluge/tests/common.py index c24cd4c60..54cab32a4 100644 --- a/deluge/tests/common.py +++ b/deluge/tests/common.py @@ -4,6 +4,7 @@ import time import tempfile from subprocess import Popen, PIPE +import deluge.common import deluge.configmanager import deluge.log @@ -22,17 +23,7 @@ import locale import pkg_resources # Initialize gettext -try: - locale.setlocale(locale.LC_ALL, '') - if hasattr(locale, "bindtextdomain"): - locale.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - if hasattr(locale, "textdomain"): - locale.textdomain("deluge") - gettext.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - gettext.textdomain("deluge") - gettext.install("deluge", pkg_resources.resource_filename("deluge", "i18n")) -except Exception, e: - print e +deluge.common.setup_translations() def start_core(): CWD = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) diff --git a/deluge/ui/gtkui/aboutdialog.py b/deluge/ui/gtkui/aboutdialog.py index 3d91609ee..5c0c0be74 100644 --- a/deluge/ui/gtkui/aboutdialog.py +++ b/deluge/ui/gtkui/aboutdialog.py @@ -37,7 +37,6 @@ import pygtk pygtk.require('2.0') import gtk -import pkg_resources from deluge.ui.client import client import deluge.common @@ -286,10 +285,10 @@ class AboutDialog: if not client.is_classicmode(): self.about.set_comments( self.about.get_comments() + "Server Version: %coreversion%\n") - + self.about.set_comments( self.about.get_comments() + "Libtorrent Version: %ltversion%\n") - + def on_lt_version(result): c = self.about.get_comments() c = c.replace("%ltversion%", result) diff --git a/deluge/ui/gtkui/addtorrentdialog.py b/deluge/ui/gtkui/addtorrentdialog.py index e062b47ba..a5f413d31 100644 --- a/deluge/ui/gtkui/addtorrentdialog.py +++ b/deluge/ui/gtkui/addtorrentdialog.py @@ -45,8 +45,6 @@ import logging import os from urlparse import urljoin -import pkg_resources - import twisted.web.client import twisted.web.error from deluge.ui.client import client @@ -64,9 +62,9 @@ log = logging.getLogger(__name__) class AddTorrentDialog(component.Component): def __init__(self): component.Component.__init__(self, "AddTorrentDialog") - self.glade = gtk.glade.XML( - pkg_resources.resource_filename( - "deluge.ui.gtkui", "glade/add_torrent_dialog.glade")) + self.glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "add_torrent_dialog.glade")) + ) self.dialog = self.glade.get_widget("dialog_add_torrent") diff --git a/deluge/ui/gtkui/common.py b/deluge/ui/gtkui/common.py index b584c81b7..08d55e417 100644 --- a/deluge/ui/gtkui/common.py +++ b/deluge/ui/gtkui/common.py @@ -42,7 +42,6 @@ pygtk.require('2.0') import gtk import gtk.glade import logging -import pkg_resources from deluge.ui.client import client import deluge.component as component @@ -152,9 +151,9 @@ def show_other_dialog(header, type_str, image_stockid=None, image_filename=None, if type(default) != int and type(default) != float: raise TypeError("default value needs to be an int or float") - glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/dgtkpopups.glade")) + glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "dgtkpopups.glade")) + ) dialog = glade.get_widget("other_dialog") dialog.set_transient_for(component.get("MainWindow").window) dialog.set_title("") diff --git a/deluge/ui/gtkui/connectionmanager.py b/deluge/ui/gtkui/connectionmanager.py index c76c80c8e..83e78e759 100644 --- a/deluge/ui/gtkui/connectionmanager.py +++ b/deluge/ui/gtkui/connectionmanager.py @@ -35,12 +35,12 @@ import os import gtk -import pkg_resources import time import hashlib import logging from twisted.internet import reactor +import deluge.common import deluge.component as component import common import deluge.configmanager @@ -136,9 +136,9 @@ class ConnectionManager(component.Component): """ self.config = self.__load_config() # Get the glade file for the connection manager - self.glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/connection_manager.glade")) + self.glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "connection_manager.glade")) + ) self.window = component.get("MainWindow") # Setup the ConnectionManager dialog diff --git a/deluge/ui/gtkui/createtorrentdialog.py b/deluge/ui/gtkui/createtorrentdialog.py index 786347e55..6c13f4534 100644 --- a/deluge/ui/gtkui/createtorrentdialog.py +++ b/deluge/ui/gtkui/createtorrentdialog.py @@ -36,7 +36,6 @@ import gtk import sys -import pkg_resources import os.path import gobject import base64 @@ -55,9 +54,9 @@ log = logging.getLogger(__name__) class CreateTorrentDialog: def show(self): self.glade = gtk.glade.XML( - pkg_resources.resource_filename( + deluge.common.resource_filename( "deluge.ui.gtkui", - "glade/create_torrent_dialog.glade")) + os.path.join("glade", "create_torrent_dialog.glade"))) self.config = ConfigManager("gtkui.conf") @@ -396,9 +395,9 @@ class CreateTorrentDialog: def _on_button_add_clicked(self, widget): log.debug("_on_button_add_clicked") glade = gtk.glade.XML( - pkg_resources.resource_filename( + deluge.common.resource_filename( "deluge.ui.gtkui", - "glade/edit_trackers.glade")) + os.path.join("glade", "edit_trackers.glade"))) dialog = glade.get_widget("add_tracker_dialog") dialog.set_transient_for(self.dialog) textview = glade.get_widget("textview_trackers") diff --git a/deluge/ui/gtkui/edittrackersdialog.py b/deluge/ui/gtkui/edittrackersdialog.py index aa109dd7a..8ece78641 100644 --- a/deluge/ui/gtkui/edittrackersdialog.py +++ b/deluge/ui/gtkui/edittrackersdialog.py @@ -33,11 +33,10 @@ # # - +import os.path import gtk import gtk.glade import logging -import pkg_resources from twisted.internet import defer import deluge.common @@ -50,10 +49,9 @@ log = logging.getLogger(__name__) class EditTrackersDialog: def __init__(self, torrent_id, parent=None): self.torrent_id = torrent_id - self.glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/edit_trackers.glade")) - + self.glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "edit_trackers.glade")) + ) self.dialog = self.glade.get_widget("edit_trackers_dialog") self.treeview = self.glade.get_widget("tracker_treeview") self.add_tracker_dialog = self.glade.get_widget("add_tracker_dialog") diff --git a/deluge/ui/gtkui/filtertreeview.py b/deluge/ui/gtkui/filtertreeview.py index 1c1309e6f..81beaa5db 100644 --- a/deluge/ui/gtkui/filtertreeview.py +++ b/deluge/ui/gtkui/filtertreeview.py @@ -34,11 +34,10 @@ # # - +import os import gtk import gtk.glade import logging -import pkg_resources import glib import warnings @@ -112,8 +111,8 @@ class FilterTreeView(component.Component): self.sidebar.notebook.connect("hide", self._on_hide) #menu - glade_menu = gtk.glade.XML(pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/filtertree_menu.glade")) + glade_menu = gtk.glade.XML(deluge.common.resource_filename("deluge.ui.gtkui", + os.path.join("glade", "filtertree_menu.glade"))) self.menu = glade_menu.get_widget("filtertree_menu") glade_menu.signal_autoconnect({ "select_all": self.on_select_all, diff --git a/deluge/ui/gtkui/gtkui.py b/deluge/ui/gtkui/gtkui.py index 70fa2a5f9..8a01816d1 100644 --- a/deluge/ui/gtkui/gtkui.py +++ b/deluge/ui/gtkui/gtkui.py @@ -40,34 +40,12 @@ gobject.set_prgname("deluge") from twisted.internet import gtk2reactor reactor = gtk2reactor.install() -import gettext -import locale -import pkg_resources import gtk -import gtk.glade import sys import logging log = logging.getLogger(__name__) -# Initialize gettext -try: - locale.setlocale(locale.LC_ALL, '') - if hasattr(locale, "bindtextdomain"): - locale.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - if hasattr(locale, "textdomain"): - locale.textdomain("deluge") - gettext.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - gettext.textdomain("deluge") - gettext.install("deluge", pkg_resources.resource_filename("deluge", "i18n")) - gtk.glade.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - gtk.glade.textdomain("deluge") -except Exception, e: - log.error("Unable to initialize gettext/locale!") - log.exception(e) - import __builtin__ - __builtin__.__dict__["_"] = lambda x: x - import deluge.component as component from deluge.ui.client import client from mainwindow import MainWindow @@ -105,7 +83,7 @@ class Gtk(_UI): def start(self): super(Gtk, self).start() - + deluge.common.setup_translations(setup_pygtk=True) GtkUI(self.args) def start(): diff --git a/deluge/ui/gtkui/mainwindow.py b/deluge/ui/gtkui/mainwindow.py index 572284e25..df0af9963 100644 --- a/deluge/ui/gtkui/mainwindow.py +++ b/deluge/ui/gtkui/mainwindow.py @@ -34,12 +34,12 @@ # +import os.path import pygtk pygtk.require('2.0') import gtk import gtk.glade import logging -import pkg_resources from urlparse import urlparse import urllib @@ -59,9 +59,9 @@ class MainWindow(component.Component): component.Component.__init__(self, "MainWindow", interval=2) self.config = ConfigManager("gtkui.conf") # Get the glade file for the main window - self.main_glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/main_window.glade")) + self.main_glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "main_window.glade")) + ) self.window = self.main_glade.get_widget("main_window") diff --git a/deluge/ui/gtkui/menubar.py b/deluge/ui/gtkui/menubar.py index 7a0f4d904..a29350597 100644 --- a/deluge/ui/gtkui/menubar.py +++ b/deluge/ui/gtkui/menubar.py @@ -34,13 +34,12 @@ # # - +import os.path import pygtk pygtk.require('2.0') import gtk import gtk.glade import logging -import pkg_resources import deluge.error import deluge.component as component @@ -60,9 +59,9 @@ class MenuBar(component.Component): self.config = ConfigManager("gtkui.conf") # Get the torrent menu from the glade file - self.torrentmenu_glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/torrent_menu.glade")) + self.torrentmenu_glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "torrent_menu.glade")) + ) self.torrentmenu_glade.get_widget("menuitem_queue").set_submenu( self.torrentmenu_glade.get_widget("queue_torrent_menu")) @@ -355,8 +354,8 @@ class MenuBar(component.Component): def show_move_storage_dialog(self, status): log.debug("show_move_storage_dialog") - glade = gtk.glade.XML(pkg_resources.resource_filename( - "deluge.ui.gtkui", "glade/move_storage_dialog.glade" + glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "move_storage_dialog.glade") )) # Keep it referenced: # https://bugzilla.gnome.org/show_bug.cgi?id=546802 diff --git a/deluge/ui/gtkui/peers_tab.py b/deluge/ui/gtkui/peers_tab.py index cebf1feed..c260a3f3f 100644 --- a/deluge/ui/gtkui/peers_tab.py +++ b/deluge/ui/gtkui/peers_tab.py @@ -34,12 +34,12 @@ # +import os import gtk import gtk.glade import logging import os.path import cPickle -import pkg_resources from itertools import izip from deluge.ui.client import client @@ -271,7 +271,7 @@ class PeersTab(Tab): # We haven't created a pixbuf for this country yet try: self.cached_flag_pixbufs[country] = gtk.gdk.pixbuf_new_from_file( - pkg_resources.resource_filename( + deluge.common.resource_filename( "deluge", os.path.join("ui", "data", "pixmaps", "flags", country.lower() + ".png"))) except Exception, e: @@ -378,9 +378,9 @@ class PeersTab(Tab): def _on_menuitem_add_peer_activate(self, menuitem): """This is a callback for manually adding a peer""" log.debug("on_menuitem_add_peer") - dialog_glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/dgtkpopups.glade")) + dialog_glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "dgtkpopups.glade")) + ) peer_dialog = dialog_glade.get_widget("connect_peer_dialog") txt_ip = dialog_glade.get_widget("txt_ip") response = peer_dialog.run() diff --git a/deluge/ui/gtkui/preferences.py b/deluge/ui/gtkui/preferences.py index ee265a068..952141a07 100644 --- a/deluge/ui/gtkui/preferences.py +++ b/deluge/ui/gtkui/preferences.py @@ -34,13 +34,12 @@ # # - +import os import pygtk pygtk.require('2.0') import gtk import gtk.glade import logging -import pkg_resources import deluge.component as component from deluge.ui.client import client @@ -66,8 +65,8 @@ class Preferences(component.Component): def __init__(self): component.Component.__init__(self, "Preferences") self.window = component.get("MainWindow") - self.glade = gtk.glade.XML(pkg_resources.resource_filename( - "deluge.ui.gtkui", "glade/preferences_dialog.glade" + self.glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "preferences_dialog.glade") )) self.pref_dialog = self.glade.get_widget("pref_dialog") self.pref_dialog.set_icon(common.get_deluge_icon()) diff --git a/deluge/ui/gtkui/queuedtorrents.py b/deluge/ui/gtkui/queuedtorrents.py index 652473c2c..24c6c79da 100644 --- a/deluge/ui/gtkui/queuedtorrents.py +++ b/deluge/ui/gtkui/queuedtorrents.py @@ -40,7 +40,6 @@ import gtk import gtk.glade import logging import gobject -import pkg_resources import deluge.component as component from deluge.ui.client import client @@ -57,9 +56,9 @@ class QueuedTorrents(component.Component): self.status_item = None self.config = ConfigManager("gtkui.conf") - self.glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/queuedtorrents.glade")) + self.glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "queuedtorrents.glade")) + ) self.glade.get_widget("chk_autoadd").set_active( self.config["autoadd_queued"]) self.dialog = self.glade.get_widget("queued_torrents_dialog") diff --git a/deluge/ui/gtkui/removetorrentdialog.py b/deluge/ui/gtkui/removetorrentdialog.py index 36257eed0..7066d2885 100644 --- a/deluge/ui/gtkui/removetorrentdialog.py +++ b/deluge/ui/gtkui/removetorrentdialog.py @@ -33,12 +33,13 @@ # # +import os import gtk import gtk.glade import logging -import pkg_resources from deluge.ui.client import client +import deluge.common import deluge.component as component log = logging.getLogger(__name__) @@ -63,9 +64,9 @@ class RemoveTorrentDialog(object): self.__torrent_ids = torrent_ids - glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/remove_torrent_dialog.glade")) + glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "remove_torrent_dialog.glade")) + ) self.__dialog = glade.get_widget("remove_torrent_dialog") self.__dialog.set_transient_for(component.get("MainWindow").window) diff --git a/deluge/ui/gtkui/systemtray.py b/deluge/ui/gtkui/systemtray.py index 333ab57ed..542a56db1 100644 --- a/deluge/ui/gtkui/systemtray.py +++ b/deluge/ui/gtkui/systemtray.py @@ -38,9 +38,9 @@ try: except ImportError: appindicator = None +import os import gtk import logging -import pkg_resources import deluge.component as component from deluge.ui.client import client @@ -87,9 +87,9 @@ class SystemTray(component.Component): def enable(self): """Enables the system tray icon.""" - self.tray_glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", - "glade/tray_menu.glade")) + self.tray_glade = gtk.glade.XML(deluge.common.resource_filename( + "deluge.ui.gtkui", os.path.join("glade", "tray_menu.glade")) + ) self.tray_glade.signal_autoconnect({ "on_menuitem_show_deluge_activate": \ diff --git a/deluge/ui/ui.py b/deluge/ui/ui.py index 06fe76c4e..7465c8780 100644 --- a/deluge/ui/ui.py +++ b/deluge/ui/ui.py @@ -33,12 +33,12 @@ # # +import sys import logging from optparse import OptionParser, OptionGroup import deluge.common import deluge.configmanager import deluge.log -import os DEFAULT_PREFS = { "default_ui": "gtk" @@ -53,8 +53,6 @@ class _UI(object): def __init__(self, name="gtk"): self.__name = name - usage="%prog [options] [actions]", - self.__parser = OptionParser(version=deluge.common.get_version()) group = OptionGroup(self.__parser, "Common Options") @@ -102,6 +100,8 @@ class _UI(object): filename=self.__options.logfile, filemode=logfile_mode) + deluge.common.setup_translations() + log = logging.getLogger(__name__) if self.__options.config: diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py index ee03e85e0..5c023de07 100644 --- a/deluge/ui/web/server.py +++ b/deluge/ui/web/server.py @@ -35,16 +35,13 @@ import os import time -import locale import shutil import urllib import fnmatch -import gettext import hashlib import logging import tempfile import mimetypes -import pkg_resources from twisted.application import service, internet from twisted.internet import reactor, defer, error @@ -62,23 +59,6 @@ from deluge.ui.web.pluginmanager import PluginManager log = logging.getLogger(__name__) -# Initialize gettext -try: - locale.setlocale(locale.LC_ALL, "") - if hasattr(locale, "bindtextdomain"): - locale.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - if hasattr(locale, "textdomain"): - locale.textdomain("deluge") - gettext.bindtextdomain("deluge", pkg_resources.resource_filename("deluge", "i18n")) - gettext.textdomain("deluge") - gettext.install("deluge", pkg_resources.resource_filename("deluge", "i18n")) -except Exception, e: - log.error("Unable to initialize gettext/locale: %s", e) - -_ = gettext.gettext - -current_dir = os.path.dirname(__file__) - CONFIG_DEFAULTS = { # Misc Settings "enabled_plugins": [], @@ -121,7 +101,7 @@ def rpath(*paths): """Convert a relative path into an absolute path relative to the location of this script. """ - return os.path.join(current_dir, *paths) + return common.resource_filename(__name__, os.path.join(*paths)) class GetText(resource.Resource): def render(self, request): @@ -226,8 +206,7 @@ class Flag(resource.Resource): def render(self, request): headers = {} path = ("data", "pixmaps", "flags", request.country.lower() + ".png") - filename = pkg_resources.resource_filename("deluge", - os.path.join(*path)) + filename = common.resource_filename("deluge", os.path.join(*path)) if os.path.exists(filename): request.setHeader("cache-control", "public, must-revalidate, max-age=86400") diff --git a/deluge/ui/web/web.py b/deluge/ui/web/web.py index 254468235..e1e2db03c 100644 --- a/deluge/ui/web/web.py +++ b/deluge/ui/web/web.py @@ -41,6 +41,9 @@ from optparse import OptionGroup class WebUI(UI): def __init__(self, args): + # Setup translations + deluge.common.setup_translations() + import server deluge_web = server.DelugeWeb() deluge_web.start() @@ -48,11 +51,11 @@ class WebUI(UI): class Web(_UI): help = """Starts the Deluge web interface""" - + def __init__(self): super(Web, self).__init__("web") self.__server = None - + group = OptionGroup(self.parser, "Web Options") group.add_option("-b", "--base", dest="base", help="Set the base path that the ui is running on (proxying)", @@ -87,14 +90,14 @@ class Web(_UI): group.add_option("--ssl", dest="ssl", action="store_true", help="Forces the webserver to use ssl", default=False) self.parser.add_option_group(group) - + @property def server(self): return self.__server - + def start(self): super(Web, self).start() - + # Steps taken from http://www.faqs.org/faqs/unix-faq/programmer/faq/ # Section 1.7 if self.options.fork: @@ -102,14 +105,14 @@ class Web(_UI): # or shell invoking the program. if os.fork(): os._exit(0) - + # setsid() to become a process group and session group leader. os.setsid() - + # fork() again so the parent, (the session group leader), can exit. if os.fork(): os._exit(0) - + # chdir() to esnure that our process doesn't keep any directory in # use that may prevent a filesystem unmount. import deluge.configmanager @@ -134,10 +137,10 @@ class Web(_UI): if self.options.base: self.server.base = self.options.base - + if self.options.port: self.server.port = self.options.port - + if self.options.ssl: self.server.https = self.options.ssl