diff --git a/openlp.pyw b/openlp.pyw
index 962109592..64ffb3321 100755
--- a/openlp.pyw
+++ b/openlp.pyw
@@ -25,254 +25,15 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-import os
-import sys
-import logging
+
# Import uuid now, to avoid the rare bug described in the support system:
# http://support.openlp.org/issues/102
# If https://bugs.gentoo.org/show_bug.cgi?id=317557 is fixed, the import can be
# removed.
import uuid
-from optparse import OptionParser
-from traceback import format_exception
-from PyQt4 import QtCore, QtGui
+from openlp.core import main
-from openlp.core.lib import Receiver, check_directory_exists
-from openlp.core.lib.ui import UiStrings
-from openlp.core.resources import qInitResources
-from openlp.core.ui.mainwindow import MainWindow
-from openlp.core.ui.firsttimelanguageform import FirstTimeLanguageForm
-from openlp.core.ui.firsttimeform import FirstTimeForm
-from openlp.core.ui.exceptionform import ExceptionForm
-from openlp.core.ui import SplashScreen, ScreenList
-from openlp.core.utils import AppLocation, LanguageManager, VersionThread, \
- get_application_version, DelayStartThread
-
-log = logging.getLogger()
-
-application_stylesheet = u"""
-QMainWindow::separator
-{
- border: none;
-}
-
-QDockWidget::title
-{
- border: 1px solid palette(dark);
- padding-left: 5px;
- padding-top: 2px;
- margin: 1px 0;
-}
-
-QToolBar
-{
- border: none;
- margin: 0;
- padding: 0;
-}
-"""
-
-class OpenLP(QtGui.QApplication):
- """
- The core application class. This class inherits from Qt's QApplication
- class in order to provide the core of the application.
- """
-
- args = []
-
- def exec_(self):
- """
- Override exec method to allow the shared memory to be released on exit
- """
- QtGui.QApplication.exec_()
- self.sharedMemory.detach()
-
- def run(self, args):
- """
- Run the OpenLP application.
- """
- # On Windows, the args passed into the constructor are
- # ignored. Not very handy, so set the ones we want to use.
- self.args.extend(args)
- # provide a listener for widgets to reqest a screen update.
- QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'openlp_process_events'), self.processEvents)
- QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'cursor_busy'), self.setBusyCursor)
- QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'cursor_normal'), self.setNormalCursor)
- # Decide how many screens we have and their size
- screens = ScreenList(self.desktop())
- # First time checks in settings
- has_run_wizard = QtCore.QSettings().value(
- u'general/has run wizard', QtCore.QVariant(False)).toBool()
- if not has_run_wizard:
- if FirstTimeForm(screens).exec_() == QtGui.QDialog.Accepted:
- QtCore.QSettings().setValue(u'general/has run wizard',
- QtCore.QVariant(True))
- if os.name == u'nt':
- self.setStyleSheet(application_stylesheet)
- show_splash = QtCore.QSettings().value(
- u'general/show splash', QtCore.QVariant(True)).toBool()
- if show_splash:
- self.splash = SplashScreen()
- self.splash.show()
- # make sure Qt really display the splash screen
- self.processEvents()
- # start the main app window
- self.mainWindow = MainWindow(self.clipboard(), self.args)
- self.mainWindow.show()
- if show_splash:
- # now kill the splashscreen
- self.splash.finish(self.mainWindow)
- log.debug(u'Splashscreen closed')
- # make sure Qt really display the splash screen
- self.processEvents()
- self.mainWindow.repaint()
- self.processEvents()
- if not has_run_wizard:
- self.mainWindow.firstTime()
- update_check = QtCore.QSettings().value(
- u'general/update check', QtCore.QVariant(True)).toBool()
- if update_check:
- VersionThread(self.mainWindow).start()
- Receiver.send_message(u'maindisplay_blank_check')
- self.mainWindow.appStartup()
- DelayStartThread(self.mainWindow).start()
- return self.exec_()
-
- def isAlreadyRunning(self):
- """
- Look to see if OpenLP is already running and ask if a 2nd copy
- is to be started.
- """
- self.sharedMemory = QtCore.QSharedMemory('OpenLP')
- if self.sharedMemory.attach():
- status = QtGui.QMessageBox.critical(None,
- UiStrings().Error, UiStrings().OpenLPStart,
- QtGui.QMessageBox.StandardButtons(
- QtGui.QMessageBox.Yes | QtGui.QMessageBox.No))
- if status == QtGui.QMessageBox.No:
- return True
- return False
- else:
- self.sharedMemory.create(1)
- return False
-
- def hookException(self, exctype, value, traceback):
- if not hasattr(self, u'mainWindow'):
- log.exception(''.join(format_exception(exctype, value, traceback)))
- return
- if not hasattr(self, u'exceptionForm'):
- self.exceptionForm = ExceptionForm(self.mainWindow)
- self.exceptionForm.exceptionTextEdit.setPlainText(
- ''.join(format_exception(exctype, value, traceback)))
- self.setNormalCursor()
- self.exceptionForm.exec_()
-
- def setBusyCursor(self):
- """
- Sets the Busy Cursor for the Application
- """
- self.setOverrideCursor(QtCore.Qt.BusyCursor)
- self.processEvents()
-
- def setNormalCursor(self):
- """
- Sets the Normal Cursor for the Application
- """
- self.restoreOverrideCursor()
-
- def event(self, event):
- """
- Enables direct file opening on OS X
- """
- if event.type() == QtCore.QEvent.FileOpen:
- file_name = event.file()
- log.debug(u'Got open file event for %s!', file_name)
- self.args.insert(0, unicode(file_name))
- return True
- else:
- return QtGui.QApplication.event(self, event)
-
-def main():
- """
- The main function which parses command line options and then runs
- the PyQt4 Application.
- """
- # Set up command line options.
- usage = 'Usage: %prog [options] [qt-options]'
- parser = OptionParser(usage=usage)
- parser.add_option('-e', '--no-error-form', dest='no_error_form',
- action='store_true', help='Disable the error notification form.')
- parser.add_option('-l', '--log-level', dest='loglevel',
- default='warning', metavar='LEVEL', help='Set logging to LEVEL '
- 'level. Valid values are "debug", "info", "warning".')
- parser.add_option('-p', '--portable', dest='portable',
- action='store_true', help='Specify if this should be run as a '
- 'portable app, off a USB flash drive (not implemented).')
- parser.add_option('-d', '--dev-version', dest='dev_version',
- action='store_true', help='Ignore the version file and pull the '
- 'version directly from Bazaar')
- parser.add_option('-s', '--style', dest='style',
- help='Set the Qt4 style (passed directly to Qt4).')
- # Set up logging
- log_path = AppLocation.get_directory(AppLocation.CacheDir)
- check_directory_exists(log_path)
- filename = os.path.join(log_path, u'openlp.log')
- logfile = logging.FileHandler(filename, u'w')
- logfile.setFormatter(logging.Formatter(
- u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
- log.addHandler(logfile)
- logging.addLevelName(15, u'Timer')
- # Parse command line options and deal with them.
- (options, args) = parser.parse_args()
- qt_args = []
- if options.loglevel.lower() in ['d', 'debug']:
- log.setLevel(logging.DEBUG)
- print 'Logging to:', filename
- elif options.loglevel.lower() in ['w', 'warning']:
- log.setLevel(logging.WARNING)
- else:
- log.setLevel(logging.INFO)
- if options.style:
- qt_args.extend(['-style', options.style])
- # Throw the rest of the arguments at Qt, just in case.
- qt_args.extend(args)
- # Initialise the resources
- qInitResources()
- # Now create and actually run the application.
- app = OpenLP(qt_args)
- # Instance check
- if app.isAlreadyRunning():
- sys.exit()
- app.setOrganizationName(u'OpenLP')
- app.setOrganizationDomain(u'openlp.org')
- app.setApplicationName(u'OpenLP')
- app.setApplicationVersion(get_application_version()[u'version'])
- # First time checks in settings
- if not QtCore.QSettings().value(u'general/has run wizard',
- QtCore.QVariant(False)).toBool():
- if not FirstTimeLanguageForm().exec_():
- # if cancel then stop processing
- sys.exit()
- if sys.platform == u'darwin':
- OpenLP.addLibraryPath(QtGui.QApplication.applicationDirPath()
- + "/qt4_plugins")
- # i18n Set Language
- language = LanguageManager.get_language()
- app_translator, default_translator = \
- LanguageManager.get_translator(language)
- if not app_translator.isEmpty():
- app.installTranslator(app_translator)
- if not default_translator.isEmpty():
- app.installTranslator(default_translator)
- else:
- log.debug(u'Could not find default_translator.')
- if not options.no_error_form:
- sys.excepthook = app.hookException
- sys.exit(app.run(qt_args))
if __name__ == u'__main__':
"""
diff --git a/openlp/__init__.py b/openlp/__init__.py
index 9038b48cc..5f7608770 100644
--- a/openlp/__init__.py
+++ b/openlp/__init__.py
@@ -27,3 +27,9 @@
"""
The :mod:`openlp` module contains all the project produced OpenLP functionality
"""
+
+import core
+import plugins
+
+__all__ = [u'core', u'plugins']
+
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py
index e19b9a257..3c8bdfe71 100644
--- a/openlp/core/__init__.py
+++ b/openlp/core/__init__.py
@@ -24,9 +24,268 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
+
"""
The :mod:`core` module provides all core application functions
All the core functions of the OpenLP application including the GUI, settings,
logging and a plugin framework are contained within the openlp.core module.
"""
+
+import os
+import sys
+import logging
+from optparse import OptionParser
+from traceback import format_exception
+
+from PyQt4 import QtCore, QtGui
+
+from openlp.core.lib import Receiver, check_directory_exists
+from openlp.core.lib.ui import UiStrings
+from openlp.core.resources import qInitResources
+from openlp.core.ui.mainwindow import MainWindow
+from openlp.core.ui.firsttimelanguageform import FirstTimeLanguageForm
+from openlp.core.ui.firsttimeform import FirstTimeForm
+from openlp.core.ui.exceptionform import ExceptionForm
+from openlp.core.ui import SplashScreen, ScreenList
+from openlp.core.utils import AppLocation, LanguageManager, VersionThread, \
+ get_application_version, DelayStartThread
+
+
+__all__ = [u'OpenLP', u'main']
+
+
+log = logging.getLogger()
+application_stylesheet = u"""
+QMainWindow::separator
+{
+ border: none;
+}
+
+QDockWidget::title
+{
+ border: 1px solid palette(dark);
+ padding-left: 5px;
+ padding-top: 2px;
+ margin: 1px 0;
+}
+
+QToolBar
+{
+ border: none;
+ margin: 0;
+ padding: 0;
+}
+"""
+
+
+class OpenLP(QtGui.QApplication):
+ """
+ The core application class. This class inherits from Qt's QApplication
+ class in order to provide the core of the application.
+ """
+
+ args = []
+
+ def exec_(self):
+ """
+ Override exec method to allow the shared memory to be released on exit
+ """
+ QtGui.QApplication.exec_()
+ self.sharedMemory.detach()
+
+ def run(self, args, testing=False):
+ """
+ Run the OpenLP application.
+ """
+ # On Windows, the args passed into the constructor are
+ # ignored. Not very handy, so set the ones we want to use.
+ self.args.extend(args)
+ # provide a listener for widgets to reqest a screen update.
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'openlp_process_events'), self.processEvents)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'cursor_busy'), self.setBusyCursor)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'cursor_normal'), self.setNormalCursor)
+ # Decide how many screens we have and their size
+ screens = ScreenList(self.desktop())
+ # First time checks in settings
+ has_run_wizard = QtCore.QSettings().value(
+ u'general/has run wizard', QtCore.QVariant(False)).toBool()
+ if not has_run_wizard:
+ if FirstTimeForm(screens).exec_() == QtGui.QDialog.Accepted:
+ QtCore.QSettings().setValue(u'general/has run wizard',
+ QtCore.QVariant(True))
+ if os.name == u'nt':
+ self.setStyleSheet(application_stylesheet)
+ show_splash = QtCore.QSettings().value(
+ u'general/show splash', QtCore.QVariant(True)).toBool()
+ if show_splash:
+ self.splash = SplashScreen()
+ self.splash.show()
+ # make sure Qt really display the splash screen
+ self.processEvents()
+ # start the main app window
+ self.mainWindow = MainWindow(self.clipboard(), self.args)
+ self.mainWindow.show()
+ if show_splash:
+ # now kill the splashscreen
+ self.splash.finish(self.mainWindow)
+ log.debug(u'Splashscreen closed')
+ # make sure Qt really display the splash screen
+ self.processEvents()
+ self.mainWindow.repaint()
+ self.processEvents()
+ if not has_run_wizard:
+ self.mainWindow.firstTime()
+ update_check = QtCore.QSettings().value(
+ u'general/update check', QtCore.QVariant(True)).toBool()
+ if update_check:
+ VersionThread(self.mainWindow).start()
+ Receiver.send_message(u'maindisplay_blank_check')
+ self.mainWindow.appStartup()
+ DelayStartThread(self.mainWindow).start()
+ # Skip exec_() for gui tests
+ if not testing:
+ return self.exec_()
+
+ def isAlreadyRunning(self):
+ """
+ Look to see if OpenLP is already running and ask if a 2nd copy
+ is to be started.
+ """
+ self.sharedMemory = QtCore.QSharedMemory('OpenLP')
+ if self.sharedMemory.attach():
+ status = QtGui.QMessageBox.critical(None,
+ UiStrings().Error, UiStrings().OpenLPStart,
+ QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.Yes | QtGui.QMessageBox.No))
+ if status == QtGui.QMessageBox.No:
+ return True
+ return False
+ else:
+ self.sharedMemory.create(1)
+ return False
+
+ def hookException(self, exctype, value, traceback):
+ if not hasattr(self, u'mainWindow'):
+ log.exception(''.join(format_exception(exctype, value, traceback)))
+ return
+ if not hasattr(self, u'exceptionForm'):
+ self.exceptionForm = ExceptionForm(self.mainWindow)
+ self.exceptionForm.exceptionTextEdit.setPlainText(
+ ''.join(format_exception(exctype, value, traceback)))
+ self.setNormalCursor()
+ self.exceptionForm.exec_()
+
+ def setBusyCursor(self):
+ """
+ Sets the Busy Cursor for the Application
+ """
+ self.setOverrideCursor(QtCore.Qt.BusyCursor)
+ self.processEvents()
+
+ def setNormalCursor(self):
+ """
+ Sets the Normal Cursor for the Application
+ """
+ self.restoreOverrideCursor()
+
+ def event(self, event):
+ """
+ Enables direct file opening on OS X
+ """
+ if event.type() == QtCore.QEvent.FileOpen:
+ file_name = event.file()
+ log.debug(u'Got open file event for %s!', file_name)
+ self.args.insert(0, unicode(file_name))
+ return True
+ else:
+ return QtGui.QApplication.event(self, event)
+
+
+def main(args=None):
+ """
+ The main function which parses command line options and then runs
+ the PyQt4 Application.
+ """
+ # Set up command line options.
+ usage = 'Usage: %prog [options] [qt-options]'
+ parser = OptionParser(usage=usage)
+ parser.add_option('-e', '--no-error-form', dest='no_error_form',
+ action='store_true', help='Disable the error notification form.')
+ parser.add_option('-l', '--log-level', dest='loglevel',
+ default='warning', metavar='LEVEL', help='Set logging to LEVEL '
+ 'level. Valid values are "debug", "info", "warning".')
+ parser.add_option('-p', '--portable', dest='portable',
+ action='store_true', help='Specify if this should be run as a '
+ 'portable app, off a USB flash drive (not implemented).')
+ parser.add_option('-d', '--dev-version', dest='dev_version',
+ action='store_true', help='Ignore the version file and pull the '
+ 'version directly from Bazaar')
+ parser.add_option('-s', '--style', dest='style',
+ help='Set the Qt4 style (passed directly to Qt4).')
+ parser.add_option('--testing', dest='testing',
+ action='store_true', help='Run by testing framework')
+ # Set up logging
+ log_path = AppLocation.get_directory(AppLocation.CacheDir)
+ check_directory_exists(log_path)
+ filename = os.path.join(log_path, u'openlp.log')
+ logfile = logging.FileHandler(filename, u'w')
+ logfile.setFormatter(logging.Formatter(
+ u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
+ log.addHandler(logfile)
+ # Parse command line options and deal with them.
+ # Use args supplied programatically if possible.
+ (options, args) = parser.parse_args(args) if args else parser.parse_args()
+ qt_args = []
+ if options.loglevel.lower() in ['d', 'debug']:
+ log.setLevel(logging.DEBUG)
+ print 'Logging to:', filename
+ elif options.loglevel.lower() in ['w', 'warning']:
+ log.setLevel(logging.WARNING)
+ else:
+ log.setLevel(logging.INFO)
+ if options.style:
+ qt_args.extend(['-style', options.style])
+ # Throw the rest of the arguments at Qt, just in case.
+ qt_args.extend(args)
+ # Initialise the resources
+ qInitResources()
+ # Now create and actually run the application.
+ app = OpenLP(qt_args)
+ app.setOrganizationName(u'OpenLP')
+ app.setOrganizationDomain(u'openlp.org')
+ app.setApplicationName(u'OpenLP')
+ app.setApplicationVersion(get_application_version()[u'version'])
+ # Instance check
+ if not options.testing:
+ # Instance check
+ if app.isAlreadyRunning():
+ sys.exit()
+ # First time checks in settings
+ if not QtCore.QSettings().value(u'general/has run wizard',
+ QtCore.QVariant(False)).toBool():
+ if not FirstTimeLanguageForm().exec_():
+ # if cancel then stop processing
+ sys.exit()
+ # i18n Set Language
+ language = LanguageManager.get_language()
+ app_translator, default_translator = \
+ LanguageManager.get_translator(language)
+ if not app_translator.isEmpty():
+ app.installTranslator(app_translator)
+ if not default_translator.isEmpty():
+ app.installTranslator(default_translator)
+ else:
+ log.debug(u'Could not find default_translator.')
+ if not options.no_error_form:
+ sys.excepthook = app.hookException
+ # Do not run method app.exec_() when running gui tests
+ if options.testing:
+ app.run(qt_args, testing=True)
+ # For gui tests we need access to window intances and their components
+ return app
+ else:
+ sys.exit(app.run(qt_args))
diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index f83e92de7..2c0b53a95 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -36,6 +36,13 @@ from PyQt4 import QtCore, QtGui
log = logging.getLogger(__name__)
+class MediaType(object):
+ """
+ An enumeration class for types of media.
+ """
+ Audio = 1
+ Video = 2
+
def translate(context, text, comment=None,
encoding=QtCore.QCoreApplication.CodecForTr, n=-1,
translate=QtCore.QCoreApplication.translate):
@@ -137,7 +144,7 @@ def image_to_byte(image):
# convert to base64 encoding so does not get missed!
return byte_array.toBase64()
-def resize_image(image_path, width, height, background=QtCore.Qt.black):
+def resize_image(image_path, width, height, background):
"""
Resize an image to fit on the current screen.
@@ -241,9 +248,7 @@ from settingsmanager import SettingsManager
from plugin import PluginStatus, StringContent, Plugin
from pluginmanager import PluginManager
from settingstab import SettingsTab
-from serviceitem import ServiceItem
-from serviceitem import ServiceItemType
-from serviceitem import ItemCapabilities
+from serviceitem import ServiceItem, ServiceItemType, ItemCapabilities
from htmlbuilder import build_html, build_lyrics_format_css, \
build_lyrics_outline_css
from toolbar import OpenLPToolbar
diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py
index 41b445cd5..1b8d086df 100644
--- a/openlp/core/lib/db.py
+++ b/openlp/core/lib/db.py
@@ -31,11 +31,13 @@ import logging
import os
from PyQt4 import QtCore
-from sqlalchemy import create_engine, MetaData
-from sqlalchemy.exc import InvalidRequestError
-from sqlalchemy.orm import scoped_session, sessionmaker
+from sqlalchemy import Table, MetaData, Column, types, create_engine
+from sqlalchemy.exc import SQLAlchemyError, InvalidRequestError, DBAPIError
+from sqlalchemy.orm import scoped_session, sessionmaker, mapper
from sqlalchemy.pool import NullPool
+from openlp.core.lib import translate
+from openlp.core.lib.ui import critical_error_message_box
from openlp.core.utils import AppLocation, delete_file
log = logging.getLogger(__name__)
@@ -59,6 +61,64 @@ def init_db(url, auto_flush=True, auto_commit=False):
autocommit=auto_commit, bind=engine))
return session, metadata
+
+def upgrade_db(url, upgrade):
+ """
+ Upgrade a database.
+
+ ``url``
+ The url of the database to upgrade.
+
+ ``upgrade``
+ The python module that contains the upgrade instructions.
+ """
+ session, metadata = init_db(url)
+
+ class Metadata(BaseModel):
+ """
+ Provides a class for the metadata table.
+ """
+ pass
+ load_changes = True
+ try:
+ tables = upgrade.upgrade_setup(metadata)
+ except (SQLAlchemyError, DBAPIError):
+ load_changes = False
+ metadata_table = Table(u'metadata', metadata,
+ Column(u'key', types.Unicode(64), primary_key=True),
+ Column(u'value', types.UnicodeText(), default=None)
+ )
+ metadata_table.create(checkfirst=True)
+ mapper(Metadata, metadata_table)
+ version_meta = session.query(Metadata).get(u'version')
+ if version_meta is None:
+ version_meta = Metadata.populate(key=u'version', value=u'0')
+ version = 0
+ else:
+ version = int(version_meta.value)
+ if version > upgrade.__version__:
+ return version, upgrade.__version__
+ version += 1
+ if load_changes:
+ while hasattr(upgrade, u'upgrade_%d' % version):
+ log.debug(u'Running upgrade_%d', version)
+ try:
+ getattr(upgrade, u'upgrade_%d' % version) \
+ (session, metadata, tables)
+ version_meta.value = unicode(version)
+ except (SQLAlchemyError, DBAPIError):
+ log.exception(u'Could not run database upgrade script '
+ '"upgrade_%s", upgrade process has been halted.', version)
+ break
+ version += 1
+ else:
+ version_meta = Metadata.populate(key=u'version',
+ value=int(upgrade.__version__))
+ session.add(version_meta)
+ session.commit()
+ return int(version_meta.value), upgrade.__version__
+
+
def delete_database(plugin_name, db_file_name=None):
"""
Remove a database file from the system.
@@ -79,6 +139,7 @@ def delete_database(plugin_name, db_file_name=None):
AppLocation.get_section_data_path(plugin_name), plugin_name)
return delete_file(db_file_path)
+
class BaseModel(object):
"""
BaseModel provides a base object with a set of generic functions
@@ -93,12 +154,12 @@ class BaseModel(object):
instance.__setattr__(key, value)
return instance
-
class Manager(object):
"""
Provide generic object persistence management
"""
- def __init__(self, plugin_name, init_schema, db_file_name=None):
+ def __init__(self, plugin_name, init_schema, db_file_name=None,
+ upgrade_mod=None):
"""
Runs the initialisation process that includes creating the connection
to the database and the tables if they don't exist.
@@ -109,6 +170,9 @@ class Manager(object):
``init_schema``
The init_schema function for this database
+ ``upgrade_schema``
+ The upgrade_schema function for this database
+
``db_file_name``
The file name to use for this database. Defaults to None resulting
in the plugin_name being used.
@@ -134,7 +198,28 @@ class Manager(object):
unicode(settings.value(u'db hostname').toString()),
unicode(settings.value(u'db database').toString()))
settings.endGroup()
- self.session = init_schema(self.db_url)
+ if upgrade_mod:
+ db_ver, up_ver = upgrade_db(self.db_url, upgrade_mod)
+ if db_ver > up_ver:
+ critical_error_message_box(
+ translate('OpenLP.Manager', 'Database Error'),
+ unicode(translate('OpenLP.Manager', 'The database being '
+ 'loaded was created in a more recent version of '
+ 'OpenLP. The database is version %d, while OpenLP '
+ 'expects version %d. The database will not be loaded.'
+ '\n\nDatabase: %s')) % \
+ (db_ver, up_ver, self.db_url)
+ )
+ return
+ try:
+ self.session = init_schema(self.db_url)
+ except (SQLAlchemyError, DBAPIError):
+ log.exception(u'Error loading database: %s', self.db_url)
+ critical_error_message_box(
+ translate('OpenLP.Manager', 'Database Error'),
+ unicode(translate('OpenLP.Manager', 'OpenLP cannot load your '
+ 'database.\n\nDatabase: %s')) % self.db_url
+ )
def save_object(self, object_instance, commit=True):
"""
diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py
index 37d1de79c..4d6c90078 100644
--- a/openlp/core/lib/imagemanager.py
+++ b/openlp/core/lib/imagemanager.py
@@ -36,7 +36,7 @@ import Queue
from PyQt4 import QtCore
-from openlp.core.lib import resize_image, image_to_byte
+from openlp.core.lib import resize_image, image_to_byte, Receiver
from openlp.core.ui import ScreenList
log = logging.getLogger(__name__)
@@ -100,12 +100,14 @@ class Image(object):
variables ``image`` and ``image_bytes`` to ``None`` and add the image object
to the queue of images to process.
"""
- def __init__(self, name='', path=''):
+ def __init__(self, name, path, source, background):
self.name = name
self.path = path
self.image = None
self.image_bytes = None
self.priority = Priority.Normal
+ self.source = source
+ self.background = background
class PriorityQueue(Queue.PriorityQueue):
@@ -151,6 +153,8 @@ class ImageManager(QtCore.QObject):
self._cache = {}
self._imageThread = ImageThread(self)
self._conversion_queue = PriorityQueue()
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'config_updated'), self.process_updates)
def update_display(self):
"""
@@ -162,12 +166,42 @@ class ImageManager(QtCore.QObject):
self.height = current_screen[u'size'].height()
# Mark the images as dirty for a rebuild by setting the image and byte
# stream to None.
- self._conversion_queue = PriorityQueue()
for key, image in self._cache.iteritems():
- image.priority = Priority.Normal
- image.image = None
- image.image_bytes = None
- self._conversion_queue.put((image.priority, image))
+ self._reset_image(image)
+
+ def update_images(self, image_type, background):
+ """
+ Border has changed so update all the images affected.
+ """
+ log.debug(u'update_images')
+ # Mark the images as dirty for a rebuild by setting the image and byte
+ # stream to None.
+ for key, image in self._cache.iteritems():
+ if image.source == image_type:
+ image.background = background
+ self._reset_image(image)
+
+ def update_image(self, name, image_type, background):
+ """
+ Border has changed so update the image affected.
+ """
+ log.debug(u'update_images')
+ # Mark the images as dirty for a rebuild by setting the image and byte
+ # stream to None.
+ for key, image in self._cache.iteritems():
+ if image.source == image_type and image.name == name:
+ image.background = background
+ self._reset_image(image)
+
+ def _reset_image(self, image):
+ image.image = None
+ image.image_bytes = None
+ self._conversion_queue.modify_priority(image, Priority.Normal)
+
+ def process_updates(self):
+ """
+ Flush the queue to updated any data to update
+ """
# We want only one thread.
if not self._imageThread.isRunning():
self._imageThread.start()
@@ -215,13 +249,13 @@ class ImageManager(QtCore.QObject):
self._conversion_queue.remove(self._cache[name])
del self._cache[name]
- def add_image(self, name, path):
+ def add_image(self, name, path, source, background):
"""
Add image to cache if it is not already there.
"""
log.debug(u'add_image %s:%s' % (name, path))
if not name in self._cache:
- image = Image(name, path)
+ image = Image(name, path, source, background)
self._cache[name] = image
self._conversion_queue.put((image.priority, image))
else:
@@ -247,7 +281,8 @@ class ImageManager(QtCore.QObject):
image = self._conversion_queue.get()[1]
# Generate the QImage for the image.
if image.image is None:
- image.image = resize_image(image.path, self.width, self.height)
+ image.image = resize_image(image.path, self.width, self.height,
+ image.background)
# Set the priority to Lowest and stop here as we need to process
# more important images first.
if image.priority == Priority.Normal:
diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index a721fabf6..5366f3f68 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -111,7 +111,7 @@ class MediaManagerItem(QtGui.QWidget):
self.requiredIcons()
self.setupUi()
self.retranslateUi()
- self.auto_select_id = -1
+ self.autoSelectId = -1
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_service_load' % self.plugin.name),
self.serviceLoad)
@@ -376,18 +376,23 @@ class MediaManagerItem(QtGui.QWidget):
The files to be loaded
"""
names = []
+ fullList = []
for count in range(0, self.listView.count()):
- names.append(self.listView.item(count).text())
- newFiles = []
+ names.append(unicode(self.listView.item(count).text()))
+ fullList.append(unicode(self.listView.item(count).
+ data(QtCore.Qt.UserRole).toString()))
duplicatesFound = False
+ filesAdded = False
for file in files:
filename = os.path.split(unicode(file))[1]
if filename in names:
duplicatesFound = True
else:
- newFiles.append(file)
- if newFiles:
- self.loadList(newFiles)
+ filesAdded = True
+ fullList.append(file)
+ if fullList and filesAdded:
+ self.listView.clear()
+ self.loadList(fullList)
lastDir = os.path.split(unicode(files[0]))[0]
SettingsManager.set_last_dir(self.settingsSection, lastDir)
SettingsManager.set_list(self.settingsSection,
@@ -396,7 +401,7 @@ class MediaManagerItem(QtGui.QWidget):
critical_error_message_box(
UiStrings().Duplicate,
unicode(translate('OpenLP.MediaManagerItem',
- 'Duplicate files found on import and ignored.')))
+ 'Duplicate files were found on import and were ignored.')))
def contextMenu(self, point):
item = self.listView.itemAt(point)
@@ -485,7 +490,8 @@ class MediaManagerItem(QtGui.QWidget):
"""
pass
- def generateSlideData(self, serviceItem, item=None, xmlVersion=False):
+ def generateSlideData(self, serviceItem, item=None, xmlVersion=False,
+ remote=False):
raise NotImplementedError(u'MediaManagerItem.generateSlideData needs '
u'to be defined by the plugin')
@@ -506,7 +512,7 @@ class MediaManagerItem(QtGui.QWidget):
if QtCore.QSettings().value(u'advanced/single click preview',
QtCore.QVariant(False)).toBool() and self.quickPreviewAllowed \
and self.listView.selectedIndexes() \
- and self.auto_select_id == -1:
+ and self.autoSelectId == -1:
self.onPreviewClick(True)
def onPreviewClick(self, keepFocus=False):
@@ -539,12 +545,12 @@ class MediaManagerItem(QtGui.QWidget):
else:
self.goLive()
- def goLive(self, item_id=None):
+ def goLive(self, item_id=None, remote=False):
log.debug(u'%s Live requested', self.plugin.name)
item = None
if item_id:
item = self.createItemFromId(item_id)
- serviceItem = self.buildServiceItem(item)
+ serviceItem = self.buildServiceItem(item, remote=remote)
if serviceItem:
if not item_id:
serviceItem.from_plugin = True
@@ -574,8 +580,8 @@ class MediaManagerItem(QtGui.QWidget):
for item in items:
self.addToService(item)
- def addToService(self, item=None, replace=None):
- serviceItem = self.buildServiceItem(item, True)
+ def addToService(self, item=None, replace=None, remote=False):
+ serviceItem = self.buildServiceItem(item, True, remote=remote)
if serviceItem:
serviceItem.from_plugin = False
self.plugin.serviceManager.addServiceItem(serviceItem,
@@ -608,13 +614,13 @@ class MediaManagerItem(QtGui.QWidget):
unicode(translate('OpenLP.MediaManagerItem',
'You must select a %s service item.')) % self.title)
- def buildServiceItem(self, item=None, xmlVersion=False):
+ def buildServiceItem(self, item=None, xmlVersion=False, remote=False):
"""
Common method for generating a service item
"""
serviceItem = ServiceItem(self.plugin)
serviceItem.add_icon(self.plugin.icon_path)
- if self.generateSlideData(serviceItem, item, xmlVersion):
+ if self.generateSlideData(serviceItem, item, xmlVersion, remote):
return serviceItem
else:
return None
@@ -626,7 +632,7 @@ class MediaManagerItem(QtGui.QWidget):
"""
pass
- def check_search_result(self):
+ def checkSearchResult(self):
"""
Checks if the listView is empty and adds a "No Search Results" item.
"""
@@ -662,15 +668,15 @@ class MediaManagerItem(QtGui.QWidget):
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
return item_id
- def save_auto_select_id(self):
+ def saveAutoSelectId(self):
"""
Sorts out, what item to select after loading a list.
"""
# The item to select has not been set.
- if self.auto_select_id == -1:
+ if self.autoSelectId == -1:
item = self.listView.currentItem()
if item:
- self.auto_select_id = item.data(QtCore.Qt.UserRole).toInt()[0]
+ self.autoSelectId = item.data(QtCore.Qt.UserRole).toInt()[0]
def search(self, string):
"""
diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py
index 5b9f2185e..db7d4845b 100644
--- a/openlp/core/lib/plugin.py
+++ b/openlp/core/lib/plugin.py
@@ -368,3 +368,4 @@ class Plugin(QtCore.QObject):
after this has been set.
"""
self.textStrings[name] = {u'title': title, u'tooltip': tooltip}
+
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index ac7e95c4c..8353ddc19 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -27,7 +27,7 @@
import logging
-from PyQt4 import QtCore, QtWebKit
+from PyQt4 import QtGui, QtCore, QtWebKit
from openlp.core.lib import ServiceItem, expand_tags, \
build_lyrics_format_css, build_lyrics_outline_css, Receiver, \
@@ -166,7 +166,8 @@ class Renderer(object):
# if No file do not update cache
if self.theme_data.background_filename:
self.imageManager.add_image(self.theme_data.theme_name,
- self.theme_data.background_filename)
+ self.theme_data.background_filename, u'theme',
+ QtGui.QColor(self.theme_data.background_border_color))
return self._rect, self._rect_footer
def generate_preview(self, theme_data, force_page=False):
@@ -221,21 +222,56 @@ class Renderer(object):
if item.is_capable(ItemCapabilities.NoLineBreaks):
line_end = u' '
# Bibles
- if item.is_capable(ItemCapabilities.AllowsWordSplit):
+ if item.is_capable(ItemCapabilities.CanWordSplit):
pages = self._paginate_slide_words(text.split(u'\n'), line_end)
else:
# Clean up line endings.
lines = self._lines_split(text)
pages = self._paginate_slide(lines, line_end)
- if len(pages) > 1:
- # Songs and Custom
- if item.is_capable(ItemCapabilities.AllowsVirtualSplit):
- # Do not forget the line breaks!
- slides = text.split(u'[---]')
- pages = []
- for slide in slides:
- lines = slide.strip(u'\n').split(u'\n')
+ # Songs and Custom
+ if item.is_capable(ItemCapabilities.CanSoftBreak) and \
+ len(pages) > 1 and u'[---]' in text:
+ pages = []
+ while True:
+ slides = text.split(u'\n[---]\n', 2)
+ # If there are (at least) two occurrences of [---] we use
+ # the first two slides (and neglect the last for now).
+ if len(slides) == 3:
+ html_text = expand_tags(u'\n'.join(slides[:2]))
+ # We check both slides to determine if the virtual break is
+ # needed (there is only one virtual break).
+ else:
+ html_text = expand_tags(u'\n'.join(slides))
+ html_text = html_text.replace(u'\n', u'
')
+ if self._text_fits_on_slide(html_text):
+ # The first two virtual slides fit (as a whole) on one
+ # slide. Replace the first occurrence of [---].
+ text = text.replace(u'\n[---]', u'', 1)
+ else:
+ # The first virtual slide fits, which means we have to
+ # render the first virtual slide.
+ text_contains_break = u'[---]' in text
+ if text_contains_break:
+ text_to_render, text = text.split(u'\n[---]\n', 1)
+ else:
+ text_to_render = text
+ text = u''
+ lines = text_to_render.strip(u'\n').split(u'\n')
+ slides = self._paginate_slide(lines, line_end)
+ if len(slides) > 1 and text:
+ # Add all slides apart from the last one the list.
+ pages.extend(slides[:-1])
+ if text_contains_break:
+ text = slides[-1] + u'\n[---]\n' + text
+ else:
+ text = slides[-1] + u'\n'+ text
+ text = text.replace(u'
', u'\n')
+ else:
+ pages.extend(slides)
+ if u'[---]' not in text:
+ lines = text.strip(u'\n').split(u'\n')
pages.extend(self._paginate_slide(lines, line_end))
+ break
new_pages = []
for page in pages:
while page.endswith(u'
'):
@@ -341,7 +377,7 @@ class Renderer(object):
separator = u'
'
html_lines = map(expand_tags, lines)
# Text too long so go to next page.
- if self._text_fits_on_slide(separator.join(html_lines)):
+ if not self._text_fits_on_slide(separator.join(html_lines)):
html_text, previous_raw = self._binary_chop(formatted,
previous_html, previous_raw, html_lines, lines, separator, u'')
else:
@@ -374,18 +410,18 @@ class Renderer(object):
line = line.strip()
html_line = expand_tags(line)
# Text too long so go to next page.
- if self._text_fits_on_slide(previous_html + html_line):
+ if not self._text_fits_on_slide(previous_html + html_line):
# Check if there was a verse before the current one and append
# it, when it fits on the page.
if previous_html:
- if not self._text_fits_on_slide(previous_html):
+ if self._text_fits_on_slide(previous_html):
formatted.append(previous_raw)
previous_html = u''
previous_raw = u''
# Now check if the current verse will fit, if it does
# not we have to start to process the verse word by
# word.
- if not self._text_fits_on_slide(html_line):
+ if self._text_fits_on_slide(html_line):
previous_html = html_line + line_end
previous_raw = line + line_end
continue
@@ -442,7 +478,7 @@ class Renderer(object):
highest_index = len(html_list) - 1
index = int(highest_index / 2)
while True:
- if self._text_fits_on_slide(
+ if not self._text_fits_on_slide(
previous_html + separator.join(html_list[:index + 1]).strip()):
# We know that it does not fit, so change/calculate the
# new index and highest_index accordingly.
@@ -465,8 +501,8 @@ class Renderer(object):
else:
continue
# Check if the remaining elements fit on the slide.
- if not self._text_fits_on_slide(
- separator.join(html_list[index + 1:]).strip()):
+ if self._text_fits_on_slide(
+ separator.join(html_list[index + 1:]).strip()):
previous_html = separator.join(
html_list[index + 1:]).strip() + line_end
previous_raw = separator.join(
@@ -488,11 +524,11 @@ class Renderer(object):
returned, otherwise ``False``.
``text``
- The text to check. It can contain HTML tags.
+ The text to check. It may contain HTML tags.
"""
self.web_frame.evaluateJavaScript(u'show_text("%s")' %
text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'))
- return self.web_frame.contentsSize().height() > self.page_height
+ return self.web_frame.contentsSize().height() <= self.page_height
def _words_split(self, line):
"""
diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py
index 15c16c551..05a1128b1 100644
--- a/openlp/core/lib/serviceitem.py
+++ b/openlp/core/lib/serviceitem.py
@@ -52,20 +52,21 @@ class ItemCapabilities(object):
"""
Provides an enumeration of a serviceitem's capabilities
"""
- AllowsPreview = 1
- AllowsEdit = 2
- AllowsMaintain = 3
+ CanPreview = 1
+ CanEdit = 2
+ CanMaintain = 3
RequiresMedia = 4
- AllowsLoop = 5
- AllowsAdditions = 6
+ CanLoop = 5
+ CanAppend = 6
NoLineBreaks = 7
OnLoadUpdate = 8
AddIfNewItem = 9
ProvidesOwnDisplay = 10
- AllowsDetailedTitleDisplay = 11
- AllowsVariableStartTime = 12
- AllowsVirtualSplit = 13
- AllowsWordSplit = 14
+ HasDetailedTitleDisplay = 11
+ HasVariableStartTime = 12
+ CanSoftBreak = 13
+ CanWordSplit = 14
+ HasBackgroundAudio = 15
class ServiceItem(object):
@@ -115,6 +116,8 @@ class ServiceItem(object):
self.end_time = 0
self.media_length = 0
self.from_service = False
+ self.image_border = u'#000000'
+ self.background_audio = []
self._new_item()
def _new_item(self):
@@ -158,7 +161,7 @@ class ServiceItem(object):
"""
The render method is what generates the frames for the screen and
obtains the display information from the renderemanager.
- At this point all the slides are build for the given
+ At this point all the slides are built for the given
display size.
"""
log.debug(u'Render called')
@@ -195,7 +198,7 @@ class ServiceItem(object):
self.foot_text = \
u'
'.join([footer for footer in self.raw_footer if footer])
- def add_from_image(self, path, title):
+ def add_from_image(self, path, title, background=None):
"""
Add an image slide to the service item.
@@ -205,9 +208,12 @@ class ServiceItem(object):
``title``
A title for the slide in the service item.
"""
+ if background:
+ self.image_border = background
self.service_item_type = ServiceItemType.Image
self._raw_frames.append({u'title': title, u'path': path})
- self.renderer.imageManager.add_image(title, path)
+ self.renderer.imageManager.add_image(title, path, u'image',
+ self.image_border)
self._new_item()
def add_from_text(self, title, raw_slide, verse_tag=None):
@@ -268,7 +274,8 @@ class ServiceItem(object):
u'xml_version': self.xml_version,
u'start_time': self.start_time,
u'end_time': self.end_time,
- u'media_length': self.media_length
+ u'media_length': self.media_length,
+ u'background_audio': self.background_audio
}
service_data = []
if self.service_item_type == ServiceItemType.Text:
@@ -316,6 +323,8 @@ class ServiceItem(object):
self.end_time = header[u'end_time']
if u'media_length' in header:
self.media_length = header[u'media_length']
+ if u'background_audio' in header:
+ self.background_audio = header[u'background_audio']
if self.service_item_type == ServiceItemType.Text:
for slide in serviceitem[u'serviceitem'][u'data']:
self._raw_frames.append(slide)
@@ -337,7 +346,7 @@ class ServiceItem(object):
if self.is_text():
return self.title
else:
- if ItemCapabilities.AllowsDetailedTitleDisplay in self.capabilities:
+ if ItemCapabilities.HasDetailedTitleDisplay in self.capabilities:
return self._raw_frames[0][u'title']
elif len(self._raw_frames) > 1:
return self.title
@@ -355,6 +364,8 @@ class ServiceItem(object):
"""
self._uuid = other._uuid
self.notes = other.notes
+ if self.is_capable(ItemCapabilities.HasBackgroundAudio):
+ log.debug(self.background_audio)
def __eq__(self, other):
"""
diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py
index c87f9aa2e..3b0a62f5b 100644
--- a/openlp/core/lib/theme.py
+++ b/openlp/core/lib/theme.py
@@ -44,6 +44,7 @@ BLANK_THEME_XML = \
+ #000000
#000000
@@ -282,7 +283,7 @@ class ThemeXML(object):
# Create direction element
self.child_element(background, u'direction', unicode(direction))
- def add_background_image(self, filename):
+ def add_background_image(self, filename, borderColor):
"""
Add a image background.
@@ -294,6 +295,8 @@ class ThemeXML(object):
self.theme.appendChild(background)
# Create Filename element
self.child_element(background, u'filename', filename)
+ # Create endColor element
+ self.child_element(background, u'borderColor', unicode(borderColor))
def add_font(self, name, color, size, override, fonttype=u'main',
bold=u'False', italics=u'False', line_adjustment=0,
@@ -597,7 +600,7 @@ class ThemeXML(object):
self.background_direction)
else:
filename = os.path.split(self.background_filename)[1]
- self.add_background_image(filename)
+ self.add_background_image(filename, self.background_border_color)
self.add_font(self.font_main_name,
self.font_main_color,
self.font_main_size,
diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py
index 3e941c051..f4a732fb6 100644
--- a/openlp/core/ui/aboutdialog.py
+++ b/openlp/core/ui/aboutdialog.py
@@ -116,7 +116,7 @@ class Ui_AboutDialog(object):
u'Scott "sguerrieri" Guerrieri',
u'Matthias "matthub" Hub', u'Meinert "m2j" Jordan',
u'Armin "orangeshirt" K\xf6hler', u'Joshua "milleja46" Miller',
- u'Stevan "StevanP" Pettit', u'Mattias "mahfiaz" P\xf5ldaru',
+ u'Stevan "ElderP" Pettit', u'Mattias "mahfiaz" P\xf5ldaru',
u'Christian "crichter" Richter', u'Philip "Phill" Ridout',
u'Simon "samscudder" Scudder', u'Jeffrey "whydoubt" Smith',
u'Maikel Stuivenberg', u'Frode "frodus" Woldsund']
@@ -125,7 +125,7 @@ class Ui_AboutDialog(object):
packagers = ['Thomas "tabthorpe" Abthorpe (FreeBSD)',
u'Tim "TRB143" Bentley (Fedora)',
u'Matthias "matthub" Hub (Mac OS X)',
- u'Stevan "StevanP" Pettit (Windows)',
+ u'Stevan "ElderP" Pettit (Windows)',
u'Raoul "superfly" Snyman (Ubuntu)']
translators = {
u'af': [u'Johan "nuvolari" Mynhardt'],
diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py
index 4beebfde6..bfa4bf6b1 100644
--- a/openlp/core/ui/firsttimeform.py
+++ b/openlp/core/ui/firsttimeform.py
@@ -28,7 +28,9 @@
import io
import logging
import os
+import sys
import urllib
+import urllib2
from tempfile import gettempdir
from ConfigParser import SafeConfigParser
@@ -60,8 +62,13 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
files = self.webAccess.read()
self.config.readfp(io.BytesIO(files))
self.updateScreenListCombo()
+ self.downloadCanceled = False
self.downloading = unicode(translate('OpenLP.FirstTimeWizard',
'Downloading %s...'))
+ QtCore.QObject.connect(self.cancelButton,QtCore.SIGNAL('clicked()'),
+ self.onCancelButtonClicked)
+ QtCore.QObject.connect(self.noInternetFinishButton,
+ QtCore.SIGNAL('clicked()'), self.onNoInternetFinishButtonClicked)
QtCore.QObject.connect(self,
QtCore.SIGNAL(u'currentIdChanged(int)'), self.onCurrentIdChanged)
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -80,6 +87,10 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
"""
self.restart()
check_directory_exists(os.path.join(gettempdir(), u'openlp'))
+ self.noInternetFinishButton.setVisible(False)
+ # Check if this is a re-run of the wizard.
+ self.hasRunWizard = QtCore.QSettings().value(
+ u'general/has run wizard', QtCore.QVariant(False)).toBool()
# Sort out internet access for downloads
if self.webAccess:
songs = self.config.get(u'songs', u'languages')
@@ -120,7 +131,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
title = self.config.get(u'theme_%s' % theme, u'title')
filename = self.config.get(u'theme_%s' % theme, u'filename')
screenshot = self.config.get(u'theme_%s' % theme, u'screenshot')
- urllib.urlretrieve(u'%s/%s' % (self.web, screenshot),
+ urllib.urlretrieve(u'%s%s' % (self.web, screenshot),
os.path.join(gettempdir(), u'openlp', screenshot))
item = QtGui.QListWidgetItem(title, self.themesListWidget)
item.setData(QtCore.Qt.UserRole,
@@ -135,6 +146,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
"""
Determine the next page in the Wizard to go to.
"""
+ Receiver.send_message(u'openlp_process_events')
if self.currentId() == FirstTimePage.Plugins:
if not self.webAccess:
return FirstTimePage.NoInternet
@@ -151,16 +163,24 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
"""
Detects Page changes and updates as approprate.
"""
- if pageId == FirstTimePage.Defaults:
+ # Keep track of the page we are at. Pressing "Cancel" causes pageId
+ # to be a -1.
+ if pageId != -1:
+ self.lastId = pageId
+ if pageId == FirstTimePage.Plugins:
+ # Set the no internet page text.
+ if self.hasRunWizard:
+ self.noInternetLabel.setText(self.noInternetText)
+ else:
+ self.noInternetLabel.setText(self.noInternetText +
+ self.cancelWizardText)
+ elif pageId == FirstTimePage.Defaults:
self.themeComboBox.clear()
for iter in xrange(self.themesListWidget.count()):
item = self.themesListWidget.item(iter)
if item.checkState() == QtCore.Qt.Checked:
self.themeComboBox.addItem(item.text())
- # Check if this is a re-run of the wizard.
- self.has_run_wizard = QtCore.QSettings().value(
- u'general/has run wizard', QtCore.QVariant(False)).toBool()
- if self.has_run_wizard:
+ if self.hasRunWizard:
# Add any existing themes to list.
for theme in self.parent().themeManagerContents.getThemes():
index = self.themeComboBox.findText(theme)
@@ -172,12 +192,21 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
# Pre-select the current default theme.
index = self.themeComboBox.findText(default_theme)
self.themeComboBox.setCurrentIndex(index)
+ elif pageId == FirstTimePage.NoInternet:
+ self.backButton.setVisible(False)
+ self.nextButton.setVisible(False)
+ self.noInternetFinishButton.setVisible(True)
+ if self.hasRunWizard:
+ self.cancelButton.setVisible(False)
elif pageId == FirstTimePage.Progress:
Receiver.send_message(u'cursor_busy')
self._preWizard()
+ Receiver.send_message(u'openlp_process_events')
self._performWizard()
+ Receiver.send_message(u'openlp_process_events')
self._postWizard()
Receiver.send_message(u'cursor_normal')
+ Receiver.send_message(u'openlp_process_events')
def updateScreenListCombo(self):
"""
@@ -188,6 +217,53 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
self.displayComboBox.addItems(self.screens.get_screen_list())
self.displayComboBox.setCurrentIndex(self.displayComboBox.count() - 1)
+ def onCancelButtonClicked(self):
+ """
+ Process the pressing of the cancel button.
+ """
+ if self.lastId == FirstTimePage.NoInternet or \
+ (self.lastId <= FirstTimePage.Plugins and \
+ not self.hasRunWizard):
+ QtCore.QCoreApplication.exit()
+ sys.exit()
+ self.downloadCanceled = True
+ Receiver.send_message(u'cursor_normal')
+
+ def onNoInternetFinishButtonClicked(self):
+ """
+ Process the pressing of the "Finish" button on the No Internet page.
+ """
+ Receiver.send_message(u'cursor_busy')
+ self._performWizard()
+ Receiver.send_message(u'openlp_process_events')
+ Receiver.send_message(u'cursor_normal')
+ QtCore.QSettings().setValue(u'general/has run wizard',
+ QtCore.QVariant(True))
+ self.close()
+
+ def urlGetFile(self, url, fpath):
+ """"
+ Download a file given a URL. The file is retrieved in chunks, giving
+ the ability to cancel the download at any point.
+ """
+ block_count = 0
+ block_size = 4096
+ urlfile = urllib2.urlopen(url)
+ filesize = urlfile.headers["Content-Length"]
+ filename = open(fpath, "wb")
+ # Download until finished or canceled.
+ while not self.downloadCanceled:
+ data = urlfile.read(block_size)
+ if not data:
+ break
+ filename.write(data)
+ block_count += 1
+ self._downloadProgress(block_count, block_size, filesize)
+ filename.close()
+ # Delete file if canceled, it may be a partial file.
+ if self.downloadCanceled:
+ os.remove(fpath)
+
def _getFileSize(self, url):
site = urllib.urlopen(url)
meta = site.info()
@@ -197,7 +273,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
increment = (count * block_size) - self.previous_size
self._incrementProgressBar(None, increment)
self.previous_size = count * block_size
-
+
def _incrementProgressBar(self, status_text, increment=1):
"""
Update the wizard progress page.
@@ -219,6 +295,8 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
Prepare the UI for the process.
"""
self.max_progress = 0
+ self.finishButton.setVisible(False)
+ Receiver.send_message(u'openlp_process_events')
# Loop through the songs list and increase for each selected item
for i in xrange(self.songsListWidget.count()):
item = self.songsListWidget.item(i)
@@ -242,7 +320,6 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
filename = item.data(QtCore.Qt.UserRole).toString()
size = self._getFileSize(u'%s%s' % (self.web, filename))
self.max_progress += size
- self.finishButton.setVisible(False)
if self.max_progress:
# Add on 2 for plugins status setting plus a "finished" point.
self.max_progress = self.max_progress + 2
@@ -266,7 +343,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
"""
if self.max_progress:
self.progressBar.setValue(self.progressBar.maximum())
- if self.has_run_wizard:
+ if self.hasRunWizard:
self.progressLabel.setText(translate('OpenLP.FirstTimeWizard',
'Download complete.'
' Click the finish button to return to OpenLP.'))
@@ -275,7 +352,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
'Download complete.'
' Click the finish button to start OpenLP.'))
else:
- if self.has_run_wizard:
+ if self.hasRunWizard:
self.progressLabel.setText(translate('OpenLP.FirstTimeWizard',
'Click the finish button to return to OpenLP.'))
else:
@@ -304,42 +381,42 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
self._setPluginStatus(self.customCheckBox, u'custom/status')
self._setPluginStatus(self.songUsageCheckBox, u'songusage/status')
self._setPluginStatus(self.alertCheckBox, u'alerts/status')
- # Build directories for downloads
- songs_destination = os.path.join(unicode(gettempdir()), u'openlp')
- bibles_destination = AppLocation.get_section_data_path(u'bibles')
- themes_destination = AppLocation.get_section_data_path(u'themes')
- # Download songs
- for i in xrange(self.songsListWidget.count()):
- item = self.songsListWidget.item(i)
- if item.checkState() == QtCore.Qt.Checked:
- filename = item.data(QtCore.Qt.UserRole).toString()
- self._incrementProgressBar(self.downloading % filename, 0)
- self.previous_size = 0
- destination = os.path.join(songs_destination, unicode(filename))
- urllib.urlretrieve(u'%s%s' % (self.web, filename), destination,
- self._downloadProgress)
- # Download Bibles
- bibles_iterator = QtGui.QTreeWidgetItemIterator(self.biblesTreeWidget)
- while bibles_iterator.value():
- item = bibles_iterator.value()
- if item.parent() and item.checkState(0) == QtCore.Qt.Checked:
- bible = unicode(item.data(0, QtCore.Qt.UserRole).toString())
- self._incrementProgressBar(self.downloading % bible, 0)
- self.previous_size = 0
- urllib.urlretrieve(u'%s%s' % (self.web, bible),
- os.path.join(bibles_destination, bible),
- self._downloadProgress)
- bibles_iterator += 1
- # Download themes
- for i in xrange(self.themesListWidget.count()):
- item = self.themesListWidget.item(i)
- if item.checkState() == QtCore.Qt.Checked:
- theme = unicode(item.data(QtCore.Qt.UserRole).toString())
- self._incrementProgressBar(self.downloading % theme, 0)
- self.previous_size = 0
- urllib.urlretrieve(u'%s%s' % (self.web, theme),
- os.path.join(themes_destination, theme),
- self._downloadProgress)
+ if self.webAccess:
+ # Build directories for downloads
+ songs_destination = os.path.join(unicode(gettempdir()), u'openlp')
+ bibles_destination = AppLocation.get_section_data_path(u'bibles')
+ themes_destination = AppLocation.get_section_data_path(u'themes')
+ # Download songs
+ for i in xrange(self.songsListWidget.count()):
+ item = self.songsListWidget.item(i)
+ if item.checkState() == QtCore.Qt.Checked:
+ filename = item.data(QtCore.Qt.UserRole).toString()
+ self._incrementProgressBar(self.downloading % filename, 0)
+ self.previous_size = 0
+ destination = os.path.join(songs_destination,
+ unicode(filename))
+ self.urlGetFile(u'%s%s' % (self.web, filename), destination)
+ # Download Bibles
+ bibles_iterator = QtGui.QTreeWidgetItemIterator(
+ self.biblesTreeWidget)
+ while bibles_iterator.value():
+ item = bibles_iterator.value()
+ if item.parent() and item.checkState(0) == QtCore.Qt.Checked:
+ bible = unicode(item.data(0, QtCore.Qt.UserRole).toString())
+ self._incrementProgressBar(self.downloading % bible, 0)
+ self.previous_size = 0
+ self.urlGetFile(u'%s%s' % (self.web, bible),
+ os.path.join(bibles_destination, bible))
+ bibles_iterator += 1
+ # Download themes
+ for i in xrange(self.themesListWidget.count()):
+ item = self.themesListWidget.item(i)
+ if item.checkState() == QtCore.Qt.Checked:
+ theme = unicode(item.data(QtCore.Qt.UserRole).toString())
+ self._incrementProgressBar(self.downloading % theme, 0)
+ self.previous_size = 0
+ self.urlGetFile(u'%s%s' % (self.web, theme),
+ os.path.join(themes_destination, theme))
# Set Default Display
if self.displayComboBox.currentIndex() != -1:
QtCore.QSettings().setValue(u'General/monitor',
diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py
index 7e94b4595..0f152a396 100644
--- a/openlp/core/ui/firsttimewizard.py
+++ b/openlp/core/ui/firsttimewizard.py
@@ -51,8 +51,10 @@ class Ui_FirstTimeWizard(object):
FirstTimeWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
FirstTimeWizard.setOptions(QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage |
- QtGui.QWizard.NoBackButtonOnLastPage)
+ QtGui.QWizard.NoBackButtonOnLastPage |
+ QtGui.QWizard.HaveCustomButton1)
self.finishButton = self.button(QtGui.QWizard.FinishButton)
+ self.noInternetFinishButton = self.button(QtGui.QWizard.CustomButton1)
self.cancelButton = self.button(QtGui.QWizard.CancelButton)
self.nextButton = self.button(QtGui.QWizard.NextButton)
self.backButton = self.button(QtGui.QWizard.BackButton)
@@ -189,9 +191,7 @@ class Ui_FirstTimeWizard(object):
self.progressBar.setObjectName(u'progressBar')
self.progressLayout.addWidget(self.progressBar)
FirstTimeWizard.setPage(FirstTimePage.Progress, self.progressPage)
-
self.retranslateUi(FirstTimeWizard)
- QtCore.QMetaObject.connectSlotsByName(FirstTimeWizard)
def retranslateUi(self, FirstTimeWizard):
FirstTimeWizard.setWindowTitle(translate(
@@ -230,14 +230,17 @@ class Ui_FirstTimeWizard(object):
self.noInternetPage.setSubTitle(translate(
'OpenLP.FirstTimeWizard',
'Unable to detect an Internet connection.'))
- self.noInternetLabel.setText(translate('OpenLP.FirstTimeWizard',
+ self.noInternetText = translate('OpenLP.FirstTimeWizard',
'No Internet connection was found. The First Time Wizard needs an '
'Internet connection in order to be able to download sample '
- 'songs, Bibles and themes.\n\nTo re-run the First Time Wizard and '
- 'import this sample data at a later stage, press the cancel '
- 'button now, check your Internet connection, and restart OpenLP.'
- '\n\nTo cancel the First Time Wizard completely, press the finish '
- 'button now.'))
+ 'songs, Bibles and themes. Press the Finish button now to start '
+ 'OpenLP with initial settings and no sample data.\n\nTo re-run the '
+ 'First Time Wizard and import this sample data at a later time, '
+ 'check your Internet connection and re-run this wizard by '
+ 'selecting "Tools/Re-run First Time Wizard" from OpenLP.')
+ self.cancelWizardText = translate('OpenLP.FirstTimeWizard',
+ '\n\nTo cancel the First Time Wizard completely (and not start '
+ 'OpenLP), press the Cancel button now.')
self.songsPage.setTitle(translate('OpenLP.FirstTimeWizard',
'Sample Songs'))
self.songsPage.setSubTitle(translate('OpenLP.FirstTimeWizard',
@@ -260,3 +263,5 @@ class Ui_FirstTimeWizard(object):
'Select default theme:'))
self.progressLabel.setText(translate('OpenLP.FirstTimeWizard',
'Starting configuration process...'))
+ FirstTimeWizard.setButtonText(QtGui.QWizard.CustomButton1,
+ translate('OpenLP.FirstTimeWizard', 'Finish'))
diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py
index 9a241473a..be02b3caa 100644
--- a/openlp/core/ui/generaltab.py
+++ b/openlp/core/ui/generaltab.py
@@ -170,6 +170,15 @@ class GeneralTab(SettingsTab):
self.customHeightValueEdit.setMaximum(9999)
self.displayLayout.addWidget(self.customHeightValueEdit, 4, 3)
self.rightLayout.addWidget(self.displayGroupBox)
+ # Background audio
+ self.audioGroupBox = QtGui.QGroupBox(self.rightColumn)
+ self.audioGroupBox.setObjectName(u'audioGroupBox')
+ self.audioLayout = QtGui.QVBoxLayout(self.audioGroupBox)
+ self.audioLayout.setObjectName(u'audioLayout')
+ self.startPausedCheckBox = QtGui.QCheckBox(self.audioGroupBox)
+ self.startPausedCheckBox.setObjectName(u'startPausedCheckBox')
+ self.audioLayout.addWidget(self.startPausedCheckBox)
+ self.rightLayout.addWidget(self.audioGroupBox)
self.rightLayout.addStretch()
# Signals and slots
QtCore.QObject.connect(self.overrideCheckBox,
@@ -243,6 +252,10 @@ class GeneralTab(SettingsTab):
self.customYLabel.setText(translate('OpenLP.GeneralTab', 'Y'))
self.customHeightLabel.setText(translate('OpenLP.GeneralTab', 'Height'))
self.customWidthLabel.setText(translate('OpenLP.GeneralTab', 'Width'))
+ self.audioGroupBox.setTitle(
+ translate('OpenLP.GeneralTab', 'Background Audio'))
+ self.startPausedCheckBox.setText(
+ translate('OpenLP.GeneralTab', 'Start background audio paused'))
def load(self):
"""
@@ -290,6 +303,8 @@ class GeneralTab(SettingsTab):
QtCore.QVariant(self.screens.current[u'size'].height())).toInt()[0])
self.customWidthValueEdit.setValue(settings.value(u'width',
QtCore.QVariant(self.screens.current[u'size'].width())).toInt()[0])
+ self.startPausedCheckBox.setChecked(settings.value(
+ u'audio start paused', QtCore.QVariant(True)).toBool())
settings.endGroup()
self.customXValueEdit.setEnabled(self.overrideCheckBox.isChecked())
self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked())
@@ -341,6 +356,8 @@ class GeneralTab(SettingsTab):
QtCore.QVariant(self.customWidthValueEdit.value()))
settings.setValue(u'override position',
QtCore.QVariant(self.overrideCheckBox.isChecked()))
+ settings.setValue(u'audio start paused',
+ QtCore.QVariant(self.startPausedCheckBox.isChecked()))
settings.endGroup()
# On save update the screens as well
self.postSetUp(True)
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index 9904868ce..297f5430b 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -62,6 +62,10 @@ class MainDisplay(QtGui.QGraphicsView):
self.override = {}
self.retranslateUi()
self.mediaObject = None
+ if live:
+ self.audioPlayer = AudioPlayer(self)
+ else:
+ self.audioPlayer = None
self.firstTime = True
self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;')
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool |
@@ -228,11 +232,11 @@ class MainDisplay(QtGui.QGraphicsView):
shrinkItem.setVisible(False)
self.setGeometry(self.screen[u'size'])
- def directImage(self, name, path):
+ def directImage(self, name, path, background):
"""
API for replacement backgrounds so Images are added directly to cache
"""
- self.imageManager.add_image(name, path)
+ self.imageManager.add_image(name, path, u'image', background)
if hasattr(self, u'serviceItem'):
self.override[u'image'] = name
self.override[u'theme'] = self.serviceItem.themedata.theme_name
@@ -587,61 +591,76 @@ class AudioPlayer(QtCore.QObject):
"""
log.debug(u'AudioPlayer Initialisation started')
QtCore.QObject.__init__(self, parent)
- self.message = None
+ self.currentIndex = -1
+ self.playlist = []
self.mediaObject = Phonon.MediaObject()
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
Phonon.createPath(self.mediaObject, self.audioObject)
+ QtCore.QObject.connect(self.mediaObject,
+ QtCore.SIGNAL(u'aboutToFinish()'), self.onAboutToFinish)
- def setup(self):
- """
- Sets up the Audio Player for use
- """
- log.debug(u'AudioPlayer Setup')
-
- def close(self):
+ def __del__(self):
"""
Shutting down so clean up connections
"""
- self.onMediaStop()
+ self.stop()
for path in self.mediaObject.outputPaths():
path.disconnect()
+ QtCore.QObject.__del__(self)
- def onMediaQueue(self, message):
+ def onAboutToFinish(self):
"""
- Set up a video to play from the serviceitem.
+ Just before the audio player finishes the current track, queue the next
+ item in the playlist, if there is one.
"""
- log.debug(u'AudioPlayer Queue new media message %s' % message)
- mfile = os.path.join(message[0].get_frame_path(),
- message[0].get_frame_title())
- self.mediaObject.setCurrentSource(Phonon.MediaSource(mfile))
- self.onMediaPlay()
+ self.currentIndex += 1
+ if len(self.playlist) > self.currentIndex:
+ self.mediaObject.enqueue(self.playlist[self.currentIndex])
- def onMediaPlay(self):
+ def connectVolumeSlider(self, slider):
+ slider.setAudioOutput(self.audioObject)
+
+ def reset(self):
"""
- We want to play the play so start it
+ Reset the audio player, clearing the playlist and the queue.
"""
- log.debug(u'AudioPlayer _play called')
+ self.currentIndex = -1
+ self.playlist = []
+ self.stop()
+ self.mediaObject.clear()
+
+ def play(self):
+ """
+ We want to play the file so start it
+ """
+ log.debug(u'AudioPlayer.play() called')
+ if self.currentIndex == -1:
+ self.onAboutToFinish()
self.mediaObject.play()
- def onMediaPause(self):
+ def pause(self):
"""
Pause the Audio
"""
- log.debug(u'AudioPlayer Media paused by user')
+ log.debug(u'AudioPlayer.pause() called')
self.mediaObject.pause()
- def onMediaStop(self):
+ def stop(self):
"""
Stop the Audio and clean up
"""
- log.debug(u'AudioPlayer Media stopped by user')
- self.message = None
+ log.debug(u'AudioPlayer.stop() called')
self.mediaObject.stop()
- self.onMediaFinish()
- def onMediaFinish(self):
+ def addToPlaylist(self, filenames):
"""
- Clean up the Object queue
+ Add another file to the playlist.
+
+ ``filename``
+ The file to add to the playlist.
"""
- log.debug(u'AudioPlayer Reached end of media playlist')
- self.mediaObject.clearQueue()
+ if not isinstance(filenames, list):
+ filenames = [filenames]
+ for filename in filenames:
+ self.playlist.append(Phonon.MediaSource(filename))
+
diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py
index 4ecf792bc..9d58ff82a 100644
--- a/openlp/core/ui/mainwindow.py
+++ b/openlp/core/ui/mainwindow.py
@@ -30,11 +30,13 @@ import os
import sys
import shutil
from tempfile import gettempdir
+from datetime import datetime
from PyQt4 import QtCore, QtGui
from openlp.core.lib import Renderer, build_icon, OpenLPDockWidget, \
- PluginManager, Receiver, translate, ImageManager, PluginStatus
+ PluginManager, Receiver, translate, ImageManager, PluginStatus, \
+ SettingsManager
from openlp.core.lib.ui import UiStrings, base_action, checkable_action, \
icon_action, shortcut_action
from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \
@@ -214,7 +216,7 @@ class Ui_MainWindow(object):
self.mediaManagerDock.isVisible(), UiStrings().View)
self.viewThemeManagerItem = shortcut_action(mainWindow,
u'viewThemeManagerItem', [QtGui.QKeySequence(u'F10')],
- self.toggleThemeManager, u':/system/system_thememanager.png',
+ self.toggleThemeManager, u':/system/system_thememanager.png',
self.themeManagerDock.isVisible(), UiStrings().View)
self.viewServiceManagerItem = shortcut_action(mainWindow,
u'viewServiceManagerItem', [QtGui.QKeySequence(u'F9')],
@@ -284,6 +286,10 @@ class Ui_MainWindow(object):
self.settingsConfigureItem = icon_action(mainWindow,
u'settingsConfigureItem', u':/system/system_settings.png',
category=UiStrings().Settings)
+ self.settingsImportItem = base_action(mainWindow,
+ u'settingsImportItem', category=UiStrings().Settings)
+ self.settingsExportItem = base_action(mainWindow,
+ u'settingsExportItem', category=UiStrings().Settings)
action_list.add_category(UiStrings().Help, CategoryOrder.standardMenu)
self.aboutItem = shortcut_action(mainWindow, u'aboutItem',
[QtGui.QKeySequence(u'Ctrl+F1')], self.onAboutItemClicked,
@@ -301,10 +307,10 @@ class Ui_MainWindow(object):
u':/system/system_online_help.png', category=UiStrings().Help)
self.webSiteItem = base_action(
mainWindow, u'webSiteItem', category=UiStrings().Help)
- add_actions(self.fileImportMenu,
- (self.importThemeItem, self.importLanguageItem))
- add_actions(self.fileExportMenu,
- (self.exportThemeItem, self.exportLanguageItem))
+ add_actions(self.fileImportMenu, (self.settingsImportItem, None,
+ self.importThemeItem, self.importLanguageItem))
+ add_actions(self.fileExportMenu, (self.settingsExportItem, None,
+ self.exportThemeItem, self.exportLanguageItem))
add_actions(self.fileMenu, (self.fileNewItem, self.fileOpenItem,
self.fileSaveItem, self.fileSaveAsItem,
self.recentFilesMenu.menuAction(), None,
@@ -357,6 +363,7 @@ class Ui_MainWindow(object):
self.importLanguageItem.setVisible(False)
self.exportLanguageItem.setVisible(False)
self.setLockPanel(panelLocked)
+ self.settingsImported = False
def retranslateUi(self, mainWindow):
"""
@@ -420,6 +427,15 @@ class Ui_MainWindow(object):
translate('OpenLP.MainWindow', 'Configure &Formatting Tags...'))
self.settingsConfigureItem.setText(
translate('OpenLP.MainWindow', '&Configure OpenLP...'))
+ self.settingsExportItem.setStatusTip(translate('OpenLP.MainWindow',
+ 'Export OpenLP settings to a specified *.config file'))
+ self.settingsExportItem.setText(
+ translate('OpenLP.MainWindow', 'Settings'))
+ self.settingsImportItem.setStatusTip(translate('OpenLP.MainWindow',
+ 'Import OpenLP settings from a specified *.config file previously '
+ 'exported on this or another machine'))
+ self.settingsImportItem.setText(
+ translate('OpenLP.MainWindow', 'Settings'))
self.viewMediaManagerItem.setText(
translate('OpenLP.MainWindow', '&Media Manager'))
self.viewMediaManagerItem.setToolTip(
@@ -523,8 +539,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
# (not for use by plugins)
self.uiSettingsSection = u'user interface'
self.generalSettingsSection = u'general'
- self.serviceSettingsSection = u'servicemanager'
+ self.advancedlSettingsSection = u'advanced'
+ self.shortcutsSettingsSection = u'shortcuts'
+ self.servicemanagerSettingsSection = u'servicemanager'
self.songsSettingsSection = u'songs'
+ self.themesSettingsSection = u'themes'
+ self.displayTagsSection = u'displayTags'
+ self.headerSection = u'SettingsImport'
self.serviceNotSaved = False
self.aboutForm = AboutForm(self)
self.settingsForm = SettingsForm(self, self)
@@ -573,6 +594,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtCore.SIGNAL(u'triggered()'), self.onSettingsConfigureItemClicked)
QtCore.QObject.connect(self.settingsShortcutsItem,
QtCore.SIGNAL(u'triggered()'), self.onSettingsShortcutsItemClicked)
+ QtCore.QObject.connect(self.settingsImportItem,
+ QtCore.SIGNAL(u'triggered()'), self.onSettingsImportItemClicked)
+ QtCore.QObject.connect(self.settingsExportItem,
+ QtCore.SIGNAL(u'triggered()'), self.onSettingsExportItemClicked)
# i18n set signals for languages
self.languageGroup.triggered.connect(LanguageManager.set_language)
QtCore.QObject.connect(self.modeDefaultItem,
@@ -751,22 +776,25 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
return
Receiver.send_message(u'cursor_busy')
screens = ScreenList.get_instance()
- if FirstTimeForm(screens, self).exec_() == QtGui.QDialog.Accepted:
- self.firstTime()
- for plugin in self.pluginManager.plugins:
- self.activePlugin = plugin
- oldStatus = self.activePlugin.status
- self.activePlugin.setStatus()
- if oldStatus != self.activePlugin.status:
- if self.activePlugin.status == PluginStatus.Active:
- self.activePlugin.toggleStatus(PluginStatus.Active)
- self.activePlugin.appStartup()
- else:
- self.activePlugin.toggleStatus(PluginStatus.Inactive)
- self.themeManagerContents.configUpdated()
- self.themeManagerContents.loadThemes(True)
- Receiver.send_message(u'theme_update_global',
- self.themeManagerContents.global_theme)
+ FirstTimeForm(screens, self).exec_()
+ self.firstTime()
+ for plugin in self.pluginManager.plugins:
+ self.activePlugin = plugin
+ oldStatus = self.activePlugin.status
+ self.activePlugin.setStatus()
+ if oldStatus != self.activePlugin.status:
+ if self.activePlugin.status == PluginStatus.Active:
+ self.activePlugin.toggleStatus(PluginStatus.Active)
+ self.activePlugin.appStartup()
+ else:
+ self.activePlugin.toggleStatus(PluginStatus.Inactive)
+ self.themeManagerContents.configUpdated()
+ self.themeManagerContents.loadThemes(True)
+ Receiver.send_message(u'theme_update_global',
+ self.themeManagerContents.global_theme)
+ # Check if any Bibles downloaded. If there are, they will be
+ # processed.
+ Receiver.send_message(u'bibles_load_list', True)
def blankCheck(self):
"""
@@ -868,6 +896,171 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
if self.shortcutForm.exec_():
self.shortcutForm.save()
+ def onSettingsImportItemClicked(self):
+ """
+ Import settings from an export INI file
+ """
+ answer = QtGui.QMessageBox.critical(self,
+ translate('OpenLP.MainWindow', 'Import settings?'),
+ translate('OpenLP.MainWindow',
+ 'Are you sure you want to import settings?\n\n'
+ 'Importing settings will make permanent changes to your current '
+ 'OpenLP configuration.\n\n'
+ 'Importing incorrect settings may cause erratic behaviour or '
+ 'OpenLP to terminate abnormally.'),
+ QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.Yes |
+ QtGui.QMessageBox.No),
+ QtGui.QMessageBox.No)
+ if answer == QtGui.QMessageBox.No:
+ return
+ import_file_name = unicode(QtGui.QFileDialog.getOpenFileName(self,
+ translate('OpenLP.MainWindow', 'Open File'),
+ '',
+ translate('OpenLP.MainWindow',
+ 'OpenLP Export Settings Files (*.conf)')))
+ if not import_file_name:
+ return
+ setting_sections = []
+ # Add main sections.
+ setting_sections.extend([self.generalSettingsSection])
+ setting_sections.extend([self.advancedlSettingsSection])
+ setting_sections.extend([self.uiSettingsSection])
+ setting_sections.extend([self.shortcutsSettingsSection])
+ setting_sections.extend([self.servicemanagerSettingsSection])
+ setting_sections.extend([self.themesSettingsSection])
+ setting_sections.extend([self.displayTagsSection])
+ setting_sections.extend([self.headerSection])
+ # Add plugin sections.
+ for plugin in self.pluginManager.plugins:
+ setting_sections.extend([plugin.name])
+ settings = QtCore.QSettings()
+ import_settings = QtCore.QSettings(import_file_name,
+ QtCore.QSettings.IniFormat)
+ import_keys = import_settings.allKeys()
+ for section_key in import_keys:
+ # We need to handle the really bad files.
+ try:
+ section, key = section_key.split(u'/')
+ except ValueError:
+ section = u'unknown'
+ key = u''
+ # Switch General back to lowercase.
+ if section == u'General':
+ section = u'general'
+ section_key = section + "/" + key
+ # Make sure it's a valid section for us.
+ if not section in setting_sections:
+ QtGui.QMessageBox.critical(self,
+ translate('OpenLP.MainWindow', 'Import settings'),
+ translate('OpenLP.MainWindow',
+ 'The file you selected does appear to be a valid OpenLP '
+ 'settings file.\n\n'
+ 'Section [%s] is not valid \n\n'
+ 'Processing has terminated and no changed have been made.'
+ % section),
+ QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.Ok))
+ return
+ # We have a good file, import it.
+ for section_key in import_keys:
+ value = import_settings.value(section_key)
+ settings.setValue(u'%s' % (section_key) ,
+ QtCore.QVariant(value))
+ now = datetime.now()
+ settings.beginGroup(self.headerSection)
+ settings.setValue( u'file_imported' , QtCore.QVariant(import_file_name))
+ settings.setValue(u'file_date_imported',
+ now.strftime("%Y-%m-%d %H:%M"))
+ settings.endGroup()
+ settings.sync()
+ # We must do an immediate restart or current configuration will
+ # overwrite what was just imported when application terminates
+ # normally. We need to exit without saving configuration.
+ QtGui.QMessageBox.information(self,
+ translate('OpenLP.MainWindow', 'Import settings'),
+ translate('OpenLP.MainWindow',
+ 'OpenLP will now close. Imported settings will '
+ 'be applied the next time you start OpenLP.'),
+ QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.Ok))
+ self.settingsImported = True
+ self.cleanUp()
+ QtCore.QCoreApplication.exit()
+
+ def onSettingsExportItemClicked(self):
+ """
+ Export settings to a .conf file in INI format
+ """
+ export_file_name = unicode(QtGui.QFileDialog.getSaveFileName(self,
+ translate('OpenLP.MainWindow', 'Export Settings File'), '',
+ translate('OpenLP.MainWindow',
+ 'OpenLP Export Settings File (*.conf)')))
+ if not export_file_name:
+ return
+ # Make sure it's a .conf file.
+ if not export_file_name.endswith(u'conf'):
+ export_file_name = export_file_name + u'.conf'
+ temp_file = os.path.join(unicode(gettempdir()),
+ u'openlp', u'exportConf.tmp')
+ self.saveSettings()
+ setting_sections = []
+ # Add main sections.
+ setting_sections.extend([self.generalSettingsSection])
+ setting_sections.extend([self.advancedlSettingsSection])
+ setting_sections.extend([self.uiSettingsSection])
+ setting_sections.extend([self.shortcutsSettingsSection])
+ setting_sections.extend([self.servicemanagerSettingsSection])
+ setting_sections.extend([self.themesSettingsSection])
+ setting_sections.extend([self.displayTagsSection])
+ # Add plugin sections.
+ for plugin in self.pluginManager.plugins:
+ setting_sections.extend([plugin.name])
+ # Delete old files if found.
+ if os.path.exists(temp_file):
+ os.remove(temp_file)
+ if os.path.exists(export_file_name):
+ os.remove(export_file_name)
+ settings = QtCore.QSettings()
+ settings.remove(self.headerSection)
+ # Get the settings.
+ keys = settings.allKeys()
+ export_settings = QtCore.QSettings(temp_file,
+ QtCore.QSettings.IniFormat)
+ # Add a header section.
+ # This is to insure it's our conf file for import.
+ now = datetime.now()
+ application_version = get_application_version()
+ # Write INI format using Qsettings.
+ # Write our header.
+ export_settings.beginGroup(self.headerSection)
+ export_settings.setValue(u'Make_Changes', u'At_Own_RISK')
+ export_settings.setValue(u'type', u'OpenLP_settings_export')
+ export_settings.setValue(u'file_date_created',
+ now.strftime("%Y-%m-%d %H:%M"))
+ export_settings.setValue(u'version', application_version[u'full'])
+ export_settings.endGroup()
+ # Write all the sections and keys.
+ for section_key in keys:
+ section, key = section_key.split(u'/')
+ key_value = settings.value(section_key)
+ export_settings.setValue(section_key, key_value)
+ export_settings.sync()
+ # Temp CONF file has been written. Blanks in keys are now '%20'.
+ # Read the temp file and output the user's CONF file with blanks to
+ # make it more readable.
+ temp_conf = open(temp_file, u'r')
+ export_conf = open(export_file_name, u'w')
+ for file_record in temp_conf:
+ # Get rid of any invalid entries.
+ if file_record.find(u'@Invalid()') == -1:
+ file_record = file_record.replace(u'%20', u' ')
+ export_conf.write(file_record)
+ temp_conf.close()
+ export_conf.close()
+ os.remove(temp_file)
+ return
+
def onModeDefaultItemClicked(self):
"""
Put OpenLP into "Default" view mode.
@@ -920,6 +1113,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
"""
Hook to close the main window and display windows on exit
"""
+ # If we just did a settings import, close without saving changes.
+ if self.settingsImported:
+ event.accept()
if self.serviceManagerContents.isModified():
ret = self.serviceManagerContents.saveModifiedService()
if ret == QtGui.QMessageBox.Save:
@@ -1095,6 +1291,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
"""
log.debug(u'Loading QSettings')
settings = QtCore.QSettings()
+ # Remove obsolete entries.
+ settings.remove(u'custom slide')
+ settings.remove(u'service')
settings.beginGroup(self.generalSettingsSection)
self.recentFiles = settings.value(u'recent files').toStringList()
settings.endGroup()
@@ -1117,6 +1316,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
"""
Save the main window settings.
"""
+ # Exit if we just did a settings import.
+ if self.settingsImported:
+ return
log.debug(u'Saving QSettings')
settings = QtCore.QSettings()
settings.beginGroup(self.generalSettingsSection)
diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py
index 55fc6eb3c..c08b6293e 100644
--- a/openlp/core/ui/printserviceform.py
+++ b/openlp/core/ui/printserviceform.py
@@ -31,7 +31,7 @@ import os
from PyQt4 import QtCore, QtGui
from lxml import html
-from openlp.core.lib import translate, get_text_file_string
+from openlp.core.lib import translate, get_text_file_string, Receiver
from openlp.core.lib.ui import UiStrings
from openlp.core.ui.printservicedialog import Ui_PrintServiceDialog, ZoomSize
from openlp.core.utils import AppLocation
@@ -327,12 +327,14 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
"""
Copies the display text to the clipboard as plain text
"""
+ self.update_song_usage()
self.mainWindow.clipboard.setText(self.document.toPlainText())
def copyHtmlText(self):
"""
Copies the display text to the clipboard as Html
"""
+ self.update_song_usage()
self.mainWindow.clipboard.setText(self.document.toHtml())
def printServiceOrder(self):
@@ -341,6 +343,7 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
"""
if not self.printDialog.exec_():
return
+ self.update_song_usage()
# Print the document.
self.document.print_(self.printer)
@@ -397,3 +400,9 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
settings.setValue(u'print notes',
QtCore.QVariant(self.notesCheckBox.isChecked()))
settings.endGroup()
+
+ def update_song_usage(self):
+ for index, item in enumerate(self.serviceManager.serviceItems):
+ # Trigger Audit requests
+ Receiver.send_message(u'print_service_started',
+ [item[u'service_item']])
diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py
index 3ab2e9239..d2d7450ca 100644
--- a/openlp/core/ui/servicemanager.py
+++ b/openlp/core/ui/servicemanager.py
@@ -28,6 +28,7 @@ import cgi
import cPickle
import logging
import os
+import shutil
import zipfile
log = logging.getLogger(__name__)
@@ -290,7 +291,7 @@ class ServiceManager(QtGui.QWidget):
QtCore.SIGNAL(u'service_item_update'), self.serviceItemUpdate)
# Last little bits of setting up
self.service_theme = unicode(QtCore.QSettings().value(
- self.mainwindow.serviceSettingsSection + u'/service theme',
+ self.mainwindow.servicemanagerSettingsSection + u'/service theme',
QtCore.QVariant(u'')).toString())
self.servicePath = AppLocation.get_section_data_path(u'servicemanager')
# build the drag and drop context menu
@@ -371,7 +372,7 @@ class ServiceManager(QtGui.QWidget):
self.mainwindow.setServiceModified(self.isModified(),
self.shortFileName())
QtCore.QSettings(). \
- setValue(u'service/last file',QtCore.QVariant(fileName))
+ setValue(u'servicemanager/last file',QtCore.QVariant(fileName))
def fileName(self):
"""
@@ -429,14 +430,15 @@ class ServiceManager(QtGui.QWidget):
self.mainwindow,
translate('OpenLP.ServiceManager', 'Open File'),
SettingsManager.get_last_dir(
- self.mainwindow.serviceSettingsSection),
+ self.mainwindow.servicemanagerSettingsSection),
translate('OpenLP.ServiceManager',
'OpenLP Service Files (*.osz)')))
if not fileName:
return False
else:
fileName = loadFile
- SettingsManager.set_last_dir(self.mainwindow.serviceSettingsSection,
+ SettingsManager.set_last_dir(
+ self.mainwindow.servicemanagerSettingsSection,
split_filename(fileName)[0])
self.loadFile(fileName)
@@ -461,7 +463,7 @@ class ServiceManager(QtGui.QWidget):
self.setFileName(u'')
self.setModified(False)
QtCore.QSettings(). \
- setValue(u'service/last file',QtCore.QVariant(u''))
+ setValue(u'servicemanager/last file',QtCore.QVariant(u''))
def saveFile(self):
"""
@@ -470,22 +472,34 @@ class ServiceManager(QtGui.QWidget):
if not self.fileName():
return self.saveFileAs()
path_file_name = unicode(self.fileName())
- (path, file_name) = os.path.split(path_file_name)
- (basename, extension) = os.path.splitext(file_name)
- service_file_name = basename + '.osd'
+ path, file_name = os.path.split(path_file_name)
+ basename, extension = os.path.splitext(file_name)
+ service_file_name = '%s.osd' % basename
log.debug(u'ServiceManager.saveFile - %s' % path_file_name)
- SettingsManager.set_last_dir(self.mainwindow.serviceSettingsSection,
+ SettingsManager.set_last_dir(
+ self.mainwindow.servicemanagerSettingsSection,
path)
service = []
write_list = []
+ audio_files = []
total_size = 0
Receiver.send_message(u'cursor_busy')
# Number of items + 1 to zip it
self.mainwindow.displayProgressBar(len(self.serviceItems) + 1)
for item in self.serviceItems:
self.mainwindow.incrementProgressBar()
- service.append({u'serviceitem':
- item[u'service_item'].get_service_repr()})
+ service_item = item[u'service_item'].get_service_repr()
+ # Get all the audio files, and ready them for embedding in the
+ # service file.
+ if len(service_item[u'header'][u'background_audio']) > 0:
+ for i, filename in \
+ enumerate(service_item[u'header'][u'background_audio']):
+ new_file = os.path.join(u'audio', item[u'service_item']._uuid,
+ os.path.split(filename)[1])
+ audio_files.append((filename, new_file))
+ service_item[u'header'][u'background_audio'][i] = new_file
+ # Add the service item to the service.
+ service.append({u'serviceitem': service_item})
if not item[u'service_item'].uses_file():
continue
skipMissing = False
@@ -539,6 +553,8 @@ class ServiceManager(QtGui.QWidget):
# Finally add all the listed media files.
for path_from in write_list:
zip.write(path_from, path_from.encode(u'utf-8'))
+ for path_from, path_to in audio_files:
+ zip.write(path_from, path_to.encode(u'utf-8'))
except IOError:
log.exception(u'Failed to save service to disk')
success = False
@@ -562,7 +578,7 @@ class ServiceManager(QtGui.QWidget):
fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.mainwindow,
UiStrings().SaveService,
SettingsManager.get_last_dir(
- self.mainwindow.serviceSettingsSection),
+ self.mainwindow.servicemanagerSettingsSection),
translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)')))
if not fileName:
return False
@@ -584,8 +600,8 @@ class ServiceManager(QtGui.QWidget):
fileTo = None
try:
zip = zipfile.ZipFile(fileName)
- for file in zip.namelist():
- ucsfile = file_is_unicode(file)
+ for zipinfo in zip.infolist():
+ ucsfile = file_is_unicode(zipinfo.filename)
if not ucsfile:
critical_error_message_box(
message=translate('OpenLP.ServiceManager',
@@ -593,14 +609,12 @@ class ServiceManager(QtGui.QWidget):
'The content encoding is not UTF-8.'))
continue
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
- filePath = os.path.join(self.servicePath,
- os.path.split(osfile)[1])
- fileTo = open(filePath, u'wb')
- fileTo.write(zip.read(file))
- fileTo.flush()
- fileTo.close()
- if filePath.endswith(u'osd'):
- p_file = filePath
+ if not osfile.startswith(u'audio'):
+ osfile = os.path.split(osfile)[1]
+ zipinfo.filename = osfile
+ zip.extract(zipinfo, self.servicePath)
+ if osfile.endswith(u'osd'):
+ p_file = os.path.join(self.servicePath, osfile)
if 'p_file' in locals():
Receiver.send_message(u'cursor_busy')
fileTo = open(p_file, u'r')
@@ -624,17 +638,17 @@ class ServiceManager(QtGui.QWidget):
self.mainwindow.addRecentFile(fileName)
self.setModified(False)
QtCore.QSettings().setValue(
- 'service/last file', QtCore.QVariant(fileName))
+ 'servicemanager/last file', QtCore.QVariant(fileName))
else:
critical_error_message_box(
message=translate('OpenLP.ServiceManager',
'File is not a valid service.'))
log.exception(u'File contains no service data')
except (IOError, NameError, zipfile.BadZipfile):
+ log.exception(u'Problem loading service file %s' % fileName)
critical_error_message_box(
message=translate('OpenLP.ServiceManager',
'File could not be opened because it is corrupt.'))
- log.exception(u'Problem loading service file %s' % fileName)
except zipfile.BadZipfile:
if os.path.getsize(fileName) == 0:
log.exception(u'Service file is zero sized: %s' % fileName)
@@ -666,7 +680,7 @@ class ServiceManager(QtGui.QWidget):
present.
"""
fileName = QtCore.QSettings(). \
- value(u'service/last file',QtCore.QVariant(u'')).toString()
+ value(u'servicemanager/last file',QtCore.QVariant(u'')).toString()
if fileName:
self.loadFile(fileName)
@@ -683,16 +697,16 @@ class ServiceManager(QtGui.QWidget):
self.maintainAction.setVisible(False)
self.notesAction.setVisible(False)
self.timeAction.setVisible(False)
- if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsEdit)\
+ if serviceItem[u'service_item'].is_capable(ItemCapabilities.CanEdit)\
and serviceItem[u'service_item'].edit_id:
self.editAction.setVisible(True)
if serviceItem[u'service_item']\
- .is_capable(ItemCapabilities.AllowsMaintain):
+ .is_capable(ItemCapabilities.CanMaintain):
self.maintainAction.setVisible(True)
if item.parent() is None:
self.notesAction.setVisible(True)
if serviceItem[u'service_item']\
- .is_capable(ItemCapabilities.AllowsVariableStartTime):
+ .is_capable(ItemCapabilities.HasVariableStartTime):
self.timeAction.setVisible(True)
self.themeMenu.menuAction().setVisible(False)
# Set up the theme menu.
@@ -963,7 +977,7 @@ class ServiceManager(QtGui.QWidget):
(unicode(translate('OpenLP.ServiceManager', 'Notes')),
cgi.escape(unicode(serviceitem.notes))))
if item[u'service_item'] \
- .is_capable(ItemCapabilities.AllowsVariableStartTime):
+ .is_capable(ItemCapabilities.HasVariableStartTime):
tips.append(item[u'service_item'].get_media_time())
treewidgetitem.setToolTip(0, u'
'.join(tips))
treewidgetitem.setData(0, QtCore.Qt.UserRole,
@@ -999,6 +1013,8 @@ class ServiceManager(QtGui.QWidget):
for file in os.listdir(self.servicePath):
file_path = os.path.join(self.servicePath, file)
delete_file(file_path)
+ if os.path.exists(os.path.join(self.servicePath, u'audio')):
+ shutil.rmtree(os.path.join(self.servicePath, u'audio'), False)
def onThemeComboBoxSelected(self, currentIndex):
"""
@@ -1008,7 +1024,8 @@ class ServiceManager(QtGui.QWidget):
self.service_theme = unicode(self.themeComboBox.currentText())
self.mainwindow.renderer.set_service_theme(self.service_theme)
QtCore.QSettings().setValue(
- self.mainwindow.serviceSettingsSection + u'/service theme',
+ self.mainwindow.servicemanagerSettingsSection +
+ u'/service theme',
QtCore.QVariant(self.service_theme))
self.regenerateServiceItems()
@@ -1196,7 +1213,7 @@ class ServiceManager(QtGui.QWidget):
item += 1
if self.serviceItems and item < len(self.serviceItems) and \
self.serviceItems[item][u'service_item'].is_capable(
- ItemCapabilities.AllowsPreview):
+ ItemCapabilities.CanPreview):
self.mainwindow.previewController.addServiceManagerItem(
self.serviceItems[item][u'service_item'], 0)
self.mainwindow.liveController.previewListWidget.setFocus()
@@ -1214,7 +1231,7 @@ class ServiceManager(QtGui.QWidget):
"""
item = self.findServiceItem()[0]
if self.serviceItems[item][u'service_item']\
- .is_capable(ItemCapabilities.AllowsEdit):
+ .is_capable(ItemCapabilities.CanEdit):
Receiver.send_message(u'%s_edit' %
self.serviceItems[item][u'service_item'].name.lower(),
u'L:%s' % self.serviceItems[item][u'service_item'].edit_id)
@@ -1297,7 +1314,7 @@ class ServiceManager(QtGui.QWidget):
serviceItem = self.serviceItems[pos]
if (plugin == serviceItem[u'service_item'].name and
serviceItem[u'service_item'].is_capable(
- ItemCapabilities.AllowsAdditions)):
+ ItemCapabilities.CanAppend)):
action = self.dndMenu.exec_(QtGui.QCursor.pos())
# New action required
if action == self.newAction:
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index 0f83cbc30..6615d0e35 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -256,6 +256,12 @@ class SlideController(QtGui.QWidget):
self.songMenu.setMenu(QtGui.QMenu(
translate('OpenLP.SlideController', 'Go To'), self.toolbar))
self.toolbar.makeWidgetsInvisible([u'Song Menu'])
+ # Stuff for items with background audio.
+ self.audioPauseItem = self.toolbar.addToolbarButton(
+ u'Pause Audio', u':/slides/media_playback_pause.png',
+ translate('OpenLP.SlideController', 'Pause audio.'),
+ self.onAudioPauseClicked, True)
+ self.audioPauseItem.setVisible(False)
# Build the volumeSlider.
self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal)
self.volumeSlider.setTickInterval(1)
@@ -512,13 +518,13 @@ class SlideController(QtGui.QWidget):
self.playSlidesOnce.setChecked(False)
self.playSlidesOnce.setIcon(build_icon(u':/media/media_time.png'))
self.playSlidesLoop.setChecked(False)
- self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png'))
+ self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png'))
if item.is_text():
if QtCore.QSettings().value(
self.parent().songsSettingsSection + u'/display songbar',
QtCore.QVariant(True)).toBool() and len(self.slideList) > 0:
self.toolbar.makeWidgetsVisible([u'Song Menu'])
- if item.is_capable(ItemCapabilities.AllowsLoop) and \
+ if item.is_capable(ItemCapabilities.CanLoop) and \
len(item.get_frames()) > 1:
self.toolbar.makeWidgetsVisible(self.loopList)
if item.is_media():
@@ -538,7 +544,7 @@ class SlideController(QtGui.QWidget):
self.toolbar.hide()
self.mediabar.setVisible(False)
self.toolbar.makeWidgetsInvisible(self.songEditList)
- if item.is_capable(ItemCapabilities.AllowsEdit) and item.from_plugin:
+ if item.is_capable(ItemCapabilities.CanEdit) and item.from_plugin:
self.toolbar.makeWidgetsVisible(self.songEditList)
elif item.is_media():
self.toolbar.setVisible(False)
@@ -576,7 +582,7 @@ class SlideController(QtGui.QWidget):
"""
Replacement item following a remote edit
"""
- if item.__eq__(self.serviceItem):
+ if item == self.serviceItem:
self._processItem(item, self.previewListWidget.currentRow())
def addServiceManagerItem(self, item, slideno):
@@ -586,15 +592,17 @@ class SlideController(QtGui.QWidget):
Called by ServiceManager
"""
log.debug(u'addServiceManagerItem live = %s' % self.isLive)
- # If no valid slide number is specified we take the first one.
+ # If no valid slide number is specified we take the first one, but we
+ # remember the initial value to see if we should reload the song or not
+ slidenum = slideno
if slideno == -1:
- slideno = 0
- # If service item is the same as the current on only change slide
- if item.__eq__(self.serviceItem):
- self.__checkUpdateSelectedSlide(slideno)
+ slidenum = 0
+ # If service item is the same as the current one, only change slide
+ if slideno >= 0 and item == self.serviceItem:
+ self.__checkUpdateSelectedSlide(slidenum)
self.slideSelected()
- return
- self._processItem(item, slideno)
+ else:
+ self._processItem(item, slidenum)
def _processItem(self, serviceItem, slideno):
"""
@@ -618,6 +626,22 @@ class SlideController(QtGui.QWidget):
self.previewListWidget.setColumnWidth(0, width)
if self.isLive:
self.songMenu.menu().clear()
+ self.display.audioPlayer.reset()
+ self.setAudioItemsVisibility(False)
+ self.audioPauseItem.setChecked(False)
+ if self.serviceItem.is_capable(ItemCapabilities.HasBackgroundAudio):
+ log.debug(u'Starting to play...')
+ self.display.audioPlayer.addToPlaylist(
+ self.serviceItem.background_audio)
+ if QtCore.QSettings().value(
+ self.parent().generalSettingsSection + \
+ u'/audio start paused',
+ QtCore.QVariant(True)).toBool():
+ self.audioPauseItem.setChecked(True)
+ self.display.audioPlayer.pause()
+ else:
+ self.display.audioPlayer.play()
+ self.setAudioItemsVisibility(True)
row = 0
text = []
for framenumber, frame in enumerate(self.serviceItem.get_frames()):
@@ -767,6 +791,8 @@ class SlideController(QtGui.QWidget):
self.onBlankDisplay(True)
else:
Receiver.send_message(u'maindisplay_show')
+ else:
+ Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
def onSlideBlank(self):
"""
@@ -1097,6 +1123,17 @@ class SlideController(QtGui.QWidget):
self.playSlidesLoop.setChecked(False)
self.onToggleLoop()
+ def setAudioItemsVisibility(self, visible):
+ self.audioPauseItem.setVisible(visible)
+
+ def onAudioPauseClicked(self, checked):
+ if not self.audioPauseItem.isVisible():
+ return
+ if checked:
+ self.display.audioPlayer.pause()
+ else:
+ self.display.audioPlayer.play()
+
def timerEvent(self, event):
"""
If the timer event is for this window select next slide
diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py
index d5d955926..dc3c23d0d 100644
--- a/openlp/core/ui/themeform.py
+++ b/openlp/core/ui/themeform.py
@@ -66,6 +66,8 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.onGradientComboBoxCurrentIndexChanged)
QtCore.QObject.connect(self.colorButton,
QtCore.SIGNAL(u'clicked()'), self.onColorButtonClicked)
+ QtCore.QObject.connect(self.imageColorButton,
+ QtCore.SIGNAL(u'clicked()'), self.onImageColorButtonClicked)
QtCore.QObject.connect(self.gradientStartButton,
QtCore.SIGNAL(u'clicked()'), self.onGradientStartButtonClicked)
QtCore.QObject.connect(self.gradientEndButton,
@@ -330,6 +332,8 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.background_end_color)
self.setField(u'background_type', QtCore.QVariant(1))
else:
+ self.imageColorButton.setStyleSheet(u'background-color: %s' %
+ self.theme.background_border_color)
self.imageFileEdit.setText(self.theme.background_filename)
self.setField(u'background_type', QtCore.QVariant(2))
if self.theme.background_direction == \
@@ -464,6 +468,14 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self._colorButton(self.theme.background_color)
self.setBackgroundPageValues()
+ def onImageColorButtonClicked(self):
+ """
+ Background / Gradient 1 Color button pushed.
+ """
+ self.theme.background_border_color = \
+ self._colorButton(self.theme.background_border_color)
+ self.setBackgroundPageValues()
+
def onGradientStartButtonClicked(self):
"""
Gradient 2 Color button pushed.
@@ -564,7 +576,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
def accept(self):
"""
- Lets save the them as Finish has been pressed
+ Lets save the theme as Finish has been pressed
"""
# Save the theme name
self.theme.theme_name = unicode(self.field(u'name').toString())
diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py
index 69c229532..fdd0d74f3 100644
--- a/openlp/core/ui/thememanager.py
+++ b/openlp/core/ui/thememanager.py
@@ -610,6 +610,11 @@ class ThemeManager(QtGui.QWidget):
and to trigger the reload of the theme list
"""
self._writeTheme(theme, imageFrom, imageTo)
+ if theme.background_type == \
+ BackgroundType.to_string(BackgroundType.Image):
+ self.mainwindow.imageManager.update_image(theme.theme_name,
+ u'theme', QtGui.QColor(theme.background_border_color))
+ self.mainwindow.imageManager.process_updates()
self.loadThemes()
def _writeTheme(self, theme, imageFrom, imageTo):
diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py
index 27ac3a182..6001c83d6 100644
--- a/openlp/core/ui/themewizard.py
+++ b/openlp/core/ui/themewizard.py
@@ -105,6 +105,11 @@ class Ui_ThemeWizard(object):
self.imageLayout = QtGui.QFormLayout(self.imageWidget)
self.imageLayout.setMargin(0)
self.imageLayout.setObjectName(u'ImageLayout')
+ self.imageColorLabel = QtGui.QLabel(self.colorWidget)
+ self.imageColorLabel.setObjectName(u'ImageColorLabel')
+ self.imageColorButton = QtGui.QPushButton(self.colorWidget)
+ self.imageColorButton.setObjectName(u'ImageColorButton')
+ self.imageLayout.addRow(self.imageColorLabel, self.imageColorButton)
self.imageLabel = QtGui.QLabel(self.imageWidget)
self.imageLabel.setObjectName(u'ImageLabel')
self.imageFileLayout = QtGui.QHBoxLayout()
@@ -118,7 +123,7 @@ class Ui_ThemeWizard(object):
build_icon(u':/general/general_open.png'))
self.imageFileLayout.addWidget(self.imageBrowseButton)
self.imageLayout.addRow(self.imageLabel, self.imageFileLayout)
- self.imageLayout.setItem(1, QtGui.QFormLayout.LabelRole, self.spacer)
+ self.imageLayout.setItem(2, QtGui.QFormLayout.LabelRole, self.spacer)
self.backgroundStack.addWidget(self.imageWidget)
self.backgroundLayout.addLayout(self.backgroundStack)
themeWizard.addPage(self.backgroundPage)
@@ -443,6 +448,8 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Top Left - Bottom Right'))
self.gradientComboBox.setItemText(BackgroundGradientType.LeftBottom,
translate('OpenLP.ThemeWizard', 'Bottom Left - Top Right'))
+ self.imageColorLabel.setText(
+ translate(u'OpenLP.ThemeWizard', 'Background color:'))
self.imageLabel.setText(u'%s:' % UiStrings().Image)
self.mainAreaPage.setTitle(
translate('OpenLP.ThemeWizard', 'Main Area Font Details'))
diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py
index 290da104c..2d8e16c4c 100644
--- a/openlp/plugins/bibles/lib/http.py
+++ b/openlp/plugins/bibles/lib/http.py
@@ -218,7 +218,7 @@ class BSExtract(object):
send_error_message(u'parse')
return None
content = content.find(u'div').findAll(u'div')
- verse_number = re.compile(r'v(\d{1,2})(\d{3})(\d{3}) verse')
+ verse_number = re.compile(r'v(\d{1,2})(\d{3})(\d{3}) verse.*')
verses = {}
for verse in content:
Receiver.send_message(u'openlp_process_events')
diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py
index 91009424c..31effe189 100644
--- a/openlp/plugins/bibles/lib/mediaitem.py
+++ b/openlp/plugins/bibles/lib/mediaitem.py
@@ -67,7 +67,7 @@ class BibleMediaItem(MediaManagerItem):
self.hasSearch = True
self.search_results = {}
self.second_search_results = {}
- self.check_search_result()
+ self.checkSearchResult()
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'bibles_load_list'), self.reloadBibles)
@@ -391,10 +391,13 @@ class BibleMediaItem(MediaManagerItem):
elif len(bibles):
self.initialiseAdvancedBible(bibles[0])
- def reloadBibles(self):
+ def reloadBibles(self, process=False):
log.debug(u'Reloading Bibles')
self.plugin.manager.reload_bibles()
self.loadBibles()
+ # If called from first time wizard re-run, process any new bibles.
+ if process:
+ self.plugin.appStartup()
self.updateAutoCompleter()
def initialiseAdvancedBible(self, bible):
@@ -648,7 +651,7 @@ class BibleMediaItem(MediaManagerItem):
elif self.search_results:
self.displayResults(bible, second_bible)
self.advancedSearchButton.setEnabled(True)
- self.check_search_result()
+ self.checkSearchResult()
Receiver.send_message(u'cursor_normal')
Receiver.send_message(u'openlp_process_events')
@@ -712,7 +715,7 @@ class BibleMediaItem(MediaManagerItem):
elif self.search_results:
self.displayResults(bible, second_bible)
self.quickSearchButton.setEnabled(True)
- self.check_search_result()
+ self.checkSearchResult()
Receiver.send_message(u'cursor_normal')
Receiver.send_message(u'openlp_process_events')
@@ -785,7 +788,8 @@ class BibleMediaItem(MediaManagerItem):
items.append(bible_verse)
return items
- def generateSlideData(self, service_item, item=None, xmlVersion=False):
+ def generateSlideData(self, service_item, item=None, xmlVersion=False,
+ remote=False):
"""
Generates and formats the slides for the service item as well as the
service item's title.
@@ -860,9 +864,9 @@ class BibleMediaItem(MediaManagerItem):
not second_bible:
# Split the line but do not replace line breaks in renderer.
service_item.add_capability(ItemCapabilities.NoLineBreaks)
- service_item.add_capability(ItemCapabilities.AllowsPreview)
- service_item.add_capability(ItemCapabilities.AllowsLoop)
- service_item.add_capability(ItemCapabilities.AllowsWordSplit)
+ service_item.add_capability(ItemCapabilities.CanPreview)
+ service_item.add_capability(ItemCapabilities.CanLoop)
+ service_item.add_capability(ItemCapabilities.CanWordSplit)
# Service Item: Title
service_item.title = u', '.join(raw_title)
# Service Item: Theme
diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py
index a3a80caf9..0eadf6021 100644
--- a/openlp/plugins/custom/forms/editcustomform.py
+++ b/openlp/plugins/custom/forms/editcustomform.py
@@ -135,7 +135,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
self.customSlide.credits = unicode(self.creditEdit.text())
self.customSlide.theme_name = unicode(self.themeComboBox.currentText())
success = self.manager.save_object(self.customSlide)
- self.mediaitem.auto_select_id = self.customSlide.id
+ self.mediaitem.autoSelectId = self.customSlide.id
return success
def onUpButtonClicked(self):
diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py
index 667434a8b..59d6b4fb6 100644
--- a/openlp/plugins/custom/lib/mediaitem.py
+++ b/openlp/plugins/custom/lib/mediaitem.py
@@ -132,7 +132,7 @@ class CustomMediaItem(MediaManagerItem):
def loadList(self, custom_slides):
# Sort out what custom we want to select after loading the list.
- self.save_auto_select_id()
+ self.saveAutoSelectId()
self.listView.clear()
# Sort the customs by its title considering language specific
# characters. lower() is needed for windows!
@@ -144,9 +144,9 @@ class CustomMediaItem(MediaManagerItem):
QtCore.Qt.UserRole, QtCore.QVariant(custom_slide.id))
self.listView.addItem(custom_name)
# Auto-select the custom.
- if custom_slide.id == self.auto_select_id:
+ if custom_slide.id == self.autoSelectId:
self.listView.setCurrentItem(custom_name)
- self.auto_select_id = -1
+ self.autoSelectId = -1
# Called to redisplay the custom list screen edith from a search
# or from the exit of the Custom edit dialog. If remote editing is
# active trigger it and clean up so it will not update again.
@@ -180,7 +180,7 @@ class CustomMediaItem(MediaManagerItem):
self.remoteTriggered = remote_type
self.edit_custom_form.loadCustom(custom_id, (remote_type == u'P'))
self.edit_custom_form.exec_()
- self.auto_select_id = -1
+ self.autoSelectId = -1
self.onSearchTextButtonClick()
def onEditClick(self):
@@ -192,7 +192,7 @@ class CustomMediaItem(MediaManagerItem):
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.edit_custom_form.loadCustom(item_id, False)
self.edit_custom_form.exec_()
- self.auto_select_id = -1
+ self.autoSelectId = -1
self.onSearchTextButtonClick()
def onDeleteClick(self):
@@ -217,21 +217,21 @@ class CustomMediaItem(MediaManagerItem):
for item in self.listView.selectedIndexes()]
for id in id_list:
self.plugin.manager.delete_object(CustomSlide, id)
- for row in row_list:
- self.listView.takeItem(row)
+ self.onSearchTextButtonClick()
def onFocus(self):
self.searchTextEdit.setFocus()
- def generateSlideData(self, service_item, item=None, xmlVersion=False):
+ def generateSlideData(self, service_item, item=None, xmlVersion=False,
+ remote=False):
raw_footer = []
slide = None
theme = None
item_id = self._getIdOfItemToGenerate(item, self.remoteCustom)
- service_item.add_capability(ItemCapabilities.AllowsEdit)
- service_item.add_capability(ItemCapabilities.AllowsPreview)
- service_item.add_capability(ItemCapabilities.AllowsLoop)
- service_item.add_capability(ItemCapabilities.AllowsVirtualSplit)
+ service_item.add_capability(ItemCapabilities.CanEdit)
+ service_item.add_capability(ItemCapabilities.CanPreview)
+ service_item.add_capability(ItemCapabilities.CanLoop)
+ service_item.add_capability(ItemCapabilities.CanSoftBreak)
customSlide = self.plugin.manager.get_object(CustomSlide, item_id)
title = customSlide.title
credit = customSlide.credits
@@ -274,7 +274,7 @@ class CustomMediaItem(MediaManagerItem):
CustomSlide.theme_name.like(u'%' + self.whitespace.sub(u' ',
search_keywords) + u'%'), order_by_ref=CustomSlide.title)
self.loadList(search_results)
- self.check_search_result()
+ self.checkSearchResult()
def onSearchTextEditChanged(self, text):
"""
diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py
index 1ddbe8357..4b5a6f3c0 100644
--- a/openlp/plugins/images/imageplugin.py
+++ b/openlp/plugins/images/imageplugin.py
@@ -25,10 +25,13 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
+from PyQt4 import QtCore, QtGui
+
import logging
-from openlp.core.lib import Plugin, StringContent, build_icon, translate
-from openlp.plugins.images.lib import ImageMediaItem
+from openlp.core.lib import Plugin, StringContent, build_icon, translate, \
+ Receiver
+from openlp.plugins.images.lib import ImageMediaItem, ImageTab
log = logging.getLogger(__name__)
@@ -36,10 +39,13 @@ class ImagePlugin(Plugin):
log.info(u'Image Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'images', plugin_helpers, ImageMediaItem)
+ Plugin.__init__(self, u'images', plugin_helpers, ImageMediaItem,
+ ImageTab)
self.weight = -7
self.icon_path = u':/plugins/plugin_images.png'
self.icon = build_icon(self.icon_path)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'image_updated'), self.image_updated)
def about(self):
about_text = translate('ImagePlugin', 'Image Plugin'
@@ -81,3 +87,13 @@ class ImagePlugin(Plugin):
'Add the selected image to the service.')
}
self.setPluginUiTextStrings(tooltips)
+
+ def image_updated(self):
+ """
+ Triggered by saving and changing the image border. Sets the images in
+ image manager to require updates. Actual update is triggered by the
+ last part of saving the config.
+ """
+ background = QtGui.QColor(QtCore.QSettings().value(self.settingsSection
+ + u'/background color', QtCore.QVariant(u'#000000')))
+ self.liveController.imageManager.update_images(u'image', background)
diff --git a/openlp/plugins/images/lib/__init__.py b/openlp/plugins/images/lib/__init__.py
index b26d00184..e216623cd 100644
--- a/openlp/plugins/images/lib/__init__.py
+++ b/openlp/plugins/images/lib/__init__.py
@@ -26,3 +26,4 @@
###############################################################################
from mediaitem import ImageMediaItem
+from imagetab import ImageTab
diff --git a/openlp/plugins/images/lib/imagetab.py b/openlp/plugins/images/lib/imagetab.py
new file mode 100644
index 000000000..98fbd203f
--- /dev/null
+++ b/openlp/plugins/images/lib/imagetab.py
@@ -0,0 +1,101 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+from PyQt4 import QtCore, QtGui
+
+from openlp.core.lib import SettingsTab, translate, Receiver
+from openlp.core.lib.ui import UiStrings, create_valign_combo
+
+class ImageTab(SettingsTab):
+ """
+ ImageTab is the images settings tab in the settings dialog.
+ """
+ def __init__(self, parent, name, visible_title, icon_path):
+ SettingsTab.__init__(self, parent, name, visible_title, icon_path)
+
+ def setupUi(self):
+ self.setObjectName(u'ImagesTab')
+ SettingsTab.setupUi(self)
+ self.bgColorGroupBox = QtGui.QGroupBox(self.leftColumn)
+ self.bgColorGroupBox.setObjectName(u'FontGroupBox')
+ self.formLayout = QtGui.QFormLayout(self.bgColorGroupBox)
+ self.formLayout.setObjectName(u'FormLayout')
+ self.colorLayout = QtGui.QHBoxLayout()
+ self.backgroundColorLabel = QtGui.QLabel(self.bgColorGroupBox)
+ self.backgroundColorLabel.setObjectName(u'BackgroundColorLabel')
+ self.colorLayout.addWidget(self.backgroundColorLabel)
+ self.backgroundColorButton = QtGui.QPushButton(self.bgColorGroupBox)
+ self.backgroundColorButton.setObjectName(u'BackgroundColorButton')
+ self.colorLayout.addWidget(self.backgroundColorButton)
+ self.formLayout.addRow(self.colorLayout)
+ self.informationLabel = QtGui.QLabel(self.bgColorGroupBox)
+ self.informationLabel.setObjectName(u'InformationLabel')
+ self.formLayout.addRow(self.informationLabel)
+ self.leftLayout.addWidget(self.bgColorGroupBox)
+ self.leftLayout.addStretch()
+ self.rightColumn.setSizePolicy(
+ QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
+ self.rightLayout.addStretch()
+ # Signals and slots
+ QtCore.QObject.connect(self.backgroundColorButton,
+ QtCore.SIGNAL(u'pressed()'), self.onbackgroundColorButtonClicked)
+
+ def retranslateUi(self):
+ self.bgColorGroupBox.setTitle(
+ translate('ImagesPlugin.ImageTab', 'Background Color'))
+ self.backgroundColorLabel.setText(
+ translate('ImagesPlugin.ImageTab', 'Default Color:'))
+ self.informationLabel.setText(
+ translate('ImagesPlugin.ImageTab', 'Provides border where image '
+ 'is not the correct dimensions for the screen when resized.'))
+
+ def onbackgroundColorButtonClicked(self):
+ new_color = QtGui.QColorDialog.getColor(
+ QtGui.QColor(self.bg_color), self)
+ if new_color.isValid():
+ self.bg_color = new_color.name()
+ self.backgroundColorButton.setStyleSheet(
+ u'background-color: %s' % self.bg_color)
+
+ def load(self):
+ settings = QtCore.QSettings()
+ settings.beginGroup(self.settingsSection)
+ self.bg_color = unicode(settings.value(
+ u'background color', QtCore.QVariant(u'#000000')).toString())
+ self.initial_color = self.bg_color
+ settings.endGroup()
+ self.backgroundColorButton.setStyleSheet(
+ u'background-color: %s' % self.bg_color)
+
+ def save(self):
+ settings = QtCore.QSettings()
+ settings.beginGroup(self.settingsSection)
+ settings.setValue(u'background color', QtCore.QVariant(self.bg_color))
+ settings.endGroup()
+ if self.initial_color != self.bg_color:
+ Receiver.send_message(u'image_updated')
+
diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py
index acd420880..cb73a132f 100644
--- a/openlp/plugins/images/lib/mediaitem.py
+++ b/openlp/plugins/images/lib/mediaitem.py
@@ -99,6 +99,8 @@ class ImageMediaItem(MediaManagerItem):
"""
Remove an image item from the list
"""
+ # Turn off auto preview triggers.
+ self.listView.blockSignals(True)
if check_item_selected(self.listView, translate('ImagePlugin.MediaItem',
'You must select an image to delete.')):
row_list = [item.row() for item in self.listView.selectedIndexes()]
@@ -111,6 +113,7 @@ class ImageMediaItem(MediaManagerItem):
self.listView.takeItem(row)
SettingsManager.set_list(self.settingsSection,
u'images', self.getFileList())
+ self.listView.blockSignals(False)
def loadList(self, images, initialLoad=False):
if not initialLoad:
@@ -139,7 +142,10 @@ class ImageMediaItem(MediaManagerItem):
if not initialLoad:
self.plugin.formparent.finishedProgressBar()
- def generateSlideData(self, service_item, item=None, xmlVersion=False):
+ def generateSlideData(self, service_item, item=None, xmlVersion=False,
+ remote=False):
+ background = QtGui.QColor(QtCore.QSettings().value(self.settingsSection
+ + u'/background color', QtCore.QVariant(u'#000000')))
if item:
items = [item]
else:
@@ -147,10 +153,10 @@ class ImageMediaItem(MediaManagerItem):
if not items:
return False
service_item.title = unicode(self.plugin.nameStrings[u'plural'])
- service_item.add_capability(ItemCapabilities.AllowsMaintain)
- service_item.add_capability(ItemCapabilities.AllowsPreview)
- service_item.add_capability(ItemCapabilities.AllowsLoop)
- service_item.add_capability(ItemCapabilities.AllowsAdditions)
+ service_item.add_capability(ItemCapabilities.CanMaintain)
+ service_item.add_capability(ItemCapabilities.CanPreview)
+ service_item.add_capability(ItemCapabilities.CanLoop)
+ service_item.add_capability(ItemCapabilities.CanAppend)
# force a nonexistent theme
service_item.theme = -1
missing_items = []
@@ -164,11 +170,12 @@ class ImageMediaItem(MediaManagerItem):
items.remove(item)
# We cannot continue, as all images do not exist.
if not items:
- critical_error_message_box(
- translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
- unicode(translate('ImagePlugin.MediaItem',
- 'The following image(s) no longer exist: %s')) %
- u'\n'.join(missing_items_filenames))
+ if not remote:
+ critical_error_message_box(
+ translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
+ unicode(translate('ImagePlugin.MediaItem',
+ 'The following image(s) no longer exist: %s')) %
+ u'\n'.join(missing_items_filenames))
return False
# We have missing as well as existing images. We ask what to do.
elif missing_items and QtGui.QMessageBox.question(self,
@@ -183,7 +190,7 @@ class ImageMediaItem(MediaManagerItem):
for bitem in items:
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
(path, name) = os.path.split(filename)
- service_item.add_from_image(filename, name)
+ service_item.add_from_image(filename, name, background)
return True
def onResetClick(self):
@@ -206,13 +213,16 @@ class ImageMediaItem(MediaManagerItem):
if check_item_selected(self.listView,
translate('ImagePlugin.MediaItem',
'You must select an image to replace the background with.')):
+ background = QtGui.QColor(QtCore.QSettings().value(
+ self.settingsSection + u'/background color',
+ QtCore.QVariant(u'#000000')))
item = self.listView.selectedIndexes()[0]
bitem = self.listView.item(item.row())
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
if os.path.exists(filename):
(path, name) = os.path.split(filename)
if self.plugin.liveController.display.directImage(name,
- filename):
+ filename, background):
self.resetAction.setVisible(True)
else:
critical_error_message_box(UiStrings().LiveBGError,
diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py
index e3c36bd77..f2e0bbc06 100644
--- a/openlp/plugins/media/lib/mediaitem.py
+++ b/openlp/plugins/media/lib/mediaitem.py
@@ -31,11 +31,11 @@ import os
import locale
from PyQt4 import QtCore, QtGui
+from PyQt4.phonon import Phonon
from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \
- SettingsManager, translate, check_item_selected, Receiver
+ SettingsManager, translate, check_item_selected, Receiver, MediaType
from openlp.core.lib.ui import UiStrings, critical_error_message_box
-from PyQt4.phonon import Phonon
log = logging.getLogger(__name__)
@@ -48,9 +48,9 @@ class MediaMediaItem(MediaManagerItem):
log.info(u'%s MediaMediaItem loaded', __name__)
def __init__(self, parent, plugin, icon):
- self.IconPath = u'images/image'
+ self.iconPath = u'images/image'
self.background = False
- self.PreviewFunction = CLAPPERBOARD
+ self.previewFunction = CLAPPERBOARD
MediaManagerItem.__init__(self, parent, plugin, icon)
self.singleServiceItem = False
self.hasSearch = True
@@ -129,18 +129,20 @@ class MediaMediaItem(MediaManagerItem):
'There was a problem replacing your background, '
'the media file "%s" no longer exists.')) % filename)
- def generateSlideData(self, service_item, item=None, xmlVersion=False):
+ def generateSlideData(self, service_item, item=None, xmlVersion=False,
+ remote=False):
if item is None:
item = self.listView.currentItem()
if item is None:
return False
filename = unicode(item.data(QtCore.Qt.UserRole).toString())
if not os.path.exists(filename):
- # File is no longer present
- critical_error_message_box(
- translate('MediaPlugin.MediaItem', 'Missing Media File'),
- unicode(translate('MediaPlugin.MediaItem',
- 'The file %s no longer exists.')) % filename)
+ if not remote:
+ # File is no longer present
+ critical_error_message_box(
+ translate('MediaPlugin.MediaItem', 'Missing Media File'),
+ unicode(translate('MediaPlugin.MediaItem',
+ 'The file %s no longer exists.')) % filename)
return False
self.mediaObject.stop()
self.mediaObject.clearQueue()
@@ -156,13 +158,16 @@ class MediaMediaItem(MediaManagerItem):
or self.mediaObject.currentSource().type() \
== Phonon.MediaSource.Invalid:
self.mediaObject.stop()
- critical_error_message_box(UiStrings().UnsupportedFile,
- UiStrings().UnsupportedFile)
+ critical_error_message_box(
+ translate('MediaPlugin.MediaItem', 'File Too Big'),
+ translate('MediaPlugin.MediaItem', 'The file you are '
+ 'trying to load is too big. Please reduce it to less '
+ 'than 50MiB.'))
return False
self.mediaObject.stop()
service_item.media_length = self.mediaObject.totalTime() / 1000
service_item.add_capability(
- ItemCapabilities.AllowsVariableStartTime)
+ ItemCapabilities.HasVariableStartTime)
service_item.title = unicode(self.plugin.nameStrings[u'singular'])
service_item.add_capability(ItemCapabilities.RequiresMedia)
# force a non-existent theme
@@ -217,6 +222,19 @@ class MediaMediaItem(MediaManagerItem):
item_name.setToolTip(track)
self.listView.addItem(item_name)
+ def getList(self, type=MediaType.Audio):
+ media = SettingsManager.load_list(self.settingsSection, u'media')
+ media.sort(cmp=locale.strcoll,
+ key=lambda filename: os.path.split(unicode(filename))[1].lower())
+ ext = []
+ if type == MediaType.Audio:
+ ext = self.plugin.audio_extensions_list
+ else:
+ ext = self.plugin.video_extensions_list
+ ext = map(lambda x: x[1:], ext)
+ media = filter(lambda x: os.path.splitext(x)[1] in ext, media)
+ return media
+
def createPhonon(self):
log.debug(u'CreatePhonon')
if not self.mediaObject:
diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py
index 85721c65d..6c997a6b6 100644
--- a/openlp/plugins/presentations/lib/mediaitem.py
+++ b/openlp/plugins/presentations/lib/mediaitem.py
@@ -233,7 +233,8 @@ class PresentationMediaItem(MediaManagerItem):
SettingsManager.set_list(self.settingsSection,
u'presentations', self.getFileList())
- def generateSlideData(self, service_item, item=None, xmlVersion=False):
+ def generateSlideData(self, service_item, item=None, xmlVersion=False,
+ remote=False):
"""
Load the relevant information for displaying the presentation
in the slidecontroller. In the case of powerpoints, an image
@@ -248,7 +249,7 @@ class PresentationMediaItem(MediaManagerItem):
service_item.title = unicode(self.displayTypeComboBox.currentText())
service_item.shortname = unicode(self.displayTypeComboBox.currentText())
service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
- service_item.add_capability(ItemCapabilities.AllowsDetailedTitleDisplay)
+ service_item.add_capability(ItemCapabilities.HasDetailedTitleDisplay)
shortname = service_item.shortname
if shortname:
for bitem in items:
@@ -275,12 +276,13 @@ class PresentationMediaItem(MediaManagerItem):
return True
else:
# File is no longer present
- critical_error_message_box(
- translate('PresentationPlugin.MediaItem',
- 'Missing Presentation'),
- unicode(translate('PresentationPlugin.MediaItem',
- 'The Presentation %s is incomplete,'
- ' please reload.')) % filename)
+ if not remote:
+ critical_error_message_box(
+ translate('PresentationPlugin.MediaItem',
+ 'Missing Presentation'),
+ unicode(translate('PresentationPlugin.MediaItem',
+ 'The Presentation %s is incomplete,'
+ ' please reload.')) % filename)
return False
else:
# File is no longer present
diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py
index 1545986f0..c81c83d92 100644
--- a/openlp/plugins/remotes/lib/httpserver.py
+++ b/openlp/plugins/remotes/lib/httpserver.py
@@ -528,7 +528,7 @@ class HttpConnection(object):
id = json.loads(self.url_params[u'data'][0])[u'request'][u'id']
plugin = self.parent.plugin.pluginManager.get_plugin_by_name(type)
if plugin.status == PluginStatus.Active and plugin.mediaItem:
- plugin.mediaItem.goLive(id)
+ plugin.mediaItem.goLive(id, remote=True)
def add_to_service(self, type):
"""
@@ -538,7 +538,7 @@ class HttpConnection(object):
plugin = self.parent.plugin.pluginManager.get_plugin_by_name(type)
if plugin.status == PluginStatus.Active and plugin.mediaItem:
item_id = plugin.mediaItem.createItemFromId(id)
- plugin.mediaItem.addToService(item_id)
+ plugin.mediaItem.addToService(item_id, remote=True)
def send_response(self, response):
http = u'HTTP/1.1 %s\r\n' % response.code
diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py
index 0c2434275..d82e3dea3 100644
--- a/openlp/plugins/songs/forms/__init__.py
+++ b/openlp/plugins/songs/forms/__init__.py
@@ -52,6 +52,7 @@ them separate from the functionality, so that it is easier to recreate the GUI
from the .ui files later if necessary.
"""
+from mediafilesform import MediaFilesForm
from authorsform import AuthorsForm
from topicsform import TopicsForm
from songbookform import SongBookForm
diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py
index 26c799c00..469716f6b 100644
--- a/openlp/plugins/songs/forms/editsongdialog.py
+++ b/openlp/plugins/songs/forms/editsongdialog.py
@@ -28,7 +28,8 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import build_icon, translate
-from openlp.core.lib.ui import UiStrings, create_accept_reject_button_box
+from openlp.core.lib.ui import UiStrings, create_accept_reject_button_box, \
+ create_up_down_push_button_set
from openlp.plugins.songs.lib.ui import SongStrings
class Ui_EditSongDialog(object):
@@ -36,9 +37,11 @@ class Ui_EditSongDialog(object):
editSongDialog.setObjectName(u'editSongDialog')
editSongDialog.resize(650, 400)
editSongDialog.setWindowIcon(
- build_icon(u':/icon/openlp.org-icon-32.bmp'))
+ build_icon(u':/icon/openlp-logo-16x16.png'))
editSongDialog.setModal(True)
self.dialogLayout = QtGui.QVBoxLayout(editSongDialog)
+ self.dialogLayout.setSpacing(8)
+ self.dialogLayout.setContentsMargins(8, 8, 8, 8)
self.dialogLayout.setObjectName(u'dialogLayout')
self.songTabWidget = QtGui.QTabWidget(editSongDialog)
self.songTabWidget.setObjectName(u'songTabWidget')
@@ -246,6 +249,36 @@ class Ui_EditSongDialog(object):
self.commentsLayout.addWidget(self.commentsEdit)
self.themeTabLayout.addWidget(self.commentsGroupBox)
self.songTabWidget.addTab(self.themeTab, u'')
+ # audio tab
+ self.audioTab = QtGui.QWidget()
+ self.audioTab.setObjectName(u'audioTab')
+ self.audioLayout = QtGui.QHBoxLayout(self.audioTab)
+ self.audioLayout.setObjectName(u'audioLayout')
+ self.audioListWidget = QtGui.QListWidget(self.audioTab)
+ self.audioListWidget.setObjectName(u'audioListWidget')
+ self.audioLayout.addWidget(self.audioListWidget)
+ self.audioButtonsLayout = QtGui.QVBoxLayout()
+ self.audioButtonsLayout.setObjectName(u'audioButtonsLayout')
+ self.audioAddFromFileButton = QtGui.QPushButton(self.audioTab)
+ self.audioAddFromFileButton.setObjectName(u'audioAddFromFileButton')
+ self.audioButtonsLayout.addWidget(self.audioAddFromFileButton)
+ self.audioAddFromMediaButton = QtGui.QPushButton(self.audioTab)
+ self.audioAddFromMediaButton.setObjectName(u'audioAddFromMediaButton')
+ self.audioButtonsLayout.addWidget(self.audioAddFromMediaButton)
+ self.audioRemoveButton = QtGui.QPushButton(self.audioTab)
+ self.audioRemoveButton.setObjectName(u'audioRemoveButton')
+ self.audioButtonsLayout.addWidget(self.audioRemoveButton)
+ self.audioRemoveAllButton = QtGui.QPushButton(self.audioTab)
+ self.audioRemoveAllButton.setObjectName(u'audioRemoveAllButton')
+ self.audioButtonsLayout.addWidget(self.audioRemoveAllButton)
+ self.audioButtonsLayout.addStretch(1)
+ self.upButton, self.downButton = \
+ create_up_down_push_button_set(self)
+ self.audioButtonsLayout.addWidget(self.upButton)
+ self.audioButtonsLayout.addWidget(self.downButton)
+ self.audioLayout.addLayout(self.audioButtonsLayout)
+ self.songTabWidget.addTab(self.audioTab, u'')
+ # Last few bits
self.dialogLayout.addWidget(self.songTabWidget)
self.buttonBox = create_accept_reject_button_box(editSongDialog)
self.dialogLayout.addWidget(self.buttonBox)
@@ -305,6 +338,17 @@ class Ui_EditSongDialog(object):
self.songTabWidget.indexOf(self.themeTab),
translate('SongsPlugin.EditSongForm',
'Theme, Copyright Info && Comments'))
+ self.songTabWidget.setTabText(
+ self.songTabWidget.indexOf(self.audioTab),
+ translate('SongsPlugin.EditSongForm', 'Linked Audio'))
+ self.audioAddFromFileButton.setText(
+ translate('SongsPlugin.EditSongForm', 'Add &File(s)'))
+ self.audioAddFromMediaButton.setText(
+ translate('SongsPlugin.EditSongForm', 'Add &Media'))
+ self.audioRemoveButton.setText(
+ translate('SongsPlugin.EditSongForm', '&Remove'))
+ self.audioRemoveAllButton.setText(
+ translate('SongsPlugin.EditSongForm', 'Remove &All'))
def editSongDialogComboBox(parent, name):
"""
diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py
index c7dbf85cf..146ef0422 100644
--- a/openlp/plugins/songs/forms/editsongform.py
+++ b/openlp/plugins/songs/forms/editsongform.py
@@ -27,15 +27,18 @@
import logging
import re
+import os
+import shutil
from PyQt4 import QtCore, QtGui
-from openlp.core.lib import Receiver, translate
+from openlp.core.lib import PluginStatus, Receiver, MediaType, translate
from openlp.core.lib.ui import UiStrings, add_widget_completer, \
critical_error_message_box, find_and_set_in_combo_box
-from openlp.plugins.songs.forms import EditVerseForm
+from openlp.core.utils import AppLocation
+from openlp.plugins.songs.forms import EditVerseForm, MediaFilesForm
from openlp.plugins.songs.lib import SongXML, VerseType, clean_song
-from openlp.plugins.songs.lib.db import Book, Song, Author, Topic
+from openlp.plugins.songs.lib.db import Book, Song, Author, Topic, MediaFile
from openlp.plugins.songs.lib.ui import SongStrings
from editsongdialog import Ui_EditSongDialog
@@ -93,6 +96,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.mediaitem.plugin.renderer.themeManager.onAddTheme)
QtCore.QObject.connect(self.maintenanceButton,
QtCore.SIGNAL(u'clicked()'), self.onMaintenanceButtonClicked)
+ QtCore.QObject.connect(self.audioAddFromFileButton,
+ QtCore.SIGNAL(u'clicked()'), self.onAudioAddFromFileButtonClicked)
+ QtCore.QObject.connect(self.audioAddFromMediaButton,
+ QtCore.SIGNAL(u'clicked()'), self.onAudioAddFromMediaButtonClicked)
+ QtCore.QObject.connect(self.audioRemoveButton,
+ QtCore.SIGNAL(u'clicked()'), self.onAudioRemoveButtonClicked)
+ QtCore.QObject.connect(self.audioRemoveAllButton,
+ QtCore.SIGNAL(u'clicked()'), self.onAudioRemoveAllButtonClicked)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'theme_update_list'), self.loadThemes)
self.previewButton = QtGui.QPushButton()
@@ -104,12 +115,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
QtCore.SIGNAL(u'clicked(QAbstractButton*)'), self.onPreview)
# Create other objects and forms
self.manager = manager
- self.verse_form = EditVerseForm(self)
+ self.verseForm = EditVerseForm(self)
+ self.mediaForm = MediaFilesForm(self)
self.initialise()
self.authorsListView.setSortingEnabled(False)
self.authorsListView.setAlternatingRowColors(True)
self.topicsListView.setSortingEnabled(False)
self.topicsListView.setAlternatingRowColors(True)
+ self.audioListWidget.setAlternatingRowColors(True)
self.findVerseSplit = re.compile(u'---\[\]---\n', re.UNICODE)
self.whitespace = re.compile(r'\W+', re.UNICODE)
@@ -161,6 +174,16 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.themes.append(theme)
add_widget_completer(self.themes, self.themeComboBox)
+ def loadMediaFiles(self):
+ self.audioAddFromMediaButton.setVisible(False)
+ for plugin in self.parent().pluginManager.plugins:
+ if plugin.name == u'media' and \
+ plugin.status == PluginStatus.Active:
+ self.audioAddFromMediaButton.setVisible(True)
+ self.mediaForm.populateFiles(
+ plugin.getMediaManagerItem().getList(MediaType.Audio))
+ break
+
def newSong(self):
log.debug(u'New Song')
self.song = None
@@ -176,11 +199,13 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.verseListWidget.setRowCount(0)
self.authorsListView.clear()
self.topicsListView.clear()
+ self.audioListWidget.clear()
self.titleEdit.setFocus(QtCore.Qt.OtherFocusReason)
self.songBookNumberEdit.setText(u'')
self.loadAuthors()
self.loadTopics()
self.loadBooks()
+ self.loadMediaFiles()
self.themeComboBox.setCurrentIndex(0)
# it's a new song to preview is not possible
self.previewButton.setVisible(False)
@@ -201,6 +226,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.loadAuthors()
self.loadTopics()
self.loadBooks()
+ self.loadMediaFiles()
self.song = self.manager.get_object(Song, id)
self.titleEdit.setText(self.song.title)
if self.song.alternate_title:
@@ -303,6 +329,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
topic_name = QtGui.QListWidgetItem(unicode(topic.name))
topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
self.topicsListView.addItem(topic_name)
+ self.audioListWidget.clear()
+ for media in self.song.media_files:
+ media_file = QtGui.QListWidgetItem(os.path.split(media.file_name)[1])
+ media_file.setData(QtCore.Qt.UserRole, QtCore.QVariant(media.file_name))
+ self.audioListWidget.addItem(media_file)
self.titleEdit.setFocus(QtCore.Qt.OtherFocusReason)
# Hide or show the preview button.
self.previewButton.setVisible(preview)
@@ -436,9 +467,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.verseDeleteButton.setEnabled(True)
def onVerseAddButtonClicked(self):
- self.verse_form.setVerse(u'', True)
- if self.verse_form.exec_():
- after_text, verse_tag, verse_num = self.verse_form.getVerse()
+ self.verseForm.setVerse(u'', True)
+ if self.verseForm.exec_():
+ after_text, verse_tag, verse_num = self.verseForm.getVerse()
verse_def = u'%s%s' % (verse_tag, verse_num)
item = QtGui.QTableWidgetItem(after_text)
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
@@ -454,20 +485,21 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
if item:
tempText = item.text()
verseId = unicode(item.data(QtCore.Qt.UserRole).toString())
- self.verse_form.setVerse(tempText, True, verseId)
- if self.verse_form.exec_():
- after_text, verse_tag, verse_num = self.verse_form.getVerse()
+ self.verseForm.setVerse(tempText, True, verseId)
+ if self.verseForm.exec_():
+ after_text, verse_tag, verse_num = self.verseForm.getVerse()
verse_def = u'%s%s' % (verse_tag, verse_num)
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
item.setText(after_text)
- # number of lines has change so repaint the list moving the data
+ # number of lines has changed, repaint the list moving the data
if len(tempText.split(u'\n')) != len(after_text.split(u'\n')):
tempList = {}
tempId = {}
for row in range(0, self.verseListWidget.rowCount()):
- tempList[row] = self.verseListWidget.item(row, 0).text()
- tempId[row] = self.verseListWidget.item(row, 0).\
- data(QtCore.Qt.UserRole)
+ tempList[row] = self.verseListWidget.item(row, 0)\
+ .text()
+ tempId[row] = self.verseListWidget.item(row, 0)\
+ .data(QtCore.Qt.UserRole)
self.verseListWidget.clear()
for row in range (0, len(tempList)):
item = QtGui.QTableWidgetItem(tempList[row], 0)
@@ -486,12 +518,12 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
verse_list += u'---[%s:%s]---\n' % (verse_tag, verse_num)
verse_list += item.text()
verse_list += u'\n'
- self.verse_form.setVerse(verse_list)
+ self.verseForm.setVerse(verse_list)
else:
- self.verse_form.setVerse(u'')
- if not self.verse_form.exec_():
+ self.verseForm.setVerse(u'')
+ if not self.verseForm.exec_():
return
- verse_list = self.verse_form.getVerseAll()
+ verse_list = self.verseForm.getVerseAll()
verse_list = unicode(verse_list.replace(u'\r\n', u'\n'))
self.verseListWidget.clear()
self.verseListWidget.setRowCount(0)
@@ -670,6 +702,66 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.saveSong(True)
Receiver.send_message(u'songs_preview')
+ def onAudioAddFromFileButtonClicked(self):
+ """
+ Loads file(s) from the filesystem.
+ """
+ filters = u'%s (*)' % UiStrings().AllFiles
+ filenames = QtGui.QFileDialog.getOpenFileNames(self,
+ translate('SongsPlugin.EditSongForm', 'Open File(s)'),
+ QtCore.QString(), filters)
+ for filename in filenames:
+ item = QtGui.QListWidgetItem(os.path.split(unicode(filename))[1])
+ item.setData(QtCore.Qt.UserRole, filename)
+ self.audioListWidget.addItem(item)
+
+ def onAudioAddFromMediaButtonClicked(self):
+ """
+ Loads file(s) from the media plugin.
+ """
+ if self.mediaForm.exec_():
+ for filename in self.mediaForm.getSelectedFiles():
+ item = QtGui.QListWidgetItem(os.path.split(unicode(filename))[1])
+ item.setData(QtCore.Qt.UserRole, filename)
+ self.audioListWidget.addItem(item)
+
+ def onAudioRemoveButtonClicked(self):
+ """
+ Removes a file from the list.
+ """
+ row = self.audioListWidget.currentRow()
+ if row == -1:
+ return
+ self.audioListWidget.takeItem(row)
+
+ def onAudioRemoveAllButtonClicked(self):
+ """
+ Removes all files from the list.
+ """
+ self.audioListWidget.clear()
+
+ def onUpButtonClicked(self):
+ """
+ Moves a file up when the user clicks the up button on the audio tab.
+ """
+ row = self.audioListWidget.currentRow()
+ if row <= 0:
+ return
+ item = self.audioListWidget.takeItem(row)
+ self.audioListWidget.insertItem(row - 1, item)
+ self.audioListWidget.setCurrentRow(row - 1)
+
+ def onDownButtonClicked(self):
+ """
+ Moves a file down when the user clicks the up button on the audio tab.
+ """
+ row = self.audioListWidget.currentRow()
+ if row == -1 or row > self.audioListWidget.count() - 1:
+ return
+ item = self.audioListWidget.takeItem(row)
+ self.audioListWidget.insertItem(row + 1, item)
+ self.audioListWidget.setCurrentRow(row + 1)
+
def clearCaches(self):
"""
Free up autocompletion memory on dialog exit
@@ -744,18 +836,55 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.song.theme_name = None
self._processLyrics()
self.song.authors = []
- for row in range(self.authorsListView.count()):
+ for row in xrange(self.authorsListView.count()):
item = self.authorsListView.item(row)
authorId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.song.authors.append(self.manager.get_object(Author, authorId))
self.song.topics = []
- for row in range(self.topicsListView.count()):
+ for row in xrange(self.topicsListView.count()):
item = self.topicsListView.item(row)
topicId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.song.topics.append(self.manager.get_object(Topic, topicId))
+ # Save the song here because we need a valid id for the audio files.
clean_song(self.manager, self.song)
self.manager.save_object(self.song)
- self.mediaitem.auto_select_id = self.song.id
+ audio_files = map(lambda a: a.file_name, self.song.media_files)
+ log.debug(audio_files)
+ save_path = os.path.join(
+ AppLocation.get_section_data_path(self.mediaitem.plugin.name),
+ 'audio', str(self.song.id))
+ if not os.path.exists(save_path):
+ os.makedirs(save_path)
+ self.song.media_files = []
+ files = []
+ for row in xrange(self.audioListWidget.count()):
+ item = self.audioListWidget.item(row)
+ filename = unicode(item.data(QtCore.Qt.UserRole).toString())
+ if not filename.startswith(save_path):
+ oldfile, filename = filename, os.path.join(save_path,
+ os.path.split(filename)[1])
+ shutil.copyfile(oldfile, filename)
+ files.append(filename)
+ media_file = MediaFile()
+ media_file.file_name = filename
+ media_file.type = u'audio'
+ media_file.weight = row
+ self.song.media_files.append(media_file)
+ for audio in audio_files:
+ if audio not in files:
+ try:
+ os.remove(audio)
+ except:
+ log.exception('Could not remove file: %s', audio)
+ pass
+ if not files:
+ try:
+ os.rmdir(save_path)
+ except OSError:
+ log.exception(u'Could not remove directory: %s', save_path)
+ clean_song(self.manager, self.song)
+ self.manager.save_object(self.song)
+ self.mediaitem.autoSelectId = self.song.id
def _processLyrics(self):
"""
@@ -783,3 +912,4 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
except:
log.exception(u'Problem processing song Lyrics \n%s',
sxml.dump_xml())
+
diff --git a/openlp/plugins/songs/forms/mediafilesdialog.py b/openlp/plugins/songs/forms/mediafilesdialog.py
new file mode 100644
index 000000000..252dac5ff
--- /dev/null
+++ b/openlp/plugins/songs/forms/mediafilesdialog.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+from PyQt4 import QtCore, QtGui
+
+from openlp.core.lib import translate, build_icon
+
+class Ui_MediaFilesDialog(object):
+ def setupUi(self, mediaFilesDialog):
+ mediaFilesDialog.setObjectName(u'mediaFilesDialog')
+ mediaFilesDialog.setWindowModality(QtCore.Qt.ApplicationModal)
+ mediaFilesDialog.resize(400, 300)
+ mediaFilesDialog.setModal(True)
+ mediaFilesDialog.setWindowIcon(
+ build_icon(u':/icon/openlp-logo-16x16.png'))
+ self.filesVerticalLayout = QtGui.QVBoxLayout(mediaFilesDialog)
+ self.filesVerticalLayout.setSpacing(8)
+ self.filesVerticalLayout.setMargin(8)
+ self.filesVerticalLayout.setObjectName(u'filesVerticalLayout')
+ self.selectLabel = QtGui.QLabel(mediaFilesDialog)
+ self.selectLabel.setWordWrap(True)
+ self.selectLabel.setObjectName(u'selectLabel')
+ self.filesVerticalLayout.addWidget(self.selectLabel)
+ self.fileListWidget = QtGui.QListWidget(mediaFilesDialog)
+ self.fileListWidget.setAlternatingRowColors(True)
+ self.fileListWidget.setSelectionMode(
+ QtGui.QAbstractItemView.ExtendedSelection)
+ self.fileListWidget.setObjectName(u'fileListWidget')
+ self.filesVerticalLayout.addWidget(self.fileListWidget)
+ self.buttonBox = QtGui.QDialogButtonBox(mediaFilesDialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(
+ QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName(u'buttonBox')
+ self.filesVerticalLayout.addWidget(self.buttonBox)
+
+ self.retranslateUi(mediaFilesDialog)
+ QtCore.QObject.connect(self.buttonBox,
+ QtCore.SIGNAL(u'accepted()'), mediaFilesDialog.accept)
+ QtCore.QObject.connect(self.buttonBox,
+ QtCore.SIGNAL(u'rejected()'), mediaFilesDialog.reject)
+ QtCore.QMetaObject.connectSlotsByName(mediaFilesDialog)
+
+ def retranslateUi(self, mediaFilesDialog):
+ mediaFilesDialog.setWindowTitle(
+ translate('SongsPlugin.MediaFilesForm', 'Select Media File(s)'))
+ self.selectLabel.setText(
+ translate('SongsPlugin.MediaFilesForm', u'Select one or more '
+ 'audio files from the list below, and click OK to import them '
+ 'into this song.'))
+
diff --git a/openlp/plugins/songs/forms/mediafilesform.py b/openlp/plugins/songs/forms/mediafilesform.py
new file mode 100644
index 000000000..34dac0390
--- /dev/null
+++ b/openlp/plugins/songs/forms/mediafilesform.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+import logging
+import os
+
+from PyQt4 import QtCore, QtGui
+
+from mediafilesdialog import Ui_MediaFilesDialog
+
+log = logging.getLogger(__name__)
+
+class MediaFilesForm(QtGui.QDialog, Ui_MediaFilesDialog):
+ """
+ Class to show a list of files from the
+ """
+ log.info(u'%s MediaFilesForm loaded', __name__)
+
+ def __init__(self, parent):
+ QtGui.QDialog.__init__(self)
+ self.setupUi(self)
+
+ def populateFiles(self, files):
+ self.fileListWidget.clear()
+ for file in files:
+ item = QtGui.QListWidgetItem(os.path.split(file)[1])
+ item.setData(QtCore.Qt.UserRole, file)
+ self.fileListWidget.addItem(item)
+
+ def getSelectedFiles(self):
+ return map(lambda x: unicode(x.data(QtCore.Qt.UserRole).toString()),
+ self.fileListWidget.selectedItems())
+
diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py
index 90c3b0275..22020a401 100644
--- a/openlp/plugins/songs/forms/songexportform.py
+++ b/openlp/plugins/songs/forms/songexportform.py
@@ -170,8 +170,8 @@ class SongExportForm(OpenLPWizard):
translate('OpenLP.Ui', 'Welcome to the Song Export Wizard'))
self.informationLabel.setText(
translate('SongsPlugin.ExportWizardForm', 'This wizard will help to'
- ' export your songs to the open and free OpenLyrics worship song '
- 'format.'))
+ ' export your songs to the open and free OpenLyrics'
+ ' worship song format.'))
self.availableSongsPage.setTitle(
translate('SongsPlugin.ExportWizardForm', 'Select Songs'))
self.availableSongsPage.setSubTitle(
@@ -285,7 +285,9 @@ class SongExportForm(OpenLPWizard):
self, songs, unicode(self.directoryLineEdit.text()))
if exporter.do_export():
self.progressLabel.setText(
- translate('SongsPlugin.SongExportForm', 'Finished export.'))
+ translate('SongsPlugin.SongExportForm', 'Finished export. To '
+ 'import these files use the OpenLyrics '
+ 'importer.'))
else:
self.progressLabel.setText(
translate('SongsPlugin.SongExportForm',
diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py
index 52524b838..6f09c9b8c 100644
--- a/openlp/plugins/songs/forms/songimportform.py
+++ b/openlp/plugins/songs/forms/songimportform.py
@@ -686,7 +686,7 @@ class SongImportForm(OpenLPWizard):
def performWizard(self):
"""
Perform the actual import. This method pulls in the correct importer
- class, and then runs the ``do_import`` method of the importer to do
+ class, and then runs the ``doImport`` method of the importer to do
the actual importing.
"""
source_format = self.formatComboBox.currentIndex()
@@ -759,8 +759,8 @@ class SongImportForm(OpenLPWizard):
importer = self.plugin.importSongs(SongFormat.FoilPresenter,
filenames=self.getListOfFiles(self.foilPresenterFileListWidget)
)
- importer.do_import()
- if importer.error_log:
+ importer.doImport()
+ if importer.errorLog:
self.progressLabel.setText(translate(
'SongsPlugin.SongImportForm', 'Your song import failed.'))
else:
diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py
index e2996ff8f..1b0ca316e 100644
--- a/openlp/plugins/songs/lib/__init__.py
+++ b/openlp/plugins/songs/lib/__init__.py
@@ -184,10 +184,11 @@ class VerseType(object):
verse_index = VerseType.from_translated_string(verse_name)
if verse_index is None:
verse_index = VerseType.from_string(verse_name)
- if verse_index is None:
- verse_index = VerseType.from_translated_tag(verse_name)
- if verse_index is None:
- verse_index = VerseType.from_tag(verse_name)
+ elif len(verse_name) == 1:
+ if verse_index is None:
+ verse_index = VerseType.from_translated_tag(verse_name)
+ if verse_index is None:
+ verse_index = VerseType.from_tag(verse_name)
return verse_index
def retrieve_windows_encoding(recommendation=None):
diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py
index 0ce9488c2..e15f898ab 100644
--- a/openlp/plugins/songs/lib/cclifileimport.py
+++ b/openlp/plugins/songs/lib/cclifileimport.py
@@ -55,13 +55,13 @@ class CCLIFileImport(SongImport):
"""
SongImport.__init__(self, manager, **kwargs)
- def do_import(self):
+ def doImport(self):
"""
Import either a ``.usr`` or a ``.txt`` SongSelect file.
"""
log.debug(u'Starting CCLI File Import')
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
- for filename in self.import_source:
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
+ for filename in self.importSource:
filename = unicode(filename)
log.debug(u'Importing CCLI File: %s', filename)
lines = []
@@ -80,23 +80,23 @@ class CCLIFileImport(SongImport):
ext = os.path.splitext(filename)[1]
if ext.lower() == u'.usr':
log.info(u'SongSelect .usr format file found: %s', filename)
- if not self.do_import_usr_file(lines):
- self.log_error(filename)
+ if not self.doImportUsrFile(lines):
+ self.logError(filename)
elif ext.lower() == u'.txt':
log.info(u'SongSelect .txt format file found: %s', filename)
- if not self.do_import_txt_file(lines):
- self.log_error(filename)
+ if not self.doImportTxtFile(lines):
+ self.logError(filename)
else:
- self.log_error(filename,
+ self.logError(filename,
translate('SongsPlugin.CCLIFileImport',
'The file does not have a valid extension.'))
log.info(u'Extension %s is not valid', filename)
- if self.stop_import_flag:
+ if self.stopImportFlag:
return
- def do_import_usr_file(self, textList):
+ def doImportUsrFile(self, textList):
"""
- The :func:`do_import_usr_file` method provides OpenLP with the ability
+ The :func:`doImport_usr_file` method provides OpenLP with the ability
to import CCLI SongSelect songs in *USR* file format.
``textList``
@@ -165,7 +165,7 @@ class CCLIFileImport(SongImport):
elif line.startswith(u'Themes='):
song_topics = line[7:].strip()
elif line.startswith(u'[S A'):
- self.ccli_number = line[4:-3].strip()
+ self.ccliNumber = line[4:-3].strip()
elif line.startswith(u'Fields='):
# Fields contain single line indicating verse, chorus, etc,
# /t delimited, same as with words field. store seperately
@@ -204,7 +204,7 @@ class CCLIFileImport(SongImport):
verse_type = VerseType.Tags[VerseType.Other]
verse_text = verse_lines[1]
if len(verse_text) > 0:
- self.add_verse(verse_text, verse_type)
+ self.addVerse(verse_text, verse_type)
check_first_verse_line = False
# Handle multiple authors
author_list = song_author.split(u'/')
@@ -213,15 +213,15 @@ class CCLIFileImport(SongImport):
for author in author_list:
separated = author.split(u',')
if len(separated) > 1:
- self.add_author(u' '.join(reversed(separated)))
+ self.addAuthor(u' '.join(reversed(separated)))
else:
- self.add_author(author)
+ self.addAuthor(author)
self.topics = [topic.strip() for topic in song_topics.split(u'/t')]
return self.finish()
- def do_import_txt_file(self, textList):
+ def doImportTxtFile(self, textList):
"""
- The :func:`do_import_txt_file` method provides OpenLP with the ability
+ The :func:`doImport_txt_file` method provides OpenLP with the ability
to import CCLI SongSelect songs in *TXT* file format.
``textList``
@@ -264,7 +264,7 @@ class CCLIFileImport(SongImport):
continue
elif verse_start:
if verse_text:
- self.add_verse(verse_text, verse_type)
+ self.addVerse(verse_text, verse_type)
verse_text = u''
verse_start = False
else:
@@ -278,7 +278,7 @@ class CCLIFileImport(SongImport):
if clean_line.startswith(u'CCLI'):
line_number += 1
ccli_parts = clean_line.split(' ')
- self.ccli_number = ccli_parts[len(ccli_parts) - 1]
+ self.ccliNumber = ccli_parts[len(ccli_parts) - 1]
elif not verse_start:
# We have the verse descriptor
verse_desc_parts = clean_line.split(u' ')
@@ -333,5 +333,5 @@ class CCLIFileImport(SongImport):
if len(author_list) < 2:
author_list = song_author.split(u'|')
# Clean spaces before and after author names.
- [self.add_author(author_name.strip()) for author_name in author_list]
+ [self.addAuthor(author_name.strip()) for author_name in author_list]
return self.finish()
diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py
index c5c019c3c..37ee42451 100644
--- a/openlp/plugins/songs/lib/db.py
+++ b/openlp/plugins/songs/lib/db.py
@@ -31,6 +31,7 @@ the Songs plugin
from sqlalchemy import Column, ForeignKey, Table, types
from sqlalchemy.orm import mapper, relation
+from sqlalchemy.sql.expression import func
from openlp.core.lib.db import BaseModel, init_db
@@ -70,7 +71,6 @@ class Topic(BaseModel):
"""
pass
-
def init_schema(url):
"""
Setup the songs database connection and initialise the database schema.
@@ -111,10 +111,6 @@ def init_schema(url):
* file_name
* type
- **media_files_songs Table**
- * media_file_id
- * song_id
-
**song_books Table**
The *song_books* table holds a list of books that a congregation gets
their songs from, or old hymnals now no longer used. This table has the
@@ -162,7 +158,7 @@ def init_schema(url):
# Definition of the "authors" table
authors_table = Table(u'authors', metadata,
- Column(u'id', types.Integer, primary_key=True),
+ Column(u'id', types.Integer(), primary_key=True),
Column(u'first_name', types.Unicode(128)),
Column(u'last_name', types.Unicode(128)),
Column(u'display_name', types.Unicode(255), index=True, nullable=False)
@@ -170,22 +166,25 @@ def init_schema(url):
# Definition of the "media_files" table
media_files_table = Table(u'media_files', metadata,
- Column(u'id', types.Integer, primary_key=True),
+ Column(u'id', types.Integer(), primary_key=True),
+ Column(u'song_id', types.Integer(), ForeignKey(u'songs.id'),
+ default=None),
Column(u'file_name', types.Unicode(255), nullable=False),
- Column(u'type', types.Unicode(64), nullable=False, default=u'audio')
+ Column(u'type', types.Unicode(64), nullable=False, default=u'audio'),
+ Column(u'weight', types.Integer(), default=0)
)
# Definition of the "song_books" table
song_books_table = Table(u'song_books', metadata,
- Column(u'id', types.Integer, primary_key=True),
+ Column(u'id', types.Integer(), primary_key=True),
Column(u'name', types.Unicode(128), nullable=False),
Column(u'publisher', types.Unicode(128))
)
# Definition of the "songs" table
songs_table = Table(u'songs', metadata,
- Column(u'id', types.Integer, primary_key=True),
- Column(u'song_book_id', types.Integer,
+ Column(u'id', types.Integer(), primary_key=True),
+ Column(u'song_book_id', types.Integer(),
ForeignKey(u'song_books.id'), default=None),
Column(u'title', types.Unicode(255), nullable=False),
Column(u'alternate_title', types.Unicode(255)),
@@ -197,36 +196,31 @@ def init_schema(url):
Column(u'song_number', types.Unicode(64)),
Column(u'theme_name', types.Unicode(128)),
Column(u'search_title', types.Unicode(255), index=True, nullable=False),
- Column(u'search_lyrics', types.UnicodeText, nullable=False)
+ Column(u'search_lyrics', types.UnicodeText, nullable=False),
+ Column(u'create_date', types.DateTime(), default=func.now()),
+ Column(u'last_modified', types.DateTime(), default=func.now(),
+ onupdate=func.now())
)
# Definition of the "topics" table
topics_table = Table(u'topics', metadata,
- Column(u'id', types.Integer, primary_key=True),
+ Column(u'id', types.Integer(), primary_key=True),
Column(u'name', types.Unicode(128), index=True, nullable=False)
)
# Definition of the "authors_songs" table
authors_songs_table = Table(u'authors_songs', metadata,
- Column(u'author_id', types.Integer,
+ Column(u'author_id', types.Integer(),
ForeignKey(u'authors.id'), primary_key=True),
- Column(u'song_id', types.Integer,
- ForeignKey(u'songs.id'), primary_key=True)
- )
-
- # Definition of the "media_files_songs" table
- media_files_songs_table = Table(u'media_files_songs', metadata,
- Column(u'media_file_id', types.Integer,
- ForeignKey(u'media_files.id'), primary_key=True),
- Column(u'song_id', types.Integer,
+ Column(u'song_id', types.Integer(),
ForeignKey(u'songs.id'), primary_key=True)
)
# Definition of the "songs_topics" table
songs_topics_table = Table(u'songs_topics', metadata,
- Column(u'song_id', types.Integer,
+ Column(u'song_id', types.Integer(),
ForeignKey(u'songs.id'), primary_key=True),
- Column(u'topic_id', types.Integer,
+ Column(u'topic_id', types.Integer(),
ForeignKey(u'topics.id'), primary_key=True)
)
@@ -239,7 +233,7 @@ def init_schema(url):
secondary=authors_songs_table, lazy=False),
'book': relation(Book, backref='songs'),
'media_files': relation(MediaFile, backref='songs',
- secondary=media_files_songs_table),
+ order_by=media_files_table.c.weight),
'topics': relation(Topic, backref='songs',
secondary=songs_topics_table)
})
diff --git a/openlp/plugins/songs/lib/easislidesimport.py b/openlp/plugins/songs/lib/easislidesimport.py
index b24287130..6d3bde025 100644
--- a/openlp/plugins/songs/lib/easislidesimport.py
+++ b/openlp/plugins/songs/lib/easislidesimport.py
@@ -49,50 +49,50 @@ class EasiSlidesImport(SongImport):
SongImport.__init__(self, manager, **kwargs)
self.commit = True
- def do_import(self):
+ def doImport(self):
"""
- Import either each of the files in self.import_sources - each element of
+ Import either each of the files in self.importSources - each element of
which can be either a single opensong file, or a zipfile containing
multiple opensong files. If `self.commit` is set False, the
import will not be committed to the database (useful for test scripts).
"""
- log.info(u'Importing EasiSlides XML file %s', self.import_source)
+ log.info(u'Importing EasiSlides XML file %s', self.importSource)
parser = etree.XMLParser(remove_blank_text=True)
- parsed_file = etree.parse(self.import_source, parser)
+ parsed_file = etree.parse(self.importSource, parser)
xml = unicode(etree.tostring(parsed_file))
song_xml = objectify.fromstring(xml)
- self.import_wizard.progressBar.setMaximum(len(song_xml.Item))
+ self.importWizard.progressBar.setMaximum(len(song_xml.Item))
for song in song_xml.Item:
- if self.stop_import_flag:
+ if self.stopImportFlag:
return
- self._parse_song(song)
+ self._parseSong(song)
- def _parse_song(self, song):
+ def _parseSong(self, song):
self._success = True
- self._add_unicode_attribute(u'title', song.Title1, True)
+ self._addUnicodeAttribute(u'title', song.Title1, True)
if hasattr(song, u'Title2'):
- self._add_unicode_attribute(u'alternate_title', song.Title2)
+ self._addUnicodeAttribute(u'alternateTitle', song.Title2)
if hasattr(song, u'SongNumber'):
- self._add_unicode_attribute(u'song_number', song.SongNumber)
- if self.song_number == u'0':
- self.song_number = u''
- self._add_authors(song)
+ self._addUnicodeAttribute(u'songNumber', song.SongNumber)
+ if self.songNumber == u'0':
+ self.songNumber = u''
+ self._addAuthors(song)
if hasattr(song, u'Copyright'):
- self._add_copyright(song.Copyright)
+ self._addCopyright(song.Copyright)
if hasattr(song, u'LicenceAdmin1'):
- self._add_copyright(song.LicenceAdmin1)
+ self._addCopyright(song.LicenceAdmin1)
if hasattr(song, u'LicenceAdmin2'):
- self._add_copyright(song.LicenceAdmin2)
+ self._addCopyright(song.LicenceAdmin2)
if hasattr(song, u'BookReference'):
- self._add_unicode_attribute(u'song_book_name', song.BookReference)
- self._parse_and_add_lyrics(song)
+ self._addUnicodeAttribute(u'songBookName', song.BookReference)
+ self._parseAndAddLyrics(song)
if self._success:
if not self.finish():
- self.log_error(song.Title1 if song.Title1 else u'')
+ self.logError(song.Title1 if song.Title1 else u'')
else:
- self.set_defaults()
+ self.setDefaults()
- def _add_unicode_attribute(self, self_attribute, import_attribute,
+ def _addUnicodeAttribute(self, self_attribute, import_attribute,
mandatory=False):
"""
Add imported values to the song model converting them to unicode at the
@@ -119,7 +119,7 @@ class EasiSlidesImport(SongImport):
if mandatory:
self._success = False
- def _add_authors(self, song):
+ def _addAuthors(self, song):
try:
authors = unicode(song.Writer).split(u',')
self.authors = \
@@ -130,7 +130,7 @@ class EasiSlidesImport(SongImport):
except AttributeError:
pass
- def _add_copyright(self, element):
+ def _addCopyright(self, element):
"""
Add a piece of copyright to the total copyright information for the
song.
@@ -139,14 +139,14 @@ class EasiSlidesImport(SongImport):
The imported variable to get the data from.
"""
try:
- self.add_copyright(unicode(element).strip())
+ self.addCopyright(unicode(element).strip())
except UnicodeDecodeError:
log.exception(u'Unicode error on decoding copyright: %s' % element)
self._success = False
except AttributeError:
pass
- def _parse_and_add_lyrics(self, song):
+ def _parseAndAddLyrics(self, song):
try:
lyrics = unicode(song.Contents).strip()
except UnicodeDecodeError:
@@ -295,7 +295,7 @@ class EasiSlidesImport(SongImport):
else:
continue
if tag in versetags:
- self.verse_order_list.append(tag)
+ self.verseOrderList.append(tag)
else:
log.info(u'Got order item %s, which is not in versetags,'
u'dropping item from presentation order', tag)
diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py
index 820cf595a..e89fbc4a0 100644
--- a/openlp/plugins/songs/lib/ewimport.py
+++ b/openlp/plugins/songs/lib/ewimport.py
@@ -49,15 +49,15 @@ def strip_rtf(blob, encoding):
control = False
clear_text = []
control_word = []
-
- # workaround for \tx bug: remove one pair of curly braces
+
+ # workaround for \tx bug: remove one pair of curly braces
# if \tx is encountered
match = RTF_STRIPPING_REGEX.search(blob)
if match:
# start and end indices of match are curly braces - filter them out
- blob = ''.join([blob[i] for i in xrange(len(blob))
+ blob = ''.join([blob[i] for i in xrange(len(blob))
if i != match.start() and i !=match.end()])
-
+
for c in blob:
if control:
# for delimiters, set control to False
@@ -155,24 +155,24 @@ class EasyWorshipSongImport(SongImport):
def __init__(self, manager, **kwargs):
SongImport.__init__(self, manager, **kwargs)
- def do_import(self):
+ def doImport(self):
# Open the DB and MB files if they exist
- import_source_mb = self.import_source.replace('.DB', '.MB')
- if not os.path.isfile(self.import_source):
+ import_source_mb = self.importSource.replace('.DB', '.MB')
+ if not os.path.isfile(self.importSource):
return
if not os.path.isfile(import_source_mb):
return
- db_size = os.path.getsize(self.import_source)
+ db_size = os.path.getsize(self.importSource)
if db_size < 0x800:
return
- db_file = open(self.import_source, 'rb')
- self.memo_file = open(import_source_mb, 'rb')
+ db_file = open(self.importSource, 'rb')
+ self.memoFile = open(import_source_mb, 'rb')
# Don't accept files that are clearly not paradox files
record_size, header_size, block_size, first_block, num_fields \
= struct.unpack(' 4:
db_file.close()
- self.memo_file.close()
+ self.memoFile.close()
return
# Take a stab at how text is encoded
self.encoding = u'cp1252'
@@ -204,7 +204,7 @@ class EasyWorshipSongImport(SongImport):
# There does not appear to be a _reliable_ way of getting the number
# of songs/records, so let's use file blocks for measuring progress.
total_blocks = (db_size - header_size) / (block_size * 1024)
- self.import_wizard.progressBar.setMaximum(total_blocks)
+ self.importWizard.progressBar.setMaximum(total_blocks)
# Read the field description information
db_file.seek(120)
field_info = db_file.read(num_fields * 2)
@@ -218,16 +218,16 @@ class EasyWorshipSongImport(SongImport):
field_info, i * 2)
field_descs.append(FieldDescEntry(field_name, field_type,
field_size))
- self.set_record_struct(field_descs)
+ self.setRecordStruct(field_descs)
# Pick out the field description indexes we will need
try:
success = True
- fi_title = self.find_field(u'Title')
- fi_author = self.find_field(u'Author')
- fi_copy = self.find_field(u'Copyright')
- fi_admin = self.find_field(u'Administrator')
- fi_words = self.find_field(u'Words')
- fi_ccli = self.find_field(u'Song Number')
+ fi_title = self.findField(u'Title')
+ fi_author = self.findField(u'Author')
+ fi_copy = self.findField(u'Copyright')
+ fi_admin = self.findField(u'Administrator')
+ fi_words = self.findField(u'Words')
+ fi_ccli = self.findField(u'Song Number')
except IndexError:
# This is the wrong table
success = False
@@ -239,18 +239,18 @@ class EasyWorshipSongImport(SongImport):
rec_count = (rec_count + record_size) / record_size
# Loop through each record within the current block
for i in range(rec_count):
- if self.stop_import_flag:
+ if self.stopImportFlag:
break
raw_record = db_file.read(record_size)
self.fields = self.record_struct.unpack(raw_record)
- self.set_defaults()
- self.title = self.get_field(fi_title)
+ self.setDefaults()
+ self.title = self.getField(fi_title)
# Get remaining fields.
- copy = self.get_field(fi_copy)
- admin = self.get_field(fi_admin)
- ccli = self.get_field(fi_ccli)
- authors = self.get_field(fi_author)
- words = self.get_field(fi_words)
+ copy = self.getField(fi_copy)
+ admin = self.getField(fi_admin)
+ ccli = self.getField(fi_ccli)
+ authors = self.getField(fi_author)
+ words = self.getField(fi_words)
# Set the SongImport object members.
if copy:
self.copyright = copy
@@ -261,7 +261,7 @@ class EasyWorshipSongImport(SongImport):
unicode(translate('SongsPlugin.EasyWorshipSongImport',
'Administered by %s')) % admin
if ccli:
- self.ccli_number = ccli
+ self.ccliNumber = ccli
if authors:
# Split up the authors
author_list = authors.split(u'/')
@@ -270,7 +270,7 @@ class EasyWorshipSongImport(SongImport):
if len(author_list) < 2:
author_list = authors.split(u',')
for author_name in author_list:
- self.add_author(author_name.strip())
+ self.addAuthor(author_name.strip())
if words:
# Format the lyrics
words = strip_rtf(words, self.encoding)
@@ -281,9 +281,9 @@ class EasyWorshipSongImport(SongImport):
continue
verse_split = verse.split(u'\n', 1)
first_line_is_tag = False
- # EW tags: verse, chorus, pre-chorus, bridge, tag,
+ # EW tags: verse, chorus, pre-chorus, bridge, tag,
# intro, ending, slide
- for type in VerseType.Names+[u'tag', u'slide']:
+ for type in VerseType.Names+[u'tag', u'slide']:
type = type.lower()
ew_tag = verse_split[0].strip().lower()
if ew_tag.startswith(type):
@@ -293,7 +293,7 @@ class EasyWorshipSongImport(SongImport):
first_line_is_tag = True
number_found = False
# check if tag is followed by number and/or note
- if len(ew_tag) > len(type):
+ if len(ew_tag) > len(type):
match = NUMBER_REGEX.search(ew_tag)
if match:
number = match.group()
@@ -305,23 +305,24 @@ class EasyWorshipSongImport(SongImport):
if not number_found:
verse_type += u'1'
break
- self.add_verse(
- verse_split[-1].strip() if first_line_is_tag else verse,
+ self.addVerse(
+ verse_split[-1].strip() \
+ if first_line_is_tag else verse,
verse_type)
if len(self.comments) > 5:
self.comments += unicode(
translate('SongsPlugin.EasyWorshipSongImport',
'\n[above are Song Tags with notes imported from \
EasyWorship]'))
- if self.stop_import_flag:
+ if self.stopImportFlag:
break
if not self.finish():
- self.log_error(self.import_source)
+ self.logError(self.importSource)
db_file.close()
- self.memo_file.close()
+ self.memoFile.close()
def find_field(self, field_name):
- return [i for i, x in enumerate(self.field_descs)
+ return [i for i, x in enumerate(self.fieldDescs)
if x.name == field_name][0]
def set_record_struct(self, field_descs):
@@ -351,12 +352,12 @@ class EasyWorshipSongImport(SongImport):
fsl.append('Q')
else:
fsl.append('%ds' % field_desc.size)
- self.record_struct = struct.Struct(''.join(fsl))
- self.field_descs = field_descs
+ self.recordStruct = struct.Struct(''.join(fsl))
+ self.fieldDescs = field_descs
def get_field(self, field_desc_index):
field = self.fields[field_desc_index]
- field_desc = self.field_descs[field_desc_index]
+ field_desc = self.fieldDescs[field_desc_index]
# Return None in case of 'blank' entries
if isinstance(field, str):
if len(field.rstrip('\0')) == 0:
@@ -382,18 +383,18 @@ class EasyWorshipSongImport(SongImport):
struct.unpack_from(' 63:
return u''
- self.memo_file.seek(11 + (5 * sub_block), os.SEEK_CUR)
- sub_block_start, = struct.unpack('B', self.memo_file.read(1))
- self.memo_file.seek(block_start + (sub_block_start * 16))
+ self.memoFile.seek(11 + (5 * sub_block), os.SEEK_CUR)
+ sub_block_start, = struct.unpack('B', self.memoFile.read(1))
+ self.memoFile.seek(block_start + (sub_block_start * 16))
else:
return u''
- return self.memo_file.read(blob_size)
+ return self.memoFile.read(blob_size)
else:
return 0
diff --git a/openlp/plugins/songs/lib/foilpresenterimport.py b/openlp/plugins/songs/lib/foilpresenterimport.py
index 4d3aa0982..90ffde8a0 100644
--- a/openlp/plugins/songs/lib/foilpresenterimport.py
+++ b/openlp/plugins/songs/lib/foilpresenterimport.py
@@ -115,23 +115,23 @@ class FoilPresenterImport(SongImport):
SongImport.__init__(self, manager, **kwargs)
self.FoilPresenter = FoilPresenter(self.manager)
- def do_import(self):
+ def doImport(self):
"""
Imports the songs.
"""
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
parser = etree.XMLParser(remove_blank_text=True)
- for file_path in self.import_source:
- if self.stop_import_flag:
+ for file_path in self.importSource:
+ if self.stopImportFlag:
return
- self.import_wizard.incrementProgressBar(
+ self.importWizard.incrementProgressBar(
WizardStrings.ImportingType % os.path.basename(file_path))
try:
parsed_file = etree.parse(file_path, parser)
xml = unicode(etree.tostring(parsed_file))
self.FoilPresenter.xml_to_song(xml)
except etree.XMLSyntaxError:
- self.log_error(file_path, SongStrings.XMLSyntaxError)
+ self.logError(file_path, SongStrings.XMLSyntaxError)
log.exception(u'XML syntax error in file %s' % file_path)
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index a2814a1df..7d5e85af5 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -28,6 +28,8 @@
import logging
import locale
import re
+import os
+import shutil
from PyQt4 import QtCore, QtGui
from sqlalchemy.sql import or_
@@ -37,11 +39,12 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
from openlp.core.lib.searchedit import SearchEdit
from openlp.core.lib.ui import UiStrings, context_menu_action, \
context_menu_separator
+from openlp.core.utils import AppLocation
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
SongImportForm, SongExportForm
from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType, \
clean_string
-from openlp.plugins.songs.lib.db import Author, Song
+from openlp.plugins.songs.lib.db import Author, Song, MediaFile
from openlp.plugins.songs.lib.ui import SongStrings
log = logging.getLogger(__name__)
@@ -66,11 +69,11 @@ class SongMediaItem(MediaManagerItem):
def __init__(self, parent, plugin, icon):
self.IconPath = u'songs/song'
MediaManagerItem.__init__(self, parent, plugin, icon)
- self.edit_song_form = EditSongForm(self, self.plugin.formparent,
+ self.editSongForm = EditSongForm(self, self.plugin.formparent,
self.plugin.manager)
self.openLyrics = OpenLyrics(self.plugin.manager)
self.singleServiceItem = False
- self.song_maintenance_form = SongMaintenanceForm(
+ self.songMaintenanceForm = SongMaintenanceForm(
self.plugin.manager, self)
# Holds information about whether the edit is remotly triggered and
# which Song is required.
@@ -79,6 +82,22 @@ class SongMediaItem(MediaManagerItem):
self.quickPreviewAllowed = True
self.hasSearch = True
+ def _updateBackgroundAudio(self, song, item):
+ song.media_files = []
+ for i, bga in enumerate(item.background_audio):
+ dest_file = os.path.join(
+ AppLocation.get_section_data_path(self.plugin.name),
+ u'audio', str(song.id), os.path.split(bga)[1])
+ if not os.path.exists(os.path.split(dest_file)[0]):
+ os.makedirs(os.path.split(dest_file)[0])
+ shutil.copyfile(os.path.join(
+ AppLocation.get_section_data_path(
+ u'servicemanager'), bga),
+ dest_file)
+ song.media_files.append(MediaFile.populate(
+ weight=i, file_name=dest_file))
+ self.plugin.manager.save_object(song, True)
+
def addEndHeaderBar(self):
self.addToolbarSeparator()
## Song Maintenance Button ##
@@ -210,7 +229,7 @@ class SongMediaItem(MediaManagerItem):
search_results = self.plugin.manager.get_all_objects(Song,
Song.theme_name.like(u'%' + search_keywords + u'%'))
self.displayResultsSong(search_results)
- self.check_search_result()
+ self.checkSearchResult()
def searchEntire(self, search_keywords):
return self.plugin.manager.get_all_objects(Song,
@@ -244,7 +263,7 @@ class SongMediaItem(MediaManagerItem):
def displayResultsSong(self, searchresults):
log.debug(u'display results Song')
- self.save_auto_select_id()
+ self.saveAutoSelectId()
self.listView.clear()
# Sort the songs by its title considering language specific characters.
# lower() is needed for windows!
@@ -258,9 +277,9 @@ class SongMediaItem(MediaManagerItem):
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
self.listView.addItem(song_name)
# Auto-select the item if name has been set
- if song.id == self.auto_select_id:
+ if song.id == self.autoSelectId:
self.listView.setCurrentItem(song_name)
- self.auto_select_id = -1
+ self.autoSelectId = -1
def displayResultsAuthor(self, searchresults):
log.debug(u'display results Author')
@@ -297,25 +316,26 @@ class SongMediaItem(MediaManagerItem):
self.onClearTextButtonClick()
def onImportClick(self):
- if not hasattr(self, u'import_wizard'):
- self.import_wizard = SongImportForm(self, self.plugin)
- if self.import_wizard.exec_() == QtGui.QDialog.Accepted:
+ if not hasattr(self, u'importWizard'):
+ self.importWizard = SongImportForm(self, self.plugin)
+ if self.importWizard.exec_() == QtGui.QDialog.Accepted:
Receiver.send_message(u'songs_load_list')
def onExportClick(self):
- export_wizard = SongExportForm(self, self.plugin)
- export_wizard.exec_()
+ if not hasattr(self, u'exportWizard'):
+ self.exportWizard = SongExportForm(self, self.plugin)
+ self.exportWizard.exec_()
def onNewClick(self):
log.debug(u'onNewClick')
- self.edit_song_form.newSong()
- self.edit_song_form.exec_()
+ self.editSongForm.newSong()
+ self.editSongForm.exec_()
self.onClearTextButtonClick()
self.onSelectionChange()
- self.auto_select_id = -1
+ self.autoSelectId = -1
def onSongMaintenanceClick(self):
- self.song_maintenance_form.exec_()
+ self.songMaintenanceForm.exec_()
def onRemoteEditClear(self):
log.debug(u'onRemoteEditClear')
@@ -335,9 +355,9 @@ class SongMediaItem(MediaManagerItem):
if valid:
self.remoteSong = song_id
self.remoteTriggered = remote_type
- self.edit_song_form.loadSong(song_id, (remote_type == u'P'))
- self.edit_song_form.exec_()
- self.auto_select_id = -1
+ self.editSongForm.loadSong(song_id, remote_type == u'P')
+ self.editSongForm.exec_()
+ self.autoSelectId = -1
self.onSongListLoad()
def onEditClick(self):
@@ -348,9 +368,9 @@ class SongMediaItem(MediaManagerItem):
if check_item_selected(self.listView, UiStrings().SelectEdit):
self.editItem = self.listView.currentItem()
item_id = (self.editItem.data(QtCore.Qt.UserRole)).toInt()[0]
- self.edit_song_form.loadSong(item_id, False)
- self.edit_song_form.exec_()
- self.auto_select_id = -1
+ self.editSongForm.loadSong(item_id, False)
+ self.editSongForm.exec_()
+ self.autoSelectId = -1
self.onSongListLoad()
self.editItem = None
@@ -371,6 +391,20 @@ class SongMediaItem(MediaManagerItem):
return
for item in items:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
+ media_files = self.plugin.manager.get_all_objects(MediaFile,
+ MediaFile.song_id == item_id)
+ for media_file in media_files:
+ try:
+ os.remove(media_file.file_name)
+ except:
+ log.exception('Could not remove file: %s', audio)
+ try:
+ save_path = os.path.join(AppLocation.get_section_data_path(
+ self.plugin.name), 'audio', str(item_id))
+ if os.path.exists(save_path):
+ os.rmdir(save_path)
+ except OSError:
+ log.exception(u'Could not remove directory: %s', save_path)
self.plugin.manager.delete_object(Song, item_id)
self.onSearchTextButtonClick()
@@ -392,15 +426,16 @@ class SongMediaItem(MediaManagerItem):
self.plugin.manager.save_object(new_song)
self.onSongListLoad()
- def generateSlideData(self, service_item, item=None, xmlVersion=False):
+ def generateSlideData(self, service_item, item=None, xmlVersion=False,
+ remote=False):
log.debug(u'generateSlideData (%s:%s)' % (service_item, item))
item_id = self._getIdOfItemToGenerate(item, self.remoteSong)
- service_item.add_capability(ItemCapabilities.AllowsEdit)
- service_item.add_capability(ItemCapabilities.AllowsPreview)
- service_item.add_capability(ItemCapabilities.AllowsLoop)
+ service_item.add_capability(ItemCapabilities.CanEdit)
+ service_item.add_capability(ItemCapabilities.CanPreview)
+ service_item.add_capability(ItemCapabilities.CanLoop)
service_item.add_capability(ItemCapabilities.OnLoadUpdate)
service_item.add_capability(ItemCapabilities.AddIfNewItem)
- service_item.add_capability(ItemCapabilities.AllowsVirtualSplit)
+ service_item.add_capability(ItemCapabilities.CanSoftBreak)
song = self.plugin.manager.get_object(Song, item_id)
service_item.theme = song.theme_name
service_item.edit_id = item_id
@@ -471,6 +506,10 @@ class SongMediaItem(MediaManagerItem):
service_item.data_string = {u'title': song.search_title,
u'authors': u', '.join(author_list)}
service_item.xml_version = self.openLyrics.song_to_xml(song)
+ # Add the audio file to the service item.
+ if len(song.media_files) > 0:
+ service_item.add_capability(ItemCapabilities.HasBackgroundAudio)
+ service_item.background_audio = [m.file_name for m in song.media_files]
return True
def serviceLoad(self, item):
@@ -510,8 +549,15 @@ class SongMediaItem(MediaManagerItem):
add_song = False
editId = song.id
break
+ # If there's any backing tracks, copy them over.
+ if len(item.background_audio) > 0:
+ self._updateBackgroundAudio(song, item)
if add_song and self.addSongFromService:
- editId = self.openLyrics.xml_to_song(item.xml_version)
+ song = self.openLyrics.xml_to_song(item.xml_version)
+ # If there's any backing tracks, copy them over.
+ if len(item.background_audio) > 0:
+ self._updateBackgroundAudio(song, item)
+ editId = song.id
self.onSearchTextButtonClick()
# Update service with correct song id.
if editId:
diff --git a/openlp/plugins/songs/lib/olp1import.py b/openlp/plugins/songs/lib/olp1import.py
index de7264a5b..72bd5f952 100644
--- a/openlp/plugins/songs/lib/olp1import.py
+++ b/openlp/plugins/songs/lib/olp1import.py
@@ -32,6 +32,8 @@ openlp.org 1.x song databases into the current installation database.
import logging
from chardet.universaldetector import UniversalDetector
import sqlite
+import sys
+import os
from openlp.core.lib import translate
from openlp.plugins.songs.lib import retrieve_windows_encoding
@@ -44,7 +46,7 @@ class OpenLP1SongImport(SongImport):
The :class:`OpenLP1SongImport` class provides OpenLP with the ability to
import song databases from installations of openlp.org 1.x.
"""
- last_encoding = u'windows-1252'
+ lastEncoding = u'windows-1252'
def __init__(self, manager, **kwargs):
"""
@@ -57,23 +59,23 @@ class OpenLP1SongImport(SongImport):
The database providing the data to import.
"""
SongImport.__init__(self, manager, **kwargs)
- self.available_themes = \
+ self.availableThemes = \
kwargs[u'plugin'].formparent.themeManagerContents.getThemes()
- def do_import(self):
+ def doImport(self):
"""
Run the import for an openlp.org 1.x song database.
"""
- if not self.import_source.endswith(u'.olp'):
- self.log_error(self.import_source,
+ if not self.importSource.endswith(u'.olp'):
+ self.logError(self.importSource,
translate('SongsPlugin.OpenLP1SongImport',
'Not a valid openlp.org 1.x song database.'))
return
- encoding = self.get_encoding()
+ encoding = self.getEncoding()
if not encoding:
return
# Connect to the database.
- connection = sqlite.connect(self.import_source, mode=0444,
+ connection = sqlite.connect(self.importSource, mode=0444,
encoding=(encoding, 'replace'))
cursor = connection.cursor()
# Determine if we're using a new or an old DB.
@@ -94,64 +96,66 @@ class OpenLP1SongImport(SongImport):
cursor.execute(u'SELECT settingsid, settingsname FROM settings')
themes = {}
for theme_id, theme_name in cursor.fetchall():
- if theme_name in self.available_themes:
+ if theme_name in self.availableThemes:
themes[theme_id] = theme_name
# Import the songs.
cursor.execute(u'-- types int, unicode, unicode, unicode, int')
cursor.execute(u'SELECT songid, songtitle, lyrics || \'\' AS lyrics, '
u'copyrightinfo, settingsid FROM songs')
songs = cursor.fetchall()
- self.import_wizard.progressBar.setMaximum(len(songs))
+ self.importWizard.progressBar.setMaximum(len(songs))
for song in songs:
- self.set_defaults()
- if self.stop_import_flag:
+ self.setDefaults()
+ if self.stopImportFlag:
break
song_id = song[0]
self.title = song[1]
lyrics = song[2].replace(u'\r\n', u'\n')
- self.add_copyright(song[3])
+ self.addCopyright(song[3])
if themes.has_key(song[4]):
- self.theme_name = themes[song[4]]
+ self.themeName = themes[song[4]]
verses = lyrics.split(u'\n\n')
for verse in verses:
if verse.strip():
- self.add_verse(verse.strip())
+ self.addVerse(verse.strip())
cursor.execute(u'-- types int')
cursor.execute(u'SELECT authorid FROM songauthors '
u'WHERE songid = %s' % song_id)
author_ids = cursor.fetchall()
for author_id in author_ids:
- if self.stop_import_flag:
+ if self.stopImportFlag:
break
for author in authors:
if author[0] == author_id[0]:
- self.parse_author(author[1])
+ self.parseAuthor(author[1])
break
- if self.stop_import_flag:
+ if self.stopImportFlag:
break
if new_db:
- cursor.execute(u'-- types int')
- cursor.execute(u'SELECT trackid FROM songtracks '
+ cursor.execute(u'-- types int, int')
+ cursor.execute(u'SELECT trackid, listindex '
+ u'FROM songtracks '
u'WHERE songid = %s ORDER BY listindex' % song_id)
track_ids = cursor.fetchall()
- for track_id in track_ids:
- if self.stop_import_flag:
+ for track_id, listindex in track_ids:
+ if self.stopImportFlag:
break
for track in tracks:
- if track[0] == track_id[0]:
- self.add_media_file(track[1])
+ if track[0] == track_id:
+ media_file = self.expandMediaFile(track[1])
+ self.addMediaFile(media_file, listindex)
break
- if self.stop_import_flag:
+ if self.stopImportFlag:
break
if not self.finish():
- self.log_error(self.import_source)
+ self.logError(self.importSource)
- def get_encoding(self):
+ def getEncoding(self):
"""
Detect character encoding of an openlp.org 1.x song database.
"""
# Connect to the database.
- connection = sqlite.connect(self.import_source, mode=0444)
+ connection = sqlite.connect(self.importSource, mode=0444)
cursor = connection.cursor()
detector = UniversalDetector()
@@ -186,3 +190,22 @@ class OpenLP1SongImport(SongImport):
return detector.result[u'encoding']
detector.close()
return retrieve_windows_encoding(detector.result[u'encoding'])
+
+ def expandMediaFile(self, filename):
+ """
+ When you're on Windows, this function expands the file name to include
+ the path to OpenLP's application data directory. If you are not on
+ Windows, it returns the original file name.
+
+ ``filename``
+ The filename to expand.
+ """
+ if sys.platform != u'win32' and \
+ not os.environ.get(u'ALLUSERSPROFILE') and \
+ not os.environ.get(u'APPDATA'):
+ return filename
+ common_app_data = os.path.join(os.environ[u'ALLUSERSPROFILE'],
+ os.path.split(os.environ[u'APPDATA'])[1])
+ if not common_app_data:
+ return filename
+ return os.path.join(common_app_data, u'openlp.org', 'Audio', filename)
diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py
index 6bb08a19a..7d2558ce8 100644
--- a/openlp/plugins/songs/lib/olpimport.py
+++ b/openlp/plugins/songs/lib/olpimport.py
@@ -95,22 +95,22 @@ class OpenLPSongImport(SongImport):
The database providing the data to import.
"""
SongImport.__init__(self, manager, **kwargs)
- self.source_session = None
+ self.sourceSession = None
- def do_import(self):
+ def doImport(self):
"""
Run the import for an OpenLP version 2 song database.
"""
- if not self.import_source.endswith(u'.sqlite'):
- self.log_error(self.import_source,
+ if not self.importSource.endswith(u'.sqlite'):
+ self.logError(self.importSource,
translate('SongsPlugin.OpenLPSongImport',
'Not a valid OpenLP 2.0 song database.'))
return
- self.import_source = u'sqlite:///%s' % self.import_source
- engine = create_engine(self.import_source)
+ self.importSource = u'sqlite:///%s' % self.importSource
+ engine = create_engine(self.importSource)
source_meta = MetaData()
source_meta.reflect(engine)
- self.source_session = scoped_session(sessionmaker(bind=engine))
+ self.sourceSession = scoped_session(sessionmaker(bind=engine))
if u'media_files' in source_meta.tables.keys():
has_media_files = True
else:
@@ -156,9 +156,9 @@ class OpenLPSongImport(SongImport):
except UnmappedClassError:
mapper(OldTopic, source_topics_table)
- source_songs = self.source_session.query(OldSong).all()
- if self.import_wizard:
- self.import_wizard.progressBar.setMaximum(len(source_songs))
+ source_songs = self.sourceSession.query(OldSong).all()
+ if self.importWizard:
+ self.importWizard.progressBar.setMaximum(len(source_songs))
for song in source_songs:
new_song = Song()
new_song.title = song.title
@@ -201,22 +201,22 @@ class OpenLPSongImport(SongImport):
if existing_topic is None:
existing_topic = Topic.populate(name=topic.name)
new_song.topics.append(existing_topic)
-# if has_media_files:
-# if song.media_files:
-# for media_file in song.media_files:
-# existing_media_file = \
-# self.manager.get_object_filtered(MediaFile,
-# MediaFile.file_name == media_file.file_name)
-# if existing_media_file:
-# new_song.media_files.append(existing_media_file)
-# else:
-# new_song.media_files.append(MediaFile.populate(
-# file_name=media_file.file_name))
+ if has_media_files:
+ if song.media_files:
+ for media_file in song.media_files:
+ existing_media_file = \
+ self.manager.get_object_filtered(MediaFile,
+ MediaFile.file_name == media_file.file_name)
+ if existing_media_file:
+ new_song.media_files.append(existing_media_file)
+ else:
+ new_song.media_files.append(MediaFile.populate(
+ file_name=media_file.file_name))
clean_song(self.manager, new_song)
self.manager.save_object(new_song)
- if self.import_wizard:
- self.import_wizard.incrementProgressBar(
+ if self.importWizard:
+ self.importWizard.incrementProgressBar(
WizardStrings.ImportingType % new_song.title)
- if self.stop_import_flag:
+ if self.stopImportFlag:
break
engine.dispose()
diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py
index ba442bb35..4a97e43b0 100644
--- a/openlp/plugins/songs/lib/oooimport.py
+++ b/openlp/plugins/songs/lib/oooimport.py
@@ -59,58 +59,58 @@ class OooImport(SongImport):
"""
SongImport.__init__(self, manager, **kwargs)
self.document = None
- self.process_started = False
+ self.processStarted = False
- def do_import(self):
- if not isinstance(self.import_source, list):
+ def doImport(self):
+ if not isinstance(self.importSource, list):
return
try:
self.start_ooo()
except NoConnectException as exc:
- self.log_error(
- self.import_source[0],
+ self.logError(
+ self.importSource[0],
translate('SongsPlugin.SongImport',
'Cannot access OpenOffice or LibreOffice'))
log.error(exc)
return
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
- for filename in self.import_source:
- if self.stop_import_flag:
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
+ for filename in self.importSource:
+ if self.stopImportFlag:
break
filename = unicode(filename)
if os.path.isfile(filename):
- self.open_ooo_file(filename)
+ self.openOooFile(filename)
if self.document:
- self.process_ooo_document()
- self.close_ooo_file()
+ self.processOooDocument()
+ self.closeOooFile()
else:
- self.log_error(self.filepath,
+ self.logError(self.filepath,
translate('SongsPlugin.SongImport',
'Unable to open file'))
else:
- self.log_error(self.filepath,
+ self.logError(self.filepath,
translate('SongsPlugin.SongImport', 'File not found'))
- self.close_ooo()
+ self.closeOoo()
- def process_ooo_document(self):
+ def processOooDocument(self):
"""
Handle the import process for OpenOffice files. This method facilitates
allowing subclasses to handle specific types of OpenOffice files.
"""
if self.document.supportsService(
"com.sun.star.presentation.PresentationDocument"):
- self.process_pres()
+ self.processPres()
if self.document.supportsService("com.sun.star.text.TextDocument"):
- self.process_doc()
+ self.processDoc()
- def start_ooo(self):
+ def startOoo(self):
"""
Start OpenOffice.org process
TODO: The presentation/Impress plugin may already have it running
"""
if os.name == u'nt':
- self.start_ooo_process()
- self.desktop = self.ooo_manager.createInstance(
+ self.startOooProcess()
+ self.desktop = self.oooManager.createInstance(
u'com.sun.star.frame.Desktop')
else:
context = uno.getComponentContext()
@@ -123,7 +123,7 @@ class OooImport(SongImport):
uno_instance = get_uno_instance(resolver)
except NoConnectException:
log.exception("Failed to resolve uno connection")
- self.start_ooo_process()
+ self.startOooProcess()
loop += 1
else:
manager = uno_instance.ServiceManager
@@ -132,22 +132,22 @@ class OooImport(SongImport):
return
raise
- def start_ooo_process(self):
+ def startOooProcess(self):
try:
if os.name == u'nt':
- self.ooo_manager = Dispatch(u'com.sun.star.ServiceManager')
- self.ooo_manager._FlagAsMethod(u'Bridge_GetStruct')
- self.ooo_manager._FlagAsMethod(u'Bridge_GetValueObject')
+ self.oooManager = Dispatch(u'com.sun.star.ServiceManager')
+ self.oooManager._FlagAsMethod(u'Bridge_GetStruct')
+ self.oooManager._FlagAsMethod(u'Bridge_GetValueObject')
else:
cmd = get_uno_command()
process = QtCore.QProcess()
process.startDetached(cmd)
process.waitForStarted()
- self.process_started = True
+ self.processStarted = True
except:
log.exception("start_ooo_process failed")
- def open_ooo_file(self, filepath):
+ def openOooFile(self, filepath):
"""
Open the passed file in OpenOffice.org Impress
"""
@@ -166,29 +166,29 @@ class OooImport(SongImport):
if not self.document.supportsService(
"com.sun.star.presentation.PresentationDocument") and not \
self.document.supportsService("com.sun.star.text.TextDocument"):
- self.close_ooo_file()
+ self.closeOooFile()
else:
- self.import_wizard.incrementProgressBar(
+ self.importWizard.incrementProgressBar(
u'Processing file ' + filepath, 0)
except AttributeError:
log.exception("open_ooo_file failed: %s", url)
return
- def close_ooo_file(self):
+ def closeOooFile(self):
"""
Close file.
"""
self.document.close(True)
self.document = None
- def close_ooo(self):
+ def closeOoo(self):
"""
Close OOo. But only if we started it and not on windows
"""
- if self.process_started:
+ if self.processStarted:
self.desktop.terminate()
- def process_pres(self):
+ def processPres(self):
"""
Process the file
"""
@@ -196,8 +196,8 @@ class OooImport(SongImport):
slides = doc.getDrawPages()
text = u''
for slide_no in range(slides.getCount()):
- if self.stop_import_flag:
- self.import_wizard.incrementProgressBar(u'Import cancelled', 0)
+ if self.stopImportFlag:
+ self.importWizard.incrementProgressBar(u'Import cancelled', 0)
return
slide = slides.getByIndex(slide_no)
slidetext = u''
@@ -209,10 +209,10 @@ class OooImport(SongImport):
if slidetext.strip() == u'':
slidetext = u'\f'
text += slidetext
- self.process_songs_text(text)
+ self.processSongsText(text)
return
- def process_doc(self):
+ def processDoc(self):
"""
Process the doc file, a paragraph at a time
"""
@@ -231,16 +231,16 @@ class OooImport(SongImport):
if textportion.BreakType in (PAGE_AFTER, PAGE_BOTH):
paratext += u'\f'
text += paratext + u'\n'
- self.process_songs_text(text)
+ self.processSongsText(text)
- def process_songs_text(self, text):
- songtexts = self.tidy_text(text).split(u'\f')
- self.set_defaults()
+ def processSongsText(self, text):
+ songtexts = self.tidyText(text).split(u'\f')
+ self.setDefaults()
for songtext in songtexts:
if songtext.strip():
- self.process_song_text(songtext.strip())
- if self.check_complete():
+ self.processSongText(songtext.strip())
+ if self.checkComplete():
self.finish()
- self.set_defaults()
- if self.check_complete():
+ self.setDefaults()
+ if self.checkComplete():
self.finish()
diff --git a/openlp/plugins/songs/lib/openlyricsimport.py b/openlp/plugins/songs/lib/openlyricsimport.py
index b46383772..f3639fc3b 100644
--- a/openlp/plugins/songs/lib/openlyricsimport.py
+++ b/openlp/plugins/songs/lib/openlyricsimport.py
@@ -53,16 +53,16 @@ class OpenLyricsImport(SongImport):
SongImport.__init__(self, manager, **kwargs)
self.openLyrics = OpenLyrics(self.manager)
- def do_import(self):
+ def doImport(self):
"""
Imports the songs.
"""
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
parser = etree.XMLParser(remove_blank_text=True)
- for file_path in self.import_source:
- if self.stop_import_flag:
+ for file_path in self.importSource:
+ if self.stopImportFlag:
return
- self.import_wizard.incrementProgressBar(
+ self.importWizard.incrementProgressBar(
WizardStrings.ImportingType % os.path.basename(file_path))
try:
# Pass a file object, because lxml does not cope with some
@@ -72,4 +72,4 @@ class OpenLyricsImport(SongImport):
self.openLyrics.xml_to_song(xml)
except etree.XMLSyntaxError:
log.exception(u'XML syntax error in file %s' % file_path)
- self.log_error(file_path, SongStrings.XMLSyntaxError)
+ self.logError(file_path, SongStrings.XMLSyntaxError)
diff --git a/openlp/plugins/songs/lib/opensongimport.py b/openlp/plugins/songs/lib/opensongimport.py
index 7fca88262..da5809095 100644
--- a/openlp/plugins/songs/lib/opensongimport.py
+++ b/openlp/plugins/songs/lib/opensongimport.py
@@ -107,32 +107,32 @@ class OpenSongImport(SongImport):
"""
SongImport.__init__(self, manager, **kwargs)
- def do_import(self):
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
- for filename in self.import_source:
- if self.stop_import_flag:
+ def doImport(self):
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
+ for filename in self.importSource:
+ if self.stopImportFlag:
return
song_file = open(filename)
- self.do_import_file(song_file)
+ self.doImportFile(song_file)
song_file.close()
- def do_import_file(self, file):
+ def doImportFile(self, file):
"""
Process the OpenSong file - pass in a file-like object, not a file path.
"""
- self.set_defaults()
+ self.setDefaults()
try:
tree = objectify.parse(file)
except (Error, LxmlError):
- self.log_error(file.name, SongStrings.XMLSyntaxError)
+ self.logError(file.name, SongStrings.XMLSyntaxError)
log.exception(u'Error parsing XML')
return
root = tree.getroot()
fields = dir(root)
decode = {
- u'copyright': self.add_copyright,
+ u'copyright': self.addCopyright,
u'ccli': u'ccli_number',
- u'author': self.parse_author,
+ u'author': self.parseAuthor,
u'title': u'title',
u'aka': u'alternate_title',
u'hymn_number': u'song_number'
@@ -190,7 +190,10 @@ class OpenSongImport(SongImport):
# the verse tag
verse_tag = content
verse_num = u'1'
- verse_index = VerseType.from_loose_input(verse_tag)
+ if len(verse_tag) == 0:
+ verse_index = 0
+ else:
+ verse_index = VerseType.from_loose_input(verse_tag)
verse_tag = VerseType.Tags[verse_index]
inst = 1
if [verse_tag, verse_num, inst] in our_verse_order \
@@ -211,7 +214,7 @@ class OpenSongImport(SongImport):
verses[verse_tag][verse_num][inst] = []
our_verse_order.append([verse_tag, verse_num, inst])
# Tidy text and remove the ____s from extended words
- this_line = self.tidy_text(this_line)
+ this_line = self.tidyText(this_line)
this_line = this_line.replace(u'_', u'')
this_line = this_line.replace(u'|', u'\n')
verses[verse_tag][verse_num][inst].append(this_line)
@@ -220,9 +223,9 @@ class OpenSongImport(SongImport):
for (verse_tag, verse_num, inst) in our_verse_order:
verse_def = u'%s%s' % (verse_tag, verse_num)
lines = u'\n'.join(verses[verse_tag][verse_num][inst])
- self.add_verse(lines, verse_def)
+ self.addVerse(lines, verse_def)
if not self.verses:
- self.add_verse('')
+ self.addVerse('')
# figure out the presentation order, if present
if u'presentation' in fields and root.presentation:
order = unicode(root.presentation)
@@ -243,9 +246,9 @@ class OpenSongImport(SongImport):
verse_def = u'%s%s' % (verse_tag, verse_num)
if verses.has_key(verse_tag) and \
verses[verse_tag].has_key(verse_num):
- self.verse_order_list.append(verse_def)
+ self.verseOrderList.append(verse_def)
else:
log.info(u'Got order %s but not in verse tags, dropping'
u'this item from presentation order', verse_def)
if not self.finish():
- self.log_error(file.name)
+ self.logError(file.name)
diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py
index e0134f282..6294f211e 100644
--- a/openlp/plugins/songs/lib/sofimport.py
+++ b/openlp/plugins/songs/lib/sofimport.py
@@ -83,32 +83,32 @@ class SofImport(OooImport):
OooImport.__init__(self, manager, **kwargs)
self.song = False
- def process_ooo_document(self):
+ def processOooDocument(self):
"""
Handle the import process for SoF files.
"""
- self.process_sof_file()
+ self.processSofFile()
- def process_sof_file(self):
+ def processSofFile(self):
"""
Process the RTF file, a paragraph at a time
"""
- self.blanklines = 0
- self.new_song()
+ self.blankLines = 0
+ self.newSong()
try:
paragraphs = self.document.getText().createEnumeration()
while paragraphs.hasMoreElements():
- if self.stop_import_flag:
+ if self.stopImportFlag:
return
paragraph = paragraphs.nextElement()
if paragraph.supportsService("com.sun.star.text.Paragraph"):
- self.process_paragraph(paragraph)
+ self.processParagraph(paragraph)
except RuntimeException as exc:
log.exception(u'Error processing file: %s', exc)
if not self.finish():
- self.log_error(self.filepath)
+ self.logError(self.filepath)
- def process_paragraph(self, paragraph):
+ def processParagraph(self, paragraph):
"""
Process a paragraph.
In the first book, a paragraph is a single line. In the latter ones
@@ -124,26 +124,26 @@ class SofImport(OooImport):
while textportions.hasMoreElements():
textportion = textportions.nextElement()
if textportion.BreakType in (PAGE_BEFORE, PAGE_BOTH):
- self.process_paragraph_text(text)
- self.new_song()
+ self.processParagraphText(text)
+ self.newSong()
text = u''
text += self.process_textportion(textportion)
if textportion.BreakType in (PAGE_AFTER, PAGE_BOTH):
- self.process_paragraph_text(text)
- self.new_song()
+ self.processParagraphText(text)
+ self.newSong()
text = u''
- self.process_paragraph_text(text)
+ self.processParagraphText(text)
- def process_paragraph_text(self, text):
+ def processParagraphText(self, text):
"""
Split the paragraph text into multiple lines and process
"""
for line in text.split(u'\n'):
- self.process_paragraph_line(line)
- if self.blanklines > 2:
- self.new_song()
+ self.processParagraphLine(line)
+ if self.blankLines > 2:
+ self.newSong()
- def process_paragraph_line(self, text):
+ def processParagraphLine(self, text):
"""
Process a single line. Throw away that text which isn't relevant, i.e.
stuff that appears at the end of the song.
@@ -151,16 +151,16 @@ class SofImport(OooImport):
"""
text = text.strip()
if text == u'':
- self.blanklines += 1
- if self.blanklines > 1:
+ self.blankLines += 1
+ if self.blankLines > 1:
return
if self.title != u'':
- self.finish_verse()
+ self.finishVerse()
return
- self.blanklines = 0
- if self.skip_to_close_bracket:
+ self.blankLines = 0
+ if self.skipToCloseBracket:
if text.endswith(u')'):
- self.skip_to_close_bracket = False
+ self.skipToCloseBracket = False
return
if text.startswith(u'CCL Licence'):
self.italics = False
@@ -169,24 +169,24 @@ class SofImport(OooImport):
return
if text.startswith(u'(NB.') or text.startswith(u'(Regrettably') \
or text.startswith(u'(From'):
- self.skip_to_close_bracket = True
+ self.skipToCloseBracket = True
return
if text.startswith(u'Copyright'):
- self.add_copyright(text)
+ self.addCopyright(text)
return
if text == u'(Repeat)':
- self.finish_verse()
- self.repeat_verse()
+ self.finishVerse()
+ self.repeatVerse()
return
if self.title == u'':
if self.copyright == u'':
- self.add_sof_author(text)
+ self.addSofAuthor(text)
else:
- self.add_copyright(text)
+ self.addCopyright(text)
return
- self.add_verse_line(text)
+ self.addVerseLine(text)
- def process_textportion(self, textportion):
+ def processTextPortion(self, textportion):
"""
Process a text portion. Here we just get the text and detect if
it's bold or italics. If it's bold then its a song number or song title.
@@ -199,53 +199,53 @@ class SofImport(OooImport):
return text
if textportion.CharWeight == BOLD:
boldtext = text.strip()
- if boldtext.isdigit() and self.song_number == '':
- self.add_songnumber(boldtext)
+ if boldtext.isdigit() and self.songNumber == '':
+ self.addSongNumber(boldtext)
return u''
if self.title == u'':
text = self.uncap_text(text)
- self.add_title(text)
+ self.addTitle(text)
return text
if text.strip().startswith(u'('):
return text
self.italics = (textportion.CharPosture == ITALIC)
return text
- def new_song(self):
+ def newSong(self):
"""
A change of song. Store the old, create a new
... but only if the last song was complete. If not, stick with it
"""
if self.song:
- self.finish_verse()
- if not self.check_complete():
+ self.finishVerse()
+ if not self.checkComplete():
return
self.finish()
self.song = True
- self.set_defaults()
- self.skip_to_close_bracket = False
- self.is_chorus = False
+ self.setDefaults()
+ self.skipToCloseBracket = False
+ self.isChorus = False
self.italics = False
- self.currentverse = u''
+ self.currentVerse = u''
- def add_songnumber(self, song_no):
+ def addSongNumber(self, song_no):
"""
Add a song number, store as alternate title. Also use the song
number to work out which songbook we're in
"""
- self.song_number = song_no
- self.alternate_title = song_no + u'.'
- self.song_book_pub = u'Kingsway Publications'
+ self.songNumber = song_no
+ self.alternateTitle = song_no + u'.'
+ self.songBook_pub = u'Kingsway Publications'
if int(song_no) <= 640:
- self.song_book = u'Songs of Fellowship 1'
+ self.songBook = u'Songs of Fellowship 1'
elif int(song_no) <= 1150:
- self.song_book = u'Songs of Fellowship 2'
+ self.songBook = u'Songs of Fellowship 2'
elif int(song_no) <= 1690:
- self.song_book = u'Songs of Fellowship 3'
+ self.songBook = u'Songs of Fellowship 3'
else:
- self.song_book = u'Songs of Fellowship 4'
+ self.songBook = u'Songs of Fellowship 4'
- def add_title(self, text):
+ def addTitle(self, text):
"""
Add the title to the song. Strip some leading/trailing punctuation that
we don't want in a title
@@ -256,9 +256,9 @@ class SofImport(OooImport):
if title.endswith(u','):
title = title[:-1]
self.title = title
- self.import_wizard.incrementProgressBar(u'Processing song ' + title, 0)
+ self.importWizard.incrementProgressBar(u'Processing song ' + title, 0)
- def add_sof_author(self, text):
+ def addSofAuthor(self, text):
"""
Add the author. OpenLP stores them individually so split by 'and', '&'
and comma.
@@ -266,42 +266,42 @@ class SofImport(OooImport):
"Mr Smith" and "Mrs Smith".
"""
text = text.replace(u' and ', u' & ')
- self.parse_author(text)
+ self.parseAuthor(text)
- def add_verse_line(self, text):
+ def addVerseLine(self, text):
"""
Add a line to the current verse. If the formatting has changed and
we're beyond the second line of first verse, then this indicates
a change of verse. Italics are a chorus
"""
- if self.italics != self.is_chorus and ((len(self.verses) > 0) or
- (self.currentverse.count(u'\n') > 1)):
- self.finish_verse()
+ if self.italics != self.isChorus and ((len(self.verses) > 0) or
+ (self.currentVerse.count(u'\n') > 1)):
+ self.finishVerse()
if self.italics:
- self.is_chorus = True
- self.currentverse += text + u'\n'
+ self.isChorus = True
+ self.currentVerse += text + u'\n'
- def finish_verse(self):
+ def finishVerse(self):
"""
Verse is finished, store it. Note in book 1+2, some songs are formatted
incorrectly. Here we try and split songs with missing line breaks into
the correct number of verses.
"""
- if self.currentverse.strip() == u'':
+ if self.currentVerse.strip() == u'':
return
- if self.is_chorus:
+ if self.isChorus:
versetag = u'C'
splitat = None
else:
versetag = u'V'
- splitat = self.verse_splits(self.song_number)
+ splitat = self.verseSplits(self.songNumber)
if splitat:
ln = 0
verse = u''
- for line in self.currentverse.split(u'\n'):
+ for line in self.currentVerse.split(u'\n'):
ln += 1
if line == u'' or ln > splitat:
- self.add_sof_verse(verse, versetag)
+ self.addSofVerse(verse, versetag)
ln = 0
if line:
verse = line + u'\n'
@@ -310,19 +310,19 @@ class SofImport(OooImport):
else:
verse += line + u'\n'
if verse:
- self.add_sof_verse(verse, versetag)
+ self.addSofVerse(verse, versetag)
else:
- self.add_sof_verse(self.currentverse, versetag)
- self.currentverse = u''
- self.is_chorus = False
+ self.addSofVerse(self.currentVerse, versetag)
+ self.currentVerse = u''
+ self.isChorus = False
- def add_sof_verse(self, lyrics, tag):
- self.add_verse(lyrics, tag)
- if not self.is_chorus and u'C1' in self.verse_order_list_generated:
- self.verse_order_list_generated.append(u'C1')
- self.verse_order_list_generated_useful = True
+ def addSofVerse(self, lyrics, tag):
+ self.addVerse(lyrics, tag)
+ if not self.isChorus and u'C1' in self.verseOrderListGenerated:
+ self.verseOrderListGenerated.append(u'C1')
+ self.verseOrderListGenerated_useful = True
- def uncap_text(self, text):
+ def uncapText(self, text):
"""
Words in the title are in all capitals, so we lowercase them.
However some of these words, e.g. referring to God need a leading
@@ -348,7 +348,7 @@ class SofImport(OooImport):
text = u''.join(textarr)
return text
- def verse_splits(self, song_number):
+ def verseSplits(self, song_number):
"""
Because someone at Kingsway forgot to check the 1+2 RTF file,
some verses were not formatted correctly.
diff --git a/openlp/plugins/songs/lib/songbeamerimport.py b/openlp/plugins/songs/lib/songbeamerimport.py
index 400db8f9a..2ed900544 100644
--- a/openlp/plugins/songs/lib/songbeamerimport.py
+++ b/openlp/plugins/songs/lib/songbeamerimport.py
@@ -91,27 +91,27 @@ class SongBeamerImport(SongImport):
(re.compile(u''), u''),
(re.compile(u''), u'')
]
-
+
def __init__(self, manager, **kwargs):
"""
Initialise the Song Beamer importer.
"""
SongImport.__init__(self, manager, **kwargs)
- def do_import(self):
+ def doImport(self):
"""
Receive a single file or a list of files to import.
"""
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
- if not isinstance(self.import_source, list):
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
+ if not isinstance(self.importSource, list):
return
- for file in self.import_source:
+ for file in self.importSource:
# TODO: check that it is a valid SongBeamer file
- if self.stop_import_flag:
+ if self.stopImportFlag:
return
- self.set_defaults()
- self.current_verse = u''
- self.current_verse_type = VerseType.Tags[VerseType.Verse]
+ self.setDefaults()
+ self.currentVerse = u''
+ self.currentVerseType = VerseType.Tags[VerseType.Verse]
read_verses = False
file_name = os.path.split(file)[1]
if os.path.isfile(file):
@@ -119,48 +119,48 @@ class SongBeamerImport(SongImport):
details = chardet.detect(detect_file.read())
detect_file.close()
infile = codecs.open(file, u'r', details['encoding'])
- songData = infile.readlines()
+ song_data = infile.readlines()
infile.close()
else:
continue
self.title = file_name.split('.sng')[0]
read_verses = False
- for line in songData:
+ for line in song_data:
# Just make sure that the line is of the type 'Unicode'.
line = unicode(line).strip()
if line.startswith(u'#') and not read_verses:
- self.parse_tags(line)
+ self.parseTags(line)
elif line.startswith(u'---'):
- if self.current_verse:
- self.replace_html_tags()
- self.add_verse(self.current_verse,
- self.current_verse_type)
- self.current_verse = u''
- self.current_verse_type = VerseType.Tags[VerseType.Verse]
+ if self.currentVerse:
+ self.replaceHtmlTags()
+ self.addVerse(self.currentVerse,
+ self.currentVerseType)
+ self.currentVerse = u''
+ self.currentVerseType = VerseType.Tags[VerseType.Verse]
read_verses = True
verse_start = True
elif read_verses:
if verse_start:
verse_start = False
- if not self.check_verse_marks(line):
- self.current_verse = line + u'\n'
+ if not self.checkVerseMarks(line):
+ self.currentVerse = line + u'\n'
else:
- self.current_verse += line + u'\n'
- if self.current_verse:
- self.replace_html_tags()
- self.add_verse(self.current_verse, self.current_verse_type)
+ self.currentVerse += line + u'\n'
+ if self.currentVerse:
+ self.replaceHtmlTags()
+ self.addVerse(self.currentVerse, self.currentVerseType)
if not self.finish():
- self.log_error(file)
+ self.logError(file)
- def replace_html_tags(self):
+ def replaceHtmlTags(self):
"""
This can be called to replace SongBeamer's specific (html) tags with
OpenLP's specific (html) tags.
"""
for pair in SongBeamerImport.HTML_TAG_PAIRS:
- self.current_verse = pair[0].sub(pair[1], self.current_verse)
+ self.currentVerse = pair[0].sub(pair[1], self.currentVerse)
- def parse_tags(self, line):
+ def parseTags(self, line):
"""
Parses a meta data line.
@@ -176,11 +176,11 @@ class SongBeamerImport(SongImport):
if not tag_val[0] or not tag_val[1]:
return
if tag_val[0] == u'#(c)':
- self.add_copyright(tag_val[1])
+ self.addCopyright(tag_val[1])
elif tag_val[0] == u'#AddCopyrightInfo':
pass
elif tag_val[0] == u'#Author':
- self.parse_author(tag_val[1])
+ self.parseAuthor(tag_val[1])
elif tag_val[0] == u'#BackgroundImage':
pass
elif tag_val[0] == u'#Bible':
@@ -188,7 +188,7 @@ class SongBeamerImport(SongImport):
elif tag_val[0] == u'#Categories':
self.topics = tag_val[1].split(',')
elif tag_val[0] == u'#CCLI':
- self.ccli_number = tag_val[1]
+ self.ccliNumber = tag_val[1]
elif tag_val[0] == u'#Chords':
pass
elif tag_val[0] == u'#ChurchSongID':
@@ -220,7 +220,7 @@ class SongBeamerImport(SongImport):
elif tag_val[0] == u'#LangCount':
pass
elif tag_val[0] == u'#Melody':
- self.parse_author(tag_val[1])
+ self.parseAuthor(tag_val[1])
elif tag_val[0] == u'#NatCopyright':
pass
elif tag_val[0] == u'#OTitle':
@@ -235,10 +235,10 @@ class SongBeamerImport(SongImport):
song_book_pub = tag_val[1]
elif tag_val[0] == u'#Songbook' or tag_val[0] == u'#SongBook':
book_data = tag_val[1].split(u'/')
- self.song_book_name = book_data[0].strip()
+ self.songBookName = book_data[0].strip()
if len(book_data) == 2:
number = book_data[1].strip()
- self.song_number = number if number.isdigit() else u''
+ self.songNumber = number if number.isdigit() else u''
elif tag_val[0] == u'#Speed':
pass
elif tag_val[0] == u'Tempo':
@@ -269,7 +269,7 @@ class SongBeamerImport(SongImport):
# TODO: add the verse order.
pass
- def check_verse_marks(self, line):
+ def checkVerseMarks(self, line):
"""
Check and add the verse's MarkType. Returns ``True`` if the given line
contains a correct verse mark otherwise ``False``.
@@ -279,10 +279,10 @@ class SongBeamerImport(SongImport):
"""
marks = line.split(u' ')
if len(marks) <= 2 and marks[0] in SongBeamerTypes.MarkTypes:
- self.current_verse_type = SongBeamerTypes.MarkTypes[marks[0]]
+ self.currentVerseType = SongBeamerTypes.MarkTypes[marks[0]]
if len(marks) == 2:
# If we have a digit, we append it to current_verse_type.
if marks[1].isdigit():
- self.current_verse_type += marks[1]
+ self.currentVerseType += marks[1]
return True
return False
diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py
index dc45764e4..ee6c7da41 100644
--- a/openlp/plugins/songs/lib/songimport.py
+++ b/openlp/plugins/songs/lib/songimport.py
@@ -26,11 +26,14 @@
###############################################################################
import logging
import re
+import shutil
+import os
from PyQt4 import QtCore
from openlp.core.lib import Receiver, translate
from openlp.core.ui.wizard import WizardStrings
+from openlp.core.utils import AppLocation
from openlp.plugins.songs.lib import clean_song, VerseType
from openlp.plugins.songs.lib.db import Song, Author, Topic, Book, MediaFile
from openlp.plugins.songs.lib.ui import SongStrings
@@ -58,51 +61,51 @@ class SongImport(QtCore.QObject):
self.manager = manager
QtCore.QObject.__init__(self)
if kwargs.has_key(u'filename'):
- self.import_source = kwargs[u'filename']
+ self.importSource = kwargs[u'filename']
elif kwargs.has_key(u'filenames'):
- self.import_source = kwargs[u'filenames']
+ self.importSource = kwargs[u'filenames']
else:
raise KeyError(u'Keyword arguments "filename[s]" not supplied.')
- log.debug(self.import_source)
- self.import_wizard = None
+ log.debug(self.importSource)
+ self.importWizard = None
self.song = None
- self.stop_import_flag = False
- self.set_defaults()
- self.error_log = []
+ self.stopImportFlag = False
+ self.setDefaults()
+ self.errorLog = []
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
+ QtCore.SIGNAL(u'openlp_stop_wizard'), self.stopImport)
- def set_defaults(self):
+ def setDefaults(self):
"""
Create defaults for properties - call this before each song
if importing many songs at once to ensure a clean beginning
"""
self.title = u''
- self.song_number = u''
- self.alternate_title = u''
+ self.songNumber = u''
+ self.alternateTitle = u''
self.copyright = u''
self.comments = u''
- self.theme_name = u''
- self.ccli_number = u''
+ self.themeName = u''
+ self.ccliNumber = u''
self.authors = []
self.topics = []
- self.media_files = []
- self.song_book_name = u''
- self.song_book_pub = u''
- self.verse_order_list_generated_useful = False
- self.verse_order_list_generated = []
- self.verse_order_list = []
+ self.mediaFiles = []
+ self.songBookName = u''
+ self.songBookPub = u''
+ self.verseOrderListGeneratedUseful = False
+ self.verseOrderListGenerated = []
+ self.verseOrderList = []
self.verses = []
- self.verse_counts = {}
- self.copyright_string = unicode(translate(
+ self.verseCounts = {}
+ self.copyrightString = unicode(translate(
'SongsPlugin.SongImport', 'copyright'))
- def log_error(self, filepath, reason=SongStrings.SongIncomplete):
+ def logError(self, filepath, reason=SongStrings.SongIncomplete):
"""
This should be called, when a song could not be imported.
``filepath``
- This should be the file path if ``self.import_source`` is a list
+ This should be the file path if ``self.importSource`` is a list
with different files. If it is not a list, but a single file (for
instance a database), then this should be the song's title.
@@ -110,30 +113,30 @@ class SongImport(QtCore.QObject):
The reason, why the import failed. The string should be as
informative as possible.
"""
- self.set_defaults()
- if self.import_wizard is None:
+ self.setDefaults()
+ if self.importWizard is None:
return
- if self.import_wizard.errorReportTextEdit.isHidden():
- self.import_wizard.errorReportTextEdit.setText(
+ if self.importWizard.errorReportTextEdit.isHidden():
+ self.importWizard.errorReportTextEdit.setText(
translate('SongsPlugin.SongImport',
'The following songs could not be imported:'))
- self.import_wizard.errorReportTextEdit.setVisible(True)
- self.import_wizard.errorCopyToButton.setVisible(True)
- self.import_wizard.errorSaveToButton.setVisible(True)
- self.import_wizard.errorReportTextEdit.append(
+ self.importWizard.errorReportTextEdit.setVisible(True)
+ self.importWizard.errorCopyToButton.setVisible(True)
+ self.importWizard.errorSaveToButton.setVisible(True)
+ self.importWizard.errorReportTextEdit.append(
u'- %s (%s)' % (filepath, reason))
- def stop_import(self):
+ def stopImport(self):
"""
Sets the flag for importers to stop their import
"""
log.debug(u'Stopping songs import')
- self.stop_import_flag = True
+ self.stopImportFlag = True
def register(self, import_wizard):
- self.import_wizard = import_wizard
+ self.importWizard = import_wizard
- def tidy_text(self, text):
+ def tidyText(self, text):
"""
Get rid of some dodgy unicode and formatting characters we're not
interested in. Some can be converted to ascii.
@@ -151,34 +154,34 @@ class SongImport(QtCore.QObject):
text = re.sub(r' ?(\n{5}|\f)+ ?', u'\f', text)
return text
- def process_song_text(self, text):
+ def processSongText(self, text):
verse_texts = text.split(u'\n\n')
for verse_text in verse_texts:
if verse_text.strip() != u'':
- self.process_verse_text(verse_text.strip())
+ self.processVerseText(verse_text.strip())
- def process_verse_text(self, text):
+ def processVerseText(self, text):
lines = text.split(u'\n')
- if text.lower().find(self.copyright_string) >= 0 \
+ if text.lower().find(self.copyrightString) >= 0 \
or text.find(unicode(SongStrings.CopyrightSymbol)) >= 0:
copyright_found = False
for line in lines:
if (copyright_found or
- line.lower().find(self.copyright_string) >= 0 or
+ line.lower().find(self.copyrightString) >= 0 or
line.find(unicode(SongStrings.CopyrightSymbol)) >= 0):
copyright_found = True
- self.add_copyright(line)
+ self.addCopyright(line)
else:
- self.parse_author(line)
+ self.parseAuthor(line)
return
if len(lines) == 1:
- self.parse_author(lines[0])
+ self.parseAuthor(lines[0])
return
if not self.title:
self.title = lines[0]
- self.add_verse(text)
+ self.addVerse(text)
- def add_copyright(self, copyright):
+ def addCopyright(self, copyright):
"""
Build the copyright field
"""
@@ -188,7 +191,7 @@ class SongImport(QtCore.QObject):
self.copyright += ' '
self.copyright += copyright
- def parse_author(self, text):
+ def parseAuthor(self, text):
"""
Add the author. OpenLP stores them individually so split by 'and', '&'
and comma. However need to check for 'Mr and Mrs Smith' and turn it to
@@ -204,9 +207,9 @@ class SongImport(QtCore.QObject):
if author2.endswith(u'.'):
author2 = author2[:-1]
if author2:
- self.add_author(author2)
+ self.addAuthor(author2)
- def add_author(self, author):
+ def addAuthor(self, author):
"""
Add an author to the list
"""
@@ -214,15 +217,15 @@ class SongImport(QtCore.QObject):
return
self.authors.append(author)
- def add_media_file(self, filename):
+ def addMediaFile(self, filename, weight=0):
"""
Add a media file to the list
"""
- if filename in self.media_files:
+ if filename in map(lambda x: x[0], self.mediaFiles):
return
- self.media_files.append(filename)
+ self.mediaFiles.append((filename, weight))
- def add_verse(self, verse_text, verse_def=u'v', lang=None):
+ def addVerse(self, verse_text, verse_def=u'v', lang=None):
"""
Add a verse. This is the whole verse, lines split by \\n. It will also
attempt to detect duplicates. In this case it will just add to the verse
@@ -241,29 +244,29 @@ class SongImport(QtCore.QObject):
"""
for (old_verse_def, old_verse, old_lang) in self.verses:
if old_verse.strip() == verse_text.strip():
- self.verse_order_list_generated.append(old_verse_def)
- self.verse_order_list_generated_useful = True
+ self.verseOrderListGenerated.append(old_verse_def)
+ self.verseOrderListGeneratedUseful = True
return
- if verse_def[0] in self.verse_counts:
- self.verse_counts[verse_def[0]] += 1
+ if verse_def[0] in self.verseCounts:
+ self.verseCounts[verse_def[0]] += 1
else:
- self.verse_counts[verse_def[0]] = 1
+ self.verseCounts[verse_def[0]] = 1
if len(verse_def) == 1:
- verse_def += unicode(self.verse_counts[verse_def[0]])
- elif int(verse_def[1:]) > self.verse_counts[verse_def[0]]:
- self.verse_counts[verse_def[0]] = int(verse_def[1:])
+ verse_def += unicode(self.verseCounts[verse_def[0]])
+ elif int(verse_def[1:]) > self.verseCounts[verse_def[0]]:
+ self.verseCounts[verse_def[0]] = int(verse_def[1:])
self.verses.append([verse_def, verse_text.rstrip(), lang])
- self.verse_order_list_generated.append(verse_def)
+ self.verseOrderListGenerated.append(verse_def)
- def repeat_verse(self):
+ def repeatVerse(self):
"""
Repeat the previous verse in the verse order
"""
- self.verse_order_list_generated.append(
- self.verse_order_list_generated[-1])
- self.verse_order_list_generated_useful = True
+ self.verseOrderListGenerated.append(
+ self.verseOrderListGenerated[-1])
+ self.verseOrderListGeneratedUseful = True
- def check_complete(self):
+ def checkComplete(self):
"""
Check the mandatory fields are entered (i.e. title and a verse)
Author not checked here, if no author then "Author unknown" is
@@ -278,21 +281,21 @@ class SongImport(QtCore.QObject):
"""
All fields have been set to this song. Write the song to disk.
"""
- if not self.check_complete():
- self.set_defaults()
+ if not self.checkComplete():
+ self.setDefaults()
return False
log.info(u'committing song %s to database', self.title)
song = Song()
song.title = self.title
- if self.import_wizard is not None:
- self.import_wizard.incrementProgressBar(
+ if self.importWizard is not None:
+ self.importWizard.incrementProgressBar(
WizardStrings.ImportingType % song.title)
- song.alternate_title = self.alternate_title
+ song.alternate_title = self.alternateTitle
# Values will be set when cleaning the song.
song.search_title = u''
song.search_lyrics = u''
song.verse_order = u''
- song.song_number = self.song_number
+ song.song_number = self.songNumber
verses_changed_to_other = {}
sxml = SongXML()
other_count = 1
@@ -310,18 +313,18 @@ class SongImport(QtCore.QObject):
verse_def = new_verse_def
sxml.add_verse_to_lyrics(verse_tag, verse_def[1:], verse_text, lang)
song.lyrics = unicode(sxml.extract_xml(), u'utf-8')
- if not len(self.verse_order_list) and \
- self.verse_order_list_generated_useful:
- self.verse_order_list = self.verse_order_list_generated
- for i, current_verse_def in enumerate(self.verse_order_list):
+ if not len(self.verseOrderList) and \
+ self.verseOrderListGeneratedUseful:
+ self.verseOrderList = self.verseOrderListGenerated
+ for i, current_verse_def in enumerate(self.verseOrderList):
if verses_changed_to_other.has_key(current_verse_def):
- self.verse_order_list[i] = \
+ self.verseOrderList[i] = \
verses_changed_to_other[current_verse_def]
- song.verse_order = u' '.join(self.verse_order_list)
+ song.verse_order = u' '.join(self.verseOrderList)
song.copyright = self.copyright
song.comments = self.comments
- song.theme_name = self.theme_name
- song.ccli_number = self.ccli_number
+ song.theme_name = self.themeName
+ song.ccli_number = self.ccliNumber
for authortext in self.authors:
author = self.manager.get_object_filtered(Author,
Author.display_name == authortext)
@@ -330,17 +333,12 @@ class SongImport(QtCore.QObject):
last_name=authortext.split(u' ')[-1],
first_name=u' '.join(authortext.split(u' ')[:-1]))
song.authors.append(author)
- for filename in self.media_files:
- media_file = self.manager.get_object_filtered(MediaFile,
- MediaFile.file_name == filename)
- if not media_file:
- song.media_files.append(MediaFile.populate(file_name=filename))
- if self.song_book_name:
+ if self.songBookName:
song_book = self.manager.get_object_filtered(Book,
- Book.name == self.song_book_name)
+ Book.name == self.songBookName)
if song_book is None:
- song_book = Book.populate(name=self.song_book_name,
- publisher=self.song_book_pub)
+ song_book = Book.populate(name=self.songBookName,
+ publisher=self.songBookPub)
song.book = song_book
for topictext in self.topics:
if not topictext:
@@ -350,38 +348,42 @@ class SongImport(QtCore.QObject):
if topic is None:
topic = Topic.populate(name=topictext)
song.topics.append(topic)
+ # We need to save the song now, before adding the media files, so that
+ # we know where to save the media files to.
clean_song(self.manager, song)
self.manager.save_object(song)
- self.set_defaults()
+ # Now loop through the media files, copy them to the correct location,
+ # and save the song again.
+ for filename, weight in self.mediaFiles:
+ media_file = self.manager.get_object_filtered(MediaFile,
+ MediaFile.file_name == filename)
+ if not media_file:
+ if os.path.dirname(filename):
+ filename = self.copyMediaFile(song.id, filename)
+ song.media_files.append(
+ MediaFile.populate(file_name=filename, weight=weight)
+ )
+ self.manager.save_object(song)
+ self.setDefaults()
return True
- def print_song(self):
+ def copyMediaFile(self, song_id, filename):
"""
- For debugging
+ This method copies the media file to the correct location and returns
+ the new file location.
+
+ ``filename``
+ The file to copy.
"""
- print u'========================================' \
- + u'========================================'
- print u'TITLE: ' + self.title
- print u'ALT TITLE: ' + self.alternate_title
- for (verse_def, verse_text, lang) in self.verses:
- print u'VERSE ' + verse_def + u': ' + verse_text
- print u'ORDER: ' + u' '.join(self.verse_order_list)
- print u'GENERATED ORDER: ' + u' '.join(self.verse_order_list_generated)
- for author in self.authors:
- print u'AUTHOR: ' + author
- if self.copyright:
- print u'COPYRIGHT: ' + self.copyright
- if self.song_book_name:
- print u'BOOK: ' + self.song_book_name
- if self.song_book_pub:
- print u'BOOK PUBLISHER: ' + self.song_book_pub
- if self.song_number:
- print u'NUMBER: ' + self.song_number
- for topictext in self.topics:
- print u'TOPIC: ' + topictext
- if self.comments:
- print u'COMMENTS: ' + self.comments
- if self.theme_name:
- print u'THEME: ' + self.theme_name
- if self.ccli_number:
- print u'CCLI: ' + self.ccli_number
+ if not hasattr(self, u'save_path'):
+ self.save_path = os.path.join(
+ AppLocation.get_section_data_path(
+ self.importWizard.plugin.name),
+ 'audio', str(song_id))
+ if not os.path.exists(self.save_path):
+ os.makedirs(self.save_path)
+ if not filename.startswith(self.save_path):
+ oldfile, filename = filename, os.path.join(self.save_path,
+ os.path.split(filename)[1])
+ shutil.copyfile(oldfile, filename)
+ return filename
diff --git a/openlp/plugins/songs/lib/songshowplusimport.py b/openlp/plugins/songs/lib/songshowplusimport.py
index c50df8752..109b7389f 100644
--- a/openlp/plugins/songs/lib/songshowplusimport.py
+++ b/openlp/plugins/songs/lib/songshowplusimport.py
@@ -95,118 +95,120 @@ class SongShowPlusImport(SongImport):
"""
SongImport.__init__(self, manager, **kwargs)
- def do_import(self):
+ def doImport(self):
"""
Receive a single file or a list of files to import.
"""
- if not isinstance(self.import_source, list):
+ if not isinstance(self.importSource, list):
return
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
- for file in self.import_source:
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
+ for file in self.importSource:
+ if self.stopImportFlag:
+ return
self.sspVerseOrderList = []
- otherCount = 0
- otherList = {}
+ other_count = 0
+ other_list = {}
file_name = os.path.split(file)[1]
- self.import_wizard.incrementProgressBar(
+ self.importWizard.incrementProgressBar(
WizardStrings.ImportingType % file_name, 0)
- songData = open(file, 'rb')
+ song_data = open(file, 'rb')
while True:
- blockKey, = struct.unpack("I", songData.read(4))
+ block_key, = struct.unpack("I", song_data.read(4))
# The file ends with 4 NUL's
- if blockKey == 0:
+ if block_key == 0:
break
- nextBlockStarts, = struct.unpack("I", songData.read(4))
- nextBlockStarts += songData.tell()
- if blockKey in (VERSE, CHORUS, BRIDGE):
- null, verseNo, = struct.unpack("BB", songData.read(2))
- elif blockKey == CUSTOM_VERSE:
- null, verseNameLength, = struct.unpack("BB",
- songData.read(2))
- verseName = songData.read(verseNameLength)
- lengthDescriptorSize, = struct.unpack("B", songData.read(1))
- log.debug(lengthDescriptorSize)
+ next_block_starts, = struct.unpack("I", song_data.read(4))
+ next_block_starts += song_data.tell()
+ if block_key in (VERSE, CHORUS, BRIDGE):
+ null, verse_no, = struct.unpack("BB", song_data.read(2))
+ elif block_key == CUSTOM_VERSE:
+ null, verse_name_length, = struct.unpack("BB",
+ song_data.read(2))
+ verse_name = song_data.read(verse_name_length)
+ length_descriptor_size, = struct.unpack("B", song_data.read(1))
+ log.debug(length_descriptor_size)
# Detect if/how long the length descriptor is
- if lengthDescriptorSize == 12 or lengthDescriptorSize == 20:
- lengthDescriptor, = struct.unpack("I", songData.read(4))
- elif lengthDescriptorSize == 2:
- lengthDescriptor = 1
- elif lengthDescriptorSize == 9:
- lengthDescriptor = 0
+ if length_descriptor_size == 12 or length_descriptor_size == 20:
+ length_descriptor, = struct.unpack("I", song_data.read(4))
+ elif length_descriptor_size == 2:
+ length_descriptor = 1
+ elif length_descriptor_size == 9:
+ length_descriptor = 0
else:
- lengthDescriptor, = struct.unpack("B", songData.read(1))
- log.debug(lengthDescriptorSize)
- data = songData.read(lengthDescriptor)
- if blockKey == TITLE:
+ length_descriptor, = struct.unpack("B", song_data.read(1))
+ log.debug(length_descriptor_size)
+ data = song_data.read(length_descriptor)
+ if block_key == TITLE:
self.title = unicode(data, u'cp1252')
- elif blockKey == AUTHOR:
+ elif block_key == AUTHOR:
authors = data.split(" / ")
for author in authors:
if author.find(",") !=-1:
authorParts = author.split(", ")
author = authorParts[1] + " " + authorParts[0]
- self.parse_author(unicode(author, u'cp1252'))
- elif blockKey == COPYRIGHT:
- self.add_copyright(unicode(data, u'cp1252'))
- elif blockKey == CCLI_NO:
- self.ccli_number = int(data)
- elif blockKey == VERSE:
- self.add_verse(unicode(data, u'cp1252'),
- "%s%s" % (VerseType.Tags[VerseType.Verse], verseNo))
- elif blockKey == CHORUS:
- self.add_verse(unicode(data, u'cp1252'),
- "%s%s" % (VerseType.Tags[VerseType.Chorus], verseNo))
- elif blockKey == BRIDGE:
- self.add_verse(unicode(data, u'cp1252'),
- "%s%s" % (VerseType.Tags[VerseType.Bridge], verseNo))
- elif blockKey == TOPIC:
+ self.parseAuthor(unicode(author, u'cp1252'))
+ elif block_key == COPYRIGHT:
+ self.addCopyright(unicode(data, u'cp1252'))
+ elif block_key == CCLI_NO:
+ self.ccliNumber = int(data)
+ elif block_key == VERSE:
+ self.addVerse(unicode(data, u'cp1252'),
+ "%s%s" % (VerseType.Tags[VerseType.Verse], verse_no))
+ elif block_key == CHORUS:
+ self.addVerse(unicode(data, u'cp1252'),
+ "%s%s" % (VerseType.Tags[VerseType.Chorus], verse_no))
+ elif block_key == BRIDGE:
+ self.addVerse(unicode(data, u'cp1252'),
+ "%s%s" % (VerseType.Tags[VerseType.Bridge], verse_no))
+ elif block_key == TOPIC:
self.topics.append(unicode(data, u'cp1252'))
- elif blockKey == COMMENTS:
+ elif block_key == COMMENTS:
self.comments = unicode(data, u'cp1252')
- elif blockKey == VERSE_ORDER:
- verseTag = self.toOpenLPVerseTag(data, True)
- if verseTag:
- if not isinstance(verseTag, unicode):
- verseTag = unicode(verseTag, u'cp1252')
- self.sspVerseOrderList.append(verseTag)
- elif blockKey == SONG_BOOK:
- self.song_book_name = unicode(data, u'cp1252')
- elif blockKey == SONG_NUMBER:
- self.song_number = ord(data)
- elif blockKey == CUSTOM_VERSE:
- verseTag = self.toOpenLPVerseTag(verseName)
- self.add_verse(unicode(data, u'cp1252'), verseTag)
+ elif block_key == VERSE_ORDER:
+ verse_tag = self.toOpenLPVerseTag(data, True)
+ if verse_tag:
+ if not isinstance(verse_tag, unicode):
+ verse_tag = unicode(verse_tag, u'cp1252')
+ self.sspVerseOrderList.append(verse_tag)
+ elif block_key == SONG_BOOK:
+ self.songBookName = unicode(data, u'cp1252')
+ elif block_key == SONG_NUMBER:
+ self.songNumber = ord(data)
+ elif block_key == CUSTOM_VERSE:
+ verse_tag = self.toOpenLPVerseTag(verse_name)
+ self.addVerse(unicode(data, u'cp1252'), verse_tag)
else:
log.debug("Unrecognised blockKey: %s, data: %s"
- % (blockKey, data))
- songData.seek(nextBlockStarts)
- self.verse_order_list = self.sspVerseOrderList
- songData.close()
+ % (block_key, data))
+ song_data.seek(next_block_starts)
+ self.verseOrderList = self.sspVerseOrderList
+ song_data.close()
if not self.finish():
- self.log_error(file)
+ self.logError(file)
- def toOpenLPVerseTag(self, verseName, ignoreUnique=False):
- if verseName.find(" ") != -1:
- verseParts = verseName.split(" ")
- verseType = verseParts[0]
- verseNumber = verseParts[1]
+ def toOpenLPVerseTag(self, verse_name, ignore_unique=False):
+ if verse_name.find(" ") != -1:
+ verse_parts = verse_name.split(" ")
+ verse_type = verse_parts[0]
+ verse_number = verse_parts[1]
else:
- verseType = verseName
- verseNumber = "1"
- verseType = verseType.lower()
- if verseType == "verse":
- verseTag = VerseType.Tags[VerseType.Verse]
- elif verseType == "chorus":
- verseTag = VerseType.Tags[VerseType.Chorus]
- elif verseType == "bridge":
- verseTag = VerseType.Tags[VerseType.Bridge]
- elif verseType == "pre-chorus":
- verseTag = VerseType.Tags[VerseType.PreChorus]
+ verse_type = verse_name
+ verse_number = "1"
+ verse_type = verse_type.lower()
+ if verse_type == "verse":
+ verse_tag = VerseType.Tags[VerseType.Verse]
+ elif verse_type == "chorus":
+ verse_tag = VerseType.Tags[VerseType.Chorus]
+ elif verse_type == "bridge":
+ verse_tag = VerseType.Tags[VerseType.Bridge]
+ elif verse_type == "pre-chorus":
+ verse_tag = VerseType.Tags[VerseType.PreChorus]
else:
- if not self.otherList.has_key(verseName):
- if ignoreUnique:
+ if not self.otherList.has_key(verse_name):
+ if ignore_unique:
return None
self.otherCount = self.otherCount + 1
- self.otherList[verseName] = str(self.otherCount)
- verseTag = VerseType.Tags[VerseType.Other]
- verseNumber = self.otherList[verseName]
- return verseTag + verseNumber
+ self.otherList[verse_name] = str(self.otherCount)
+ verse_tag = VerseType.Tags[VerseType.Other]
+ verse_number = self.otherList[verse_name]
+ return verse_tag + verse_number
diff --git a/openlp/plugins/songs/lib/upgrade.py b/openlp/plugins/songs/lib/upgrade.py
new file mode 100644
index 000000000..fae3400c2
--- /dev/null
+++ b/openlp/plugins/songs/lib/upgrade.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+"""
+The :mod:`upgrade` module provides a way for the database and schema that is the
+backend for the Songs plugin
+"""
+
+from sqlalchemy import Column, ForeignKey, Table, types
+from sqlalchemy.sql.expression import func
+from migrate import changeset
+from migrate.changeset.constraint import ForeignKeyConstraint
+
+__version__ = 2
+
+def upgrade_setup(metadata):
+ """
+ Set up the latest revision all tables, with reflection, needed for the
+ upgrade process. If you want to drop a table, you need to remove it from
+ here, and add it to your upgrade function.
+ """
+ tables = {
+ u'authors': Table(u'authors', metadata, autoload=True),
+ u'media_files': Table(u'media_files', metadata, autoload=True),
+ u'song_books': Table(u'song_books', metadata, autoload=True),
+ u'songs': Table(u'songs', metadata, autoload=True),
+ u'topics': Table(u'topics', metadata, autoload=True),
+ u'authors_songs': Table(u'authors_songs', metadata, autoload=True),
+ u'songs_topics': Table(u'songs_topics', metadata, autoload=True)
+ }
+ return tables
+
+
+def upgrade_1(session, metadata, tables):
+ """
+ Version 1 upgrade.
+
+ This upgrade removes the many-to-many relationship between songs and
+ media_files and replaces it with a one-to-many, which is far more
+ representative of the real relationship between the two entities.
+
+ In order to facilitate this one-to-many relationship, a song_id column is
+ added to the media_files table, and a weight column so that the media
+ files can be ordered.
+ """
+ Table(u'media_files_songs', metadata, autoload=True).drop(checkfirst=True)
+ Column(u'song_id', types.Integer(), default=None)\
+ .create(table=tables[u'media_files'], populate_default=True)
+ Column(u'weight', types.Integer(), default=0)\
+ .create(table=tables[u'media_files'], populate_default=True)
+ if metadata.bind.url.get_dialect().name != 'sqlite':
+ # SQLite doesn't support ALTER TABLE ADD CONSTRAINT
+ ForeignKeyConstraint([u'song_id'], [u'songs.id'],
+ table=tables[u'media_files']).create()
+
+def upgrade_2(session, metadata, tables):
+ """
+ Version 2 upgrade.
+
+ This upgrade adds a create_date and last_modified date to the songs table
+ """
+ Column(u'create_date', types.DateTime(), default=func.now())\
+ .create(table=tables[u'songs'], populate_default=True)
+ Column(u'last_modified', types.DateTime(), default=func.now())\
+ .create(table=tables[u'songs'], populate_default=True)
diff --git a/openlp/plugins/songs/lib/wowimport.py b/openlp/plugins/songs/lib/wowimport.py
index e2a5820a5..19ed3e9c0 100644
--- a/openlp/plugins/songs/lib/wowimport.py
+++ b/openlp/plugins/songs/lib/wowimport.py
@@ -98,56 +98,58 @@ class WowImport(SongImport):
"""
SongImport.__init__(self, manager, **kwargs)
- def do_import(self):
+ def doImport(self):
"""
Receive a single file or a list of files to import.
"""
- if isinstance(self.import_source, list):
- self.import_wizard.progressBar.setMaximum(len(self.import_source))
- for file in self.import_source:
+ if isinstance(self.importSource, list):
+ self.importWizard.progressBar.setMaximum(len(self.importSource))
+ for file in self.importSource:
+ if self.stopImportFlag:
+ return
file_name = os.path.split(file)[1]
# Get the song title
self.title = file_name.rpartition(u'.')[0]
- songData = open(file, 'rb')
- if songData.read(19) != u'WoW File\nSong Words':
- self.log_error(file)
+ song_data = open(file, 'rb')
+ if song_data.read(19) != u'WoW File\nSong Words':
+ self.logError(file)
continue
# Seek to byte which stores number of blocks in the song
- songData.seek(56)
- no_of_blocks = ord(songData.read(1))
+ song_data.seek(56)
+ no_of_blocks = ord(song_data.read(1))
# Seek to the beging of the first block
- songData.seek(82)
+ song_data.seek(82)
for block in range(no_of_blocks):
- self.lines_to_read = ord(songData.read(1))
+ self.linesToRead = ord(song_data.read(1))
# Skip 3 nulls to the beginnig of the 1st line
- songData.seek(3, os.SEEK_CUR)
+ song_data.seek(3, os.SEEK_CUR)
block_text = u''
- while self.lines_to_read:
- self.line_text = unicode(
- songData.read(ord(songData.read(1))), u'cp1252')
- songData.seek(1, os.SEEK_CUR)
+ while self.linesToRead:
+ self.lineText = unicode(
+ song_data.read(ord(song_data.read(1))), u'cp1252')
+ song_data.seek(1, os.SEEK_CUR)
if block_text:
block_text += u'\n'
- block_text += self.line_text
- self.lines_to_read -= 1
- block_type = BLOCK_TYPES[ord(songData.read(1))]
+ block_text += self.lineText
+ self.linesToRead -= 1
+ block_type = BLOCK_TYPES[ord(song_data.read(1))]
# Skip 3 nulls at the end of the block
- songData.seek(3, os.SEEK_CUR)
+ song_data.seek(3, os.SEEK_CUR)
# Blocks are seperated by 2 bytes, skip them, but not if
# this is the last block!
if block + 1 < no_of_blocks:
- songData.seek(2, os.SEEK_CUR)
- self.add_verse(block_text, block_type)
+ song_data.seek(2, os.SEEK_CUR)
+ self.addVerse(block_text, block_type)
# Now to extract the author
- author_length = ord(songData.read(1))
+ author_length = ord(song_data.read(1))
if author_length:
- self.parse_author(
- unicode(songData.read(author_length), u'cp1252'))
+ self.parseAuthor(
+ unicode(song_data.read(author_length), u'cp1252'))
# Finally the copyright
- copyright_length = ord(songData.read(1))
+ copyright_length = ord(song_data.read(1))
if copyright_length:
- self.add_copyright(unicode(
- songData.read(copyright_length), u'cp1252'))
- songData.close()
+ self.addCopyright(unicode(
+ song_data.read(copyright_length), u'cp1252'))
+ song_data.close()
if not self.finish():
- self.log_error(file)
+ self.logError(file)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 193a823d5..9da7a0a65 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -343,7 +343,7 @@ class OpenLyrics(object):
self._process_topics(properties, song)
clean_song(self.manager, song)
self.manager.save_object(song)
- return song.id
+ return song
def _add_text_to_element(self, tag, parent, text=None, label=None):
if label:
diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py
index 8a773be90..54b1d3f1f 100644
--- a/openlp/plugins/songs/songsplugin.py
+++ b/openlp/plugins/songs/songsplugin.py
@@ -36,7 +36,8 @@ from openlp.core.lib import Plugin, StringContent, build_icon, translate, \
from openlp.core.lib.db import Manager
from openlp.core.lib.ui import UiStrings, base_action, icon_action
from openlp.core.utils.actions import ActionList
-from openlp.plugins.songs.lib import clean_song, SongMediaItem, SongsTab
+from openlp.plugins.songs.lib import clean_song, upgrade, SongMediaItem, \
+ SongsTab
from openlp.plugins.songs.lib.db import init_schema, Song
from openlp.plugins.songs.lib.importer import SongFormat
from openlp.plugins.songs.lib.olpimport import OpenLPSongImport
@@ -58,8 +59,8 @@ class SongsPlugin(Plugin):
Create and set up the Songs plugin.
"""
Plugin.__init__(self, u'songs', plugin_helpers, SongMediaItem, SongsTab)
+ self.manager = Manager(u'songs', init_schema, upgrade_mod=upgrade)
self.weight = -10
- self.manager = Manager(u'songs', init_schema)
self.icon_path = u':/plugins/plugin_songs.png'
self.icon = build_icon(self.icon_path)
@@ -195,7 +196,7 @@ class SongsPlugin(Plugin):
def importSongs(self, format, **kwargs):
class_ = SongFormat.get_class(format)
importer = class_(self.manager, **kwargs)
- importer.register(self.mediaItem.import_wizard)
+ importer.register(self.mediaItem.importWizard)
return importer
def setPluginTextStrings(self):
@@ -251,7 +252,7 @@ class SongsPlugin(Plugin):
progress.setValue(idx)
Receiver.send_message(u'openlp_process_events')
importer = OpenLPSongImport(self.manager, filename=db)
- importer.do_import()
+ importer.doImport()
progress.setValue(len(song_dbs))
self.mediaItem.onSearchTextButtonClick()
diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py
index 303789d20..f7b04a656 100644
--- a/openlp/plugins/songusage/forms/songusagedetailform.py
+++ b/openlp/plugins/songusage/forms/songusagedetailform.py
@@ -117,9 +117,11 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog):
try:
fileHandle = open(outname, u'w')
for instance in usage:
- record = u'\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\"\n' % (
- instance.usagedate, instance.usagetime, instance.title,
- instance.copyright, instance.ccl_number, instance.authors)
+ record = u'\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",' \
+ u'\"%s\",\"%s\"\n' % ( instance.usagedate,
+ instance.usagetime, instance.title, instance.copyright,
+ instance.ccl_number, instance.authors,
+ instance.plugin_name, instance.source)
fileHandle.write(record.encode(u'utf-8'))
Receiver.send_message(u'openlp_information_message', {
u'title': translate('SongUsagePlugin.SongUsageDetailForm',
diff --git a/openlp/plugins/songusage/lib/db.py b/openlp/plugins/songusage/lib/db.py
index 9a11ef16b..bbd645634 100644
--- a/openlp/plugins/songusage/lib/db.py
+++ b/openlp/plugins/songusage/lib/db.py
@@ -56,7 +56,9 @@ def init_schema(url):
Column(u'title', types.Unicode(255), nullable=False),
Column(u'authors', types.Unicode(255), nullable=False),
Column(u'copyright', types.Unicode(255)),
- Column(u'ccl_number', types.Unicode(65))
+ Column(u'ccl_number', types.Unicode(65)),
+ Column(u'plugin_name', types.Unicode(20)),
+ Column(u'source', types.Unicode(10))
)
mapper(SongUsageItem, songusage_table)
diff --git a/openlp/plugins/songusage/lib/upgrade.py b/openlp/plugins/songusage/lib/upgrade.py
new file mode 100644
index 000000000..50ca32fcd
--- /dev/null
+++ b/openlp/plugins/songusage/lib/upgrade.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+"""
+The :mod:`upgrade` module provides a way for the database and schema that is the
+backend for the SongsUsage plugin
+"""
+
+from sqlalchemy import Column, Table, types
+from migrate import changeset
+
+__version__ = 1
+
+def upgrade_setup(metadata):
+ """
+ Set up the latest revision all tables, with reflection, needed for the
+ upgrade process. If you want to drop a table, you need to remove it from
+ here, and add it to your upgrade function.
+ """
+ tables = {
+ u'songusage_data': Table(u'songusage_data', metadata, autoload=True)
+ }
+ return tables
+
+
+def upgrade_1(session, metadata, tables):
+ """
+ Version 1 upgrade.
+
+ This upgrade adds two new fields to the songusage database
+ """
+ Column(u'plugin_name', types.Unicode(20), default=u'') \
+ .create(table=tables[u'songusage_data'], populate_default=True)
+ Column(u'source', types.Unicode(10), default=u'') \
+ .create(table=tables[u'songusage_data'], populate_default=True)
diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py
index d63467792..495d3103d 100644
--- a/openlp/plugins/songusage/songusageplugin.py
+++ b/openlp/plugins/songusage/songusageplugin.py
@@ -37,6 +37,7 @@ from openlp.core.lib.ui import base_action, shortcut_action
from openlp.core.utils.actions import ActionList
from openlp.plugins.songusage.forms import SongUsageDetailForm, \
SongUsageDeleteForm
+from openlp.plugins.songusage.lib import upgrade
from openlp.plugins.songusage.lib.db import init_schema, SongUsageItem
log = logging.getLogger(__name__)
@@ -46,11 +47,11 @@ class SongUsagePlugin(Plugin):
def __init__(self, plugin_helpers):
Plugin.__init__(self, u'songusage', plugin_helpers)
+ self.manager = Manager(u'songusage', init_schema, upgrade_mod=upgrade)
self.weight = -4
self.icon = build_icon(u':/plugins/plugin_songusage.png')
self.activeIcon = build_icon(u':/songusage/song_usage_active.png')
self.inactiveIcon = build_icon(u':/songusage/song_usage_inactive.png')
- self.manager = None
self.songUsageActive = False
def addToolsMenuItem(self, tools_menu):
@@ -121,7 +122,10 @@ class SongUsagePlugin(Plugin):
Plugin.initialise(self)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'slidecontroller_live_started'),
- self.onReceiveSongUsage)
+ self.displaySongUsage)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'print_service_started'),
+ self.printSongUsage)
self.songUsageActive = QtCore.QSettings().value(
self.settingsSection + u'/active',
QtCore.QVariant(False)).toBool()
@@ -134,8 +138,6 @@ class SongUsagePlugin(Plugin):
translate('SongUsagePlugin', 'Song Usage'))
action_list.add_action(self.songUsageReport,
translate('SongUsagePlugin', 'Song Usage'))
- if self.manager is None:
- self.manager = Manager(u'songusage', init_schema)
self.songUsageDeleteForm = SongUsageDeleteForm(self.manager,
self.formparent)
self.songUsageDetailForm = SongUsageDetailForm(self, self.formparent)
@@ -194,10 +196,21 @@ class SongUsagePlugin(Plugin):
self.songUsageStatus.blockSignals(False)
- def onReceiveSongUsage(self, item):
+ def displaySongUsage(self, item):
"""
- Song Usage for live song from SlideController
+ Song Usage for which has been displayed
"""
+ self._add_song_usage(unicode(translate('SongUsagePlugin',
+ 'display')), item)
+
+ def printSongUsage(self, item):
+ """
+ Song Usage for which has been printed
+ """
+ self._add_song_usage(unicode(translate('SongUsagePlugin',
+ 'printed')), item)
+
+ def _add_song_usage(self, source, item):
audit = item[0].audit
if self.songUsageActive and audit:
song_usage_item = SongUsageItem()
@@ -207,6 +220,8 @@ class SongUsagePlugin(Plugin):
song_usage_item.copyright = audit[2]
song_usage_item.ccl_number = audit[3]
song_usage_item.authors = u' '.join(audit[1])
+ song_usage_item.plugin_name = item[0].name
+ song_usage_item.source = source
self.manager.save_object(song_usage_item)
def onSongUsageDelete(self):
diff --git a/resources/debian/debian/control b/resources/debian/debian/control
index 220b500d2..a1c2298e9 100644
--- a/resources/debian/debian/control
+++ b/resources/debian/debian/control
@@ -11,7 +11,7 @@ Package: openlp
Architecture: all
Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, python-qt4,
python-qt4-phonon, python-sqlalchemy, python-chardet, python-beautifulsoup,
- python-lxml, python-sqlite, python-enchant
+ python-lxml, python-sqlite, python-enchant, python-mako, python-migrate
Conflicts: python-openlp
Description: Church lyrics projection application
OpenLP is free church presentation software, or lyrics projection software,
diff --git a/resources/forms/mediafilesdialog.ui b/resources/forms/mediafilesdialog.ui
new file mode 100644
index 000000000..427e27548
--- /dev/null
+++ b/resources/forms/mediafilesdialog.ui
@@ -0,0 +1,95 @@
+
+
+ MediaFilesDialog
+
+
+ Qt::ApplicationModal
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Select Media File(s)
+
+
+ true
+
+
+
+ 8
+
+
+ 8
+
+ -
+
+
+ Select one or more audio files from the list below, and click OK to import them into this song.
+
+
+ true
+
+
+
+ -
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ MediaFilesDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ MediaFilesDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts
index 1b7cf22c5..df722c5a8 100644
--- a/resources/i18n/af.ts
+++ b/resources/i18n/af.ts
@@ -827,17 +827,17 @@ vraag afgelaai word en dus is 'n internet konneksie nodig.
Enkel en dubbel Bybel vers soek resultate kan nie kombineer word nie. Wis die resultate uit en begin 'n nuwe soektog?
-
+
Die Bybel is nie ten volle gelaai nie.
-
+
Informasie
-
+
Die tweede Bybel het nie al die verse wat in die hoof Bybel is nie. Slegs verse wat in beide Bybels voorkom, sal gewys word. %d verse is nie by die resultate ingesluit nie.
@@ -1329,24 +1329,24 @@ word en dus is 'n Internet verbinding nodig.
ImagePlugin
-
+
<strong>Beeld Mini-program</strong><br/>Die beeld mini-program verskaf vertoning van beelde.<br/>Een van die onderskeidende kenmerke van hierdie mini-program is die vermoë om beelde te groepeer in die diensbestuurder wat dit maklik maak om verskeie beelde te vertoon. Die mini-program kan ook van OpenLP se "tydgebonde herhaling"-funksie gebruik maak om 'n automatiese skyfe-vertoning te verkry. Verder kan beelde van hierdie mini-program gebruik word om die huidige tema se agtergrond te vervang hoewel 'n tema sy eie agtergrond het.
-
+
name singular
Beeld
-
+
name plural
Beelde
-
+
container title
Beelde
@@ -1387,37 +1387,37 @@ word en dus is 'n Internet verbinding nodig.
Voeg die geselekteerde Beeld by die diens.
-
+
Laai 'n nuwe beeld.
-
+
Voeg 'n nuwe beeld by.
-
+
Redigeer die geselekteerde beeld.
-
+
Wis die geselekteerde beeld uit.
-
+
Skou die geselekteerde beeld.
-
+
Stuur die geselekteerde beeld regstreeks.
-
+
Voeg die geselekteerde beeld by die diens.
@@ -1443,38 +1443,56 @@ word en dus is 'n Internet verbinding nodig.
'n Beeld om uit te wis moet geselekteer word.
-
+
'n Beeld wat die agtergrond vervang moet gekies word.
-
+
Vermisde Beeld(e)
-
+
Die volgende beeld(e) bestaan nie meer nie: %s
-
+
Die volgende beeld(e) bestaan nie meer nie: %s
Voeg steeds die ander beelde by?
-
+
Daar was 'n probleem om die agtergrond te vervang. Die beeld lêer "%s" bestaan ine meer nie.
-
+
+
+ ImagesPlugin.ImageTab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MediaPlugin
@@ -2777,287 +2795,287 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
OpenLP.MainWindow
-
+
&Lêer
-
+
&Invoer
-
+
Uitvo&er
-
+
&Bekyk
-
+
M&odus
-
+
&Gereedskap
-
+
Ver&stellings
-
+
Taa&l
-
+
&Hulp
-
+
Media Bestuurder
-
+
Diens Bestuurder
-
+
Tema Bestuurder
-
+
&Nuwe
-
+
Maak &Oop
-
+
Maak 'n bestaande diens oop.
-
+
&Stoor
-
+
Stoor die huidige diens na skyf.
-
+
Stoor &As...
-
+
Stoor Diens As
-
+
Stoor die huidige diens onder 'n nuwe naam.
-
+
&Uitgang
-
+
Sluit OpenLP Af
-
+
&Tema
-
+
&Konfigureer OpenLP...
-
+
&Media Bestuurder
-
+
Wissel Media Bestuurder
-
+
Wissel sigbaarheid van die media bestuurder.
-
+
&Tema Bestuurder
-
+
Wissel Tema Bestuurder
-
+
Wissel sigbaarheid van die tema bestuurder.
-
+
&Diens Bestuurder
-
+
Wissel Diens Bestuurder
-
+
Wissel sigbaarheid van die diens bestuurder.
-
+
Voorskou &Paneel
-
+
Wissel Voorskou Paneel
-
+
Wissel sigbaarheid van die voorskou paneel.
-
+
Regstreekse Panee&l
-
+
Wissel Regstreekse Paneel
-
+
Wissel sigbaarheid van die regstreekse paneel.
-
+
Mini-&program Lys
-
+
Lys die Mini-programme
-
+
Gebr&uikers Gids
-
+
&Aangaande
-
+
Meer inligting aangaande OpenLP
-
+
&Aanlyn Hulp
-
+
&Web Tuiste
-
+
Gebruik die sisteem se taal as dit beskikbaar is.
-
+
Verstel die koppelvlak taal na %s
-
+
Voeg Gereedskaps&tuk by...
-
+
Voeg 'n applikasie by die lys van gereedskapstukke.
-
+
&Verstek
-
+
Verstel skou modus terug na verstek modus.
-
+
Op&stel
-
+
Verstel die skou modus na Opstel modus.
-
+
&Regstreeks
-
+
Verstel die skou modus na Regstreeks.
-
+
@@ -3066,22 +3084,22 @@ You can download the latest version from http://openlp.org/.
Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/.
-
+
OpenLP Weergawe is Opdateer
-
+
OpenLP Hoof Vertoning Blanko
-
+
Die Hoof Skerm is afgeskakel
-
+
Verstek Tema: %s
@@ -3092,17 +3110,17 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/.
Afrikaans
-
+
Konfigureer Kor&tpaaie...
-
+
Mook OpenLP toe
-
+
Maak OpenLP sekerlik toe?
@@ -3112,12 +3130,12 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/.
Druk die huidige Diens Bestelling.
-
+
Maak &Data Lêer oop...
-
+
Maak die lêer waar liedere, bybels en ander data is, oop.
@@ -3127,78 +3145,159 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/.
&Konfigureer Vertoon Haakies
-
+
Spoor outom&aties op
-
+
Opdateer Tema Beelde
-
+
Opdateer die voorskou beelde vir alle temas.
-
+
Druk die huidige diens.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
Clear List of recent files
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Verstellings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Maak Lêer oop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.Manager
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
OpenLP.MediaManagerItem
@@ -3284,7 +3383,7 @@ Suffix not supported
-
+
@@ -3448,12 +3547,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3549,14 +3648,14 @@ Suffix not supported
&Verander Item Tema
-
+
Lêer is nie 'n geldige diens nie.
Die inhoud enkodering is nie UTF-8 nie.
-
+
Lêer is nie 'n geldige diens nie.
@@ -3601,7 +3700,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Maak Lêer oop
-
+
OpenLP Diens Lêers (*.osz)
@@ -3631,7 +3730,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Stuur die geselekteerde item Regstreeks.
-
+
Redigeer Diens
@@ -3651,27 +3750,27 @@ Die inhoud enkodering is nie UTF-8 nie.
Vertoo&n Regstreeks
-
+
Die huidige diens was verander. Stoor hierdie diens?
-
+
Lêer kon nie oopgemaak word nie omdat dit korrup is.
-
+
Leë Lêer
-
+
Die diens lêer het geen data inhoud nie.
-
+
Korrupte Lêer
@@ -3716,22 +3815,22 @@ Die inhoud enkodering is nie UTF-8 nie.
Kies 'n tema vir die diens.
-
+
Die lêer is óf korrup óf is nie 'n OpenLP 2.0 diens lêer nie.
-
+
-
+
-
+
@@ -4012,32 +4111,32 @@ Die inhoud enkodering is nie UTF-8 nie.
OpenLP.ThemeForm
-
+
Selekteer Beeld
-
+
Tema Naam Vermis
-
+
Daar is nie 'n naam vir hierdie tema nie. Voer asseblief een in.
-
+
Tema Naam Ongeldig
-
+
Ongeldige tema naam. Voer asseblief een in.
-
+
(ongeveer %d lyne per skyfie)
@@ -4115,7 +4214,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Kies 'n tema om te redigeer.
-
+
Die standaard tema kan nie uitgewis word nie.
@@ -4167,7 +4266,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Lêer is nie 'n geldige tema nie.
-
+
Tema %s is in gebruik deur die %s mini-program.
@@ -4217,7 +4316,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Wis %s tema uit?
-
+
Validerings Fout
@@ -4241,255 +4340,260 @@ Die inhoud enkodering is nie UTF-8 nie.
OpenLP.ThemeWizard
-
+
Tema Gids
-
+
Welkom by die Tema Gids
-
+
Stel die Agtergrond Op
-
+
Stel jou tema se agtergrond op volgens die parameters hier onder.
-
+
Agtergrond tipe:
-
+
Soliede Kleur
-
+
Gradiënt
-
+
Kleur:
-
+
Gradiënt:
-
+
Horisontaal
-
+
Vertikaal
-
+
Sirkelvormig
-
+
Links Bo - Regs Onder
-
+
Links Onder - Regs Bo
-
+
Hoof Area Skrif Gegewens
-
+
Definieër die skrif en vertoon karrakters vir die Vertoon teks
-
+
Skrif:
-
+
Grootte:
-
+
Lyn Spasiëring:
-
+
&Buitelyn:
-
+
&Skaduwee:
-
+
Vetdruk
-
+
Italiaans
-
+
Voetskrif Area Skrif Gegewens
-
+
Definieër die skrif en vertoon karraktereienskappe vir die Voetskrif teks
-
+
Teks Formattering Gegewens
-
+
Laat toe dat addisionele vertoon formattering inligting gedifinieër word
-
+
Horisontale Sporing:
-
+
Links
-
+
Regs
-
+
Middel
-
+
Uitvoer Area Liggings
-
+
Laat toe dat die hoof en voetskrif areas verander en geskuif word.
-
+
&Hoof Area
-
+
Gebr&uik verstek ligging
-
+
X posisie:
-
+
px
-
+
Y posisie:
-
+
Wydte:
-
+
Hoogte:
-
+
Gebruik verstek ligging
-
+
Stoor en Voorskou
-
+
Besigtig die tema en stoor dit waarna die huidige een vervang, of verander die naam om 'n nuwe een te skep
-
+
Tema naam:
-
+
Hierdie gids sal help om temas te skep en te redigeer. Klik die volgende knoppie hieronder om die proses te begin deur jou agtergrond op te stel.
-
+
Oorskakel effekte:
-
+
&Voetskrif Area
-
+
Redigeer Tema - %s
-
+
-
+
+
+
+
+ Agtergrond kleur:
+
OpenLP.ThemesTab
@@ -4880,7 +4984,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Gereed.
-
+
Invoer begin...
@@ -5425,126 +5529,141 @@ Die inhoud enkodering is nie UTF-8 nie.
SongUsagePlugin
-
+
&Volg Lied Gebruik
-
+
Wis Volg &Data Uit
-
+
Wis lied volg data uit tot en met 'n spesifieke datum.
-
+
Onttr&ek Volg Data
-
+
Genereer 'n verslag oor lied-gebruik.
-
+
Wissel Volging
-
+
Wissel lied-gebruik volging.
-
+
<strong>LiedGebruik Mini-program</strong><br/>Die mini-program volg die gebruik van liedere in dienste.
-
+
name singular
Lied Gebruik
-
+
name plural
Lied Gebruik
-
+
container title
Lied Gebruik
-
+
Lied Gebruik
-
+
-
+
+
+
+
+
+
+
+
+
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Wis Lied Gebruik Data Uit
-
+
Wis Geselekteerde Lied Gebruik Gebeure uit?
-
+
Wis regtig die geselekteerde Diens Gebruik data uit?
-
+
Uitwissing Suksesvol
-
+
Al die gevraagde data is suksesvol uitgewis.
+
+
+
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Diens Gebruik Ontrekking
-
+
Selekteer Datum Grense
-
+
tot
-
+
Rapporteer Ligging
@@ -5559,12 +5678,12 @@ Die inhoud enkodering is nie UTF-8 nie.
usage_detail_%s_%s.txt
-
+
Verslag Skepping
-
+
@@ -5586,130 +5705,130 @@ was suksesvol geskep.
SongsPlugin
-
+
&Lied
-
+
Voer liedere in deur van die invoer helper gebruik te maak.
-
+
<strong>Liedere Mini-program</strong><br/>Die liedere mini-program verskaf die vermoë om liedere te vertoon en te bestuur.
-
+
He&r-indeks Liedere
-
+
Her-indeks die liedere databasis om lied-soektogte en organisering te verbeter.
-
+
Besig om liedere indek te herskep...
-
+
name singular
Lied
-
+
name plural
Liedere
-
+
container title
Liedere
-
+
Arabies (CP-1256)
-
+
Balties (CP-1257)
-
+
Sentraal Europees (CP-1250)
-
+
Cyrillies (CP-1251)
-
+
Grieks (CP-1253)
-
+
Hebreeus (CP-1255)
-
+
Japanees (CP-932)
-
+
Koreaans (CP-949)
-
+
Vereenvoudigde Chinees (CP-936)
-
+
Thai (CP-874)
-
+
Tradisionele Chinees (CP-950)
-
+
Turks (CP-1254)
-
+
Viëtnamees (CP-1258)
-
+
Wes-Europees (CP-1252)
-
+
Karrakter Enkodering
-
+
@@ -5719,14 +5838,14 @@ Gewoonlik is die reeds-geselekteerde
keuse voldoende.
-
+
Kies asseblief die karrakter enkodering.
Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.
-
+
Voer liedere uit deur gebruik te maak van die uitvoer gids.
@@ -5761,32 +5880,32 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Voeg die geselekteerde Lied by die diens.
-
+
Voeg 'n nuwe lied by.
-
+
Redigeer die geselekteerde lied.
-
+
Wis die geselekteerde lied uit.
-
+
Skou die geselekteerde lied.
-
+
Stuur die geselekteerde lied regstreeks.
-
+
Voeg die geselekteerde lied by die diens.
@@ -6078,7 +6197,7 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.
- Hierdie gids sal help om die liedere na die oop en gratis OpenLyrics aanbiddigs-formaat uit te voer.
+ Hierdie gids sal help om die liedere na die oop en gratis OpenLyrics aanbiddigs-formaat uit te voer.
@@ -6141,7 +6260,7 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.'n Lêer gids moet gespesifiseer word.
-
+
Kies Bestemming Lêer gids
@@ -6150,6 +6269,11 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Select the directory where you want the songs to be saved.
Kies die gids waar die liedere gestoor moet word.
+
+
+
+
+
SongsPlugin.ImportWizardForm
@@ -6368,13 +6492,18 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.
- Uitvoer voltooi.
+ Uitvoer voltooi.
-
+
Die lied uitvoer het misluk.
+
+
+
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts
index 27c975638..00f4f80d8 100644
--- a/resources/i18n/cs.ts
+++ b/resources/i18n/cs.ts
@@ -813,17 +813,17 @@ demand and thus an internet connection is required.
Nelze kombinovat jednoduché a dvojité výsledky hledání veršů v Bibli. Přejete si smazat výsledky hledání a začít s novým vyhledáváním?
-
+
Bible není celá načtena.
-
+
-
+
@@ -1251,24 +1251,24 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Modul obrázek</strong><br />Modul obrázek se stará o zobrazování obrázků.<br />Jedna z charakteristických funkcí tohoto modulu je schopnost ve správci služby seskupit několik obrázků dohromady. Tato vlastnost zjednodušuje zobrazení více obrázků. Tento modul také využívá vlastnosti "časová smyčka" aplikace OpenLP a je tudíž možno vytvořit prezentaci obrázků, která poběží samostatně. Nadto lze využitím obrázků z modulu překrýt pozadí současného motivu.
-
+
name singular
Obrázek
-
+
name plural
Obrázky
-
+
container title
Obrázky
@@ -1309,37 +1309,37 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Přidat vybraný obrázek ke službě.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1365,38 +1365,56 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Pro smazání musíte nejdříve vybrat obrázek.
-
+
K nahrazení pozadí musíte nejdříve vybrat obrázek.
-
+
Chybějící obrázky
-
+
Následující obrázky už neexistují: %s
-
+
Následující obrázky už neexistují: %
Chcete přidat ostatní obrázky?
-
+
Problém s nahrazením pozadí. Obrázek "%s" už neexistuje.
-
+
+
+ ImagesPlugin.ImageTab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MediaPlugin
@@ -2614,287 +2632,287 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
OpenLP.MainWindow
-
+
&Soubor
-
+
&Import
-
+
&Export
-
+
&Zobrazit
-
+
&Režim
-
+
&Nástroje
-
+
&Nastavení
-
+
&Jazyk
-
+
&Nápověda
-
+
Správce médií
-
+
Správce služby
-
+
Správce motivů
-
+
&Nový
-
+
&Otevřít
-
+
Otevřít existující službu.
-
+
&Uložit
-
+
Uložit současnou službu na disk.
-
+
Uložit &jako...
-
+
Uložit službu jako
-
+
Uložit současnou službu s novým názvem.
-
+
U&končit
-
+
Ukončit OpenLP
-
+
&Motiv
-
+
&Nastavit OpenLP...
-
+
Správce &médií
-
+
Přepnout správce médií
-
+
Přepnout viditelnost správce médií.
-
+
Správce &motivů
-
+
Přepnout správce motivů
-
+
Přepnout viditelnost správce motivů.
-
+
Správce &služby
-
+
Přepnout správce služby
-
+
Přepnout viditelnost správce služby.
-
+
Panel &náhledu
-
+
Přepnout panel náhledu
-
+
Přepnout viditelnost panelu náhled.
-
+
Panel na&živo
-
+
Přepnout panel naživo
-
+
Přepnout viditelnost panelu naživo.
-
+
Seznam &modulů
-
+
Vypsat moduly
-
+
&Uživatelská příručka
-
+
&O aplikaci
-
+
Více informací o aplikaci OpenLP
-
+
&Online nápověda
-
+
&Webová stránka
-
+
Použít jazyk systému, pokud je dostupný.
-
+
Jazyk rozhraní nastaven na %s
-
+
Přidat &nástroj...
-
+
Přidat aplikaci do seznamu nástrojů.
-
+
&Výchozí
-
+
Nastavit režim zobrazení zpět na výchozí.
-
+
&Nastavení
-
+
Nastavit režim zobrazení na Nastavení.
-
+
&Naživo
-
+
Nastavit režim zobrazení na Naživo.
-
+
@@ -2903,22 +2921,22 @@ You can download the latest version from http://openlp.org/.
Nejnovější verzi lze stáhnout z http://openlp.org/.
-
+
Verze OpenLP aktualizována
-
+
Hlavní zobrazení OpenLP je prázdné
-
+
Hlavní zobrazení nastaveno na prázdný snímek
-
+
Výchozí motiv: %s
@@ -2929,17 +2947,17 @@ Nejnovější verzi lze stáhnout z http://openlp.org/.
Angličtina
-
+
Nastavuji &zkratky...
-
+
Zavřít OpenLP
-
+
Chcete opravdu zavřít aplikaci OpenLP?
@@ -2954,27 +2972,27 @@ Nejnovější verzi lze stáhnout z http://openlp.org/.
&Nastavit značky zobrazení
-
+
Otevřít složku s &daty...
-
+
Otevřít složku, kde se nachází písně, Bible a ostatní data.
-
+
&Automaticky detekovat
-
+
Aktualizovat obrázky motivu
-
+
Aktualizovat náhledy obrázků všech motivů.
@@ -2984,63 +3002,144 @@ Nejnovější verzi lze stáhnout z http://openlp.org/.
F1
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
Clear List of recent files
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nastavení
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Otevřít soubor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.Manager
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
OpenLP.MediaManagerItem
@@ -3119,7 +3218,7 @@ Suffix not supported
-
+
@@ -3283,12 +3382,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3384,19 +3483,19 @@ Suffix not supported
&Změnit motiv položky
-
+
Soubory služby OpenLP (*.osz)
-
+
Soubor není platná služba.
Obsah souboru není v kódování UTF-8.
-
+
Soubor není platná služba.
@@ -3481,32 +3580,32 @@ Obsah souboru není v kódování UTF-8.
Zobrazit n&aživo
-
+
Změněná služba
-
+
Současná služba byla změněna. Přejete si službu uložit?
-
+
Soubor se nepodařilo otevřít, protože je poškozený.
-
+
Prázdný soubor
-
+
Tento soubor služby neobsahuje žádná data.
-
+
Poškozený soubor
@@ -3551,22 +3650,22 @@ Obsah souboru není v kódování UTF-8.
Vybrat motiv pro službu.
-
+
-
+
-
+
-
+
@@ -3887,27 +3986,27 @@ Obsah souboru není v kódování UTF-8.
OpenLP.ThemeForm
-
+
Vybrat obrázek
-
+
Chybí název motivu
-
+
Není vyplněn název motivu. Prosím zadejte ho.
-
+
Neplatný název motivu
-
+
Neplatný název motivu. Prosím zadejte nový.
@@ -3917,7 +4016,7 @@ Obsah souboru není v kódování UTF-8.
(%d řádek na snímek)
-
+
@@ -3995,12 +4094,12 @@ Obsah souboru není v kódování UTF-8.
Pro úpravy je třeba vybrat motiv.
-
+
Není možno smazat výchozí motiv.
-
+
Motiv %s je používán v modulu %s.
@@ -4097,7 +4196,7 @@ Obsah souboru není v kódování UTF-8.
Smazat motiv %s?
-
+
Chyba ověřování
@@ -4121,255 +4220,260 @@ Obsah souboru není v kódování UTF-8.
OpenLP.ThemeWizard
-
+
Průvodce motivem
-
+
Vítejte v průvodci motivem
-
+
Nastavení pozadí
-
+
Podle parametrů níže nastavte pozadí motivu.
-
+
Typ pozadí:
-
+
Plná barva
-
+
Přechod
-
+
Barva:
-
+
Přechod:
-
+
Vodorovný
-
+
Svislý
-
+
Kruhový
-
+
Vlevo nahoře - vpravo dole
-
+
Vlevo dole - vpravo nahoře
-
+
Podrobnosti písma hlavní oblasti
-
+
Definovat písmo a charakteristiku zobrazení pro zobrazený text
-
+
Písmo:
-
+
Velikost:
-
+
Řádkování:
-
+
&Obrys:
-
+
&Stín:
-
+
Tučné
-
+
Kurzíva
-
+
Podrobnosti písma oblasti zápatí
-
+
Definovat písmo a charakteristiku zobrazení pro text zápatí
-
+
Podrobnosti formátování textu
-
+
Dovoluje definovat další formátovací informace zobrazení
-
+
Vodorovné zarovnání:
-
+
Vlevo
-
+
Vpravo
-
+
Na střed
-
+
Umístění výstupní oblasti
-
+
Dovoluje změnit a přesunout hlavní oblast a oblast zápatí.
-
+
&Hlavní oblast
-
+
&Použít výchozí umístění
-
+
Pozice X:
-
+
px
-
+
Pozice Y:
-
+
Šířka:
-
+
Výška:
-
+
Použít výchozí umístění
-
+
Uložit a náhled
-
+
Zobrazit motiv a uložit ho, dojde k přepsání současného nebo změňte název, aby se vytvořil nový motiv
-
+
Název motivu:
-
+
Upravit motiv - %s
-
+
Tento průvodce pomáhá s vytvořením a úpravou vašich motivu. Klepněte níže na tlačítko další pro spuštění procesu nastavení vašeho pozadí.
-
+
Přechody:
-
+
Oblast &zápatí
-
+
-
+
+
+
+
+ Barva pozadí:
+
OpenLP.ThemesTab
@@ -4760,7 +4864,7 @@ Obsah souboru není v kódování UTF-8.
Připraven.
-
+
Spouštím import...
@@ -5300,126 +5404,141 @@ Obsah souboru není v kódování UTF-8.
SongUsagePlugin
-
+
Sledování použití &písní
-
+
&Smazat data sledování
-
+
Smazat data použití písní až ke konkrétnímu kalendářnímu datu.
-
+
&Rozbalit data sledování
-
+
Vytvořit hlášení z používání písní.
-
+
Přepnout sledování
-
+
Přepnout sledování použití písní.
-
+
<strong>Modul používání písní</strong><br />Tento modul sleduje používání písní ve službách.
-
+
name singular
Používání písně
-
+
name plural
Používání písní
-
+
container title
Používání písní
-
+
Používání písní
-
+
-
+
+
+
+
+
+
+
+
+
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Smazat data používání písní
-
+
Smazat události vybraného používání písní?
-
+
Jste si jist, že chcete smazat vybraná data o používání písní?
-
+
Smazání úspěšné
-
+
Všechny požadovaná data byla úspěšně smazána.
+
+
+
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Rozbalení používání písní
-
+
Vybrat rozsah datumu
-
+
do
-
+
Umístění hlášení
@@ -5434,12 +5553,12 @@ Obsah souboru není v kódování UTF-8.
usage_detail_%s_%s.txt
-
+
Vytvoření hlášení
-
+
@@ -5461,112 +5580,112 @@ bylo úspěšně vytvořeno.
SongsPlugin
-
+
&Píseň
-
+
Import písní průvodcem importu.
-
+
<strong>Modul písně</strong><br />Modul písně umožňuje zobrazovat a spravovat písně.
-
+
&Přeindexovat písně
-
+
Přeindexovat písně v databázi pro vylepšení hledání a řazení.
-
+
Přeindexovávám písně...
-
+
Arabština (CP-1256)
-
+
Baltské jazyky (CP-1257)
-
+
Středoevropské jazyky (CP-1250)
-
+
Cyrilice (CP-1251)
-
+
Řečtina (CP-1253)
-
+
Hebrejština (CP-1255)
-
+
Japonština (CP-932)
-
+
Korejština (CP-949)
-
+
Zjednodušená čínština (CP-936)
-
+
Thajština (CP-874)
-
+
Tradiční čínština (CP-950)
-
+
Turečtina (CP-1254)
-
+
Vietnamština (CP-1258)
-
+
Západoevropské jazyky (CP-1252)
-
+
Kódování znaků
-
+
@@ -5575,32 +5694,32 @@ za správnou reprezentaci znaků.
Předvybraná volba by obvykle měla být správná.
-
+
Vyberte prosím kódování znaků.
Kódování zodpovídá za správnou reprezentaci znaků.
-
+
name singular
Píseň
-
+
name plural
Písně
-
+
container title
Písně
-
+
Exportuje písně průvodcem exportu.
@@ -5635,32 +5754,32 @@ Kódování zodpovídá za správnou reprezentaci znaků.
Přidat vybranou píseň ke službě.
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5952,7 +6071,7 @@ Kódování zodpovídá za správnou reprezentaci znaků.
- Tento průvodce pomáhá exportovat vaše písně do otevřeného a svobodného formátu chval OpenLyrics.
+ Tento průvodce pomáhá exportovat vaše písně do otevřeného a svobodného formátu chval OpenLyrics.
@@ -6015,7 +6134,7 @@ Kódování zodpovídá za správnou reprezentaci znaků.
Je potřeba zadat adresář.
-
+
Vybrat cílovou složku
@@ -6024,6 +6143,11 @@ Kódování zodpovídá za správnou reprezentaci znaků.
Vybrat složku, kam se budou ukládat písně.
+
+
+
+
+
SongsPlugin.ImportWizardForm
@@ -6243,13 +6367,18 @@ Kódování zodpovídá za správnou reprezentaci znaků.
- Export dokončen.
+ Export dokončen.
-
+
Export písně selhal.
+
+
+
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts
index 09c5a2c6d..a57b1ad4e 100644
--- a/resources/i18n/de.ts
+++ b/resources/i18n/de.ts
@@ -708,17 +708,17 @@ werden. Daher ist eine Internetverbindung erforderlich.
Es ist nicht möglich Einzel- und Zweifach Bibelvers Suchergebnisse zu kombinieren. Sollen die Suchergebnisse gelöscht und eine neue Suche gestartet werden?
-
+
Bibel wurde nicht vollständig geladen.
-
+
Hinweis
-
+
Die Vergleichsbibel enthält nicht alle Verse, die in der Hauptbibel vorhanden sind. Nur die Verse, die in beiden Bibeln vorhanden sind, werden angezeigt. %d Verse sind nicht enthalten.
@@ -803,16 +803,6 @@ werden. Daher ist eine Internetverbindung erforderlich.
Bitte wählen Sie die Bibeln welche aktualisiert werden sollen
-
-
-
- Bibelausgabe:
-
-
-
-
- Diese Bibel existiert bereits. Bitte ändern Sie den Namen oder wählen Sie die Bibel in der Liste ab.
-
@@ -823,21 +813,6 @@ werden. Daher ist eine Internetverbindung erforderlich.
Bitte warten Sie bis Ihre Bibeln aktualisiert sind.
-
-
-
- Bitte geben Sie den Namen der Bibelübersetzung ein.
-
-
-
-
- Übersetzung bereits vorhanden
-
-
-
-
- Diese Bibel existiert bereits. Bitte aktualisieren Sie eine andere Bibel, löschen Sie die bereits vorhandene oder wählen Sie die Bibel in der Liste ab.
-
-
+
You must select an image to replace the background with.
Das Bild, das Sie als Hintergrund setzen möchten, muss ausgewählt sein.
-
+
Missing Image(s)
Fehlende Bilder
-
+
The following image(s) no longer exist: %s
Auf die folgenden Bilder kann nicht mehr zugegriffen werden: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
Auf die folgenden Bilder kann nicht mehr zugegriffen werden: %s
Wollen Sie die anderen Bilder trotzdem hinzufügen?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Da auf das Bild »%s« nicht mehr zugegriffen werden kann, konnte es nicht als Hintergrund gesetzt werden.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+ Hintergrundfarbe
+
+
+
+ Default Color:
+ Standardfarbe:
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+ Wenn Bilder ein anderes Seitenverhältniss als der Projektionsbildschirm haben, dann wird ein fabiger Rand hinzufgefügt.
+
+
MediaPlugin
@@ -1601,170 +1594,6 @@ der Medienverwaltung angklickt werden
Standard-Logo wiederherstellen.
-
- OpenLP.DisplayTagDialog
-
-
- Edit Selection
- Auswahl bearbeiten
-
-
-
- Description
- Beschreibung
-
-
-
- Tag
- Tag
-
-
-
- Start tag
- Anfangs Tag
-
-
-
- End tag
- End Tag
-
-
-
- Tag Id
- Tag Nr.
-
-
-
- Start HTML
- Anfangs HTML
-
-
-
- End HTML
- End HTML
-
-
-
- Save
- Speichern
-
-
-
- OpenLP.DisplayTagTab
-
-
- Update Error
- Aktualisierungsfehler
-
-
-
- Tag "n" already defined.
- Tag »n« bereits definiert.
-
-
-
- Tag %s already defined.
- Tag »%s« bereits definiert.
-
-
-
- New Tag
- Neuer Tag
-
-
-
- </and here>
- </und hier>
-
-
-
- <HTML here>
- <HTML hier>
-
-
-
- OpenLP.DisplayTags
-
-
- Red
- rot
-
-
-
- Black
- schwarz
-
-
-
- Blue
- blau
-
-
-
- Yellow
- gelb
-
-
-
- Green
- grün
-
-
-
- Pink
- rosa
-
-
-
- Orange
- orange
-
-
-
- Purple
- lila
-
-
-
- White
- weiß
-
-
-
- Superscript
- hochgestellt
-
-
-
- Subscript
- tiefgestellt
-
-
-
- Paragraph
- Textabsatz
-
-
-
- Bold
- fett
-
-
-
- Italics
- kursiv
-
-
-
- Underline
- unterstrichen
-
-
-
- Break
- Textumbruch
-
-
OpenLP.ExceptionDialog
@@ -1812,7 +1641,7 @@ dieser Fehler auftrat. Bitte verwenden Sie (wenn möglich) Englisch.
Platform: %s
- Plattform: %s
+ Plattform: %s
@@ -2442,307 +2271,307 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
OpenLP.MainWindow
-
+
&File
&Datei
-
+
&Import
&Importieren
-
+
&Export
&Exportieren
-
+
&View
&Ansicht
-
+
M&ode
An&sichtsmodus
-
+
&Tools
E&xtras
-
+
&Settings
&Einstellungen
-
+
&Language
&Sprache
-
+
&Help
&Hilfe
-
+
Media Manager
Medienverwaltung
-
+
Service Manager
Ablaufverwaltung
-
+
Theme Manager
Designverwaltung
-
+
&New
&Neu
-
+
&Open
Ö&ffnen
-
+
Open an existing service.
Einen vorhandenen Ablauf öffnen.
-
+
&Save
&Speichern
-
+
Save the current service to disk.
Den aktuellen Ablauf speichern.
-
+
Save &As...
Speichern &unter...
-
+
Save Service As
Den aktuellen Ablauf unter einem neuen Namen speichern
-
+
Save the current service under a new name.
Den aktuellen Ablauf unter einem neuen Namen speichern.
-
+
E&xit
&Beenden
-
+
Quit OpenLP
OpenLP beenden
-
+
&Theme
&Design
-
+
&Configure OpenLP...
&Einstellungen...
-
+
&Media Manager
&Medienverwaltung
-
+
Toggle Media Manager
Die Medienverwaltung ein- bzw. ausblenden
-
+
Toggle the visibility of the media manager.
Die Medienverwaltung ein- bzw. ausblenden.
-
+
&Theme Manager
&Designverwaltung
-
+
Toggle Theme Manager
Die Designverwaltung ein- bzw. ausblenden
-
+
Toggle the visibility of the theme manager.
Die Designverwaltung ein- bzw. ausblenden.
-
+
&Service Manager
&Ablaufverwaltung
-
+
Toggle Service Manager
Die Ablaufverwaltung ein- bzw. ausblenden
-
+
Toggle the visibility of the service manager.
Die Ablaufverwaltung ein- bzw. ausblenden.
-
+
&Preview Panel
&Vorschau-Ansicht
-
+
Toggle Preview Panel
Die Vorschau ein- bzw. ausblenden
-
+
Toggle the visibility of the preview panel.
Die Vorschau ein- bzw. ausschalten.
-
+
&Live Panel
&Live-Ansicht
-
+
Toggle Live Panel
Die Live Ansicht ein- bzw. ausschalten
-
+
Toggle the visibility of the live panel.
Die Live Ansicht ein- bzw. ausschalten.
-
+
&Plugin List
Er&weiterungen...
-
+
List the Plugins
Erweiterungen verwalten
-
+
&User Guide
Benutzer&handbuch
-
+
&About
&Info über OpenLP
-
+
More information about OpenLP
Mehr Informationen über OpenLP
-
+
&Online Help
&Online Hilfe
-
+
&Web Site
&Webseite
-
+
Use the system language, if available.
Die Systemsprache, sofern diese verfügbar ist, verwenden.
-
+
Set the interface language to %s
Die Sprache von OpenLP auf %s stellen
-
+
Add &Tool...
Hilfsprogramm hin&zufügen...
-
+
Add an application to the list of tools.
Eine Anwendung zur Liste der Hilfsprogramme hinzufügen.
-
+
&Default
&Standard
-
+
Set the view mode back to the default.
Den Ansichtsmodus auf Standardeinstellung setzen.
-
+
&Setup
&Einrichten
-
+
Set the view mode to Setup.
Die Ansicht für die Ablauferstellung optimieren.
-
+
&Live
&Live
-
+
Set the view mode to Live.
Die Ansicht für den Live-Betrieb optimieren.
-
+
OpenLP Version Updated
Neue OpenLP Version verfügbar
-
+
OpenLP Main Display Blanked
Hauptbildschirm abgedunkelt
-
+
The Main Display has been blanked out
Die Projektion ist momentan nicht aktiv.
-
+
Default Theme: %s
Standarddesign: %s
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -2757,82 +2586,77 @@ Sie können die letzte Version auf http://openlp.org abrufen.
Deutsch
-
+
Configure &Shortcuts...
Konfiguriere &Tastenkürzel...
-
+
Close OpenLP
OpenLP beenden
-
+
Are you sure you want to close OpenLP?
Sind Sie sicher, dass OpenLP beendet werden soll?
-
+
Open &Data Folder...
Öffne &Datenverzeichnis...
-
+
Open the folder where songs, bibles and other data resides.
Öffne das Verzeichnis, wo Lieder, Bibeln und andere Daten gespeichert sind.
-
- &Configure Display Tags
- &Formatvorlagen
-
-
-
+
&Autodetect
&Automatisch
-
+
Update Theme Images
Aktualisiere Design Bilder
-
+
Update the preview images for all themes.
Aktualisiert die Vorschaubilder aller Designs.
-
+
Print the current service.
Drucke den aktuellen Ablauf.
-
+
L&ock Panels
&Sperre Leisten
-
+
Prevent the panels being moved.
Unterbindet das Bewegen der Leisten.
-
+
Re-run First Time Wizard
Einrichtungsassistent starten
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
Einrichtungsassistent erneut starten um Beispiel-Lieder, Bibeln und Designs zu importieren.
-
+
Re-run First Time Wizard?
Einrichtungsassistent starten?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
@@ -2841,26 +2665,116 @@ Re-running this wizard may make changes to your current OpenLP configuration and
Der Einrichtungsassistent kann einige Einstellungen verändern und ggf. neue Lieder, Bibeln und Designs zu den bereits vorhandenen hinzufügen.
-
+
&Recent Files
&Zuletzte geöffnete Abläufe
&Configure Formatting Tags...
- Konfiguriere &Formatvorlagen...
+ Konfiguriere &Formatvorlagen...
-
+
Clear List
Clear List of recent files
Leeren
-
+
Clear the list of recent files.
Leert die Liste der zuletzte geöffnete Abläufe.
+
+
+ Configure &Formatting Tags...
+ Konfiguriere &Formatvorlagen...
+
+
+
+ Settings
+ Einstellungen
+
+
+
+ Import settings?
+ Importiere Einstellungen?
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+ Sind Sie sicher, dass Sie Einstellungen importieren möchten?
+
+Der Import wird dauerhafte Veränderungen an Ihrer OpenLP Konfiguration machen.
+
+Falsche Einstellungen können fehlerhaftes Verhalten von OpenLP verursachen.
+
+
+
+ Open File
+ Öffne Datei
+
+
+
+ OpenLP Export Settings Files (*.conf)
+ OpenLP Einstellungsdatei (*.conf)
+
+
+
+ Import settings
+ Importiere Einstellungen
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+ OpenLP wird nun geschlossen. Importierte Einstellungen werden bei dem nächsten Start übernommen.
+
+
+
+ Export Settings File
+ Exportiere Einstellungsdatei
+
+
+
+ OpenLP Export Settings File (*.conf)
+ OpenLP Einstellungsdatei (*.conf)
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+ Datenbankfehler
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -2914,13 +2828,6 @@ Der Einrichtungsassistent kann einige Einstellungen verändern und ggf. neue Lie
You must select one or more items to add.
Sie müssen ein oder mehrer Element auswählen.
-
-
- Duplicate filename %s.
-This filename is already in the list
- Doppelter Dateiname %s.
-Dateiname existiert bereits in der Liste.
-
&Clone
@@ -2940,7 +2847,7 @@ Dateiendung nicht unterstützt.
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3094,12 +3001,12 @@ Dateiendung nicht unterstützt.
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
<strong>Anfang</strong>: %s
-
+
<strong>Length</strong>: %s
<strong>Spiellänge</strong>: %s
@@ -3195,14 +3102,14 @@ Dateiendung nicht unterstützt.
&Design des Elements ändern
-
+
File is not a valid service.
The content encoding is not UTF-8.
Die gewählte Datei ist keine gültige OpenLP Ablaufdatei.
Der Inhalt ist nicht in UTF-8 kodiert.
-
+
File is not a valid service.
Die Datei ist keine gültige OpenLP Ablaufdatei.
@@ -3247,7 +3154,7 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Ablauf öffnen
-
+
OpenLP Service Files (*.osz)
OpenLP Ablaufdateien (*.osz)
@@ -3277,12 +3184,12 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Ausgewähltes nach unten schieben
-
+
Modified Service
Modifizierter Ablauf
-
+
The current service has been modified. Would you like to save this service?
Der momentane Ablauf wurde modifiziert. Möchten Sie ihn speichern?
@@ -3302,22 +3209,22 @@ Der Inhalt ist nicht in UTF-8 kodiert.
&Live
-
+
File could not be opened because it is corrupt.
Datei konnte nicht geöffnet werden, da sie fehlerhaft ist.
-
+
Empty File
Leere Datei
-
+
This service file does not contain any data.
Diese Datei enthält keine Daten.
-
+
Corrupt File
Dehlerhaft Datei
@@ -3357,22 +3264,22 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Design für den Ablauf auswählen.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
Entweder ist die Datei fehlerhaft oder sie ist keine OpenLP 2.0 Ablauf-Datei.
-
+
Slide theme
Element-Design
-
+
Notes
Notizen
-
+
Service File Missing
Ablaufdatei fehlt
@@ -3395,11 +3302,6 @@ Der Inhalt ist nicht in UTF-8 kodiert.
OpenLP.ShortcutListDialog
-
-
- Customize Shortcuts
- Tastenkürzel anpassen
-
Action
@@ -3633,32 +3535,32 @@ Der Inhalt ist nicht in UTF-8 kodiert.
OpenLP.ThemeForm
-
+
Select Image
Bild auswählen
-
+
Theme Name Missing
Designname fehlt
-
+
There is no name for this theme. Please enter one.
Es wurde kein Designname angegeben. Bitte benennen Sie das Design.
-
+
Theme Name Invalid
Designname ungültig
-
+
Invalid theme name. Please enter one.
Der Designname ist ungültig. Bitte ändern Sie diesen.
-
+
(approximately %d lines per slide)
(ungefähr %d Zeilen pro Folie)
@@ -3711,7 +3613,7 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Zum Bearbeiten muss ein Design ausgewählt sein.
-
+
You are unable to delete the default theme.
Es ist nicht möglich das Standarddesign zu entfernen.
@@ -3763,7 +3665,7 @@ Sie ist nicht in UTF-8 kodiert.
Diese Datei ist keine gültige OpenLP Designdatei.
-
+
Theme %s is used in the %s plugin.
Das Design »%s« wird in der »%s« Erweiterung benutzt.
@@ -3813,7 +3715,7 @@ Sie ist nicht in UTF-8 kodiert.
Soll das Design »%s« wirklich gelöscht werden?
-
+
Validation Error
Validierungsfehler
@@ -3862,255 +3764,260 @@ Sie ist nicht in UTF-8 kodiert.
OpenLP.ThemeWizard
-
+
Theme Wizard
Designassistent
-
+
Welcome to the Theme Wizard
Willkommen beim Designassistenten
-
+
Set Up Background
Hintergrund einrichten
-
+
Set up your theme's background according to the parameters below.
Der Designhintergrund wird anhand der Parameter unten eingerichtet.
-
+
Background type:
Hintergrundart:
-
+
Solid Color
Füllfarbe
-
+
Gradient
Farbverlauf
-
+
Color:
Farbe:
-
+
Gradient:
Verlauf:
-
+
Horizontal
horizontal
-
+
Vertical
vertikal
-
+
Circular
radial
-
+
Top Left - Bottom Right
diagonal abwärts
-
+
Bottom Left - Top Right
diagonal aufwärts
-
+
Main Area Font Details
Schriftschnitt und -farbe
-
+
Define the font and display characteristics for the Display text
Die Schrift und die Anzeigeeigenschaften für die Hauptanzeigefläche einrichten
-
+
Font:
Schriftart:
-
+
Size:
Schriftgröße:
-
+
Line Spacing:
Zeilenabstand:
-
+
&Outline:
&Umrandung:
-
+
&Shadow:
S&chatten:
-
+
Bold
Fett
-
+
Italic
Kursiv
-
+
Footer Area Font Details
Fußzeile einrichten
-
+
Define the font and display characteristics for the Footer text
Die Schrift und die Anzeigeeigenschaften für die Fußzeile einrichten
-
+
Text Formatting Details
Weitere Formatierung
-
+
Allows additional display formatting information to be defined
Hier können zusätzliche Anzeigeeigenschaften eingerichtet werden.
-
+
Horizontal Align:
Horizontale Ausrichtung:
-
+
Left
links
-
+
Right
rechts
-
+
Center
zentriert
-
+
Output Area Locations
Anzeigeflächen
-
+
Allows you to change and move the main and footer areas.
Hier ist es möglich Hauptanzeigefläche und die Fußzeile zu verschieben.
-
+
&Main Area
&Hauptanzeigefläche
-
+
&Use default location
&Automatisch positionieren
-
+
X position:
Von links:
-
+
px
px
-
+
Y position:
Von oben:
-
+
Width:
Breite:
-
+
Height:
Höhe:
-
+
Use default location
Automatisch positionieren
-
+
Save and Preview
Vorschau und Speichern
-
+
View the theme and save it replacing the current one or change the name to create a new theme
Eine Vorschau anzeigen und das Design abspeichern
-
+
Theme name:
Designname:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
Dieser Assistent hilft Ihnen Designs zu erstellen oder zu bearbeiten. Klicken Sie auf »Weiter« um den Hintergrund einzurichten.
-
+
Transitions:
Übergänge:
-
+
&Footer Area
&Fußzeile
-
+
Edit Theme - %s
Bearbeite Design - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Hintergrundfarbe:
+
OpenLP.ThemesTab
@@ -4466,7 +4373,7 @@ Sie ist nicht in UTF-8 kodiert.
Fertig.
-
+
Starting import...
Beginne Import...
@@ -4701,14 +4608,6 @@ Sie ist nicht in UTF-8 kodiert.
Halte Schleife an
-
- OpenLP.displayTagDialog
-
-
- Configure Display Tags
- Konfiguriere Formatvorlagen
-
-
PresentationPlugin
@@ -4981,126 +4880,141 @@ Sie ist nicht in UTF-8 kodiert.
SongUsagePlugin
-
+
&Song Usage Tracking
&Protokollierung
-
+
&Delete Tracking Data
&Protokoll löschen
-
+
Delete song usage data up to a specified date.
Das Protokoll ab einem bestimmten Datum löschen.
-
+
&Extract Tracking Data
&Protokoll extrahieren
-
+
Generate a report on song usage.
Einen Protokoll-Bericht erstellen.
-
+
Toggle Tracking
Aktiviere Protokollierung
-
+
Toggle the tracking of song usage.
Setzt die Protokollierung aus.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Erweiterung Liedprotokollierung</strong><br />Diese Erweiterung zählt die Verwendung von Liedern in Veranstaltungen.
-
+
SongUsage
name singular
Liedprotokollierung
-
+
SongUsage
name plural
Liedprotokollierung
-
+
SongUsage
container title
Liedprotokollierung
-
+
Song Usage
Liedprotokollierung
-
+
Song usage tracking is active.
Liedprotokollierung ist aktiv.
-
+
Song usage tracking is inactive.
Liedprotokollierung ist nicht aktiv.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Protokolldaten löschen
-
+
Delete Selected Song Usage Events?
Wollen sie die ausgewählten Ereignisse löschen?
-
+
Are you sure you want to delete selected Song Usage data?
Sind sie sicher, dass die ausgewählten Protokolldaten löschen wollen?
-
+
Deletion Successful
Löschung erfolgreich
-
+
All requested data has been deleted successfully.
Die Protokolldaten wurden erfolgreich gelöscht.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Protokoll extrahieren
-
+
Select Date Range
Zeitspanne
-
+
to
bis
-
+
Report Location
Zielverzeichnis für die Statistiken
@@ -5115,12 +5029,12 @@ Sie ist nicht in UTF-8 kodiert.
Aufrufprotokoll_%s_%s.txt
-
+
Report Creation
Statistik Erstellung
-
+
Report
%s
has been successfully created.
@@ -5142,137 +5056,137 @@ wurde erfolgreich erstellt.
SongsPlugin
-
+
&Song
&Lied
-
+
Import songs using the import wizard.
Lieder importieren.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Erweiterung Lieder</strong><br />Die Erweiterung Lieder ermöglicht die Darstellung und Verwaltung von Liedtexten.
-
+
&Re-index Songs
Liederverzeichnis &reindizieren
-
+
Re-index the songs database to improve searching and ordering.
Das reindizieren der Liederdatenbank kann die Suchergebnisse verbessern.
-
+
Reindexing songs...
Reindiziere die Liederdatenbank...
-
+
Song
name singular
Lied
-
+
Songs
name plural
Lieder
-
+
Songs
container title
Lieder
-
+
Arabic (CP-1256)
Arabisch (CP-1256)
-
+
Baltic (CP-1257)
Baltisch (CP-1257)
-
+
Central European (CP-1250)
Zentraleuropäisch (CP-1250)
-
+
Cyrillic (CP-1251)
Kyrillisch (CP-1251)
-
+
Greek (CP-1253)
Griechisch (CP-1253)
-
+
Hebrew (CP-1255)
Hebräisch (CP-1255)
-
+
Japanese (CP-932)
Japanisch (CP-932)
-
+
Korean (CP-949)
Koreanisch (CP-949)
-
+
Simplified Chinese (CP-936)
Chinesisch, vereinfacht (CP-936)
-
+
Thai (CP-874)
Thailändisch (CP-874)
-
+
Traditional Chinese (CP-950)
Chinesisch, traditionell (CP-950)
-
+
Turkish (CP-1254)
Türkisch (CP-1254)
-
+
Vietnam (CP-1258)
Vietnamesisch (CP-1258)
-
+
Western European (CP-1252)
Westeuropäisch (CP-1252)
-
+
Character Encoding
Zeichenkodierung
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Bitte wählen sie die Zeichenkodierung.
Diese ist für die korrekte Darstellung der Sonderzeichen verantwortlich.
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5282,37 +5196,37 @@ Gewöhnlich ist die vorausgewählte
Einstellung korrekt.
-
+
Exports songs using the export wizard.
Exportiert Lieder mit dem Exportassistenten.
-
+
Add a new song.
Erstelle eine neues Lied.
-
+
Edit the selected song.
Bearbeite das ausgewählte Lied.
-
+
Delete the selected song.
Lösche das ausgewählte Lied.
-
+
Preview the selected song.
Zeige das ausgewählte Lied in der Vorschau.
-
+
Send the selected song live.
Zeige das ausgewählte Lied Live.
-
+
Add the selected song to the service.
Füge das ausgewählte Lied zum Ablauf hinzu.
@@ -5594,7 +5508,7 @@ Einstellung korrekt.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- Dieser Assistent wird Ihnen helfen Lieder in das freie und offene OpenLyrics Lobpreis Lieder Format zu exportieren.
+ Dieser Assistent wird Ihnen helfen Lieder in das freie und offene OpenLyrics Lobpreis Lieder Format zu exportieren.
@@ -5657,7 +5571,7 @@ Einstellung korrekt.
Sie müssen ein Verzeichnis angeben.
-
+
Select Destination Folder
Zielverzeichnis wählen
@@ -5666,6 +5580,11 @@ Einstellung korrekt.
Select the directory where you want the songs to be saved.
Geben Sie das Zielverzeichnis an.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+ Dieser Assistent wird Ihnen helfen Lieder in das freie und offene <strong>OpenLyrics</strong> Lobpreis Lieder Format zu exportieren.
+
SongsPlugin.ImportWizardForm
@@ -5869,13 +5788,18 @@ Einstellung korrekt.
Finished export.
- Export beendet.
+ Export beendet.
-
+
Your song export failed.
Der Liedexport schlug fehl.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+ Export beendet. Diese Dateien können mit dem <strong>OpenLyrics</strong> Importer wieder importiert werden.
+
SongsPlugin.SongImport
diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts
index 0aef9c929..65cf0b8b9 100644
--- a/resources/i18n/en.ts
+++ b/resources/i18n/en.ts
@@ -1,8 +1,5 @@
-
- AlertPlugin.AlertForm
-
AlertsPlugin
@@ -150,18 +147,6 @@ Do you want to continue anyway?
-
- BibleDB.Wizard
-
-
- BiblePlugin
-
-
- BiblePlugin.HTTPBible
-
-
- BiblePlugin.MediaItem
-
BiblesPlugin
@@ -710,17 +695,17 @@ demand and thus an internet connection is required.
-
+
Bible not fully loaded.
-
+
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1044,66 +1029,63 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
- GeneralTab
-
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
-
+
Images
name plural
-
+
Images
container title
-
+
Load a new image.
-
+
Add a new image.
-
+
Edit the selected image.
-
+
Delete the selected image.
-
+
Preview the selected image.
-
+
Send the selected image live.
-
+
Add the selected image to the service.
@@ -1129,37 +1111,55 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
+
You must select an image to replace the background with.
-
+
Missing Image(s)
-
+
The following image(s) no longer exist: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -1500,15 +1500,6 @@ Portions copyright © 2004-2011 %s
-
- OpenLP.DisplayTagDialog
-
-
- OpenLP.DisplayTagTab
-
-
- OpenLP.DisplayTags
-
OpenLP.ExceptionDialog
@@ -2153,309 +2144,309 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
-
+
&Import
-
+
&Export
-
+
&View
-
+
M&ode
-
+
&Tools
-
+
&Settings
-
+
&Language
-
+
&Help
-
+
Media Manager
-
+
Service Manager
-
+
Theme Manager
-
+
&New
-
+
&Open
-
+
Open an existing service.
-
+
&Save
-
+
Save the current service to disk.
-
+
Save &As...
-
+
Save Service As
-
+
Save the current service under a new name.
-
+
E&xit
-
+
Quit OpenLP
-
+
&Theme
-
+
&Configure OpenLP...
-
+
&Media Manager
-
+
Toggle Media Manager
-
+
Toggle the visibility of the media manager.
-
+
&Theme Manager
-
+
Toggle Theme Manager
-
+
Toggle the visibility of the theme manager.
-
+
&Service Manager
-
+
Toggle Service Manager
-
+
Toggle the visibility of the service manager.
-
+
&Preview Panel
-
+
Toggle Preview Panel
-
+
Toggle the visibility of the preview panel.
-
+
&Live Panel
-
+
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
-
+
&Plugin List
-
+
List the Plugins
-
+
&User Guide
-
+
&About
-
+
More information about OpenLP
-
+
&Online Help
-
+
&Web Site
-
+
Use the system language, if available.
-
+
Set the interface language to %s
-
+
Add &Tool...
-
+
Add an application to the list of tools.
-
+
&Default
-
+
Set the view mode back to the default.
-
+
&Setup
-
+
Set the view mode to Setup.
-
+
&Live
-
+
Set the view mode to Live.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
-
+
OpenLP Version Updated
-
+
OpenLP Main Display Blanked
-
+
The Main Display has been blanked out
-
+
Default Theme: %s
@@ -2466,103 +2457,184 @@ You can download the latest version from http://openlp.org/.
-
+
Configure &Shortcuts...
-
+
Close OpenLP
-
+
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
-
+
&Autodetect
-
+
Update Theme Images
-
+
Update the preview images for all themes.
-
+
Print the current service.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -2628,13 +2700,13 @@ Suffix not supported
-
- Duplicate files found on import and ignored.
+
+ &Clone
-
- &Clone
+
+ Duplicate files were found on import and were ignored.
@@ -2788,12 +2860,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -2889,18 +2961,18 @@ Suffix not supported
-
+
OpenLP Service Files (*.osz)
-
+
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
@@ -2985,12 +3057,12 @@ The content encoding is not UTF-8.
-
+
Modified Service
-
+
The current service has been modified. Would you like to save this service?
@@ -3015,22 +3087,22 @@ The content encoding is not UTF-8.
-
+
File could not be opened because it is corrupt.
-
+
Empty File
-
+
This service file does not contain any data.
-
+
Corrupt File
@@ -3050,22 +3122,22 @@ The content encoding is not UTF-8.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Service File Missing
-
+
Slide theme
-
+
Notes
@@ -3321,32 +3393,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
-
+
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
@@ -3424,12 +3496,12 @@ The content encoding is not UTF-8.
-
+
You are unable to delete the default theme.
-
+
Theme %s is used in the %s plugin.
@@ -3525,7 +3597,7 @@ The content encoding is not UTF-8.
-
+
Validation Error
@@ -3549,255 +3621,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
Edit Theme - %s
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
-
+
&Footer Area
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+
+
OpenLP.ThemesTab
@@ -4153,7 +4230,7 @@ The content encoding is not UTF-8.
-
+
Starting import...
@@ -4388,9 +4465,6 @@ The content encoding is not UTF-8.
-
- OpenLP.displayTagDialog
-
PresentationPlugin
@@ -4663,126 +4737,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
-
+
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
-
+
Generate a report on song usage.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
-
+
SongUsage
name plural
-
+
SongUsage
container title
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
-
+
Deletion Successful
-
+
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
-
+
Select Date Range
-
+
to
-
+
Report Location
@@ -4797,12 +4886,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -4822,173 +4911,173 @@ has been successfully created.
SongsPlugin
-
+
&Song
-
+
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
-
+
Arabic (CP-1256)
-
+
Baltic (CP-1257)
-
+
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
-
+
Hebrew (CP-1255)
-
+
Japanese (CP-932)
-
+
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
-
+
Western European (CP-1252)
-
+
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Song
name singular
-
+
Songs
name plural
-
+
Songs
container title
-
+
Exports songs using the export wizard.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5267,11 +5356,6 @@ The encoding is responsible for the correct character representation.
Song Export Wizard
-
-
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
-
-
Select Songs
@@ -5333,7 +5417,7 @@ The encoding is responsible for the correct character representation.
-
+
Select Destination Folder
@@ -5342,6 +5426,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -5542,13 +5631,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
@@ -5780,7 +5869,4 @@ The encoding is responsible for the correct character representation.
-
- ThemeTab
-
diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts
index a04554ea8..05631c139 100644
--- a/resources/i18n/en_GB.ts
+++ b/resources/i18n/en_GB.ts
@@ -827,17 +827,17 @@ demand and thus an internet connection is required.
You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?
-
+
Bible not fully loaded.
Bible not fully loaded.
-
+
Information
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1322,60 +1322,60 @@ on demand and so an Internet connection is required.
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
Image
-
+
Images
name plural
Images
-
+
Images
container title
Images
-
+
Load a new image.
Load a new image.
-
+
Add a new image.
Add a new image.
-
+
Edit the selected image.
Edit the selected image.
-
+
Delete the selected image.
Delete the selected image.
-
+
Preview the selected image.
Preview the selected image.
-
+
Send the selected image live.
Send the selected image live.
-
+
Add the selected image to the service.
Add the selected image to the service.
@@ -1436,38 +1436,56 @@ on demand and so an Internet connection is required.
You must select an image to delete.
-
+
You must select an image to replace the background with.
You must select an image to replace the background with.
-
+
Missing Image(s)
Missing Image(s)
-
+
The following image(s) no longer exist: %s
The following image(s) no longer exist: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
There was a problem replacing your background, the image file "%s" no longer exists.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2772,287 +2790,287 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
&File
-
+
&Import
&Import
-
+
&Export
&Export
-
+
&View
&View
-
+
M&ode
M&ode
-
+
&Tools
&Tools
-
+
&Settings
&Settings
-
+
&Language
&Language
-
+
&Help
&Help
-
+
Media Manager
Media Manager
-
+
Service Manager
Service Manager
-
+
Theme Manager
Theme Manager
-
+
&New
&New
-
+
&Open
&Open
-
+
Open an existing service.
Open an existing service.
-
+
&Save
&Save
-
+
Save the current service to disk.
Save the current service to disk.
-
+
Save &As...
Save &As...
-
+
Save Service As
Save Service As
-
+
Save the current service under a new name.
Save the current service under a new name.
-
+
E&xit
E&xit
-
+
Quit OpenLP
Quit OpenLP
-
+
&Theme
&Theme
-
+
&Configure OpenLP...
&Configure OpenLP...
-
+
&Media Manager
&Media Manager
-
+
Toggle Media Manager
Toggle Media Manager
-
+
Toggle the visibility of the media manager.
Toggle the visibility of the media manager.
-
+
&Theme Manager
&Theme Manager
-
+
Toggle Theme Manager
Toggle Theme Manager
-
+
Toggle the visibility of the theme manager.
Toggle the visibility of the theme manager.
-
+
&Service Manager
&Service Manager
-
+
Toggle Service Manager
Toggle Service Manager
-
+
Toggle the visibility of the service manager.
Toggle the visibility of the service manager.
-
+
&Preview Panel
&Preview Panel
-
+
Toggle Preview Panel
Toggle Preview Panel
-
+
Toggle the visibility of the preview panel.
Toggle the visibility of the preview panel.
-
+
&Live Panel
&Live Panel
-
+
Toggle Live Panel
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
Toggle the visibility of the live panel.
-
+
&Plugin List
&Plugin List
-
+
List the Plugins
List the Plugins
-
+
&User Guide
&User Guide
-
+
&About
&About
-
+
More information about OpenLP
More information about OpenLP
-
+
&Online Help
&Online Help
-
+
&Web Site
&Web Site
-
+
Use the system language, if available.
Use the system language, if available.
-
+
Set the interface language to %s
Set the interface language to %s
-
+
Add &Tool...
Add &Tool...
-
+
Add an application to the list of tools.
Add an application to the list of tools.
-
+
&Default
&Default
-
+
Set the view mode back to the default.
Set the view mode back to the default.
-
+
&Setup
&Setup
-
+
Set the view mode to Setup.
Set the view mode to Setup.
-
+
&Live
&Live
-
+
Set the view mode to Live.
Set the view mode to Live.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3060,22 +3078,22 @@ You can download the latest version from http://openlp.org/.
You can download the latest version from http://openlp.org/.
-
+
OpenLP Version Updated
OpenLP Version Updated
-
+
OpenLP Main Display Blanked
OpenLP Main Display Blanked
-
+
The Main Display has been blanked out
The Main Display has been blanked out
-
+
Default Theme: %s
Default Theme: %s
@@ -3086,27 +3104,27 @@ You can download the latest version from http://openlp.org/.
English (United Kingdom)
-
+
Configure &Shortcuts...
Configure &Shortcuts...
-
+
Close OpenLP
Close OpenLP
-
+
Are you sure you want to close OpenLP?
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
Open the folder where songs, Bibles and other data resides.
@@ -3116,22 +3134,22 @@ You can download the latest version from http://openlp.org/.
&Configure Display Tags
-
+
&Autodetect
&Autodetect
-
+
Update Theme Images
Update Theme Images
-
+
Update the preview images for all themes.
Update the preview images for all themes.
-
+
Print the current service.
Print the current service.
@@ -3141,58 +3159,139 @@ You can download the latest version from http://openlp.org/.
Print the current Service Order.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Settings
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Open File
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3278,7 +3377,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3442,12 +3541,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3543,14 +3642,14 @@ Suffix not supported
&Change Item Theme
-
+
File is not a valid service.
The content encoding is not UTF-8.
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
File is not a valid service.
@@ -3595,7 +3694,7 @@ The content encoding is not UTF-8.
Open File
-
+
OpenLP Service Files (*.osz)
OpenLP Service Files (*.osz)
@@ -3625,7 +3724,7 @@ The content encoding is not UTF-8.
Send the selected item to Live.
-
+
Modified Service
Modified Service
@@ -3645,27 +3744,27 @@ The content encoding is not UTF-8.
Show &Live
-
+
The current service has been modified. Would you like to save this service?
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
File could not be opened because it is corrupt.
-
+
Empty File
Empty File
-
+
This service file does not contain any data.
This service file does not contain any data.
-
+
Corrupt File
Corrupt File
@@ -3705,7 +3804,7 @@ The content encoding is not UTF-8.
Select a theme for the service.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
This file is either corrupt or it is not an OpenLP 2.0 service file.
@@ -3715,17 +3814,17 @@ The content encoding is not UTF-8.
This file is either corrupt or not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -4006,32 +4105,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Select Image
-
+
Theme Name Missing
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
(approximately %d lines per slide)
@@ -4109,7 +4208,7 @@ The content encoding is not UTF-8.
You must select a theme to edit.
-
+
You are unable to delete the default theme.
You are unable to delete the default theme.
@@ -4161,7 +4260,7 @@ The content encoding is not UTF-8.
File is not a valid theme.
-
+
Theme %s is used in the %s plugin.
Theme %s is used in the %s plugin.
@@ -4211,7 +4310,7 @@ The content encoding is not UTF-8.
Delete %s theme?
-
+
Validation Error
Validation Error
@@ -4235,255 +4334,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
Theme Wizard
-
+
Welcome to the Theme Wizard
Welcome to the Theme Wizard
-
+
Set Up Background
Set Up Background
-
+
Set up your theme's background according to the parameters below.
Set up your theme's background according to the parameters below.
-
+
Background type:
Background type:
-
+
Solid Color
Solid Colour
-
+
Gradient
Gradient
-
+
Color:
Colour:
-
+
Gradient:
Gradient:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
Top Left - Bottom Right
-
+
Bottom Left - Top Right
Bottom Left - Top Right
-
+
Main Area Font Details
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
Define the font and display characteristics for the Display text
-
+
Font:
Font:
-
+
Size:
Size:
-
+
Line Spacing:
Line Spacing:
-
+
&Outline:
&Outline:
-
+
&Shadow:
&Shadow:
-
+
Bold
Bold
-
+
Italic
Italic
-
+
Footer Area Font Details
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
Text Formatting Details
-
+
Allows additional display formatting information to be defined
Allows additional display formatting information to be defined
-
+
Horizontal Align:
Horizontal Align:
-
+
Left
Left
-
+
Right
Right
-
+
Center
Centre
-
+
Output Area Locations
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
Allows you to change and move the main and footer areas.
-
+
&Main Area
&Main Area
-
+
&Use default location
&Use default location
-
+
X position:
X position:
-
+
px
px
-
+
Y position:
Y position:
-
+
Width:
Width:
-
+
Height:
Height:
-
+
Use default location
Use default location
-
+
Save and Preview
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
Theme name:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
Transitions:
-
+
&Footer Area
&Footer Area
-
+
Edit Theme - %s
Edit Theme - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Background colour:
+
OpenLP.ThemesTab
@@ -4844,7 +4948,7 @@ The content encoding is not UTF-8.
Ready.
-
+
Starting import...
Starting import...
@@ -5419,126 +5523,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Song Usage Tracking
-
+
&Delete Tracking Data
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
&Extract Tracking Data
-
+
Generate a report on song usage.
Generate a report on song usage.
-
+
Toggle Tracking
Toggle Tracking
-
+
Toggle the tracking of song usage.
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
SongUsage
-
+
SongUsage
name plural
SongUsage
-
+
SongUsage
container title
SongUsage
-
+
Song Usage
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
Are you sure you want to delete selected Song Usage data?
-
+
Deletion Successful
Deletion Successful
-
+
All requested data has been deleted successfully.
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Song Usage Extraction
-
+
Select Date Range
Select Date Range
-
+
to
to
-
+
Report Location
Report Location
@@ -5553,12 +5672,12 @@ The content encoding is not UTF-8.
usage_detail_%s_%s.txt
-
+
Report Creation
Report Creation
-
+
Report
%s
has been successfully created.
@@ -5580,130 +5699,130 @@ has been successfully created.
SongsPlugin
-
+
&Song
&Song
-
+
Import songs using the import wizard.
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
Reindexing songs...
-
+
Song
name singular
Song
-
+
Songs
name plural
Songs
-
+
Songs
container title
Songs
-
+
Arabic (CP-1256)
Arabic (CP-1256)
-
+
Baltic (CP-1257)
Baltic (CP-1257)
-
+
Central European (CP-1250)
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
Greek (CP-1253)
-
+
Hebrew (CP-1255)
Hebrew (CP-1255)
-
+
Japanese (CP-932)
Japanese (CP-932)
-
+
Korean (CP-949)
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
Vietnam (CP-1258)
-
+
Western European (CP-1252)
Western European (CP-1252)
-
+
Character Encoding
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5712,44 +5831,44 @@ for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Exports songs using the export wizard.
Exports songs using the export wizard.
-
+
Add a new song.
Add a new song.
-
+
Edit the selected song.
Edit the selected song.
-
+
Delete the selected song.
Delete the selected song.
-
+
Preview the selected song.
Preview the selected song.
-
+
Send the selected song live.
Send the selected song live.
-
+
Add the selected song to the service.
Add the selected song to the service.
@@ -6071,7 +6190,7 @@ The encoding is responsible for the correct character representation.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
+ This wizard will help to export your songs to the open and free OpenLyrics worship song format.
@@ -6134,7 +6253,7 @@ The encoding is responsible for the correct character representation.You need to specify a directory.
-
+
Select Destination Folder
Select Destination Folder
@@ -6143,6 +6262,11 @@ The encoding is responsible for the correct character representation.Select the directory where you want the songs to be saved.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6361,13 +6485,18 @@ The encoding is responsible for the correct character representation.
Finished export.
- Finished export.
+ Finished export.
-
+
Your song export failed.
Your song export failed.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts
index 220e08f85..114409dac 100644
--- a/resources/i18n/en_ZA.ts
+++ b/resources/i18n/en_ZA.ts
@@ -817,17 +817,17 @@ demand and thus an internet connection is required.
You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?
-
+
Bible not fully loaded.
Bible not fully loaded.
-
+
Information
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1209,60 +1209,60 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
Image
-
+
Images
name plural
Images
-
+
Images
container title
Images
-
+
Load a new image.
Load a new image.
-
+
Add a new image.
Add a new image.
-
+
Edit the selected image.
Edit the selected image.
-
+
Delete the selected image.
Delete the selected image.
-
+
Preview the selected image.
Preview the selected image.
-
+
Send the selected image live.
Send the selected image live.
-
+
Add the selected image to the service.
Add the selected image to the service.
@@ -1288,38 +1288,56 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
You must select an image to delete.
-
+
You must select an image to replace the background with.
You must select an image to replace the background with.
-
+
Missing Image(s)
Missing Image(s)
-
+
The following image(s) no longer exist: %s
The following image(s) no longer exist: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
There was a problem replacing your background, the image file "%s" no longer exists.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2574,307 +2592,307 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
&File
-
+
&Import
&Import
-
+
&Export
&Export
-
+
&View
&View
-
+
M&ode
M&ode
-
+
&Tools
&Tools
-
+
&Settings
&Settings
-
+
&Language
&Language
-
+
&Help
&Help
-
+
Media Manager
Media Manager
-
+
Service Manager
Service Manager
-
+
Theme Manager
Theme Manager
-
+
&New
&New
-
+
&Open
&Open
-
+
Open an existing service.
Open an existing service.
-
+
&Save
&Save
-
+
Save the current service to disk.
Save the current service to disk.
-
+
Save &As...
Save &As...
-
+
Save Service As
Save Service As
-
+
Save the current service under a new name.
Save the current service under a new name.
-
+
E&xit
E&xit
-
+
Quit OpenLP
Quit OpenLP
-
+
&Theme
&Theme
-
+
&Configure OpenLP...
&Configure OpenLP...
-
+
&Media Manager
&Media Manager
-
+
Toggle Media Manager
Toggle Media Manager
-
+
Toggle the visibility of the media manager.
Toggle the visibility of the media manager.
-
+
&Theme Manager
&Theme Manager
-
+
Toggle Theme Manager
Toggle Theme Manager
-
+
Toggle the visibility of the theme manager.
Toggle the visibility of the theme manager.
-
+
&Service Manager
&Service Manager
-
+
Toggle Service Manager
Toggle Service Manager
-
+
Toggle the visibility of the service manager.
Toggle the visibility of the service manager.
-
+
&Preview Panel
&Preview Panel
-
+
Toggle Preview Panel
Toggle Preview Panel
-
+
Toggle the visibility of the preview panel.
Toggle the visibility of the preview panel.
-
+
&Live Panel
&Live Panel
-
+
Toggle Live Panel
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
Toggle the visibility of the live panel.
-
+
&Plugin List
&Plugin List
-
+
List the Plugins
List the Plugins
-
+
&User Guide
&User Guide
-
+
&About
&About
-
+
More information about OpenLP
More information about OpenLP
-
+
&Online Help
&Online Help
-
+
&Web Site
&Web Site
-
+
Use the system language, if available.
Use the system language, if available.
-
+
Set the interface language to %s
Set the interface language to %s
-
+
Add &Tool...
Add &Tool...
-
+
Add an application to the list of tools.
Add an application to the list of tools.
-
+
&Default
&Default
-
+
Set the view mode back to the default.
Set the view mode back to the default.
-
+
&Setup
&Setup
-
+
Set the view mode to Setup.
Set the view mode to Setup.
-
+
&Live
&Live
-
+
Set the view mode to Live.
Set the view mode to Live.
-
+
OpenLP Version Updated
OpenLP Version Updated
-
+
OpenLP Main Display Blanked
OpenLP Main Display Blanked
-
+
The Main Display has been blanked out
The Main Display has been blanked out
-
+
Default Theme: %s
Default Theme: %s
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -2889,27 +2907,27 @@ You can download the latest version from http://openlp.org/.
English (South Africa)
-
+
Configure &Shortcuts...
Configure &Shortcuts...
-
+
Close OpenLP
Close OpenLP
-
+
Are you sure you want to close OpenLP?
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
Open the folder where songs, Bibles and other data resides.
@@ -2919,78 +2937,159 @@ You can download the latest version from http://openlp.org/.
&Configure Display Tags
-
+
&Autodetect
&Autodetect
-
+
Update Theme Images
Update Theme Images
-
+
Update the preview images for all themes.
Update the preview images for all themes.
-
+
Print the current service.
Print the current service.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Settings
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Open File
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3069,7 +3168,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3228,12 +3327,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3329,14 +3428,14 @@ Suffix not supported
&Change Item Theme
-
+
File is not a valid service.
The content encoding is not UTF-8.
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
File is not a valid service.
@@ -3381,7 +3480,7 @@ The content encoding is not UTF-8.
Open File
-
+
OpenLP Service Files (*.osz)
OpenLP Service Files (*.osz)
@@ -3411,7 +3510,7 @@ The content encoding is not UTF-8.
Send the selected item to Live.
-
+
Modified Service
Modified Service
@@ -3431,27 +3530,27 @@ The content encoding is not UTF-8.
Show &Live
-
+
The current service has been modified. Would you like to save this service?
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
File could not be opened because it is corrupt.
-
+
Empty File
Empty File
-
+
This service file does not contain any data.
This service file does not contain any data.
-
+
Corrupt File
Corrupt File
@@ -3491,22 +3590,22 @@ The content encoding is not UTF-8.
Select a theme for the service.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3777,32 +3876,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Select Image
-
+
Theme Name Missing
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
(approximately %d lines per slide)
@@ -3880,7 +3979,7 @@ The content encoding is not UTF-8.
You must select a theme to edit.
-
+
You are unable to delete the default theme.
You are unable to delete the default theme.
@@ -3932,7 +4031,7 @@ The content encoding is not UTF-8.
File is not a valid theme.
-
+
Theme %s is used in the %s plugin.
Theme %s is used in the %s plugin.
@@ -3982,7 +4081,7 @@ The content encoding is not UTF-8.
Delete %s theme?
-
+
Validation Error
Validation Error
@@ -4006,255 +4105,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
Theme Wizard
-
+
Welcome to the Theme Wizard
Welcome to the Theme Wizard
-
+
Set Up Background
Set Up Background
-
+
Set up your theme's background according to the parameters below.
Set up your theme's background according to the parameters below.
-
+
Background type:
Background type:
-
+
Solid Color
Solid Colour
-
+
Gradient
Gradient
-
+
Color:
Colour:
-
+
Gradient:
Gradient:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
Top Left - Bottom Right
-
+
Bottom Left - Top Right
Bottom Left - Top Right
-
+
Main Area Font Details
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
Define the font and display characteristics for the Display text
-
+
Font:
Font:
-
+
Size:
Size:
-
+
Line Spacing:
Line Spacing:
-
+
&Outline:
&Outline:
-
+
&Shadow:
&Shadow:
-
+
Bold
Bold
-
+
Italic
Italic
-
+
Footer Area Font Details
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
Text Formatting Details
-
+
Allows additional display formatting information to be defined
Allows additional display formatting information to be defined
-
+
Horizontal Align:
Horizontal Align:
-
+
Left
Left
-
+
Right
Right
-
+
Center
Centre
-
+
Output Area Locations
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
Allows you to change and move the main and footer areas.
-
+
&Main Area
&Main Area
-
+
&Use default location
&Use default location
-
+
X position:
X position:
-
+
px
px
-
+
Y position:
Y position:
-
+
Width:
Width:
-
+
Height:
Height:
-
+
Use default location
Use default location
-
+
Save and Preview
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
Theme name:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
Transitions:
-
+
&Footer Area
&Footer Area
-
+
Edit Theme - %s
Edit Theme - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+
+
OpenLP.ThemesTab
@@ -4615,7 +4719,7 @@ The content encoding is not UTF-8.
Ready.
-
+
Starting import...
Starting import...
@@ -5135,106 +5239,121 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Song Usage Tracking
-
+
&Delete Tracking Data
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
&Extract Tracking Data
-
+
Generate a report on song usage.
Generate a report on song usage.
-
+
Toggle Tracking
Toggle Tracking
-
+
Toggle the tracking of song usage.
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
SongUsage
-
+
SongUsage
name plural
SongUsage
-
+
SongUsage
container title
SongUsage
-
+
Song Usage
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Selected Song Usage Events?
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
Are you sure you want to delete selected Song Usage data?
-
+
Delete Song Usage Data
Delete Song Usage Data
-
+
Deletion Successful
Deletion Successful
-
+
All requested data has been deleted successfully.
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
@@ -5244,22 +5363,22 @@ The content encoding is not UTF-8.
Output File Location
-
+
Song Usage Extraction
Song Usage Extraction
-
+
Select Date Range
Select Date Range
-
+
to
to
-
+
Report Location
Report Location
@@ -5269,12 +5388,12 @@ The content encoding is not UTF-8.
usage_detail_%s_%s.txt
-
+
Report Creation
Report Creation
-
+
Report
%s
has been successfully created.
@@ -5296,130 +5415,130 @@ has been successfully created.
SongsPlugin
-
+
&Song
&Song
-
+
Import songs using the import wizard.
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
Reindexing songs...
-
+
Song
name singular
Song
-
+
Songs
name plural
Songs
-
+
Songs
container title
Songs
-
+
Arabic (CP-1256)
Arabic (CP-1256)
-
+
Baltic (CP-1257)
Baltic (CP-1257)
-
+
Central European (CP-1250)
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
Greek (CP-1253)
-
+
Hebrew (CP-1255)
Hebrew (CP-1255)
-
+
Japanese (CP-932)
Japanese (CP-932)
-
+
Korean (CP-949)
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
Vietnam (CP-1258)
-
+
Western European (CP-1252)
Western European (CP-1252)
-
+
Character Encoding
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5428,44 +5547,44 @@ for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Exports songs using the export wizard.
Exports songs using the export wizard.
-
+
Add a new song.
Add a new song.
-
+
Edit the selected song.
Edit the selected song.
-
+
Delete the selected song.
Delete the selected song.
-
+
Preview the selected song.
Preview the selected song.
-
+
Send the selected song live.
Send the selected song live.
-
+
Add the selected song to the service.
Add the selected song to the service.
@@ -5747,7 +5866,7 @@ The encoding is responsible for the correct character representation.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
+ This wizard will help to export your songs to the open and free OpenLyrics worship song format.
@@ -5810,7 +5929,7 @@ The encoding is responsible for the correct character representation.You need to specify a directory.
-
+
Select Destination Folder
Select Destination Folder
@@ -5819,6 +5938,11 @@ The encoding is responsible for the correct character representation.Select the directory where you want the songs to be saved.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6027,13 +6151,18 @@ The encoding is responsible for the correct character representation.
Finished export.
- Finished export.
+ Finished export.
-
+
Your song export failed.
Your song export failed.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts
index 573212a08..e74a370ec 100644
--- a/resources/i18n/es.ts
+++ b/resources/i18n/es.ts
@@ -827,17 +827,17 @@ sea necesario, por lo que debe contar con una conexión a internet.No puede mezclar busquedas individuales y dobles de versículos. ¿Desea borrar los resultados y abrir una busqueda nueva?
-
+
Bible not fully loaded.
Carga incompleta.
-
+
Information
Información
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
La Biblia secundaria no contiene todos los versículos de la Bilbia principal. Solo se muestran los versículos comunes. Versículos %d no se incluyen en los resultados.
@@ -1328,24 +1328,24 @@ Note que los versículos se descargarán según sea necesario, por lo que debe c
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Complemento de Imagen</strong><br />El complemento de imagen permite proyectar imágenes.<br />Una de sus características, es que permite agrupar imagenes para facilitar su proyección. Este plugin puede utilizar el "bulce de tiempo" de OpenLP para crear una presentación que avance automáticamente. Aparte, las imágenes de este plugin se pueden utilizar para reemplazar la imagen de fondo del tema en actual.
-
+
Image
name singular
Imagen
-
+
Images
name plural
Imágenes
-
+
Images
container title
Imágenes
@@ -1386,37 +1386,37 @@ Note que los versículos se descargarán según sea necesario, por lo que debe c
Agregar esta Imagen al servicio.
-
+
Load a new image.
Cargar una imagen nueva.
-
+
Add a new image.
Agregar una imagen nueva.
-
+
Edit the selected image.
Editar la imagen seleccionada.
-
+
Delete the selected image.
Eliminar la imagen seleccionada.
-
+
Preview the selected image.
Visualizar la imagen seleccionada.
-
+
Send the selected image live.
Proyectar la imagen seleccionada.
-
+
Add the selected image to the service.
Agregar esta imagen al servicio.
@@ -1442,38 +1442,56 @@ Note que los versículos se descargarán según sea necesario, por lo que debe c
Debe seleccionar una imagen para eliminar.
-
+
You must select an image to replace the background with.
Debe seleccionar una imagen para reemplazar el fondo.
-
+
Missing Image(s)
Imágen(es) faltante
-
+
The following image(s) no longer exist: %s
La siguiente imagen(es) ya no esta disponible: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
La siguiente imagen(es) ya no esta disponible: %s
¿Desea agregar las demás imágenes?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Ocurrió un problema al reemplazar el fondo, el archivo "%s" ya no existe.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2779,287 +2797,287 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
OpenLP.MainWindow
-
+
&File
&Archivo
-
+
&Import
&Importar
-
+
&Export
&Exportar
-
+
&View
&Ver
-
+
M&ode
M&odo
-
+
&Tools
&Herramientas
-
+
&Settings
&Preferencias
-
+
&Language
&Idioma
-
+
&Help
&Ayuda
-
+
Media Manager
Gestor de Medios
-
+
Service Manager
Gestor de Servicio
-
+
Theme Manager
Gestor de Temas
-
+
&New
&Nuevo
-
+
&Open
&Abrir
-
+
Open an existing service.
Abrir un servicio existente.
-
+
&Save
&Guardar
-
+
Save the current service to disk.
Guardar el servicio actual en el disco.
-
+
Save &As...
Guardar &Como...
-
+
Save Service As
Guardar Servicio Como
-
+
Save the current service under a new name.
Guardar el servicio actual con un nombre nuevo.
-
+
E&xit
&Salir
-
+
Quit OpenLP
Salir de OpenLP
-
+
&Theme
&Tema
-
+
&Configure OpenLP...
&Configurar OpenLP...
-
+
&Media Manager
Gestor de &Medios
-
+
Toggle Media Manager
Alternar Gestor de Medios
-
+
Toggle the visibility of the media manager.
Alernar la visibilidad del gestor de medios.
-
+
&Theme Manager
Gestor de &Temas
-
+
Toggle Theme Manager
Alternar Gestor de Temas
-
+
Toggle the visibility of the theme manager.
Alernar la visibilidad del gestor de temas.
-
+
&Service Manager
Gestor de &Servicio
-
+
Toggle Service Manager
Alternar Gestor de Servicio
-
+
Toggle the visibility of the service manager.
Alernar la visibilidad del gestor de servicio.
-
+
&Preview Panel
&Panel de Vista Previa
-
+
Toggle Preview Panel
Alternar Panel de Vista Previa
-
+
Toggle the visibility of the preview panel.
Alernar la visibilidad del panel de vista previa.
-
+
&Live Panel
Panel de Pro&yección
-
+
Toggle Live Panel
Alternar Panel de Proyección
-
+
Toggle the visibility of the live panel.
Alternar la visibilidad del panel de proyección.
-
+
&Plugin List
Lista de &Complementos
-
+
List the Plugins
Lista de Complementos
-
+
&User Guide
Guía de &Usuario
-
+
&About
&Acerca de
-
+
More information about OpenLP
Más información acerca de OpenLP
-
+
&Online Help
&Ayuda En Línea
-
+
&Web Site
Sitio &Web
-
+
Use the system language, if available.
Usar el idioma del sistema, si esta disponible.
-
+
Set the interface language to %s
Fijar el idioma de la interface en %s
-
+
Add &Tool...
Agregar &Herramienta...
-
+
Add an application to the list of tools.
Agregar una aplicación a la lista de herramientas.
-
+
&Default
Por &defecto
-
+
Set the view mode back to the default.
Modo de vizualización por defecto.
-
+
&Setup
&Administración
-
+
Set the view mode to Setup.
Modo de Administración.
-
+
&Live
En &vivo
-
+
Set the view mode to Live.
Modo de visualización.en Vivo.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3068,22 +3086,22 @@ You can download the latest version from http://openlp.org/.
Puede descargar la última versión desde http://openlp.org/.
-
+
OpenLP Version Updated
Versión de OpenLP Actualizada
-
+
OpenLP Main Display Blanked
Pantalla Principal de OpenLP en Blanco
-
+
The Main Display has been blanked out
La Pantalla Principal se ha puesto en blanco
-
+
Default Theme: %s
Tema por defecto: %s
@@ -3094,17 +3112,17 @@ Puede descargar la última versión desde http://openlp.org/.
Español
-
+
Configure &Shortcuts...
Configurar &Atajos...
-
+
Close OpenLP
Cerrar OpenLP
-
+
Are you sure you want to close OpenLP?
¿Desea realmente salir de OpenLP?
@@ -3114,12 +3132,12 @@ Puede descargar la última versión desde http://openlp.org/.
Imprimir Orden del Servicio actual.
-
+
Open &Data Folder...
Abrir Folder de &Datos...
-
+
Open the folder where songs, bibles and other data resides.
Abrir el folder donde se almacenan las canciones, biblias y otros datos.
@@ -3129,78 +3147,159 @@ Puede descargar la última versión desde http://openlp.org/.
&Configurar Etiquetas de Visualización
-
+
&Autodetect
&Autodetectar
-
+
Update Theme Images
Actualizar Imágenes de Tema
-
+
Update the preview images for all themes.
Actualizar imagen de vista previa de todos los temas.
-
+
Print the current service.
Imprimir Orden del Servicio actual.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Preferencias
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Abrir Archivo
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3286,7 +3385,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3450,12 +3549,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3551,14 +3650,14 @@ Suffix not supported
&Cambiar Tema de ítem
-
+
File is not a valid service.
The content encoding is not UTF-8.
Este no es un servicio válido.
La codificación del contenido no es UTF-8.
-
+
File is not a valid service.
El archivo no es un servicio válido.
@@ -3603,7 +3702,7 @@ La codificación del contenido no es UTF-8.
Abrir Archivo
-
+
OpenLP Service Files (*.osz)
Archivo de Servicio OpenLP (*.osz)
@@ -3633,7 +3732,7 @@ La codificación del contenido no es UTF-8.
Proyectar el ítem seleccionado.
-
+
Modified Service
Servicio Modificado
@@ -3653,27 +3752,27 @@ La codificación del contenido no es UTF-8.
Mostrar &Proyección
-
+
The current service has been modified. Would you like to save this service?
El servicio actual a sido modificado. ¿Desea guardar este servicio?
-
+
File could not be opened because it is corrupt.
No se pudo abrir el archivo porque está corrompido.
-
+
Empty File
Archivo Vacio
-
+
This service file does not contain any data.
El archivo de servicio no contiene ningún dato.
-
+
Corrupt File
Archivo Corrompido
@@ -3718,22 +3817,22 @@ La codificación del contenido no es UTF-8.
Seleccione un tema para el servicio.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
El archivo está corrupto o no es un archivo OpenLP 2.0 válido.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -4014,32 +4113,32 @@ La codificación del contenido no es UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Seleccionar Imagen
-
+
Theme Name Missing
Falta Nombre de Tema
-
+
There is no name for this theme. Please enter one.
No existe nombre para este tema. Ingrese uno.
-
+
Theme Name Invalid
Nombre de Tema no válido
-
+
Invalid theme name. Please enter one.
Nombre de tema no válido. Ingrese uno.
-
+
(approximately %d lines per slide)
(aproximadamente %d líneas por diapositiva)
@@ -4117,7 +4216,7 @@ La codificación del contenido no es UTF-8.
Debe seleccionar un tema para editar.
-
+
You are unable to delete the default theme.
No se puede eliminar el tema predeterminado.
@@ -4169,7 +4268,7 @@ La codificación del contenido no es UTF-8.
El archivo no es un tema válido.
-
+
Theme %s is used in the %s plugin.
El tema %s se usa en el complemento %s.
@@ -4219,7 +4318,7 @@ La codificación del contenido no es UTF-8.
¿Eliminar el tema %s?
-
+
Validation Error
Error de Validación
@@ -4243,255 +4342,260 @@ La codificación del contenido no es UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
Asistente para Temas
-
+
Welcome to the Theme Wizard
Bienvenido al Asistente para Temas
-
+
Set Up Background
Establecer un fondo
-
+
Set up your theme's background according to the parameters below.
Establecer el fondo de su tema según los siguientes parámetros.
-
+
Background type:
Tipo de fondo:
-
+
Solid Color
Color Sólido
-
+
Gradient
Gradiente
-
+
Color:
Color:
-
+
Gradient:
Gradiente:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
Arriba Izquierda - Abajo Derecha
-
+
Bottom Left - Top Right
Abajo Izquierda - Abajo Derecha
-
+
Main Area Font Details
Fuente del Área Principal
-
+
Define the font and display characteristics for the Display text
Definir la fuente y las características para el texto en Pantalla
-
+
Font:
Fuente:
-
+
Size:
Tamaño:
-
+
Line Spacing:
Epaciado de Líneas:
-
+
&Outline:
&Contorno:
-
+
&Shadow:
&Sombra:
-
+
Bold
Negrita
-
+
Italic
Cursiva
-
+
Footer Area Font Details
Fuente de Pié de página
-
+
Define the font and display characteristics for the Footer text
Definir la fuente y las características para el texto de Pié de página
-
+
Text Formatting Details
Detalles de Formato
-
+
Allows additional display formatting information to be defined
Permite definir información adicional de formato
-
+
Horizontal Align:
Alinea. Horizontal:
-
+
Left
Izquierda
-
+
Right
Derecha
-
+
Center
Centro
-
+
Output Area Locations
Ubicación del Área de Proyección
-
+
Allows you to change and move the main and footer areas.
Le permite mover y cambiar la ubicación del área principal y de pié de página.
-
+
&Main Area
Área &Principal
-
+
&Use default location
&Usar ubicación por defecto
-
+
X position:
Posición x:
-
+
px
px
-
+
Y position:
Posición y:
-
+
Width:
Ancho:
-
+
Height:
Altura:
-
+
Use default location
Usar ubicación por defecto
-
+
Save and Preview
Guardar && Previsualizar
-
+
View the theme and save it replacing the current one or change the name to create a new theme
Ver el tema y guardarlo reemplazando el actual o cambiando el nombre para crear un tema nuevo
-
+
Theme name:
Nombre:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
Este asistente le ayudará a crear y editar temas. Presione Siguiente para iniciar el proceso al establecer el fondo.
-
+
Transitions:
Transiciones:
-
+
&Footer Area
&Pie de Página
-
+
Edit Theme - %s
Editar Tema - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Color de fondo:
+
OpenLP.ThemesTab
@@ -4882,7 +4986,7 @@ La codificación del contenido no es UTF-8.
Listo.
-
+
Starting import...
Iniciando importación...
@@ -5427,126 +5531,141 @@ La codificación del contenido no es UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Historial de Uso
-
+
&Delete Tracking Data
&Eliminar datos de Historial
-
+
Delete song usage data up to a specified date.
Borrar el historial de datos hasta la fecha especificada.
-
+
&Extract Tracking Data
&Extraer datos de Historial
-
+
Generate a report on song usage.
Generar un reporte del uso de las canciones.
-
+
Toggle Tracking
Alternar Historial
-
+
Toggle the tracking of song usage.
Alternar seguimiento del uso de las canciones.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Historial</strong><br />Este complemento mantiene un registro del número de veces que se usa una canción en los servicios.
-
+
SongUsage
name singular
Historial
-
+
SongUsage
name plural
Historiales
-
+
SongUsage
container title
Historial
-
+
Song Usage
Historial
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Borrar historial de canción
-
+
Delete Selected Song Usage Events?
¿Borrar el historial de esta canción?
-
+
Are you sure you want to delete selected Song Usage data?
¿Desea realmente borrar los datos del historial de la canción seleccionada?
-
+
Deletion Successful
Limpieza Exitosa
-
+
All requested data has been deleted successfully.
Todos los datos han sido borrados exitosamente.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Extracción del Historial
-
+
Select Date Range
Seleccionar Rango de Fechas
-
+
to
hasta
-
+
Report Location
Ubicación de Reporte
@@ -5561,12 +5680,12 @@ La codificación del contenido no es UTF-8.
historial_%s_%s.txt
-
+
Report Creation
Crear Reporte
-
+
Report
%s
has been successfully created.
@@ -5588,130 +5707,130 @@ se ha creado satisfactoriamente.
SongsPlugin
-
+
&Song
&Canción
-
+
Import songs using the import wizard.
Importar canciones usando el asistente.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Complemento de Canciones</strong><br />El complemento de canciones permite mostar y editar canciones.
-
+
&Re-index Songs
&Re-indexar Canciones
-
+
Re-index the songs database to improve searching and ordering.
Reorganiza la base de datos para mejorar la busqueda y ordenamiento.
-
+
Reindexing songs...
Reindexando canciones...
-
+
Song
name singular
Canción
-
+
Songs
name plural
Canciones
-
+
Songs
container title
Canciones
-
+
Arabic (CP-1256)
Árabe (CP-1256)
-
+
Baltic (CP-1257)
Báltico (CP-1257)
-
+
Central European (CP-1250)
Europa Central (CP-1250)
-
+
Cyrillic (CP-1251)
Cirílico (CP-1251)
-
+
Greek (CP-1253)
Griego (CP-1253)
-
+
Hebrew (CP-1255)
Hebreo (CP-1255)
-
+
Japanese (CP-932)
Japonés (CP-932)
-
+
Korean (CP-949)
Koreano (CP-949)
-
+
Simplified Chinese (CP-936)
Chino Simplificado (CP-936)
-
+
Thai (CP-874)
Tailandés (CP-874)
-
+
Traditional Chinese (CP-950)
Chino Tradicional (CP-950)
-
+
Turkish (CP-1254)
Turco (CP-1254)
-
+
Vietnam (CP-1258)
Vietnamita (CP-1258)
-
+
Western European (CP-1252)
Europa Occidental (CP-1252)
-
+
Character Encoding
Codificación de Caracteres
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5720,14 +5839,14 @@ por la correcta representación de los caracteres.
Por lo general, la opción preseleccionada es la adecuada.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Por favor elija una codificación de caracteres.
La codificación se encarga de la correcta representación de caracteres.
-
+
Exports songs using the export wizard.
Exportar canciones usando el asistente.
@@ -5762,32 +5881,32 @@ La codificación se encarga de la correcta representación de caracteres.Agregar esta Canción al servicio.
-
+
Add a new song.
Agregar una canción nueva.
-
+
Edit the selected song.
Editar la canción seleccionada.
-
+
Delete the selected song.
Eliminar la canción seleccionada.
-
+
Preview the selected song.
Visualizar la canción seleccionada.
-
+
Send the selected song live.
Proyectar la canción seleccionada.
-
+
Add the selected song to the service.
Agregar esta canción al servicio.
@@ -6079,7 +6198,7 @@ La codificación se encarga de la correcta representación de caracteres.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- Este asistente le ayudará a exportar canciones al formato OpenLyrics que es gratuito y de código abierto.
+ Este asistente le ayudará a exportar canciones al formato OpenLyrics que es gratuito y de código abierto.
@@ -6142,7 +6261,7 @@ La codificación se encarga de la correcta representación de caracteres.Debe especificar un directorio.
-
+
Select Destination Folder
Seleccione Carpeta de Destino
@@ -6151,6 +6270,11 @@ La codificación se encarga de la correcta representación de caracteres.Select the directory where you want the songs to be saved.
Seleccionar el directorio para guardar las canciones.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6369,13 +6493,18 @@ La codificación se encarga de la correcta representación de caracteres.
Finished export.
- Exportación finalizada.
+ Exportación finalizada.
-
+
Your song export failed.
La importación falló.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts
index 2de001456..777eee651 100644
--- a/resources/i18n/et.ts
+++ b/resources/i18n/et.ts
@@ -521,7 +521,7 @@ Muudatused ei rakendu juba teenistusesse lisatud salmidele.
Importing verses from %s...
Importing verses from <book name>...
- Salmide importimine failist %s...
+ Salmide importimine raamatust <book name>...
@@ -827,17 +827,17 @@ vastavalt vajadusele ning seetõttu on vaja internetiühendust.
Ühe- ja kahekeelseid piiblisalmide otsitulemusi pole võimalik kombineerida. Kas tahad otsingu tulemused kustutada ja alustada uue otsinguga?
-
+
Bible not fully loaded.
Piibel ei ole täielikult laaditud.
-
+
Information
Andmed
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
Teine Piibel ei sisalda kõiki salme, mis on peamises Piiblis. Näidatakse ainult neid salme, mis leiduvad mõlemas Piiblis. %d salmi ei kaasatud tulemustesse.
@@ -1297,24 +1297,24 @@ Pane tähele, et veebipiiblite salmid laaditakse internetist vajadusel, seega on
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Pildiplugin</strong><br />Pildiplugin võimaldab piltide kuvamise.<br />Üks selle plugina One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
Pilt
-
+
Images
name plural
Pildid
-
+
Images
container title
Pildid
@@ -1355,37 +1355,37 @@ Pane tähele, et veebipiiblite salmid laaditakse internetist vajadusel, seega on
Valitud pildi lisamine teenistusele.
-
+
Load a new image.
Uue pildi laadimine.
-
+
Add a new image.
Uue pildi lisamine.
-
+
Edit the selected image.
Valitud pildi muutmine.
-
+
Delete the selected image.
Valitud pildi kustutamine.
-
+
Preview the selected image.
Valitud pildi eelvaatlus.
-
+
Send the selected image live.
Valitud pildi saatmine ekraanile.
-
+
Add the selected image to the service.
Valitud pildi lisamine teenistusele.
@@ -1411,34 +1411,52 @@ Pane tähele, et veebipiiblite salmid laaditakse internetist vajadusel, seega on
Pead valima pildi, mida kustutada.
-
+
You must select an image to replace the background with.
Pead enne valima pildi, millega tausta asendada.
-
+
Missing Image(s)
Puuduvad pildid
-
+
The following image(s) no longer exist: %s
Järgnevaid pilte enam pole: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
Järgnevaid pilte enam pole: %sKas tahad teised pildid sellest hoolimata lisada?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Tausta asendamisel esines viga, pildifaili "%s" enam pole.
-
+
There was no display item to amend.
+ Polnud ühtegi kuvatavat elementi, mida täiendada.
+
+
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
@@ -1578,7 +1596,7 @@ Do you want to add the other images anyway?
There was no display item to amend.
-
+ Polnud ühtegi kuvatavat elementi, mida täiendada.
@@ -1793,7 +1811,8 @@ OpenLP on kirjutanud ja seda haldavad vabatahtlikud. Kui sa tahad näha rohkem t
Copyright © 2004-2011 %s
Portions copyright © 2004-2011 %s
-
+ Autoriõigus © 2004-2011 %s
+Osade autoriõigus © 2004-2011 %s
@@ -2405,12 +2424,12 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Download complete. Click the finish button to return to OpenLP.
-
+ Allalaadimine lõpetatud. Klõpsa lõpetamise nupule, et naaseda OpenLP-sse.
Click the finish button to return to OpenLP.
-
+ Klõpsa lõpetamise nupule, et naaseda OpenLP-sse.
@@ -2418,7 +2437,7 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Configure Formatting Tags
-
+ Vormindussiltide seadistamine
@@ -2443,12 +2462,12 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Start tag
- Alustamise silt
+ Alustav silt
End tag
- Lõpu silt
+ Lõpetav silt
@@ -2458,12 +2477,12 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Start HTML
- HTML alguses
+ Alustav HTML
End HTML
- HTML lõpus
+ Lõpetav HTML
@@ -2579,7 +2598,7 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Break
-
+ Murdmine
@@ -2734,307 +2753,307 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
OpenLP.MainWindow
-
+
&File
&Fail
-
+
&Import
&Impordi
-
+
&Export
&Ekspordi
-
+
&View
&Vaade
-
+
M&ode
&Režiim
-
+
&Tools
&Tööriistad
-
+
&Settings
&Sätted
-
+
&Language
&Keel
-
+
&Help
A&bi
-
+
Media Manager
Meediahaldur
-
+
Service Manager
Teenistuse haldur
-
+
Theme Manager
Kujunduse haldur
-
+
&New
&Uus
-
+
&Open
&Ava
-
+
Open an existing service.
Olemasoleva teenistuse avamine.
-
+
&Save
&Salvesta
-
+
Save the current service to disk.
Praeguse teenistuse salvestamine kettale.
-
+
Save &As...
Salvesta &kui...
-
+
Save Service As
Salvesta teenistus kui
-
+
Save the current service under a new name.
Praeguse teenistuse salvestamine uue nimega.
-
+
E&xit
&Välju
-
+
Quit OpenLP
Lahku OpenLPst
-
+
&Theme
&Kujundus
-
+
&Configure OpenLP...
&Seadista OpenLP...
-
+
&Media Manager
&Meediahaldur
-
+
Toggle Media Manager
Meediahalduri lüliti
-
+
Toggle the visibility of the media manager.
Meediahalduri nähtavuse ümberlüliti.
-
+
&Theme Manager
&Kujunduse haldur
-
+
Toggle Theme Manager
Kujunduse halduri lüliti
-
+
Toggle the visibility of the theme manager.
Kujunduse halduri nähtavuse ümberlülitamine.
-
+
&Service Manager
&Teenistuse haldur
-
+
Toggle Service Manager
Teenistuse halduri lüliti
-
+
Toggle the visibility of the service manager.
Teenistuse halduri nähtavuse ümberlülitamine.
-
+
&Preview Panel
&Eelvaatluspaneel
-
+
Toggle Preview Panel
Eelvaatluspaneeli lüliti
-
+
Toggle the visibility of the preview panel.
Eelvaatluspaneeli nähtavuse ümberlülitamine.
-
+
&Live Panel
&Ekraani paneel
-
+
Toggle Live Panel
Ekraani paneeli lüliti
-
+
Toggle the visibility of the live panel.
Ekraani paneeli nähtavuse muutmine.
-
+
&Plugin List
&Pluginate loend
-
+
List the Plugins
Pluginate loend
-
+
&User Guide
&Kasutajajuhend
-
+
&About
&Lähemalt
-
+
More information about OpenLP
Lähem teave OpenLP kohta
-
+
&Online Help
&Abi veebis
-
+
&Web Site
&Veebileht
-
+
Use the system language, if available.
Kui saadaval, kasutatakse süsteemi keelt.
-
+
Set the interface language to %s
Kasutajaliidese keeleks %s määramine
-
+
Add &Tool...
Lisa &tööriist...
-
+
Add an application to the list of tools.
Rakenduse lisamine tööriistade loendisse.
-
+
&Default
&Vaikimisi
-
+
Set the view mode back to the default.
Vaikimisi kuvarežiimi taastamine.
-
+
&Setup
&Ettevalmistus
-
+
Set the view mode to Setup.
Ettevalmistuse kuvarežiimi valimine.
-
+
&Live
&Otse
-
+
Set the view mode to Live.
Vaate režiimiks ekraanivaate valimine.
-
+
OpenLP Version Updated
OpenLP uuendus
-
+
OpenLP Main Display Blanked
OpenLP peakuva on tühi
-
+
The Main Display has been blanked out
Peakuva on tühi
-
+
Default Theme: %s
Vaikimisi kujundus: %s
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3049,17 +3068,17 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.Eesti
-
+
Configure &Shortcuts...
&Kiirklahvide seadistamine...
-
+
Close OpenLP
OpenLP sulgemine
-
+
Are you sure you want to close OpenLP?
Kas oled kindel, et tahad OpenLP sulgeda?
@@ -3074,62 +3093,62 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.&Kuvasiltide seadistamine
-
+
Open &Data Folder...
Ava &andmete kataloog...
-
+
Open the folder where songs, bibles and other data resides.
Laulude, Piiblite ja muude andmete kataloogi avamine.
-
+
&Autodetect
&Isetuvastus
-
+
Update Theme Images
Teemapiltide uuendamine
-
+
Update the preview images for all themes.
Kõigi teemade eelvaatepiltide uuendamine.
-
+
Print the current service.
Praeguse teenistuse printimine.
-
+
L&ock Panels
&Lukusta paneelid
-
+
Prevent the panels being moved.
Paneelide liigutamise kaitse.
-
+
Re-run First Time Wizard
Käivita esmanõustaja uuesti
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
Käivita esmanõustaja uuesti laulude, Piiblite ja kujunduste importimiseks.
-
+
Re-run First Time Wizard?
Kas käivitada esmanõustaja uuesti?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
@@ -3138,26 +3157,107 @@ Re-running this wizard may make changes to your current OpenLP configuration and
Selle nõustaja taaskäivitamine muudab sinu praegust OpenLP seadistust ja võib lisada laule olemasolevate laulude loetelusse ning muuta vaikimisi kujundust.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Sätted
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Faili avamine
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3236,7 +3336,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3400,12 +3500,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3501,14 +3601,14 @@ Suffix not supported
&Muuda elemendi kujundust
-
+
File is not a valid service.
The content encoding is not UTF-8.
Fail ei ole sobiv teenistus.
Sisu ei ole UTF-8 kodeeringus.
-
+
File is not a valid service.
Fail pole sobiv teenistus.
@@ -3553,7 +3653,7 @@ Sisu ei ole UTF-8 kodeeringus.
Faili avamine
-
+
OpenLP Service Files (*.osz)
OpenLP teenistuse failid (*.osz)
@@ -3583,7 +3683,7 @@ Sisu ei ole UTF-8 kodeeringus.
Valitud kirje saatmine ekraanile.
-
+
Modified Service
Teenistust on muudetud
@@ -3603,27 +3703,27 @@ Sisu ei ole UTF-8 kodeeringus.
Näita &ekraanil
-
+
The current service has been modified. Would you like to save this service?
Praegust teensitust on muudetud. Kas tahad selle teenistuse salvestada?
-
+
File could not be opened because it is corrupt.
Faili pole võimalik avada, kuna see on rikutud.
-
+
Empty File
Tühi fail
-
+
This service file does not contain any data.
Selles teenistuse failis pole andmeid.
-
+
Corrupt File
Rikutud fail
@@ -3668,22 +3768,22 @@ Sisu ei ole UTF-8 kodeeringus.
Teenistuse jaoks kujunduse valimine.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3954,32 +4054,32 @@ Sisu ei ole UTF-8 kodeeringus.
OpenLP.ThemeForm
-
+
Select Image
Pildi valimine
-
+
Theme Name Missing
Kujundusel puudub nimi
-
+
There is no name for this theme. Please enter one.
Kujundusel ei ole nime. Palun sisesta nimi.
-
+
Theme Name Invalid
Sobimatu kujunduse nimi
-
+
Invalid theme name. Please enter one.
Kujunduse nimi pole sobiv. Palun sisesta sobiv nimi.
-
+
(approximately %d lines per slide)
@@ -4057,12 +4157,12 @@ Sisu ei ole UTF-8 kodeeringus.
Pead valima kujunduse, mida muuta.
-
+
You are unable to delete the default theme.
Vaikimisi kujundust pole võimalik kustutada.
-
+
Theme %s is used in the %s plugin.
Kujundust %s kasutatakse pluginas %s.
@@ -4159,7 +4259,7 @@ Sisu kodeering ei ole UTF-8.
Kas kustutada kujundus %s?
-
+
Validation Error
Valideerimise viga
@@ -4183,255 +4283,260 @@ Sisu kodeering ei ole UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
Kujunduse nõustaja
-
+
Welcome to the Theme Wizard
Tere tulemast kujunduse nõustajasse
-
+
Set Up Background
Tausta määramine
-
+
Set up your theme's background according to the parameters below.
Määra kujunduse taust, kasutades järgnevaid parameetreid.
-
+
Background type:
Tausta liik:
-
+
Solid Color
Ühtlane värv
-
+
Gradient
Üleminek
-
+
Color:
Värvus:
-
+
Gradient:
Üleminek:
-
+
Horizontal
Horisontaalne
-
+
Vertical
Vertikaalne
-
+
Circular
Radiaalne
-
+
Top Left - Bottom Right
Loodest kagusse
-
+
Bottom Left - Top Right
Edelast kirdesse
-
+
Main Area Font Details
Peamise teksti üksikasjad
-
+
Define the font and display characteristics for the Display text
Määra font ja teised teksti omadused
-
+
Font:
Font:
-
+
Size:
Suurus:
-
+
Line Spacing:
Reavahe:
-
+
&Outline:
&Kontuurjoon:
-
+
&Shadow:
&Vari:
-
+
Bold
Rasvane
-
+
Italic
Kaldkiri
-
+
Footer Area Font Details
Jaluse fondi üksikasjad
-
+
Define the font and display characteristics for the Footer text
Määra jaluse font ja muud omadused
-
+
Text Formatting Details
Teksti vorminduse üksikasjad
-
+
Allows additional display formatting information to be defined
Võimaldab määrata lisaks vorminduse andmeid
-
+
Horizontal Align:
Rõhtjoondus:
-
+
Left
Vasakul
-
+
Right
Paremal
-
+
Center
Keskel
-
+
Output Area Locations
Väljundala asukoht
-
+
Allows you to change and move the main and footer areas.
Võimaldab muuta ja liigutada peamist ja jaluse ala.
-
+
&Main Area
&Peamine ala
-
+
&Use default location
&Vaikimisi asukoha kasutamine
-
+
X position:
X-asukoht:
-
+
px
px
-
+
Y position:
Y-asukoht:
-
+
Width:
Laius:
-
+
Height:
Kõrgus:
-
+
Use default location
Vaikimisi asukoha kasutamine
-
+
Save and Preview
Salvestamine ja eelvaade
-
+
View the theme and save it replacing the current one or change the name to create a new theme
Vaata kujundus üle ja salvesta see, asendades olemasolev või muuda nime, et luua uus kujundus
-
+
Theme name:
Kujunduse nimi:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
See nõustaja aitab kujundusi luua ja muuta. Klõpsa edasi nupul, et alustada tausta määramisest.
-
+
Transitions:
Üleminekud:
-
+
&Footer Area
&Jaluse ala
-
+
Edit Theme - %s
Teema muutmine - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+
+
OpenLP.ThemesTab
@@ -4822,7 +4927,7 @@ Sisu kodeering ei ole UTF-8.
Valmis.
-
+
Starting import...
Importimise alustamine...
@@ -5362,126 +5467,141 @@ Sisu kodeering ei ole UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Laulude kasutuse jälgimine
-
+
&Delete Tracking Data
&Kustuta kogutud andmed
-
+
Delete song usage data up to a specified date.
Laulude kasutuse andmete kustutamine kuni antud kuupäevani.
-
+
&Extract Tracking Data
&Eralda laulukasutuse andmed
-
+
Generate a report on song usage.
Genereeri raport laulude kasutuse kohta.
-
+
Toggle Tracking
Laulukasutuse jälgimine
-
+
Toggle the tracking of song usage.
Laulukasutuse jälgimise sisse- ja väljalülitamine.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Laulude plugin</strong><br />See plugin võimaldab laulude kuvamise ja haldamise.
-
+
SongUsage
name singular
Laulukasutus
-
+
SongUsage
name plural
Laulukasutus
-
+
SongUsage
container title
Laulukasutus
-
+
Song Usage
Laulude kasutus
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Laulukasutuse andmete kustutamine
-
+
Delete Selected Song Usage Events?
Kas kustutada valitud laulude kasutamise sündmused?
-
+
Are you sure you want to delete selected Song Usage data?
Kas oled kindel, et tahad kustutada valitud laulude kasutuse andmed?
-
+
Deletion Successful
Kustutamine edukas
-
+
All requested data has been deleted successfully.
Kõik kustutamisele määratud andmed kustutati edukalt.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Laulukasutuse salvestamine
-
+
Select Date Range
Vali kuupäevade vahemik
-
+
to
kuni
-
+
Report Location
Raporti asukoht
@@ -5496,12 +5616,12 @@ Sisu kodeering ei ole UTF-8.
laulukasutuse_andmed_%s_%s.txt
-
+
Report Creation
Raporti koostamine
-
+
Report
%s
has been successfully created.
@@ -5523,130 +5643,130 @@ on edukalt loodud.
SongsPlugin
-
+
&Song
&Laul
-
+
Import songs using the import wizard.
Laulude importimine importimise nõustajaga.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Laulude plugin</strong><br />See plugin võimaldab laulude kuvamise ja haldamise.
-
+
&Re-index Songs
&Indekseeri laulud uuesti
-
+
Re-index the songs database to improve searching and ordering.
Laulude andmebaasi kordusindekseerimine, et parendada otsimist ja järjekorda.
-
+
Reindexing songs...
Laulude kordusindekseerimine...
-
+
Song
name singular
Laul
-
+
Songs
name plural
Laulud
-
+
Songs
container title
Laulud
-
+
Arabic (CP-1256)
Araabia (CP-1256)
-
+
Baltic (CP-1257)
Balti (CP-1257)
-
+
Central European (CP-1250)
Kesk-Euroopa (CP-1250)
-
+
Cyrillic (CP-1251)
Kirillitsa (CP-1251)
-
+
Greek (CP-1253)
Kreeka (CP-1253)
-
+
Hebrew (CP-1255)
Heebrea (CP-1255)
-
+
Japanese (CP-932)
Jaapani (CP-932)
-
+
Korean (CP-949)
Korea (CP-949)
-
+
Simplified Chinese (CP-936)
Lihtsustatud Hiina (CP-936)
-
+
Thai (CP-874)
Tai (CP-874)
-
+
Traditional Chinese (CP-950)
Tradistiooniline Hiina (CP-950)
-
+
Turkish (CP-1254)
Türgi (CP-1254)
-
+
Vietnam (CP-1258)
Vietnami (CP-1258)
-
+
Western European (CP-1252)
Lääne-Euroopa (CP-1252)
-
+
Character Encoding
Märgikodeering
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5654,14 +5774,14 @@ Usually you are fine with the preselected choice.
Tavaliselt on vaikimisi valik õige.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Palun vali märgikodeering.
Kodeering on vajalik märkide õige esitamise jaoks.
-
+
Exports songs using the export wizard.
Eksportimise nõustaja abil laulude eksportimine.
@@ -5696,32 +5816,32 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Valitud laulu lisamine teenistusele.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -6003,7 +6123,7 @@ Kodeering on vajalik märkide õige esitamise jaoks.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- See nõustaja aitab laulud eksportida avatud ülistuslaulude vormingus OpenLyrics.
+ See nõustaja aitab laulud eksportida avatud ülistuslaulude vormingus OpenLyrics.
@@ -6066,7 +6186,7 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Pead määrama kataloogi.
-
+
Select Destination Folder
Sihtkausta valimine
@@ -6075,6 +6195,11 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6293,13 +6418,18 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Finished export.
- Eksportimine lõpetatud.
+ Eksportimine lõpetatud.
-
+
Your song export failed.
Laulude eksportimine nurjus.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts
index 45caa753e..f5c8408eb 100644
--- a/resources/i18n/fr.ts
+++ b/resources/i18n/fr.ts
@@ -827,17 +827,17 @@ téléchargé à la demande, une connexion Internet fiable est donc nécessaire.
Vous ne pouvez pas combiner simple et double Bible dans les résultats de recherche. Voulez vous effacer les résultats et commencer une nouvelle recherche ?
-
+
Bible not fully loaded.
Bible pas entièrement chargée.
-
+
Information
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
La deuxième Bible ne contient pas tous les versets présents dans la Bible principale. Seulement les versets trouvés dans les deux Bibles vont être affichés. %s versets n'ont pas été inclus dans le résultat.
@@ -1322,24 +1322,24 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Module Image</strong><br />Le module Image permet l'affichage d'image.<br />L'un des traits distinctifs de ce module est la possibilité de regrouper un certain nombre d'images dans le gestionnaire de services, ce qui rend l'affichage de plusieurs images plus facile. Ce module permet également d'afficher les image sous forme de diaporama en boucle et avec un retard. En plus de cela, les images du module peut être utilisé pour remplacer l'arrière-plan du thème en cours.
-
+
Image
name singular
Image
-
+
Images
name plural
Images
-
+
Images
container title
Images
@@ -1380,37 +1380,37 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem
Ajoute l'Image sélectionnée au service.
-
+
Load a new image.
Charge une nouvelle image.
-
+
Add a new image.
Ajoute une nouvelle image.
-
+
Edit the selected image.
Édite l'image sélectionnée.
-
+
Delete the selected image.
Efface l'image sélectionnée.
-
+
Preview the selected image.
Prévisualise l'image sélectionnée.
-
+
Send the selected image live.
Envoie en direct l'image sélectionnée.
-
+
Add the selected image to the service.
Ajoute l'image sélectionnée au service.
@@ -1436,38 +1436,56 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem
Vous devez sélectionner une image a effacer.
-
+
Missing Image(s)
Image(s) manquante
-
+
The following image(s) no longer exist: %s
L(es) image(s) suivante(s) n'existe(nt) plus : %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
L(es) image(s) suivante(s) n'existe(nt) plus : %s
Voulez-vous ajouter de toute façon d'autres images ?
-
+
You must select an image to replace the background with.
Vous devez sélectionner une image pour remplacer le fond.
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Il y a un problème pour remplacer votre fond, le fichier d'image "%s" n'existe plus.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2773,292 +2791,292 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
OpenLP.MainWindow
-
+
&File
&Fichier
-
+
&Import
&Import
-
+
&Export
&Export
-
+
&View
&Visualise
-
+
M&ode
M&ode
-
+
&Tools
&Outils
-
+
&Settings
&Options
-
+
&Language
&Langue
-
+
&Help
&Aide
-
+
Media Manager
Gestionnaire de médias
-
+
Service Manager
Gestionnaire de services
-
+
Theme Manager
Gestionnaire de thèmes
-
+
&New
&Nouveau
-
+
&Open
&Ouvrir
-
+
Open an existing service.
Ouvre un service existant.
-
+
&Save
&Enregistre
-
+
Save the current service to disk.
Enregistre le service courant sur le disque.
-
+
Save &As...
Enregistre &sous...
-
+
Save Service As
Enregistre le service sous
-
+
Save the current service under a new name.
Enregistre le service courant sous un nouveau nom.
-
+
E&xit
&Quitter
-
+
Quit OpenLP
Quitter OpenLP
-
+
&Theme
&Thème
-
+
Configure &Shortcuts...
Personnalise les &raccourcis...
-
+
&Configure OpenLP...
&Personnalise OpenLP...
-
+
&Media Manager
Gestionnaire de &médias
-
+
Toggle Media Manager
Gestionnaire de Média
-
+
Toggle the visibility of the media manager.
Change la visibilité du gestionnaire de média.
-
+
&Theme Manager
Gestionnaire de &thèmes
-
+
Toggle Theme Manager
Gestionnaire de Thème
-
+
Toggle the visibility of the theme manager.
Change la visibilité du gestionnaire de tème.
-
+
&Service Manager
Gestionnaire de &services
-
+
Toggle Service Manager
Gestionnaire de service
-
+
Toggle the visibility of the service manager.
Change la visibilité du gestionnaire de service.
-
+
&Preview Panel
Panneau de &prévisualisation
-
+
Toggle Preview Panel
Panneau de prévisualisation
-
+
Toggle the visibility of the preview panel.
Change la visibilité du panel de prévisualisation.
-
+
&Live Panel
Panneau du &direct
-
+
Toggle Live Panel
Panneau du direct
-
+
Toggle the visibility of the live panel.
Change la visibilité du directe.
-
+
&Plugin List
Liste des &modules
-
+
List the Plugins
Liste des modules
-
+
&User Guide
&Guide utilisateur
-
+
&About
&À propos
-
+
More information about OpenLP
Plus d'information sur OpenLP
-
+
&Online Help
&Aide en ligne
-
+
&Web Site
Site &Web
-
+
Use the system language, if available.
Utilise le langage système, si disponible.
-
+
Set the interface language to %s
Défini la langue de l'interface à %s
-
+
Add &Tool...
Ajoute un &outils...
-
+
Add an application to the list of tools.
Ajoute une application a la liste des outils.
-
+
&Default
&Défaut
-
+
Set the view mode back to the default.
Redéfini le mode vue comme par défaut.
-
+
&Setup
&Configuration
-
+
Set the view mode to Setup.
Mode vue Configuration.
-
+
&Live
&Direct
-
+
Set the view mode to Live.
Mode vue Direct.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3067,32 +3085,32 @@ You can download the latest version from http://openlp.org/.
Vous pouvez télécharger la dernière version depuis http://openlp.org/.
-
+
OpenLP Version Updated
Version d'OpenLP mis a jours
-
+
OpenLP Main Display Blanked
OpenLP affichage principale noirci
-
+
The Main Display has been blanked out
L'affichage principale a été noirci
-
+
Close OpenLP
Ferme OpenLP
-
+
Are you sure you want to close OpenLP?
Êtes vous sur de vouloir fermer OpenLP ?
-
+
Default Theme: %s
Thème par défaut : %s
@@ -3108,12 +3126,12 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.Imprime l'ordre du service courant.
-
+
Open &Data Folder...
Ouvre le répertoire de &données...
-
+
Open the folder where songs, bibles and other data resides.
Ouvre le répertoire ou les chants, bibles et les autres données sont placées.
@@ -3123,78 +3141,159 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.&Configure les balise d'affichage
-
+
&Autodetect
&Détecte automatiquement
-
+
Update Theme Images
Met a jours les images de thèmes
-
+
Update the preview images for all themes.
Met a jours les images de tous les thèmes.
-
+
Print the current service.
Imprime le service courant.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Configuration
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Ouvre un fichier
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3280,7 +3379,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3444,12 +3543,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3590,19 +3689,19 @@ Suffix not supported
Ouvre un fichier
-
+
OpenLP Service Files (*.osz)
Fichier service OpenLP (*.osz)
-
+
File is not a valid service.
The content encoding is not UTF-8.
Le fichier n'est un service valide.
Le contenu n'est pas de l'UTF-8.
-
+
File is not a valid service.
Le fichier n'est pas un service valide.
@@ -3627,7 +3726,7 @@ Le contenu n'est pas de l'UTF-8.
Déplace la sélection en bas de la fenêtre.
-
+
Modified Service
Service modifié
@@ -3647,27 +3746,27 @@ Le contenu n'est pas de l'UTF-8.
Affiche en &direct
-
+
The current service has been modified. Would you like to save this service?
Le service courant à été modifier. Voulez-vous l'enregistrer ?
-
+
File could not be opened because it is corrupt.
Le fichier n'a pas pu être ouvert car il est corrompu.
-
+
Empty File
Fichier vide
-
+
This service file does not contain any data.
Ce fichier de service ne contiens aucune données.
-
+
Corrupt File
Fichier corrompu
@@ -3712,22 +3811,22 @@ Le contenu n'est pas de l'UTF-8.
Sélectionne un thème pour le service.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
Ce fichier est sois corrompu ou n'est pas un fichier de service OpenLP 2.0.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -4008,32 +4107,32 @@ Le contenu n'est pas de l'UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Sélectionne l'image
-
+
Theme Name Missing
Nom du thème manquant
-
+
There is no name for this theme. Please enter one.
Il n'y a pas ne nom pour ce thème. Veillez en introduire un.
-
+
Theme Name Invalid
Nom du thème invalide
-
+
Invalid theme name. Please enter one.
Nom du thème invalide. Veuillez en introduire un.
-
+
(approximately %d lines per slide)
(approximativement %d lignes pas diapositive)
@@ -4198,7 +4297,7 @@ The content encoding is not UTF-8.
Le contenu n'est pas de l'UTF-8.
-
+
Validation Error
Erreur de validation
@@ -4213,12 +4312,12 @@ Le contenu n'est pas de l'UTF-8.
Le thème avec ce nom existe déjà.
-
+
You are unable to delete the default theme.
Vous ne pouvez pas supprimer le thème par défaut.
-
+
Theme %s is used in the %s plugin.
Thème %s est utiliser par le module %s.
@@ -4237,255 +4336,260 @@ Le contenu n'est pas de l'UTF-8.
OpenLP.ThemeWizard
-
+
Edit Theme - %s
Édite le thème - %s
-
+
Theme Wizard
Assistant thème
-
+
Welcome to the Theme Wizard
Bienvenue dans l'assistant thème
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
Cet assistant va vous aider à créer et éditer votre thème. Cliquer sur la bouton suivant pour démarrer le processus par configurer votre fond.
-
+
Set Up Background
Établir le font
-
+
Set up your theme's background according to the parameters below.
Établir le fond de votre thème en fonction des paramètre si dessous.
-
+
Background type:
Type de font :
-
+
Solid Color
Couleur unie
-
+
Gradient
Dégrader
-
+
Color:
Couleur :
-
+
Gradient:
Dégrader :
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circulaire
-
+
Top Left - Bottom Right
Haut gauche - Bas droite
-
+
Bottom Left - Top Right
Bas gauche - Haut droite
-
+
Main Area Font Details
Aire principale détails de police
-
+
Define the font and display characteristics for the Display text
Définir la police et les caractéristique d'affichage pour afficher le text
-
+
Font:
Police :
-
+
Size:
Taille :
-
+
Line Spacing:
Espace des lignes :
-
+
&Outline:
&Contour :
-
+
&Shadow:
&Ombre :
-
+
Bold
Gras
-
+
Italic
Italique
-
+
Footer Area Font Details
Détailles de la police du pied de page
-
+
Define the font and display characteristics for the Footer text
Définir la police et les caractéristiques d'affichage du texte en pied de page
-
+
Text Formatting Details
Détails de formatage du texte
-
+
Allows additional display formatting information to be defined
Permet de définir des paramètre d'affichage supplémentaire
-
+
Horizontal Align:
Alignement horizontal :
-
+
Left
Gauche
-
+
Right
Droite
-
+
Center
Centrer
-
+
Transitions:
Traductions :
-
+
Output Area Locations
Emplacement de la zone d'affichage
-
+
Allows you to change and move the main and footer areas.
Vous permettre de déplacer les zone principale et de pied de page.
-
+
&Main Area
Zone &principale
-
+
&Use default location
&Utilise l'emplacement par défaut
-
+
X position:
Position x :
-
+
px
px
-
+
Y position:
Position y :
-
+
Width:
Largeur :
-
+
Height:
Hauteur :
-
+
&Footer Area
Zone de &pied de page
-
+
Use default location
Utilise l'emplacement pas défaut
-
+
Save and Preview
Enregistre et prévisualise
-
+
View the theme and save it replacing the current one or change the name to create a new theme
Visualise le thème et l'enregistre a la place du thème courent, ou change le nom pour en créer un nouveau
-
+
Theme name:
Nom du thème :
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Couleur de fond :
+
OpenLP.ThemesTab
@@ -4876,7 +4980,7 @@ Le contenu n'est pas de l'UTF-8.
Prêt.
-
+
Starting import...
Commence l'import...
@@ -5421,126 +5525,141 @@ Le contenu n'est pas de l'UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
Suivre de l'utilisation des chants
-
+
&Delete Tracking Data
&Supprime les données de suivi
-
+
Delete song usage data up to a specified date.
Supprime les données de l'utilisation des chants jusqu'à une date déterminée.
-
+
&Extract Tracking Data
&Extraire les données de suivi
-
+
Generate a report on song usage.
Génère un rapport de l'utilisation des chants.
-
+
Toggle Tracking
Enclenche/déclenche suivi
-
+
Toggle the tracking of song usage.
Enclenche/déclenche le suivi de l'utilisation des chants.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Module de suivi</strong><br />Ce module permet de suivre l'utilisation des chants dans les services.
-
+
SongUsage
name singular
Suivi de l'utilisation des chants
-
+
SongUsage
name plural
Suivi de l'utilisation des chants
-
+
SongUsage
container title
Suivi de l'utilisation des chants
-
+
Song Usage
Suivi de l'utilisation des chants
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Supprime les données de suivi de l'utilisation des chants
-
+
Delete Selected Song Usage Events?
Supprime les événement d'usages sélectionné ?
-
+
Are you sure you want to delete selected Song Usage data?
Êtes vous sur de vouloir supprimer les donnée de suivi sélectionnée ?
-
+
Deletion Successful
Suppression effectuée
-
+
All requested data has been deleted successfully.
Toutes les données demandées a été supprimées avec succès.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Extraction de l'utilisation des chants
-
+
Select Date Range
Sélectionne une période
-
+
to
à
-
+
Report Location
Emplacement du rapport
@@ -5555,12 +5674,12 @@ Le contenu n'est pas de l'UTF-8.
rapport_d_utilisation_%s_%s.txt
-
+
Report Creation
Création du rapport
-
+
Report
%s
has been successfully created.
@@ -5582,82 +5701,82 @@ has been successfully created.
SongsPlugin
-
+
Arabic (CP-1256)
Arabe (CP-1256)
-
+
Baltic (CP-1257)
Baltique (CP-1257)
-
+
Central European (CP-1250)
Europe centrale (CP-1250)
-
+
Cyrillic (CP-1251)
Cyrillique (CP-1251)
-
+
Greek (CP-1253)
Grecque (CP-1253)
-
+
Hebrew (CP-1255)
Hébreux (CP-1255)
-
+
Japanese (CP-932)
Japonais (CP-932)
-
+
Korean (CP-949)
Coréen (CP-949)
-
+
Simplified Chinese (CP-936)
Chinois simplifié (CP-936)
-
+
Thai (CP-874)
Thaï (CP-874)
-
+
Traditional Chinese (CP-950)
Chinois Traditionnel (CP-950)
-
+
Turkish (CP-1254)
Turque (CP-1254)
-
+
Vietnam (CP-1258)
Vietnamiens (CP-1258)
-
+
Western European (CP-1252)
Europe de l'ouest (CP-1252)
-
+
Character Encoding
Enccodage des caractères
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5666,62 +5785,62 @@ de l'affichage correct des caractères.
Habituellement le choix présélectionné est pertinent.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Veillez choisir l'enccodage des caractères.
L'enccodage est responsable de l'affichage correct des caractères.
-
+
&Song
&Chant
-
+
Import songs using the import wizard.
Import des chants en utilisant l'assistant d'import.
-
+
&Re-index Songs
&Re-index Chants
-
+
Re-index the songs database to improve searching and ordering.
Re-index la base de donnée des chants pour accélérer la recherche et le tri.
-
+
Reindexing songs...
Récréation des index des chants en cours...
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Module Chants</strong><br />Le module des Chants permet d'afficher et de gérer les chants.
-
+
Song
name singular
Chant
-
+
Songs
name plural
Chants
-
+
Songs
container title
Chants
-
+
Exports songs using the export wizard.
Export les chants en utilisant l'assistant d'export.
@@ -5756,32 +5875,32 @@ L'enccodage est responsable de l'affichage correct des caractères.Ajoute le Chant sélectionné au service.
-
+
Add a new song.
Ajouter un nouveau chant.
-
+
Edit the selected song.
Édite la chant sélectionné.
-
+
Delete the selected song.
Efface le chant sélectionné.
-
+
Preview the selected song.
Prévisualise le chant sélectionné.
-
+
Send the selected song live.
Affiche en direct le chant sélectionné.
-
+
Add the selected song to the service.
Ajoute le chant sélectionné au service.
@@ -6073,7 +6192,7 @@ L'enccodage est responsable de l'affichage correct des caractères.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- Cet assistant va sous aider a exporter vos chant fans le format de chant libre et gratuit OpenLyrics worship.
+ Cet assistant va sous aider a exporter vos chant fans le format de chant libre et gratuit OpenLyrics worship.
@@ -6136,7 +6255,7 @@ L'enccodage est responsable de l'affichage correct des caractères.Vous devez spécifier un répertoire.
-
+
Select Destination Folder
Sélectionne le répertoire de destination
@@ -6145,6 +6264,11 @@ L'enccodage est responsable de l'affichage correct des caractères.Select the directory where you want the songs to be saved.
Sélectionne le répertoire ou vous voulez enregistrer vos chants.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6363,13 +6487,18 @@ L'enccodage est responsable de l'affichage correct des caractères.
Finished export.
- Export terminé.
+ Export terminé.
-
+
Your song export failed.
Votre export de chant à échouer.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts
index 4d3cf600e..17fb60028 100644
--- a/resources/i18n/hu.ts
+++ b/resources/i18n/hu.ts
@@ -1,31 +1,5 @@
-
- AlertPlugin.AlertForm
-
-
- You have not entered a parameter to be replaced.
-Do you want to continue anyway?
- Nincs megadva a cserélend? paraméter. Folytatható?
-
-
-
- No Parameter Found
- Nem található a paraméter
-
-
-
- No Placeholder Found
- Nem található a helyjelöl?
-
-
-
- The alert text does not contain '<>'.
-Do you want to continue anyway?
- Az értesít? szöveg nem tartalmaz „<>” karaktereket.
-Folytatható?
-
-
AlertsPlugin
@@ -38,11 +12,6 @@ Folytatható?
Show an alert message.
Értesítést jelenít meg.
-
-
- <strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen
- <strong>Értesítés b?vítmény</strong><br />Az értesítés b?vítmény kezeli a gyermekfelügyelet felhívásait a vetít?n.
-
Alert
@@ -64,7 +33,7 @@ Folytatható?
<strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen.
-
+ <strong>Értesítés bővítmény</strong><br />Az értesítés bővítmény kezeli a gyermekfelügyelet felhívásait a vetítőn.
@@ -72,7 +41,7 @@ Folytatható?
Alert Message
- Értesít? üzenet
+ Értesítő üzenet
@@ -107,7 +76,7 @@ Folytatható?
You haven't specified any text for your alert. Please type in some text before clicking New.
- Az értesítés szövege nincs megadva. Adj meg valamilyen szöveget az Új gombra való kattintás el?tt.
+ Az értesítés szövege nincs megadva. Adj meg valamilyen szöveget az Új gombra való kattintás előtt.
@@ -117,24 +86,24 @@ Folytatható?
No Parameter Found
- Nem található a paraméter
+ Nem található a paraméter
You have not entered a parameter to be replaced.
Do you want to continue anyway?
- Nincs megadva a cserélend? paraméter. Folytatható?
+ Nincs megadva a cserélendő paraméter. Folytatható?
No Placeholder Found
- Nem található a helyjelöl?
+ Nem található a helyjelölő
The alert text does not contain '<>'.
Do you want to continue anyway?
- Az értesít? szöveg nem tartalmaz „<>” karaktereket.
+ Az értesítő szöveg nem tartalmaz „<>” karaktereket.
Folytatható?
@@ -143,7 +112,7 @@ Folytatható?
Alert message created and displayed.
- Az értesít? üzenet létrejött és megjelent.
+ Az értesítő üzenet létrejött és megjelent.
@@ -151,17 +120,17 @@ Folytatható?
Font
- Bet?készlet
+ Betűkészlet
Font name:
- Bet?készlet neve:
+ Betűkészlet neve:
Font color:
- Bet?szín:
+ Betűszín:
@@ -171,100 +140,12 @@ Folytatható?
Font size:
- Bet?méret:
+ Betűméret:
Alert timeout:
- Értesítés id?tartama:
-
-
-
- BibleDB.Wizard
-
-
- Importing books... %s
- Könyvek importálása… %s
-
-
-
- Importing verses from %s...
- Importing verses from <book name>...
- Versek importálása ebb?l a könyvb?l: %…
-
-
-
- Importing verses... done.
- Versek importálása… kész.
-
-
-
- BiblePlugin
-
-
- &Upgrade older Bibles
- &Régebbi bibliák frissítés
-
-
-
- Upgrade the Bible databases to the latest format
- Frissíti a biblia adatbázisokat a legutolsó formára
-
-
-
- Upgrade the Bible databases to the latest format.
- Frissíti a biblia adatbázisokat a legutolsó formára.
-
-
-
- BiblePlugin.HTTPBible
-
-
- Download Error
- Letöltési hiba
-
-
-
- There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug.
- Probléma történt a kijelölt versek letöltésekor. Kérem, ellen?rizd a az internetkapcsolatot, és ha a hiba nem oldódik meg, fontold meg a hiba bejelentését.
-
-
-
- Parse Error
- Feldolgozási hiba
-
-
-
- There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug.
- Probléma történt a kiválasztott versek kicsomagolásakor. Ha a hiba nem oldódik meg, fontold meg a hiba bejelentését.
-
-
-
- BiblePlugin.MediaItem
-
-
- Bible not fully loaded.
- A biblia nem tölt?dött be teljesen.
-
-
-
- You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?
- Az egyes és a kett?zött bibliaversek nem kombinálhatók. Töröljük a keresési eredményt és kezdjünk egy újabbat?
-
-
-
- Information
- Információ
-
-
-
- The second Bibles does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
- A második biblia nem tartalmaz minden verset, ami az els?ben megtalálható. Csak a mindkét bibliában fellelhet? versek fognak mgejelenni. Ezek a versek nem lesznek megtalálhatóak: %d.
-
-
-
- The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
- A második biblia nem tartalmaz minden verset, ami az els?ben megtalálható. Csak a mindkét bibliában fellelhet? versek fognak mgejelenni. Ezek a versek nem lesznek megtalálhatóak: %d.
+ Értesítés időtartama:
@@ -300,7 +181,7 @@ Folytatható?
No matching book could be found in this Bible. Check that you have spelled the name of the book correctly.
- A kért könyv nem található ebben a bibliában. Kérlek, ellen?rizd a könyv nevének helyesírását.
+ A kért könyv nem található ebben a bibliában. Kérlek, ellenőrizd a könyv nevének helyesírását.
@@ -325,12 +206,12 @@ Folytatható?
Preview the selected Bible.
- A kijelölt biblia el?nézete.
+ A kijelölt biblia előnézete.
Send the selected Bible live.
- A kijelölt biblia él? adásba küldése.
+ A kijelölt biblia élő adásba küldése.
@@ -340,17 +221,17 @@ Folytatható?
<strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service.
- <strong>Biblia b?vítmény</strong><br />A biblia b?vítmény különféle forrásokból származó igehelyek vetítését teszi lehet?vé a szolgálat alatt.
+ <strong>Biblia bővítmény</strong><br />A biblia bővítmény különféle forrásokból származó igehelyek vetítését teszi lehetővé a szolgálat alatt.
&Upgrade older Bibles
- &Régebbi bibliák frissítés
+ &Régebbi bibliák frissítés
Upgrade the Bible databases to the latest format.
- Frissíti a biblia adatbázisokat a legutolsó formára.
+ Frissíti a biblia adatbázisokat a legutolsó formátumra.
@@ -370,7 +251,7 @@ Book Chapter:Verse-Verse
Book Chapter:Verse-Verse,Verse-Verse
Book Chapter:Verse-Verse,Chapter:Verse-Verse
Book Chapter:Verse-Chapter:Verse
- Ezt az igehely hivatkozást nem támogatja az OpenLP vagy nem helyes. Kérlek, ellen?rizd, hogy a hivatkozás megfelel-e az egyik alábbi mintának:
+ Ezt az igehely hivatkozást nem támogatja az OpenLP vagy nem helyes. Kérlek, ellenőrizd, hogy a hivatkozás megfelel-e az egyik alábbi mintának:
Könyv fejezet
Könyv fejezet-fejezet
@@ -387,19 +268,19 @@ Könyv fejezet:Vers-Fejezet:Vers
Text Search is not available with Web Bibles.
- A keresés nem érhet? el online biblián.
+ A keresés nem érhető el online biblián.
You did not enter a search keyword.
You can separate different keywords by a space to search for all of your keywords and you can separate them by a comma to search for one of them.
Nincs megadva keresési kifejezés.
-Több kifejezés is megadható. Szóközzel történ? elválasztás esetén minden egyes kifejezésre történik a keresés, míg vessz?vel való elválasztás esetén csak az egyikre.
+Több kifejezés is megadható. Szóközzel történő elválasztás esetén minden egyes kifejezésre történik a keresés, míg vesszővel való elválasztás esetén csak az egyikre.
No Bibles Available
- Nincsenek elérhet? bibliák
+ Nincsenek elérhető bibliák
@@ -449,12 +330,12 @@ Több kifejezés is megadható. Szóközzel történ? elválasztás esetén mind
Note:
Changes do not affect verses already in the service.
Megjegyzés:
-A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
+A módosítások nem érintik a már a szolgálati sorrendben lévő verseket.
Display second Bible verses
- Kett?zött bibliaversek megjelenítése
+ Kettőzött bibliaversek megjelenítése
@@ -462,42 +343,42 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
Select Book Name
- Válaszd ki a könyv nevét
+
The following book name cannot be matched up internally. Please select the corresponding English name from the list.
- A következ? könyvnév nem ismerhet? fel. Válassz egy helyes angol nevet a következ? listából.
+
Current name:
- Jelenlegi név:
+
Corresponding name:
- Megfelel? név:
+
Show Books From
- Könyvek megjelenítése
+
Old Testament
- Ószövetség
+
New Testament
- Újszövetség
+
Apocrypha
- Apokrif
+
@@ -505,7 +386,7 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
You need to select a book.
- Ki kell jelölni egy könyvet.
+
@@ -513,18 +394,18 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
Importing books... %s
- Könyvek importálása… %s
+ Könyvek importálása… %s
Importing verses from %s...
Importing verses from <book name>...
- Versek importálása ebb?l a könyvb?l: %…
+ Versek importálása ebből a könyvből: %…
Importing verses... done.
- Versek importálása… kész.
+ Versek importálása… kész.
@@ -548,22 +429,22 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
Download Error
- Letöltési hiba
+ Letöltési hiba
There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug.
- Probléma történt a kijelölt versek letöltésekor. Kérem, ellen?rizd a az internetkapcsolatot, és ha a hiba nem oldódik meg, fontold meg a hiba bejelentését.
+ Probléma történt a kijelölt versek letöltésekor. Kérem, ellenőrizd a az internetkapcsolatot, és ha a hiba nem oldódik meg, fontold meg a hiba bejelentését.
Parse Error
- Feldolgozási hiba
+ Feldolgozási hiba
There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug.
- Probléma történt a kiválasztott versek kicsomagolásakor. Ha a hiba nem oldódik meg, fontold meg a hiba bejelentését.
+ Probléma történt a kiválasztott versek kicsomagolásakor. Ha a hiba nem oldódik meg, fontold meg a hiba bejelentését.
@@ -576,7 +457,7 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
This wizard will help you to import Bibles from a variety of formats. Click the next button below to start the process by selecting a format to import from.
- A tündér segít a különféle formátumú bibliák importálásában. Kattints az alábbi Következ? gombra a folyamat els? lépésének indításhoz, a formátum kiválasztásához.
+ A tündér segít a különféle formátumú bibliák importálásában. Kattints az alábbi Következő gombra a folyamat első lépésének indításhoz, a formátum kiválasztásához.
@@ -646,7 +527,7 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
Copyright:
- Szerz?i jog:
+ Szerzői jog:
@@ -656,12 +537,12 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
You need to specify a file with books of the Bible to use in the import.
- Meg kell adni egy fájlt a bibliai könyvekr?l az importáláshoz.
+ Meg kell adni egy fájlt a bibliai könyvekről az importáláshoz.
You need to specify a file of Bible verses to import.
- Meg kell adni egy fájlt a bibliai versekr?l az importáláshoz.
+ Meg kell adni egy fájlt a bibliai versekről az importáláshoz.
@@ -681,12 +562,12 @@ A módosítások nem érintik a már a szolgálati sorrendben lév? verseket.
You need to set a copyright for your Bible. Bibles in the Public Domain need to be marked as such.
- Meg kell adni a biblia szerz?i jogait. A közkincs? bibliákat meg kell jelölni ilyennek.
+ Meg kell adni a biblia szerzői jogait. A közkincsű bibliákat meg kell jelölni ilyennek.
This Bible already exists. Please import a different Bible or first delete the existing one.
- Ez a biblia már létezik. Kérlek, importálj egy másik bibliát vagy el?bb töröld a meglév?t.
+ Ez a biblia már létezik. Kérlek, importálj egy másik bibliát vagy előbb töröld a meglévőt.
@@ -740,17 +621,17 @@ demand and thus an internet connection is required.
Select Language
- Nyelvválasztás
+
OpenLP is unable to determine the language of this translation of the Bible. Please select the language from the list below.
- Az OpenLP nem képes meghatározni ennek a bibliafordítás nyelvét. Válaszd ki az alábbi listából.
+
Language:
- Nyelv:
+ Nyelv:
@@ -758,7 +639,7 @@ demand and thus an internet connection is required.
You need to choose a language.
- Meg kell adnod a nyelvet.
+
@@ -791,7 +672,7 @@ demand and thus an internet connection is required.
From:
- Innent?l:
+ Innentől:
@@ -816,27 +697,27 @@ demand and thus an internet connection is required.
Toggle to keep or clear the previous results.
- Átváltás az el?z? eredmény meg?rzése, ill. törlése között.
+ Átváltás az előző eredmény megőrzése, ill. törlése között.
You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?
- Az egyes és a kett?zött bibliaversek nem kombinálhatók. Töröljük a keresési eredményt és kezdjünk egy újabbat?
+ Az egyes és a kettőzött bibliaversek nem kombinálhatók. Töröljük a keresési eredményt és kezdjünk egy újabbat?
-
+
Bible not fully loaded.
- A biblia nem tölt?dött be teljesen.
+ A biblia nem töltődött be teljesen.
-
+
Information
- Információ
+ Információ
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
- A második biblia nem tartalmaz minden verset, ami az els?ben megtalálható. Csak a mindkét bibliában fellelhet? versek fognak mgejelenni. Ezek a versek nem lesznek megtalálhatóak: %d.
+ A második biblia nem tartalmaz minden verset, ami az elsőben megtalálható. Csak a mindkét bibliában fellelhető versek fognak mgejelenni. Ezek a versek nem lesznek megtalálhatóak: %d.
@@ -867,211 +748,77 @@ demand and thus an internet connection is required.
Select a Backup Directory
- Válassz egy mappát a biztonsági mentésnek
+
Bible Upgrade Wizard
- Bibliafrissít? tündér
+
This wizard will help you to upgrade your existing Bibles from a prior version of OpenLP 2. Click the next button below to start the upgrade process.
- A tündér segít az OpenLP 2 korábbi verzióiból származó bibliák frissítésében. Kattints az alábbi Következ? gombra a folyamat indításhoz.
+
Select Backup Directory
- Biztonsági mentés mappája
+
Please select a backup directory for your Bibles
- Válassz egy mappát a Biliáid biztonsági mentésének
+
Previous releases of OpenLP 2.0 are unable to use upgraded Bibles. This will create a backup of your current Bibles so that you can simply copy the files back to your OpenLP data directory if you need to revert to a previous release of OpenLP. Instructions on how to restore the files can be found in our <a href="http://wiki.openlp.org/faq">Frequently Asked Questions</a>.
- Az OpenLP 2.0 el?z? verziói nem képesek a frissített bibliákat alkalmazni. Ez a tündér segít bitonsági mentést készíteni a jelenlegi bibliákról, így ha vissza kell térni az OpenLP egy régebbi verziójára, akkor ezeket csak be kell majd másolni az OpenLP adatmappájába. A helyreállítási tudnivalók a <a href="http://wiki.openlp.org/faq">Gyakran Ismételt Kérdések</a> között találhatók.
+
Please select a backup location for your Bibles.
- Válassz egy helyet a Biliáid biztonsági mentésének.
+
Backup Directory:
- Biztonsági mentés helye:
+
There is no need to backup my Bibles
- Nincs szükségem biztonsági másolatra
+
Select Bibles
- Bibliák kijelölése
+
Please select the Bibles to upgrade
- Jelöld ki a frissítend? bibliákat
-
-
-
- Version name:
- Verzió neve:
-
-
-
- This Bible still exists. Please change the name or uncheck it.
- A Bibia már létezik. Változtasd meg a nevét vagy ne jelöld be.
+
Upgrading
- Frissítés
+
Please wait while your Bibles are upgraded.
- Kérlek, várj, míg a biblia frissítés alatt áll.
+
-
- You need to specify a Backup Directory for your Bibles.
- Meg kell adni a bibliáid biztonsági mentésének helyét.
-
-
-
- The backup was not successful.
-To backup your Bibles you need permission to write to the given directory. If you have write permissions and this error still occurs, please report a bug.
- A bizontonsági mentés nem teljes.
-A bibliák biztonsági mentéséhez írási jogosultság szükséges a megadott mappára. Ha az írási jogosultság fennáll, és mégis el?fordul ez a hiba, jelentsd be a hibát.
-
-
-
- You need to specify a version name for your Bible.
- Meg kell adni a biblia verziószámát.
-
-
-
- Bible Exists
- Biblia létezik
-
-
-
- This Bible already exists. Please upgrade a different Bible, delete the existing one or uncheck.
- A bibia már létezik. Kérlek, frissíts egy másik bibliát, töröld a már meglév?t vagy ne jelöld be.
-
-
-
- Starting upgrading Bible(s)...
- Bibliák frissítésének kezdése…
-
-
-
- There are no Bibles available to upgrade.
- Nincs frissíthet? biblia.
-
-
-
- Upgrading Bible %s of %s: "%s"
-Failed
- Biblia frissítése: %s/%s: „%s”
-Sikertelen
-
-
-
- Upgrading Bible %s of %s: "%s"
-Upgrading ...
- Biblia frissítése: %s/%s: „%s”
-Frissítés…
-
-
-
- Download Error
- Letöltési hiba
-
-
-
- To upgrade your Web Bibles an Internet connection is required. If you have a working Internet connection and this error still occurs, please report a bug.
- A webes bibliák frissítéséshez internet kapcsolat szükséges. Ha van m?köd? internet kapcsolat, és mégis el?fordul ez a hiba, jelentsd be a hibát.
-
-
-
- Upgrading Bible %s of %s: "%s"
-Upgrading %s ...
- Biblia frissítése: %s/%s: „%s”
-Frissítés: %s …
-
-
-
- Upgrading Bible %s of %s: "%s"
-Done
- Biblia frissítése: %s/%s: „%s”
-Kész
-
-
-
- , %s failed
- , %s sikertelen
-
-
-
- Upgrading Bible(s): %s successful%s
-Please note, that verses from Web Bibles will be downloaded
-on demand and so an Internet connection is required.
- Bibliák frissítése: %s teljesítve %s.
-Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve
-és ekkor is internet kapcsolat szükségeltetik.
-
-
-
- Upgrading Bible(s): %s successful%s
- Biblia frissítése: %s teljesítve %s
-
-
-
- Upgrade failed.
- A frissítés nem sikerült.
+
+ You need to specify a backup directory for your Bibles.
+
The backup was not successful.
To backup your Bibles you need permission to write to the given directory.
- A bizontonsági mentés nem teljes.
-A bibliák biztonsági mentéséhez írási jogosultság szükséges a megadott mappára.
-
-
-
- Starting Bible upgrade...
- Bibliák frissítésének kezdése…
-
-
-
- To upgrade your Web Bibles an Internet connection is required.
- A webes bibliák frissítéséshez internet kapcsolat szükséges.
-
-
-
- Upgrading Bible %s of %s: "%s"
-Complete
- Biblia frissítése: %s/%s: „%s”
-Teljes
-
-
-
- Upgrading Bible(s): %s successful%s
-Please note that verses from Web Bibles will be downloaded on demand and so an Internet connection is required.
- Bibliák frissítése: %s teljesítve %s.
-Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor is internet kapcsolat szükségeltetik.
-
-
-
- You need to specify a backup directory for your Bibles.
@@ -1084,18 +831,68 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
There are no Bibles that need to be upgraded.
+
+
+ Upgrading Bible %s of %s: "%s"
+Upgrading ...
+
+
+
+
+ Download Error
+ Letöltési hiba
+
+
+
+ To upgrade your Web Bibles an Internet connection is required.
+
+
+
+
+ Upgrading Bible %s of %s: "%s"
+Failed
+
+
+
+
+ Upgrading Bible %s of %s: "%s"
+Upgrading %s ...
+
+
+
+
+ Upgrading Bible %s of %s: "%s"
+Complete
+
+
+
+
+ , %s failed
+
+
+
+
+ Upgrading Bible(s): %s successful%s
+Please note that verses from Web Bibles will be downloaded on demand and so an Internet connection is required.
+
+
+
+
+ Upgrading Bible(s): %s successful%s
+
+
+
+
+ Upgrade failed.
+
+
CustomPlugin
-
-
- <strong>Custom Plugin</strong><br />The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.
- <strong>Speciális b?vítmény</strong><br />A speciális b?vítmény dalokhoz hasonló egyéni diasor vetítését teszi lehet?vé. Ugyanakkor több szabadságot enged meg, mint a dalok b?vítmény.
-
<strong>Custom Slide Plugin</strong><br />The custom slide plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.
- <strong>Speciális dia b?vítmény</strong><br />A speciális dia b?vítmény dalokhoz hasonló egyéni diasor vetítését teszi lehet?vé. Ugyanakkor több szabadságot enged meg, mint a dalok b?vítmény.
+ <strong>Speciális dia bővítmény</strong><br />A speciális dia bővítmény dalokhoz hasonló egyéni diasor vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény.
@@ -1143,12 +940,12 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
Preview the selected custom slide.
- A kijelölt speciális dia el?nézete.
+ A kijelölt speciális dia előnézete.
Send the selected custom slide live.
- A kijelölt speciális dia él? adásba küldése.
+ A kijelölt speciális dia élő adásba küldése.
@@ -1161,7 +958,7 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
Custom Display
- Speciális megjelenése
+ Speciális dia megjelenése
@@ -1196,11 +993,6 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
Edit all the slides at once.
Minden kijelölt dia szerkesztése egyszerre.
-
-
- Split Slide
- Szétválasztás
-
Split a slide into two by inserting a slide splitter.
@@ -1214,7 +1006,7 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
&Credits:
- &Közrem?köd?k:
+ &Közreműködők:
@@ -1231,11 +1023,6 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
Ed&it All
&Összes szerkesztése
-
-
- Split a slide into two only if it does not fit on the screen as one slide.
- Diák kettéválasztása csak akkor, ha nem fér ki a képerny?n egy diaként.
-
Insert Slide
@@ -1247,172 +1034,68 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
Are you sure you want to delete the %n selected custom slides(s)?
-
-
+
+ Valóban törölhetők a kijelölt speciális diák: %n?
-
- CustomsPlugin
-
-
- Custom
- name singular
- Speciális
-
-
-
- Customs
- name plural
- Speciális diák
-
-
-
- Custom
- container title
- Speciális
-
-
-
- Load a new Custom.
- Új speciális betöltése.
-
-
-
- Import a Custom.
- Speciális importálása.
-
-
-
- Add a new Custom.
- Új speciális hozzáadása.
-
-
-
- Edit the selected Custom.
- A kijelölt speciális szerkesztése.
-
-
-
- Delete the selected Custom.
- A kijelölt speciális törlése.
-
-
-
- Preview the selected Custom.
- A kijelölt speciális el?nézete.
-
-
-
- Send the selected Custom live.
- A kijelölt speciális él? adásba küldése.
-
-
-
- Add the selected Custom to the service.
- A kijelölt speciális hozzáadása a szolgálati sorrendhez.
-
-
-
- GeneralTab
-
-
- General
- Általános
-
-
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
- <strong>Kép b?vítmény</strong><br />A kép a b?vítmény különféle képek vetítését teszi lehet?vé.<br />A b?vítmény egyik különös figyelmet érdeml? képessége az, hogy képes a sorrendkezel?n csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A b?vítmény képes az OpenLP „id?zített körkörös” lejátszásra is, amivel a diasort automatikusan tudjuk léptetni. Továbbá, a b?vítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett.
+ <strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diasort automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett.
-
+
Image
name singular
Kép
-
+
Images
name plural
Képek
-
+
Images
container title
Képek
-
- Load a new Image.
- Új kép betöltése.
-
-
-
- Add a new Image.
- Új kép hozzáadása.
-
-
-
- Edit the selected Image.
- A kijelölt kép szerkesztése.
-
-
-
- Delete the selected Image.
- A kijelölt kép törlése.
-
-
-
- Preview the selected Image.
- A kijelölt kép el?nézete.
-
-
-
- Send the selected Image live.
- A kijelölt kép él? adásba küldése.
-
-
-
- Add the selected Image to the service.
- A kijelölt kép hozzáadása a szolgálati sorrendhez.
-
-
-
+
Load a new image.
Új kép betöltése.
-
+
Add a new image.
Új kép hozzáadása.
-
+
Edit the selected image.
A kijelölt kép szerkesztése.
-
+
Delete the selected image.
A kijelölt kép törlése.
-
+
Preview the selected image.
- A kijelölt kép el?nézete.
+ A kijelölt kép előnézete.
-
+
Send the selected image live.
- A kijelölt kép él? adásba küldése.
+ A kijelölt kép élő adásba küldése.
-
+
Add the selected image to the service.
A kijelölt kép hozzáadása a szolgálati sorrendhez.
@@ -1438,35 +1121,53 @@ Megjegyzés: a webes bibliák versei csak kérésre lesznek letöltve és ekkor
Ki kell választani egy képet a törléshez.
-
+
You must select an image to replace the background with.
Ki kell választani egy képet a háttér cseréjéhez.
-
+
Missing Image(s)
-
+
The following image(s) no longer exist: %s
- A következ? kép(ek) nem létezik: %s
+ A következő kép(ek) nem létezik: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
- A következ? kép(ek) nem létezik: %s
+ A következő kép(ek) nem létezik: %s
Szeretnél más képeket megadni?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Probléma történt a háttér cseréje során, a(z) „%s” kép nem létezik.
-
+
There was no display item to amend.
+ Nem volt módosított megjelenő elem.
+
+
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
@@ -1475,7 +1176,7 @@ Szeretnél más képeket megadni?
<strong>Media Plugin</strong><br />The media plugin provides playback of audio and video.
- <strong>Média b?vítmény</strong><br />A média b?vítmény hangok és videók lejátszását teszi lehet?vé.
+ <strong>Média bővítmény</strong><br />A média bővítmény hangok és videók lejátszását teszi lehetővé.
@@ -1495,41 +1196,6 @@ Szeretnél más képeket megadni?
container title
Média
-
-
- Load a new Media.
- Új médiafájl betöltése.
-
-
-
- Add a new Media.
- Új médiafájl hozzáadása.
-
-
-
- Edit the selected Media.
- A kijelölt médiafájl szerkesztése.
-
-
-
- Delete the selected Media.
- A kijelölt médiafájl törlése.
-
-
-
- Preview the selected Media.
- A kijelölt médiafájl el?nézete.
-
-
-
- Send the selected Media live.
- A kijelölt médiafájl él? adásba küldése.
-
-
-
- Add the selected Media to the service.
- A kijelölt médiafájl hozzáadása a szolgálati sorrendhez.
-
Load new media.
@@ -1553,12 +1219,12 @@ Szeretnél más képeket megadni?
Preview the selected media.
- A kijelölt médiafájl el?nézete.
+ A kijelölt médiafájl előnézete.
Send the selected media live.
- A kijelölt médiafájl él? adásba küldése.
+ A kijelölt médiafájl élő adásba küldése.
@@ -1606,7 +1272,7 @@ Szeretnél más képeket megadni?
There was no display item to amend.
-
+ Nem volt módosított megjelenő elem.
@@ -1619,7 +1285,7 @@ Szeretnél más képeket megadni?
Use Phonon for video playback
- A Phonon médiakezel? keretrendszer alkalmazása videók lejátszására
+ A Phonon médiakezelő keretrendszer alkalmazása videók lejátszására
@@ -1640,7 +1306,7 @@ Szeretnél más képeket megadni?
You have to upgrade your existing Bibles.
Should OpenLP upgrade now?
A bibliák formátuma megváltozott,
-ezért frissíteni kell a már meglév? bibliákat.
+ezért frissíteni kell a már meglévő bibliákat.
Frissítheti most az OpenLP?
@@ -1649,7 +1315,7 @@ Frissítheti most az OpenLP?
Credits
- Közrem?köd?k
+ Közreműködők
@@ -1732,16 +1398,16 @@ Final Credit
Projektvezetés
%s
-Fejleszt?k
+Fejlesztők
%s
Hozzájárulók
%s
-Tesztel?k
+Tesztelők
%s
-Csomagkészít?k
+Csomagkészítők
%s
Fordítók
@@ -1759,7 +1425,7 @@ Fordítók
%s
Magyar (hu)
%s
- Jap?n (ja)
+ Japűn (ja)
%s
Norvég bokmål (nb)
%s
@@ -1779,22 +1445,22 @@ Fordítás
PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/intro
Oxygen ikonok: http://oxygen-icons.org/
-Végs? köszönet
+Végső köszönet
„Úgy szerette Isten a világot, hogy
egyszülött Fiát adta oda, hogy egyetlen
- benne hív? se vesszen el, hanem
+ benne hívő se vesszen el, hanem
örök élete legyen.” (Jn 3,16)
- És végül, de nem utolsósorban, a végs? köszönet
+ És végül, de nem utolsósorban, a végső köszönet
Istené, Atyánké, mert elküldte a Fiát, hogy meghaljon
- a kereszten, megszabadítva bennünket a b?nt?l. Ezért
+ a kereszten, megszabadítva bennünket a bűntől. Ezért
ezt a programot szabadnak és ingyenesnek készítettük,
- mert ? tett minket szabaddá.
+ mert Ő tett minket szabaddá.
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; version 2 of the License.
- Ez egy szabad szoftver; terjeszthet? illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki.
+ Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki.
@@ -1810,11 +1476,11 @@ OpenLP is free church presentation software, or lyrics projection software, used
Find out more about OpenLP: http://openlp.org/
OpenLP is written and maintained by volunteers. If you would like to see more free Christian software being written, please consider contributing by using the button below.
- OpenLP <version><revision> – Nyílt forrású dalszöveg vetít?
+ OpenLP <version><revision> – Nyílt forrású dalszöveg vetítő
-Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetít? szabad szoftver, mely használható énekek, bibliai versek, videók, képek és bemutatók (ha az Impress, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére a gyülekezeti dics?ítés alatt egy számítógép és egy projektor segítségével.
+Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetítő szabad szoftver, mely használható énekek, bibliai versek, videók, képek és bemutatók (ha az Impress, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére a gyülekezeti dicsőítés alatt egy számítógép és egy projektor segítségével.
-Többet az OpenLP-r?l: http://openlp.org/
+Többet az OpenLP-ről: http://openlp.org/
Az OpenLP-t önkéntesek készítették és tartják karban. Ha szeretnél több keresztény számítógépes programot, fontold meg a projektben való részvételt az alábbi gombbal.
@@ -1822,8 +1488,8 @@ Az OpenLP-t önkéntesek készítették és tartják karban. Ha szeretnél több
Copyright © 2004-2011 %s
Portions copyright © 2004-2011 %s
- Szerz?i jog © 2004-2011 %s
-Részleges szerz?i jog © 2004-2011 %s
+ Szerzői jog © 2004-2011 %s
+Részleges szerzői jog © 2004-2011 %s
@@ -1836,27 +1502,27 @@ Részleges szerz?i jog © 2004-2011 %s
Number of recent files to display:
- El?zmények megjelenítésének hossza:
+ Előzmények megjelenítésének hossza:
Remember active media manager tab on startup
- Újraindításkor az aktív médiakezel? fülek visszaállítása
+ Újraindításkor az aktív médiakezelő fülek visszaállítása
Double-click to send items straight to live
- Dupla kattintással az elemek azonnali él? adásba küldése
+ Dupla kattintással az elemek azonnali élő adásba küldése
Expand new service items on creation
- A sorrendbe kerül? elemek kibontása létrehozáskor
+ A sorrendbe kerülő elemek kibontása létrehozáskor
Enable application exit confirmation
- Kilépési meger?sítés engedélyezése
+ Kilépési megerősítés engedélyezése
@@ -1866,7 +1532,7 @@ Részleges szerz?i jog © 2004-2011 %s
Hide mouse cursor when over display window
- Egérmutató elrejtése a vetítési képerny? felett
+ Egérmutató elrejtése a vetítési képernyő felett
@@ -1891,7 +1557,7 @@ Részleges szerz?i jog © 2004-2011 %s
Preview items when clicked in Media Manager
- Elem el?nézete a médiakezel?ben való kattintáskor
+ Elem előnézete a médiakezelőben való kattintáskor
@@ -1906,7 +1572,7 @@ Részleges szerz?i jog © 2004-2011 %s
Browse for an image file to display.
- Tallózd be a megjelenítend? képfájlt.
+ Tallózd be a megjelenítendő képfájlt.
@@ -1914,181 +1580,12 @@ Részleges szerz?i jog © 2004-2011 %s
Az eredeti OpenLP logó visszaállítása.
-
- OpenLP.DisplayTagDialog
-
-
- Edit Selection
- Kijelölés szerkesztése
-
-
-
- Description
- Leírás
-
-
-
- Tag
- Címke
-
-
-
- Start tag
- Nyitó címke
-
-
-
- End tag
- Záró címke
-
-
-
- Tag Id
- ID
-
-
-
- Start HTML
- Nyitó HTML
-
-
-
- End HTML
- Befejez? HTML
-
-
-
- Save
- Mentés
-
-
-
- OpenLP.DisplayTagTab
-
-
- Update Error
- Frissítési hiba
-
-
-
- Tag "n" already defined.
- Az „n” címke már létezik.
-
-
-
- Tag %s already defined.
- A címke már létezik: %s.
-
-
-
- New Tag
- Új címke
-
-
-
- <Html_here>
- <Html_itt>
-
-
-
- </and here>
- </és itt>
-
-
-
- <HTML here>
- <HTML itt>
-
-
-
- OpenLP.DisplayTags
-
-
- Red
- Vörös
-
-
-
- Black
- Fekete
-
-
-
- Blue
- Kék
-
-
-
- Yellow
- Sárga
-
-
-
- Green
- Zöld
-
-
-
- Pink
- Rózsaszín
-
-
-
- Orange
- Narancs
-
-
-
- Purple
- Lila
-
-
-
- White
- Fehér
-
-
-
- Superscript
- Fels? index
-
-
-
- Subscript
- Alsó index
-
-
-
- Paragraph
- Bekezdés
-
-
-
- Bold
- Félkövér
-
-
-
- Italics
- D?lt
-
-
-
- Underline
- Aláhúzott
-
-
-
- Break
- Sortörés
-
-
OpenLP.ExceptionDialog
Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred.
- Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alsó szövegdoboz olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejleszt?i számára, tehát kérjük, küld el a bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen hol és mit tettél, amikor a hiba történt.
+ Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alsó szövegdoboz olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el a bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen hol és mit tettél, amikor a hiba történt.
@@ -2229,38 +1726,33 @@ Version: %s
Enabling selected plugins...
- Kijelölt b?vítmények engedélyezése…
+ Kijelölt bővítmények engedélyezése…
First Time Wizard
- Els? indítás tündér
+ Első indítás tündér
Welcome to the First Time Wizard
- Üdvözlet az els? indítás tündérben
+ Üdvözlet az első indítás tündérben
Activate required Plugins
- Igényelt b?vítmények aktiválása
+ Igényelt bővítmények aktiválása
Select the Plugins you wish to use.
- Jelöld ki az alkalmazni kívánt b?vítményeket.
+ Jelöld ki az alkalmazni kívánt bővítményeket.
Songs
Dalok
-
-
- Custom Text
- Speciális
-
Bible
@@ -2313,11 +1805,11 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Nem sikerült internetkapcsolatot találni. Az Els? indulás tündérnek internetkapcsolatra van szüksége ahhoz, hogy a példa dalokat, bibliákat és témákat le tudja tölteni.
+ Nem sikerült internetkapcsolatot találni. Az Első indulás tündérnek internetkapcsolatra van szüksége ahhoz, hogy a példa dalokat, bibliákat és témákat le tudja tölteni.
-Az Els? indulás tündér újbóli indításához most a Mégse gobra kattints el?ször, ellen?rizd az internetkapcsolatot és indítsd újra az OpenLP-t.
+Az Első indulás tündér újbóli indításához most a Mégse gobra kattints először, ellenőrizd az internetkapcsolatot és indítsd újra az OpenLP-t.
-Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gombot.
+Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés gombot.
@@ -2359,20 +1851,10 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Set up default settings to be used by OpenLP.
Az OpenLP alapértelmezett beállításai.
-
-
- Setting Up And Importing
- Beállítás és importálás
-
-
-
- Please wait while OpenLP is set up and your data is imported.
- Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok importálódnak.
-
Default output display:
- Alapértelmezett kimeneti képerny?:
+ Alapértelmezett kimeneti képernyő:
@@ -2387,7 +1869,7 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
This wizard will help you to configure OpenLP for initial use. Click the next button below to start.
- A tündér segít elkezdeni az OpenLP használatát. Kattints az alábbi Következ? gombra az indításhoz.
+ A tündér segít elkezdeni az OpenLP használatát. Kattints az alábbi Következő gombra az indításhoz.
@@ -2397,7 +1879,7 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Please wait while OpenLP is set up and your data is downloaded.
- Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok letölt?dnek.
+ Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok letöltődnek.
@@ -2409,20 +1891,20 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Click the finish button to start OpenLP.
Kattints a Befejezés gombra az OpenLP indításához.
-
-
- Custom Slides
-
-
Download complete. Click the finish button to return to OpenLP.
-
+ Letöltés kész. Kattints a Befejezés gombra az OpenLP-hez való visszatéréshez.
Click the finish button to return to OpenLP.
-
+ Kattints a Befejezés gombra az OpenLP-hez való visszatéréshez.
+
+
+
+ Custom Slides
+ Speciális diák
@@ -2435,47 +1917,47 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Edit Selection
- Kijelölés szerkesztése
+
Save
- Mentés
+
Description
- Leírás
+
Tag
- Címke
+
Start tag
- Nyitó címke
+
End tag
- Záró címke
+
Tag Id
- ID
+
Start HTML
- Nyitó HTML
+
End HTML
- Befejez? HTML
+
@@ -2483,32 +1965,32 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Update Error
- Frissítési hiba
+
Tag "n" already defined.
- Az „n” címke már létezik.
+
New Tag
- Új címke
+
<HTML here>
- <HTML itt>
+
</and here>
- </és itt>
+
Tag %s already defined.
- A címke már létezik: %s.
+
@@ -2516,62 +1998,62 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Red
- Vörös
+
Black
- Fekete
+
Blue
- Kék
+
Yellow
- Sárga
+
Green
- Zöld
+
Pink
- Rózsaszín
+
Orange
- Narancs
+
Purple
- Lila
+
White
- Fehér
+
Superscript
- Fels? index
+
Subscript
- Alsó index
+
Paragraph
- Bekezdés
+
@@ -2581,17 +2063,17 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Italics
- D?lt
+
Underline
- Aláhúzott
+
Break
- Sortörés
+
@@ -2609,12 +2091,12 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Select monitor for output display:
- Jelöld ki a vetítési képerny?t:
+ Jelöld ki a vetítési képernyőt:
Display if a single screen
- Megjelenítés egy képerny? esetén
+ Megjelenítés egy képernyő esetén
@@ -2624,7 +2106,7 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Show blank screen warning
- Figyelmeztetés megjelenítése az elsötétített képerny?r?l
+ Figyelmeztetés megjelenítése az elsötétített képernyőről
@@ -2634,7 +2116,7 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Show the splash screen
- Indító képerny? megjelenítése
+ Indító képernyő megjelenítése
@@ -2644,12 +2126,12 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Prompt to save before starting a new service
- Rákérdezés mentésre új sorrend létrehozása el?tt
+ Rákérdezés mentésre új sorrend létrehozása előtt
Automatically preview next item in service
- Következ? elem automatikus el?nézete a sorrendben
+ Következő elem automatikus előnézete a sorrendben
@@ -2709,7 +2191,7 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Unblank display when adding new live item
- Képerny? elsötétítésének visszavonása új elem él? adásba küldésekor
+ Képernyő elsötétítésének visszavonása új elem élő adásba küldésekor
@@ -2719,7 +2201,7 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
Timed slide interval:
- Id?zített dia intervalluma:
+ Időzített dia intervalluma:
@@ -2746,318 +2228,318 @@ Az Els? indulás tündér további megkerüléséhez, nyomd meg a Befejezés gom
OpenLP.MainWindow
-
+
&File
&Fájl
-
+
&Import
&Importálás
-
+
&Export
&Exportálás
-
+
&View
&Nézet
-
+
M&ode
&Mód
-
+
&Tools
&Eszközök
-
+
&Settings
&Beállítások
-
+
&Language
&Nyelv
-
+
&Help
&Súgó
-
+
Media Manager
- Médiakezel?
+ Médiakezelő
-
+
Service Manager
- Sorrendkezel?
+ Sorrendkezelő
-
+
Theme Manager
- Témakezel?
+ Témakezelő
-
+
&New
&Új
-
+
&Open
Meg&nyitás
-
+
Open an existing service.
- Meglév? sorrend megnyitása.
+ Meglévő sorrend megnyitása.
-
+
&Save
&Mentés
-
+
Save the current service to disk.
Aktuális sorrend mentése lemezre.
-
+
Save &As...
Mentés má&sként…
-
+
Save Service As
Sorrend mentése másként
-
+
Save the current service under a new name.
Az aktuális sorrend más néven való mentése.
-
+
E&xit
&Kilépés
-
+
Quit OpenLP
OpenLP bezárása
-
+
&Theme
&Téma
-
+
&Configure OpenLP...
OpenLP &beállítása…
-
-
- &Media Manager
- &Médiakezel?
-
-
-
- Toggle Media Manager
- Médiakezel? átváltása
-
-
-
- Toggle the visibility of the media manager.
- A médiakezel? láthatóságának átváltása.
-
-
-
- &Theme Manager
- &Témakezel?
-
-
-
- Toggle Theme Manager
- Témakezel? átváltása
-
-
-
- Toggle the visibility of the theme manager.
- A témakezel? láthatóságának átváltása.
-
-
-
- &Service Manager
- &Sorrendkezel?
-
-
-
- Toggle Service Manager
- Sorrendkezel? átváltása
-
- Toggle the visibility of the service manager.
- A sorrendkezel? láthatóságának átváltása.
+ &Media Manager
+ &Médiakezelő
- &Preview Panel
- &El?nézet panel
+ Toggle Media Manager
+ Médiakezelő átváltása
- Toggle Preview Panel
- El?nézet panel átváltása
+ Toggle the visibility of the media manager.
+ A médiakezelő láthatóságának átváltása.
- Toggle the visibility of the preview panel.
- Az el?nézet panel láthatóságának átváltása.
+ &Theme Manager
+ &Témakezelő
- &Live Panel
- &Él? adás panel
+ Toggle Theme Manager
+ Témakezelő átváltása
- Toggle Live Panel
- Él? adás panel átváltása
+ Toggle the visibility of the theme manager.
+ A témakezelő láthatóságának átváltása.
+
+
+
+ &Service Manager
+ &Sorrendkezelő
+
+
+
+ Toggle Service Manager
+ Sorrendkezelő átváltása
- Toggle the visibility of the live panel.
- Az él? adás panel láthatóságának átváltása.
+ Toggle the visibility of the service manager.
+ A sorrendkezelő láthatóságának átváltása.
- &Plugin List
- &B?vítménylista
+ &Preview Panel
+ &Előnézet panel
- List the Plugins
- B?vítmények listája
+ Toggle Preview Panel
+ Előnézet panel átváltása
+
+
+
+ Toggle the visibility of the preview panel.
+ Az előnézet panel láthatóságának átváltása.
+
+
+
+ &Live Panel
+ &Élő adás panel
+ Toggle Live Panel
+ Élő adás panel átváltása
+
+
+
+ Toggle the visibility of the live panel.
+ Az élő adás panel láthatóságának átváltása.
+
+
+
+ &Plugin List
+ &Bővítménylista
+
+
+
+ List the Plugins
+ Bővítmények listája
+
+
+
&User Guide
&Felhasználói kézikönyv
-
+
&About
&Névjegy
-
+
More information about OpenLP
- További információ az OpenLP-r?l
+ További információ az OpenLP-ről
-
+
&Online Help
&Online súgó
-
+
&Web Site
&Weboldal
-
+
Use the system language, if available.
- Rendszernyelv használata, ha elérhet?.
+ Rendszernyelv használata, ha elérhető.
-
+
Set the interface language to %s
A felhasználói felület nyelvének átváltása erre: %s
-
+
Add &Tool...
&Eszköz hozzáadása…
-
+
Add an application to the list of tools.
Egy alkalmazás hozzáadása az eszközök listához.
-
+
&Default
&Alapértelmezett
-
+
Set the view mode back to the default.
Nézetmód visszaállítása az alapértelmezettre.
-
+
&Setup
&Szerkesztés
-
+
Set the view mode to Setup.
Nézetmód váltása a Beállítás módra.
-
+
&Live
- &Él? adás
+ &Élő adás
-
+
Set the view mode to Live.
- Nézetmód váltása a Él? módra.
+ Nézetmód váltása a Élő módra.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
- Már letölthet? az OpenLP %s verziója (jelenleg a %s verzió fut).
+ Már letölthető az OpenLP %s verziója (jelenleg a %s verzió fut).
-A legfrissebb verzió a http://openlp.org/ oldalról szerezhet? be.
+A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.
-
+
OpenLP Version Updated
OpenLP verziófrissítés
-
+
OpenLP Main Display Blanked
- Elsötétített OpenLP f? képerny?
+ Elsötétített OpenLP fő képernyő
-
+
The Main Display has been blanked out
- A f? képerny? el lett sötétítve
+ A fő képernyő el lett sötétítve
-
+
Default Theme: %s
Alapértelmezett téma: %s
-
+
Configure &Shortcuts...
- &Gyorsbillenty?k beállítása…
+ &Gyorsbillentyűk beállítása…
@@ -3066,108 +2548,185 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhet? be.Magyar
-
- Print the current Service Order.
- Az aktuális sorrend nyomtatása.
-
-
-
- &Configure Display Tags
- Megjelenítési &címkék beállítása
-
-
-
+
&Autodetect
&Automatikus felismerés
-
+
Open &Data Folder...
&Adatmappa megnyitása…
-
+
Open the folder where songs, bibles and other data resides.
A dalokat, bibliákat és egyéb adatokat tartalmazó mappa megnyitása.
-
+
Close OpenLP
OpenLP bezárása
-
+
Are you sure you want to close OpenLP?
Biztosan bezárható az OpenLP?
-
+
Update Theme Images
Témaképek frissítése
-
+
Update the preview images for all themes.
- Összes téma el?nézeti képének frissítése.
+ Összes téma előnézeti képének frissítése.
-
+
Print the current service.
Az aktuális sorrend nyomtatása.
-
+
+ &Recent Files
+ &Legutóbbi fájlok
+
+
+
+ Configure &Formatting Tags...
+ Formázó &címkék beállítása…
+
+
+
L&ock Panels
-
+ Panelek &zárolása
-
+
Prevent the panels being moved.
-
+ Megakadályozza a panelek mozgatását.
-
+
Re-run First Time Wizard
-
+ Első indítás tündér
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+ Első indítás tündér újbóli futtatása dalok, bibliák, témák importálásához.
-
+
Re-run First Time Wizard?
-
+ Újra futtatható az Első indítás tündér?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+ Valóban újra futtatható az Első indítás tündér?
+
+A tündér újbóli futtatása során megváltozhatnak az OpenLP aktuális beállításai, az alapértelmezett téma és új dalok adhatók hozzá a jelenlegi dallistákhoz.
-
- &Recent Files
-
-
-
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
+ Lista törlése
+
+
+
+ Clear the list of recent files.
+ Törli a legutóbbi fájlok listáját.
+
+
+
+ Export OpenLP settings to a specified *.config file
-
- Clear the list of recent files.
+
+ Settings
+ Beállítások
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Fájl megnyitása
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+ Adatbázis hiba
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+ A betöltés alatt álló adatbázis az OpenLP egy frisebb változatával készült. Az adatbázis verziószáma: %d, míg az OpenLP %d verziót vár el. Az adatbázis nem lesz betöltve.
+
+Adatbázis: %s
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+ Az OpenLP nem képes beolvasni az adatbázist.
+
+Adatbázis: %s
+
OpenLP.MediaManagerItem
@@ -3184,12 +2743,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
You must select one or more items to preview.
- Ki kell jelölni egy elemet az el?nézethez.
+ Ki kell jelölni egy elemet az előnézethez.
You must select one or more items to send live.
- Ki kell jelölni egy él? adásba küldend? elemet.
+ Ki kell jelölni egy élő adásba küldendő elemet.
@@ -3211,13 +2770,6 @@ Re-running this wizard may make changes to your current OpenLP configuration and
You must select a %s service item.
Ki kell jelölni egy %s sorrend elemet.
-
-
- Duplicate file name %s.
-Filename already exists in list
- Duplikátum fájlnév: %s.
-A fájlnév már benn van a listában
-
You must select one or more items to add.
@@ -3228,32 +2780,31 @@ A fájlnév már benn van a listában
No Search Results
Nincs találat
-
-
- Duplicate filename %s.
-This filename is already in the list
- Duplikátum fájlnév: %s.
-A fájlnév már benn van a listában
-
-
-
- &Clone
-
-
Invalid File Type
-
+ Érvénytelen fájltípus
Invalid File %s.
Suffix not supported
-
+ Érvénytelen fájl: %s.
+Az utótag nem támogatott
Duplicate files found on import and ignored.
+ Importálás közben duplikált fájl bukkant elő, figyelmet kívül lett hagyva.
+
+
+
+ &Clone
+ &Klónozás
+
+
+
+ Duplicate files were found on import and were ignored.
@@ -3262,12 +2813,12 @@ Suffix not supported
Plugin List
- B?vítménylista
+ Bővítménylista
Plugin Details
- B?vítmény részletei
+ Bővítmény részletei
@@ -3320,11 +2871,6 @@ Suffix not supported
Options
Beállítások
-
-
- Close
- Bezárás
-
Copy
@@ -3358,7 +2904,7 @@ Suffix not supported
Include slide text if available
- Dia szövegének beillesztése, ha elérhet?
+ Dia szövegének beillesztése, ha elérhető
@@ -3370,11 +2916,6 @@ Suffix not supported
Include play length of media items
Sorrend elem lejátszási hosszának beillesztése
-
-
- Service Order Sheet
- Szolgálati sorrend adatlap
-
Add page break before each text item
@@ -3388,17 +2929,17 @@ Suffix not supported
Print
-
+ Nyomtatás
Title:
-
+ Cím:
Custom Footer Text:
-
+ Egyedi lábjegyzet szöveg:
@@ -3406,25 +2947,25 @@ Suffix not supported
Screen
- Képerny?
+ Képernyő
primary
- els?dleges
+ elsődleges
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+ <strong>Kezdés</strong>: %s
-
+
<strong>Length</strong>: %s
-
+ <strong>Hossz</strong>: %s
@@ -3480,12 +3021,12 @@ Suffix not supported
&Delete From Service
- &Törlés a sorrendb?l
+ &Törlés a sorrendből
Delete the selected item from the service.
- Kijelölt elem törlése a sorrendb?l.
+ Kijelölt elem törlése a sorrendből.
@@ -3518,36 +3059,36 @@ Suffix not supported
Elem témájának &módosítása
-
+
OpenLP Service Files (*.osz)
OpenLP sorrend fájlok (*.osz)
-
+
File is not a valid service.
The content encoding is not UTF-8.
A fájl nem érvényes sorrend.
A tartalom kódolása nem UTF-8.
-
+
File is not a valid service.
A fájl nem érvényes sorrend.
Missing Display Handler
- Hiányzó képerny? kezel?
+ Hiányzó képernyő kezelő
Your item cannot be displayed as there is no handler to display it
- Az elemet nem lehet megjeleníteni, mert nincs kezel?, amely megjelenítené
+ Az elemet nem lehet megjeleníteni, mert nincs kezelő, amely megjelenítené
Your item cannot be displayed as the plugin required to display it is missing or inactive
- Az elemet nem lehet megjeleníteni, mert a b?vítmény, amely kezelné, hiányzik vagy inaktív
+ Az elemet nem lehet megjeleníteni, mert a bővítmény, amely kezelné, hiányzik vagy inaktív
@@ -3587,27 +3128,27 @@ A tartalom kódolása nem UTF-8.
Go Live
- Él? adásba
+ Élő adásba
Send the selected item to Live.
- A kiválasztott elem él? adásba küldése.
+ A kiválasztott elem élő adásba küldése.
&Start Time
- &Kezd? id?pont
+ &Kezdő időpont
Show &Preview
- &El?nézet megjelenítése
+ &Előnézet megjelenítése
Show &Live
- Él? &adás megjelenítése
+ Élő &adás megjelenítése
@@ -3615,32 +3156,32 @@ A tartalom kódolása nem UTF-8.
Fájl megnyitása
-
+
Modified Service
Módosított sorrend
-
+
The current service has been modified. Would you like to save this service?
Az aktuális sorrend módosult. Szeretnéd elmenteni?
-
+
File could not be opened because it is corrupt.
A fájl nem nyitható meg, mivel sérült.
-
+
Empty File
Üres fájl
-
+
This service file does not contain any data.
A szolgálati sorrend fájl nem tartalmaz semmilyen adatot.
-
+
Corrupt File
Sérült fájl
@@ -3657,22 +3198,17 @@ A tartalom kódolása nem UTF-8.
Playing time:
- Lejátszási id?:
+ Lejátszási idő:
Untitled Service
Névnélküli szolgálat
-
-
- This file is either corrupt or not an OpenLP 2.0 service file.
- A fájl vagy sérült vagy nem egy OpenLP 2.0 szolgálati sorrend fájl.
-
Load an existing service.
- Egy meglév? szolgálati sorrend betöltése.
+ Egy meglévő szolgálati sorrend betöltése.
@@ -3685,24 +3221,24 @@ A tartalom kódolása nem UTF-8.
Jelöljön ki egy témát a sorrendhez.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
A fájl vagy sérült vagy nem egy OpenLP 2.0 szolgálati sorrend fájl.
-
- Slide theme
-
-
-
-
- Notes
-
-
-
-
+
Service File Missing
-
+ Hiányzó sorrend fájl
+
+
+
+ Slide theme
+ Dia téma
+
+
+
+ Notes
+ Jegyzetek
@@ -3723,11 +3259,6 @@ A tartalom kódolása nem UTF-8.
OpenLP.ShortcutListDialog
-
-
- Customize Shortcuts
- Egyedi gyorsbillenty?k
-
Action
@@ -3736,17 +3267,17 @@ A tartalom kódolása nem UTF-8.
Shortcut
- Gyorsbillenty?
+ Gyorsbillentyű
Duplicate Shortcut
- Azonos gyorsbillenty?
+ Azonos gyorsbillentyű
The shortcut "%s" is already assigned to another action, please use a different shortcut.
- A „%s” gyorsbillenty? már foglalt.
+ A „%s” gyorsbillentyű már foglalt.
@@ -3756,7 +3287,7 @@ A tartalom kódolása nem UTF-8.
Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively.
- Válassz egy parancsot és kattints egyenként az egyik alul található gombra az els?dleges vagy alternatív gyorbillenyt? elfogásához.
+ Válassz egy parancsot és kattints egyenként az egyik alul található gombra az elsődleges vagy alternatív gyorbillenytű elfogásához.
@@ -3771,27 +3302,27 @@ A tartalom kódolása nem UTF-8.
Capture shortcut.
- Gyorbillenty? elfogása.
+ Gyorbillentyű elfogása.
Restore the default shortcut of this action.
- Az eredeti gyorsbillenty? visszaállítása.
+ Az eredeti gyorsbillentyű visszaállítása.
Restore Default Shortcuts
- Alapértelmezett gyorsbillenty?k visszaállítása
+ Alapértelmezett gyorsbillentyűk visszaállítása
Do you want to restore all shortcuts to their defaults?
- Valóban minden gyorsbillenyt? visszaállítandó az alapértelmezettjére?
+ Valóban minden gyorsbillenytű visszaállítandó az alapértelmezettjére?
Configure Shortcuts
-
+ Gyorsbillentyűk beállítása
@@ -3809,7 +3340,7 @@ A tartalom kódolása nem UTF-8.
Blank Screen
- Képerny? elsötétítése
+ Képernyő elsötétítése
@@ -3824,53 +3355,43 @@ A tartalom kódolása nem UTF-8.
Previous Slide
- El?z? dia
+ Előző dia
Next Slide
- Következ? dia
+ Következő dia
Previous Service
- El?z? sorrend
+ Előző sorrend
Next Service
- Következ? sorrend
+ Következő sorrend
Escape Item
- Kilépés az elemb?l
+ Kilépés az elemből
Move to previous.
- Mozgatás az el?z?re.
+ Mozgatás az előzőre.
Move to next.
- Mozgatás a következ?re.
+ Mozgatás a következőre.
Play Slides
Diák vetítése
-
-
- Play Slides in Loop
- Diák ismétl?d? vetítése
-
-
-
- Play Slides to End
- Diak vetítése végig
-
Delay between slides in seconds.
@@ -3879,7 +3400,7 @@ A tartalom kódolása nem UTF-8.
Move to live.
- Él? adásba küldés.
+ Élő adásba küldés.
@@ -3889,7 +3410,7 @@ A tartalom kódolása nem UTF-8.
Edit and reload song preview.
- Szerkesztés és az dal el?nézetének újraolvasása.
+ Szerkesztés és az dal előnézetének újraolvasása.
@@ -3935,7 +3456,7 @@ A tartalom kódolása nem UTF-8.
Item Start and Finish Time
- Elem kezd? és befejez? id?
+ Elem kezdő és befejező idő
@@ -3955,58 +3476,48 @@ A tartalom kódolása nem UTF-8.
Time Validation Error
- Id? érvényességi hiba
-
-
-
- End time is set after the end of the media item
- A médiaelem befejez? id?pontja kés?bb van, mint a befejezése
-
-
-
- Start time is after the End Time of the media item
- A médiaelem kezd? id?pontja kés?bb van, mint a befejezése
+ Idő érvényességi hiba
Finish time is set after the end of the media item
- A médiaelem befejez? id?pontja kés?bbre van állítva van, mint a hossza
+ A médiaelem befejező időpontja későbbre van állítva van, mint a hossza
Start time is after the finish time of the media item
- A médiaelem kezd? id?pontja kés?bbre van állítva, mint a befejezése
+ A médiaelem kezdő időpontja későbbre van állítva, mint a befejezése
OpenLP.ThemeForm
-
+
Select Image
Kép kijelölése
-
+
Theme Name Missing
Téma neve nincs megadva
-
+
There is no name for this theme. Please enter one.
A témának nincs neve, meg kell adni.
-
+
Theme Name Invalid
Érvénytelen téma név
-
+
Invalid theme name. Please enter one.
A téma neve érvénytelen, érvényeset kell megadni.
-
+
(approximately %d lines per slide)
(körülbelül %d sor diánként)
@@ -4091,10 +3602,10 @@ A tartalom kódolása nem UTF-8.
Delete Confirmation
- Törlés meger?sítése
+ Törlés megerősítése
-
+
You are unable to delete the default theme.
Az alapértelmezett témát nem lehet törölni.
@@ -4146,9 +3657,9 @@ A tartalom kódolása nem UTF-8.
Nem érvényes témafájl.
-
+
Theme %s is used in the %s plugin.
- A(z) %s témát a(z) %s b?vítmény használja.
+ A(z) %s témát a(z) %s bővítmény használja.
@@ -4168,7 +3679,7 @@ A tartalom kódolása nem UTF-8.
Delete %s theme?
- Törölhet? ez a téma: %s?
+ Törölhető ez a téma: %s?
@@ -4178,12 +3689,12 @@ A tartalom kódolása nem UTF-8.
Rename Confirmation
- Átnevezési meger?sítés
+ Átnevezési megerősítés
Rename %s theme?
- A téma átnevezhet?: %s?
+ A téma átnevezhető: %s?
@@ -4191,7 +3702,7 @@ A tartalom kódolása nem UTF-8.
OpenLP témák (*.theme *.otz)
-
+
Validation Error
Érvényességi hiba
@@ -4204,261 +3715,266 @@ A tartalom kódolása nem UTF-8.
Copy of %s
Copy of <theme name>
-
+ %s másolata
OpenLP.ThemeWizard
-
+
Theme Wizard
Téma tündér
-
+
Welcome to the Theme Wizard
Üdvözlet a téma tündérben
-
+
Set Up Background
Háttér beállítása
-
+
Set up your theme's background according to the parameters below.
A téma háttere az alábbi paraméterekkel állítható be.
-
+
Background type:
Háttér típusa:
-
+
Solid Color
Homogén szín
-
+
Gradient
Színátmenet
-
+
Color:
Szín:
-
+
Gradient:
Színátmenet:
-
+
Horizontal
Vízszintes
-
+
Vertical
- Függ?leges
+ Függőleges
-
+
Circular
Körkörös
-
-
- Top Left - Bottom Right
- Bal fels? sarokból jobb alsó sarokba
-
-
-
- Bottom Left - Top Right
- Bal alsó sarokból jobb fels? sarokba
-
- Main Area Font Details
- F? tartalom bet?készlet jellemz?i
+ Top Left - Bottom Right
+ Bal felső sarokból jobb alsó sarokba
+ Bottom Left - Top Right
+ Bal alsó sarokból jobb felső sarokba
+
+
+
+ Main Area Font Details
+ Fő tartalom betűkészlet jellemzői
+
+
+
Define the font and display characteristics for the Display text
- A f? szöveg bet?készlete és megjelenési tulajdonságai
+ A fő szöveg betűkészlete és megjelenési tulajdonságai
-
+
Font:
- Bet?készlet:
+ Betűkészlet:
-
+
Size:
Méret:
-
+
Line Spacing:
Sorköz:
-
+
&Outline:
&Körvonal:
-
+
&Shadow:
&Árnyék:
-
+
Bold
Félkövér
-
+
Italic
- D?lt
+ Dőlt
-
+
Footer Area Font Details
- Lábléc bet?készlet jellemz?i
-
-
-
- Define the font and display characteristics for the Footer text
- A lábléc szöveg bet?készlete és megjelenési tulajdonságai
+ Lábléc betűkészlet jellemzői
- Text Formatting Details
- Szövegformázás jellemz?i
+ Define the font and display characteristics for the Footer text
+ A lábléc szöveg betűkészlete és megjelenési tulajdonságai
-
+
+ Text Formatting Details
+ Szövegformázás jellemzői
+
+
+
Allows additional display formatting information to be defined
További megjelenési formázások
-
+
Horizontal Align:
Vízszintes igazítás:
-
+
Left
Balra zárt
-
+
Right
Jobbra zárt
-
+
Center
Középre igazított
-
+
Output Area Locations
Pozíciók
-
+
Allows you to change and move the main and footer areas.
- A f? szöveg és a lábléc helyzetének mozgatása.
+ A fő szöveg és a lábléc helyzetének mozgatása.
-
+
&Main Area
- &F? szöveg
+ &Fő szöveg
-
+
&Use default location
&Alapértelmezett helyen
-
+
X position:
X pozíció:
-
+
px
-
+
Y position:
Y pozíció:
-
+
Width:
Szélesség:
-
+
Height:
Magasság:
-
+
Use default location
Alapértelmezett helyen
-
+
Save and Preview
- Mentés és el?nézet
+ Mentés és előnézet
-
+
View the theme and save it replacing the current one or change the name to create a new theme
- A téma el?nézete és mentése: egy már meglév? téma felülírható vagy egy új név megadásával új téma hozható létre
+ A téma előnézete és mentése: egy már meglévő téma felülírható vagy egy új név megadásával új téma hozható létre
-
+
Theme name:
Téma neve:
-
+
Edit Theme - %s
Téma szerkesztése – %s
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
- A tündér segít témákat létrehozni és módosítani. Kattints az alábbi Következ? gombra a folyamat els? lépésének indításhoz, a háttér beállításához.
+ A tündér segít témákat létrehozni és módosítani. Kattints az alábbi Következő gombra a folyamat első lépésének indításhoz, a háttér beállításához.
-
+
Transitions:
Átmenetek:
-
+
&Footer Area
&Lábléc
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Háttérszín:
+
OpenLP.ThemesTab
@@ -4505,7 +4021,7 @@ A tartalom kódolása nem UTF-8.
Themes
- Témák
+ Témák
@@ -4568,7 +4084,7 @@ A tartalom kódolása nem UTF-8.
Empty Field
- Üres mez?
+ Üres mező
@@ -4596,25 +4112,15 @@ A tartalom kódolása nem UTF-8.
Import
Importálás
-
-
- Length %s
- Hossz %s
-
Live
- Él? adás
+ Élő adás
Live Background Error
- Él? háttér hiba
-
-
-
- Live Panel
- Él? panel
+ Élő háttér hiba
@@ -4675,46 +4181,21 @@ A tartalom kódolása nem UTF-8.
OpenLP 2.0
-
-
- Open Service
- Sorrend megnyitása
-
Preview
- El?nézet
-
-
-
- Preview Panel
- El?nézet panel
-
-
-
- Print Service Order
- Szolgálati sorrend nyomtatása
+ Előnézet
Replace Background
Háttér cseréje
-
-
- Replace Live Background
- Él? adás hátterének cseréje
-
Reset Background
Háttér visszaállítása
-
-
- Reset Live Background
- Él? adás hátterének visszaállítása
-
s
@@ -4724,7 +4205,7 @@ A tartalom kódolása nem UTF-8.
Save && Preview
- Mentés és el?nézet
+ Mentés és előnézet
@@ -4734,12 +4215,12 @@ A tartalom kódolása nem UTF-8.
You must select an item to delete.
- Ki kell jelölni egy törlend? elemet.
+ Ki kell jelölni egy törlendő elemet.
You must select an item to edit.
- Ki kell jelölni egy szerkesztend? elemet.
+ Ki kell jelölni egy szerkesztendő elemet.
@@ -4749,7 +4230,7 @@ A tartalom kódolása nem UTF-8.
Service
- Sorrend
+ Sorrendbe
@@ -4796,12 +4277,12 @@ A tartalom kódolása nem UTF-8.
&Vertical Align:
- &Függ?leges igazítás:
+ &Függőleges igazítás:
Finished import.
- Az importálás befejez?dött.
+ Az importálás befejeződött.
@@ -4849,7 +4330,7 @@ A tartalom kódolása nem UTF-8.
Kész.
-
+
Starting import...
Importálás indítása…
@@ -4878,13 +4359,13 @@ A tartalom kódolása nem UTF-8.
Author
Singular
- Szerz?
+ Szerző
Authors
Plural
- Szerz?k
+ Szerzők
@@ -4955,12 +4436,12 @@ A tartalom kódolása nem UTF-8.
Layout style:
- Elrendezési stílus:
+ Elrendezés:
Live Toolbar
- Él? eszköztár
+ Élő eszköztár
@@ -5023,11 +4504,6 @@ A tartalom kódolása nem UTF-8.
View Mode
Nézetmód
-
-
- Welcome to the Bible Upgrade Wizard
- Üdvözlet a bibliafrissít? tündérben
-
Open service.
@@ -5041,12 +4517,12 @@ A tartalom kódolása nem UTF-8.
Replace live background.
- Él? adás hátterének cseréje.
+ Élő adás hátterének cseréje.
Reset live background.
- Él? adás hátterének visszaállítása.
+ Élő adás hátterének visszaállítása.
@@ -5056,40 +4532,37 @@ A tartalom kódolása nem UTF-8.
Split a slide into two only if it does not fit on the screen as one slide.
- Diák kettéválasztása csak akkor, ha nem fér ki a képerny?n egy diaként.
+ Diák kettéválasztása csak akkor, ha nem fér ki a képernyőn egy diaként.
Confirm Delete
-
+ Törlés megerősítése
Play Slides in Loop
- Diák ismétl?d? vetítése
+ Diák ismétlődő vetítése
Play Slides to End
- Diak vetítése végig
+ Diak vetítése végig
Stop Play Slides in Loop
-
+ Ismétlődő vetítés megállítása
Stop Play Slides to End
-
+ Vetítés megállítása
-
-
- OpenLP.displayTagDialog
-
- Configure Display Tags
- Megjelenítési címkék beállítása
+
+ Welcome to the Bible Upgrade Wizard
+
@@ -5097,7 +4570,7 @@ A tartalom kódolása nem UTF-8.
<strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box.
- <strong>Bemutató b?vítmény</strong><br />A bemutató b?vítmény különböz? küls? programok segítségével bemutatók megjelenítését teszi lehet?vé. A prezentációs programok egy listából választhatók ki.
+ <strong>Bemutató bővítmény</strong><br />A bemutató bővítmény különböző külső programok segítségével bemutatók megjelenítését teszi lehetővé. A prezentációs programok egy listából választhatók ki.
@@ -5117,31 +4590,6 @@ A tartalom kódolása nem UTF-8.
container title
Bemutatók
-
-
- Load a new Presentation.
- Új bemutató betöltése.
-
-
-
- Delete the selected Presentation.
- A kijelölt bemutató törlése.
-
-
-
- Preview the selected Presentation.
- A kijelölt bemutató el?nézete.
-
-
-
- Send the selected Presentation live.
- A kijelölt bemutató él? adásba küldése.
-
-
-
- Add the selected Presentation to the service.
- A kijelölt bemutató hozzáadása a sorrendhez.
-
Load a new presentation.
@@ -5155,12 +4603,12 @@ A tartalom kódolása nem UTF-8.
Preview the selected presentation.
- A kijelölt bemutató el?nézete.
+ A kijelölt bemutató előnézete.
Send the selected presentation live.
- A kijelölt bemutató él? adásba küldése.
+ A kijelölt bemutató élő adásba küldése.
@@ -5226,7 +4674,7 @@ A tartalom kódolása nem UTF-8.
Available Controllers
- Elérhet? vezérl?k
+ Elérhető vezérlők
@@ -5244,7 +4692,7 @@ A tartalom kódolása nem UTF-8.
<strong>Remote Plugin</strong><br />The remote plugin provides the ability to send messages to a running version of OpenLP on a different computer via a web browser or through the remote API.
- <strong>Távirányító b?vítmény</strong><br />A távirányító b?vítmény egy böngész? vagy egy távoli API segítségével lehet?vé teszi egy másik számítógépen futó OpenLP számára való üzenetküldést.
+ <strong>Távirányító bővítmény</strong><br />A távirányító bővítmény egy böngésző vagy egy távoli API segítségével lehetővé teszi egy másik számítógépen futó OpenLP számára való üzenetküldést.
@@ -5280,12 +4728,12 @@ A tartalom kódolása nem UTF-8.
Service Manager
- Sorrendkezel?
+ Sorrendkezelő
Slide Controller
- Diakezel?
+ Diakezelő
@@ -5320,12 +4768,12 @@ A tartalom kódolása nem UTF-8.
Prev
- El?z?
+ Előző
Next
- Következ?
+ Következő
@@ -5340,12 +4788,7 @@ A tartalom kódolása nem UTF-8.
Go Live
- Él? adásba
-
-
-
- Add To Service
- Hozzáadás a sorrendhez
+ Élő adásba
@@ -5360,7 +4803,7 @@ A tartalom kódolása nem UTF-8.
Add to Service
-
+ Hozzáadás a sorrendhez
@@ -5394,126 +4837,141 @@ A tartalom kódolása nem UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Dalstatisztika rögzítése
-
+
&Delete Tracking Data
Rögzített adatok &törlése
-
+
Delete song usage data up to a specified date.
Dalstatisztika adatok törlése egy meghatározott dátumig.
-
+
&Extract Tracking Data
Rögzített adatok &kicsomagolása
-
+
Generate a report on song usage.
Dalstatisztika jelentés összeállítása.
-
+
Toggle Tracking
Rögzítés
-
+
Toggle the tracking of song usage.
Dalstatisztika rögzítésének átváltása.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
- <strong>Dalstatisztika b?vítmény</strong><br />Ez a b?vítmény rögzíti, hogy a dalok mikor lettek vetítve egy él? szolgálat vagy istentisztelet során.
+ <strong>Dalstatisztika bővítmény</strong><br />Ez a bővítmény rögzíti, hogy a dalok mikor lettek vetítve egy élő szolgálat vagy istentisztelet során.
-
+
SongUsage
name singular
Dalstatisztika
-
+
SongUsage
name plural
Dalstatisztika
-
+
SongUsage
container title
Dalstatisztika
-
+
Song Usage
Dalstatisztika
-
+
Song usage tracking is active.
+ A dalstatisztika rögzítésre kerül.
+
+
+
+ Song usage tracking is inactive.
+ A dalstatisztika nincs rögzítés alatt.
+
+
+
+ display
-
- Song usage tracking is inactive.
+
+ printed
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Dalstatisztika adatok törlése
-
+
Delete Selected Song Usage Events?
- Valóban törölhet?k a kijelölt dalstatisztika események?
+ Valóban törölhetők a kijelölt dalstatisztika események?
-
+
Are you sure you want to delete selected Song Usage data?
- Valóban törölhet?k a kijelölt dalstatisztika adatok?
+ Valóban törölhetők a kijelölt dalstatisztika adatok?
-
+
Deletion Successful
Sikeres törlés
-
+
All requested data has been deleted successfully.
Minden kért adat sikeresen törlésre került.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+ Ki kell választani egy dátumot, amely előtt a statisztika adatok törlése kerülnek. Minden ezelőtt rögzített adat véglegesen törlődni fog.
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Dalstatisztika kicsomagolása
-
+
Select Date Range
- Id?intervallum kijelölése
+ Időintervallum kijelölése
-
+
to
–
-
+
Report Location
Helyszín jelentése
@@ -5530,7 +4988,7 @@ A tartalom kódolása nem UTF-8.
You have not set a valid output location for your song usage report. Please select an existing path on your computer.
- Egy nem létez? útvonalat adtál meg a dalstatisztika riporthoz. Jelölj ki egy érvényes ?tvonalat a számítógépen.
+ Egy nem létező útvonalat adtál meg a dalstatisztika riporthoz. Jelölj ki egy érvényes űtvonalat a számítógépen.
@@ -5538,12 +4996,12 @@ A tartalom kódolása nem UTF-8.
Dalstatisztika_%s%s.txt
-
+
Report Creation
Riport készítése
-
+
Report
%s
has been successfully created.
@@ -5553,206 +5011,176 @@ has been successfully created.
SongsPlugin
-
+
&Song
&Dal
-
+
Import songs using the import wizard.
Dalok importálása az importálás tündérrel.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
- <strong>Dal b?vítmény</strong><br />A dal b?vítmény dalok megjelenítését és kezelését teszi lehet?vé.
+ <strong>Dal bővítmény</strong><br />A dal bővítmény dalok megjelenítését és kezelését teszi lehetővé.
-
+
&Re-index Songs
Dalok újra&indexelése
-
+
Re-index the songs database to improve searching and ordering.
Dal adatbázis újraindexelése a keresés és a rendezés javításához.
-
+
Reindexing songs...
Dalok indexelése folyamatban…
-
+
Arabic (CP-1256)
Arab (CP-1256)
-
+
Baltic (CP-1257)
Balti (CP-1257)
-
+
Central European (CP-1250)
Közép-európai (CP-1250)
-
+
Cyrillic (CP-1251)
Cirill (CP-1251)
-
+
Greek (CP-1253)
Görög (CP-1253)
-
+
Hebrew (CP-1255)
Héber (CP-1255)
-
+
Japanese (CP-932)
Japán (CP-932)
-
+
Korean (CP-949)
Koreai (CP-949)
-
+
Simplified Chinese (CP-936)
- Egyszer?sített kínai (CP-936)
+ Egyszerűsített kínai (CP-936)
-
+
Thai (CP-874)
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
Hagyományos kínai (CP-950)
-
+
Turkish (CP-1254)
Török (CP-1254)
-
+
Vietnam (CP-1258)
Vietnami (CP-1258)
-
+
Western European (CP-1252)
Nyugat-európai (CP-1252)
-
+
Character Encoding
Karakterkódolás
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
- A kódlap beállítás felel?s
+ A kódlap beállítás felelős
a karakterek helyes megjelenítéséért.
-Általában az el?re beállított érték megfelel?.
+Általában az előre beállított érték megfelelő.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Válasszd ki a karakterkódolást.
-A kódlap felel?s a karakterek helyes megjelenítéséért.
+A kódlap felelős a karakterek helyes megjelenítéséért.
-
+
Exports songs using the export wizard.
Dalok exportálása a dalexportáló tündérrel.
-
+
Song
name singular
Dal
-
+
Songs
name plural
Dalok
-
+
Songs
container title
Dalok
-
- Add a new Song.
- Új dal hozzáadása.
-
-
-
- Edit the selected Song.
- A kijelölt dal szerkesztése.
-
-
-
- Delete the selected Song.
- A kijelölt dal törlése.
-
-
-
- Preview the selected Song.
- A kijelölt dal el?nézete.
-
-
-
- Send the selected Song live.
- A kijelölt dal él? adásba küldése.
-
-
-
- Add the selected Song to the service.
- A kijelölt dal hozzáadása a sorrendhez.
-
-
-
+
Add a new song.
Új dal hozzáadása.
-
+
Edit the selected song.
A kijelölt dal szerkesztése.
-
+
Delete the selected song.
A kijelölt dal törlése.
-
-
- Preview the selected song.
- A kijelölt dal el?nézete.
-
- Send the selected song live.
- A kijelölt dal él? adásba küldése.
+ Preview the selected song.
+ A kijelölt dal előnézete.
+ Send the selected song live.
+ A kijelölt dal élő adásba küldése.
+
+
+
Add the selected song to the service.
A kijelölt dal hozzáadása a sorrendhez.
@@ -5762,7 +5190,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Author Maintenance
- Szerz?k kezelése
+ Szerzők kezelése
@@ -5782,17 +5210,17 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
You need to type in the first name of the author.
- Meg kell adni a szerz? vezetéknevét.
+ Meg kell adni a szerző vezetéknevét.
You need to type in the last name of the author.
- Meg kell adni a szerz? keresztnevét.
+ Meg kell adni a szerző keresztnevét.
You have not set a display name for the author, combine the first and last names?
- Nincs megadva a szerz? megjelenített neve, legyen el?állítva a vezeték és keresztnevéb?l?
+ Nincs megadva a szerző megjelenített neve, legyen előállítva a vezeték és keresztnevéből?
@@ -5815,7 +5243,9 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
[above are Song Tags with notes imported from
EasyWorship]
-
+
+[a fenti dal címkék a megjegyzésekkel az
+EasyWorshipbőlkerültek importálásra]
@@ -5823,7 +5253,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Song Editor
- Dalszerkeszt?
+ Dalszerkesztő
@@ -5868,7 +5298,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
&Manage Authors, Topics, Song Books
- Szerz?k, témakörök, énekeskönyvek &kezelése
+ Szerzők, témakörök, énekeskönyvek &kezelése
@@ -5893,7 +5323,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Authors, Topics && Song Book
- Szerz?k, témakörök és énekeskönyvek
+ Szerzők, témakörök és énekeskönyvek
@@ -5903,7 +5333,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Copyright Information
- Szerz?i jogi információ
+ Szerzői jogi információ
@@ -5913,27 +5343,27 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Theme, Copyright Info && Comments
- Téma, szerz?i jog és megjegyzések
+ Téma, szerzői jog és megjegyzések
Add Author
- Szerz? hozzáadása
+ Szerző hozzáadása
This author does not exist, do you want to add them?
- Ez a szerz? még nem létezik, valóban hozzá kívánja adni?
+ Ez a szerző még nem létezik, valóban hozzá kívánja adni?
This author is already in the list.
- A szerz? már benne van a listában.
+ A szerző már benne van a listában.
You have not selected a valid author. Either select an author from the list, or type in a new author and click the "Add Author to Song" button to add the new author.
- Nincs kijelölve egyetlen szerz? sem. Vagy válassz egy szerz?t a listából, vagy írj az új szerz? mez?be és kattints a Hozzáadás gombra a szerz? megjelöléséhez.
+ Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints a Hozzáadás gombra a szerző megjelöléséhez.
@@ -5953,7 +5383,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
You have not selected a valid topic. Either select a topic from the list, or type in a new topic and click the "Add Topic to Song" button to add the new topic.
- Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mez?be és kattints a Hozzáadás gombraa témakör megjelöléséhez.
+ Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Hozzáadás gombraa témakör megjelöléséhez.
@@ -5993,7 +5423,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
You need to have an author for this song.
- Egy szerz?t meg kell adnod ehhez a dalhoz.
+ Egy szerzőt meg kell adnod ehhez a dalhoz.
@@ -6018,16 +5448,6 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
&Insert
&Beszúrás
-
-
- &Split
- &Szétválasztása
-
-
-
- Split a slide into two only if it does not fit on the screen as one slide.
- Diák kettéválasztása csak akkor, ha nem fér ki a képerny?n egy diaként.
-
Split a slide into two by inserting a verse splitter.
@@ -6044,7 +5464,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- A tündér segít a dalok szabad OpenLyrics formátumba való exportálásában.
+ A tündér segít a dalok szabad OpenLyrics formátumba való exportálásában.
@@ -6107,7 +5527,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Exportálás indítása…
-
+
Select Destination Folder
Célmappa kijelölése
@@ -6116,6 +5536,11 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Select the directory where you want the songs to be saved.
Jelöld ki a mappát, ahová a dalok mentésre kerülnek.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6132,7 +5557,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
This wizard will help you to import songs from a variety of formats. Click the next button below to start the process by selecting a format to import from.
- A tündér segít a különféle formátumú dalok importálásában. Kattints az alábbi Következ? gombra a folyamat els? lépésének indításhoz, a formátum kiválasztásához.
+ A tündér segít a különféle formátumú dalok importálásában. Kattints az alábbi Következő gombra a folyamat első lépésének indításhoz, a formátum kiválasztásához.
@@ -6154,16 +5579,6 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Remove File(s)
Fájl(ok) törlése
-
-
- The Songs of Fellowship importer has been disabled because OpenLP cannot find OpenOffice.org on your computer.
- A Songs of Fellowship importáló le lett tiltva, mivel az OpenLP nem találja az OpenOffice.org-ot a számítógépen.
-
-
-
- The generic document/presentation importer has been disabled because OpenLP cannot find OpenOffice.org on your computer.
- Az általános dokumentum, ill. bemutató importáló le lett tiltva, mivel az OpenLP nem találja az OpenOffice.org-ot a számítógépen.
-
Please wait while your songs are imported.
@@ -6172,7 +5587,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
The OpenLyrics importer has not yet been developed, but as you can see, we are still intending to do so. Hopefully it will be in the next release.
- Az OpenLyrics importáló még nem lett kifejlesztve, de amint már láthatod, szándékozunk elkészíteni. Remélhet?leg a következ? kiadásban már benne lesz.
+ Az OpenLyrics importáló még nem lett kifejlesztve, de amint már láthatod, szándékozunk elkészíteni. Remélhetőleg a következő kiadásban már benne lesz.
@@ -6247,11 +5662,6 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Lyrics
Dalszöveg
-
-
- Delete Song(s)?
- Törölhet?(ek) a dal(ok)?
-
CCLI License:
@@ -6266,19 +5676,19 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Are you sure you want to delete the %n selected song(s)?
- Törölhet?k a kijelölt dalok: %n?
+ Törölhetők a kijelölt dalok: %n?
Maintain the lists of authors, topics and books.
- Szerz?k, témakörök, könyvek listájának kezelése.
+ Szerzők, témakörök, könyvek listájának kezelése.
copy
For song cloning
-
+ másolás
@@ -6333,30 +5743,30 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Finished export.
- Exportálás befejez?dött.
+ Exportálás befejeződött.
-
+
Your song export failed.
Dalexportálás meghiúsult.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
copyright
- szerz?i jog
+ szerzői jog
The following songs could not be imported:
- A következ? dalok nem importálhatók:
-
-
-
- Unable to open OpenOffice.org or LibreOffice
- Nem sikerült megnyitni az OpenOffice.org-ot vagy a LibreOffice-t
+ A következő dalok nem importálhatók:
@@ -6387,12 +5797,12 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Could not add your author.
- A szerz?t nem lehet hozzáadni.
+ A szerzőt nem lehet hozzáadni.
This author already exists.
- Ez a szerz? már létezik.
+ Ez a szerző már létezik.
@@ -6427,17 +5837,17 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Delete Author
- Szerz? törlése
+ Szerző törlése
Are you sure you want to delete the selected author?
- A kijelölt szerz? biztosan törölhet??
+ A kijelölt szerző biztosan törölhető?
This author cannot be deleted, they are currently assigned to at least one song.
- Ezt a szerz?t nem lehet törölni, mivel jelenleg legalább egy dalhoz hozzá van rendelve.
+ Ezt a szerzőt nem lehet törölni, mivel jelenleg legalább egy dalhoz hozzá van rendelve.
@@ -6447,7 +5857,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Are you sure you want to delete the selected topic?
- A kijelölt témakör biztosan törölhet??
+ A kijelölt témakör biztosan törölhető?
@@ -6462,7 +5872,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Are you sure you want to delete the selected book?
- A kijelölt könyv biztosan törölhet??
+ A kijelölt könyv biztosan törölhető?
@@ -6472,22 +5882,22 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Could not save your modified author, because the author already exists.
- A módosított szerz?t nem lehet elmenteni, mivel már a szerz? létezik.
+ A módosított szerzőt nem lehet elmenteni, mivel már a szerző létezik.
The author %s already exists. Would you like to make songs with author %s use the existing author %s?
- Ez a szerz? már létezik: %s. Szeretnéd, hogy a dal – melynek szerz?je %s – a már létez? szerz? (%s) dalai közé kerüljön rögzítésre?
+ Ez a szerző már létezik: %s. Szeretnéd, hogy a dal – melynek szerzője %s – a már létező szerző (%s) dalai közé kerüljön rögzítésre?
The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s?
- Ez a témakör már létezik: %s. Szeretnéd, hogy a dal – melynek témaköre: %s – a már létez? témakörben (%s) kerüljön rögzítésre?
+ Ez a témakör már létezik: %s. Szeretnéd, hogy a dal – melynek témaköre: %s – a már létező témakörben (%s) kerüljön rögzítésre?
The book %s already exists. Would you like to make songs with book %s use the existing book %s?
- Ez a könyv már létezik: %s. Szeretnéd, hogy a dal – melynek köynve: %s – a már létez? könyvben (%s) kerüljön rögzítésre?
+ Ez a könyv már létezik: %s. Szeretnéd, hogy a dal – melynek köynve: %s – a már létező könyvben (%s) kerüljön rögzítésre?
@@ -6505,7 +5915,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Display verses on live tool bar
- Versszakok megjelenítése az él? adás eszköztáron
+ Versszakok megjelenítése az élő adás eszköztáron
@@ -6556,7 +5966,7 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Pre-Chorus
- El?-refrén
+ Elő-refrén
@@ -6574,12 +5984,4 @@ A kódlap felel?s a karakterek helyes megjelenítéséért.
Egyéb
-
- ThemeTab
-
-
- Themes
- Témák
-
-
diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts
index 314bdca72..9b4eac07b 100644
--- a/resources/i18n/id.ts
+++ b/resources/i18n/id.ts
@@ -827,17 +827,17 @@ dibutuhkan dan membutuhkan koneksi internet.
Tidak dapat menggabungkan hasil pencarian ayat. Ingin menghapus hasil pencarian dan mulai pencarian baru?
-
+
Bible not fully loaded.
Alkitab belum termuat seluruhnya.
-
+
Information
Informasi
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
Alkitab kedua tidak memiliki seluruh ayat yang ada di Alkitab utama. Hanya ayat yang ditemukan di kedua Alkitab yang akan ditampilkan. %d ayat tidak terlihat di hasil.
@@ -1320,24 +1320,24 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Plugin Gambar</strong><br />Plugin gambar memungkinkan penayangan gambar.<br />Salah satu keunggulan fitur ini adalah kemampuan untuk menggabungkan beberapa gambar pada Service Manager, yang menjadikan penayangan beberapa gambar mudah. Plugin ini juga dapat menggunakan "perulangan terwaktu" dari OpenLP untuk membuat slide show yang berjalan otomatis. Juga, gambar dari plugin dapat digunakan untuk menggantikan latar tema.
-
+
Image
name singular
Gambar
-
+
Images
name plural
Gambar
-
+
Images
container title
Gambar
@@ -1378,37 +1378,37 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Tambahkan Gambar terpilih ke layanan.
-
+
Load a new image.
-
+
Add a new image.
-
+
Edit the selected image.
-
+
Delete the selected image.
-
+
Preview the selected image.
-
+
Send the selected image live.
-
+
Add the selected image to the service.
@@ -1434,38 +1434,56 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Pilih sebuah gambar untuk dihapus.
-
+
You must select an image to replace the background with.
Pilih sebuah gambar untuk menggantikan latar.
-
+
Missing Image(s)
Gambar Tidak Ditemukan
-
+
The following image(s) no longer exist: %s
Gambar berikut tidak ada lagi: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
Gambar berikut tidak ada lagi: %s
Ingin tetap menambah gambar lain?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Ada masalah dalam mengganti latar, berkas gambar "%s" tidak ada lagi.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2654,287 +2672,287 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
OpenLP.MainWindow
-
+
&File
&File
-
+
&Import
&Impor
-
+
&Export
&Ekspor
-
+
&View
&Lihat
-
+
M&ode
M&ode
-
+
&Tools
Ala&t
-
+
&Settings
&Pengaturan
-
+
&Language
&Bahasa
-
+
&Help
Bantua&n
-
+
Media Manager
Manajer Media
-
+
Service Manager
Manajer Layanan
-
+
Theme Manager
Manajer Tema
-
+
&New
&Baru
-
+
&Open
&Buka
-
+
Open an existing service.
Buka layanan yang ada.
-
+
&Save
&Simpan
-
+
Save the current service to disk.
Menyimpan layanan aktif ke dalam diska.
-
+
Save &As...
Simp&an Sebagai...
-
+
Save Service As
Simpan Layanan Sebagai
-
+
Save the current service under a new name.
Menyimpan layanan aktif dengan nama baru.
-
+
E&xit
Kelua&r
-
+
Quit OpenLP
Keluar dari OpenLP
-
+
&Theme
&Tema
-
+
&Configure OpenLP...
&Konfigurasi OpenLP...
-
+
&Media Manager
Manajer &Media
-
+
Toggle Media Manager
Ganti Manajer Media
-
+
Toggle the visibility of the media manager.
Mengganti kenampakan manajer media.
-
+
&Theme Manager
Manajer &Tema
-
+
Toggle Theme Manager
Ganti Manajer Tema
-
+
Toggle the visibility of the theme manager.
Mengganti kenampakan manajer tema.
-
+
&Service Manager
Manajer &Layanan
-
+
Toggle Service Manager
Ganti Manajer Layanan
-
+
Toggle the visibility of the service manager.
Mengganti kenampakan manajer layanan.
-
+
&Preview Panel
Panel &Pratinjau
-
+
Toggle Preview Panel
Ganti Panel Pratinjau
-
+
Toggle the visibility of the preview panel.
Ganti kenampakan panel pratinjau
-
+
&Live Panel
Pane&l Tayang
-
+
Toggle Live Panel
Ganti Panel Tayang
-
+
Toggle the visibility of the live panel.
Mengganti kenampakan panel tayang.
-
+
&Plugin List
Daftar &Plugin
-
+
List the Plugins
Melihat daftar Plugin
-
+
&User Guide
T&untunan Pengguna
-
+
&About
Tent&ang
-
+
More information about OpenLP
Informasi lebih lanjut tentang OpenLP
-
+
&Online Help
Bantuan &Daring
-
+
&Web Site
Situs &Web
-
+
Use the system language, if available.
Gunakan bahasa sistem, jika ada.
-
+
Set the interface language to %s
Ubah bahasa antarmuka menjadi %s
-
+
Add &Tool...
Tambahkan Ala&t...
-
+
Add an application to the list of tools.
Tambahkan aplikasi ke daftar alat.
-
+
&Default
&Bawaan
-
+
Set the view mode back to the default.
Ubah mode tampilan ke bawaan.
-
+
&Setup
&Persiapan
-
+
Set the view mode to Setup.
Pasang mode tampilan ke Persiapan.
-
+
&Live
&Tayang
-
+
Set the view mode to Live.
Pasang mode tampilan ke Tayang.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -2943,22 +2961,22 @@ You can download the latest version from http://openlp.org/.
Versi terbaru dapat diunduh dari http://openlp.org/.
-
+
OpenLP Version Updated
Versi OpenLP Terbarui
-
+
OpenLP Main Display Blanked
Tampilan Utama OpenLP Kosong
-
+
The Main Display has been blanked out
Tampilan Utama telah dikosongkan
-
+
Default Theme: %s
Tema Bawaan: %s
@@ -2969,17 +2987,17 @@ Versi terbaru dapat diunduh dari http://openlp.org/.
Inggris
-
+
Configure &Shortcuts...
Atur &Pintasan
-
+
Close OpenLP
Tutup OpenLP
-
+
Are you sure you want to close OpenLP?
Yakin ingin menutup OpenLP?
@@ -2989,12 +3007,12 @@ Versi terbaru dapat diunduh dari http://openlp.org/.
Cetak Daftar Layanan aktif
-
+
Open &Data Folder...
Buka Folder &Data
-
+
Open the folder where songs, bibles and other data resides.
Buka folder tempat lagu, Alkitab, dan data lain disimpan.
@@ -3004,78 +3022,159 @@ Versi terbaru dapat diunduh dari http://openlp.org/.
&Konfigurasi Label Tampilan
-
+
&Autodetect
&Autodeteksi
-
+
Update Theme Images
-
+
Update the preview images for all themes.
-
+
Print the current service.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Buka Berkas
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3154,7 +3253,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3318,12 +3417,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3419,19 +3518,19 @@ Suffix not supported
&Ubah Tema
-
+
OpenLP Service Files (*.osz)
Berkas Layanan OpenLP (*.osz)
-
+
File is not a valid service.
The content encoding is not UTF-8.
Berkas bukan berupa layanan.
Isi berkas tidak berupa UTF-8.
-
+
File is not a valid service.
Berkas bukan layanan sahih.
@@ -3516,32 +3615,32 @@ Isi berkas tidak berupa UTF-8.
Tampi&lkan Tayang
-
+
Modified Service
-
+
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
-
+
Empty File
-
+
This service file does not contain any data.
-
+
Corrupt File
@@ -3581,22 +3680,22 @@ Isi berkas tidak berupa UTF-8.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3852,32 +3951,32 @@ Isi berkas tidak berupa UTF-8.
OpenLP.ThemeForm
-
+
Select Image
-
+
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
@@ -3955,12 +4054,12 @@ Isi berkas tidak berupa UTF-8.
-
+
You are unable to delete the default theme.
-
+
Theme %s is used in the %s plugin.
@@ -4056,7 +4155,7 @@ The content encoding is not UTF-8.
-
+
Validation Error
@@ -4080,255 +4179,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
Edit Theme - %s
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
-
+
&Footer Area
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Warna latar:
+
OpenLP.ThemesTab
@@ -4684,7 +4788,7 @@ The content encoding is not UTF-8.
-
+
Starting import...
@@ -5191,126 +5295,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
-
+
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
-
+
Generate a report on song usage.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
-
+
SongUsage
name plural
-
+
SongUsage
container title
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
-
+
Deletion Successful
-
+
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
-
+
Select Date Range
-
+
to
-
+
Report Location
@@ -5325,12 +5444,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -5350,173 +5469,173 @@ has been successfully created.
SongsPlugin
-
+
&Song
-
+
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
-
+
Arabic (CP-1256)
-
+
Baltic (CP-1257)
-
+
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
-
+
Hebrew (CP-1255)
-
+
Japanese (CP-932)
-
+
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
-
+
Western European (CP-1252)
-
+
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Song
name singular
-
+
Songs
name plural
Lagu
-
+
Songs
container title
Lagu
-
+
Exports songs using the export wizard.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5795,11 +5914,6 @@ The encoding is responsible for the correct character representation.
Song Export Wizard
-
-
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
-
-
Select Songs
@@ -5861,7 +5975,7 @@ The encoding is responsible for the correct character representation.
-
+
Select Destination Folder
@@ -5870,6 +5984,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6070,13 +6189,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts
index 17b1b8596..fc6a83b56 100644
--- a/resources/i18n/ja.ts
+++ b/resources/i18n/ja.ts
@@ -825,17 +825,17 @@ demand and thus an internet connection is required.
一つの聖書と複数の聖書の検索結果をくっつける事はできません。検索結果を削除して、再検索しますか?
-
+
Bible not fully loaded.
聖書が完全に読み込まれていません。
-
+
Information
情報
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
第二訳には検索した箇所全てが含まれていません。両方の聖書に含まれている箇所を表示します。第%d節が除外されます。
@@ -1325,24 +1325,24 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>画像プラグイン</strong><br />画像プラグインは、画像を表示する機能を提供します。<br />礼拝プログラムで複数の画像をグループ化したり、複数の画像を簡単に表示することができます。タイムアウトループの機能を使用してスライドショーを自動的に表示することもできます。さらに、賛美などのテキストベースの項目の背景を、外観テーマで指定されたものからこのプラグインの画像に変更することもできます。
-
+
Image
name singular
画像
-
+
Images
name plural
画像
-
+
Images
container title
画像
@@ -1383,37 +1383,37 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
選択した画像を礼拝プログラムに追加します。
-
+
Load a new image.
新しい画像を取込み。
-
+
Add a new image.
新しい画像を追加します。
-
+
Edit the selected image.
選択した画像を編集します。
-
+
Delete the selected image.
選択した画像を削除します。
-
+
Preview the selected image.
選択した画像をプレビューします。
-
+
Send the selected image live.
選択した画像をライブへ送ります。
-
+
Add the selected image to the service.
選択した画像を礼拝プログラムに追加します。
@@ -1439,38 +1439,56 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
削除する画像を選択してください。
-
+
You must select an image to replace the background with.
置き換える画像を選択してください。
-
+
Missing Image(s)
画像が見つかりません
-
+
The following image(s) no longer exist: %s
以下の画像は既に存在しません
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
以下の画像は既に存在しません:%s
それでも他の画像を追加しますか?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
背景画像を置換する際に問題が発生しました。画像ファイル"%s"が存在しません。
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2777,287 +2795,287 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
ファイル(&F)
-
+
&Import
インポート(&I)
-
+
&Export
エクスポート(&E)
-
+
&View
表示(&V)
-
+
M&ode
モード(&O)
-
+
&Tools
ツール(&T)
-
+
&Settings
設定(&S)
-
+
&Language
言語(&L)
-
+
&Help
ヘルプ(&H)
-
+
Media Manager
メディアマネジャー
-
+
Service Manager
礼拝プログラム
-
+
Theme Manager
外観テーママネジャー
-
+
&New
新規作成(&N)
-
+
&Open
開く(&O)
-
+
Open an existing service.
存在する礼拝プログラムを開きます。
-
+
&Save
保存(&S)
-
+
Save the current service to disk.
現在の礼拝プログラムをディスクに保存します。
-
+
Save &As...
名前を付けて保存(&A)...
-
+
Save Service As
名前をつけて礼拝プログラムを保存
-
+
Save the current service under a new name.
現在の礼拝プログラムを新しい名前で保存します。
-
+
E&xit
終了(&X)
-
+
Quit OpenLP
Open LPを終了
-
+
&Theme
外観テーマ(&T)
-
+
&Configure OpenLP...
OpenLPの設定(&C)...
-
+
&Media Manager
メディアマネジャー(&M)
-
+
Toggle Media Manager
メディアマネジャーを切り替える
-
+
Toggle the visibility of the media manager.
メディアマネジャーの可視性を切り替える。
-
+
&Theme Manager
外観テーママネジャー(&T)
-
+
Toggle Theme Manager
外観テーママネジャーの切り替え
-
+
Toggle the visibility of the theme manager.
外観テーママネジャーの可視性を切り替える。
-
+
&Service Manager
礼拝プログラム(&S)
-
+
Toggle Service Manager
礼拝プログラムを切り替え
-
+
Toggle the visibility of the service manager.
礼拝プログラムの可視性を切り替える。
-
+
&Preview Panel
プレビューパネル(&P)
-
+
Toggle Preview Panel
プレビューパネルの切り替え
-
+
Toggle the visibility of the preview panel.
プレビューパネルの可視性を切り替える。
-
+
&Live Panel
ライブパネル(&L)
-
+
Toggle Live Panel
ライブパネルの切り替え
-
+
Toggle the visibility of the live panel.
ライブパネルの可視性を切り替える。
-
+
&Plugin List
プラグイン一覧(&P)
-
+
List the Plugins
プラグイン一覧
-
+
&User Guide
ユーザガイド(&U)
-
+
&About
バージョン情報(&A)
-
+
More information about OpenLP
OpenLPの詳細情報
-
+
&Online Help
オンラインヘルプ(&O)
-
+
&Web Site
ウェブサイト(&W)
-
+
Use the system language, if available.
システム言語を可能であれば使用します。
-
+
Set the interface language to %s
インターフェイス言語を%sに設定
-
+
Add &Tool...
ツールの追加(&T)...
-
+
Add an application to the list of tools.
ツールの一覧にアプリケーションを追加。
-
+
&Default
デフォルト(&D)
-
+
Set the view mode back to the default.
表示モードを既定に戻す。
-
+
&Setup
設定(&S)
-
+
Set the view mode to Setup.
ビューモードに設定します。
-
+
&Live
ライブ(&L)
-
+
Set the view mode to Live.
表示モードをライブにします。
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3066,22 +3084,22 @@ You can download the latest version from http://openlp.org/.
http://openlp.org/から最新版がダウンロード可能です。
-
+
OpenLP Version Updated
OpenLPのバージョンアップ完了
-
+
OpenLP Main Display Blanked
OpenLPのプライマリディスプレイがブランクです
-
+
The Main Display has been blanked out
OpenLPのプライマリディスプレイがブランクになりました
-
+
Default Theme: %s
既定外観テーマ: %s
@@ -3092,17 +3110,17 @@ http://openlp.org/から最新版がダウンロード可能です。日本語
-
+
Configure &Shortcuts...
ショートカットの設定(&S)...
-
+
Close OpenLP
OpenLPの終了
-
+
Are you sure you want to close OpenLP?
本当にOpenLPを終了してもよろしいですか?
@@ -3117,88 +3135,169 @@ http://openlp.org/から最新版がダウンロード可能です。表示タグを設定(&C)
-
+
Open &Data Folder...
データフォルダを開く(&D)...
-
+
Open the folder where songs, bibles and other data resides.
賛美、聖書データなどのデータが含まれているフォルダを開く。
-
+
&Autodetect
自動検出(&A)
-
+
Update Theme Images
テーマの縮小画像を更新
-
+
Update the preview images for all themes.
全てのテーマの縮小画像を更新します。
-
+
Print the current service.
現在の礼拝プログラムを印刷します。
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ 設定
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ ファイルを開く
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3284,7 +3383,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3448,12 +3547,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3549,14 +3648,14 @@ Suffix not supported
項目の外観テーマを変更(&C)
-
+
File is not a valid service.
The content encoding is not UTF-8.
礼拝プログラムファイルが有効でありません。
エンコードがUTF-8でありません。
-
+
File is not a valid service.
礼拝プログラムファイルが有効でありません。
@@ -3601,7 +3700,7 @@ The content encoding is not UTF-8.
ファイルを開く
-
+
OpenLP Service Files (*.osz)
OpenLP 礼拝プログラムファイル (*.osz)
@@ -3631,7 +3730,7 @@ The content encoding is not UTF-8.
選択された項目をライブ表示する。
-
+
Modified Service
礼拝プログラムの編集
@@ -3651,27 +3750,27 @@ The content encoding is not UTF-8.
ライブ表示(&L)
-
+
The current service has been modified. Would you like to save this service?
現在の礼拝プログラムは、編集されています。保存しますか?
-
+
File could not be opened because it is corrupt.
ファイルが破損しているため開けません。
-
+
Empty File
空のファイル
-
+
This service file does not contain any data.
この礼拝プログラムファイルは空です。
-
+
Corrupt File
破損したファイル
@@ -3716,22 +3815,22 @@ The content encoding is not UTF-8.
礼拝プログラムの外観テーマを選択します。
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
このファイルは破損しているかOpenLP 2.0の礼拝プログラムファイルではありません。
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -4012,32 +4111,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
画像の選択
-
+
Theme Name Missing
外観テーマ名が不明です
-
+
There is no name for this theme. Please enter one.
外観テーマ名がありません。入力してください。
-
+
Theme Name Invalid
無効な外観テーマ名
-
+
Invalid theme name. Please enter one.
無効な外観テーマ名です。入力してください。
-
+
(approximately %d lines per slide)
(スライド1枚におよそ%d行)
@@ -4115,12 +4214,12 @@ The content encoding is not UTF-8.
編集する外観テーマを選択してください。
-
+
You are unable to delete the default theme.
既定の外観テーマを削除する事はできません。
-
+
Theme %s is used in the %s plugin.
%s プラグインでこの外観テーマは利用されています。
@@ -4216,7 +4315,7 @@ The content encoding is not UTF-8.
%s 外観テーマを削除します。宜しいですか?
-
+
Validation Error
検証エラー
@@ -4240,255 +4339,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
外観テーマウィザード
-
+
Welcome to the Theme Wizard
外観テーマウィザードをようこそ
-
+
Set Up Background
背景設定
-
+
Set up your theme's background according to the parameters below.
以下の項目に応じて、外観テーマに使用する背景を設定してください。
-
+
Background type:
背景の種類:
-
+
Solid Color
単色
-
+
Gradient
グラデーション
-
+
Color:
色:
-
+
Gradient:
グラデーション:
-
+
Horizontal
横
-
+
Vertical
縦
-
+
Circular
放射状
-
+
Top Left - Bottom Right
左上 - 右下
-
+
Bottom Left - Top Right
左下 - 右上
-
+
Main Area Font Details
中央表示エリアのフォント詳細
-
+
Define the font and display characteristics for the Display text
中央エリアの表示のための文字設定とフォントを定義してください
-
+
Font:
フォント:
-
+
Size:
文字サイズ:
-
+
Line Spacing:
文字間:
-
+
&Outline:
アウトライン(&O):
-
+
&Shadow:
影(&S):
-
+
Bold
太字
-
+
Italic
斜体
-
+
Footer Area Font Details
フッターフォント詳細
-
+
Define the font and display characteristics for the Footer text
フッター表示のための文字設定とフォントを定義してください
-
+
Text Formatting Details
テキストフォーマット詳細
-
+
Allows additional display formatting information to be defined
追加の表示フォーマット情報が定義される事を許可する
-
+
Horizontal Align:
水平位置:
-
+
Left
左揃え
-
+
Right
右揃え
-
+
Center
中央揃え
-
+
Output Area Locations
出力エリアの場所
-
+
Allows you to change and move the main and footer areas.
中央エリアとフッターエリアの場所が変更される事を許可する。
-
+
&Main Area
中央エリア(&M)
-
+
&Use default location
既定の場所を使う(&U)
-
+
X position:
X位置:
-
+
px
px
-
+
Y position:
Y位置:
-
+
Width:
幅:
-
+
Height:
高:
-
+
Use default location
既定の場所を使う
-
+
Save and Preview
保存とプレビュー
-
+
View the theme and save it replacing the current one or change the name to create a new theme
外観テーマを表示し、現在の外観テーマを置き換えるか名前を変更して新しい外観テーマを作成し、保存する
-
+
Theme name:
外観テーマ名:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
このウィザードで、外観テーマを作成し編集します。次へをクリックして、背景を選択してください。
-
+
Transitions:
切り替え:
-
+
&Footer Area
フッター(&F)
-
+
Edit Theme - %s
外観テーマ編集 - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ 背景色:
+
OpenLP.ThemesTab
@@ -4879,7 +4983,7 @@ The content encoding is not UTF-8.
準備完了。
-
+
Starting import...
インポートを開始しています....
@@ -5424,126 +5528,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
賛美の利用記録(&S)
-
+
&Delete Tracking Data
利用記録を削除(&D)
-
+
Delete song usage data up to a specified date.
削除する利用記録の対象となるまでの日付を指定してください。
-
+
&Extract Tracking Data
利用記録の抽出(&E)
-
+
Generate a report on song usage.
利用記録のレポートを出力する。
-
+
Toggle Tracking
記録の切り替え
-
+
Toggle the tracking of song usage.
賛美の利用記録の切り替える。
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>SongUsage Plugin</strong><br />このプラグインは、賛美の利用頻度を記録します。
-
+
SongUsage
name singular
利用記録
-
+
SongUsage
name plural
利用記録
-
+
SongUsage
container title
利用記録
-
+
Song Usage
利用記録
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
利用記録削除
-
+
Delete Selected Song Usage Events?
選択された賛美の利用記録を削除しますか?
-
+
Are you sure you want to delete selected Song Usage data?
選択された賛美の利用記録を削除します。よろしいですか?
-
+
Deletion Successful
正常に削除されました
-
+
All requested data has been deleted successfully.
正常に削除されました。
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
賛美利用記録の抽出
-
+
Select Date Range
賛美利用の期間
-
+
to
から
-
+
Report Location
レポートの出力
@@ -5558,12 +5677,12 @@ The content encoding is not UTF-8.
usage_detail_%s_%s.txt
-
+
Report Creation
レポート生成
-
+
Report
%s
has been successfully created.
@@ -5585,143 +5704,143 @@ has been successfully created.
SongsPlugin
-
+
&Song
賛美(&S)
-
+
Import songs using the import wizard.
インポートウィザードを使用して賛美をインポートします。
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>賛美プラグイン</strong><br />賛美プラグインは、賛美を表示し管理する機能を提供します。
-
+
&Re-index Songs
賛美のインデックスを再作成(&R)
-
+
Re-index the songs database to improve searching and ordering.
賛美データベースのインデックスを再作成し、検索や並べ替えを速くします。
-
+
Reindexing songs...
賛美のインデックスを再作成中...
-
+
Song
name singular
賛美
-
+
Songs
name plural
賛美
-
+
Songs
container title
賛美
-
+
Arabic (CP-1256)
アラブ語 (CP-1256)
-
+
Baltic (CP-1257)
バルト語 (CP-1257)
-
+
Central European (CP-1250)
中央ヨーロッパ (CP-1250)
-
+
Cyrillic (CP-1251)
キリル文字 (CP-1251)
-
+
Greek (CP-1253)
ギリシャ語 (CP-1253)
-
+
Hebrew (CP-1255)
ヘブライ語 (CP-1255)
-
+
Japanese (CP-932)
日本語 (CP-932)
-
+
Korean (CP-949)
韓国語 (CP-949)
-
+
Simplified Chinese (CP-936)
簡体中国語 (CP-936)
-
+
Thai (CP-874)
タイ語 (CP-874)
-
+
Traditional Chinese (CP-950)
繁体中国語 (CP-950)
-
+
Turkish (CP-1254)
トルコ語 (CP-1254)
-
+
Vietnam (CP-1258)
ベトナム語 (CP-1258)
-
+
Western European (CP-1252)
西ヨーロッパ (CP-1252)
-
+
Character Encoding
文字コード
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
文字コード設定は、文字が正常に表示されるのに必要な設定です。通常、既定設定で問題ありません。
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
文字コードを選択してください。文字が正常に表示されるのに必要な設定です。
-
+
Exports songs using the export wizard.
エキスポートウィザードを使って賛美をエキスポートする。
@@ -5756,32 +5875,32 @@ The encoding is responsible for the correct character representation.
選択した賛美を礼拝プログラムに追加します。
-
+
Add a new song.
賛美を追加します。
-
+
Edit the selected song.
選択した賛美を編集します。
-
+
Delete the selected song.
選択した賛美を削除します。
-
+
Preview the selected song.
選択した賛美をプレビューします。
-
+
Send the selected song live.
選択した賛美をライブへ送ります。
-
+
Add the selected song to the service.
選択した賛美を礼拝プログラムに追加します。
@@ -6073,7 +6192,7 @@ The encoding is responsible for the correct character representation.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- このウィザードで、賛美をオープンで無償なOpenLyrics worship song形式としてエキスポートできます。
+ このウィザードで、賛美をオープンで無償なOpenLyrics worship song形式としてエキスポートできます。
@@ -6136,7 +6255,7 @@ The encoding is responsible for the correct character representation.
ディレクトリを選択して下さい。
-
+
Select Destination Folder
出力先フォルダを選択して下さい
@@ -6145,6 +6264,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
賛美を保存したいディレクトリを選択してください。
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6362,13 +6486,18 @@ The encoding is responsible for the correct character representation.
Finished export.
- エキスポート完了。
+ エキスポート完了。
-
+
Your song export failed.
賛美のエキスポートに失敗しました。
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts
index c378a6692..d47154c3c 100644
--- a/resources/i18n/ko.ts
+++ b/resources/i18n/ko.ts
@@ -701,17 +701,17 @@ demand and thus an internet connection is required.
-
+
Bible not fully loaded.
-
+
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1043,60 +1043,60 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
-
+
Images
name plural
-
+
Images
container title
-
+
Load a new image.
-
+
Add a new image.
-
+
Edit the selected image.
-
+
Delete the selected image.
-
+
Preview the selected image.
-
+
Send the selected image live.
-
+
Add the selected image to the service.
@@ -1122,37 +1122,55 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
+
You must select an image to replace the background with.
-
+
Missing Image(s)
-
+
The following image(s) no longer exist: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2137,309 +2155,309 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
-
+
&Import
-
+
&Export
-
+
&View
-
+
M&ode
-
+
&Tools
-
+
&Settings
-
+
&Language
-
+
&Help
-
+
Media Manager
-
+
Service Manager
-
+
Theme Manager
-
+
&New
새로 만들기(&N)
-
+
&Open
-
+
Open an existing service.
-
+
&Save
저장(&S)
-
+
Save the current service to disk.
-
+
Save &As...
-
+
Save Service As
-
+
Save the current service under a new name.
-
+
E&xit
-
+
Quit OpenLP
-
+
&Theme
-
+
&Configure OpenLP...
-
+
&Media Manager
-
+
Toggle Media Manager
-
+
Toggle the visibility of the media manager.
-
+
&Theme Manager
-
+
Toggle Theme Manager
-
+
Toggle the visibility of the theme manager.
-
+
&Service Manager
-
+
Toggle Service Manager
-
+
Toggle the visibility of the service manager.
-
+
&Preview Panel
-
+
Toggle Preview Panel
-
+
Toggle the visibility of the preview panel.
-
+
&Live Panel
-
+
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
-
+
&Plugin List
-
+
List the Plugins
-
+
&User Guide
-
+
&About
-
+
More information about OpenLP
-
+
&Online Help
-
+
&Web Site
-
+
Use the system language, if available.
-
+
Set the interface language to %s
-
+
Add &Tool...
-
+
Add an application to the list of tools.
-
+
&Default
-
+
Set the view mode back to the default.
-
+
&Setup
-
+
Set the view mode to Setup.
-
+
&Live
-
+
Set the view mode to Live.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
-
+
OpenLP Version Updated
-
+
OpenLP Main Display Blanked
-
+
The Main Display has been blanked out
-
+
Default Theme: %s
@@ -2450,103 +2468,184 @@ You can download the latest version from http://openlp.org/.
-
+
Configure &Shortcuts...
-
+
Close OpenLP
-
+
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
-
+
&Autodetect
-
+
Update Theme Images
-
+
Update the preview images for all themes.
-
+
Print the current service.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -2618,7 +2717,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -2772,12 +2871,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -2873,13 +2972,13 @@ Suffix not supported
-
+
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
@@ -2924,7 +3023,7 @@ The content encoding is not UTF-8.
-
+
OpenLP Service Files (*.osz)
@@ -2954,7 +3053,7 @@ The content encoding is not UTF-8.
-
+
Modified Service
@@ -2974,27 +3073,27 @@ The content encoding is not UTF-8.
-
+
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
-
+
Empty File
-
+
This service file does not contain any data.
-
+
Corrupt File
@@ -3034,22 +3133,22 @@ The content encoding is not UTF-8.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3305,32 +3404,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
-
+
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
@@ -3408,7 +3507,7 @@ The content encoding is not UTF-8.
-
+
You are unable to delete the default theme.
@@ -3459,7 +3558,7 @@ The content encoding is not UTF-8.
-
+
Theme %s is used in the %s plugin.
@@ -3509,7 +3608,7 @@ The content encoding is not UTF-8.
-
+
Validation Error
@@ -3533,255 +3632,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
-
+
&Footer Area
-
+
Edit Theme - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ 배경색:
+
OpenLP.ThemesTab
@@ -4137,7 +4241,7 @@ The content encoding is not UTF-8.
-
+
Starting import...
@@ -4644,126 +4748,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
-
+
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
-
+
Generate a report on song usage.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
-
+
SongUsage
name plural
-
+
SongUsage
container title
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
-
+
Deletion Successful
-
+
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
-
+
Select Date Range
-
+
to
-
+
Report Location
@@ -4778,12 +4897,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -4803,173 +4922,173 @@ has been successfully created.
SongsPlugin
-
+
&Song
-
+
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
-
+
Song
name singular
-
+
Songs
name plural
-
+
Songs
container title
-
+
Arabic (CP-1256)
-
+
Baltic (CP-1257)
-
+
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
-
+
Hebrew (CP-1255)
-
+
Japanese (CP-932)
-
+
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
-
+
Western European (CP-1252)
-
+
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Exports songs using the export wizard.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5248,11 +5367,6 @@ The encoding is responsible for the correct character representation.
Song Export Wizard
-
-
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
-
-
Select Songs
@@ -5314,7 +5428,7 @@ The encoding is responsible for the correct character representation.
-
+
Select Destination Folder
@@ -5323,6 +5437,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -5523,13 +5642,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts
index a11c96a43..a8e666bd8 100644
--- a/resources/i18n/nb.ts
+++ b/resources/i18n/nb.ts
@@ -793,17 +793,17 @@ demand and thus an internet connection is required.
Du kan ikke kombinere enkle og doble bibelverssøkeresultat. Vil du fjerne søkeresultatene og starte et nytt søk?
-
+
Bible not fully loaded.
Bibelen er ikke ferdiglastet.
-
+
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1185,60 +1185,60 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Bildetillegg</strong><br />Bildetillegget gir mulighet til visning av bilder.<br />Et av særtrekkene med dette tillegget er muligheten til å gruppere flere bilder sammen i møteplanleggeren, noe som gjør visning av flere bilder enklere. Programtillegget kan også benytte seg av OpenLP's "tidsbestemte løkke"-funksjon til å lage en lysbildefremvisning som kjører automatisk. I tillegg kan bilder fra tillegget brukes til å overstyre gjeldende temabakgrunn, noe som gir tekstbaserte saker, som sanger, det valgte bildet som bakgrunn.
-
+
Image
name singular
Bilde
-
+
Images
name plural
Bilder
-
+
Images
container title
Bilder
-
+
Load a new image.
-
+
Add a new image.
-
+
Edit the selected image.
-
+
Delete the selected image.
-
+
Preview the selected image.
-
+
Send the selected image live.
-
+
Add the selected image to the service.
@@ -1264,38 +1264,56 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Du må velge et bilde å slette.
-
+
You must select an image to replace the background with.
Du må velge et bilde å erstatte bakgrunnen med.
-
+
Missing Image(s)
Bilde(r) mangler
-
+
The following image(s) no longer exist: %s
De følgende bilde(r) finnes ikke lenger: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
De følgende bilde(r) finnes ikke lenger: %s
Vil du likevel legge til de andre bildene?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Det oppstod et problem ved erstatting av bakgrunnen, bildefilen "%s" finnes ikke lenger.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2340,309 +2358,309 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
&Fil
-
+
&Import
&Importer
-
+
&Export
&Eksporter
-
+
&View
&Vis
-
+
M&ode
-
+
&Tools
-
+
&Settings
&Innstillinger
-
+
&Language
&Språk
-
+
&Help
&Hjelp
-
+
Media Manager
Innholdselementer
-
+
Service Manager
-
+
Theme Manager
-
+
&New
&Ny
-
+
&Open
&Åpne
-
+
Open an existing service.
-
+
&Save
&Lagre
-
+
Save the current service to disk.
-
+
Save &As...
-
+
Save Service As
-
+
Save the current service under a new name.
-
+
E&xit
&Avslutt
-
+
Quit OpenLP
Avslutt OpenLP
-
+
&Theme
&Tema
-
+
&Configure OpenLP...
-
+
&Media Manager
-
+
Toggle Media Manager
-
+
Toggle the visibility of the media manager.
-
+
&Theme Manager
-
+
Toggle Theme Manager
Åpne tema-behandler
-
+
Toggle the visibility of the theme manager.
-
+
&Service Manager
-
+
Toggle Service Manager
Vis møteplanlegger
-
+
Toggle the visibility of the service manager.
-
+
&Preview Panel
&Forhåndsvisningspanel
-
+
Toggle Preview Panel
Vis forhåndsvisningspanel
-
+
Toggle the visibility of the preview panel.
-
+
&Live Panel
-
+
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
-
+
&Plugin List
&Tillegsliste
-
+
List the Plugins
Hent liste over tillegg
-
+
&User Guide
&Brukerveiledning
-
+
&About
&Om
-
+
More information about OpenLP
-
+
&Online Help
-
+
&Web Site
&Internett side
-
+
Use the system language, if available.
-
+
Set the interface language to %s
-
+
Add &Tool...
Legg til & Verktøy...
-
+
Add an application to the list of tools.
-
+
&Default
-
+
Set the view mode back to the default.
-
+
&Setup
-
+
Set the view mode to Setup.
-
+
&Live
&Direkte
-
+
Set the view mode to Live.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
-
+
OpenLP Version Updated
OpenLP versjonen har blitt oppdatert
-
+
OpenLP Main Display Blanked
-
+
The Main Display has been blanked out
-
+
Default Theme: %s
@@ -2653,103 +2671,184 @@ You can download the latest version from http://openlp.org/.
Norsk
-
+
Configure &Shortcuts...
-
+
Close OpenLP
-
+
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
-
+
&Autodetect
-
+
Update Theme Images
-
+
Update the preview images for all themes.
-
+
Print the current service.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -2821,7 +2920,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -2975,12 +3074,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3076,13 +3175,13 @@ Suffix not supported
&Bytt objekttema
-
+
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
@@ -3127,7 +3226,7 @@ The content encoding is not UTF-8.
-
+
OpenLP Service Files (*.osz)
@@ -3157,7 +3256,7 @@ The content encoding is not UTF-8.
-
+
Modified Service
@@ -3177,27 +3276,27 @@ The content encoding is not UTF-8.
-
+
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
-
+
Empty File
-
+
This service file does not contain any data.
-
+
Corrupt File
@@ -3237,22 +3336,22 @@ The content encoding is not UTF-8.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3508,32 +3607,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
-
+
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
@@ -3611,7 +3710,7 @@ The content encoding is not UTF-8.
-
+
You are unable to delete the default theme.
Du kan ikke slette det globale temaet.
@@ -3662,7 +3761,7 @@ The content encoding is not UTF-8.
Filen er ikke et gyldig tema.
-
+
Theme %s is used in the %s plugin.
@@ -3712,7 +3811,7 @@ The content encoding is not UTF-8.
-
+
Validation Error
@@ -3736,255 +3835,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Ensfarget
-
+
Gradient
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
Vertikal
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
Størrelse:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Fet
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
Sentrert
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
Bredde:
-
+
Height:
Høyde:
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
-
+
&Footer Area
-
+
Edit Theme - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Bakgrunnsfarge:
+
OpenLP.ThemesTab
@@ -4345,7 +4449,7 @@ The content encoding is not UTF-8.
Klar.
-
+
Starting import...
Starter å importere...
@@ -4852,126 +4956,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
-
+
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
-
+
Generate a report on song usage.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
-
+
SongUsage
name plural
-
+
SongUsage
container title
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
-
+
Deletion Successful
-
+
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
-
+
Select Date Range
Velg dato-område
-
+
to
til
-
+
Report Location
@@ -4986,12 +5105,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -5011,173 +5130,173 @@ has been successfully created.
SongsPlugin
-
+
&Song
&Sang
-
+
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
-
+
Song
name singular
Sang
-
+
Songs
name plural
Sanger
-
+
Songs
container title
Sanger
-
+
Arabic (CP-1256)
-
+
Baltic (CP-1257)
-
+
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
-
+
Hebrew (CP-1255)
-
+
Japanese (CP-932)
-
+
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
-
+
Western European (CP-1252)
-
+
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Exports songs using the export wizard.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5456,11 +5575,6 @@ The encoding is responsible for the correct character representation.
Song Export Wizard
-
-
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
-
-
Select Songs
@@ -5522,7 +5636,7 @@ The encoding is responsible for the correct character representation.
-
+
Select Destination Folder
@@ -5531,6 +5645,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -5732,13 +5851,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts
index dfea10929..1e135c56f 100644
--- a/resources/i18n/nl.ts
+++ b/resources/i18n/nl.ts
@@ -827,17 +827,17 @@ indien nodig en een internetverbinding is dus noodzakelijk.
Enkele en dubbele bijbelvers zoekresultaten kunnen niet gecombineerd worden. Resultaten wissen en opnieuw beginnen?
-
+
Bible not fully loaded.
Bijbel niet geheel geladen.
-
+
Information
Informatie
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
De tweede bijbelvertaling bevat niet alle verzen die in de eerste bijbelvertaling staan. Alleen de verzen die in beide vertalingen voorkomen worden getoond. %d verzen zijn niet opgenomen in de resultaten.
@@ -1328,24 +1328,24 @@ Let op, de bijbelverzen worden gedownload indien nodig en een internetverbinding
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Afbeeldingen Plugin</strong><br />De afbeeldingen plugin voorziet in de mogelijkheid afbeeldingen te laten zien.<br />Een van de bijzondere mogelijkheden is dat meerdere afbeeldingen als groep in de liturgie worden opgenomen, zodat weergave van meerdere afbeeldingen eenvoudiger wordt. Deze plugin maakt doorlopende diashows (bijv. om de 3 sec. een nieuwe dia) mogelijk. Ook kun met deze plugin de achtergrondafbeelding van het thema vervangen met een andere afbeelding. Ook de combinatie van tekst en beeld is mogelijk.
-
+
Image
name singular
Afbeelding
-
+
Images
name plural
Bilder
-
+
Images
container title
Afbeeldingen
@@ -1386,37 +1386,37 @@ Let op, de bijbelverzen worden gedownload indien nodig en een internetverbinding
Geselecteerde afbeeldingen aan liturgie toevoegen.
-
+
Load a new image.
Afbeelding laden.
-
+
Add a new image.
Afbeelding toevoegen.
-
+
Edit the selected image.
Afbeelding bewerken.
-
+
Delete the selected image.
Geselecteerde afbeelding wissen.
-
+
Preview the selected image.
Geselecteerde afbeelding voorbeeld bekijken.
-
+
Send the selected image live.
Geselecteerde afbeelding Live tonen.
-
+
Add the selected image to the service.
Geselecteerde afbeelding aan liturgie toevoegen.
@@ -1442,38 +1442,56 @@ Let op, de bijbelverzen worden gedownload indien nodig en een internetverbinding
Selecteer een afbeelding om te verwijderen.
-
+
You must select an image to replace the background with.
Selecteer een afbeelding om de achtergrond te vervangen.
-
+
Missing Image(s)
Ontbrekende afbeelding(en)
-
+
The following image(s) no longer exist: %s
De volgende afbeelding(en) ontbreken: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
De volgende afbeelding(en) ontbreken: %s
De andere afbeeldingen alsnog toevoegen?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Achtergrond kan niet vervangen worden, omdat de afbeelding "%s" ontbreekt.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2781,307 +2799,307 @@ Om deze assistent over te slaan, klik op klaar.
OpenLP.MainWindow
-
+
&File
&Bestand
-
+
&Import
&Importeren
-
+
&Export
&Exporteren
-
+
&View
&Weergave
-
+
M&ode
M&odus
-
+
&Tools
&Hulpmiddelen
-
+
&Settings
&Instellingen
-
+
&Language
Taa&l
-
+
&Help
&Help
-
+
Media Manager
Mediabeheer
-
+
Service Manager
Liturgie beheer
-
+
Theme Manager
Thema beheer
-
+
&New
&Nieuw
-
+
&Open
&Open
-
+
Open an existing service.
Open een bestaande liturgie.
-
+
&Save
Op&slaan
-
+
Save the current service to disk.
Deze liturgie opslaan.
-
+
Save &As...
Opslaan &als...
-
+
Save Service As
Liturgie opslaan als
-
+
Save the current service under a new name.
Deze liturgie onder een andere naam opslaan.
-
+
E&xit
&Afsluiten
-
+
Quit OpenLP
OpenLP afsluiten
-
+
&Theme
&Thema
-
+
&Configure OpenLP...
&Instellingen...
-
+
&Media Manager
&Media beheer
-
+
Toggle Media Manager
Media beheer wel / niet tonen
-
+
Toggle the visibility of the media manager.
Media beheer wel / niet tonen.
-
+
&Theme Manager
&Thema beheer
-
+
Toggle Theme Manager
Thema beheer wel / niet tonen
-
+
Toggle the visibility of the theme manager.
Thema beheer wel / niet tonen.
-
+
&Service Manager
&Liturgie beheer
-
+
Toggle Service Manager
Liturgie beheer wel / niet tonen
-
+
Toggle the visibility of the service manager.
Liturgie beheer wel / niet tonen.
-
+
&Preview Panel
&Voorbeeld
-
+
Toggle Preview Panel
Voorbeeld wel / niet tonen
-
+
Toggle the visibility of the preview panel.
Voorbeeld wel / niet tonen.
-
+
&Live Panel
&Live venster
-
+
Toggle Live Panel
Live venster wel / niet tonen
-
+
Toggle the visibility of the live panel.
Live venster wel / niet tonen.
-
+
&Plugin List
&Plugin Lijst
-
+
List the Plugins
Lijst met plugins =uitbreidingen van OpenLP
-
+
&User Guide
Gebr&uikshandleiding
-
+
&About
&Over OpenLP
-
+
More information about OpenLP
Meer Informatie over OpenLP
-
+
&Online Help
&Online help
-
+
&Web Site
&Website
-
+
Use the system language, if available.
Gebruik systeem standaardtaal, indien mogelijk.
-
+
Set the interface language to %s
%s als taal in OpenLP gebruiken
-
+
Add &Tool...
Hulpprogramma &toevoegen...
-
+
Add an application to the list of tools.
Voeg een hulpprogramma toe aan de lijst.
-
+
&Default
&Standaard
-
+
Set the view mode back to the default.
Terug naar de standaard weergave modus.
-
+
&Setup
&Setup
-
+
Set the view mode to Setup.
Weergave modus naar Setup.
-
+
&Live
&Live
-
+
Set the view mode to Live.
Weergave modus naar Live.
-
+
OpenLP Version Updated
Nieuwe OpenLP versie beschikbaar
-
+
OpenLP Main Display Blanked
OpenLP projectie op zwart
-
+
The Main Display has been blanked out
Projectie is uitgeschakeld: scherm staat op zwart
-
+
Default Theme: %s
Standaardthema: %s
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3096,17 +3114,17 @@ U kunt de laatste versie op http://openlp.org/ downloaden.
Nederlands
-
+
Configure &Shortcuts...
&Sneltoetsen instellen...
-
+
Close OpenLP
OpenLP afsluiten
-
+
Are you sure you want to close OpenLP?
OpenLP afsluiten?
@@ -3116,12 +3134,12 @@ U kunt de laatste versie op http://openlp.org/ downloaden.
Druk de huidige liturgie af.
-
+
Open &Data Folder...
Open &Data map...
-
+
Open the folder where songs, bibles and other data resides.
Open de map waar liederen, bijbels en andere data staat.
@@ -3131,78 +3149,159 @@ U kunt de laatste versie op http://openlp.org/ downloaden.
&Configureer Weergave Tags
-
+
&Autodetect
&Autodetecteer
-
+
Update Theme Images
Thema afbeeldingen opwaarderen
-
+
Update the preview images for all themes.
Voorbeeld afbeeldingen opwaarderen voor alle thema’s.
-
+
Print the current service.
Druk de huidige liturgie af.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Instellingen
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Open bestand
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3288,7 +3387,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3452,12 +3551,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3553,14 +3652,14 @@ Suffix not supported
&Wijzig onderdeel thema
-
+
File is not a valid service.
The content encoding is not UTF-8.
Geen geldig liturgie bestand.
Tekst codering is geen UTF-8.
-
+
File is not a valid service.
Geen geldig liturgie bestand.
@@ -3605,7 +3704,7 @@ Tekst codering is geen UTF-8.
Open bestand
-
+
OpenLP Service Files (*.osz)
OpenLP liturgie bestanden (*.osz)
@@ -3635,7 +3734,7 @@ Tekst codering is geen UTF-8.
Verplaatst de selectie naar beneden.
-
+
Modified Service
Gewijzigde liturgie
@@ -3655,27 +3754,27 @@ Tekst codering is geen UTF-8.
Toon &Live
-
+
The current service has been modified. Would you like to save this service?
De huidige liturgie is gewijzigd. Veranderingen opslaan?
-
+
File could not be opened because it is corrupt.
Bestand kan niet worden geopend omdat het beschadigd is.
-
+
Empty File
Leeg bestand
-
+
This service file does not contain any data.
Deze liturgie bevat nog geen gegevens.
-
+
Corrupt File
Corrupt bestand
@@ -3720,22 +3819,22 @@ Tekst codering is geen UTF-8.
Selecteer een thema voor de liturgie.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
Dit bestand is beschadigd of geen OpenLP 2.0 liturgie bestand.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -4016,32 +4115,32 @@ Tekst codering is geen UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Selecteer afbeelding
-
+
Theme Name Missing
Thema naam ontbreekt
-
+
There is no name for this theme. Please enter one.
Dit thema heeft nog geen naam. Geef een naam voor dit thema.
-
+
Theme Name Invalid
Ongeldige naam
-
+
Invalid theme name. Please enter one.
Deze naam kan niet worden gebruikt als thema naam. Kies een andere naam.
-
+
(approximately %d lines per slide)
(ongeveer %d regels per dia)
@@ -4119,7 +4218,7 @@ Tekst codering is geen UTF-8.
Selecteer een thema om te bewerken.
-
+
You are unable to delete the default theme.
Het standaard thema kan niet worden verwijderd.
@@ -4171,7 +4270,7 @@ Tekst codering is geen UTF-8.
Geen geldig thema bestand.
-
+
Theme %s is used in the %s plugin.
Thema %s wordt gebruikt in de %s plugin.
@@ -4221,7 +4320,7 @@ Tekst codering is geen UTF-8.
%s thema verwijderen?
-
+
Validation Error
Validatie fout
@@ -4245,255 +4344,260 @@ Tekst codering is geen UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
Thema assistent
-
+
Welcome to the Theme Wizard
Welkom bij de thema assistent
-
+
Set Up Background
Achtergrond instellen
-
+
Set up your theme's background according to the parameters below.
Thema achtergrond instellen met onderstaande parameters.
-
+
Background type:
Achtergrond type:
-
+
Solid Color
Vaste kleur
-
+
Gradient
Kleurverloop
-
+
Color:
Kleur:
-
+
Gradient:
Kleurverloop:
-
+
Horizontal
Horizontaal
-
+
Vertical
Verticaal
-
+
Circular
Radiaal
-
+
Top Left - Bottom Right
Links boven - rechts onder
-
+
Bottom Left - Top Right
Links onder - Rechts boven
-
+
Main Area Font Details
Font instellingen algemeen
-
+
Define the font and display characteristics for the Display text
Stel de eigenschappen voor de tekst weergave in
-
+
Font:
Font:
-
+
Size:
Grootte:
-
+
Line Spacing:
Interlinie:
-
+
&Outline:
&Omtrek:
-
+
&Shadow:
&Schaduw:
-
+
Bold
Vet
-
+
Italic
Cursief
-
+
Footer Area Font Details
Eigenschappen voettekst
-
+
Define the font and display characteristics for the Footer text
Stel de eigenschappen voor de voettekst weergave in
-
+
Text Formatting Details
Tekst opmaak eigenschappen
-
+
Allows additional display formatting information to be defined
Toestaan dat er afwijkende opmaak kan worden bepaald
-
+
Horizontal Align:
Horizontaal uitlijnen:
-
+
Left
links
-
+
Right
rechts
-
+
Center
Centreren
-
+
Output Area Locations
Uitvoer gebied locaties
-
+
Allows you to change and move the main and footer areas.
Toestaan dat tekstvelden gewijzigd en verplaatst worden.
-
+
&Main Area
&Hoofdgebied
-
+
&Use default location
Gebr&uik standaard locatie
-
+
X position:
X positie:
-
+
px
px
-
+
Y position:
Y positie:
-
+
Width:
Breedte:
-
+
Height:
Hoogte:
-
+
Use default location
Gebruik standaard locatie
-
+
Save and Preview
Opslaan en voorbeeld
-
+
View the theme and save it replacing the current one or change the name to create a new theme
Thema bekijken en sla het op onder dezelfde naam om te vervangen of onder een andere naam om een nieuw thema te maken
-
+
Theme name:
Thema naam:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
Deze assistent helpt bij het maken en bewerken van thema's. Klik op volgende om als eerste een achtergrond in te stellen.
-
+
Transitions:
Overgangen:
-
+
&Footer Area
&Voettekst gebied
-
+
Edit Theme - %s
Bewerk thema - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Achtergrondkleur:
+
OpenLP.ThemesTab
@@ -4884,7 +4988,7 @@ Tekst codering is geen UTF-8.
Klaar.
-
+
Starting import...
Start importeren...
@@ -5429,126 +5533,141 @@ Tekst codering is geen UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Lied gebruik bijhouden
-
+
&Delete Tracking Data
Verwij&der gegevens liedgebruik
-
+
Delete song usage data up to a specified date.
Verwijder alle gegevens over lied gebruik tot een bepaalde datum.
-
+
&Extract Tracking Data
&Extraheer gegevens liedgebruik
-
+
Generate a report on song usage.
Geneer rapportage liedgebruik.
-
+
Toggle Tracking
Gegevens bijhouden aan|uit
-
+
Toggle the tracking of song usage.
Gegevens liedgebruik bijhouden aan of uit zetten.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Liedgebruik plugin</strong><br />Met deze plugin kunt u bijhouden welke liederen tijdens de vieringen gezongen worden.
-
+
SongUsage
name singular
Liedprotokollierung
-
+
SongUsage
name plural
Liedprotokollierung
-
+
SongUsage
container title
Liedgebruik
-
+
Song Usage
Liedgebruik
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Gegevens liedgebruik verwijderen
-
+
Delete Selected Song Usage Events?
Wilt u de gegevens liedgebruik verwijderen?
-
+
Are you sure you want to delete selected Song Usage data?
Weet u zeker dat u de gegevens liedgebruik wilt verwijderen?
-
+
Deletion Successful
Succesvol verwijderd
-
+
All requested data has been deleted successfully.
Alle opgegeven data is verwijderd.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Gegevens liedgebruik extraheren
-
+
Select Date Range
Selecteer periode
-
+
to
tot
-
+
Report Location
Locatie rapport
@@ -5563,12 +5682,12 @@ Tekst codering is geen UTF-8.
liedgebruik_details_%s_%s.txt
-
+
Report Creation
Maak rapportage
-
+
Report
%s
has been successfully created.
@@ -5590,137 +5709,137 @@ is gemaakt.
SongsPlugin
-
+
&Song
&Lied
-
+
Import songs using the import wizard.
Importeer liederen met de lied assistent.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Lied plugin</strong><br />De lied plugin regelt de weergave en het beheer van liederen.
-
+
&Re-index Songs
He&r-indexeer liederen
-
+
Re-index the songs database to improve searching and ordering.
Her-indexxer de liederen in de database om het zoeken en ordenen te verbeteren.
-
+
Reindexing songs...
Liederen her-indexeren...
-
+
Song
name singular
Lied
-
+
Songs
name plural
Lieder
-
+
Songs
container title
Liederen
-
+
Arabic (CP-1256)
Arabisch (CP-1256)
-
+
Baltic (CP-1257)
Baltisch (CP-1257)
-
+
Central European (CP-1250)
Centraal Europees (CP-1250)
-
+
Cyrillic (CP-1251)
Cyrillisch (CP-1251)
-
+
Greek (CP-1253)
Grieks (CP-1253)
-
+
Hebrew (CP-1255)
Hebreeuws (CP-1255)
-
+
Japanese (CP-932)
Japans (CP-932)
-
+
Korean (CP-949)
Koreaans (CP-949)
-
+
Simplified Chinese (CP-936)
Chinees, eenvoudig (CP-936)
-
+
Thai (CP-874)
Thais (CP-874)
-
+
Traditional Chinese (CP-950)
Traditioneel Chinees (CP-950)
-
+
Turkish (CP-1254)
Turks (CP-1254)
-
+
Vietnam (CP-1258)
Vietnamees (CP-1258)
-
+
Western European (CP-1252)
Westeuropees (CP-1252)
-
+
Character Encoding
Tekst codering
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Kies een tekstcodering (codepage).
De tekstcodering is verantwoordelijk voor een correcte weergave van lettertekens.
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5729,7 +5848,7 @@ een correcte weergave van lettertekens.
Meestal voldoet de suggestie van OpenLP.
-
+
Exports songs using the export wizard.
Exporteer liederen met de export assistent.
@@ -5764,32 +5883,32 @@ Meestal voldoet de suggestie van OpenLP.
Voeg geselecteerde lied toe aan de liturgie.
-
+
Add a new song.
Voeg nieuw lied toe.
-
+
Edit the selected song.
Bewerk geselecteerde lied.
-
+
Delete the selected song.
Verwijder geselecteerde lied.
-
+
Preview the selected song.
Toon voorbeeld geselecteerd lied.
-
+
Send the selected song live.
Toon lied Live.
-
+
Add the selected song to the service.
Voeg geselecteerde lied toe aan de liturgie.
@@ -6081,7 +6200,7 @@ Meestal voldoet de suggestie van OpenLP.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- Deze assistent helpt u uw liederen te exporteren naar het openen vrije OpenLyrics worship lied bestand formaat.
+ Deze assistent helpt u uw liederen te exporteren naar het openen vrije OpenLyrics worship lied bestand formaat.
@@ -6144,7 +6263,7 @@ Meestal voldoet de suggestie van OpenLP.
Geef aan waar het bestand moet worden opgeslagen.
-
+
Select Destination Folder
Selecteer een doelmap
@@ -6153,6 +6272,11 @@ Meestal voldoet de suggestie van OpenLP.
Select the directory where you want the songs to be saved.
Selecteer een map waarin de liederen moeten worden bewaard.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6371,13 +6495,18 @@ Meestal voldoet de suggestie van OpenLP.
Finished export.
- Exporteren afgerond.
+ Exporteren afgerond.
-
+
Your song export failed.
Liederen export is mislukt.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts
index 5351f34b6..10fbad74e 100644
--- a/resources/i18n/pt_BR.ts
+++ b/resources/i18n/pt_BR.ts
@@ -827,17 +827,17 @@ com o usu, portanto uma conexão com a internet é necessária.
Você não pode combinar um versículo simples e um duplo nos resultados das buscas. Você deseja deletar os resultados da sua busca e comecar uma nova?
-
+
Bible not fully loaded.
Bíblia não carregada completamente.
-
+
Information
Informações
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
A Bíblia secundária não contém todos os versículos que estão na Bíblia principal. Somente versículos encontrados em ambas as Bíblias serão exibidas. %d versículos não foram inclusos nos resultados.
@@ -1328,24 +1328,24 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Plugin de Imagens</strong><br />O plugin de imagens permite a exibição de imagens.<br />Uma das funcionalidades importantes deste plugin é a possibilidade de agrupar várias imagens no culto, facilitando a exibição de várias imagens. Este plugin também pode usar a funcionalidade de "repetição temporizada" do OpenLP para criar uma apresentação de slides que é executada automaticamente. Além disso, imagens do plugin podem ser usadas em sobreposição ao plano de fundo do tema atual, exibindo itens baseados em texto como músicas com a imagem selecionada ao fundo ao invés do plano de fundo fornecido pelo tema.
-
+
Image
name singular
Imagem
-
+
Images
name plural
Imagens
-
+
Images
container title
Imagens
@@ -1386,37 +1386,37 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e
Adicionar a Imagem selecionada ao culto.
-
+
Load a new image.
Carregar uma nova imagem.
-
+
Add a new image.
Adicionar uma nova imagem.
-
+
Edit the selected image.
Editar a imagem selecionada.
-
+
Delete the selected image.
Excluir a imagem selecionada.
-
+
Preview the selected image.
Pré-visualizar a imagem selecionada.
-
+
Send the selected image live.
Enviar a imagem selecionada para a projeção.
-
+
Add the selected image to the service.
Adicionar a imagem selecionada ao culto.
@@ -1442,38 +1442,56 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e
Você precisa selecionar uma imagem para excluir.
-
+
You must select an image to replace the background with.
Você precisa selecionar uma imagem para definir como plano de fundo.
-
+
Missing Image(s)
Imagem(s) não encontrada(s)
-
+
The following image(s) no longer exist: %s
A(s) seguinte(s) imagem(s) não existe(m) mais: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
A(s) seguinte(s) imagem(s) não existe(m) mais: %s
Mesmo assim, deseja continuar adicionando as outras imagens?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Ocorreu um erro ao substituir o plano de fundo, o arquivo de imagem "%s" não existe.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2779,287 +2797,287 @@ Para cancelar o assistente completamente, clique no botão finalizar.
OpenLP.MainWindow
-
+
&File
&Arquivo
-
+
&Import
&Importar
-
+
&Export
&Exportar
-
+
&View
&Exibir
-
+
M&ode
M&odo
-
+
&Tools
&Ferramentas
-
+
&Settings
&Configurações
-
+
&Language
&Idioma
-
+
&Help
Aj&uda
-
+
Media Manager
Gerenciador de Mídia
-
+
Service Manager
Gerenciador de Culto
-
+
Theme Manager
Gerenciador de Tema
-
+
&New
&Novo
-
+
&Open
&Abrir
-
+
Open an existing service.
Abrir um culto existente.
-
+
&Save
&Salvar
-
+
Save the current service to disk.
Salvar o culto atual no disco.
-
+
Save &As...
Salvar &Como...
-
+
Save Service As
Salvar Culto Como
-
+
Save the current service under a new name.
Salvar o culto atual com um novo nome.
-
+
E&xit
S&air
-
+
Quit OpenLP
Fechar o OpenLP
-
+
&Theme
&Tema
-
+
&Configure OpenLP...
&Configurar o OpenLP...
-
+
&Media Manager
&Gerenciador de Mídia
-
+
Toggle Media Manager
Alternar Gerenciador de Mídia
-
+
Toggle the visibility of the media manager.
Alternar a visibilidade do gerenciador de mídia.
-
+
&Theme Manager
&Gerenciador de Tema
-
+
Toggle Theme Manager
Alternar para Gerenciamento de Tema
-
+
Toggle the visibility of the theme manager.
Alternar a visibilidade do gerenciador de tema.
-
+
&Service Manager
Gerenciador de &Culto
-
+
Toggle Service Manager
Alternar o Gerenciador de Culto
-
+
Toggle the visibility of the service manager.
Alternar visibilidade do gerenciador de culto.
-
+
&Preview Panel
&Painel de Pré-Visualização
-
+
Toggle Preview Panel
Alternar o Painel de Pré-Visualização
-
+
Toggle the visibility of the preview panel.
Alternar a visibilidade do painel de pré-visualização.
-
+
&Live Panel
&Painel de Projeção
-
+
Toggle Live Panel
Alternar Painel da Projeção
-
+
Toggle the visibility of the live panel.
Alternar a visibilidade do painel de projeção.
-
+
&Plugin List
&Lista de Plugins
-
+
List the Plugins
Listar os Plugins
-
+
&User Guide
&Guia do Usuário
-
+
&About
&Sobre
-
+
More information about OpenLP
Mais informações sobre o OpenLP
-
+
&Online Help
&Ajuda Online
-
+
&Web Site
&Web Site
-
+
Use the system language, if available.
Usar o idioma do sistema, caso disponível.
-
+
Set the interface language to %s
Definir o idioma da interface como %s
-
+
Add &Tool...
Adicionar &Ferramenta...
-
+
Add an application to the list of tools.
Adicionar um aplicativo à lista de ferramentas.
-
+
&Default
&Padrão
-
+
Set the view mode back to the default.
Reverter o modo de visualização ao padrão.
-
+
&Setup
&Configuração
-
+
Set the view mode to Setup.
Configurar o modo de visualização para Configuração.
-
+
&Live
&Ao Vivo
-
+
Set the view mode to Live.
Configurar o modo de visualização como Ao Vivo.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
@@ -3068,22 +3086,22 @@ You can download the latest version from http://openlp.org/.
Voce pode baixar a última versão em http://openlp.org/.
-
+
OpenLP Version Updated
Versão do OpenLP Atualizada
-
+
OpenLP Main Display Blanked
Tela Principal do OpenLP desativada
-
+
The Main Display has been blanked out
A Tela Principal foi desativada
-
+
Default Theme: %s
Tema padrão: %s
@@ -3094,17 +3112,17 @@ Voce pode baixar a última versão em http://openlp.org/.
Português do Brasil
-
+
Configure &Shortcuts...
Configurar &Atalhos...
-
+
Close OpenLP
Fechar o OpenLP
-
+
Are you sure you want to close OpenLP?
Você tem certeza de que deseja fechar o OpenLP?
@@ -3119,88 +3137,169 @@ Voce pode baixar a última versão em http://openlp.org/.
&Configurar Etiquetas de Exibição
-
+
Open &Data Folder...
Abrir Pasta de &Dados...
-
+
Open the folder where songs, bibles and other data resides.
Abrir a pasta na qual músicas, bíblias e outros arquivos são armazenados.
-
+
&Autodetect
&Auto detectar
-
+
Update Theme Images
Atualizar Imagens de Tema
-
+
Update the preview images for all themes.
Atualizar as imagens de pré-visualização de todos os temas.
-
+
Print the current service.
Imprimir o culto atual.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+ Configurações
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Abrir Arquivo
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -3286,7 +3385,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -3450,12 +3549,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3551,14 +3650,14 @@ Suffix not supported
&Alterar Tema do Item
-
+
File is not a valid service.
The content encoding is not UTF-8.
O arquivo não é um culto válida.
A codificação do conteúdo não é UTF-8.
-
+
File is not a valid service.
Arquivo não é uma ordem de culto válida.
@@ -3603,7 +3702,7 @@ A codificação do conteúdo não é UTF-8.
Abrir Arquivo
-
+
OpenLP Service Files (*.osz)
Arquivos de Culto do OpenLP (*.osz)
@@ -3633,7 +3732,7 @@ A codificação do conteúdo não é UTF-8.
Enviar o item selecionado para a Projeção.
-
+
Modified Service
Culto Modificado
@@ -3653,27 +3752,27 @@ A codificação do conteúdo não é UTF-8.
Exibir &Projeção
-
+
The current service has been modified. Would you like to save this service?
O culto atual foi modificada. Você gostaria de salvar este culto?
-
+
File could not be opened because it is corrupt.
Arquivo não pôde ser aberto porque está corrompido.
-
+
Empty File
Arquivo vazio
-
+
This service file does not contain any data.
Este arquivo de culto não contém dados.
-
+
Corrupt File
Arquivo corrompido
@@ -3718,22 +3817,22 @@ A codificação do conteúdo não é UTF-8.
Selecionar um tema para o culto.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
Este arquivo está corrompido ou não é um arquivo de culto do OpenLP 2.0.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -4014,32 +4113,32 @@ A codificação do conteúdo não é UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Selecionar Imagem
-
+
Theme Name Missing
Faltando Nome do Tema
-
+
There is no name for this theme. Please enter one.
Não há nome para este tema. Por favor forneça um.
-
+
Theme Name Invalid
Nome do Tema Inválido
-
+
Invalid theme name. Please enter one.
O nome do tema é inválido. Por favor forneça um.
-
+
(approximately %d lines per slide)
(aproximadamente %d linhas por slide)
@@ -4117,7 +4216,7 @@ A codificação do conteúdo não é UTF-8.
Você precisa selecionar um tema para editar.
-
+
You are unable to delete the default theme.
Você não pode apagar o tema padrão.
@@ -4169,7 +4268,7 @@ A codificação do conteúdo não é UTF-8.
O arquivo não é um tema válido.
-
+
Theme %s is used in the %s plugin.
O tema %s é usado no plugin %s.
@@ -4219,7 +4318,7 @@ A codificação do conteúdo não é UTF-8.
Apagar o tema %s?
-
+
Validation Error
Erro de Validação
@@ -4243,255 +4342,260 @@ A codificação do conteúdo não é UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
Assistente de Tema
-
+
Welcome to the Theme Wizard
Bem-vindo ao Assistente de Tema
-
+
Set Up Background
Configurar Plano de Fundo
-
+
Set up your theme's background according to the parameters below.
Configure o plano de fundo de seu tema de acordo com os parâmetros abaixo.
-
+
Background type:
Tipo de plano de fundo:
-
+
Solid Color
Cor Sólida
-
+
Gradient
Degradê
-
+
Color:
Cor:
-
+
Gradient:
Degradê:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
Esquerda Superior - Direita Inferior
-
+
Bottom Left - Top Right
Esquerda Inferior - Direita Superior
-
+
Main Area Font Details
Detalhes da Fonte da Área Principal
-
+
Define the font and display characteristics for the Display text
Definir a fonte e características de exibição para o texto de Exibição
-
+
Font:
Fonte:
-
+
Size:
Tamanho:
-
+
Line Spacing:
Espaçamento entre linhas:
-
+
&Outline:
&Contorno:
-
+
&Shadow:
&Sombra:
-
+
Bold
Negrito
-
+
Italic
Itálico
-
+
Footer Area Font Details
Detalhes de Fonte da Área de Rodapé
-
+
Define the font and display characteristics for the Footer text
Defina a fone e as características de exibição do texto de Rodapé
-
+
Text Formatting Details
Detalhes da Formatação de Texto
-
+
Allows additional display formatting information to be defined
Permite que informações adicionais de formatações de exibição sejam definidas
-
+
Horizontal Align:
Alinhamento Horizontal:
-
+
Left
Esquerda
-
+
Right
Direita
-
+
Center
Centralizado
-
+
Output Area Locations
Posições das Áreas de Saída
-
+
Allows you to change and move the main and footer areas.
Permite modificar e mover as áreas principal e de rodapé.
-
+
&Main Area
&Área Principal
-
+
&Use default location
&Usar posição padrão
-
+
X position:
Posição X:
-
+
px
px
-
+
Y position:
Posição Y:
-
+
Width:
Largura:
-
+
Height:
Altura:
-
+
Use default location
Usar posição padrão
-
+
Save and Preview
Salvar e pré-visualizar
-
+
View the theme and save it replacing the current one or change the name to create a new theme
Visualizar o tema e salvá-lo, substituindo o atual ou mudar o nome para criar um novo tema
-
+
Theme name:
Nome do tema:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
Este assistente vai ajudá-lo a criar e editar seus temas. Clique no botão avançar abaixo para iniciar o processo, configurando seu plano de fundo.
-
+
Transitions:
Transições:
-
+
&Footer Area
Área do &Rodapé
-
+
Edit Theme - %s
Editar Tema - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+
+
OpenLP.ThemesTab
@@ -4882,7 +4986,7 @@ A codificação do conteúdo não é UTF-8.
Pronto.
-
+
Starting import...
Iniciando importação...
@@ -5427,126 +5531,141 @@ A codificação do conteúdo não é UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Registro de Uso de Músicas
-
+
&Delete Tracking Data
&Excluir Dados de Registro
-
+
Delete song usage data up to a specified date.
Excluir registros de uso até uma data específica.
-
+
&Extract Tracking Data
&Extrair Dados de Registro
-
+
Generate a report on song usage.
Gerar um relatório sobre o uso das músicas.
-
+
Toggle Tracking
Alternar Registro
-
+
Toggle the tracking of song usage.
Alternar o registro de uso das músicas.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Plugin de Uso das Músicas</strong><br />Este plugin registra o uso das músicas nos cultos.
-
+
SongUsage
name singular
Registro das Músicas
-
+
SongUsage
name plural
Registro das Músicas
-
+
SongUsage
container title
Uso das Músicas
-
+
Song Usage
Uso das Músicas
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Excluir Dados de Registro das Músicas
-
+
Delete Selected Song Usage Events?
Deseja Excluir os Eventos de Uso das Músicas?
-
+
Are you sure you want to delete selected Song Usage data?
Você tem certeza de que deseja excluir os dados selecionados de Uso das Músicas?
-
+
Deletion Successful
Exclusão Bem Sucedida
-
+
All requested data has been deleted successfully.
Todos os dados solicitados foram apagados com sucesso.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Extração de Uso das Músicas
-
+
Select Date Range
Selecionar Faixa de Datas
-
+
to
até
-
+
Report Location
Localização do Relatório
@@ -5561,12 +5680,12 @@ A codificação do conteúdo não é UTF-8.
detalhe_uso_%s_%s.txt
-
+
Report Creation
Criação de Relatório
-
+
Report
%s
has been successfully created.
@@ -5588,130 +5707,130 @@ foi criado com sucesso.
SongsPlugin
-
+
&Song
&Música
-
+
Import songs using the import wizard.
Importar músicas com o assistente de importação.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Plugin de Músicas</strong><br />O plugin de músicas permite exibir e gerenciar músicas.
-
+
&Re-index Songs
&Re-indexar Músicas
-
+
Re-index the songs database to improve searching and ordering.
Re-indexar o banco de dados de músicas para melhorar a busca e a ordenação.
-
+
Reindexing songs...
Reindexando músicas...
-
+
Song
name singular
Música
-
+
Songs
name plural
Músicas
-
+
Songs
container title
Músicas
-
+
Arabic (CP-1256)
Arábico (CP-1256)
-
+
Baltic (CP-1257)
Báltico (CP-1257)
-
+
Central European (CP-1250)
Europeu Central (CP-1250)
-
+
Cyrillic (CP-1251)
Cirílico (CP-1251)
-
+
Greek (CP-1253)
Grego (CP-1253)
-
+
Hebrew (CP-1255)
Hebraico (CP-1255)
-
+
Japanese (CP-932)
Japonês (CP-932)
-
+
Korean (CP-949)
Coreano (CP-949)
-
+
Simplified Chinese (CP-936)
Chinês Simplificado (CP-936)
-
+
Thai (CP-874)
Tailandês (CP-874)
-
+
Traditional Chinese (CP-950)
Chinês Tradicional (CP-950)
-
+
Turkish (CP-1254)
Turco (CP-1254)
-
+
Vietnam (CP-1258)
Vietnamita (CP-1258)
-
+
Western European (CP-1252)
Europeu Ocidental (CP-1252)
-
+
Character Encoding
Codificação de Caracteres
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5720,14 +5839,14 @@ pela correta representação dos caracteres.
Normalmente pode usar a opção pré-selecionada.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Escolha a codificação dos caracteres.
A codificação é responsável pela correta representação dos caracteres.
-
+
Exports songs using the export wizard.
Exporta músicas utilizando o assistente de exportação.
@@ -5762,32 +5881,32 @@ A codificação é responsável pela correta representação dos caracteres.Adicionar a Música selecionada ao culto.
-
+
Add a new song.
Adicionar uma nova música.
-
+
Edit the selected song.
Editar a música selecionada.
-
+
Delete the selected song.
Excluir a música selecionada.
-
+
Preview the selected song.
Pré-visualizar a música selecionada.
-
+
Send the selected song live.
Enviar a música selecionada para a projeção.
-
+
Add the selected song to the service.
Adicionar a música selecionada ao culto.
@@ -6079,7 +6198,7 @@ A codificação é responsável pela correta representação dos caracteres.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- Este assistente irá ajudá-lo a exportar as suas músicas para o formato de músicas de louvor aberto e gratuito OpenLyrics.
+ Este assistente irá ajudá-lo a exportar as suas músicas para o formato de músicas de louvor aberto e gratuito OpenLyrics.
@@ -6142,7 +6261,7 @@ A codificação é responsável pela correta representação dos caracteres.Você precisa especificar um diretório.
-
+
Select Destination Folder
Selecione a Pasta de Destino
@@ -6151,6 +6270,11 @@ A codificação é responsável pela correta representação dos caracteres.Select the directory where you want the songs to be saved.
Selecionar o diretório onde deseja salvar as músicas.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -6369,13 +6493,18 @@ A codificação é responsável pela correta representação dos caracteres.
Finished export.
- Exportação finalizada.
+ Exportação finalizada.
-
+
Your song export failed.
A sua exportação de músicas falhou.
+
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
+
+
SongsPlugin.SongImport
diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts
index 1f413dd87..383306a5b 100644
--- a/resources/i18n/ru.ts
+++ b/resources/i18n/ru.ts
@@ -65,7 +65,7 @@ Do you want to continue anyway?
<strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen.
- <strong>Плагин оповещений</strong><br/>Плагин оповещений контролирует отображения срочной информации на экране.
+ <strong>Плагин оповещений</strong><br />Плагин оповещений контролирует отображения срочной информации на экране.
@@ -794,17 +794,17 @@ demand and thus an internet connection is required.
Вы не можете комбинировать результат поиска для одной и двух Библий. Желаете удалить результаты поиска и начать новый поиск?
-
+
Bible not fully loaded.
Библия загружена не полностью.
-
+
Information
Информация
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
Альтернативный перевод Библии не содержит всех стихов, которые требует основной перевод. Будут показаны только те стихи, которые найдены в обеих вариантах перевод. %d стихов не будут включены в результаты.
@@ -1164,60 +1164,60 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
<strong>Плагин Изображений</strong><br />Плагин изображений позволяет отображать изображения.<br />Одной из отличительных возможностей этого плагина является возможность группировать выбранные изображение в менеджере служения, что делает работу с большим количеством изображений более легкой. Этот плагин также позволяет использовать возможности "временной петли" OpenLP, чтобы создавать слайд-шоу, которые выполняются автоматически. В дополнение к этому, изображения из плагина могут быть использованы, чтобы заменить текущий фон, что позволяет отображать текстовые элементы, такие как песни, с выбранным изображением в качестве фона, вместо фона, который указан в теме.
-
+
Image
name singular
Изображение
-
+
Images
name plural
Изображения
-
+
Images
container title
Изображения
-
+
Load a new image.
Загрузить новое изображение.
-
+
Add a new image.
Добавить новое изображение
-
+
Edit the selected image.
Изменить выбранное изображение.
-
+
Delete the selected image.
Удалить выбранное изображение.
-
+
Preview the selected image.
Просмотреть выбранное изображение.
-
+
Send the selected image live.
Отправить выбранное изображение на проектор.
-
+
Add the selected image to the service.
Добавить выбранное изображение к служению.
@@ -1243,36 +1243,54 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Вы должны выбрать изображение для удаления.
-
+
Missing Image(s)
Отсутствует изображение(я)
-
+
The following image(s) no longer exist: %s
Следующие изображения больше не существуют: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
Следующих изображений больше не существуют: %s
Добавить остальные изображения?
-
+
You must select an image to replace the background with.
Вы должны выбрать изображение, которым следует заменить фон.
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Возникла проблема при замене Фона проектора, файл "%s" больше не существует.
-
+
There was no display item to amend.
-
+ Отсутствует объект для изменений.
+
+
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
@@ -1376,7 +1394,7 @@ Do you want to add the other images anyway?
There was no display item to amend.
-
+ Отсутствует объект для изменений.
@@ -2047,7 +2065,7 @@ Version: %s
Songs
- Псалмы
+ Песни
@@ -2195,12 +2213,12 @@ To cancel the First Time Wizard completely, press the finish button now.
Download complete. Click the finish button to return to OpenLP.
-
+ Загрузка завершена. Нажмите кнопку Завершить, чтобы вернуться в OpenLP.
Click the finish button to return to OpenLP.
-
+ Нажмите кнопку Завершить для возврата в OpenLP.
@@ -2208,7 +2226,7 @@ To cancel the First Time Wizard completely, press the finish button now.
Configure Formatting Tags
-
+ Настроить теги форматирования
@@ -2276,7 +2294,7 @@ To cancel the First Time Wizard completely, press the finish button now.
<HTML here>
- <HTML сюда>
+ <HTML здесь>
@@ -2524,414 +2542,504 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
&Файл
-
+
&Import
&Импорт
-
+
&Export
&Экспорт
-
+
&View
&Вид
-
+
M&ode
Р&ежим
-
+
&Tools
&Инструменты
-
+
&Settings
&Настройки
-
+
&Language
&Язык
-
+
&Help
&Помощь
-
+
Media Manager
Менеджер Мультимедиа
-
+
Service Manager
Менеджер служения
-
+
Theme Manager
Менеджер Тем
-
+
&New
&Новая
-
+
&Open
&Открыть
-
+
Open an existing service.
Открыть существующее служение.
-
+
&Save
&Сохранить
-
+
Save the current service to disk.
Сохранить текущее служение на диск.
-
+
Save &As...
Сохранить к&ак...
-
+
Save Service As
Сохранить служение как
-
+
Save the current service under a new name.
Сохранить текущее служение под новым именем.
-
+
E&xit
Вы&ход
-
+
Quit OpenLP
Завершить работу OpenLP
-
+
&Theme
Т&ема
-
+
Configure &Shortcuts...
Настройки и б&ыстрые клавиши...
-
+
&Configure OpenLP...
&Настроить OpenLP...
-
+
&Media Manager
Управление &Материалами
-
+
Toggle Media Manager
Свернуть Менеджер Медиа
-
+
Toggle the visibility of the media manager.
Свернуть видимость менеджера мультимедиа.
-
+
&Theme Manager
Управление &темами
-
+
Toggle Theme Manager
Свернуть Менеджер Тем
-
+
Toggle the visibility of the theme manager.
Свернуть видимость Менеджера Тем.
-
+
&Service Manager
Управление &Служением
-
+
Toggle Service Manager
Свернуть Менеджер Служения
-
+
Toggle the visibility of the service manager.
Свернуть видимость Менеджера Служения.
-
+
&Preview Panel
Пан&ель предпросмотра
-
+
Toggle Preview Panel
Toggle Preview Panel
-
+
Toggle the visibility of the preview panel.
Toggle the visibility of the preview panel.
-
+
&Live Panel
&Панель проектора
-
+
Toggle Live Panel
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
Toggle the visibility of the live panel.
-
+
&Plugin List
&Список плагинов
-
+
List the Plugins
Выводит список плагинов
-
+
&User Guide
&Руководство пользователя
-
+
&About
&О программе
-
+
More information about OpenLP
Больше информации про OpenLP
-
+
&Online Help
&Помощь онлайн
-
+
&Web Site
&Веб-сайт
-
+
Use the system language, if available.
Использовать системный язык, если доступно.
-
+
Set the interface language to %s
Изменить язык интерфеса на %s
-
+
Add &Tool...
Добавить &Инструмент...
-
+
Add an application to the list of tools.
Добавить приложение к списку инструментов
-
+
&Default
&По умолчанию
-
+
Set the view mode back to the default.
Установить вид в режим по умолчанию.
-
+
&Setup
&Настройка
-
+
Set the view mode to Setup.
-
+ Установить вид в режим настройки.
-
+
&Live
-
+ &Демонстрация
-
+
Set the view mode to Live.
-
+ Установить вид в режим демонстрации.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
-
+ Для загрузки доступна версия OpenLP %s (в настоящее время вы используете версию %s).
+
+Вы можете загрузить последнюю версию с http://openlp.org/.
-
+
OpenLP Version Updated
-
+ Версия OpenLP обновлена
-
+
OpenLP Main Display Blanked
-
+ Главный дисплей OpenLP очищен
-
+
The Main Display has been blanked out
-
+ Главный дисплей был очищен
-
+
Close OpenLP
-
+ Закрыть OpenLP
-
+
Are you sure you want to close OpenLP?
-
+ Вы уверены что хотите закрыть OpenLP?
-
+
Default Theme: %s
-
+ Тема по умолчанию: %s
English
Please add the name of your language here
- Английский
+ Русский
-
+
Open &Data Folder...
-
+ Открыть &папку данных...
-
+
Open the folder where songs, bibles and other data resides.
-
-
-
-
- &Autodetect
-
+ Открыть папку размещения песен, Библий и других данных.
+ &Autodetect
+ &Автоопределение
+
+
+
Update Theme Images
-
+ Обновить изображение Темы
-
+
Update the preview images for all themes.
-
+ Обновить миниатюры тем.
-
+
Print the current service.
-
+ Распечатать текущее служение.
-
+
L&ock Panels
-
+ За&блокировать панели
-
+
Prevent the panels being moved.
-
+ Сохраняет панели от перемещения.
-
+
Re-run First Time Wizard
-
+ Перезапустить мастер первого запуска
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+ Перезапуск Мастера первого запуска, импорт песен, Библий и тем.
-
+
Re-run First Time Wizard?
-
+ Перезапустить Мастер первого запуска?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+ Вы уверены что хотите перезапустить Мастер первого запуска?
+
+Перезапуск мастера сделает изменения в текущей конфигурации OpenLP и, возможно, добавит песни к существующему списку и произведет изменения темы по умолчанию.
-
+
&Recent Files
-
+ &Недавние файлы
&Configure Formatting Tags...
-
+ &Настроить теги форматирования...
-
+
Clear List
Clear List of recent files
+ Очистить список
+
+
+
+ Clear the list of recent files.
+ Очистить список недавних файлов.
+
+
+
+ Configure &Formatting Tags...
-
- Clear the list of recent files.
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+ Открыть файл
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
@@ -2945,67 +3053,73 @@ Re-running this wizard may make changes to your current OpenLP configuration and
&Add to selected Service Item
-
+ &Добавить в выбранный объект Служения
You must select one or more items to preview.
-
+ Вы должны выбрать объекты для просмотра.
You must select one or more items to send live.
-
+ Вы должны выбрать элементы для показа.
You must select one or more items.
-
+ Вы должны выбрать один или более элементов.
You must select an existing service item to add to.
-
+ Для добавления вы должны выбрать существующий элемент служения.
Invalid Service Item
-
+ Неправильный элемент Служения
You must select a %s service item.
-
+ Вы должны выбрать объект служения %s.
You must select one or more items to add.
-
+ Для добавления вы должны выбрать один или более элементов.
No Search Results
-
+ Результаты поиска отсутствуют
&Clone
-
+ &Клонировать
Invalid File Type
-
+ Неправильный тип файла
Invalid File %s.
Suffix not supported
-
+ Неправильный файл %s.
+Расширение не поддерживается
Duplicate files found on import and ignored.
+ Во время импорта обнаружены и проигнорированы дубликаты.
+
+
+
+ Duplicate files were found on import and were ignored.
@@ -3014,42 +3128,42 @@ Suffix not supported
Plugin List
-
+ Список плагинов
Plugin Details
-
+ Описание плагина
Status:
-
+ Статус:
Active
-
+ Активирован
Inactive
-
+ Деактивирован
%s (Disabled)
-
+ %s (Запрещен)
%s (Active)
-
+ %s (Активирован)
%s (Inactive)
-
+ %s (Деактивирован)
@@ -3057,12 +3171,12 @@ Suffix not supported
Fit Page
-
+ Вписать в страницу
Fit Width
-
+ По ширине
@@ -3070,77 +3184,77 @@ Suffix not supported
Options
-
+ Опции
Copy
-
+ Копировать
Copy as HTML
-
+ Копировать как HTML
Zoom In
-
+ Увеличить
Zoom Out
-
+ Уменьшить
Zoom Original
-
+ 1:1
Other Options
-
+ Другие опции
Include slide text if available
-
+ Включить текст слайда, если доступно
Include service item notes
-
+ Включить заметки к элементам служения
Include play length of media items
-
+ Включить время для мультимедиа объектов
Add page break before each text item
-
+ Добавить разрыв страницы перед каждым текстовым элементом
Service Sheet
-
+ Лист Служения
Print
-
+ Печать
Title:
-
+ Название:
Custom Footer Text:
-
+ Специальный текст подписи:
@@ -3148,25 +3262,25 @@ Suffix not supported
Screen
-
+ Экран
primary
-
+ основной
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+ <strong>Начать</strong>: %s
-
+
<strong>Length</strong>: %s
-
+ <strong>Длина</strong>: %s
@@ -3182,127 +3296,127 @@ Suffix not supported
Move to &top
-
+ Передвинуть &вверх
Move item to the top of the service.
-
+ Передвинуть объект в начало служения.
Move &up
-
+ Передвинуть &вверх
Move item up one position in the service.
-
+ Передвинуть объект на одну позицию в служении
Move &down
-
+ Передвинуть &вниз
Move item down one position in the service.
-
+ Передвинуть объект на одну позицию вниз в служении.
Move to &bottom
-
+ Передвинуть &вниз
Move item to the end of the service.
-
+ Передвинуть объект в конец служения.
Moves the selection down the window.
-
+ Передвинуть выделенное вниз окна.
Move up
-
+ Передвинуть вверх
Moves the selection up the window.
-
+ Передвинуть выделенное вверх окна.
&Delete From Service
-
+ &Удалить из служения
Delete the selected item from the service.
-
+ Удалить выбранный объект из служения.
&Expand all
-
+ &Расширить все
Expand all the service items.
-
+ Расширить все объекты служения.
&Collapse all
-
+ &Свернуть все
Collapse all the service items.
-
+ Свернуть все объекты служения.
Go Live
-
+ Показать
Send the selected item to Live.
-
+ Показать выбранный объект.
&Add New Item
-
+ &Добавить новый элемент
&Add to Selected Item
-
+ &Добавить к выбранному элементу
&Edit Item
-
+ &Изменить элемент
&Reorder Item
-
+ &Упорядочить элементы
&Notes
-
+ &Заметки
&Change Item Theme
-
+ &Изменить тему элемента
@@ -3310,135 +3424,136 @@ Suffix not supported
Открыть файл
-
+
OpenLP Service Files (*.osz)
-
+ Открыть файл служения OpenLP (*.osz)
-
+
Modified Service
-
+ Измененное служение
-
+
File is not a valid service.
The content encoding is not UTF-8.
-
+ Файл не является правильным служением.
+Формат кодирования не UTF-8.
-
+
File is not a valid service.
-
+ Файл не является правильным служением.
Missing Display Handler
-
+ Отсутствует обработчик показа
Your item cannot be displayed as there is no handler to display it
-
+ Объект не может быть показан, поскольку отсутствует обработчик для его показа
Your item cannot be displayed as the plugin required to display it is missing or inactive
-
+ Элемент служения не может быть показан, поскольку требуемый плагин отсутствует или отключен
&Start Time
-
+ &Время начала
Show &Preview
-
+ Показать &Просмотр
Show &Live
-
+ Показать &на проектор
-
+
The current service has been modified. Would you like to save this service?
-
+ Текущее служение было изменено. Вы хотите сохранить это служение?
-
+
File could not be opened because it is corrupt.
-
+ Файл не может быть открыт, поскольку он поврежден.
-
+
Empty File
-
+ Пустой файл
-
+
This service file does not contain any data.
-
+ Файл служения не содержит данных.
-
+
Corrupt File
-
+ Поврежденный файл
Custom Service Notes:
-
+ Заметки к служению:
Notes:
-
+ Заметки:
Playing time:
-
+ Время игры:
Untitled Service
-
+ Служение без названия
Load an existing service.
-
+ Загрузить существующее служение.
Save this service.
-
+ Сохранить это служение.
Select a theme for the service.
-
+ Выбрать тему для служения.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+ Этот файл поврежден или не является файлом служения OpenLP 2.0.
-
+
Slide theme
-
+ Тема слайда
-
+
Notes
-
+ Заметки
-
+
Service File Missing
-
+ Файл служения отсутствует
@@ -3462,67 +3577,67 @@ The content encoding is not UTF-8.
Action
-
+ Действие
Shortcut
-
+ Быстрые клавиши
Duplicate Shortcut
-
+ Дублировать быстрые клавиши
The shortcut "%s" is already assigned to another action, please use a different shortcut.
-
+ Сочетание "%s" уже назначено для другого действия. Пожалуйста используйте другое сокращение.
Alternate
-
+ Альтернатива
Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively.
-
+ Выберите действие и щелкните на кнопку ниже, чтобы начать захват основного или альтернативного сочетания клавиш.
Default
-
+ По-умолчанию
Custom
-
+ Особое
Capture shortcut.
-
+ Захватить сочетание.
Restore the default shortcut of this action.
-
+ Восстановить сочетание клавиш по умолчанию для этого действия.
Restore Default Shortcuts
-
+ Восстановить быстрые клавиши по умолчанию
Do you want to restore all shortcuts to their defaults?
-
+ Вы хотите восстановить все быстрые клавиши на значения по умолчанию?
Configure Shortcuts
-
+ Настроить быстрые клавиши
@@ -3530,47 +3645,47 @@ The content encoding is not UTF-8.
Previous Slide
-
+ Предыдущий слайд
Next Slide
-
+ Следующий слайд
Hide
-
+ Скрыть
Blank Screen
-
+ Пустой экран
Blank to Theme
-
+ Фон темы
Show Desktop
-
+ Показать рабочий стол
Go To
-
+ Перейти к
Previous Service
-
+ Предыдущее служение
Next Service
-
+ Следующее служение
@@ -3580,42 +3695,42 @@ The content encoding is not UTF-8.
Move to previous.
-
+ Переместить к предыдущему.
Move to next.
-
+ Переместить к следующему.
Play Slides
-
+ Проиграть слайды.
Delay between slides in seconds.
-
+ Задержка между слайдами в секундах.
Move to live.
-
+ Переместить к показу.
Add to Service.
-
+ Добавить к служению.
Edit and reload song preview.
-
+ Изменить и перезагрузить предпросмотр песни.
Start playing media.
-
+ Начать проигрывание медиафайла.
@@ -3623,12 +3738,12 @@ The content encoding is not UTF-8.
Spelling Suggestions
-
+ Правописание
Formatting Tags
-
+ Теги форматирования
@@ -3641,85 +3756,85 @@ The content encoding is not UTF-8.
Hours:
-
+ Часов:
Minutes:
-
+ Минут:
Seconds:
-
+ Секунд:
Item Start and Finish Time
-
+ Время начала и конца для элемента
Start
-
+ Начало
Finish
-
+ Конец
Length
-
+ Длительность
Time Validation Error
-
+ Ошибка проверки времени
Finish time is set after the end of the media item
-
+ Время окончания больше длительности медиа файла
Start time is after the finish time of the media item
-
+ Время начало больше длительности медиа файла
OpenLP.ThemeForm
-
+
Select Image
-
+ Выбрать изображение
-
+
Theme Name Missing
-
+ Название темы отсутствует
-
+
There is no name for this theme. Please enter one.
-
+ Не указано название темы. Укажите его.
-
+
Theme Name Invalid
-
+ Название темы неправильное
-
+
Invalid theme name. Please enter one.
-
+ Наверное название темы. Исправьте его.
-
+
(approximately %d lines per slide)
-
+ (приблизительно %d строк на слайд)
@@ -3727,188 +3842,189 @@ The content encoding is not UTF-8.
Create a new theme.
-
+ Создать новую тему.
Edit Theme
-
+ Изменить Тему
Edit a theme.
-
+ Изменить тему.
Delete Theme
-
+ Удалить Тему.
Delete a theme.
-
+ Удаляет тему.
Import Theme
-
+ Импортировать Тему.
Import a theme.
-
+ Импортирует тему.
Export Theme
-
+ Экспортировать Тему
Export a theme.
-
+ Экспортирует тему.
&Edit Theme
-
+ &Изменить Тему
&Copy Theme
-
+ &Скопировать Тему
&Rename Theme
-
+ &Переименовать Тему
&Delete Theme
-
+ &Удалить Тему
Set As &Global Default
-
+ Установить &по-умолчания для всех
&Export Theme
-
+ &Экспортировать Тему
%s (default)
-
+ %s (по-умолчанию)
You must select a theme to rename.
-
+ Вы должны выбрать тему для переименования.
Rename Confirmation
-
+ Подтверждения переименования
Rename %s theme?
-
+ Переименовать тему %s?
You must select a theme to edit.
-
+ Вы должны выбрать тему для редактирования.
You must select a theme to delete.
-
+ Вы должны выбрать тему для удаления.
Delete Confirmation
-
+ Подтверждение удаления
Delete %s theme?
-
+ Удалить тему %s?
You have not selected a theme.
-
+ Вы не выбрали тему.
Save Theme - (%s)
-
+ Сохранить Тему - (%s)
Theme Exported
-
+ Тема экспортирована.
Your theme has been successfully exported.
-
+ Ваша тема была успешна экспортирована.
Theme Export Failed
-
+ Экспорт темы провалился.
Your theme could not be exported due to an error.
-
+ Ваша тема не может быть экспортирована из-за ошибки.
Select Theme Import File
-
+ Выберите файл темы для импорта
File is not a valid theme.
The content encoding is not UTF-8.
-
+ Файл темы не верный.
+Содержимое контента не похоже на UTF-8.
-
+
Validation Error
-
+ Ошибка Проверки
File is not a valid theme.
-
+ Файл не является темой.
A theme with this name already exists.
-
+ Тема с подобным именем уже существует.
-
+
You are unable to delete the default theme.
-
+ Вы не можете удалить тему назначенную по умолчанию.
-
+
Theme %s is used in the %s plugin.
-
+ Тема %s используется в плагине %s.
OpenLP Themes (*.theme *.otz)
-
+ Тема OpenLP (*.theme *.otz)
@@ -3920,255 +4036,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Edit Theme - %s
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Жирный
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Transitions:
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
&Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Цвет фона:
+
OpenLP.ThemesTab
@@ -4529,7 +4650,7 @@ The content encoding is not UTF-8.
Готов.
-
+
Starting import...
Начинаю импорт...
@@ -4609,7 +4730,7 @@ The content encoding is not UTF-8.
Default
-
+ По-умолчанию
@@ -4987,7 +5108,7 @@ The content encoding is not UTF-8.
Go Live
-
+ Показать
@@ -4997,7 +5118,7 @@ The content encoding is not UTF-8.
Options
-
+ Опции
@@ -5036,126 +5157,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
&Отслеживание использования песен
-
+
&Delete Tracking Data
&Удалить данные отслеживания
-
+
Delete song usage data up to a specified date.
Удалить данные использования песен до указанной даты.
-
+
&Extract Tracking Data
&Извлечь данные использования
-
+
Generate a report on song usage.
Отчет по использованию песен.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
<strong>Плагин Использования песен</strong><br />Этот плагин отслеживает использование песен в служениях.
-
+
SongUsage
name singular
Использование песен
-
+
SongUsage
name plural
Использование песен
-
+
SongUsage
container title
Использование песен
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
Удалить данные использования песен
-
+
Delete Selected Song Usage Events?
Удалить выбранное событие использования песни?
-
+
Are you sure you want to delete selected Song Usage data?
Вы уверены, что хотите удалить выбранные данные использования песен?
-
+
Deletion Successful
Успешно удалено
-
+
All requested data has been deleted successfully.
Все запросы были успешно удалены.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
-
+
Select Date Range
-
+
to
-
+
Report Location
@@ -5170,12 +5306,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -5195,82 +5331,82 @@ has been successfully created.
SongsPlugin
-
+
Arabic (CP-1256)
Arabic (CP-1256)
-
+
Baltic (CP-1257)
Baltic (CP-1257)
-
+
Central European (CP-1250)
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
Greek (CP-1253)
-
+
Hebrew (CP-1255)
Hebrew (CP-1255)
-
+
Japanese (CP-932)
Japanese (CP-932)
-
+
Korean (CP-949)
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
Vietnam (CP-1258)
-
+
Western European (CP-1252)
Western European (CP-1252)
-
+
Character Encoding
Кодировка символов
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
@@ -5280,92 +5416,92 @@ Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
Пожалуйста, выберите кодировку символов.
Кодировка ответственна за корректное отображение символов.
-
+
&Song
&Песня
-
+
Import songs using the import wizard.
Импортировать песни используя мастер импорта.
-
+
&Re-index Songs
&Переиндексировать песни
-
+
Re-index the songs database to improve searching and ordering.
Переиндексировать песни, чтобы улучшить поиск и сортировку.
-
+
Reindexing songs...
Индексация песен...
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
<strong>Плагин Песен</strong><br />Плагин песен обеспечивает возможность отображения и управления песнями.
-
+
Song
name singular
Песня
-
+
Songs
name plural
ПесниПсалмы
-
+
Songs
container title
Псалмы
-
+
Exports songs using the export wizard.
Экспортировать песни используя мастер экспорта.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5647,7 +5783,7 @@ The encoding is responsible for the correct character representation.
This wizard will help to export your songs to the open and free OpenLyrics worship song format.
- Этот мастер поможет вам экспортировать песни в открытый и свободный формат OpenLyrics.
+ Этот мастер поможет вам экспортировать песни в открытый и свободный формат OpenLyrics.
@@ -5710,7 +5846,7 @@ The encoding is responsible for the correct character representation.
Вы должны указать папку.
-
+
Select Destination Folder
Выберите целевую папку
@@ -5719,6 +5855,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -5810,7 +5951,7 @@ The encoding is responsible for the correct character representation.
Copy
-
+ Копировать
@@ -5926,13 +6067,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts
index 3940470cb..b337a7acc 100644
--- a/resources/i18n/sv.ts
+++ b/resources/i18n/sv.ts
@@ -781,17 +781,17 @@ demand and thus an internet connection is required.
Du kan inte kombinera sökresultat från en bibel och två biblar. Vill du ta bort dina sökresultat och starta en ny sökning?
-
+
Bible not fully loaded.
Bibeln är inte helt laddad.
-
+
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1154,24 +1154,24 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
Bild
-
+
Images
name plural
Bilder
-
+
Images
container title
Bilder
@@ -1202,37 +1202,37 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Förhandsgranska den valda bilden.
-
+
Load a new image.
-
+
Add a new image.
-
+
Edit the selected image.
-
+
Delete the selected image.
-
+
Preview the selected image.
-
+
Send the selected image live.
-
+
Add the selected image to the service.
@@ -1258,38 +1258,56 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Du måste välja en bild som skall tas bort.
-
+
You must select an image to replace the background with.
Du måste välja en bild att ersätta bakgrundsbilden med.
-
+
Missing Image(s)
Bild(er) saknas
-
+
The following image(s) no longer exist: %s
Följande bild(er) finns inte längre: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
Följande bild(er) finns inte längre: %s
Vill du lägga till dom andra bilderna ändå?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
Det uppstod ett problem med att ersätta din bakgrund, bildfilen "%s" finns inte längre.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2274,309 +2292,309 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
&Fil
-
+
&Import
&Importera
-
+
&Export
&Exportera
-
+
&View
&Visa
-
+
M&ode
&Läge
-
+
&Tools
&Verktyg
-
+
&Settings
&Inställningar
-
+
&Language
&Språk
-
+
&Help
&Hjälp
-
+
Media Manager
Mediahanterare
-
+
Service Manager
Planeringshanterare
-
+
Theme Manager
Temahanterare
-
+
&New
&Ny
-
+
&Open
&Öppna
-
+
Open an existing service.
Öppna en befintlig planering.
-
+
&Save
&Spara
-
+
Save the current service to disk.
Spara den aktuella planeringen till disk.
-
+
Save &As...
S¶ som...
-
+
Save Service As
Spara planering som
-
+
Save the current service under a new name.
Spara den aktuella planeringen under ett nytt namn.
-
+
E&xit
&Avsluta
-
+
Quit OpenLP
Avsluta OpenLP
-
+
&Theme
&Tema
-
+
&Configure OpenLP...
&Konfigurera OpenLP...
-
+
&Media Manager
&Mediahanterare
-
+
Toggle Media Manager
Växla mediahanterare
-
+
Toggle the visibility of the media manager.
Växla synligheten för mediahanteraren.
-
+
&Theme Manager
&Temahanterare
-
+
Toggle Theme Manager
Växla temahanteraren
-
+
Toggle the visibility of the theme manager.
Växla synligheten för temahanteraren.
-
+
&Service Manager
&Planeringshanterare
-
+
Toggle Service Manager
Växla planeringshanterare
-
+
Toggle the visibility of the service manager.
Växla synligheten för planeringshanteraren.
-
+
&Preview Panel
&Förhandsgranskningpanel
-
+
Toggle Preview Panel
Växla förhandsgranskningspanel
-
+
Toggle the visibility of the preview panel.
Växla synligheten för förhandsgranskningspanelen.
-
+
&Live Panel
-
+
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
-
+
&Plugin List
&Pluginlista
-
+
List the Plugins
Lista pluginen
-
+
&User Guide
&Användarguide
-
+
&About
&Om
-
+
More information about OpenLP
Mer information om OpenLP
-
+
&Online Help
&Hjälp online
-
+
&Web Site
&Webbsida
-
+
Use the system language, if available.
Använd systemspråket om möjligt.
-
+
Set the interface language to %s
Sätt användargränssnittets språk till %s
-
+
Add &Tool...
Lägg till &verktyg...
-
+
Add an application to the list of tools.
Lägg till en applikation i verktygslistan.
-
+
&Default
&Standard
-
+
Set the view mode back to the default.
-
+
&Setup
-
+
Set the view mode to Setup.
-
+
&Live
&Live
-
+
Set the view mode to Live.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
-
+
OpenLP Version Updated
OpenLP-versionen uppdaterad
-
+
OpenLP Main Display Blanked
OpenLPs huvuddisplay rensad
-
+
The Main Display has been blanked out
Huvuddisplayen har rensats
-
+
Default Theme: %s
Standardtema: %s
@@ -2587,103 +2605,184 @@ You can download the latest version from http://openlp.org/.
Svenska
-
+
Configure &Shortcuts...
-
+
Close OpenLP
-
+
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
-
+
&Autodetect
-
+
Update Theme Images
-
+
Update the preview images for all themes.
-
+
Print the current service.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -2755,7 +2854,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -2914,12 +3013,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -3015,13 +3114,13 @@ Suffix not supported
&Byt objektets tema
-
+
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
@@ -3066,7 +3165,7 @@ The content encoding is not UTF-8.
-
+
OpenLP Service Files (*.osz)
@@ -3096,7 +3195,7 @@ The content encoding is not UTF-8.
-
+
Modified Service
@@ -3116,27 +3215,27 @@ The content encoding is not UTF-8.
-
+
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
-
+
Empty File
-
+
This service file does not contain any data.
-
+
Corrupt File
@@ -3176,22 +3275,22 @@ The content encoding is not UTF-8.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3447,32 +3546,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
Välj bild
-
+
Theme Name Missing
Temanamn saknas
-
+
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
@@ -3550,7 +3649,7 @@ The content encoding is not UTF-8.
-
+
You are unable to delete the default theme.
Du kan inte ta bort standardtemat.
@@ -3601,7 +3700,7 @@ The content encoding is not UTF-8.
Filen är inte ett giltigt tema.
-
+
Theme %s is used in the %s plugin.
@@ -3651,7 +3750,7 @@ The content encoding is not UTF-8.
-
+
Validation Error
@@ -3675,255 +3774,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Solid färg
-
+
Gradient
Stegvis
-
+
Color:
Färg:
-
+
Gradient:
Stegvis:
-
+
Horizontal
Horisontal
-
+
Vertical
Vertikal
-
+
Circular
Cirkulär
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Typsnitt:
-
+
Size:
Storlek:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Fetstil
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Vänster
-
+
Right
Höger
-
+
Center
Centrera
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X-position:
-
+
px
px
-
+
Y position:
Y-position:
-
+
Width:
Bredd:
-
+
Height:
Höjd:
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
-
+
&Footer Area
-
+
Edit Theme - %s
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+ Bakgrundsfärg:
+
OpenLP.ThemesTab
@@ -4284,7 +4388,7 @@ The content encoding is not UTF-8.
-
+
Starting import...
@@ -4791,126 +4895,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
-
+
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
-
+
Generate a report on song usage.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
-
+
SongUsage
name plural
-
+
SongUsage
container title
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
Ta bort valda sånganvändningsdata?
-
+
Are you sure you want to delete selected Song Usage data?
Vill du verkligen ta bort vald sånganvändningsdata?
-
+
Deletion Successful
-
+
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
Sånganvändningsutdrag
-
+
Select Date Range
Välj datumspann
-
+
to
till
-
+
Report Location
Rapportera placering
@@ -4925,12 +5044,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -4950,173 +5069,173 @@ has been successfully created.
SongsPlugin
-
+
&Song
&Sång
-
+
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
-
+
Song
name singular
Sång
-
+
Songs
name plural
Sånger
-
+
Songs
container title
Sånger
-
+
Arabic (CP-1256)
-
+
Baltic (CP-1257)
-
+
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
-
+
Hebrew (CP-1255)
-
+
Japanese (CP-932)
-
+
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
-
+
Western European (CP-1252)
-
+
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Exports songs using the export wizard.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5395,11 +5514,6 @@ The encoding is responsible for the correct character representation.
Song Export Wizard
-
-
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
-
-
Select Songs
@@ -5461,7 +5575,7 @@ The encoding is responsible for the correct character representation.
-
+
Select Destination Folder
@@ -5470,6 +5584,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -5671,13 +5790,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts
index 690dd8753..a026043bf 100644
--- a/resources/i18n/zh_CN.ts
+++ b/resources/i18n/zh_CN.ts
@@ -695,17 +695,17 @@ demand and thus an internet connection is required.
-
+
Bible not fully loaded.
-
+
Information
-
+
The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.
@@ -1032,60 +1032,60 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
ImagePlugin
-
+
<strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.
-
+
Image
name singular
-
+
Images
name plural
-
+
Images
container title
-
+
Load a new image.
-
+
Add a new image.
-
+
Edit the selected image.
-
+
Delete the selected image.
-
+
Preview the selected image.
-
+
Send the selected image live.
-
+
Add the selected image to the service.
@@ -1111,37 +1111,55 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
+
You must select an image to replace the background with.
-
+
Missing Image(s)
-
+
The following image(s) no longer exist: %s
-
+
The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+
There was a problem replacing your background, the image file "%s" no longer exists.
-
+
There was no display item to amend.
+
+ ImagesPlugin.ImageTab
+
+
+ Background Color
+
+
+
+
+ Default Color:
+
+
+
+
+ Provides border where image is not the correct dimensions for the screen when resized.
+
+
+
MediaPlugin
@@ -2126,309 +2144,309 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainWindow
-
+
&File
-
+
&Import
-
+
&Export
-
+
&View
-
+
M&ode
-
+
&Tools
-
+
&Settings
-
+
&Language
-
+
&Help
-
+
Media Manager
-
+
Service Manager
-
+
Theme Manager
-
+
&New
-
+
&Open
-
+
Open an existing service.
-
+
&Save
-
+
Save the current service to disk.
-
+
Save &As...
-
+
Save Service As
-
+
Save the current service under a new name.
-
+
E&xit
-
+
Quit OpenLP
-
+
&Theme
-
+
&Configure OpenLP...
-
+
&Media Manager
-
+
Toggle Media Manager
-
+
Toggle the visibility of the media manager.
-
+
&Theme Manager
-
+
Toggle Theme Manager
-
+
Toggle the visibility of the theme manager.
-
+
&Service Manager
-
+
Toggle Service Manager
-
+
Toggle the visibility of the service manager.
-
+
&Preview Panel
-
+
Toggle Preview Panel
-
+
Toggle the visibility of the preview panel.
-
+
&Live Panel
-
+
Toggle Live Panel
-
+
Toggle the visibility of the live panel.
-
+
&Plugin List
-
+
List the Plugins
-
+
&User Guide
-
+
&About
-
+
More information about OpenLP
-
+
&Online Help
-
+
&Web Site
-
+
Use the system language, if available.
-
+
Set the interface language to %s
-
+
Add &Tool...
-
+
Add an application to the list of tools.
-
+
&Default
-
+
Set the view mode back to the default.
-
+
&Setup
-
+
Set the view mode to Setup.
-
+
&Live
-
+
Set the view mode to Live.
-
+
Version %s of OpenLP is now available for download (you are currently running version %s).
You can download the latest version from http://openlp.org/.
-
+
OpenLP Version Updated
-
+
OpenLP Main Display Blanked
-
+
The Main Display has been blanked out
-
+
Default Theme: %s
@@ -2439,103 +2457,184 @@ You can download the latest version from http://openlp.org/.
中国
-
+
Configure &Shortcuts...
-
+
Close OpenLP
-
+
Are you sure you want to close OpenLP?
-
+
Open &Data Folder...
-
+
Open the folder where songs, bibles and other data resides.
-
+
&Autodetect
-
+
Update Theme Images
-
+
Update the preview images for all themes.
-
+
Print the current service.
-
+
L&ock Panels
-
+
Prevent the panels being moved.
-
+
Re-run First Time Wizard
-
+
Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
Re-run First Time Wizard?
-
+
Are you sure you want to re-run the First Time Wizard?
Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+
&Recent Files
-
- &Configure Formatting Tags...
-
-
-
-
+
Clear List
Clear List of recent files
-
+
Clear the list of recent files.
+
+
+ Configure &Formatting Tags...
+
+
+
+
+ Export OpenLP settings to a specified *.config file
+
+
+
+
+ Settings
+
+
+
+
+ Import OpenLP settings from a specified *.config file previously exported on this or another machine
+
+
+
+
+ Import settings?
+
+
+
+
+ Are you sure you want to import settings?
+
+Importing settings will make permanent changes to your current OpenLP configuration.
+
+Importing incorrect settings may cause erratic behaviour or OpenLP to terminate abnormally.
+
+
+
+
+ Open File
+
+
+
+
+ OpenLP Export Settings Files (*.conf)
+
+
+
+
+ Import settings
+
+
+
+
+ OpenLP will now close. Imported settings will be applied the next time you start OpenLP.
+
+
+
+
+ Export Settings File
+
+
+
+
+ OpenLP Export Settings File (*.conf)
+
+
+
+
+ OpenLP.Manager
+
+
+ Database Error
+
+
+
+
+ The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
+
+Database: %s
+
+
+
+
+ OpenLP cannot load your database.
+
+Database: %s
+
+
OpenLP.MediaManagerItem
@@ -2607,7 +2706,7 @@ Suffix not supported
- Duplicate files found on import and ignored.
+ Duplicate files were found on import and were ignored.
@@ -2761,12 +2860,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
<strong>Start</strong>: %s
-
+
<strong>Length</strong>: %s
@@ -2862,18 +2961,18 @@ Suffix not supported
-
+
OpenLP Service Files (*.osz)
-
+
File is not a valid service.
The content encoding is not UTF-8.
-
+
File is not a valid service.
@@ -2958,32 +3057,32 @@ The content encoding is not UTF-8.
-
+
Modified Service
-
+
The current service has been modified. Would you like to save this service?
-
+
File could not be opened because it is corrupt.
-
+
Empty File
-
+
This service file does not contain any data.
-
+
Corrupt File
@@ -3023,22 +3122,22 @@ The content encoding is not UTF-8.
-
+
This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
Slide theme
-
+
Notes
-
+
Service File Missing
@@ -3294,32 +3393,32 @@ The content encoding is not UTF-8.
OpenLP.ThemeForm
-
+
Select Image
-
+
Theme Name Missing
-
+
There is no name for this theme. Please enter one.
-
+
Theme Name Invalid
-
+
Invalid theme name. Please enter one.
-
+
(approximately %d lines per slide)
@@ -3397,12 +3496,12 @@ The content encoding is not UTF-8.
-
+
You are unable to delete the default theme.
-
+
Theme %s is used in the %s plugin.
@@ -3498,7 +3597,7 @@ The content encoding is not UTF-8.
-
+
Validation Error
@@ -3522,255 +3621,260 @@ The content encoding is not UTF-8.
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
Edit Theme - %s
-
+
This wizard will help you to create and edit your themes. Click the next button below to start the process by setting up your background.
-
+
Transitions:
-
+
&Footer Area
-
+
Starting color:
-
+
Ending color:
+
+
+ Background color:
+
+
OpenLP.ThemesTab
@@ -4126,7 +4230,7 @@ The content encoding is not UTF-8.
-
+
Starting import...
@@ -4633,126 +4737,141 @@ The content encoding is not UTF-8.
SongUsagePlugin
-
+
&Song Usage Tracking
-
+
&Delete Tracking Data
-
+
Delete song usage data up to a specified date.
-
+
&Extract Tracking Data
-
+
Generate a report on song usage.
-
+
Toggle Tracking
-
+
Toggle the tracking of song usage.
-
+
<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.
-
+
SongUsage
name singular
-
+
SongUsage
name plural
-
+
SongUsage
container title
-
+
Song Usage
-
+
Song usage tracking is active.
-
+
Song usage tracking is inactive.
+
+
+ display
+
+
+
+
+ printed
+
+
SongUsagePlugin.SongUsageDeleteForm
-
+
Delete Song Usage Data
-
+
Delete Selected Song Usage Events?
-
+
Are you sure you want to delete selected Song Usage data?
-
+
Deletion Successful
-
+
All requested data has been deleted successfully.
+
+
+ Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.
+
+
SongUsagePlugin.SongUsageDetailForm
-
+
Song Usage Extraction
-
+
Select Date Range
-
+
to
-
+
Report Location
@@ -4767,12 +4886,12 @@ The content encoding is not UTF-8.
-
+
Report Creation
-
+
Report
%s
has been successfully created.
@@ -4792,173 +4911,173 @@ has been successfully created.
SongsPlugin
-
+
&Song
-
+
Import songs using the import wizard.
-
+
<strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs.
-
+
&Re-index Songs
-
+
Re-index the songs database to improve searching and ordering.
-
+
Reindexing songs...
-
+
Arabic (CP-1256)
-
+
Baltic (CP-1257)
-
+
Central European (CP-1250)
-
+
Cyrillic (CP-1251)
-
+
Greek (CP-1253)
-
+
Hebrew (CP-1255)
-
+
Japanese (CP-932)
-
+
Korean (CP-949)
-
+
Simplified Chinese (CP-936)
-
+
Thai (CP-874)
-
+
Traditional Chinese (CP-950)
-
+
Turkish (CP-1254)
-
+
Vietnam (CP-1258)
-
+
Western European (CP-1252)
-
+
Character Encoding
-
+
The codepage setting is responsible
for the correct character representation.
Usually you are fine with the preselected choice.
-
+
Please choose the character encoding.
The encoding is responsible for the correct character representation.
-
+
Song
name singular
-
+
Songs
name plural
-
+
Songs
container title
-
+
Exports songs using the export wizard.
-
+
Add a new song.
-
+
Edit the selected song.
-
+
Delete the selected song.
-
+
Preview the selected song.
-
+
Send the selected song live.
-
+
Add the selected song to the service.
@@ -5237,11 +5356,6 @@ The encoding is responsible for the correct character representation.
Song Export Wizard
-
-
- This wizard will help to export your songs to the open and free OpenLyrics worship song format.
-
-
Select Songs
@@ -5303,7 +5417,7 @@ The encoding is responsible for the correct character representation.
-
+
Select Destination Folder
@@ -5312,6 +5426,11 @@ The encoding is responsible for the correct character representation.
Select the directory where you want the songs to be saved.
+
+
+ This wizard will help to export your songs to the open and free <strong>OpenLyrics</strong> worship song format.
+
+
SongsPlugin.ImportWizardForm
@@ -5512,13 +5631,13 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongExportForm
-
- Finished export.
+
+ Your song export failed.
-
- Your song export failed.
+
+ Finished export. To import these files use the <strong>OpenLyrics</strong> importer.
diff --git a/scripts/check_dependencies.py b/scripts/check_dependencies.py
index 7048ceeab..14d27fb81 100755
--- a/scripts/check_dependencies.py
+++ b/scripts/check_dependencies.py
@@ -46,14 +46,14 @@ VERS = {
'sqlalchemy': '0.5',
# pyenchant 1.6 required on Windows
'enchant': '1.6' if is_win else '1.3'
- }
+}
# pywin32
WIN32_MODULES = [
'win32com',
'win32ui',
'pywintypes',
- ]
+]
MODULES = [
'PyQt4',
@@ -72,13 +72,15 @@ MODULES = [
'enchant',
'BeautifulSoup',
'mako',
- ]
+ 'migrate',
+]
OPTIONAL_MODULES = [
('sqlite', ' (SQLite 2 support)'),
('MySQLdb', ' (MySQL support)'),
('psycopg2', ' (PostgreSQL support)'),
+ ('pytest', ' (testing framework)'),
]
w = sys.stdout.write
diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py
index db1788aba..935ef97e8 100755
--- a/scripts/translation_utils.py
+++ b/scripts/translation_utils.py
@@ -186,25 +186,6 @@ def update_export_at_pootle(source_filename):
page = urllib.urlopen(REVIEW_URL)
page.close()
-
-def download_file(source_filename, dest_filename):
- """
- Download a file and save it to disk.
-
- ``source_filename``
- The file to download.
-
- ``dest_filename``
- The new local file name.
- """
- print_verbose(u'Downloading from: %s' % (SERVER_URL + source_filename))
- page = urllib.urlopen(SERVER_URL + source_filename)
- content = page.read().decode('utf8')
- page.close()
- file = open(dest_filename, u'w')
- file.write(content.encode('utf8'))
- file.close()
-
def download_translations():
"""
This method downloads the translation files from the Pootle server.
@@ -219,7 +200,7 @@ def download_translations():
filename = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n',
language_file)
print_verbose(u'Get Translation File: %s' % filename)
- download_file(language_file, filename)
+ urllib.urlretrieve(SERVER_URL + language_file, filename)
print_quiet(u' Done.')
def prepare_project():
@@ -304,7 +285,7 @@ def create_translation(language):
if not language.endswith(u'.ts'):
language += u'.ts'
filename = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n', language)
- download_file(u'en.ts', filename)
+ urllib.urlretrieve(SERVER_URL + u'en.ts', filename)
print_quiet(u' ** Please Note **')
print_quiet(u' In order to get this file into OpenLP and onto the '
u'Pootle translation server you will need to subscribe to the '
diff --git a/testing/conftest.py b/testing/conftest.py
new file mode 100644
index 000000000..f38018c17
--- /dev/null
+++ b/testing/conftest.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+"""
+Configuration file for pytest framework.
+"""
+
+from openlp.core import main as openlp_main
+
+
+# Test function argument to make openlp gui instance persistent for all tests.
+# All test cases have to access the same instance. To allow create multiple
+# instances it would be necessary use diffrent configuraion and data files.
+# Created instance will use your OpenLP settings.
+def pytest_funcarg__openlpapp(request):
+ def setup():
+ return openlp_main(['--testing'])
+ def teardown(app):
+ pass
+ return request.cached_setup(setup=setup, teardown=teardown, scope='session')
diff --git a/testing/run.py b/testing/run.py
new file mode 100755
index 000000000..1f0f54858
--- /dev/null
+++ b/testing/run.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+"""
+This script is used to run set of automated tests of OpenLP. To start tests,
+simply run this script::
+
+ @:~$ ./run.py
+
+"""
+
+import os.path
+import sys
+
+TESTS_PATH = os.path.dirname(os.path.abspath(__file__))
+SRC_PATH = os.path.join(TESTS_PATH, '..')
+
+PYTEST_OPTIONS = [TESTS_PATH]
+
+# Extend python PATH with openlp source
+sys.path.insert(0, SRC_PATH)
+
+# Python testing framework
+# http://pytest.org
+import pytest
+
+
+def main():
+ print 'pytest options:', PYTEST_OPTIONS
+ pytest.main(PYTEST_OPTIONS)
+
+
+if __name__ == u'__main__':
+ main()
diff --git a/testing/test_app.py b/testing/test_app.py
new file mode 100644
index 000000000..00cd744ba
--- /dev/null
+++ b/testing/test_app.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# 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; version 2 of the License. #
+# #
+# 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 this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+from openlp.core import OpenLP
+from openlp.core.ui.mainwindow import MainWindow
+
+
+def test_start_app(openlpapp):
+ assert type(openlpapp) == OpenLP
+ assert type(openlpapp.mainWindow) == MainWindow
+ assert unicode(openlpapp.mainWindow.windowTitle()) == u'OpenLP 2.0'