diff -Nru openlp-2.4.5/CHANGELOG.rst openlp-2.4.6/CHANGELOG.rst --- openlp-2.4.5/CHANGELOG.rst 1970-01-01 00:00:00.000000000 +0000 +++ openlp-2.4.6/CHANGELOG.rst 2017-03-31 18:33:35.000000000 +0000 @@ -0,0 +1,12 @@ +OpenLP 2.4.6 +============ + +* Fix a bug where the author type upgrade was being ignore because it was looking at the wrong table +* Fix a bug where the songs_songbooks table was not being created because the if expression was the wrong way round +* Change the songs_songbooks migration SQL slightly to take into account a bug that has (hopefully) been fixed +* Sometimes the timer goes off as OpenLP is shutting down, and the application has already been deleted (reported via support system) +* Fix opening the data folder (KDE thought the old way was an SMB share) +* Fix a problem with the new QMediaPlayer not controlling the playlist anymore +* Add importing of author types to the OpenLP 2 song importer +* Fix a problem with loading Qt's translation files, bug #1676163 +* Disable the controls in the shortcut dialog unless a shortcut is actually selected diff -Nru openlp-2.4.5/debian/changelog openlp-2.4.6/debian/changelog --- openlp-2.4.5/debian/changelog 2017-02-14 21:41:05.000000000 +0000 +++ openlp-2.4.6/debian/changelog 2017-06-03 06:05:37.000000000 +0000 @@ -1,8 +1,15 @@ -openlp (2.4.5-1~17.04) zesty; urgency=medium +openlp (2.4.6-0ppa1~17.04) zesty; urgency=medium * No-change backport to zesty - -- Unit 193 Tue, 14 Feb 2017 16:41:05 -0500 + -- Unit 193 Sat, 03 Jun 2017 02:05:37 -0400 + +openlp (2.4.6-0ppa1) devel; urgency=medium + + * New upstream release. + * d/copyright: Update copyright information for vlc.py and jquery paths. + + -- Unit 193 Sat, 03 Jun 2017 01:46:53 -0400 openlp (2.4.5-1) experimental; urgency=low diff -Nru openlp-2.4.5/debian/copyright openlp-2.4.6/debian/copyright --- openlp-2.4.5/debian/copyright 2017-02-04 03:55:02.000000000 +0000 +++ openlp-2.4.6/debian/copyright 2017-06-03 05:54:46.000000000 +0000 @@ -7,6 +7,10 @@ Copyright: 2004-2016 OpenLP Developers, http://openlp.org/ License: GPL-2 +Files: openlp/core/ui/media/vendor/vlc.py +Copyright: 2009-2012 the VideoLAN team +License: LGPL-2.1+ + Files: tests/resources/* Copyright: Public Domain License: public-domain @@ -17,8 +21,7 @@ openlp/plugins/remotes/html/jquery.mobile.js openlp/plugins/remotes/html/jquery.mobile.min.js openlp/plugins/remotes/html/jquery.mobile.min.css - openlp/plugins/remotes/html/jquery.migrate.js - openlp/plugins/remotes/html/jquery.migrate.min.js + openlp/plugins/remotes/html/jquery-migrate.min.js Copyright: jQuery Foundation and other contributors, https://jquery.org/ License: Expat or GPL-2 @@ -79,6 +82,24 @@ On Debian GNU/Linux systems, the complete text of the GNU Library General Public License can be found in `/usr/share/common-licenses/LGPL-2' +License: LGPL-2.1+ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1, or (at your option) + any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + . + On Debian systems, the complete text of the GNU Lesser General Public + License version 2.1 can be found in ‘/usr/share/common-licenses/LGPL-2.1’. + License: Expat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff -Nru openlp-2.4.5/openlp/core/__init__.py openlp-2.4.6/openlp/core/__init__.py --- openlp-2.4.5/openlp/core/__init__.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/__init__.py 2017-03-31 18:33:35.000000000 +0000 @@ -317,7 +317,7 @@ return QtWidgets.QApplication.event(self, event) -def parse_options(args): +def parse_options(args=None): """ Parse the command line arguments @@ -426,13 +426,12 @@ sys.exit() # i18n Set Language language = LanguageManager.get_language() - application_translator, default_translator = LanguageManager.get_translator(language) - if not application_translator.isEmpty(): - application.installTranslator(application_translator) - if not default_translator.isEmpty(): - application.installTranslator(default_translator) - else: - log.debug('Could not find default_translator.') + translators = LanguageManager.get_translator(language) + for translator in translators: + if not translator.isEmpty(): + application.installTranslator(translator) + if not translators: + log.debug('Could not find translators.') if args and not args.no_error_form: sys.excepthook = application.hook_exception sys.exit(application.run(qt_args)) diff -Nru openlp-2.4.5/openlp/core/ui/maindisplay.py openlp-2.4.6/openlp/core/ui/maindisplay.py --- openlp-2.4.5/openlp/core/ui/maindisplay.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/ui/maindisplay.py 2017-03-31 18:33:35.000000000 +0000 @@ -672,7 +672,7 @@ """ Skip forward to the next track in the list """ - self.player.next() + self.playlist.next() def go_to(self, index): """ diff -Nru openlp-2.4.5/openlp/core/ui/mainwindow.py openlp-2.4.6/openlp/core/ui/mainwindow.py --- openlp-2.4.5/openlp/core/ui/mainwindow.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/ui/mainwindow.py 2017-03-31 18:33:35.000000000 +0000 @@ -796,7 +796,7 @@ Open data folder """ path = AppLocation.get_data_path() - QtGui.QDesktopServices.openUrl(QtCore.QUrl("file:///" + path)) + QtGui.QDesktopServices.openUrl(QtCore.QUrl.fromLocalFile(path)) def on_update_theme_images(self): """ @@ -1376,7 +1376,9 @@ if event.timerId() == self.timer_id: self.timer_id = 0 self.load_progress_bar.hide() - self.application.process_events() + # Sometimes the timer goes off as OpenLP is shutting down, and the application has already been deleted + if self.application: + self.application.process_events() def set_new_data_path(self, new_data_path): """ diff -Nru openlp-2.4.5/openlp/core/ui/settingsdialog.py openlp-2.4.6/openlp/core/ui/settingsdialog.py --- openlp-2.4.5/openlp/core/ui/settingsdialog.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/ui/settingsdialog.py 2017-03-31 18:33:35.000000000 +0000 @@ -39,7 +39,7 @@ """ settings_dialog.setObjectName('settings_dialog') settings_dialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg')) - settings_dialog.resize(800, 700) + settings_dialog.resize(920, 625) self.dialog_layout = QtWidgets.QGridLayout(settings_dialog) self.dialog_layout.setObjectName('dialog_layout') self.dialog_layout.setContentsMargins(8, 8, 8, 8) diff -Nru openlp-2.4.5/openlp/core/ui/shortcutlistform.py openlp-2.4.6/openlp/core/ui/shortcutlistform.py --- openlp-2.4.5/openlp/core/ui/shortcutlistform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/ui/shortcutlistform.py 2017-03-31 18:33:35.000000000 +0000 @@ -49,6 +49,8 @@ self.changed_actions = {} self.action_list = ActionList.get_instance() self.dialog_was_shown = False + self.default_radio_button.setEnabled(False) + self.custom_radio_button.setEnabled(False) self.primary_push_button.toggled.connect(self.on_primary_push_button_clicked) self.alternate_push_button.toggled.connect(self.on_alternate_push_button_clicked) self.tree_widget.currentItemChanged.connect(self.on_current_item_changed) @@ -110,8 +112,89 @@ self.reload_shortcut_list() self._adjust_button(self.primary_push_button, False, False, '') self._adjust_button(self.alternate_push_button, False, False, '') + self._set_controls_enabled(False) return QtWidgets.QDialog.exec(self) + def _validiate_shortcut(self, changing_action, key_sequence): + """ + Checks if the given ``changing_action `` can use the given ``key_sequence``. Returns ``True`` if the + ``key_sequence`` can be used by the action, otherwise displays a dialog and returns ``False``. + + :param changing_action: The action which wants to use the ``key_sequence``. + :param key_sequence: The key sequence which the action want so use. + """ + is_valid = True + for category in self.action_list.categories: + for action in category.actions: + shortcuts = self._action_shortcuts(action) + if key_sequence not in shortcuts: + continue + if action is changing_action: + if self.primary_push_button.isChecked() and shortcuts.index(key_sequence) == 0: + continue + if self.alternate_push_button.isChecked() and shortcuts.index(key_sequence) == 1: + continue + # Have the same parent, thus they cannot have the same shortcut. + if action.parent() is changing_action.parent(): + is_valid = False + # The new shortcut is already assigned, but if both shortcuts are only valid in a different widget the + # new shortcut is valid, because they will not interfere. + if action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]: + is_valid = False + if changing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]: + is_valid = False + if not is_valid: + self.main_window.warning_message(translate('OpenLP.ShortcutListDialog', 'Duplicate Shortcut'), + translate('OpenLP.ShortcutListDialog', + 'The shortcut "%s" is already assigned to another action, please' + ' use a different shortcut.') % + self.get_shortcut_string(key_sequence, for_display=True)) + self.dialog_was_shown = True + return is_valid + + def _action_shortcuts(self, action): + """ + This returns the shortcuts for the given ``action``, which also includes those shortcuts which are not saved + yet but already assigned (as changes are applied when closing the dialog). + """ + if action in self.changed_actions: + return self.changed_actions[action] + return action.shortcuts() + + def _current_item_action(self, item=None): + """ + Returns the action of the given ``item``. If no item is given, we return the action of the current item of + the ``tree_widget``. + """ + if item is None: + item = self.tree_widget.currentItem() + if item is None: + return + return item.data(0, QtCore.Qt.UserRole) + + def _adjust_button(self, button, checked=None, enabled=None, text=None): + """ + Can be called to adjust more properties of the given ``button`` at once. + """ + # Set the text before checking the button, because this emits a signal. + if text is not None: + button.setText(text) + if checked is not None: + button.setChecked(checked) + if enabled is not None: + button.setEnabled(enabled) + + def _set_controls_enabled(self, is_enabled=False): + """ + Enable or disable the shortcut controls + """ + self.default_radio_button.setEnabled(is_enabled) + self.custom_radio_button.setEnabled(is_enabled) + self.primary_push_button.setEnabled(is_enabled) + self.alternate_push_button.setEnabled(is_enabled) + self.clear_primary_button.setEnabled(is_enabled) + self.clear_alternate_button.setEnabled(is_enabled) + def reload_shortcut_list(self): """ Reload the ``tree_widget`` list to add new and remove old actions. @@ -229,8 +312,7 @@ A item has been pressed. We adjust the button's text to the action's shortcut which is encapsulate in the item. """ action = self._current_item_action(item) - self.primary_push_button.setEnabled(action is not None) - self.alternate_push_button.setEnabled(action is not None) + self._set_controls_enabled(action is not None) primary_text = '' alternate_text = '' primary_label_text = '' @@ -244,7 +326,7 @@ if len(action.default_shortcuts) == 2: alternate_label_text = self.get_shortcut_string(action.default_shortcuts[1], for_display=True) shortcuts = self._action_shortcuts(action) - # We do not want to loose pending changes, that is why we have to keep the text when, this function has not + # We do not want to loose pending changes, that is why we have to keep the text when this function has not # been triggered by a signal. if item is None: primary_text = self.primary_push_button.text() @@ -254,7 +336,7 @@ elif len(shortcuts) == 2: primary_text = self.get_shortcut_string(shortcuts[0], for_display=True) alternate_text = self.get_shortcut_string(shortcuts[1], for_display=True) - # When we are capturing a new shortcut, we do not want, the buttons to display the current shortcut. + # When we are capturing a new shortcut, we do not want the buttons to display the current shortcut. if self.primary_push_button.isChecked(): primary_text = '' if self.alternate_push_button.isChecked(): @@ -396,75 +478,6 @@ self.refresh_shortcut_list() self.on_current_item_changed(self.tree_widget.currentItem()) - def _validiate_shortcut(self, changing_action, key_sequence): - """ - Checks if the given ``changing_action `` can use the given ``key_sequence``. Returns ``True`` if the - ``key_sequence`` can be used by the action, otherwise displays a dialog and returns ``False``. - - :param changing_action: The action which wants to use the ``key_sequence``. - :param key_sequence: The key sequence which the action want so use. - """ - is_valid = True - for category in self.action_list.categories: - for action in category.actions: - shortcuts = self._action_shortcuts(action) - if key_sequence not in shortcuts: - continue - if action is changing_action: - if self.primary_push_button.isChecked() and shortcuts.index(key_sequence) == 0: - continue - if self.alternate_push_button.isChecked() and shortcuts.index(key_sequence) == 1: - continue - # Have the same parent, thus they cannot have the same shortcut. - if action.parent() is changing_action.parent(): - is_valid = False - # The new shortcut is already assigned, but if both shortcuts are only valid in a different widget the - # new shortcut is valid, because they will not interfere. - if action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]: - is_valid = False - if changing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]: - is_valid = False - if not is_valid: - self.main_window.warning_message(translate('OpenLP.ShortcutListDialog', 'Duplicate Shortcut'), - translate('OpenLP.ShortcutListDialog', - 'The shortcut "%s" is already assigned to another action, please' - ' use a different shortcut.') % - self.get_shortcut_string(key_sequence, for_display=True)) - self.dialog_was_shown = True - return is_valid - - def _action_shortcuts(self, action): - """ - This returns the shortcuts for the given ``action``, which also includes those shortcuts which are not saved - yet but already assigned (as changes are applied when closing the dialog). - """ - if action in self.changed_actions: - return self.changed_actions[action] - return action.shortcuts() - - def _current_item_action(self, item=None): - """ - Returns the action of the given ``item``. If no item is given, we return the action of the current item of - the ``tree_widget``. - """ - if item is None: - item = self.tree_widget.currentItem() - if item is None: - return - return item.data(0, QtCore.Qt.UserRole) - - def _adjust_button(self, button, checked=None, enabled=None, text=None): - """ - Can be called to adjust more properties of the given ``button`` at once. - """ - # Set the text before checking the button, because this emits a signal. - if text is not None: - button.setText(text) - if checked is not None: - button.setChecked(checked) - if enabled is not None: - button.setEnabled(enabled) - @staticmethod def get_shortcut_string(shortcut, for_display=False): if for_display: diff -Nru openlp-2.4.5/openlp/core/ui/slidecontroller.py openlp-2.4.6/openlp/core/ui/slidecontroller.py --- openlp-2.4.5/openlp/core/ui/slidecontroller.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/ui/slidecontroller.py 2017-03-31 18:33:35.000000000 +0000 @@ -909,7 +909,9 @@ Registry().execute('%s_stop' % old_item.name.lower(), [old_item, self.is_live]) if old_item.is_media() and not self.service_item.is_media(): self.on_media_close() - Registry().execute('slidecontroller_%s_started' % self.type_prefix, [self.service_item]) + if self.is_live: + # This even is only registered for live + Registry().execute('slidecontroller_%s_started' % self.type_prefix, [self.service_item]) def on_slide_selected_index(self, message): """ diff -Nru openlp-2.4.5/openlp/core/utils/languagemanager.py openlp-2.4.6/openlp/core/utils/languagemanager.py --- openlp-2.4.5/openlp/core/utils/languagemanager.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/core/utils/languagemanager.py 2017-03-31 18:33:35.000000000 +0000 @@ -24,7 +24,6 @@ """ import logging import re -import sys from PyQt5 import QtCore, QtWidgets @@ -56,9 +55,12 @@ # A translator for buttons and other default strings provided by Qt. if not is_win() and not is_macosx(): lang_path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath) + # As of Qt5, the core translations come in 2 files per language default_translator = QtCore.QTranslator() default_translator.load('qt_%s' % language, lang_path) - return app_translator, default_translator + base_translator = QtCore.QTranslator() + base_translator.load('qtbase_%s' % language, lang_path) + return app_translator, default_translator, base_translator @staticmethod def find_qm_files(): @@ -69,7 +71,7 @@ trans_dir = QtCore.QDir(AppLocation.get_directory(AppLocation.LanguageDir)) file_names = trans_dir.entryList(['*.qm'], QtCore.QDir.Files, QtCore.QDir.Name) # Remove qm files from the list which start with "qt_". - file_names = [file_ for file_ in file_names if not file_.startswith('qt_')] + file_names = [file_ for file_ in file_names if not file_.startswith('qt_') or file_.startswith('qtbase_')] return list(map(trans_dir.filePath, file_names)) @staticmethod diff -Nru openlp-2.4.5/openlp/plugins/songs/forms/editsongform.py openlp-2.4.6/openlp/plugins/songs/forms/editsongform.py --- openlp-2.4.5/openlp/plugins/songs/forms/editsongform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/forms/editsongform.py 2017-03-31 18:33:35.000000000 +0000 @@ -31,7 +31,8 @@ from PyQt5 import QtCore, QtWidgets -from openlp.core.common import Registry, RegistryProperties, AppLocation, UiStrings, check_directory_exists, translate +from openlp.core.common import Registry, RegistryProperties, AppLocation, UiStrings, check_directory_exists, \ + translate, is_macosx from openlp.core.lib import FileDialog, PluginStatus, MediaType, create_separated_list from openlp.core.lib.ui import set_case_insensitive_completer, critical_error_message_box, find_and_set_in_combo_box from openlp.plugins.songs.lib import VerseType, clean_song @@ -118,7 +119,8 @@ cache.append(obj.name) combo.setItemData(row, obj.id) set_case_insensitive_completer(cache, combo) - combo.setEditText('') + combo.setCurrentIndex(-1) + combo.setCurrentText('') def _add_author_to_list(self, author, author_type): """ @@ -352,7 +354,8 @@ self.authors_combo_box.setItemData(row, author.id) self.authors.append(author.display_name) set_case_insensitive_completer(self.authors, self.authors_combo_box) - self.authors_combo_box.setEditText('') + self.authors_combo_box.setCurrentIndex(-1) + self.authors_combo_box.setCurrentText('') # Types self.author_types_combo_box.clear() @@ -382,7 +385,8 @@ self.themes = theme_list self.theme_combo_box.addItems(theme_list) set_case_insensitive_completer(self.themes, self.theme_combo_box) - self.theme_combo_box.setEditText('') + self.theme_combo_box.setCurrentIndex(-1) + self.theme_combo_box.setCurrentText('') def load_media_files(self): """ @@ -421,7 +425,8 @@ self.load_topics() self.load_songbooks() self.load_media_files() - self.theme_combo_box.setEditText('') + self.theme_combo_box.setCurrentIndex(-1) + self.theme_combo_box.setCurrentText('') # it's a new song to preview is not possible self.preview_button.setVisible(False) @@ -446,8 +451,8 @@ find_and_set_in_combo_box(self.theme_combo_box, str(self.song.theme_name)) else: # Clear the theme combo box in case it was previously set (bug #1212801) - self.theme_combo_box.setEditText('') - self.theme_combo_box.setCurrentIndex(0) + self.theme_combo_box.setCurrentIndex(-1) + self.theme_combo_box.setCurrentText('') self.copyright_edit.setText(self.song.copyright if self.song.copyright else '') self.comments_edit.setPlainText(self.song.comments if self.song.comments else '') self.ccli_number_edit.setText(self.song.ccli_number if self.song.ccli_number else '') @@ -550,12 +555,7 @@ item = int(self.authors_combo_box.currentIndex()) text = self.authors_combo_box.currentText().strip(' \r\n\t') author_type = self.author_types_combo_box.itemData(self.author_types_combo_box.currentIndex()) - # This if statement is for OS X, which doesn't seem to work well with - # the QCompleter auto-completion class. See bug #812628. - if text in self.authors: - # Index 0 is a blank string, so add 1 - item = self.authors.index(text) + 1 - if item == 0 and text: + if item == -1 and text: if QtWidgets.QMessageBox.question( self, translate('SongsPlugin.EditSongForm', 'Add Author'), @@ -570,10 +570,11 @@ self.manager.save_object(author) self._add_author_to_list(author, author_type) self.load_authors() - self.authors_combo_box.setEditText('') + self.authors_combo_box.setCurrentIndex(-1) + self.authors_combo_box.setCurrentText('') else: return - elif item > 0: + elif item >= 0: item_id = (self.authors_combo_box.itemData(item)) author = self.manager.get_object(Author, item_id) if self.authors_list_view.findItems(author.get_display_name(author_type), QtCore.Qt.MatchExactly): @@ -581,7 +582,8 @@ message=translate('SongsPlugin.EditSongForm', 'This author is already in the list.')) else: self._add_author_to_list(author, author_type) - self.authors_combo_box.setEditText('') + self.authors_combo_box.setCurrentIndex(-1) + self.authors_combo_box.setCurrentText('') else: QtWidgets.QMessageBox.warning( self, UiStrings().NISs, @@ -633,7 +635,7 @@ def on_topic_add_button_clicked(self): item = int(self.topics_combo_box.currentIndex()) text = self.topics_combo_box.currentText() - if item == 0 and text: + if item == -1 and text: if QtWidgets.QMessageBox.question( self, translate('SongsPlugin.EditSongForm', 'Add Topic'), translate('SongsPlugin.EditSongForm', 'This topic does not exist, do you want to add it?'), @@ -645,10 +647,11 @@ topic_item.setData(QtCore.Qt.UserRole, topic.id) self.topics_list_view.addItem(topic_item) self.load_topics() - self.topics_combo_box.setEditText('') + self.topics_combo_box.setCurrentIndex(-1) + self.topics_combo_box.setCurrentText('') else: return - elif item > 0: + elif item >= 0: item_id = (self.topics_combo_box.itemData(item)) topic = self.manager.get_object(Topic, item_id) if self.topics_list_view.findItems(str(topic.name), QtCore.Qt.MatchExactly): @@ -658,7 +661,8 @@ topic_item = QtWidgets.QListWidgetItem(str(topic.name)) topic_item.setData(QtCore.Qt.UserRole, topic.id) self.topics_list_view.addItem(topic_item) - self.topics_combo_box.setEditText('') + self.topics_combo_box.setCurrentIndex(-1) + self.topics_combo_box.setCurrentText('') else: QtWidgets.QMessageBox.warning( self, UiStrings().NISs, @@ -678,7 +682,7 @@ def on_songbook_add_button_clicked(self): item = int(self.songbooks_combo_box.currentIndex()) text = self.songbooks_combo_box.currentText() - if item == 0 and text: + if item == -1 and text: if QtWidgets.QMessageBox.question( self, translate('SongsPlugin.EditSongForm', 'Add Songbook'), translate('SongsPlugin.EditSongForm', 'This Songbook does not exist, do you want to add it?'), @@ -688,11 +692,12 @@ self.manager.save_object(songbook) self.add_songbook_entry_to_list(songbook.id, songbook.name, self.songbook_entry_edit.text()) self.load_songbooks() - self.songbooks_combo_box.setEditText('') + self.songbooks_combo_box.setCurrentIndex(-1) + self.songbooks_combo_box.setCurrentText('') self.songbook_entry_edit.clear() else: return - elif item > 0: + elif item >= 0: item_id = (self.songbooks_combo_box.itemData(item)) songbook = self.manager.get_object(Book, item_id) if self.songbooks_list_view.findItems(str(songbook.name), QtCore.Qt.MatchExactly): @@ -700,7 +705,8 @@ message=translate('SongsPlugin.EditSongForm', 'This Songbook is already in the list.')) else: self.add_songbook_entry_to_list(songbook.id, songbook.name, self.songbook_entry_edit.text()) - self.songbooks_combo_box.setEditText('') + self.songbooks_combo_box.setCurrentIndex(-1) + self.songbooks_combo_box.setCurrentText('') self.songbook_entry_edit.clear() else: QtWidgets.QMessageBox.warning( diff -Nru openlp-2.4.5/openlp/plugins/songs/forms/songmaintenanceform.py openlp-2.4.6/openlp/plugins/songs/forms/songmaintenanceform.py --- openlp-2.4.5/openlp/plugins/songs/forms/songmaintenanceform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/forms/songmaintenanceform.py 2017-03-31 18:33:35.000000000 +0000 @@ -20,7 +20,6 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### import logging -import os from PyQt5 import QtCore, QtWidgets from sqlalchemy.sql import and_ @@ -167,7 +166,7 @@ Author.display_name == new_author.display_name ) ) - return self.__check_object_exists(authors, new_author, edit) + return self._check_object_exists(authors, new_author, edit) def check_topic_exists(self, new_topic, edit=False): """ @@ -177,7 +176,7 @@ :param edit: Are we editing the song? """ topics = self.manager.get_all_objects(Topic, Topic.name == new_topic.name) - return self.__check_object_exists(topics, new_topic, edit) + return self._check_object_exists(topics, new_topic, edit) def check_song_book_exists(self, new_book, edit=False): """ @@ -188,9 +187,9 @@ """ books = self.manager.get_all_objects( Book, and_(Book.name == new_book.name, Book.publisher == new_book.publisher)) - return self.__check_object_exists(books, new_book, edit) + return self._check_object_exists(books, new_book, edit) - def __check_object_exists(self, existing_objects, new_object, edit): + def _check_object_exists(self, existing_objects, new_object, edit): """ Utility method to check for an existing object. diff -Nru openlp-2.4.5/openlp/plugins/songs/lib/importers/openlp.py openlp-2.4.6/openlp/plugins/songs/lib/importers/openlp.py --- openlp-2.4.5/openlp/plugins/songs/lib/importers/openlp.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/lib/importers/openlp.py 2017-03-31 18:33:35.000000000 +0000 @@ -61,6 +61,12 @@ :param progress_dialog: The QProgressDialog used when importing songs from the FRW. """ + class OldAuthorSong(BaseModel): + """ + Maps to the authors table + """ + pass + class OldAuthor(BaseModel): """ Maps to the authors table @@ -117,6 +123,10 @@ has_songs_books = True else: has_songs_books = False + if 'authors_songs' in list(source_meta.tables.keys()): + has_authors_songs = True + else: + has_authors_songs = False # Load up the tabls and map them out source_authors_table = source_meta.tables['authors'] source_song_books_table = source_meta.tables['song_books'] @@ -139,6 +149,15 @@ class_mapper(OldSongBookEntry) except UnmappedClassError: mapper(OldSongBookEntry, source_songs_songbooks_table, properties={'songbook': relation(OldBook)}) + if has_authors_songs: + try: + class_mapper(OldAuthorSong) + except UnmappedClassError: + mapper(OldAuthorSong, source_authors_songs_table) + if has_authors_songs and 'author_type' in source_authors_songs_table.c.keys(): + has_author_type = True + else: + has_author_type = False # Set up the songs relationships song_props = { 'authors': relation(OldAuthor, backref='songs', secondary=source_authors_songs_table), @@ -157,6 +176,8 @@ song_props['songbook_entries'] = relation(OldSongBookEntry, backref='song', cascade='all, delete-orphan') else: song_props['book'] = relation(OldBook, backref='songs') + if has_authors_songs: + song_props['authors_songs'] = relation(OldAuthorSong) # Map the rest of the tables try: class_mapper(OldAuthor) @@ -205,8 +226,16 @@ existing_author = Author.populate( first_name=author.first_name, last_name=author.last_name, - display_name=author.display_name) - new_song.add_author(existing_author) + display_name=author.display_name + ) + # if this is a new database, we need to import the author type too + author_type = None + if has_author_type: + for author_song in song.authors_songs: + if author_song.author_id == author.id: + author_type = author_song.author_type + break + new_song.add_author(existing_author, author_type) # Find or create all the topics and add them to the new song object if song.topics: for topic in song.topics: @@ -221,11 +250,17 @@ if not existing_book: existing_book = Book.populate(name=entry.songbook.name, publisher=entry.songbook.publisher) new_song.add_songbook_entry(existing_book, entry.entry) - elif song.book: + elif hasattr(song, 'book') and song.book: existing_book = self.manager.get_object_filtered(Book, Book.name == song.book.name) if not existing_book: existing_book = Book.populate(name=song.book.name, publisher=song.book.publisher) - new_song.add_songbook_entry(existing_book, '') + # Get the song_number from "songs" table "song_number" field. (This is db structure from 2.2.1) + # If there's a number, add it to the song, otherwise it will be "". + existing_number = song.song_number if hasattr(song, 'song_number') else '' + if existing_number: + new_song.add_songbook_entry(existing_book, existing_number) + else: + new_song.add_songbook_entry(existing_book, "") # Find or create all the media files and add them to the new song object if has_media_files and song.media_files: for media_file in song.media_files: diff -Nru openlp-2.4.5/openlp/plugins/songs/lib/importers/presentationmanager.py openlp-2.4.6/openlp/plugins/songs/lib/importers/presentationmanager.py --- openlp-2.4.5/openlp/plugins/songs/lib/importers/presentationmanager.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/lib/importers/presentationmanager.py 2017-03-31 18:33:35.000000000 +0000 @@ -23,7 +23,7 @@ The :mod:`presentationmanager` module provides the functionality for importing Presentationmanager song files into the current database. """ - +import logging import os import re import chardet @@ -32,6 +32,8 @@ from openlp.core.ui.wizard import WizardStrings from .songimport import SongImport +log = logging.getLogger(__name__) + class PresentationManagerImport(SongImport): """ @@ -62,15 +64,36 @@ 'File is not in XML-format, which is the only format supported.')) continue root = objectify.fromstring(etree.tostring(tree)) - self.process_song(root) + self.process_song(root, file_path) + + def _get_attr(self, elem, name): + """ + Due to PresentationManager's habit of sometimes capitilising the first letter of an element, we have to do + some gymnastics. + """ + if hasattr(elem, name): + log.debug('%s: %s', name, getattr(elem, name)) + return str(getattr(elem, name)) + name = name[0].upper() + name[1:] + if hasattr(elem, name): + log.debug('%s: %s', name, getattr(elem, name)) + return str(getattr(elem, name)) + else: + return '' - def process_song(self, root): + def process_song(self, root, file_path): self.set_defaults() - self.title = str(root.attributes.title) - self.add_author(str(root.attributes.author)) - self.copyright = str(root.attributes.copyright) - self.ccli_number = str(root.attributes.ccli_number) - self.comments = str(root.attributes.comments) + attrs = None + if hasattr(root, 'attributes'): + attrs = root.attributes + elif hasattr(root, 'Attributes'): + attrs = root.Attributes + if attrs is not None: + self.title = self._get_attr(root.attributes, 'title') + self.add_author(self._get_attr(root.attributes, 'author')) + self.copyright = self._get_attr(root.attributes, 'copyright') + self.ccli_number = self._get_attr(root.attributes, 'ccli_number') + self.comments = str(root.attributes.comments) if hasattr(root.attributes, 'comments') else None verse_order_list = [] verse_count = {} duplicates = [] @@ -102,4 +125,4 @@ self.verse_order_list = verse_order_list if not self.finish(): - self.log_error(self.import_source) + self.log_error(os.path.basename(file_path)) diff -Nru openlp-2.4.5/openlp/plugins/songs/lib/importers/songbeamer.py openlp-2.4.6/openlp/plugins/songs/lib/importers/songbeamer.py --- openlp-2.4.5/openlp/plugins/songs/lib/importers/songbeamer.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/lib/importers/songbeamer.py 2017-03-31 18:33:35.000000000 +0000 @@ -22,11 +22,10 @@ """ The :mod:`songbeamer` module provides the functionality for importing SongBeamer songs into the OpenLP database. """ -import chardet -import codecs import logging import os import re +import chardet from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.importers.songimport import SongImport @@ -120,7 +119,7 @@ # The encoding should only be ANSI (cp1252), UTF-8, Unicode, Big-Endian-Unicode. # So if it doesn't start with 'u' we default to cp1252. See: # https://forum.songbeamer.com/viewtopic.php?p=419&sid=ca4814924e37c11e4438b7272a98b6f2 - if self.input_file_encoding.lower().startswith('u'): + if not self.input_file_encoding.lower().startswith('u'): self.input_file_encoding = 'cp1252' infile = open(import_file, 'rt', encoding=self.input_file_encoding) song_data = infile.readlines() diff -Nru openlp-2.4.5/openlp/plugins/songs/lib/songselect.py openlp-2.4.6/openlp/plugins/songs/lib/songselect.py --- openlp-2.4.5/openlp/plugins/songs/lib/songselect.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/lib/songselect.py 2017-03-31 18:33:35.000000000 +0000 @@ -47,7 +47,7 @@ BASE_URL = 'https://songselect.ccli.com' LOGIN_PAGE = 'https://profile.ccli.com/account/signin?appContext=SongSelect&returnUrl=' \ 'https%3a%2f%2fsongselect.ccli.com%2f' -LOGIN_URL = 'https://profile.ccli.com/' +LOGIN_URL = 'https://profile.ccli.com' LOGOUT_URL = BASE_URL + '/account/logout' SEARCH_URL = BASE_URL + '/search/results' @@ -97,14 +97,27 @@ 'password': password, 'RememberMe': 'false' }) + login_form = login_page.find('form') + if login_form: + login_url = login_form.attrs['action'] + else: + login_url = '/Account/SignIn' + if not login_url.startswith('http'): + if login_url[0] != '/': + login_url = '/' + login_url + login_url = LOGIN_URL + login_url try: - posted_page = BeautifulSoup(self.opener.open(LOGIN_URL, data.encode('utf-8')).read(), 'lxml') + posted_page = BeautifulSoup(self.opener.open(login_url, data.encode('utf-8')).read(), 'lxml') except (TypeError, URLError) as error: log.exception('Could not login to SongSelect, %s', error) return False if callback: callback() - return posted_page.find('input', id='SearchText') is not None + if posted_page.find('input', id='SearchText') is not None: + return True + else: + log.debug(posted_page) + return False def logout(self): """ diff -Nru openlp-2.4.5/openlp/plugins/songs/lib/upgrade.py openlp-2.4.6/openlp/plugins/songs/lib/upgrade.py --- openlp-2.4.5/openlp/plugins/songs/lib/upgrade.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/plugins/songs/lib/upgrade.py 2017-03-31 18:33:35.000000000 +0000 @@ -26,7 +26,7 @@ import logging from sqlalchemy import Table, Column, ForeignKey, types -from sqlalchemy.sql.expression import func, false, null, text +from sqlalchemy.sql.expression import func, false, null, text, and_, select from openlp.core.lib.db import get_upgrade_op from openlp.core.utils.db import drop_columns @@ -102,16 +102,17 @@ This upgrade adds a column for author type to the authors_songs table """ - # Since SQLite doesn't support changing the primary key of a table, we need to recreate the table - # and copy the old values + # Due to an incorrect check, this step was always skipped. Moved this code into upgrade 6. op = get_upgrade_op(session) - songs_table = Table('songs', metadata) - if 'author_type' not in [col.name for col in songs_table.c.values()]: - op.create_table('authors_songs_tmp', - Column('author_id', types.Integer(), ForeignKey('authors.id'), primary_key=True), - Column('song_id', types.Integer(), ForeignKey('songs.id'), primary_key=True), - Column('author_type', types.Unicode(255), primary_key=True, - nullable=False, server_default=text('""'))) + authors_songs = Table('authors_songs', metadata, autoload=True) + if 'author_type' not in [col.name for col in authors_songs.c.values()]: + authors_songs_tmp = op.create_table( + 'authors_songs_tmp', + Column('author_id', types.Integer(), ForeignKey('authors.id'), primary_key=True), + Column('song_id', types.Integer(), ForeignKey('songs.id'), primary_key=True), + Column('author_type', types.Unicode(255), primary_key=True, + nullable=False, server_default=text('""')) + ) op.execute('INSERT INTO authors_songs_tmp SELECT author_id, song_id, "" FROM authors_songs') op.drop_table('authors_songs') op.rename_table('authors_songs_tmp', 'authors_songs') @@ -126,20 +127,22 @@ This upgrade adds support for multiple songbooks """ op = get_upgrade_op(session) - songs_table = Table('songs', metadata) - if 'song_book_id' in [col.name for col in songs_table.c.values()]: + songs_table = Table('songs', metadata, autoload=True) + if 'song_book_id' not in [col.name for col in songs_table.c.values()]: log.warning('Skipping upgrade_5 step of upgrading the song db') return # Create the mapping table (songs <-> songbooks) - op.create_table('songs_songbooks', - Column('songbook_id', types.Integer(), ForeignKey('song_books.id'), primary_key=True), - Column('song_id', types.Integer(), ForeignKey('songs.id'), primary_key=True), - Column('entry', types.Unicode(255), primary_key=True, nullable=False)) + songs_songbooks_table = op.create_table( + 'songs_songbooks', + Column('songbook_id', types.Integer(), ForeignKey('song_books.id'), primary_key=True), + Column('song_id', types.Integer(), ForeignKey('songs.id'), primary_key=True), + Column('entry', types.Unicode(255), primary_key=True, nullable=False) + ) # Migrate old data op.execute('INSERT INTO songs_songbooks SELECT song_book_id, id, song_number FROM songs\ - WHERE song_book_id IS NOT NULL AND song_number IS NOT NULL') + WHERE song_book_id IS NOT NULL AND song_book_id <> 0 AND song_number IS NOT NULL') # Drop old columns if metadata.bind.url.get_dialect().name == 'sqlite': diff -Nru openlp-2.4.5/openlp/.version openlp-2.4.6/openlp/.version --- openlp-2.4.5/openlp/.version 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/openlp/.version 2017-03-31 18:33:35.000000000 +0000 @@ -1 +1 @@ -2.4.5 +2.4.6 diff -Nru openlp-2.4.5/resources/i18n/af.ts openlp-2.4.6/resources/i18n/af.ts --- openlp-2.4.5/resources/i18n/af.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/af.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3890,12 +3890,12 @@ OpenLP.LanguageManager - + Language Taal - + Please restart OpenLP to use your new language setting. Herlaai asseblief OpenLP om die nuwe taal instelling te gebruik. @@ -4190,7 +4190,7 @@ Verstek Tema: %s - + English Please add the name of your language here Afrikaans @@ -4331,17 +4331,17 @@ OpenLP Uitvoer Verstellings Lêer (*.conf) - + New Data Directory Error Nuwe Data Lêer Fout - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish OpenLP data word na 'n nuwe data gids - %s - gekopiër. Wag asseblief totdat dit voltooi is. - + OpenLP Data directory copy failed %s @@ -5891,12 +5891,12 @@ Kortpad - + Duplicate Shortcut Duplikaat Kortpad - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Die kortpad "%s" is alreeds toegeken aan 'n ander aksie, kies asseblief 'n ander kortpad. @@ -5931,12 +5931,12 @@ Stel die verstek kortpad terug vir hierdie aksie. - + Restore Default Shortcuts Herstel Verstek Kortpaaie - + Do you want to restore all shortcuts to their defaults? Herstel alle kortpaaie na hul verstek waarde? @@ -8603,47 +8603,47 @@ Hierdie skrywer bestaan nie, moet die skrywer bygevoeg word? - + This author is already in the list. Hierdie skrywer is alreeds in die lys. - + 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. Die geselekteerde skrywer is ongeldig. Kies 'n skrywer vanaf die lys of voer 'n nuwe skrywer in en kliek op die "Voeg Skrywer by Lied" knoppie om die skrywer by te voeg. - + Add Topic Voeg Onderwerp by - + This topic does not exist, do you want to add it? Die onderwerp bestaan nie. Voeg dit by? - + This topic is already in the list. Die onderwerp is reeds in die lys. - + 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. Geselekteerde onderwerp is ongeldig. Kies 'n onderwerp vanaf die lys of voer 'n nuwe onderwerp in en kliek die "Voeg Onderwerp by Lied" knoppie om die onderwerp by te voeg. - + You need to type in a song title. Tik 'n lied titel in. - + You need to type in at least one verse. Ten minste een vers moet ingevoer word. - + You need to have an author for this song. Daar word 'n outeur benodig vir hierdie lied. @@ -8668,7 +8668,7 @@ Verwyder &Alles - + Open File(s) Maak Lêer(s) Oop @@ -8683,13 +8683,13 @@ <strong>Waarskuwing:</strong>'n Vers orde is nie ingevoer nie. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order @@ -8699,17 +8699,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8735,32 +8735,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Lêer nie gevind nie - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9223,7 +9223,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9280,7 +9280,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9357,107 +9357,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Skrywer kon nie bygevoeg word nie. - + This author already exists. Die skrywer bestaan reeds. - + Could not add your topic. Onderwerp kon nie bygevoeg word nie. - + This topic already exists. Hierdie onderwerp bestaan reeds. - + Could not add your book. Boek kon nie bygevoeg word nie. - + This book already exists. Hierdie boek bestaan reeds. - + Could not save your changes. Veranderinge kon nie gestoor word nie. - + Could not save your modified author, because the author already exists. Geredigeerde skrywer kon nie gestoor word nie, omdat die skrywer reeds bestaan. - + Could not save your modified topic, because it already exists. Geredigeerde onderwerp kon nie gestoor word nie, want dit bestaan alreeds. - + Delete Author Wis Skrywer Uit - + Are you sure you want to delete the selected author? Wis die geselekteerde skrywer uit? - + This author cannot be deleted, they are currently assigned to at least one song. Die skrywer kan nie uitgewis word nie, omdat die skrywer aan ten minste een lied toegeken is. - + Delete Topic Wis Onderwerp Uit - + Are you sure you want to delete the selected topic? Wis die geselekteerde onderwerp uit? - + This topic cannot be deleted, it is currently assigned to at least one song. Die onderwerp kan nie uitgewis word nie, omdat dit aan ten minste een lied toegeken is. - + Delete Book Wis Boek Uit - + Are you sure you want to delete the selected book? Wis die geselekteerde boek uit? - + This book cannot be deleted, it is currently assigned to at least one song. Die boek kan nie uitgewis word nie, omdat dit aan ten minste een lied toegeken is. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Die outeur %s bestaan alreeds. Moet liedere met die outeur %s die bestaande outeur %s gebruik? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Die onderwerp %s bestaan alreeds. Moet liedere met die onderwerp %s die bestaande onderwerp %s gebruik? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Die boek %s bestaan reeds. Moed liedere met die doek %s gebruik maak van bestaande boek %s? diff -Nru openlp-2.4.5/resources/i18n/bg.ts openlp-2.4.6/resources/i18n/bg.ts --- openlp-2.4.5/resources/i18n/bg.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/bg.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3875,12 +3875,12 @@ OpenLP.LanguageManager - + Language Език - + Please restart OpenLP to use your new language setting. Моля рестартирай OpenLP за ползване на новите езикови настройки @@ -4173,7 +4173,7 @@ Тема по подразбиране: %s - + English Please add the name of your language here Английски @@ -4312,17 +4312,17 @@ Файйл с настройки за експотриране(*.conf) на OpenLP - + New Data Directory Error Грешка с новата директория с данни - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kопират се данните на OpenLP на новото място - %s - Моля изчакайте копирането да завърши. - + OpenLP Data directory copy failed %s @@ -5875,12 +5875,12 @@ Пряк път - + Duplicate Shortcut Повторение на пряк път - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Прекият път "%s" е вече свързан с друго действие. Моля ползвайте друг пряк път! @@ -5915,12 +5915,12 @@ Възстанови прекия път по подразбиране за това действие. - + Restore Default Shortcuts Възстанови преките пътища по подразбиране - + Do you want to restore all shortcuts to their defaults? Наистина ли да възстанови всички преки пътища по подразбиране @@ -8584,47 +8584,47 @@ Този автор го няма в списъка, да го добавя ли? - + This author is already in the list. Авторът вече е в списъка - + 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. Не сте задали валидно име на автор. Добавете от списъка или напишете ново име и натиснете бутона за добавяне на автор. - + Add Topic Добави тема - + This topic does not exist, do you want to add it? Няма такава тема, да я добавя ли? - + This topic is already in the list. Темата е вече в списъка - + 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. Не сте задали валидна тема. Добавете от списъка или напишете нова и натиснете бутона за добавяне на тема. - + You need to type in a song title. Трябва да дадете заглавие на песента. - + You need to type in at least one verse. Трябва да има поне един куплет. - + You need to have an author for this song. Трябва да има автор на песента. @@ -8649,7 +8649,7 @@ Премахни всичко - + Open File(s) Отвори файл(ове) @@ -8664,14 +8664,14 @@ <strong>Предупреждение:</strong> Не сте въвели реда на стиховете. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Няма куплет, който да отговаря на "%(invalid)s". Валидни вписвания са %(valid)s. Моля, въведете стиховете разделени от празен интервал. - + Invalid Verse Order Невалиден ред на куплетите: @@ -8681,17 +8681,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8717,32 +8717,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Файлът не е намерен - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9205,7 +9205,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9262,7 +9262,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9339,107 +9339,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Не може да се добави автора - + This author already exists. Този автор го има вече. - + Could not add your topic. Не може да се добави темата - + This topic already exists. Тази тема я има вече. - + Could not add your book. Не може да се добави песнарката. - + This book already exists. Тази песнарка вече я има - + Could not save your changes. Не могат да се запазят промените - + Could not save your modified author, because the author already exists. Не може да се запази промяната във името на автора, защото такова име вече съществува. - + Could not save your modified topic, because it already exists. Не може да се запази промяната на темата, защото такава има вече. - + Delete Author Изтрий автор - + Are you sure you want to delete the selected author? Наистина ли авторът да бъде изтрит? - + This author cannot be deleted, they are currently assigned to at least one song. Авторът не може да бъде изтрит, защото е свързан с поне една песен. - + Delete Topic Изтрии тема - + Are you sure you want to delete the selected topic? Наистина ли темата да бъде изтрита? - + This topic cannot be deleted, it is currently assigned to at least one song. Темата не може да бъде изтрита, защото е свързана с поне една песен. - + Delete Book Изтрии песнарка - + Are you sure you want to delete the selected book? Наистина ли песнарката да бъде изтрита? - + This book cannot be deleted, it is currently assigned to at least one song. Песнарката не може да бъде изтрита, защото е свързана с поне една песен. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Вече има автор %s. Бихте ли искали вместо автора %s, когото сте въвели като автор на пресните да се ползва %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Вече има тема %s. Бихте ли искали вместо темата %s, която сте въвели да се ползва %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Вече има песнарка %s. Бихте ли искали вместо %s, която сте въвели да се ползва %s? @@ -9529,7 +9529,7 @@ Back - + Назад diff -Nru openlp-2.4.5/resources/i18n/cs.ts openlp-2.4.6/resources/i18n/cs.ts --- openlp-2.4.5/resources/i18n/cs.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/cs.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3917,12 +3917,12 @@ OpenLP.LanguageManager - + Language Jazyk - + Please restart OpenLP to use your new language setting. Změny nastavení jazyka se projeví restartováním aplikace OpenLP. @@ -4217,7 +4217,7 @@ Výchozí motiv: %s - + English Please add the name of your language here Čeština @@ -4358,17 +4358,17 @@ Soubor exportovaného nastavení OpenLP (*.conf) - + New Data Directory Error Chyba nové datové složky - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopíruji datovou složku aplikace OpenLP do nového umístění - %s - Počkejte prosím na dokončení kopírování - + OpenLP Data directory copy failed %s @@ -5928,12 +5928,12 @@ Zkratka - + Duplicate Shortcut Duplicitní zkratka - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Zkratka "%s" je už přiřazena jiné činnosti. Použijte prosím jinou zkratku. @@ -5968,12 +5968,12 @@ Obnovit výchozí zkratku činnosti. - + Restore Default Shortcuts Obnovit výchozí zkratku - + Do you want to restore all shortcuts to their defaults? Chcete obnovit všechny zkratky na jejich výchozí hodnoty? @@ -8644,47 +8644,47 @@ Tento autor neexistuje. Chcete ho přidat? - + This author is already in the list. Tento autor je už v seznamu. - + 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. Není vybrán platný autor. Buďto vyberte autora ze seznamu nebo zadejte nového autora a pro přidání nového autora klepněte na tlačítko "Přidat autora k písni". - + Add Topic Přidat téma - + This topic does not exist, do you want to add it? Toto téma neexistuje. Chcete ho přidat? - + This topic is already in the list. Toto téma je už v seznamu. - + 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. Není vybráno platné téma. Buďto vyberte téma ze seznamu nebo zadejte nové téma a pro přidání nového tématu klepněte na tlačítko "Přidat téma k písni". - + You need to type in a song title. Je potřeba zadat název písne. - + You need to type in at least one verse. Je potřeba zadat alespoň jednu sloku. - + You need to have an author for this song. Pro tuto píseň je potřeba zadat autora. @@ -8709,7 +8709,7 @@ Odstranit &Vše - + Open File(s) Otevřít soubor(y) @@ -8724,14 +8724,14 @@ <strong>Varování:</strong> Nebylo zadáno pořadí slok. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Sloka odpovídající "%(invalid)s" neexistuje. Platné položky jsou %(valid)s. Prosím zadejte sloky oddělené mezerou. - + Invalid Verse Order Neplatné pořadí veršů @@ -8741,17 +8741,17 @@ &Upravit druh autora - + Edit Author Type Uprava druhu autora - + Choose type for this author Vybrat druh pro tohoto autora - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Sloky odpovídající "%(invalid)s" neexistují. Platné položky jsou %(valid)s. @@ -8778,32 +8778,32 @@ Autoři, témata a zpěvníky - + Add Songbook Přidat zpěvník - + This Songbook does not exist, do you want to add it? Tento zpěvník neexistuje. Chcete ho přidat? - + This Songbook is already in the list. Tento zpěvník je už v seznamu. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Není vybrán platný zpěvník. Buďto vyberte zpěvník ze seznamu nebo zadejte nový zpěvník a pro přidání nového zpěvníku klepněte na tlačítko "Přidat k písni". - + File not found Soubor nenalezen - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9268,7 +9268,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Neplatná databáze písní OpenLP 2. @@ -9325,7 +9325,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9402,107 +9402,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Nemohu přidat autora. - + This author already exists. Tento autor již existuje. - + Could not add your topic. Nemohu přidat téma. - + This topic already exists. Toto téma již existuje. - + Could not add your book. Nemohu přidat zpěvník. - + This book already exists. Tento zpěvník již existuje. - + Could not save your changes. Nemohu uložit změny. - + Could not save your modified author, because the author already exists. Nemohu uložit upraveného autora, protože tento autor již existuje. - + Could not save your modified topic, because it already exists. Nemohu uložit upravené téma, protože již existuje. - + Delete Author Smazat autora - + Are you sure you want to delete the selected author? Jste si jist, že chcete smazat vybraného autora? - + This author cannot be deleted, they are currently assigned to at least one song. Nemohu smazat autora, protože je v současné době přiřazen alespoň k jedné písni. - + Delete Topic Smazat téma - + Are you sure you want to delete the selected topic? Jste si jist, že chcete smazat vybrané téma? - + This topic cannot be deleted, it is currently assigned to at least one song. Nemohu smazat toto téma, protože je v současné době přiřazeno alespoň k jedné písni. - + Delete Book Smazat zpěvník - + Are you sure you want to delete the selected book? Jste si jist, že chcete smazat vybraný zpěvník? - + This book cannot be deleted, it is currently assigned to at least one song. Nemohu smazat tento zpěvník, protože je v současné době přiřazen alespoň k jedné písni. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Autor %s již existuje. Přejete si vytvořit písně s autorem %s a použít již existujícího autora %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Téma %s již existuje. Přejete si vytvořit písně s tématem %s a použít již existující téma %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Zpěvník %s již existuje. Přejete si vytvořít písně se zpěvníkem %s a použít již existující zpěvník %s? diff -Nru openlp-2.4.5/resources/i18n/da.ts openlp-2.4.6/resources/i18n/da.ts --- openlp-2.4.5/resources/i18n/da.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/da.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3919,12 +3919,12 @@ OpenLP.LanguageManager - + Language Sprog - + Please restart OpenLP to use your new language setting. Genstart OpenLP for at benytte dine nye sprogindstillinger. @@ -4219,7 +4219,7 @@ Standard tema: %s - + English Please add the name of your language here Dansk @@ -4360,17 +4360,17 @@ OpenLP-eksporteret indstillingsfil (*.conf) - + New Data Directory Error Fejl ved ny datamappe - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopierer OpenLP-data til en ny datamappeplacering - %s - Vent venligst til at kopieringen er færdig - + OpenLP Data directory copy failed %s @@ -5931,12 +5931,12 @@ Genvej - + Duplicate Shortcut Duplikér genvej - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Genvejen "%s" er allerede tilknyttet en anden handling, brug en anden genvej. @@ -5971,12 +5971,12 @@ Gendan denne handlings standardgenvej. - + Restore Default Shortcuts Gendan standardgenveje - + Do you want to restore all shortcuts to their defaults? Vil du gendanne alle genveje til deres standardværdier? @@ -8647,47 +8647,47 @@ Denne forfatter eksisterer ikke. Vil du tilføje dem? - + This author is already in the list. Denne forfatter er allerede på listen. - + 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. Du har ikke valgt en gyldig forfatter. Vælg enten en forfatter fra listen, eller indtast en ny forfatter og klik på "Tilføj forfatter til sang"-knappen for at tilføje den nye forfatter. - + Add Topic Tilføj emne - + This topic does not exist, do you want to add it? Dette emne eksisterer ikke. Vil du tilføje det? - + This topic is already in the list. Dette emne er allerede på listen. - + 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. Du har ikke valgt et gyldigt emne. Vælg enten et emne fra listen, eller indtast et nyt emne og klik på "Tilføj emne til sang"-knappen for at tilføje det nye emne. - + You need to type in a song title. Vælg først en sangtitel. - + You need to type in at least one verse. Skriv mindst ét vers. - + You need to have an author for this song. Du mangler en forfatter til denne sang. @@ -8712,7 +8712,7 @@ Fjern &alt - + Open File(s) Åbn fil(er) @@ -8727,14 +8727,14 @@ <strong>Advarsel:</strong> Du har ikke indtastet en rækkefølge for versene. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Der er intet vers svarende til "%(invalid)s". Gyldige værdier er %(valid)s. Indtast venligst versene adskildt af mellemrum. - + Invalid Verse Order Ugyldig versrækkefølge @@ -8744,17 +8744,17 @@ &Rediger forfattertype - + Edit Author Type Rediger forfattertype - + Choose type for this author Vælg type for denne forfatter - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Der er ingen vers svarende til "%(invalid)s". Gyldige værdier er %(valid)s. @@ -8781,32 +8781,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Fil ikke fundet - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9269,7 +9269,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Ikke en gyldig OpenLP 2 sangdatabase. @@ -9326,7 +9326,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9403,107 +9403,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Kunne ikke tilføje din forfatter. - + This author already exists. Denne forfatter eksisterer allerede. - + Could not add your topic. Kunne ikke tilføje dit emne. - + This topic already exists. Dette emne eksisterer allerede. - + Could not add your book. Kunne ikke tilføje din bog. - + This book already exists. Denne bog eksisterer allerede. - + Could not save your changes. Kunne ikke gemme dine ændringer. - + Could not save your modified author, because the author already exists. Kunne ikke gemme din ændrede forfatter, da denne forfatter allerede eksisterer. - + Could not save your modified topic, because it already exists. Kunne ikke gemme dit ændrede emne, da det allerede eksisterer. - + Delete Author Slet forfatter - + Are you sure you want to delete the selected author? Er du sikker på at du vil slette den valgte forfatter? - + This author cannot be deleted, they are currently assigned to at least one song. Denne forfatter kan ikke slettes, da den er tilkyttet til mindst én sang. - + Delete Topic Slet emne - + Are you sure you want to delete the selected topic? Er du sikker på at du vil slette det valgte emne? - + This topic cannot be deleted, it is currently assigned to at least one song. Dette emne kan ikke slettes, da den er tilkyttet til mindst én sang. - + Delete Book Slet bog - + Are you sure you want to delete the selected book? Er du sikker på at du vil slette den valgte bog? - + This book cannot be deleted, it is currently assigned to at least one song. Denne bog kan ikke slettes, da den er tilkyttet til mindst én sang. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Forfatteren %s eksisterer allerede. Vil du få sangene med forfatter %s til at benytte den eksisterende forfatter %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Emnet %s eksisterer allerede. Vil du få sangene med emne %s til at benytte det eksisterende emne %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Bogen %s eksisterer allerede. Vil du få sangene med bog %s til at benytte den eksisterende bog %s? diff -Nru openlp-2.4.5/resources/i18n/de.ts openlp-2.4.6/resources/i18n/de.ts --- openlp-2.4.5/resources/i18n/de.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/de.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3901,12 +3901,12 @@ OpenLP.LanguageManager - + Language Sprache - + Please restart OpenLP to use your new language setting. Bitte starten Sie OpenLP neu, um die neue Spracheinstellung zu verwenden. @@ -4201,7 +4201,7 @@ Standarddesign: %s - + English Please add the name of your language here Deutsch @@ -4342,17 +4342,17 @@ OpenLP Einstellungsdatei (*.conf) - + New Data Directory Error Fehler im neuen Daten Ordner - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopiere OpenLP Daten in das neue Datenverzeichnis - %s - Bitte warten Sie, bis der Kopiervorgang beendet wurde. - + OpenLP Data directory copy failed %s @@ -5912,12 +5912,12 @@ Tastenkürzel - + Duplicate Shortcut Belegtes Tastenkürzel - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Das Tastenkürzel »%s« ist bereits einer anderen Aktion zugeordnet. Bitte wählen Sie ein anderes Tastenkürzel. @@ -5952,12 +5952,12 @@ Standard Tastenkürzel dieser Aktion wiederherstellen. - + Restore Default Shortcuts Standard Tastenkürzel wiederherstellen - + Do you want to restore all shortcuts to their defaults? Möchten Sie alle standard Tastenkürzel wiederherstellen? @@ -8629,47 +8629,47 @@ Dieser Autor existiert nicht. Soll er zur Datenbank hinzugefügt werden? - + This author is already in the list. Dieser Autor ist bereits vorhanden. - + 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. Es wurde kein gültiger Autor ausgewählt. Bitte wählen Sie einen Autor aus der Liste oder geben Sie einen neuen Autor ein und drücken die Schaltfläche »Autor hinzufügen«. - + Add Topic Thema hinzufügen - + This topic does not exist, do you want to add it? Dieses Thema existiert nicht. Soll es zur Datenbank hinzugefügt werden? - + This topic is already in the list. Dieses Thema ist bereits vorhanden. - + 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. Es wurde kein gültiges Thema ausgewählt. Bitte wählen Sie ein Thema aus der Liste oder geben Sie ein neues Thema ein und drücken die Schaltfläche »Thema hinzufügen«. - + You need to type in a song title. Ein Liedtitel muss angegeben sein. - + You need to type in at least one verse. Mindestens ein Vers muss angegeben sein. - + You need to have an author for this song. Das Lied benötigt mindestens einen Autor. @@ -8694,7 +8694,7 @@ &Alle Entfernen - + Open File(s) Datei(en) öffnen @@ -8709,14 +8709,14 @@ <strong>Achtung:</strong> Sie haben keine Versfolge eingegeben. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Es gibt keinen Vers, der "%(invalid)s" entspricht. Gültige Eingaben sind %(valid)s. Bitte geben Sie die Verse mit Leerzeichen getrennt ein. - + Invalid Verse Order Ungültige Versfolge @@ -8726,17 +8726,17 @@ Autortyp &bearbeiten - + Edit Author Type Autortyp bearbeiten - + Choose type for this author Wählen Sie den Typ für diesen Autor - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Es gibt keine Verse, die "%(invalid)s" entsprechen. Gültige Eingaben sind %(valid)s. @@ -8763,32 +8763,32 @@ Autoren, Themen && Liederbücher - + Add Songbook Zum Liederbuch hinzufügen - + This Songbook does not exist, do you want to add it? Dieses Liederbuch existiert nicht, möchten Sie es erstellen? - + This Songbook is already in the list. Dieses Liederbuch ist bereits in der Liste. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Es wurde kein gültiges Liederbuch ausgewählt. Bitte wählen Sie ein Liederbuch aus der Liste oder geben Sie ein neues Liederbuch ein und drücken die Schaltfläche »Liederbuch hinzufügen«. - + File not found Datei nicht gefunden - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9254,7 +9254,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Keine gültige OpenLP 2 Liederdatenbank @@ -9311,9 +9311,9 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. - + Datei ist nicht im XML-Format, welches das einzigste unterstützte Format ist. @@ -9388,107 +9388,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Der Autor konnte nicht hinzugefügt werden. - + This author already exists. Der Autor existiert bereits in der Datenbank. - + Could not add your topic. Das Thema konnte nicht hinzugefügt werden. - + This topic already exists. Das Thema existiert bereits in der Datenbank. - + Could not add your book. Das Liederbuch konnte nicht hinzugefügt werden. - + This book already exists. Das Liederbuch existiert bereits in der Datenbank. - + Could not save your changes. Die Änderungen konnten nicht gespeichert werden. - + Could not save your modified author, because the author already exists. Der geänderte Autor konnte nicht gespeichert werden, da es bereits in der Datenbank existiert. - + Could not save your modified topic, because it already exists. Das geänderte Thema konnte nicht gespeichert werden, da es bereits in der Datenbank existiert. - + Delete Author Autor löschen - + Are you sure you want to delete the selected author? Soll der ausgewählte Autor wirklich gelöscht werden? - + This author cannot be deleted, they are currently assigned to at least one song. Der Autor konnte nicht gelöscht werden, da er mindestens einem Lied zugeordnet ist. - + Delete Topic Thema löschen - + Are you sure you want to delete the selected topic? Soll das ausgewählte Thema wirklich gelöscht werden? - + This topic cannot be deleted, it is currently assigned to at least one song. Das Thema konnte nicht gelöscht werden, da es mindestens einem Lied zugeordnet ist. - + Delete Book Liederbuch löschen - + Are you sure you want to delete the selected book? Soll das ausgewählte Liederbuch wirklich gelöscht werden? - + This book cannot be deleted, it is currently assigned to at least one song. Das Liederbuch konnte nicht gelöscht werden, da es mindestens einem Lied zugeordnet ist. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Der Autor »%s« existiert bereits. Sollen Lieder von »%s« »%s« als Autor setzen? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Das Thema »%s« existiert bereits. Sollen Lieder zum Thema »%s« das Thema »%s« verwenden? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Das Liederbuch »%s« existiert bereits. Sollen Lieder aus »%s« dem Buch »%s« zugeordnet werden? diff -Nru openlp-2.4.5/resources/i18n/el.ts openlp-2.4.6/resources/i18n/el.ts --- openlp-2.4.5/resources/i18n/el.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/el.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3891,12 +3891,12 @@ OpenLP.LanguageManager - + Language Γλώσσα - + Please restart OpenLP to use your new language setting. Παρακαλούμε επανεκκινήστε το OpenLP για να ενεργοποιηθεί η νέα γλώσσα. @@ -4191,7 +4191,7 @@ Προκαθορισμένο Θέμα: %s - + English Please add the name of your language here Αγγλικά @@ -4332,17 +4332,17 @@ Εξαγωγή Αρχείων Ρυθμίσεων του OpenLP (*.conf) - + New Data Directory Error Σφάλμα Νέου Φακέλου Δεδομένων - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Αντιγραφή των δεδομένων του OpenLP στην νέα τοποθεσία του φακέλου δεδομένων - %s - Παρακαλούμε περιμένετε να τελειώσει η αντιγραφή - + OpenLP Data directory copy failed %s @@ -5893,12 +5893,12 @@ Συντόμευση - + Duplicate Shortcut Αντίγραφο Συντόμευσης - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Η συντόμευση "%s" έχει ήδη ανατεθεί σε άλλη ενέργεια, παρακαλούμε χρησιμοποιήστε διαφορετική συντόμευση. @@ -5933,12 +5933,12 @@ Αποκατάσταση της προκαθορισμένης συντόμευσης αυτής της ενέργειας. - + Restore Default Shortcuts Αποκατάσταση Προκαθορισμένων Συντομεύσεων - + Do you want to restore all shortcuts to their defaults? Θέλετε να αποκαταστήσετε όλες τις συντομεύσεις στις προκαθορισμένες; @@ -8603,47 +8603,47 @@ Αυτός ο συγγραφέας δεν υπάρχει, θέλετε να τον προσθέσετε; - + This author is already in the list. Αυτός ο συγγραφέας είναι ήδη στην λίστα. - + 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. Δεν επιλέξατε έγκυρο συγγραφέα. Είτε επιλέξτε έναν συγγραφέα από την λίστα, είτε πληκτρολογείστε έναν νέο συγγραφέα και πιέστε "Προσθήκη Συγγραφέα στον Ύμνο" για να προσθέσετε τον νέο συγγραφέα. - + Add Topic Προσθήκη Κατηγορίας - + This topic does not exist, do you want to add it? Η κατηγορία δεν υπάρχει, θέλετε να την προσθέσετε; - + This topic is already in the list. Η κατηγορία υπάρχει ήδη στην λίστα. - + 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. Δεν επιλέξατε έγκυρη κατηγορία. Είτε επιλέξτε μια κατηγορία από την λίστα, είτε πληκτρολογήστε μια νέα κατηγορία και πιέστε "Προσθήκη Κατηγορίας στον Ύμνο" για να προσθέσετε την νέα κατηγορία. - + You need to type in a song title. Πρέπει να δώσετε έναν τίτλο στον ύμνο. - + You need to type in at least one verse. Πρέπει να πληκτρολογήσετε τουλάχιστον ένα εδάφιο. - + You need to have an author for this song. Πρέπει να έχετε έναν συγγραφέα για αυτόν τον ύμνο. @@ -8668,7 +8668,7 @@ &Αφαίρεση Όλων - + Open File(s) Άνοιγμα Αρχείου(-ων) @@ -8683,13 +8683,13 @@ - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order @@ -8699,17 +8699,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8735,32 +8735,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Το αρχείο δεν βρέθηκε - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9223,7 +9223,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9280,7 +9280,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9357,107 +9357,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Ο συγγραφέας σας δεν προστέθηκε. - + This author already exists. Ο συγγραφέας ήδη υπάρχει. - + Could not add your topic. Δεν προστέθηκε η κατηγορία σας. - + This topic already exists. Η κατηγορία υπάρχει ήδη. - + Could not add your book. Το βιβλίο σας δεν προστέθηκε. - + This book already exists. Αυτό το βιβλίο ήδη υπάρχει. - + Could not save your changes. Οι αλλαγές σαν δεν αποθηκεύτηκαν. - + Could not save your modified author, because the author already exists. Ο συγγραφέας σας δεν αποθηκεύτηκε, επειδή υπάρχει ήδη. - + Could not save your modified topic, because it already exists. Η τροποποιημένη κατηγορία σας δεν αποθηκεύτηκε, επειδή υπάρχει ήδη. - + Delete Author Διαγραφή Συγγραφέα - + Are you sure you want to delete the selected author? Σίγουρα θέλετε να διαγράψετε τον επιλεγμένο συγγραφέα; - + This author cannot be deleted, they are currently assigned to at least one song. Αυτός ο συγγραφέας δεν μπορεί να διαγραφεί, είναι συνδεδεμένος με τουλάχιστον έναν ύμνο. - + Delete Topic Διαγραφή Κατηγορίας - + Are you sure you want to delete the selected topic? Σίγουρα θέλετε να διαγράψετε την επιλεγμένη κατηγορία; - + This topic cannot be deleted, it is currently assigned to at least one song. Η κατηγορία δεν μπορεί να διαγραφεί, είναι συνδεδεμένη με τουλάχιστον έναν ύμνο. - + Delete Book Διαγραφή Βιβλίου - + Are you sure you want to delete the selected book? Σίγουρα θέλετε να διαγράψετε το επιλεγμένο βιβλίο; - + This book cannot be deleted, it is currently assigned to at least one song. Αυτό το βιβλίο δεν μπορεί να διαγραφεί, είναι συνδεδεμένο με τουλάχιστον έναν ύμνο. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Ο συγγραφέας %s υπάρχει ήδη. Θέλετε να κάνετε τους ύμνους με συγγραφέα τον %s να χρησιμοποιούν τον υπάρχοντα συγγραφέα %s; - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Η κατηγορία %s υπάρχει ήδη. Θέλετε να κάνετε τους ύμνους με κατηγορία %s να χρησιμοποιούν την υπάρχουσα κατηγορία %s; - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Το βιβλίο %s υπάρχει ήδη. Θέλετε να κάνετε τους ύμνους με το βιβλίο %s να χρησιμοποιούν το υπάρχον βιβλίο %s; diff -Nru openlp-2.4.5/resources/i18n/en_GB.ts openlp-2.4.6/resources/i18n/en_GB.ts --- openlp-2.4.5/resources/i18n/en_GB.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/en_GB.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3927,12 +3927,12 @@ OpenLP.LanguageManager - + Language Language - + Please restart OpenLP to use your new language setting. Please restart OpenLP to use your new language setting. @@ -4226,7 +4226,7 @@ Default Theme: %s - + English Please add the name of your language here English @@ -4367,17 +4367,17 @@ OpenLP Export Settings File (*.conf) - + New Data Directory Error New Data Directory Error - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Copying OpenLP data to new data directory location - %s - Please wait for copy to finish - + OpenLP Data directory copy failed %s @@ -5938,12 +5938,12 @@ Shortcut - + Duplicate Shortcut Duplicate Shortcut - + The shortcut "%s" is already assigned to another action, please use a different shortcut. The shortcut "%s" is already assigned to another action, please use a different shortcut. @@ -5978,12 +5978,12 @@ Restore the default shortcut of this action. - + Restore Default Shortcuts Restore Default Shortcuts - + Do you want to restore all shortcuts to their defaults? Do you want to restore all shortcuts to their defaults? @@ -8654,47 +8654,47 @@ This author does not exist, do you want to add them? - + This author is already in the list. This author is already in the list. - + 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. 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. - + Add Topic Add Topic - + This topic does not exist, do you want to add it? This topic does not exist, do you want to add it? - + This topic is already in the list. This topic is already in the list. - + 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. 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. - + You need to type in a song title. You need to type in a song title. - + You need to type in at least one verse. You need to type in at least one verse. - + You need to have an author for this song. You need to have an author for this song. @@ -8719,7 +8719,7 @@ Remove &All - + Open File(s) Open File(s) @@ -8734,14 +8734,14 @@ <strong>Warning:</strong> You have not entered a verse order. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order Invalid Verse Order @@ -8751,17 +8751,17 @@ &Edit Author Type - + Edit Author Type Edit Author Type - + Choose type for this author Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. @@ -8788,32 +8788,32 @@ Authors, Topics && Songbooks - + Add Songbook Add Songbook - + This Songbook does not exist, do you want to add it? This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found File not found - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9278,7 +9278,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Not a valid OpenLP 2 song database. @@ -9335,7 +9335,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. File is not in XML-format, which is the only format supported. @@ -9412,107 +9412,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Could not add your author. - + This author already exists. This author already exists. - + Could not add your topic. Could not add your topic. - + This topic already exists. This topic already exists. - + Could not add your book. Could not add your book. - + This book already exists. This book already exists. - + Could not save your changes. Could not save your changes. - + Could not save your modified author, because the author already exists. Could not save your modified author, because the author already exists. - + Could not save your modified topic, because it already exists. Could not save your modified topic, because it already exists. - + Delete Author Delete Author - + Are you sure you want to delete the selected author? Are you sure you want to delete the selected author? - + This author cannot be deleted, they are currently assigned to at least one song. This author cannot be deleted, they are currently assigned to at least one song. - + Delete Topic Delete Topic - + Are you sure you want to delete the selected topic? Are you sure you want to delete the selected topic? - + This topic cannot be deleted, it is currently assigned to at least one song. This topic cannot be deleted, it is currently assigned to at least one song. - + Delete Book Delete Book - + Are you sure you want to delete the selected book? Are you sure you want to delete the selected book? - + This book cannot be deleted, it is currently assigned to at least one song. This book cannot be deleted, it is currently assigned to at least one song. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? The author %s already exists. Would you like to make songs with author %s use the existing author %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? The book %s already exists. Would you like to make songs with book %s use the existing book %s? diff -Nru openlp-2.4.5/resources/i18n/en.ts openlp-2.4.6/resources/i18n/en.ts --- openlp-2.4.5/resources/i18n/en.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/en.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3927,12 +3927,12 @@ OpenLP.LanguageManager - + Language Language - + Please restart OpenLP to use your new language setting. Please restart OpenLP to use your new language setting. @@ -4227,7 +4227,7 @@ Default Theme: %s - + English Please add the name of your language here English @@ -4368,17 +4368,17 @@ OpenLP Export Settings File (*.conf) - + New Data Directory Error New Data Directory Error - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Copying OpenLP data to new data directory location - %s - Please wait for copy to finish - + OpenLP Data directory copy failed %s @@ -5939,12 +5939,12 @@ Shortcut - + Duplicate Shortcut Duplicate Shortcut - + The shortcut "%s" is already assigned to another action, please use a different shortcut. The shortcut "%s" is already assigned to another action, please use a different shortcut. @@ -5979,12 +5979,12 @@ Restore the default shortcut of this action. - + Restore Default Shortcuts Restore Default Shortcuts - + Do you want to restore all shortcuts to their defaults? Do you want to restore all shortcuts to their defaults? @@ -8655,47 +8655,47 @@ This author does not exist, do you want to add them? - + This author is already in the list. This author is already in the list. - + 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. 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. - + Add Topic Add Topic - + This topic does not exist, do you want to add it? This topic does not exist, do you want to add it? - + This topic is already in the list. This topic is already in the list. - + 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. 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. - + You need to type in a song title. You need to type in a song title. - + You need to type in at least one verse. You need to type in at least one verse. - + You need to have an author for this song. You need to have an author for this song. @@ -8720,7 +8720,7 @@ Remove &All - + Open File(s) Open File(s) @@ -8735,14 +8735,14 @@ <strong>Warning:</strong> You have not entered a verse order. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order Invalid Verse Order @@ -8752,17 +8752,17 @@ &Edit Author Type - + Edit Author Type Edit Author Type - + Choose type for this author Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. @@ -8789,32 +8789,32 @@ Authors, Topics && Songbooks - + Add Songbook Add Songbook - + This Songbook does not exist, do you want to add it? This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found File not found - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9279,7 +9279,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Not a valid OpenLP 2 song database. @@ -9336,7 +9336,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. File is not in XML-format, which is the only format supported. @@ -9413,107 +9413,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Could not add your author. - + This author already exists. This author already exists. - + Could not add your topic. Could not add your topic. - + This topic already exists. This topic already exists. - + Could not add your book. Could not add your book. - + This book already exists. This book already exists. - + Could not save your changes. Could not save your changes. - + Could not save your modified author, because the author already exists. Could not save your modified author, because the author already exists. - + Could not save your modified topic, because it already exists. Could not save your modified topic, because it already exists. - + Delete Author Delete Author - + Are you sure you want to delete the selected author? Are you sure you want to delete the selected author? - + This author cannot be deleted, they are currently assigned to at least one song. This author cannot be deleted, they are currently assigned to at least one song. - + Delete Topic Delete Topic - + Are you sure you want to delete the selected topic? Are you sure you want to delete the selected topic? - + This topic cannot be deleted, it is currently assigned to at least one song. This topic cannot be deleted, it is currently assigned to at least one song. - + Delete Book Delete Book - + Are you sure you want to delete the selected book? Are you sure you want to delete the selected book? - + This book cannot be deleted, it is currently assigned to at least one song. This book cannot be deleted, it is currently assigned to at least one song. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? The author %s already exists. Would you like to make songs with author %s use the existing author %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? The book %s already exists. Would you like to make songs with book %s use the existing book %s? diff -Nru openlp-2.4.5/resources/i18n/en_ZA.ts openlp-2.4.6/resources/i18n/en_ZA.ts --- openlp-2.4.5/resources/i18n/en_ZA.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/en_ZA.ts 2017-03-31 18:33:35.000000000 +0000 @@ -2396,7 +2396,15 @@ You may reset the data location back to the default location, or you can try to make the current location available. Do you want to reset to the default data location? If not, OpenLP will be closed so you can try to fix the the problem. - + OpenLP data folder was not found in: + +{path} + +The location of the data folder was previously changed from the OpenLP's default location. If the data was stored on removable device, that device needs to be made available. + +You may reset the data location back to the default location, or you can try to make the current location available. + +Do you want to reset to the default data location? If not, OpenLP will be closed so you can try to fix the the problem. @@ -2639,7 +2647,8 @@ Copyright (c) 2004-2017 %s Portions copyright (c) 2004-2017 %s - + Copyright (c) 2004-2017 %s +Portions copyright (c) 2004-2017 %s @@ -3918,12 +3927,12 @@ OpenLP.LanguageManager - + Language Language - + Please restart OpenLP to use your new language setting. Please restart OpenLP to use your new language setting. @@ -4218,7 +4227,7 @@ Default Theme: %s - + English Please add the name of your language here English (ZA) @@ -4359,17 +4368,17 @@ OpenLP Export Settings File (*.conf) - + New Data Directory Error New Data Directory Error - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Copying OpenLP data to new data directory location - %s - Please wait for copy to finish - + OpenLP Data directory copy failed %s @@ -4629,7 +4638,7 @@ {code} : {string} - + {code} : {string} @@ -5930,12 +5939,12 @@ Shortcut - + Duplicate Shortcut Duplicate Shortcut - + The shortcut "%s" is already assigned to another action, please use a different shortcut. The shortcut "%s" is already assigned to another action, please use a different shortcut. @@ -5970,12 +5979,12 @@ Restore the default shortcut of this action. - + Restore Default Shortcuts Restore Default Shortcuts - + Do you want to restore all shortcuts to their defaults? Do you want to restore all shortcuts to their defaults? @@ -8014,12 +8023,12 @@ iOS App - + iOS App Scan the QR code or click <a href="%s">download</a> to install the iOS app from the App Store. - + Scan the QR code or click <a href="%s">download</a> to install the iOS app from the App Store. @@ -8646,47 +8655,47 @@ This author does not exist, do you want to add them? - + This author is already in the list. This author is already in the list. - + 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. 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. - + Add Topic Add Topic - + This topic does not exist, do you want to add it? This topic does not exist, do you want to add it? - + This topic is already in the list. This topic is already in the list. - + 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. 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. - + You need to type in a song title. You need to type in a song title. - + You need to type in at least one verse. You need to type in at least one verse. - + You need to have an author for this song. You need to have an author for this song. @@ -8711,7 +8720,7 @@ Remove &All - + Open File(s) Open File(s) @@ -8726,14 +8735,14 @@ <strong>Warning:</strong> You have not entered a verse order. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order Invalid Verse Order @@ -8743,17 +8752,17 @@ &Edit Author Type - + Edit Author Type Edit Author Type - + Choose type for this author Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. @@ -8780,36 +8789,38 @@ Authors, Topics && Songbooks - + Add Songbook Add Songbook - + This Songbook does not exist, do you want to add it? This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found File not found - + Unable to find the following file: %s Do you want to remove the entry from the song? - + Unable to find the following file: +%s +Do you want to remove the entry from the song? @@ -9268,7 +9279,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Not a valid OpenLP 2 song database. @@ -9325,9 +9336,9 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. - + File is not in XML-format, which is the only format supported. @@ -9402,107 +9413,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Could not add your author. - + This author already exists. This author already exists. - + Could not add your topic. Could not add your topic. - + This topic already exists. This topic already exists. - + Could not add your book. Could not add your book. - + This book already exists. This book already exists. - + Could not save your changes. Could not save your changes. - + Could not save your modified author, because the author already exists. Could not save your modified author, because the author already exists. - + Could not save your modified topic, because it already exists. Could not save your modified topic, because it already exists. - + Delete Author Delete Author - + Are you sure you want to delete the selected author? Are you sure you want to delete the selected author? - + This author cannot be deleted, they are currently assigned to at least one song. This author cannot be deleted, they are currently assigned to at least one song. - + Delete Topic Delete Topic - + Are you sure you want to delete the selected topic? Are you sure you want to delete the selected topic? - + This topic cannot be deleted, it is currently assigned to at least one song. This topic cannot be deleted, it is currently assigned to at least one song. - + Delete Book Delete Book - + Are you sure you want to delete the selected book? Are you sure you want to delete the selected book? - + This book cannot be deleted, it is currently assigned to at least one song. This book cannot be deleted, it is currently assigned to at least one song. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? The author %s already exists. Would you like to make songs with author %s use the existing author %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? The book %s already exists. Would you like to make songs with book %s use the existing book %s? diff -Nru openlp-2.4.5/resources/i18n/es.ts openlp-2.4.6/resources/i18n/es.ts --- openlp-2.4.5/resources/i18n/es.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/es.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3932,12 +3932,12 @@ OpenLP.LanguageManager - + Language Idioma - + Please restart OpenLP to use your new language setting. Por favor reinicie OpenLP para usar su nuevo idioma. @@ -4232,7 +4232,7 @@ Tema predeterminado: %s - + English Please add the name of your language here Spanish @@ -4373,17 +4373,17 @@ Archivo de Preferencias OpenLP (*.conf) - + New Data Directory Error Error en el Nuevo Directorio de Datos - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Copiando datos OpenLP a una nueva ubicación - %s - Por favor espere a que finalice la copia - + OpenLP Data directory copy failed %s @@ -5944,12 +5944,12 @@ Atajo - + Duplicate Shortcut Duplicar Atajo - + The shortcut "%s" is already assigned to another action, please use a different shortcut. El atajo "%s" esta asignado a otra acción, por favor utilize un atajo diferente. @@ -5984,12 +5984,12 @@ Restuarar el atajo predeterminado para esta acción. - + Restore Default Shortcuts Restaurar los Atajos Predeterminados - + Do you want to restore all shortcuts to their defaults? ¿Quiere restaurar todos los atajos a su valor original? @@ -8658,47 +8658,47 @@ Este autor no existe, ¿desea agregarlo? - + This author is already in the list. Este autor ya está en la lista. - + 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. No ha seleccionado un autor válido. Seleccione un autor de la lista o ingrese un nombre nuevo y presione el botón "Agregar Autor a Canción" para agregar el autor nuevo. - + Add Topic Agregar Categoría - + This topic does not exist, do you want to add it? Esta categoría no existe, ¿desea agregarla? - + This topic is already in the list. Esta categoría ya está en la lista. - + 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. No seleccionado una categoría válida. Seleccione una categoría de la lista o ingrese una nueva y presione el botón "Agregar Categoría a Canción" para añadir la categoría nueva. - + You need to type in a song title. Debe escribir un título. - + You need to type in at least one verse. Debe agregar al menos un verso. - + You need to have an author for this song. Debe ingresar un autor para esta canción. @@ -8723,7 +8723,7 @@ Quitar &Todo - + Open File(s) Abrir Archivo(s) @@ -8738,14 +8738,14 @@ <strong>Advertencia:</strong> No ingresó el orden de las estrofas. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. No se encuentra el verso "%(invalid)s". Entradas válidas son %(valid)s. Por favor ingrese versos separados por espacios. - + Invalid Verse Order Orden de Versos Inválido @@ -8755,17 +8755,17 @@ &Editar Tipo de Autor - + Edit Author Type Editar el Tipo de Autor - + Choose type for this author Seleccione el tipo para este autor. - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. No hay Versículos correspondientes a "%(invalid)s". Entradas válidas son %(valid)s. @@ -8792,32 +8792,32 @@ Autores, Categorías e Himnarios - + Add Songbook Agregar Himnario - + This Songbook does not exist, do you want to add it? Este himnario no existe, ¿desea agregarlo? - + This Songbook is already in the list. Este Himnario ya está en la lista. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. No ha seleccionado un Himnario válido. Seleccione un Himnario de la lista o ingrese un Himnario nuevo y presione el botón "Agregar a Canción" para agregar el Himnario nuevo. - + File not found Archivo no encontrado - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9282,7 +9282,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. No es una base de datos de canciones OpenLP 2 válida. @@ -9339,7 +9339,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. Archivo no en formato XML, que es el único soportado. @@ -9416,107 +9416,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. No se pudo agregar el autor. - + This author already exists. Este autor ya existe. - + Could not add your topic. No se pudo agregar la categoría. - + This topic already exists. Esta categoría ya existe. - + Could not add your book. No se pudo agregar el himnario. - + This book already exists. Este himnario ya existe. - + Could not save your changes. No se pudo guardar los cambios. - + Could not save your modified author, because the author already exists. No se pudo guardar el autor, porque este ya existe. - + Could not save your modified topic, because it already exists. No se pudo guardar la categoría, porque esta ya existe. - + Delete Author Borrar Autor - + Are you sure you want to delete the selected author? ¿Desea eliminar el autor seleccionado? - + This author cannot be deleted, they are currently assigned to at least one song. No se puede eliminar el autor, esta asociado con al menos una canción. - + Delete Topic Borrar Categoría - + Are you sure you want to delete the selected topic? ¿Desea eliminar la categoría seleccionada? - + This topic cannot be deleted, it is currently assigned to at least one song. No se puede eliminar la categoría, esta asociada con al menos una canción. - + Delete Book Eliminar Libro - + Are you sure you want to delete the selected book? ¿Desea eliminar el himnario seleccionado? - + This book cannot be deleted, it is currently assigned to at least one song. Este himnario no se puede eliminar, esta asociado con al menos una canción. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? El autor %s ya existe. ¿Desea que las canciones con el autor %s utilizen el existente %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? La categoría %s ya existe. ¿Desea que las canciones con la categoría %s utilizen la existente %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? El himnario %s ya existe. ¿Desea que las canciones con el himnario %s utilizen el existente %s? diff -Nru openlp-2.4.5/resources/i18n/et.ts openlp-2.4.6/resources/i18n/et.ts --- openlp-2.4.5/resources/i18n/et.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/et.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3918,12 +3918,12 @@ OpenLP.LanguageManager - + Language Keel - + Please restart OpenLP to use your new language setting. Uue keele kasutamiseks käivita OpenLP uuesti. @@ -4218,7 +4218,7 @@ Vaikimisi kujundus: %s - + English Please add the name of your language here Estonian @@ -4359,17 +4359,17 @@ OpenLP eksporditud sätete fail (*.conf) - + New Data Directory Error Uue andmekausta viga - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish OpenLP andmete kopeerimine uude andmekataloogi - %s - palun oota, kuni kopeerimine lõpeb... - + OpenLP Data directory copy failed %s @@ -5930,12 +5930,12 @@ Kiirklahv - + Duplicate Shortcut Dubleeriv kiirklahv - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Kiirklahv "%s" on juba seotud teise tegevusega, kasuta mingit muud kiirklahvi. @@ -5970,12 +5970,12 @@ Selle tegevuse vaikimisi kiirklahvi taastamine. - + Restore Default Shortcuts Vaikimisi kiirklahvide taastamine - + Do you want to restore all shortcuts to their defaults? Kas tahad taastada kõigi kiirklahvide vaikimisi väärtused? @@ -8645,47 +8645,47 @@ Seda autorit veel pole, kas tahad autori lisada? - + This author is already in the list. See autor juba on loendis. - + 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. Sa ei ole valinud ühtegi sobilikku autorit. Vali autor loendist või sisesta uue autori nimi ja klõpsa uue nupul "Lisa laulule autor". - + Add Topic Teema lisamine - + This topic does not exist, do you want to add it? Sellist teemat pole. Kas tahad selle lisada? - + This topic is already in the list. See teema juba on loendis. - + 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. Sa pole valinud sobivat teemat. Vali teema kas loendist või sisesta uus teema ja selle lisamiseks klõpsa nupule "Lisa laulule teema". - + You need to type in a song title. Pead sisestama laulu pealkirja. - + You need to type in at least one verse. Pead sisestama vähemalt ühe salmi. - + You need to have an author for this song. Pead lisama sellele laulule autori. @@ -8710,7 +8710,7 @@ Eemalda &kõik - + Open File(s) Failide avamine @@ -8725,14 +8725,14 @@ <strong>Hoiatus:</strong> sa pole sisestanud salmide järjekorda. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Pole salmi, mis vastaks "%(invalid)s". Sobivad kanded on %(valid)s. Palun eralda salmid tühikutega. - + Invalid Verse Order Sobimatu salmijärjekord @@ -8742,17 +8742,17 @@ &Muuda autori liiki - + Edit Author Type Autori liigi muutmine - + Choose type for this author Vali selle autori liik - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Pole salme, mis vastaksid "%(invalid)s". Sobivad kanded on %(valid)s. @@ -8779,32 +8779,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Faili ei leitud - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9267,7 +9267,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. See pole korrektne OpenLP 2 laulude andmebaas. @@ -9324,7 +9324,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9401,107 +9401,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Autori lisamine pole võimalik. - + This author already exists. See autor on juba olemas. - + Could not add your topic. Sinu teema lisamine pole võimalik. - + This topic already exists. Teema on juba olemas. - + Could not add your book. Lauliku lisamine pole võimalik. - + This book already exists. See laulik on juba olemas. - + Could not save your changes. Muudatuste salvestamine pole võimalik. - + Could not save your modified author, because the author already exists. Sinu muudetud autorit pole võimalik salvestada, kuna autor on juba olemas. - + Could not save your modified topic, because it already exists. Sinu muudetud teemat pole võimalik salvestada, kuna selline on juba olemas. - + Delete Author Autori kustutamine - + Are you sure you want to delete the selected author? Kas oled kindel, et tahad kustutada valitud autori? - + This author cannot be deleted, they are currently assigned to at least one song. Seda autorit pole võimalik kustutada, kuna ta on märgitud vähemalt ühe laulu autoriks. - + Delete Topic Teema kustutamine - + Are you sure you want to delete the selected topic? Kas oled kindel, et tahad valitud teema kustutada? - + This topic cannot be deleted, it is currently assigned to at least one song. Seda teemat pole võimalik kustutada, kuna see on märgib vähemalt ühte laulu. - + Delete Book Lauliku kustutamine - + Are you sure you want to delete the selected book? Kas oled kindel, et tahad valitud lauliku kustutada? - + This book cannot be deleted, it is currently assigned to at least one song. Seda laulikut pole võimalik kustutada, kuna vähemalt üks laul kuulub sellesse laulikusse. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Autor %s on juba olemas. Kas sa tahad, et laulud autoriga %s liidetaks olemasolevale autorile %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Teema %s on juba olemas. Kas sa tahad, et laulud teemaga %s kasutaksid olemasolevat teemat %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Laulik %s on juba olemas. Kas sa tahad, et lauliku %s laulud liidetaks olemasoleva laulikuga %s? diff -Nru openlp-2.4.5/resources/i18n/fi.ts openlp-2.4.6/resources/i18n/fi.ts --- openlp-2.4.5/resources/i18n/fi.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/fi.ts 2017-03-31 18:33:35.000000000 +0000 @@ -4016,12 +4016,12 @@ OpenLP.LanguageManager - + Language Kieli - + Please restart OpenLP to use your new language setting. Ole hyvä ja käynnistä OpenLP uudelleen käyttääksesi uusia kieliasetuksia. @@ -4316,7 +4316,7 @@ Yleinen teema: %s - + English Please add the name of your language here Suomi @@ -4459,18 +4459,18 @@ OpenLP:n asetukset (*.conf) - + New Data Directory Error Virhe uudessa tiedostokansiossa - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopioidaan OpenLP:n tiedostoja uuteen tiedostokansion sijaintiin - %s - Ole hyvä ja odota kopioinnin loppumista. - + OpenLP Data directory copy failed %s @@ -6043,12 +6043,12 @@ Pikanäppäin - + Duplicate Shortcut Painike on jo käytössä - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Pikanäppäin "%s" on varattu jo toiseen käyttöön, ole hyvä ja valitse jokin toinen. @@ -6083,12 +6083,12 @@ Palauta toiminnon oletusarvoinen pikanäppäin. - + Restore Default Shortcuts Palauta oletusarvoiset pikanäppäimet - + Do you want to restore all shortcuts to their defaults? Oletko varma, että haluat palauttaa kaikki pikanäppäimet oletusarvoiksi. @@ -8818,47 +8818,47 @@ Tätä tekijää ei ole olemassa, haluatko lisätä sen? - + This author is already in the list. Tämä tekijä on jo luettelossa. - + 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. Sinun pitää valita kelvollinen tekijä. Valitse tekijä joko luettelosta tai kirjoita uusi tekijä ja paina "Lisää tekijä lauluun" -painiketta. - + Add Topic Lisää aihe - + This topic does not exist, do you want to add it? Tätä aihetta ei ole olemassa, tahdotko sinä lisätä sen? - + This topic is already in the list. Tämä aihe on jo luettelossa. - + 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. <font size="4">Aihe ei voi olla tyhjä, kirjoita haluttu aihe tai<br> valitse jo olemassa oleva aihe listasta.<font size="4"> - + You need to type in a song title. Laulun ”Nimi” ei voi olla tyhjä. - + You need to type in at least one verse. Sinun pitää syöttää ainakin yksi jae. - + You need to have an author for this song. Sinun pitää määritellä tekijä tälle laululle. @@ -8883,7 +8883,7 @@ Poista &Kaikki - + Open File(s) Avaa tiedosto(t) @@ -8898,14 +8898,14 @@ <strong>Huom:</strong> Voit halutessasi muuttaa säkeiden järjestystä kirjaamalla lyhenteet kenttään. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Ei löydy vastinetta jakeelle "%(invalid)". Kelvolliset jaeviitteet ovat %(valid) Ole hyvä ja syötä jaeviitteet välilyönnein erotettuina. - + Invalid Verse Order Säkeiden järjestys on virheellinen @@ -8915,17 +8915,17 @@ &Muokkaa tekijän tyyppiä - + Edit Author Type Muokkaa tekijän tyyppiä - + Choose type for this author Valitse tyyppi tällä tekijälle - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Ei löydy vastinetta jakeille "%(invalid)s". Kelvollisia jaeviitteitä ovat %(valid)s @@ -8952,33 +8952,33 @@ Tekijät - Aiheet - Laulukirjat - + Add Songbook Lisää Laulukirja - + This Songbook does not exist, do you want to add it? Laulukirjaa ei ole olemassa, haluatko luoda sen? - + This Songbook is already in the list. Laulukirja on jo listassa - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Et ole valinnut kelvollista laulukirjaa. Valitse laulukirja listasta tai lisää uusi laulukirja painamalla ”Lisää lauluun” painiketta. - + File not found Tiedostoa ei löydy - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9447,7 +9447,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Valittu tiedosto ei ole yhteensopiva OpenLP 2:n tietokanta @@ -9504,7 +9504,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. Tiedosto ei ole XML-muodossa, muita tiedostomuotoja ei tueta. @@ -9581,107 +9581,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Tekijää ei voida lisätä. - + This author already exists. Tämä tekijä on jo olemassa. - + Could not add your topic. Aihetta ei voida lisätä. - + This topic already exists. Aihe on jo olemassa. - + Could not add your book. Kirjaa ei voida lisätä. - + This book already exists. Tämä kirja on jo olemassa. - + Could not save your changes. Muutoksia ei voida tallentaa. - + Could not save your modified author, because the author already exists. Ei voida tallentaa muokattua tekijää, koska tekijä on jo olemassa. - + Could not save your modified topic, because it already exists. Ei voida tallentaa muokattua aihetta, koska se on jo olemassa. - + Delete Author Poista tekijä - + Are you sure you want to delete the selected author? Oletko varma, että haluat poistaa valitun tekijän? - + This author cannot be deleted, they are currently assigned to at least one song. Tätä tekijää ei voida poistaa, koska sitä käytetään ainakin yhdessä laulussa. - + Delete Topic Poista aihe - + Are you sure you want to delete the selected topic? Oletko varma, että haluat poistaa valitun aiheen? - + This topic cannot be deleted, it is currently assigned to at least one song. Tätä aihetta ei voi poistaa, koska se on käytössä ainakin yhdessä laulussa. - + Delete Book Poista kirja - + Are you sure you want to delete the selected book? Haluatko varmasti poistaa valitun kirjan? - + This book cannot be deleted, it is currently assigned to at least one song. Tätä kirjaa ei voi poistaa, koska sitä käytetään ainakin yhdessä laulussa. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Tekijä %s on jo olemassa. Tahdotko muuttaa ne laulut, jotka on tehnyt %s käyttämään tekijänä %s. - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Aihe %s on jo olemassa. Tahdotko muuttaa laulut aiheella %s käyttämään olemassa olevaa aihetta %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Kirja %s on jo olemassa. Tahdotko muuttaa ne laulut, jotka kuuluvat kirjaan %s kuulumaan kirjaan %s. diff -Nru openlp-2.4.5/resources/i18n/fr.ts openlp-2.4.6/resources/i18n/fr.ts --- openlp-2.4.5/resources/i18n/fr.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/fr.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3910,12 +3910,12 @@ OpenLP.LanguageManager - + Language Langage - + Please restart OpenLP to use your new language setting. Veuillez redémarrer OpenLP pour utiliser votre nouveau paramétrage de langue. @@ -4210,7 +4210,7 @@ Thème par défaut : %s - + English Please add the name of your language here Français @@ -4351,17 +4351,17 @@ Fichier d'export de la configuration d'OpenLP (*.conf) - + New Data Directory Error Erreur du nouveau dossier de données - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Copie des données OpenLP au nouvel emplacement - %s - Veuillez attendre que la copie se termine - + OpenLP Data directory copy failed %s @@ -5922,12 +5922,12 @@ Raccourci - + Duplicate Shortcut Raccourci dupliqué - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Le raccourci "%s" est déjà assigné à une autre action, veuillez utiliser un autre raccourci. @@ -5962,12 +5962,12 @@ Restaure le raccourci par défaut de cette action. - + Restore Default Shortcuts Restaure les raccourcis par défaut - + Do you want to restore all shortcuts to their defaults? Voulez vous restaurer tous les raccourcis par leur valeur par défaut ? @@ -8638,47 +8638,47 @@ Cet auteur n'existe pas, voulez-vous l'ajouter ? - + This author is already in the list. Cet auteur ce trouve déjà dans la liste. - + 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. Vous n'avez pas sélectionné un auteur valide. Vous pouvez sélectionner un auteur dans la liste, ou entrer le nom d'un nouvel auteur et cliquez sur "Ajouter un auteur au Chant". - + Add Topic Ajoute un sujet - + This topic does not exist, do you want to add it? Ce sujet n'existe pas voulez-vous l'ajouter ? - + This topic is already in the list. Ce sujet ce trouve déjà dans la liste. - + 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. Vous n'avez pas sélectionné de sujet valide. Vous pouvez sélectionner un sujet dans la liste, ou entrer le nom d'un nouveau sujet et cliquez sur "Ajouter un sujet au Chant". - + You need to type in a song title. Vous devez entrer un titre pour ce chant. - + You need to type in at least one verse. Vous devez entrer au moins un paragraphe. - + You need to have an author for this song. Vous devez entrer un auteur pour ce chant. @@ -8703,7 +8703,7 @@ Supprime &tout - + Open File(s) Ouvrir un(des) fichier(s) @@ -8718,14 +8718,14 @@ <strong>Attention :</strong> Vous n'avez pas entré d'ordre de verset. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Il n'y a pas de strophe correspondant à "%(invalid)s". Les valeurs possibles sont %(valid)s. Veuillez entrer les strophes séparées par des espaces. - + Invalid Verse Order Ordre des paragraphes invalides @@ -8735,17 +8735,17 @@ &Modifier le type d'auteur - + Edit Author Type Modifier le type d'auteur - + Choose type for this author Choisir un type pour cet auteur - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Il n'y a pas de strophe correspondant à "%(invalid)s". Les valeurs possibles sont %(valid)s. @@ -8772,32 +8772,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Fichier non trouvé - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9260,7 +9260,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Base de données de chant OpenLP 2 invalide. @@ -9317,7 +9317,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9394,107 +9394,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Impossible d'ajouter votre auteur. - + This author already exists. Cet auteur existe déjà. - + Could not add your topic. Impossible d'ajouter votre sujet. - + This topic already exists. Ce sujet existe déjà. - + Could not add your book. Impossible d'ajouter votre carnet de chants. - + This book already exists. Ce carnet de chants existe déjà. - + Could not save your changes. Impossible d'enregistrer vos modifications. - + Could not save your modified author, because the author already exists. Impossible d'enregistrer vos modifications de l'auteur, car l'auteur existe déjà. - + Could not save your modified topic, because it already exists. Impossible d'enregistrer vos modifications du sujet, car le sujet existe déjà. - + Delete Author Supprime l'auteur - + Are you sure you want to delete the selected author? Êtes-vous sûr de bien vouloir supprimer l'auteur sélectionné ? - + This author cannot be deleted, they are currently assigned to at least one song. Cet auteur ne peut être supprimé, il est actuellement utilisé par au moins un chant. - + Delete Topic Supprime le sujet - + Are you sure you want to delete the selected topic? Êtes-vous sûr de bien vouloir supprimer le sujet sélectionné ? - + This topic cannot be deleted, it is currently assigned to at least one song. Ce sujet ne peut être supprimé, il est actuellement utilisé par au moins un chant. - + Delete Book Supprime le carnet de chants - + Are you sure you want to delete the selected book? Êtes-vous sûr de bien vouloir supprimer le carnet de chants sélectionné ? - + This book cannot be deleted, it is currently assigned to at least one song. Ce carnet de chants ne peut être supprimé, il est actuellement utilisé par au moins un chant. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? L'auteur %s existe déjà. Voulez-vous faire en sorte que les chants avec l'auteur %s utilise l'auteur existant %s ? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Le sujet %s existe déjà. Voulez-vous faire en sorte que les chants avec le sujet %s utilise le sujet existant %s ? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Le carnet de chants %s existe déjà. Voulez-vous faire en sorte que les chants du carnet de chants %s utilisent le carnet de chants existant %s ? @@ -9650,7 +9650,7 @@ Stop - + Arrêt diff -Nru openlp-2.4.5/resources/i18n/hu.ts openlp-2.4.6/resources/i18n/hu.ts --- openlp-2.4.5/resources/i18n/hu.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/hu.ts 2017-03-31 18:33:35.000000000 +0000 @@ -2443,7 +2443,7 @@ 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 volunteering by using the button below. - OpenLP <version><revision> – Nyílt forrású dalszöveg vetítő + OpenLP <version><revision> – Nyílt forrású dalszövegvetítő Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszövegvetítő szabad szoftver, mely használható énekek, bibliai versek, videók, képek és bemutatók (ha az Impress, a 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. @@ -3927,12 +3927,12 @@ OpenLP.LanguageManager - + Language Nyelv - + Please restart OpenLP to use your new language setting. A nyelvi beállítások az OpenLP újraindítása után lépnek érvénybe. @@ -4227,7 +4227,7 @@ Alapértelmezett téma: %s - + English Please add the name of your language here Magyar @@ -4368,17 +4368,17 @@ OpenLP exportált beállítófájl (*.conf) - + New Data Directory Error Új adatmappahiba - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Az OpenLP adatok új helyre való másolása folyamatban ‒ %s ‒ Türelem a folyamat befejeződéséig - + OpenLP Data directory copy failed %s @@ -5939,12 +5939,12 @@ Gyorsbillentyű - + Duplicate Shortcut Azonos gyorsbillentyű - + The shortcut "%s" is already assigned to another action, please use a different shortcut. A gyorsbillentyű már foglalt: %s @@ -5979,12 +5979,12 @@ Az eredeti gyorsbillentyű visszaállítása. - + Restore Default Shortcuts Alapértelmezett gyorsbillentyűk visszaállítása - + Do you want to restore all shortcuts to their defaults? Valóban minden gyorsbillentyű visszaállítandó az alapértelmezettjére? @@ -8652,47 +8652,47 @@ Ez a szerző még nem létezik, valóban hozzáadható? - + This author is already in the list. 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. Szerzőt hozzáadni a listából való választással vagy a nevének beírása utána a „Hozzáadás” gombra való kattintással lehet. - + Add Topic Témakör hozzáadása - + This topic does not exist, do you want to add it? Ez a témakör még nem létezik, valóban hozzáadható? - + This topic is already in the list. A témakör már benne van a listában. - + 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. Témakört hozzáadni a listából való választással vagy a megnevezésének beírása utána a „Hozzáadás” gombra való kattintással lehet. - + You need to type in a song title. Meg kell adni a dal címét. - + You need to type in at least one verse. Legalább egy versszakot meg kell adni. - + You need to have an author for this song. Meg kell adni egy szerzőt ehhez a dalhoz. @@ -8717,7 +8717,7 @@ Fájlok &eltávolítása - + Open File(s) Fájlok megnyitása @@ -8732,14 +8732,14 @@ <strong>Figyelmeztetés:</strong> A versszaksorrend nincs megadva. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Nincs érvénytelen versszak: „%(invalid)s”. Az érvényes bejegyzések: „%(valid)s”. A versszakokat szóközzel elválasztva kell megadni. - + Invalid Verse Order Érvénytelen versszaksorrend @@ -8749,17 +8749,17 @@ Szerző&típus szerkesztése - + Edit Author Type Szerzőtípus szerkesztése - + Choose type for this author Ki kell jelölni a szerző típusát - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Nincsenek ezeknek megfelelő versszakok: „%(invalid)s”. Az érvényes bejegyzések: „%(valid)s”. @@ -8786,32 +8786,32 @@ Szerző, témakör és könyv - + Add Songbook Énekeskönyv hozzáadása - + This Songbook does not exist, do you want to add it? Ez az énekeskönyv még nem létezik, valóban hozzáadható? - + This Songbook is already in the list. Ez a énekeskönyv már szerepel a listában. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Nincs kijelölve egyetlen énekeskönyv sem. Énekeskönyvet hozzáadni a listából való választással vagy a megnevezésének beírása utána a „Hozzáadás” gombra való kattintással lehet. - + File not found A fájl nem található - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9276,7 +9276,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Ez nem egy OpenLP 2 daladatbázis. @@ -9333,7 +9333,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. A fájl nem XML-formátumú, holott csak ez támogatott. @@ -9410,107 +9410,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. A szerzőt nem lehet hozzáadni. - + This author already exists. Ez a szerző már létezik. - + Could not add your topic. A témakört nem lehet hozzáadni. - + This topic already exists. Ez a témakör már létezik. - + Could not add your book. A könyvet nem lehet hozzáadni. - + This book already exists. Ez a könyv már létezik. - + Could not save your changes. A módosításokat nem lehet elmenteni. - + 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. - + Could not save your modified topic, because it already exists. A módosított témakört nem lehet elmenteni, mivel már létezik. - + Delete Author Szerző törlése - + Are you sure you want to delete the selected author? Valóban törölhető a kijelölt szerző? - + 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. - + Delete Topic Témakör törlése - + Are you sure you want to delete the selected topic? Valóban törölhető a kijelölt témakör? - + This topic cannot be deleted, it is currently assigned to at least one song. Ezt a témakört nem lehet törölni, mivel jelenleg legalább egy dalhoz hozzá van rendelve. - + Delete Book Könyv törlése - + Are you sure you want to delete the selected book? Valóban törölhető a kijelölt könyv? - + This book cannot be deleted, it is currently assigned to at least one song. Ezt a könyvet nem lehet törölni, mivel jelenleg legalább egy dalhoz hozzá van rendelve. - + 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. A dal – melynek szerzője %s – kerüljön rögzítésre a már létező „%s” szerző dalai közé? - + 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. A dal – melynek témaköre: %s – kerüljön rögzítésre a már létező „%s” témakörben? - + 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. A dal – melynek könyve: %s – kerüljön rögzítésre a már létező „%s” könyvben? diff -Nru openlp-2.4.5/resources/i18n/id.ts openlp-2.4.6/resources/i18n/id.ts --- openlp-2.4.5/resources/i18n/id.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/id.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3919,12 +3919,12 @@ OpenLP.LanguageManager - + Language Bahasa - + Please restart OpenLP to use your new language setting. Silakan memulai-ulang OpenLP untuk menggunakan setelan bahasa baru. @@ -4219,7 +4219,7 @@ Tema Bawaan: %s - + English Please add the name of your language here Bahasa Inggris @@ -4360,17 +4360,17 @@ Berkas Ekspor Setelan OpenLP (*.conf) - + New Data Directory Error Kesalahan Direktori Data Baru - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Sedang menyalin data OpenLP ke lokasi direktori data baru - %s - Silakan tunggu penyalinan selesai - + OpenLP Data directory copy failed %s @@ -5931,12 +5931,12 @@ Pintasan - + Duplicate Shortcut Duplikasi Pintasan - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Pintasan "%s" sudah diterapkan untuk aksi lain, silakan gunakan Pintasan yang berbeda. @@ -5971,12 +5971,12 @@ Mengembalikan pintasan bawaan untuk aksi ini. - + Restore Default Shortcuts Mengembalikan Pintasan Bawaan - + Do you want to restore all shortcuts to their defaults? Apakah Anda ingin mengembalikan semua pintasan ke bawaan-nya masing-masing? @@ -8647,47 +8647,47 @@ Pengarang ini tidak ada, Anda ingin menambahkannya? - + This author is already in the list. Pengarang ini sudah ada dalam daftar. - + 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. Anda belum memilih pengarang yang valid. Pilihlah suatu pengarang dari daftar, atau ketik suatu pengarang baru dan klik tombol "Tambahkan Pengarang ke Lagu" untuk menambahkan pengarang baru tersebut. - + Add Topic Tambahkan Topik - + This topic does not exist, do you want to add it? Topik ini tidak ada, Anda ingin menambahkannya? - + This topic is already in the list. Topik ini sudah ada dalam daftar. - + 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. Anda belum memilih topik yang valid. Pilihlah suatu topik dari daftar, atau ketik sebuah topik baru dan klik tombol "Tambahkan Topik ke Lagu" untuk menambahkan topik baru tersebut. - + You need to type in a song title. Anda harus mengetikkan judul lagu. - + You need to type in at least one verse. Anda harus mengetikkan setidaknya satu bait. - + You need to have an author for this song. Anda harus masukkan suatu pengarang untuk lagu ini. @@ -8712,7 +8712,7 @@ Hapus &Semua - + Open File(s) Buka (beberapa) Berkas @@ -8727,14 +8727,14 @@ <strong>Peringatan:</strong> Anda belum memasukkan susunan bait. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Tidak ada bait yang sesuai dengan "%(invalid)s". Entri yang valid adalah %(valid)s. Silakan masukan bait-bait tersebut dan pisahkan dengan spasi. - + Invalid Verse Order Susunan Bait Tidak Valid @@ -8744,17 +8744,17 @@ &Sunting Jenis Pengarang - + Edit Author Type Sunting Jenis Pengarang - + Choose type for this author Pilih jenis untuk pengarang ini - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Tidak ada bait yang sesuai dengan "%(invalid)s". Entri yang valid adalah %(valid)s. @@ -8781,32 +8781,32 @@ Pengarang, Topik, && Buku Lagu - + Add Songbook Tambahkan Buku Lagu - + This Songbook does not exist, do you want to add it? Buku lagu ini tidak ada, Anda ingin menambahkannya? - + This Songbook is already in the list. Buku Lagu ini sudah ada dalam daftar. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Anda belum memilih Buku Lagu yang valid. Pilihlah sebuah Buku Lagu dari daftar, atau ketik sebuah Buku Lagu baru dan klik tombol "Tambahkan ke Lagu" untuk menambahkan Buku Lagu baru tersebut. - + File not found Berkas tidak ditemukan - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9271,7 +9271,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Bukan basis-data lagu OpenLP 2.0 yang valid. @@ -9328,7 +9328,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9405,107 +9405,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Tidak dapat menambahkan pengarang. - + This author already exists. Pengarang sudah ada. - + Could not add your topic. Tidak dapat menambahkan topik. - + This topic already exists. Topik sudah ada. - + Could not add your book. Tidak dapat menambahkan buku lagu. - + This book already exists. Buku lagu sudah ada. - + Could not save your changes. Tidak dapat menyimpan perubahan. - + Could not save your modified author, because the author already exists. Tidak dapat menyimpan pengarang yang telah dimodifikasi, karena sudah ada. - + Could not save your modified topic, because it already exists. Tidak dapat menyimpan topik yang telah dimodifikasi, karena sudah ada. - + Delete Author Hapus Pengarang - + Are you sure you want to delete the selected author? Anda yakin ingin menghapus pengarang terpilih? - + This author cannot be deleted, they are currently assigned to at least one song. Pengarang tidak dapat dihapus, karena masih terkait dengan setidaknya satu lagu. - + Delete Topic Hapus Topik - + Are you sure you want to delete the selected topic? Anda yakin ingin menghapus topik terpilih? - + This topic cannot be deleted, it is currently assigned to at least one song. Topik tidak dapat dihapus, karena masih terkait dengan setidaknya satu lagu. - + Delete Book Hapus Buku Lagu - + Are you sure you want to delete the selected book? Anda yakin ingin menghapus buku lagu terpilih? - + This book cannot be deleted, it is currently assigned to at least one song. Buku lagu tidak dapat dihapus, karena masih terkait dengan setidaknya satu lagu. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Pengarang %s sudah ada. Anda ingin membuat lagu dengan pengarang %s menggunakan pengarang %s yang sudah ada? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Topik %s sudah ada. Anda ingin membuat lagu dengan topik %s menggunakan topik %s yang sudah ada? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Buku lagu %s sudah ada. Anda ingin membuat lagu dengan buku lagu %s menggunakan buku lagu %s yang sudah ada? diff -Nru openlp-2.4.5/resources/i18n/ja.ts openlp-2.4.6/resources/i18n/ja.ts --- openlp-2.4.5/resources/i18n/ja.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/ja.ts 2017-03-31 18:33:35.000000000 +0000 @@ -1597,7 +1597,8 @@ Upgrading Bible(s): %(success)d successful%(failed_text)s Please note that verses from Web Bibles will be downloaded on demand and so an Internet connection is required. - + 聖書を更新中: 成功: %(success)d %(failed_text)s +ウェブ聖書の本文は必要に応じてダウンロードされるため、インターネット接続が必要なことに注意してください。 @@ -1776,7 +1777,7 @@ Are you sure you want to delete the "%d" selected custom slide(s)? - + 選択された%d件のカスタムスライドを削除します。宜しいですか? @@ -2002,7 +2003,7 @@ This media player uses your operating system to provide media capabilities. - + このメディアプレーヤーはビデオ再生のためにOSとやりとりを行います。 @@ -2393,7 +2394,15 @@ You may reset the data location back to the default location, or you can try to make the current location available. Do you want to reset to the default data location? If not, OpenLP will be closed so you can try to fix the the problem. - + OpenLPのデータフォルダが以下のパスに見つかりませんでした。 + +{path} + +以前に、このフォルダは既定のフォルダから変更されています。もしフォルダが取り外し可能なディバイス上にあった場合、そのディバイスが使用出来るようにする必要があります。 + +既定のデータフォルダに戻しますか? +「はい」をクリックすると既定のフォルダに戻します。 +「いいえ」をクリックするとOpenLPの開始を中断します。この問題を修正してください。 @@ -2444,32 +2453,32 @@ Project Lead - + プロジェクトリーダー Developers - + 開発者 Contributors - + コントリビューター Packagers - + パッケージャー Testers - + テスター Translators - + トランスレーター @@ -2494,17 +2503,17 @@ Greek (el) - + ギリシャ語 (el) English, United Kingdom (en_GB) - + イギリス英語 (en_GB) English, South Africa (en_ZA) - + 南アメリカ英語 (en_ZA) @@ -2539,7 +2548,7 @@ Japanese (ja) - + 日本語 (ja) @@ -2564,7 +2573,7 @@ Russian (ru) - + ロシア語 (ru) @@ -2584,7 +2593,7 @@ Documentation - + ドキュメンテーション @@ -2616,7 +2625,8 @@ Copyright (c) 2004-2017 %s Portions copyright (c) 2004-2017 %s - + 著作権 (C) 2004-2017 %s +追加の著作権 (C) 2004-2017 %s @@ -3236,12 +3246,12 @@ Please enter a description of what you were doing to cause this error. If possible, write in English. (Minimum 20 characters) - + このエラーが発生した際にどのような操作を行ったかを説明してください。可能ならば英語で入力してください。(20文字以上) 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. Also attach any files that triggered the problem. - + OpenLP は問題に直面し、復旧できませんでした。以下の情報は、開発者が問題を修正するために役立つかも知れません。bugs@openlp.org に問題が発生するまでの手順とこの問題を起こしたファイルを添えて送ってください。 @@ -3644,7 +3654,7 @@ End tag %(end)s does not match end tag for start tag %(start)s - + 終了タグ%(end)sが開始タグ%(start)sと合致しません @@ -3891,12 +3901,12 @@ OpenLP.LanguageManager - + Language 言語 - + Please restart OpenLP to use your new language setting. 新しい言語設定を使用には OpenLP を再起動してください。 @@ -4191,7 +4201,7 @@ 既定のテーマ: %s - + English Please add the name of your language here 日本語 @@ -4332,17 +4342,17 @@ OpenLP 設定ファイル (*.conf) - + New Data Directory Error 新しい保存場所のエラー - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish OpenLPデータを新しい保存場所 (%s) へコピーしています。コピーが終了するまでお待ちください。 - + OpenLP Data directory copy failed %s @@ -4420,47 +4430,47 @@ &Recent Services - + 最近の礼拝プログラム (&R) &New Service - + 新しい礼拝プログラム (&N) &Open Service - + 礼拝プログラムを開く (&O) &Save Service - + 礼拝プログラムの保存 (&S) Save Service &As... - + 名前をつけて礼拝プログラムを保存 (&A)... &Manage Plugins - + プラグインの管理 (&M) Exit OpenLP - + OpenLP を終了 Are you sure you want to exit OpenLP? - + OpenLP を終了して良いですか? &Exit OpenLP - + OpenLP を終了 (&E) @@ -4636,7 +4646,7 @@ NOTE: To use VLC you must install the %s version Will insert "32bit" or "64bit" - + 注意: VLCバージョン %s をインストールする必要があります @@ -4679,7 +4689,7 @@ Manage Plugins - + プラグインの管理 @@ -5367,12 +5377,12 @@ Delete projector (%s) %s? - + プロジェクタ (%s) %sを削除してよろしいですか? Are you sure you want to delete this projector? - + 選択されたプロジェクタを削除しますか? @@ -5903,12 +5913,12 @@ ショートカット - + Duplicate Shortcut ショートカットの重複 - + The shortcut "%s" is already assigned to another action, please use a different shortcut. このショートカット"%s"は既に他の動作に割り振られています。他のショートカットをご利用ください。 @@ -5943,12 +5953,12 @@ この動作のショートカットを初期値に戻す。 - + Restore Default Shortcuts ショートカットを初期設定に戻す - + Do you want to restore all shortcuts to their defaults? 全てのショートカットを初期設定に戻しますか? @@ -6472,14 +6482,15 @@ Unable to delete theme - + テーマを削除できません Theme is currently used %s - + 以下のテーマは使用中です +%s @@ -7526,19 +7537,19 @@ Replace live background is not available when the WebKit player is disabled. - + WebKitプレーヤが無効の場合、ライブの背景の変更はできません。 Songbook Singular - + アルバム Songbooks Plural - + アルバム @@ -7897,12 +7908,12 @@ Stage View - + ステージビュー Live View - + ライブビュー @@ -7980,17 +7991,17 @@ Scan the QR code or click <a href="%s">download</a> to install the Android app from Google Play. - + QRコードをスキャンするか<a href="%s">ダウンロード</a>をクリックしてAndroid AppをGoogle Playからインストールしてください。 iOS App - + iOS App Scan the QR code or click <a href="%s">download</a> to install the iOS app from the App Store. - + QRコードをスキャンするか<a href="%s">ダウンロード</a>をクリックしてiOS AppをApp Storeからインストールしてください。 @@ -8613,47 +8624,47 @@ アーティストが存在しません。追加しますか? - + This author is already in the list. 既にアーティストは一覧に存在します。 - + 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. 有効なアーティストを選択してください。一覧から選択するか新しいアーティストを入力し、"賛美にアーティストを追加"をクリックしてください。 - + Add Topic トピックを追加 - + This topic does not exist, do you want to add it? このトピックは存在しません。追加しますか? - + This topic is already in the list. このトピックは既に存在します。 - + 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. 有効なトピックを選択してください。一覧から選択するか新しいトピックを入力し、"賛美にトピックを追加"をクリックしてください。 - + You need to type in a song title. 賛美のタイトルを入力する必要があります。 - + You need to type in at least one verse. 最低一つのバースを入力する必要があります。 - + You need to have an author for this song. アーティストを入力する必要があります。 @@ -8678,7 +8689,7 @@ すべて削除(&A) - + Open File(s) ファイルを開く @@ -8693,14 +8704,14 @@ <strong>警告:</strong> - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. 「%(invalid)s」に対応する節がありません。有効な節は以下の通りです。スペース区切りで節を入力してください。 %(valid)s - + Invalid Verse Order 節順が正しくありません @@ -8710,72 +8721,75 @@ 著者の種類を編集 (&E) - + Edit Author Type 著者の種類を編集 - + Choose type for this author 著者の種類を選択 - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. - + 「%(invalid)s」に対応する節がありません。有効な節は以下の通りです。スペース区切りで節を入力してください。 +%(valid)s &Manage Authors, Topics, Songbooks - + アーティスト、題目、アルバムを管理(&M) Add &to Song - + 賛美に追加(&T) Re&move - + 削除 (&M) Authors, Topics && Songbooks - + アーティスト、題目、アルバム - + Add Songbook - + アルバムを追加 - + This Songbook does not exist, do you want to add it? - + アルバムが存在しません。追加しますか? - + This Songbook is already in the list. - + このアルバムは既に存在します。 - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + 有効なアルバムを選択してください。一覧から選択するか新しいアルバムを入力し、"讃美に追加"をクリックしてください。 - + File not found ファイルが見つかりません - + Unable to find the following file: %s Do you want to remove the entry from the song? - + 以下のファイルが見つかりません: +%s +このファイルを讃美から削除しますか? @@ -9105,37 +9119,37 @@ OpenLyrics or OpenLP 2 Exported Song - + OpenLyrics または OpenLP 2 からエクスポートされた讃美 OpenLP 2 Databases - + OpenLP 2 データベース LyriX Files - + LyriX ファイル LyriX (Exported TXT-files) - + LyriX (TXT形式でエクスポート) VideoPsalm Files - + VideoPsalm ファイル VideoPsalm - + VideoPsalm The VideoPsalm songbooks are normally located in %s - + VideoPsalmのアルバムは通常、%sにあります。 @@ -9143,7 +9157,7 @@ Error: %s - + エラー: %s @@ -9215,12 +9229,12 @@ Are you sure you want to delete the "%d" selected song(s)? - + %d個の讃美を削除してよろしいですか? Search Songbooks... - + アルバムを検索... @@ -9234,9 +9248,9 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. - + 有効なOpenLP 2讃美データベースではありません。 @@ -9291,9 +9305,9 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. - + ファイルがXML形式でありません。XMLのみがサポートされています。 @@ -9316,7 +9330,7 @@ Songbook Maintenance - + アルバムのメンテナンス @@ -9368,107 +9382,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. アーティストが追加できませんでした。 - + This author already exists. このアーティストは既に登録されています。 - + Could not add your topic. トピックの追加に失敗しました。 - + This topic already exists. トピックが既に存在します。 - + Could not add your book. アルバムが追加できませんでした。 - + This book already exists. 既にこのアルバムが存在します。 - + Could not save your changes. 変更が保存できませんでした。 - + Could not save your modified author, because the author already exists. 既にアーティストが登録されているため、変更を保存できませんでした。 - + Could not save your modified topic, because it already exists. 既に題目登録されているため、変更を保存できませんでした。 - + Delete Author アーティスト削除 - + Are you sure you want to delete the selected author? 選択されたアーティストを削除しますか? - + This author cannot be deleted, they are currently assigned to at least one song. 最低一つの賛美に割り振られているため、このアーティストを削除できませんでした。 - + Delete Topic トピックの削除 - + Are you sure you want to delete the selected topic? 選択されたトピックを削除しますか? - + This topic cannot be deleted, it is currently assigned to at least one song. 最低一つの賛美に割り振られているため、このトピックを削除できませんでした。 - + Delete Book アルバム削除 - + Are you sure you want to delete the selected book? 選択されたアルバムを削除しますか? - + This book cannot be deleted, it is currently assigned to at least one song. 最低一つの賛美に割り振られているため、このアルバムを削除できませんでした。 - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? アーティスト%sは既に存在します。既存のアーティスト%sを用い、アーティスト%sで賛美を作りますか? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? 題目%sは既に存在します。既存の題目%sを用い、題目%sで賛美を作りますか? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? アルバム%sは既に存在します。既存のアルバム%sを用い、アルバム%sで賛美を作りますか? @@ -9623,7 +9637,7 @@ Stop - + 停止 @@ -9651,12 +9665,12 @@ Display songbook in footer - フッターにソングブックを表示 + フッターにアルバムを表示 Display "%s" symbol before copyright info - + 著作権情報の前に「%s」を表示します @@ -9720,7 +9734,7 @@ Error: %s - + エラー: %s @@ -9728,12 +9742,12 @@ Invalid Words of Worship song file. Missing "%s" header.WoW File\nSong Words - + 無効な語句がWorship songファイルにあります。ヘッダ"%s"が見つかりません。\nSong Words Invalid Words of Worship song file. Missing "%s" string.CSongDoc::CBlock - + 無効な語句がWorship songファイルにあります。文字列"%s"が見つかりません。CSongDoc::CBlock diff -Nru openlp-2.4.5/resources/i18n/ko.ts openlp-2.4.6/resources/i18n/ko.ts --- openlp-2.4.5/resources/i18n/ko.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/ko.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3895,12 +3895,12 @@ OpenLP.LanguageManager - + Language 언어 - + Please restart OpenLP to use your new language setting. @@ -4195,7 +4195,7 @@ 기본 테마: %s - + English Please add the name of your language here Korean @@ -4334,17 +4334,17 @@ OpenLP 내보내기 설정 파일(*.conf) - + New Data Directory Error 새 데이터 디렉터리 오류 - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish OpenLP 데이터를 새 데이터 디렉터리 위치에 복사중 - %s - 복사를 마칠 때까지 기다리십시오 - + OpenLP Data directory copy failed %s @@ -5899,12 +5899,12 @@ 단축키 - + Duplicate Shortcut 단축키 중복 - + The shortcut "%s" is already assigned to another action, please use a different shortcut. "%s" 단축키를 이미 다른 동작에 할당했습니다. 다른 바로 @@ -5939,12 +5939,12 @@ 이 동작에 대한 기본 단축키를 복구합니다. - + Restore Default Shortcuts 기본 단축키 복구 - + Do you want to restore all shortcuts to their defaults? 모든 단축키를 기본 값으로 복구하시겠습니까? @@ -8611,47 +8611,47 @@ 이 작성자가 없습니다. 추가하시겠습니까? - + This author is already in the list. 목록에 이미 이 작성자가 있습니다. - + 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. - + Add Topic 주제 추가 - + This topic does not exist, do you want to add it? 이 주제가 없습니다. 추가하시겠습니까? - + This topic is already in the list. 목록에 이미 이 주제가 있습니다. - + 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. 올바른 주제를 선택하지 않았습니다. 목록에서 주제를 선택하든지 새 주제를 입력한 후 "곡에 새 주제 추가" 단추를 눌러 추가하십시오. - + You need to type in a song title. 곡 제목을 입력해야합니다. - + You need to type in at least one verse. 최소한 1절은 입력해야합니다. - + You need to have an author for this song. 이 곡의 작사가가 있어야합니다. @@ -8676,7 +8676,7 @@ 모두 제거(&A) - + Open File(s) 파일 열기 @@ -8691,13 +8691,13 @@ <strong>경고:</strong> 가사 절 순서를 입력하지 않았습니다. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order 잘못된 가사 절 순서` @@ -8707,17 +8707,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8743,32 +8743,32 @@ - + Add Songbook 곡집 추가 - + This Songbook does not exist, do you want to add it? 이 곡집이 없습니다. 추가하시겠습니까? - + This Songbook is already in the list. 이 곡집이 이미 목록에 있습니다. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. 유효한 곡집을 선택하지 않았습니다. 목록에서 곡집을 선택하거나, 새 곡집 이름을 입력한 후 "곡에 추가" 단추를 눌러 새 곡집을 추가하십시오. - + File not found 파일을 찾지 못함 - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9231,7 +9231,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9288,7 +9288,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9365,107 +9365,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. 작성자를 추가할 수 없습니다. - + This author already exists. 작성자가 이미 추가되어 있습니다. - + Could not add your topic. 주제를 추가하지 못함 - + This topic already exists. 이 주제는 이미 존재합니다. - + Could not add your book. - + This book already exists. - + Could not save your changes. 변경된 사항을 저장할 수 없습니다. - + Could not save your modified author, because the author already exists. 변경된 작성자를 저장할 수 없습니다. 이미 작성자가 존재합니다. - + Could not save your modified topic, because it already exists. 변경된 주제를 저장할 수 없습니다. 주제가 이미 존재합니다. - + Delete Author 작성자 삭제 - + Are you sure you want to delete the selected author? 모든 선택된 저자를 삭제하는 것이 확실합니까? - + This author cannot be deleted, they are currently assigned to at least one song. - + Delete Topic 주제 삭제 - + Are you sure you want to delete the selected topic? 선택된 주제를 삭제하는 것이 확실합니까? - + This topic cannot be deleted, it is currently assigned to at least one song. - + Delete Book 성경 삭제하기 - + Are you sure you want to delete the selected book? - + This book cannot be deleted, it is currently assigned to at least one song. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? diff -Nru openlp-2.4.5/resources/i18n/lt.ts openlp-2.4.6/resources/i18n/lt.ts --- openlp-2.4.5/resources/i18n/lt.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/lt.ts 2017-03-31 18:33:35.000000000 +0000 @@ -2443,7 +2443,7 @@ 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 volunteering by using the button below. - OpenLP <version><revision> - Atvirojo Kodo Giesmių Žodžių Projekcija + OpenLP <version><revision> - Atvirojo kodo giesmių žodžių projekcija OpenLP yra bažnyčioms skirta, laisva pateikčių programinė įranga, arba giesmių žodžių projekcijos programinė įranga, naudojama giesmių skaidrių, Biblijos eilučių, vaizdo, paveikslų, ir netgi pateikčių (jei Impress, PowerPoint ar PowerPoint Viewer yra įdiegti) rodymui bažnyčioje, šlovinimo metu, naudojant kompiuterį ir projektorių. @@ -3928,12 +3928,12 @@ OpenLP.LanguageManager - + Language Kalba - + Please restart OpenLP to use your new language setting. Norėdami naudotis naujais kalbos nustatymais, paleiskite OpenLP iš naujo. @@ -4228,7 +4228,7 @@ Numatytoji tema: %s - + English Please add the name of your language here Lithuanian @@ -4369,17 +4369,17 @@ OpenLP eksportuotas nustatymų failas (*.conf) - + New Data Directory Error Naujo duomenų katalogo klaida - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish OpenLP duomenys kopijuojami į naują duomenų katalogo vietą - %s - Prašome palaukti, kol bus užbaigtas kopijavimas - + OpenLP Data directory copy failed %s @@ -5940,12 +5940,12 @@ Spartusis klavišas - + Duplicate Shortcut Dublikuoti spartųjį klavišą - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Spartusis klavišas "%s" jau yra priskirtas kitam veiksmui, prašome naudoti kitą spartųjį klavišą. @@ -5980,12 +5980,12 @@ Atkurti numatytąjį šio veiksmo spartųjį klavišą. - + Restore Default Shortcuts Atkurti numatytuosius sparčiuosius klavišus - + Do you want to restore all shortcuts to their defaults? Ar norite atstatyti visų sparčiųjų klavišų numatytąsias reikšmes? @@ -8656,47 +8656,47 @@ Tokio autoriaus nėra, ar norite jį pridėti? - + This author is already in the list. Šis autorius jau yra sąraše. - + 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. Jūs nepasirinkote teisingo autoriaus. Arba pasirinkite autorių iš sąrašo, arba įrašykite naują autorių ir spustelėkite mygtuką "Pridėti prie giesmės", kad pridėtumėte naują autorių. - + Add Topic Pridėti temą - + This topic does not exist, do you want to add it? Tokios temos nėra, ar norite ją pridėti? - + This topic is already in the list. Ši tema jau yra sąraše. - + 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. Jūs nepasirinkote teisingos temos. Arba pasirinkite temą iš sąrašo, arba įrašykite naują temą ir spustelėkite mygtuką "Pridėti prie giesmės", kad pridėtumėte naują temą. - + You need to type in a song title. Turite įrašyti giesmės pavadinimą. - + You need to type in at least one verse. Turite įrašyti bent vieną posmelį. - + You need to have an author for this song. Ši giesmė privalo turėti autorių. @@ -8721,7 +8721,7 @@ Šalinti &viską - + Open File(s) Atverti failą(-us) @@ -8736,14 +8736,14 @@ <strong>Įspėjimas:</strong> Jūs neįvedėte posmelių tvarkos. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Nėra posmelio, atitinkančio "%(invalid)s". Teisingi įrašai yra %(valid)s. Prašome įvesti tarpais atskirtus posmelius. - + Invalid Verse Order Neteisinga posmelių tvarka @@ -8753,17 +8753,17 @@ &Keisti autoriaus tipą - + Edit Author Type Keisti autoriaus tipą - + Choose type for this author Pasirinkite šiam autoriui tipą - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Nėra eilučių, kurios atitiktų "%(invalid)s". Teisingi įrašai yra %(valid)s. @@ -8790,32 +8790,32 @@ Autoriai, temos ir giesmynai - + Add Songbook Pridėti giesmyną - + This Songbook does not exist, do you want to add it? Tokio giesmyno nėra, ar norite jį pridėti? - + This Songbook is already in the list. Šis giesmynas jau yra sąraše. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Jūs nepasirinkote teisingą giesmyną. Arba pasirinkite giesmyną iš sąrašo, arba įrašykite naują giesmyną ir spustelėkite mygtuką "Pridėti prie Giesmės", kad pridėtumėte naują giesmyną. - + File not found Failas nerastas - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9280,7 +9280,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Neteisinga OpenLP 2 giesmių duomenų bazė. @@ -9337,7 +9337,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. Failas nėra XML formato, kuris savo ruožtu yra vienintelis palaikomas formatas. @@ -9414,107 +9414,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Nepavyko pridėti autoriaus. - + This author already exists. Šis autorius jau yra. - + Could not add your topic. Nepavyko pridėti jūsų temos. - + This topic already exists. Tokia tema jau yra. - + Could not add your book. Nepavyko pridėti jūsų knygos. - + This book already exists. Ši knyga jau yra. - + Could not save your changes. Nepavyko įrašyti jūsų pakeitimų. - + Could not save your modified author, because the author already exists. Nepavyko įrašyti jūsų modifikuoto autoriaus, nes jis jau yra. - + Could not save your modified topic, because it already exists. Nepavyko įrašyti jūsų modifikuotos temos, nes ji jau yra. - + Delete Author Ištrinti autorių - + Are you sure you want to delete the selected author? Ar tikrai norite ištrinti pasirinktą autorių? - + This author cannot be deleted, they are currently assigned to at least one song. Šis autorius negali būti ištrintas, nes jis yra priskirtas, mažiausiai, vienai giesmei. - + Delete Topic Ištrinti temą - + Are you sure you want to delete the selected topic? Ar tikrai norite ištrinti pasirinktą temą? - + This topic cannot be deleted, it is currently assigned to at least one song. Ši tema negali būti ištrinta, nes ji yra priskirta, mažiausiai, vienai giesmei. - + Delete Book Ištrinti knygą - + Are you sure you want to delete the selected book? Ar tikrai norite ištrinti pasirinktą knygą? - + This book cannot be deleted, it is currently assigned to at least one song. Ši knyga negali būti ištrinta, nes ji yra priskirta, mažiausiai, vienai giesmei. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Autorius %s jau yra. Ar norėtumėte, kad giesmės, kurių autorius %s, naudotų esantį autorių %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Tema %s jau yra. Ar norėtumėte, kad giesmės, kurių tema %s, naudotų esančią temą %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Knyga %s jau yra. Ar norėtumėte, kad giesmės, kurių knyga %s, naudotų esančią knygą %s? diff -Nru openlp-2.4.5/resources/i18n/nb.ts openlp-2.4.6/resources/i18n/nb.ts --- openlp-2.4.5/resources/i18n/nb.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/nb.ts 2017-03-31 18:33:35.000000000 +0000 @@ -2395,7 +2395,15 @@ You may reset the data location back to the default location, or you can try to make the current location available. Do you want to reset to the default data location? If not, OpenLP will be closed so you can try to fix the the problem. - + OpenLP datakatalog ble ikke funnet + +{path} + +Denne katalogen ble tidligere endret fra OpenLP standardplassering. Hvis den nye plasseringen var på flyttbare medier, må disse gjøres tilgjengelig. + +Du kan tilbakestille datakatalogen til standardplasseringen, eller du kan prøve å gjøre den gjeldende plassering tilgjengelig. + +Ønsker du å tilbakestille til standardplassering? Hvis ikke, vil OpenLP bli stengt slik at du kan prøve å løse problemet. @@ -2638,7 +2646,8 @@ Copyright (c) 2004-2017 %s Portions copyright (c) 2004-2017 %s - + Copyright (c) 2004-2017 %s +Delvis copyright (c) 2004-2017 %s @@ -3916,12 +3925,12 @@ OpenLP.LanguageManager - + Language Språk - + Please restart OpenLP to use your new language setting. Vennligst start OpenLP på nytt for å bruke de nye språkinnstillingene. @@ -4217,7 +4226,7 @@ Standard tema: %s - + English Please add the name of your language here Norsk (bokmål) @@ -4358,17 +4367,17 @@ OpenLP eksportinnstillingsfiler (*.conf) - + New Data Directory Error Ny datakatalog feil - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopierer OpenLP data til ny datakatalogplassering - %s. Vent til kopieringen er ferdig - + OpenLP Data directory copy failed %s @@ -4628,7 +4637,7 @@ {code} : {string} - + {code} : {string} @@ -5929,12 +5938,12 @@ Hurtigtast - + Duplicate Shortcut Dublett snarvei - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Hurtigtasten "%s" er allerede brukt til en annen handling, bruk en annen hurtigtast. @@ -5969,12 +5978,12 @@ Tilbakestill til standard hurtigtast for denne handlingen. - + Restore Default Shortcuts Tilbakestill til standard hurtigtast - + Do you want to restore all shortcuts to their defaults? Ønsker du å tilbakestille alle hurtigtaster til standard verdier? @@ -8644,47 +8653,47 @@ Denne forfatteren eksisterer ikke, skal den opprettes? - + This author is already in the list. Denne forfatteren er allerede på listen. - + 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. Du har ikke valgt et gyldig forfatternavn. Enten velg en forfatter fra listen eller skriv inn en ny forfatter og klikk "Legg til forfatter" -knappen for å legge til en ny forfatter. - + Add Topic Legg til emne - + This topic does not exist, do you want to add it? Dette emnet eksisterer ikke, skal det opprettes? - + This topic is already in the list. Dette emnet eksisterer allerede i listen. - + 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. Du har ikke valgt et gyldig emne. Enten velger du et emne fra listen, eller skriv inn et nytt emne og klikk på "Legg til emne"-knappen for å legge til det nye emnet. - + You need to type in a song title. Du må oppgi sangtittel. - + You need to type in at least one verse. Du må skrive inn minst ett vers. - + You need to have an author for this song. Du må angi en forfatter til denne sangen. @@ -8709,7 +8718,7 @@ Fjern &alle - + Open File(s) Åpne fil(er) @@ -8724,14 +8733,14 @@ <strong>Advarsel:</strong> Du har ikke angitt versrekkefølge. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Det er ingen vers tilsvarende "%(invalid)s". Gyldige oppføringer er %(valid)s. Fyll inn versene adskilt med mellomrom. - + Invalid Verse Order Feil versrekkefølge @@ -8741,17 +8750,17 @@ &Rediger forfatterkategori - + Edit Author Type Rediger forfatterkategori - + Choose type for this author Velg kategori for denne forfatteren - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Det er ingen vers tilsvarende "%(invalid)s". Gyldig oppføring er %(valid)s. @@ -8778,32 +8787,32 @@ Forfattere, emner && sangbøker - + Add Songbook Legg til sangbok - + This Songbook does not exist, do you want to add it? Denne sangboken eksisterer ikke, skal den opprettes? - + This Songbook is already in the list. Denne sangboken finnes allerede i listen. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Du har ikke valgt en gyldig sangbok. Du kan enten velge en sangbok fra listen, eller lag en ny sangbok og klikk på "Tilføye sang" knappen for å legge til den nye sangboken. - + File not found Fil ikke funnet - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9268,7 +9277,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Ikke en gyldig OpenLP 2 sangdatabase. @@ -9325,7 +9334,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. Filen er ikke i XML-format som er det eneste støttede formatet. @@ -9402,107 +9411,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Kunne ikke legge til forfatteren. - + This author already exists. Denne forfatteren finnes allerede. - + Could not add your topic. Kunne ikke legge til emnet. - + This topic already exists. Dette emnet finnes allerede. - + Could not add your book. Kunne ikke legge til boken. - + This book already exists. Denne boken finnes allerede. - + Could not save your changes. Kunne ikke lagre endringene. - + Could not save your modified author, because the author already exists. Kunne ikke lagre den endrede forfatteren fordi forfatteren finnes allerede. - + Could not save your modified topic, because it already exists. Kunne ikke lagre det endrede emnet, fordi det finnes allerede. - + Delete Author Slett forfatter - + Are you sure you want to delete the selected author? Er du sikker på at du vil slette den valgte forfatteren? - + This author cannot be deleted, they are currently assigned to at least one song. Denne forfatteren kan ikke slettes. Den er for øyeblikket tilknyttet minst én sang. - + Delete Topic Slett emne - + Are you sure you want to delete the selected topic? Er du sikker på at du vil slette valgte emne? - + This topic cannot be deleted, it is currently assigned to at least one song. Dette emnet kan ikke slettes. Det er for øyeblikket tilknyttet minst én sang. - + Delete Book Slett bok - + Are you sure you want to delete the selected book? Er du sikker på at du vil slette valgte bok? - + This book cannot be deleted, it is currently assigned to at least one song. Denne boken kan ikke slettes. Den er for øyeblikket tilknyttet minst én sang. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Forfatteren %s finnes allerede. Vil du lage sanger med forfatter %s bruk den eksisterende forfatter %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Emnet %s finnes allerede. Vil du lage sanger med emne %s bruk det eksisterende emne %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Boken %s finnes allerede. Vil du lage sanger med bok %s bruk den eksisterende bok %s? diff -Nru openlp-2.4.5/resources/i18n/nl.ts openlp-2.4.6/resources/i18n/nl.ts --- openlp-2.4.5/resources/i18n/nl.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/nl.ts 2017-03-31 18:33:35.000000000 +0000 @@ -2633,7 +2633,8 @@ Copyright (c) 2004-2017 %s Portions copyright (c) 2004-2017 %s - + Copyright (c) 2004-2017 %s +Gedeelten copyright (c) 2004-2017 %s @@ -3913,12 +3914,12 @@ OpenLP.LanguageManager - + Language Taal - + Please restart OpenLP to use your new language setting. Start OpenLP opnieuw op om de nieuwe taalinstellingen te gebruiken. @@ -4213,7 +4214,7 @@ Standaardthema: %s - + English Please add the name of your language here Dutch @@ -4354,17 +4355,17 @@ OpenLP Export instellingsbestand (*.config) - + New Data Directory Error Nieuwe bestandslocatie fout - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish OpenLP data wordt nu naar de nieuwe datamaplocatie gekopieerd - %s - Een moment geduld alstublieft - + OpenLP Data directory copy failed %s @@ -4624,7 +4625,7 @@ {code} : {string} - + {code} : {string} @@ -5925,12 +5926,12 @@ Sneltoets - + Duplicate Shortcut Sneltoets dupliceren - + The shortcut "%s" is already assigned to another action, please use a different shortcut. De sneltoets "%s" wordt al voor een andere actie gebruikt. Kies een andere toetscombinatie. @@ -5965,12 +5966,12 @@ Herstel de standaard sneltoets voor de actie. - + Restore Default Shortcuts Herstel alle standaard sneltoetsen - + Do you want to restore all shortcuts to their defaults? Weet u zeker dat u alle standaard sneltoetsen wilt herstellen? @@ -8640,47 +8641,47 @@ Deze auteur bestaat nog niet, toevoegen? - + This author is already in the list. Deze auteur staat al in de lijst. - + 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. Geen auteur geselecteerd. Kies een auteur uit de lijst of voeg er een toe door de naam in te typen en op de knop "Voeg auteur toe" te klikken. - + Add Topic Voeg onderwerp toe - + This topic does not exist, do you want to add it? Dit onderwerp bestaat nog niet, toevoegen? - + This topic is already in the list. Dit onderwerp staat al in de lijst. - + 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. Geen geldig onderwerp geselecteerd. Kies een onderwerp uit de lijst of type een nieuw onderwerp en klik op "Nieuw onderwerp toevoegen". - + You need to type in a song title. Vul de titel van het lied in. - + You need to type in at least one verse. Vul minstens de tekst van één couplet in. - + You need to have an author for this song. Selecteer minimaal één auteur voor dit lied. @@ -8705,7 +8706,7 @@ &Alles verwijderen - + Open File(s) Open bestand(en) @@ -8720,14 +8721,14 @@ <strong>Waarschuwing:</strong> U hebt geen volgorde opgegeven voor de verzen. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Er is geen vers dat overeenkomen met "%(invalid)s". Geldige waarden zijn %(valid)s. Geef de verzen op gescheiden door spaties. - + Invalid Verse Order Ongeldige vers volgorde @@ -8737,17 +8738,17 @@ Aut&eurstype aanpassen - + Edit Author Type Auteurstype aanpassen - + Choose type for this author Kies het type van deze auteur - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Er zijn geen verzen die overeenkomen met "%(invalid)s". Geldige waarden zijn %(valid)s. @@ -8774,32 +8775,32 @@ Auteurs, onderwerpen && liedboeken - + Add Songbook Voeg liedboek toe - + This Songbook does not exist, do you want to add it? Dit liedboek bestaat nog niet, toevoegen? - + This Songbook is already in the list. Dit liedboek staat al in de lijst. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Geen geldig liedboek geselecteerd. Kies een liedboek uit de lijst of type de naam van een liedboek en klik op "Nieuw liedboek toevoegen". - + File not found Bestand niet gevonden - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9264,7 +9265,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Geen geldige OpenLP 2 liederendatabase. @@ -9321,7 +9322,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9398,107 +9399,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Kon de auteur niet toevoegen. - + This author already exists. Deze auteur bestaat al. - + Could not add your topic. Kon dit onderwerp niet toevoegen. - + This topic already exists. Dit onderwerp bestaat al. - + Could not add your book. Kon dit boek niet toevoegen. - + This book already exists. Dit boek bestaat al. - + Could not save your changes. De wijzigingen kunnen niet opgeslagen worden. - + Could not save your modified author, because the author already exists. Kan de auteur niet opslaan, omdat deze reeds bestaat. - + Could not save your modified topic, because it already exists. Kan dit onderwerp niet opslaan, omdat het reeds bestaat. - + Delete Author Auteur verwijderen - + Are you sure you want to delete the selected author? Weet u zeker dat u de auteur wilt verwijderen? - + This author cannot be deleted, they are currently assigned to at least one song. Deze auteur kan niet worden verwijderd omdat er nog een lied aan is gekoppeld. - + Delete Topic Onderwerp verwijderen - + Are you sure you want to delete the selected topic? Weet u zeker dat u dit onderwerp wilt verwijderen? - + This topic cannot be deleted, it is currently assigned to at least one song. Dit onderwerp kan niet worden verwijderd omdat er nog een lied aan is gekoppeld. - + Delete Book Verwijder boek - + Are you sure you want to delete the selected book? Weet u zeker dat u dit boek wilt verwijderen? - + This book cannot be deleted, it is currently assigned to at least one song. Dit boek kan niet worden verwijderd omdat er nog een lied aan is gekoppeld. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? De auteur %s bestaat al. Liederen met auteur %s aan de bestaande auteur %s koppelen? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Het onderwerp %s bestaat al. Liederen met onderwerp %s aan het bestaande onderwerp %s koppelen? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Het boek %s bestaat al. Liederen uit het boek %s aan het bestaande boek %s koppelen? diff -Nru openlp-2.4.5/resources/i18n/pl.ts openlp-2.4.6/resources/i18n/pl.ts --- openlp-2.4.5/resources/i18n/pl.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/pl.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3919,12 +3919,12 @@ OpenLP.LanguageManager - + Language Język - + Please restart OpenLP to use your new language setting. Aby użyć nowego języka uruchom ponownie OpenLP. @@ -4219,7 +4219,7 @@ Domyślny motyw: %s - + English Please add the name of your language here Polish @@ -4360,17 +4360,17 @@ Eksport pliku ustawień OpenLP (*.conf) - + New Data Directory Error Błąd nowego katalogu z danymi - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopiowanie danych OpenLP do nowej lokalizacji - %s - Proszę zaczekać, aż zakończenie - + OpenLP Data directory copy failed %s @@ -5931,12 +5931,12 @@ Skróty - + Duplicate Shortcut Powiel skróty - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Skrót "%s" już jest przypisany innemu działaniu, proszę użyć innego skrótu @@ -5971,12 +5971,12 @@ Przywróć domyślny skrót tej akcji. - + Restore Default Shortcuts Przywróć domyślne skróty - + Do you want to restore all shortcuts to their defaults? Czy chcesz przywrócić domyślne skróty? @@ -8647,47 +8647,47 @@ Ten autor nie istnieje, czy chcesz go dodać? - + This author is already in the list. Ten autor już występuje na liście. - + 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. Nie wybrałeś właściwego autora. Wybierz autora z listy lub wpisz nowego autora i wybierz "Dodaj autora do pieśni", by dodać nowego autora. - + Add Topic Dodaj temat - + This topic does not exist, do you want to add it? Ten temat nie istnieje, czy chcesz go dodać? - + This topic is already in the list. Ten temat już istnieje. - + 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. Nie wybrałeś właściwego tematu. Wybierz temat z listy lub wpisz nowy temat i wybierz "Dodaj temat pieśni", by dodać nowy temat. - + You need to type in a song title. Musisz podać tytuł pieśni. - + You need to type in at least one verse. Musisz wpisać przynajmniej jedną zwrotkę. - + You need to have an author for this song. Musisz wpisać autora pieśni. @@ -8712,7 +8712,7 @@ Usuń &wszystko - + Open File(s) Otwórz plik(i) @@ -8727,14 +8727,14 @@ <strong>Uwaga:</strong> Nie ustaliłeś kolejności zwrotek. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Nie ma zwrotki o oznaczeniu "%(invalid)s". Właściwymi oznaczeniami są: %(valid)s. Proszę, wpisz zwrotki oddzielając je spacją. - + Invalid Verse Order Niewłaściwa kolejność zwrotek @@ -8744,17 +8744,17 @@ &Edytuj typ autora - + Edit Author Type Edytuj typ autora - + Choose type for this author Wybierz typ dla tego autora - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Nie ma zwrotek o oznaczeniu "%(invalid)s". Właściwymi oznaczeniami są %(valid)s. @@ -8781,32 +8781,32 @@ Autorzy, tematy i śpiewniki - + Add Songbook Dodaj Śpiewnik - + This Songbook does not exist, do you want to add it? Ten śpiewnik nie istnieje, czy chcesz go dodać? - + This Songbook is already in the list. Ten Śpiewnik już jest na liście - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Nie wybrałeś prawidłowego Śpiewnika. Wybierz Śpiewnik z listy, lub utwórz nowy Śpiewnik i kliknij przycisk "Dodaj Pieśń" aby dodać nową pieśń do Śpiewnika - + File not found Nie znaleziono pliku - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9271,7 +9271,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Niewłaściwa baza pieśni Openlp 2.0. @@ -9328,7 +9328,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. Plik nie jest w formacie XML. Tylko ten format jest obsługiwany. @@ -9405,107 +9405,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Nie można dodać autora. - + This author already exists. Ten autor już istnieje. - + Could not add your topic. Temat nie mógł zostać dodany. - + This topic already exists. Ten temat już istnieje. - + Could not add your book. Śpiewnik nie mógł zostać dodany. - + This book already exists. Ten śpiewnik już istnieje. - + Could not save your changes. Nie można zapisać Twoich zmian. - + Could not save your modified author, because the author already exists. Nie można zapisać autora, ponieważ on już istnieje. - + Could not save your modified topic, because it already exists. Nie można zapisać tematu, ponieważ on już istnieje. - + Delete Author Usuń autora - + Are you sure you want to delete the selected author? Czy na pewno chcesz usunąć wybranego autora? - + This author cannot be deleted, they are currently assigned to at least one song. Autor nie może zostać usunięty, jest przypisany do przynajmniej jednej pieśni. - + Delete Topic Usuń temat - + Are you sure you want to delete the selected topic? Czy na pewno chcesz usunąć wybrany temat? - + This topic cannot be deleted, it is currently assigned to at least one song. Temat nie może zostać usunięty, jest przypisany do przynajmniej jednej pieśni. - + Delete Book Usuń śpiewnik - + Are you sure you want to delete the selected book? Czy na pewno chcesz usunąć wybrany śpiewnik? - + This book cannot be deleted, it is currently assigned to at least one song. Śpiewnik nie może zostać usunięty, jest przypisany do przynajmniej jednej pieśni. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Autor %s już istnieje. Czy chcesz pieśni autora %s przypisać istniejącemu autorowi %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Temat %s już istnieje. Czy chcesz pieśni o temacie %s przypisać istniejącemu tematowi %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Śpiewnik %s już istnieje. Czy chcesz pieśni ze śpiewnika %s przypisać istniejącemu śpiewnikowi %s? diff -Nru openlp-2.4.5/resources/i18n/pt_BR.ts openlp-2.4.6/resources/i18n/pt_BR.ts --- openlp-2.4.5/resources/i18n/pt_BR.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/pt_BR.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3924,12 +3924,12 @@ OpenLP.LanguageManager - + Language Idioma - + Please restart OpenLP to use your new language setting. Por favor reinicie o OpenLP para usar a nova configuração de idioma. @@ -4224,7 +4224,7 @@ Tema padrão: %s - + English Please add the name of your language here Português do Brasil @@ -4365,17 +4365,17 @@ Arquivo de Configurações do OpenLP (*.conf) - + New Data Directory Error Erro no Novo Diretório de Dados - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Copiando dados do OpenLP para o novo local do diretório de dados - %s - Por favor, aguarde a finalização da cópia - + OpenLP Data directory copy failed %s @@ -5936,12 +5936,12 @@ Atalho - + Duplicate Shortcut Atalho Repetido - + The shortcut "%s" is already assigned to another action, please use a different shortcut. O atalho "%s" já está designado para outra ação, escolha um atalho diferente. @@ -5976,12 +5976,12 @@ Restaurar o atalho padrão desta ação. - + Restore Default Shortcuts Restaurar Atalhos Padrões - + Do you want to restore all shortcuts to their defaults? Deseja restaurar todos os atalhos ao seus padrões? @@ -8653,47 +8653,47 @@ Este autor não existe, deseja adicioná-lo? - + This author is already in the list. Este autor já está na lista. - + 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. Você não selecionou um autor válido. Selecione um autor da lista, ou digite um novo autor e clique em "Adicionar Autor à Música" para adicioná-lo. - + Add Topic Adicionar Assunto - + This topic does not exist, do you want to add it? Este assunto não existe, deseja adicioná-lo? - + This topic is already in the list. Este assunto já está na lista. - + 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. Você não selecionou um assunto válido. Selecione um assunto da lista ou digite um novo assunto e clique em "Adicionar Assunto à Música" para adicioná-lo. - + You need to type in a song title. Você deve digitar um título para a música. - + You need to type in at least one verse. Você deve digitar ao menos um verso. - + You need to have an author for this song. Você precisa ter um autor para esta música. @@ -8718,7 +8718,7 @@ Excluir &Todos - + Open File(s) Abrir Arquivo(s) @@ -8733,14 +8733,14 @@ <strong>Alerta:</strong>Você não digitou uma ordem de versos. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Não é um versos correspondentes a "%(invalid)s". Entradas válidas são %(valid)s. Por favor, indique os versos separados por espaços. - + Invalid Verse Order Ordem dos Versos Inválida @@ -8750,17 +8750,17 @@ &Editar Tipo de Autor - + Edit Author Type Editar Tipo de Autor - + Choose type for this author Escolha o tipo para este autor - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Não há versos correspondentes a "%(invalid)s". As entradas válidas são %(valid)s. @@ -8787,32 +8787,32 @@ Autores, Tópicos && Hinários - + Add Songbook Adicionar Hinário - + This Songbook does not exist, do you want to add it? Este Hinário não existe, você deseja adicioná-lo? - + This Songbook is already in the list. Este Hinário já está na lista. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Você não selecionou um hinário válido. Selecione um hinário na lista, ou digite um novo hinário e clique em "Adicionar Hinário" para adicioná-lo. - + File not found Arquivo não encontrado - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9277,7 +9277,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Não é uma base de dados de músicas válido do OpenLP 2. @@ -9334,7 +9334,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. O arquivo não está no formato XML, que é o único formato suportado. @@ -9411,107 +9411,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Não foi possível adicionar seu autor. - + This author already exists. Este autor já existe. - + Could not add your topic. Não foi possível adicionar seu assunto. - + This topic already exists. Este assunto já existe. - + Could not add your book. Não foi possível adicionar seu livro. - + This book already exists. Este livro já existe. - + Could not save your changes. Não foi possível salvar suas alterações. - + Could not save your modified author, because the author already exists. Não foi possível salvar sue autor modificado, pois o autor já existe. - + Could not save your modified topic, because it already exists. O assunto modificado não pode ser salvo porque já existe. - + Delete Author Excluir Autor - + Are you sure you want to delete the selected author? Você tem certeza de que deseja excluir o autor selecionado? - + This author cannot be deleted, they are currently assigned to at least one song. Este autor não pode ser apagado, pois está associado a pelo menos uma música. - + Delete Topic Excluir Assunto - + Are you sure you want to delete the selected topic? Tem certeza de que quer apagar o assunto selecionado? - + This topic cannot be deleted, it is currently assigned to at least one song. Este assunto não pode ser apagado, pois está associado a pelo menos uma música. - + Delete Book Excluir Hinário - + Are you sure you want to delete the selected book? Tem certeza de que quer excluir o hinário selecionado? - + This book cannot be deleted, it is currently assigned to at least one song. Este hinário não pode ser excluido, pois está associado a ao menos uma música. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? O autor %s já existe. Deseja que as músicas com o autor %s usem o autor %s existente? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? O assunto %s já existe. Deseja que as músicas com o assunto %s usem o assunto %s existente? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? O hinário %s já existe. Deseja que as músicas com o hinário %s usem o hinário %s existente? diff -Nru openlp-2.4.5/resources/i18n/ru.ts openlp-2.4.6/resources/i18n/ru.ts --- openlp-2.4.5/resources/i18n/ru.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/ru.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3921,12 +3921,12 @@ OpenLP.LanguageManager - + Language Язык - + Please restart OpenLP to use your new language setting. Перезапустите OpenLP, чтобы новые языковые настройки вступили в силу. @@ -4221,7 +4221,7 @@ Тема по умолчанию: %s - + English Please add the name of your language here Русский @@ -4362,17 +4362,17 @@ Файлы экспорта настроек OpenLP (*.conf) - + New Data Directory Error Ошибка изменения каталога данных - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Копирование данных OpenLP в новый каталог: %s. Пожалуйста, подождите - + OpenLP Data directory copy failed %s @@ -5935,12 +5935,12 @@ Сочетание клавиш - + Duplicate Shortcut Дублировать сочетание клавиш - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Сочетание "%s" уже назначено для другого действия. Пожалуйста, используйте другое сочетание клавиш. @@ -5975,12 +5975,12 @@ Восстановить сочетание клавиш по умолчанию для этого действия. - + Restore Default Shortcuts Восстановить все клавиши быстрого доступа по умолчанию - + Do you want to restore all shortcuts to their defaults? Восстановить все клавиши быстрого доступа на значения по умолчанию? @@ -8651,47 +8651,47 @@ Автор не найден в базе. Хотите добавить его? - + This author is already in the list. Этот автор уже присутсвует в списке. - + 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. Не выбран автор. Выберите его из списка или введите новое имя. - + Add Topic Добавить тематику - + This topic does not exist, do you want to add it? Тематика не найдена в базе. Хотите добавить ее? - + This topic is already in the list. Тематика уже присутствует в списке. - + 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. Не выбрана тематика. Выберите ее из списка или введите новую. - + You need to type in a song title. Необходимо указать название песни. - + You need to type in at least one verse. Необходимо ввести текст песни. - + You need to have an author for this song. Необходимо добавить автора к этой песне. @@ -8716,7 +8716,7 @@ Удалить &все - + Open File(s) Открыть файл(ы) @@ -8731,14 +8731,14 @@ <strong>Предупреждение:</strong> не указан порядок куплетов. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Не найден куплет "%(invalid)s". Корректно указаны: %(valid)s. Пожалуйста, введите куплеты через пробел. - + Invalid Verse Order Некорректный порядок куплетов @@ -8748,17 +8748,17 @@ &Изменить вид авторства - + Edit Author Type Изменить вид авторства - + Choose type for this author Выберите вид авторства - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Не найдены куплеты "%(invalid)s". Корректно указаны: %(valid)s. @@ -8785,32 +8785,32 @@ Информация - + Add Songbook Добавить сборник - + This Songbook does not exist, do you want to add it? Добавить сборник? - + This Songbook is already in the list. Сборник уже в списке. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Не выбран сборник. Необходимо выбрать сборник из списка или ввести название нового сборник и нажать "Добавить к песне". - + File not found Файл не найден - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9275,7 +9275,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Файл не является базой данных OpenLP 2. @@ -9332,7 +9332,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9409,107 +9409,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Не возможно добавить вашего автора. - + This author already exists. Этот автор уже существует. - + Could not add your topic. Не удалось добавить тематику. - + This topic already exists. Эта тематика уже существует. - + Could not add your book. Не удалось добавить сборник. - + This book already exists. Этот сборник уже существует. - + Could not save your changes. Не возможно сохранить ваши изменения. - + Could not save your modified author, because the author already exists. Не возможно сохранить вашего измененного автора, так как этот автор уже существует. - + Could not save your modified topic, because it already exists. Не удалось сохранить тематику, так как она уже существует. - + Delete Author Удалить автора - + Are you sure you want to delete the selected author? Удалить выбранного автора? - + This author cannot be deleted, they are currently assigned to at least one song. Этот автор не может быть удален, он присвоен как минимум одной песне. - + Delete Topic Удалить тематику - + Are you sure you want to delete the selected topic? Удалить выбранную тематику? - + This topic cannot be deleted, it is currently assigned to at least one song. Эта тематика не может быть удалена, так как она присвоена как минимум одной песне. - + Delete Book Удалить сборник - + Are you sure you want to delete the selected book? Удалить выбранный сборник? - + This book cannot be deleted, it is currently assigned to at least one song. Этот сборник не может быть удален, он присвоена как минимум одной песне. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Автор %s уже существует. Хотите присвоить песне с автором %s существующего автора %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Тематика %s уже существует. Хотите перевести песни с тематикой %s на существующую тематику %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Сборник %s уже существует. Хотите присвоить песне со сборником %s существующий сборник %s? diff -Nru openlp-2.4.5/resources/i18n/sk.ts openlp-2.4.6/resources/i18n/sk.ts --- openlp-2.4.5/resources/i18n/sk.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/sk.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3495,7 +3495,7 @@ To 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. Internetové pripojenie nie je dostupné. Sprievodca prvým spustením potrebuje internetové pripojenie pre stiahnutie ukážok piesní, Biblií a motívov. Kliknite na tlačidlo Koniec pre spustenie aplikácie OpenLP s predvoleným nastavením a bez vzorových dát. -Ak chcete znovu spustiť sprievodcu a importovať tieto vzorové dáta na neskoršiu dobru, skontrolujte svoje internetové pripojenie a znovu spustite tohto sprievodcu výberom "Nástroje/Znovu spustiť sprievodcu prvým spustením" z OpenLP. +Ak chcete znovu spustiť sprievodcu a importovať tieto vzorové dáta neskôr, najskôr skontrolujte svoje internetové pripojenie a potom znovu spustite tohto sprievodcu výberom "Nástroje/Znovu spustiť sprievodcu prvým spustením" z OpenLP. @@ -3917,12 +3917,12 @@ OpenLP.LanguageManager - + Language Jazyk - + Please restart OpenLP to use your new language setting. Zmeny nastavenia jazyka sa prejavia po reštartovaní aplikácie OpenLP. @@ -4217,7 +4217,7 @@ Predvolený motív: %s - + English Please add the name of your language here Slovenčina @@ -4358,17 +4358,17 @@ Súbor exportovaného nastavenia OpenLP (*.conf) - + New Data Directory Error Chyba nového dátového priečinka - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopírovanie OpenLP dát do nového umiestnenia dátového priečinka - %s - Počkajte prosím na dokokončenie kopírovania. - + OpenLP Data directory copy failed %s @@ -5927,12 +5927,12 @@ Skratka - + Duplicate Shortcut Duplicitná skratka - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Skratka "%s" je už priradená inej činnosti, prosím použite inú skratku. @@ -5967,12 +5967,12 @@ Obnoviť predvolenú skratku činnosti. - + Restore Default Shortcuts Obnoviť predvolenú skratku - + Do you want to restore all shortcuts to their defaults? Chcete obnoviť všetky skratky na ich predvolené hodnoty? @@ -8006,7 +8006,7 @@ Scan the QR code or click <a href="%s">download</a> to install the Android app from Google Play. - Naskenujte QR kód alebo klinite na <a href="%s">stiahnuť</a> pre inštaláciu Android aplikácie zo služby Google Play. + Naskenujte QR kód alebo klinite <a href="%s">stiahnuť</a> pre inštaláciu Android aplikácie zo služby Google Play. @@ -8016,7 +8016,7 @@ Scan the QR code or click <a href="%s">download</a> to install the iOS app from the App Store. - Oskenuj QR kód alebo klikni <a href="%s">stiahnuť</a> pre inštaláciu iOS aplikáciu z App Store. + Naskenujte QR kód alebo kliknite <a href="%s">stiahnuť</a> pre inštaláciu iOS aplikáciu z App Store. @@ -8637,47 +8637,47 @@ Tento autor neexistuje. Chcete ho pridať? - + This author is already in the list. Tento autor je už v zozname - + 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. Nie je vybraný platný autor. Buď vyberiete autora zo zoznamu, alebo zadáte nového autora a pre pridanie nového autora kliknete na tlačidlo "Pridať autora k piesni". - + Add Topic Pridať tému - + This topic does not exist, do you want to add it? Táto téma neexistuje. Chcete ju pridať? - + This topic is already in the list. Táto téma je už v zozname. - + 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. Nie je vybraná platná téma. Buď vyberiete tému zo zoznamu, alebo zadáte novú tému a pridanie novej témy kliknete na tlačidlo "Pridať tému k piesni". - + You need to type in a song title. Je potrebné zadať názov piesne. - + You need to type in at least one verse. Je potrebné zadať aspoň jednu slohu. - + You need to have an author for this song. Pre túto pieseň je potrebné zadať autora. @@ -8702,7 +8702,7 @@ Odstrániť &Všetko - + Open File(s) Otvoriť súbor (y) @@ -8717,14 +8717,14 @@ <strong>Upozornenie:</strong> Nevložili ste poradie veršov. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Niesú žiadne verše ako "%(invalid)s". Správne sú %(valid)s, Prosím vložte verše oddelené medzerou. - + Invalid Verse Order Nesprávne poradie veršov @@ -8734,17 +8734,17 @@ &Upraviť typ autora - + Edit Author Type Úprava typu autora - + Choose type for this author Vybrať typ pre tohto autora - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. Niesú žiadne verše ako "%(invalid)s". Správne sú %(valid)s, @@ -8771,32 +8771,32 @@ Autori, témy a spevníky - + Add Songbook Pridať spevník - + This Songbook does not exist, do you want to add it? Tento spevník neexistuje. Chcete ho pridať? - + This Songbook is already in the list. Tento spevník je už v zozname. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. Nie je vybraný platný spevník. Buď vyberiete spevník zo zoznamu, alebo zadáte nový spevník a pre pridanie nového spevníku kliknete na tlačidlo "Pridať k piesni". - + File not found Súbor nebol nájdený - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9261,7 +9261,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. Neplatná databáza piesní OpenLP 2. @@ -9318,7 +9318,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. Súbor nie je XML-formát, ktorý jediný je podporovaný. @@ -9395,107 +9395,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Nie je možné pridať autora. - + This author already exists. Tento autor už existuje. - + Could not add your topic. Nie je možné pridať tému. - + This topic already exists. Táto téma už existuje - + Could not add your book. Nie je možné pridať knihu. - + This book already exists. Táto kniha už existuje. - + Could not save your changes. Nie je možné uložiť zmeny. - + Could not save your modified author, because the author already exists. Nie je možné uložiť upraveného autora, pretože tento autor už existuje. - + Could not save your modified topic, because it already exists. Nie je možné uložiť upravenú tému, pretože už existuje. - + Delete Author Zmazať autora - + Are you sure you want to delete the selected author? Ste si istý, že chcete zmazať vybraného autora? - + This author cannot be deleted, they are currently assigned to at least one song. Tento autor nemôže byť zmazaný, pretože je v súčastnosti priradený najmenej k jednej piesni. - + Delete Topic Zmazať tému - + Are you sure you want to delete the selected topic? Ste si istý, že chcete zmazať vybranú tému? - + This topic cannot be deleted, it is currently assigned to at least one song. Táto téma nemôže byť zmazaná, pretože je v súčastnosti priradená najmenej k jednej piesni. - + Delete Book Zmazať spevník - + Are you sure you want to delete the selected book? Ste si istý, že chcete zmazať vybranú knihu? - + This book cannot be deleted, it is currently assigned to at least one song. Táto kniha nemôže byť zmazaná, pretože je v súčastnosti priradená najmenej k jednej piesni. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Autor %s už existuje. Prajete si vytvoriť piesne s autorom %s a použiť už existujúceho autora %s ? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Téma %s už existuje. Prajete si vytvoriť piesne s témou %s a použiť už existujúcu tému %s ? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Kniha %s už existuje. Prajete si vytvoriť piesne s knihou %s a použiť už existujúcu knihu %s ? diff -Nru openlp-2.4.5/resources/i18n/sv.ts openlp-2.4.6/resources/i18n/sv.ts --- openlp-2.4.5/resources/i18n/sv.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/sv.ts 2017-03-31 18:33:35.000000000 +0000 @@ -10,7 +10,7 @@ Show an alert message. - Visa ett publikt meddelande. + Visa ett publikt meddelande @@ -2480,7 +2480,7 @@ Afrikaans (af) - + Afrikanska (af) @@ -2500,7 +2500,7 @@ Greek (el) - + Grekiska (el) @@ -2520,7 +2520,7 @@ Estonian (et) - + Estländska (et) @@ -2530,17 +2530,17 @@ French (fr) - + Franska (fr) Hungarian (hu) - + Ungerska (hu) Indonesian (id) - + Indonesiska (id) @@ -2550,7 +2550,7 @@ Norwegian Bokmål (nb) - + Norska Bokmål (nb) @@ -2565,12 +2565,12 @@ Portuguese, Brazil (pt_BR) - + Portugisiska, Brasilien (pt_BR) Russian (ru) - + Ryska (ru) @@ -2585,7 +2585,7 @@ Chinese(China) (zh_CN) - + Kinesiska(Kina) (zh_CN) @@ -2622,7 +2622,8 @@ Copyright (c) 2004-2017 %s Portions copyright (c) 2004-2017 %s - + Upphovsrätt (c) 2004-2017 %s +Delvis upphovsrätt (c) 2004-2017 %s @@ -3900,12 +3901,12 @@ OpenLP.LanguageManager - + Language Språk - + Please restart OpenLP to use your new language setting. Vänligen starta om OpenLP för att aktivera dina nya språkinställningar. @@ -4200,7 +4201,7 @@ Standardtema: %s - + English Please add the name of your language here Svenska @@ -4341,17 +4342,17 @@ OpenLP-inställningsfiler (*.conf) - + New Data Directory Error Ny datakatalog-fel - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish Kopierar OpenLP-data till ny plats för datakatalogen - %s - Vänta tills kopieringen är avslutad - + OpenLP Data directory copy failed %s @@ -4429,7 +4430,7 @@ &Recent Services - + &Tidigare körscheman @@ -4645,7 +4646,7 @@ NOTE: To use VLC you must install the %s version Will insert "32bit" or "64bit" - + Observera: För att använda VLC måste du installera %s-versionen @@ -5912,12 +5913,12 @@ Genväg - + Duplicate Shortcut Dubblett - + The shortcut "%s" is already assigned to another action, please use a different shortcut. Genvägen "%s" är redan kopplad till en annan åtgärd; välj en annan genväg. @@ -5952,12 +5953,12 @@ Återställ till standardgenvägen för den här åtgärden. - + Restore Default Shortcuts Återställ till standardgenvägar - + Do you want to restore all shortcuts to their defaults? Vill du återställa alla genvägar till standardvärdena? @@ -6481,7 +6482,7 @@ Unable to delete theme - + Kan inte ta bort temat @@ -8626,47 +8627,47 @@ Författaren finns inte; vill du lägga till den? - + This author is already in the list. Författaren finns redan i listan. - + 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. Du har inte valt en giltig författare. Välj antingen en författare från listan, eller skriv in en ny författare och klicka "Lägg till för sång" för att lägga till den nya författaren. - + Add Topic Lägg till ämne - + This topic does not exist, do you want to add it? Ämnet finns inte; vill du skapa det? - + This topic is already in the list. Ämnet finns redan i listan. - + 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. Du har inte valt ett giltigt ämne. Välj antingen ett ämne från listan, eller skriv in ett nytt ämne och klicka "Lägg till för sång" för att lägga till det nya ämnet. - + You need to type in a song title. Du måste ange en sångtitel. - + You need to type in at least one verse. Du måste ange åtminstone en vers. - + You need to have an author for this song. Du måste ange en författare för sången. @@ -8691,7 +8692,7 @@ &Ta bort alla - + Open File(s) Öppna fil(er) @@ -8706,14 +8707,14 @@ <strong>Varning:</strong> Du har inte angivit någon versordning. - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. Det finns ingen vers som svarar mot "%(invalid)s". Giltiga poster är %(valid)s. Ange verserna separerade med blanksteg. - + Invalid Verse Order Ogiltig versordning @@ -8723,17 +8724,17 @@ Redigera &författartyp - + Edit Author Type Redigera författartyp - + Choose type for this author Välj typ för den här författaren - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8759,32 +8760,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found Fil hittas inte - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9247,7 +9248,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9304,7 +9305,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9381,107 +9382,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. Kunde inte lägga till författaren. - + This author already exists. Författaren finns redan. - + Could not add your topic. Kunde inte lägga till ämnet. - + This topic already exists. Ämnet finns redan. - + Could not add your book. Kunde inte lägga till boken. - + This book already exists. Boken finns redan. - + Could not save your changes. Kunde inte spara ändringarna. - + Could not save your modified author, because the author already exists. Kunde inte spara den ändrade författaren eftersom den redan finns. - + Could not save your modified topic, because it already exists. Kunde inte spara det ändrade ämnet eftersom det redan finns. - + Delete Author Ta bort författare - + Are you sure you want to delete the selected author? Är du säker på att du vill ta bort den valda författaren? - + This author cannot be deleted, they are currently assigned to at least one song. Författaren kan inte tas bort; den används för närvarande av minst en sång. - + Delete Topic Ta bort ämne - + Are you sure you want to delete the selected topic? Är du säker på att du vill ta bort det valda ämnet? - + This topic cannot be deleted, it is currently assigned to at least one song. Ämnet kan inte tas bort; det används för närvarande av minst en sång. - + Delete Book Ta bort bok - + Are you sure you want to delete the selected book? Är du säker på att du vill ta bort den valda boken? - + This book cannot be deleted, it is currently assigned to at least one song. Boken kan inte tas bort; den används för närvarande av minst en sång. - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? Författaren %s finns redan. Vill du låta sånger med författaren %s använda den befintliga författaren %s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? Ämnet %s finns redan. Vill du låta sånger med ämnet %s använda det befintliga ämnet %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? Boken %s finns redan. Vill du låta sånger med boken %s använda den befintliga boken %s? diff -Nru openlp-2.4.5/resources/i18n/ta_LK.ts openlp-2.4.6/resources/i18n/ta_LK.ts --- openlp-2.4.5/resources/i18n/ta_LK.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/ta_LK.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3888,12 +3888,12 @@ OpenLP.LanguageManager - + Language மொழி - + Please restart OpenLP to use your new language setting. உங்கள் புதிய மொழி அமைப்பு பயன்படுத்த OpenLP மறுதொடக்கம் செய்க. @@ -4188,7 +4188,7 @@ இயல்புநிலை தீம்: %s - + English Please add the name of your language here ஆங்கிலம் @@ -4330,17 +4330,17 @@ OpenLP ஏற்றுமதி அமைப்புகள் கோப்ப (*.conf) - + New Data Directory Error புதிய தகவல்கள் டைரக்டரி பிழை - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish புதிய தரவு அடைவு இடத்திற்கு OpenLP தரவு நகல் - %s - நகல் முடிக்க காத்திருக்கவும - + OpenLP Data directory copy failed %s @@ -5892,12 +5892,12 @@ குறுக்கு வழி - + Duplicate Shortcut குறுக்குவழி நகல் - + The shortcut "%s" is already assigned to another action, please use a different shortcut. குறுக்கு வழி "%s" ஏற்கனவே மற்றொரு நடவடிக்கை ஒதுக்கப்படும், வேறு குறுக்குவழி பயன்படுத்தவும். @@ -5932,12 +5932,12 @@ இந்த நடவடிக்கை முன்னிருப்பு குறுக்குவழி மீட்க. - + Restore Default Shortcuts இயல்புநிலை குறுக்குவழிகள் மீட்க - + Do you want to restore all shortcuts to their defaults? அவர்கள் இயல்பாக அனைத்து குறுக்குவழிகளை மீட்க வேண்டும்? @@ -8603,47 +8603,47 @@ இந்த நூலாசிரியர் இல்லை, நீங்கள் அவர்களை சேர்க்க வேண்டுமா? - + This author is already in the list. இந்த நூலாசிரியர் பட்டியலில் ஏற்கனவே உள்ளது. - + 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. நீங்கள் சரியான நூலாசிரியர் தேர்ந்தெடுத்த இல்லை. அல்லது ஒரு புதிய நூலாசிரியர் பட்டியல், அல்லது வகை இருந்து ஒரு நூலாசிரியர் தேர்ந்தெடுக்கவும் மற்றும் புதிய நூலாசிரியர் சேர்க்க "பாடல் என ஆசிரியர் சேர்க்கவும்" பொத்தானை கிளிக் செய்யவும். - + Add Topic தலைப்பு சேர்க்கலாம் - + This topic does not exist, do you want to add it? இந்த தலைப்பை இல்லை, நீங்கள் இதை சேர்க்க வேண்டுமா? - + This topic is already in the list. இந்த தலைப்பை பட்டியலில் ஏற்கனவே உள்ளது. - + 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. நீங்கள் சரியான தலைப்பு தேர்ந்தெடுக்கவில்லை. அல்லது ஒரு புதிய தலைப்பில் ஒரு பட்டியலில் இருந்து தலைப்பை, அல்லது வகை தேர்ந்தெடுக்கவும் மற்றும் புதிய தலைப்பை சேர்க்க "பாடல் என்று தலைப்பு சேர்க்கவும்" பொத்தானை கிளிக் செய்யவும். - + You need to type in a song title. நீங்கள் ஒரு பாடலான பெயர் தட்டச்சு செய்ய வேண்டும். - + You need to type in at least one verse. நீங்கள் குறைந்தது ஒரு வசனம் தட்டச்சு செய்ய வேண்டும். - + You need to have an author for this song. இந்த பாடல் ஒரு நூலாசிரியர் இருக்க வேண்டும். @@ -8668,7 +8668,7 @@ அனைத்து &நீக்க - + Open File(s) கோப்பு (கள்) திற @@ -8684,13 +8684,13 @@ - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order @@ -8700,17 +8700,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8736,32 +8736,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found கோப்பு காணவில்லை - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9224,7 +9224,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9281,7 +9281,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9359,107 +9359,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. உங்கள் நூலாசிரியர் சேர்க்க முடியவில்லை. - + This author already exists. இந்த நூலாசிரியர் முன்பே இருக்கிறது. - + Could not add your topic. உங்கள் தலைப்பை சேர்க்க முடியவில்லை. - + This topic already exists. இந்த தலைப்பு ஏற்கனவே உள்ளது. - + Could not add your book. உங்கள் புத்தகத்தில் சேர்க்க முடியவில்லை. - + This book already exists. இந்த புத்தகம் முன்பே இருக்கிறது. - + Could not save your changes. உங்கள் மாற்றங்களை சேமிக்க முடியவில்லை. - + Could not save your modified author, because the author already exists. நூலாசிரியர் ஏற்கனவே உள்ளது, ஏனெனில், உங்கள் மணிக்கு நூலாசிரியர் காப்பாற்ற முடியவில்லை. - + Could not save your modified topic, because it already exists. இது ஏற்கனவே உள்ளது, ஏனெனில், உங்கள் மணிக்கு தலைப்பை சேமிக்க முடியவில்லை. - + Delete Author படைப்பாளர் நீக்கு - + Are you sure you want to delete the selected author? நீங்கள் தேர்ந்தெடுத்த நூலாசிரியர் நீக்க வேண்டுமா? - + This author cannot be deleted, they are currently assigned to at least one song. இந்த நூலாசிரியர் நீக்க முடியாது, அவர்கள் தற்சமயம் குறைந்தபட்சம் ஒரு பாடல் ஒதுக்கப்படும். - + Delete Topic தலைப்பு நீக்கு - + Are you sure you want to delete the selected topic? நீங்கள் தேர்ந்தெடுத்த தலைப்பு நீக்க வேண்டுமா? - + This topic cannot be deleted, it is currently assigned to at least one song. இந்த தலைப்பை நீக்க முடியாது, அது தற்சமயம் குறைந்தது ஒரு பாடல் ஒதுக்கப்படும். - + Delete Book புத்தக நீக்கு - + Are you sure you want to delete the selected book? நீங்கள் தேர்ந்தெடுத்த புத்தகம் நீக்க வேண்டுமா? - + This book cannot be deleted, it is currently assigned to at least one song. இந்த புத்தகம் நீக்க முடியாது, அது தற்சமயம் குறைந்தது ஒரு பாடல் ஒதுக்கப்படும். - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? இந்த நூலாசிரியர் %s முன்பே இருக்கிறது. நீங்கள் நூலாசிரியர் என்ற இசை செய்ய விரும்புகிறேன் %s ஏற்கனவே இருக்கும் நூலாசிரியர் பயன்படுத்தும்%s? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? இந்த தலைப்பை %s முன்பே இருக்கிறது. நீங்கள் தலைப்பை கொண்ட இசை செய்ய விரும்புகிறேன் %s ஏற்கனவே தலைப்பை பயன்படுத்த %s? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? இந்த புத்தகம் %s ஏற்கனவே உள்ளது. நீங்கள் புத்தகம் இசை செய்ய விரும்புகிறேன் %s ஏற்கனவே புத்தகத்தில் பயன்படுத்த %s? diff -Nru openlp-2.4.5/resources/i18n/th_TH.ts openlp-2.4.6/resources/i18n/th_TH.ts --- openlp-2.4.5/resources/i18n/th_TH.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/th_TH.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3891,12 +3891,12 @@ OpenLP.LanguageManager - + Language ภาษา - + Please restart OpenLP to use your new language setting. โปรดเริ่มต้นโปรแกรม OpenLP อีกครั้ง เมื่อคุณตั้งค่าภาษาใหม่ @@ -4191,7 +4191,7 @@ ธีมเริ่มต้น: %s - + English Please add the name of your language here ภาษาไทย @@ -4332,17 +4332,17 @@ ส่งออกไฟล์การตั้งค่าโปรแกรม OpenLP (*.conf) - + New Data Directory Error เกิดข้อผิดพลาดไดเรกทอรีข้อมูลใหม่ - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish กำลังคัดลอกข้อมูลโปรแกม OpenLP ไปยังตำแหน่งที่ตั้งใหม่ของไดเรกทอรีข้อมูล - %s - โปรดรอสักครู่สำหรับการคัดลอกที่จะเสร็จ - + OpenLP Data directory copy failed %s @@ -5893,12 +5893,12 @@ ทางลัด - + Duplicate Shortcut ทางลัดซ้ำกัน - + The shortcut "%s" is already assigned to another action, please use a different shortcut. ทางลัด "%s" ถูกกำหนดให้กับการกระทำอื่นแล้ว โปรดใช้ทางลัดที่ไม่เหมือนกัน @@ -5933,12 +5933,12 @@ เรียกคืนทางลัดเริ่มต้นของการกระทำนี้ - + Restore Default Shortcuts เรียกคืนทางลัดเริ่มต้น - + Do you want to restore all shortcuts to their defaults? คุณต้องการเรียกคืนค่าเริ่มต้นทางลัดทั้งหมดใช่หรือไม่? @@ -8603,47 +8603,47 @@ ชื่อผู้แต่งไม่มีอยู่ในรายการ คุณต้องการเพิ่มชื่อผู้แต่งหรือไม่? - + This author is already in the list. ชื่อผู้แต่งมีอยู่แล้วในรายการ - + 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. คุณเลือกชื่อผู้แต่งไม่ถูกต้อง เลือกชื่อใดชื่อหนึ่งจากรายการหรือพิมพ์ชื่อผู้แต่งใหม่ และคลิกที่ "เพิ่มผู้แต่งไปที่เพลง" เพื่อเพิ่มชื่อผู้แต่งใหม่ - + Add Topic เพิ่มหัวข้อ - + This topic does not exist, do you want to add it? หัวข้อไม่มีอยู่ในรายการ คุณต้องการเพิ่มหัวข้อหรือไม่? - + This topic is already in the list. หัวข้อนี้มีอยู่แล้วในรายการ - + 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. คุณเลือกหัวข้อไม่ถูกต้อง เลือกหัวข้อใดหัวข้อหนึ่งจากรายการหรือพิมพ์หัวข้อใหม่ และคลิกที่ "เพิ่มหัวข้อไปที่เพลง" เพื่อเพิ่มหัวข้อใหม่ - + You need to type in a song title. คุณต้องพิมพ์ชื่อเพลง - + You need to type in at least one verse. คุณต้องพิมพ์อย่างน้อยหนึ่งท่อน - + You need to have an author for this song. คุณต้องใส่ชื่อผู้แต่งเพลงนี้ @@ -8668,7 +8668,7 @@ &ลบออกทั้งหมด - + Open File(s) เปิดไฟล์(s) @@ -8683,13 +8683,13 @@ - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order @@ -8699,17 +8699,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8735,32 +8735,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found ไม่พบไฟล์ - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9223,7 +9223,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9280,7 +9280,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9357,107 +9357,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. ไม่สามารถเพิ่มชื่อผู้แต่งของคุณ - + This author already exists. ชื่อผู้แต่งชื่อนี้มีอยู่แล้ว - + Could not add your topic. ไม่สามารถเพิ่มหัวข้อของคุณ - + This topic already exists. หัวข้อนี้มีอยู่แล้ว - + Could not add your book. ไม่สามารถเพิ่มหนังสือของคุณ - + This book already exists. หนังสือเล่มนี้มีอยู่แล้ว - + Could not save your changes. ไม่สามารถบันทึกการเปลี่ยนแปลงของคุณ - + Could not save your modified author, because the author already exists. ไม่สามารถบันทึกชื่อผู้แต่งของคุณ เพราะชื่อผู้แต่งชื่อนี้มีอยู่แล้ว - + Could not save your modified topic, because it already exists. ไม่สามารถบันทึกหัวข้อของคุณ เพราะหัวข้อนี้มีอยู่แล้ว - + Delete Author ลบชื่อผู้แต่ง - + Are you sure you want to delete the selected author? คุณแน่ใจหรือว่า ต้องการลบชื่อผู้แต่งที่เลือก? - + This author cannot be deleted, they are currently assigned to at least one song. ชื่อผู้แต่งคนนี้ไม่สามารถลบได้ มีการกำหนดใช้อยู่ในเพลงขณะนี้อย่างน้อยหนึ่งเพลง - + Delete Topic ลบหัวข้อ - + Are you sure you want to delete the selected topic? คุณแน่ใจหรือว่า ต้องการลบหัวข้อที่เลือก? - + This topic cannot be deleted, it is currently assigned to at least one song. หัวข้อนี้ไม่สามารถลบได้ มีการกำหนดใช้อยู่ในเพลงขณะนี้อย่างน้อยหนึ่งเพลง - + Delete Book ลบหนังสือ - + Are you sure you want to delete the selected book? คุณแน่ใจหรือว่า ต้องการลบหนังสือที่เลือก? - + This book cannot be deleted, it is currently assigned to at least one song. หนังสือนี้ไม่สามารถลบได้ มีการกำหนดใช้อยู่ในเพลงขณะนี้อย่างน้อยหนึ่งเพลง - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? ชื่อผู้แต่ง %s มีอยู่แล้ว คุณต้องการกำหนดใช้ชื่อผู้แต่ง %s ให้กับเพลง ใช้ชื่อผู้แต่ง %s ที่มีอยู่? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? หัวข้อ %s มีอยู่แล้ว คุณต้องการจะกำหนดใช้หัวข้อ %s ให้กับเพลง ใช้หัวข้อ %s ที่มีอยู่? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? ชื่อหนังสือ %s มีอยู่แล้ว คุณต้องการจะกำหนดใช้ชื่อหนังสือ %s ให้กับเพลง ใช้ชื่อหนังสือ %s ที่มีอยู่? diff -Nru openlp-2.4.5/resources/i18n/zh_CN.ts openlp-2.4.6/resources/i18n/zh_CN.ts --- openlp-2.4.5/resources/i18n/zh_CN.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/zh_CN.ts 2017-03-31 18:33:35.000000000 +0000 @@ -676,13 +676,13 @@ verse Verse identifier e.g. Genesis 1 verse 1 = Genesis Chapter 1 Verse 1 - + verses Verse identifier e.g. Genesis 1 verses 1 - 2 = Genesis Chapter 1 Verses 1 to 2 - + @@ -706,13 +706,13 @@ and connecting identifier e.g. Genesis 1 verse 1 - 2 and 4 - 5 = Genesis Chapter 1 Verses 1 To 2 And Verses 4 To 5 - + end ending identifier e.g. Genesis 1 verse 1 - end = Genesis Chapter 1 Verses 1 To The Last Verse - + @@ -928,7 +928,7 @@ Show verse numbers - + 显示经节号码 @@ -1269,17 +1269,17 @@ Click to download bible list - + 点击下载圣经列表 Download bible list - + 下载圣经列表 Error during download - + 下载错误 @@ -1758,7 +1758,7 @@ You need to add at least one slide. - + 你最少需要添加一页 @@ -1843,32 +1843,32 @@ Add group - + 添加小组 Parent group: - + 上一级小组 Group name: - + 小组名字 You need to type in a group name. - + 你需要输入小组名称 Could not add the new group. - + 不能添加新的小组 This group already exists. - + 该小组已经存在 @@ -1876,27 +1876,27 @@ Select Image Group - + 选择图片小组 Add images to group: - + 添加图片到小组: No group - + 没有小组 Existing group - + 已经存在的小组 New group - + 新的小组 @@ -1949,17 +1949,17 @@ -- Top-level group -- - + 顶级小组 You must select an image or group to delete. - + 你需要选择一张图片或小组 Remove group - + 移除小组 @@ -1980,12 +1980,12 @@ Audio - + 音频 Video - + 视频 @@ -2069,17 +2069,17 @@ Select Media Clip - + 选择媒体文件 Source - + 来源 Media path: - + 媒体路径 @@ -2089,12 +2089,12 @@ Load disc - + 载入光盘 Track Details - + 曲目内容 @@ -2104,17 +2104,17 @@ Audio track: - + 音频目录 Subtitle track: - + 字幕 HH:mm:ss.z - + 小时:分钟:秒:毫秒 @@ -2124,32 +2124,32 @@ Start point: - + 起始点: Set start point - + 设置起始点 Jump to start point - + 跳至起始点 End point: - + 结束点: Set end point - + 设置结束点 Jump to end point - + 跳至结束点 @@ -2162,7 +2162,7 @@ Given path does not exists - + 提供的路径并不存在 @@ -2177,22 +2177,22 @@ CD not loaded correctly - + CD不能正确载入 The CD was not loaded correctly, please re-load and try again. - + CD不能正确载入,请重试。 DVD not loaded correctly - + DVD不能正确载入 The DVD was not loaded correctly, please re-load and try again. - + DVD不能正确载入,请重试。 @@ -2207,17 +2207,17 @@ Enter a valid name or cancel - + 输入一个有效的名字或者取消 Invalid character - + 无效的章 The name of the mediaclip must not contain the character ":" - + 媒体剪辑的名字中不可包含“:” @@ -2275,7 +2275,7 @@ VLC player required - + 需要VLC播放器 @@ -2285,7 +2285,7 @@ Load CD/DVD - + 载入 CD/DVD @@ -2300,12 +2300,12 @@ Mediaclip already saved - + 媒体剪辑已经保存 This mediaclip has already been saved - + 该媒体剪辑已经保存 @@ -2353,7 +2353,7 @@ Backup - + 备份 @@ -2363,7 +2363,7 @@ Backup of the data folder failed! - + 备份到数据文件夹失败 @@ -2373,7 +2373,7 @@ Open - + 打开 @@ -2451,27 +2451,27 @@ Developers - + 开发员 Contributors - + 贡献者 Packagers - + 打包员 Testers - + 测试员 Translators - + 翻译者 @@ -2581,7 +2581,7 @@ Chinese(China) (zh_CN) - + 简体中文 @@ -2901,7 +2901,7 @@ Thursday - + 周四 @@ -2927,7 +2927,7 @@ Restart Required - + 重新请求 @@ -2957,27 +2957,27 @@ RGB - + RGB Video - + 视频 Digital - + 数字 Storage - + 贮存 Network - + 网络 @@ -3520,7 +3520,7 @@ Downloading Resource Index - + 资源目录下载中 @@ -3545,7 +3545,7 @@ Network Error - + 网络错误 @@ -3560,7 +3560,7 @@ Unable to download some files - + 该文件己在下载队列中 @@ -3888,12 +3888,12 @@ OpenLP.LanguageManager - + Language 语言 - + Please restart OpenLP to use your new language setting. 请重新启动OpenLP来使用您新的语言设置。 @@ -4188,7 +4188,7 @@ 默认主题: %s - + English Please add the name of your language here 中文 @@ -4329,17 +4329,17 @@ OpenLP导出设定文件(*.conf) - + New Data Directory Error 新数据目录错误 - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish 正在复制OpenLP数据到新的数据目录位置 - %s - 请等待复制完成。 - + OpenLP Data directory copy failed %s @@ -4576,7 +4576,7 @@ No message - + 没有信息 @@ -5311,7 +5311,7 @@ Lamp - + @@ -5341,12 +5341,12 @@ Projector Information - + 投影机信息 No message - + 没有信息 @@ -5361,7 +5361,7 @@ Are you sure you want to delete this projector? - + 确定要删除投影机? @@ -5374,12 +5374,12 @@ Lamp - + Temperature - + 温度 @@ -5389,7 +5389,7 @@ Filter - + 滤镜 @@ -5402,17 +5402,17 @@ Projector - + 投影机 Communication Options - + 通讯选项 Connect to projectors on startup - + 开机即连接投影机 @@ -5422,7 +5422,7 @@ Poll time (seconds) - + 投票时间(seconds) @@ -5432,7 +5432,7 @@ Single dialog box - + 单个对话框 @@ -5440,17 +5440,17 @@ Duplicate IP Address - + 复制IP地址 Invalid IP Address - + 无效的IP地址 Invalid Port Number - + 无效的端口号 @@ -5757,32 +5757,32 @@ &Rename... - + &更名... Create New &Custom Slide - + 建立新的&自定义幻灯片 &Auto play slides - + &自动播放幻灯片 Auto play slides &Loop - + 自动播放幻灯片&重复播放 Auto play slides &Once - + 自动播放幻灯片&单次 &Delay between slides - + 幻灯片之间延时 @@ -5797,13 +5797,14 @@ OpenLP Service Files (*.osz);; - + OpenLP敬拜仪式文件(*.osz) File is not a valid service. The content encoding is not UTF-8. - + 文件不是一个有效的敬拜仪式。 +内容编码并不是UTF-8。 @@ -5814,7 +5815,7 @@ This file is either corrupt or it is not an OpenLP 2 service file. - + 这个文件或者已损坏或者不是一个OpenLP 2.0敬拜程序文件。 @@ -5829,7 +5830,7 @@ Input delay - + 输入延迟 @@ -5888,12 +5889,12 @@ 快捷方式 - + Duplicate Shortcut 重复的快捷键 - + The shortcut "%s" is already assigned to another action, please use a different shortcut. 快捷键 "%s" 已被指派给另一个动作,请使用一个不同的快捷键。 @@ -5928,12 +5929,12 @@ 将此动作的快捷键恢复为默认。 - + Restore Default Shortcuts 恢复为默认快捷键 - + Do you want to restore all shortcuts to their defaults? 您想将所有快捷键恢复为默认吗? @@ -7026,7 +7027,7 @@ Add group - + 添加小组 @@ -7340,7 +7341,7 @@ Projector Singular - + 投影机 @@ -8598,47 +8599,47 @@ 该作者名称不存在,您希望加入他们吗? - + This author is already in the list. 该作者已在列表上。 - + 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. 您没有选择有效的作者。从列表中选择一个作者,或者输入一个新作者名称并点击"将作者添加到歌曲"按钮来新增一个作者名。 - + Add Topic 添加题目 - + This topic does not exist, do you want to add it? 该题目不存在,您想要添加它吗? - + This topic is already in the list. 该题目已在列表上 - + 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. 您还没有选择一个有效的题目。从列表中选择一个题目,或是输入一个新题目并点击"将题目添加到歌曲"按钮来添加一个新题目。 - + You need to type in a song title. 您需要为歌曲输入标题。 - + You need to type in at least one verse. 您需要输入至少一段歌词。 - + You need to have an author for this song. 您需要给这首歌曲一个作者。 @@ -8663,7 +8664,7 @@ 移除所有(A) - + Open File(s) 打开文件 @@ -8678,13 +8679,13 @@ - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. - + Invalid Verse Order @@ -8694,17 +8695,17 @@ - + Edit Author Type - + Choose type for this author - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8730,32 +8731,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found 找不到文件 - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9218,7 +9219,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9275,7 +9276,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9352,107 +9353,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. 无法添加您的作者名称 - + This author already exists. 该作者名称已存在 - + Could not add your topic. 无法加入您的题目 - + This topic already exists. 该题目已存在 - + Could not add your book. 无法加入您的书卷 - + This book already exists. 该书卷已存在 - + Could not save your changes. 无法保存改动。 - + Could not save your modified author, because the author already exists. 无法保存您改动的作者名,因为该作者名已存在 - + Could not save your modified topic, because it already exists. 无法保存您改动的题目,因为它已经存在了。 - + Delete Author 删除作者名 - + Are you sure you want to delete the selected author? 你真的要删除选中的作者名吗? - + This author cannot be deleted, they are currently assigned to at least one song. 该作者名无法被删除,它目前至少被指派给了一首歌。 - + Delete Topic 删除题目 - + Are you sure you want to delete the selected topic? 您确定要删除选中的题目吗? - + This topic cannot be deleted, it is currently assigned to at least one song. 该题目无法被删除,它目前已被指派给了至少一首歌。 - + Delete Book 删除曲集 - + Are you sure you want to delete the selected book? 您真的要删除选中的曲集吗? - + This book cannot be deleted, it is currently assigned to at least one song. 无法删除这个曲集,它当前被指派给至少一首歌曲。 - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? 作者名%s已存在。您想取消创建作者名%s,并用已存在的作者名%s制作歌曲吗? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? 题目%s已存在。您想取消创建题目%s,并用已存在的题目%s制作歌曲吗? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? 曲集%s已存在。您想取消创建曲集%s,并用已存在的曲集%s制作歌曲吗? diff -Nru openlp-2.4.5/resources/i18n/zh_TW.ts openlp-2.4.6/resources/i18n/zh_TW.ts --- openlp-2.4.5/resources/i18n/zh_TW.ts 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/resources/i18n/zh_TW.ts 2017-03-31 18:33:35.000000000 +0000 @@ -3895,12 +3895,12 @@ OpenLP.LanguageManager - + Language 語言 - + Please restart OpenLP to use your new language setting. 使用新語言設定請重新啟動OpenLP。 @@ -4195,7 +4195,7 @@ 預設佈景主題: %s - + English Please add the name of your language here 繁體中文 @@ -4336,17 +4336,17 @@ OpenLP 匯出設定檔 (*.conf) - + New Data Directory Error 新的資料目錄錯誤 - + Copying OpenLP data to new data directory location - %s - Please wait for copy to finish 正在複製 OpenLP 資料到新的資料目錄位置 - %s - ,請等待複製完成 - + OpenLP Data directory copy failed %s @@ -5907,12 +5907,12 @@ 快捷建 - + Duplicate Shortcut 複製捷徑 - + The shortcut "%s" is already assigned to another action, please use a different shortcut. 快捷鍵 "%s" 已分配給其他動作,請使用其他的快捷鍵。 @@ -5947,12 +5947,12 @@ 將此動作恢復預設快捷鍵。 - + Restore Default Shortcuts 回復預設捷徑 - + Do you want to restore all shortcuts to their defaults? 你確定要回復全部捷徑為預設值? @@ -8618,47 +8618,47 @@ 此作者不存在,您是否要新增? - + This author is already in the list. 此作者已存在於列表。 - + 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. 您沒有選擇有效的作者。從列表中選擇一位作者,或輸入一位新作者名稱並點選"將作者加入歌曲"按鈕。 - + Add Topic 新增主題 - + This topic does not exist, do you want to add it? 此主題不存在,您是否要新增? - + This topic is already in the list. 此主題已存在於列表。 - + 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. 您沒有選擇有效的主題。從列表中選擇一個主題,或輸入一個新主題名稱並點選"將主題加入歌曲"按鈕。 - + You need to type in a song title. 您需要輸入歌曲標題。 - + You need to type in at least one verse. 您需要輸入至少一段歌詞。 - + You need to have an author for this song. 您需要給這首歌一位作者。 @@ -8683,7 +8683,7 @@ 移除全部(&A) - + Open File(s) 開啟檔案 @@ -8698,13 +8698,13 @@ <strong>警告:</strong> 您還沒有輸入歌詞段落順序。 - + There is no verse corresponding to "%(invalid)s".Valid entries are %(valid)s. Please enter the verses separated by spaces. 沒有相對應的 "%(invalid)s",有效輸入的為 "%(valid)s"。請輸入空格分隔段落。 - + Invalid Verse Order 無效的段落順序 @@ -8714,17 +8714,17 @@ 編輯作者類型(&E) - + Edit Author Type 編輯作者類型 - + Choose type for this author 為作者選擇一個類型 - + There are no verses corresponding to "%(invalid)s". Valid entries are %(valid)s. Please enter the verses separated by spaces. @@ -8750,32 +8750,32 @@ - + Add Songbook - + This Songbook does not exist, do you want to add it? - + This Songbook is already in the list. - + You have not selected a valid Songbook. Either select a Songbook from the list, or type in a new Songbook and click the "Add to Song" button to add the new Songbook. - + File not found 找不到檔案 - + Unable to find the following file: %s Do you want to remove the entry from the song? @@ -9238,7 +9238,7 @@ SongsPlugin.OpenLPSongImport - + Not a valid OpenLP 2 song database. @@ -9295,7 +9295,7 @@ SongsPlugin.PresentationManagerImport - + File is not in XML-format, which is the only format supported. @@ -9372,107 +9372,107 @@ SongsPlugin.SongMaintenanceForm - + Could not add your author. 無法新增您的作者。 - + This author already exists. 此作者已存在。 - + Could not add your topic. 無法新增您的主題。 - + This topic already exists. 此主題已存在。 - + Could not add your book. 無法新增您的歌本。 - + This book already exists. 此歌本已存在。 - + Could not save your changes. 無法儲存變更。 - + Could not save your modified author, because the author already exists. 無法儲存變更的作者,因為該作者已存在。 - + Could not save your modified topic, because it already exists. 無法儲存變更的主題,因為該主題已存在。 - + Delete Author 刪除作者 - + Are you sure you want to delete the selected author? 您確定想要刪除選中的作者嗎? - + This author cannot be deleted, they are currently assigned to at least one song. 此作者無法刪除,它目前至少被指派給一首歌曲。 - + Delete Topic 刪除主題 - + Are you sure you want to delete the selected topic? 您確定想要刪除選中的主題嗎? - + This topic cannot be deleted, it is currently assigned to at least one song. 此主題無法刪除,它目前至少被指派給一首歌曲。 - + Delete Book 刪除歌本 - + Are you sure you want to delete the selected book? 您確定想要刪除選中的歌本嗎? - + This book cannot be deleted, it is currently assigned to at least one song. 此歌本無法刪除,它目前至少被指派給一首歌曲。 - + The author %s already exists. Would you like to make songs with author %s use the existing author %s? 作者 %s 已存在。您想使歌曲作者 %s 使用現有的作者 %s 嗎? - + The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? 主題 %s 已存在。您想使歌曲主題 %s 使用現有的主題 %s 嗎? - + The book %s already exists. Would you like to make songs with book %s use the existing book %s? 歌本 %s 已存在。您想使歌曲歌本 %s 使用現有的歌本 %s 嗎? diff -Nru openlp-2.4.5/tests/functional/openlp_core/test_init.py openlp-2.4.6/tests/functional/openlp_core/test_init.py --- openlp-2.4.5/tests/functional/openlp_core/test_init.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_core/test_init.py 2017-03-31 18:33:35.000000000 +0000 @@ -22,12 +22,14 @@ import sys from unittest import TestCase +from unittest.mock import MagicMock, patch -from openlp.core import parse_options -from tests.helpers.testmixin import TestMixin +from PyQt5 import QtWidgets +from openlp.core import OpenLP, parse_options -class TestInitFunctions(TestMixin, TestCase): + +class TestInitFunctions(TestCase): def parse_options_basic_test(self): """ @@ -116,7 +118,7 @@ def parse_options_file_and_debug_test(self): """ - Test the parse options process works with a file + Test the parse options process works with a file and the debug log level """ # GIVEN: a a set of system arguments. @@ -131,14 +133,98 @@ self.assertEquals(args.style, None, 'There are no style flags to be processed') self.assertEquals(args.rargs, 'dummy_temp', 'The service file should not be blank') - def parse_options_two_files_test(self): - """ - Test the parse options process works with a file - """ - # GIVEN: a a set of system arguments. - sys.argv[1:] = ['dummy_temp', 'dummy_temp2'] - # WHEN: We we parse them to expand to options - args = parse_options() - # THEN: the following fields will have been extracted. - self.assertEquals(args, None, 'The args should be None') +class TestOpenLP(TestCase): + """ + Test the OpenLP app class + """ + @patch('openlp.core.QtWidgets.QApplication.exec') + def test_exec(self, mocked_exec): + """ + Test the exec method + """ + # GIVEN: An app + app = OpenLP([]) + app.shared_memory = MagicMock() + mocked_exec.return_value = False + + # WHEN: exec() is called + result = app.exec() + + # THEN: The right things should be called + assert app.is_event_loop_active is True + mocked_exec.assert_called_once_with() + app.shared_memory.detach.assert_called_once_with() + assert result is False + + del app + + @patch('openlp.core.QtCore.QSharedMemory') + def test_is_already_running_not_running(self, MockedSharedMemory): + """ + Test the is_already_running() method when OpenLP is NOT running + """ + # GIVEN: An OpenLP app and some mocks + mocked_shared_memory = MagicMock() + mocked_shared_memory.attach.return_value = False + MockedSharedMemory.return_value = mocked_shared_memory + app = OpenLP([]) + + # WHEN: is_already_running() is called + result = app.is_already_running() + + # THEN: The result should be false + MockedSharedMemory.assert_called_once_with('OpenLP') + mocked_shared_memory.attach.assert_called_once_with() + mocked_shared_memory.create.assert_called_once_with(1) + assert result is False + + @patch('openlp.core.QtWidgets.QMessageBox.critical') + @patch('openlp.core.QtWidgets.QMessageBox.StandardButtons') + @patch('openlp.core.QtCore.QSharedMemory') + def test_is_already_running_is_running_continue(self, MockedSharedMemory, MockedStandardButtons, mocked_critical): + """ + Test the is_already_running() method when OpenLP IS running and the user chooses to continue + """ + # GIVEN: An OpenLP app and some mocks + mocked_shared_memory = MagicMock() + mocked_shared_memory.attach.return_value = True + MockedSharedMemory.return_value = mocked_shared_memory + MockedStandardButtons.return_value = 0 + mocked_critical.return_value = QtWidgets.QMessageBox.Yes + app = OpenLP([]) + + # WHEN: is_already_running() is called + result = app.is_already_running() + + # THEN: The result should be false + MockedSharedMemory.assert_called_once_with('OpenLP') + mocked_shared_memory.attach.assert_called_once_with() + MockedStandardButtons.assert_called_once_with(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) + mocked_critical.assert_called_once_with(None, 'Error', 'OpenLP is already running. Do you wish to continue?', 0) + assert result is False + + @patch('openlp.core.QtWidgets.QMessageBox.critical') + @patch('openlp.core.QtWidgets.QMessageBox.StandardButtons') + @patch('openlp.core.QtCore.QSharedMemory') + def test_is_already_running_is_running_stop(self, MockedSharedMemory, MockedStandardButtons, mocked_critical): + """ + Test the is_already_running() method when OpenLP IS running and the user chooses to stop + """ + # GIVEN: An OpenLP app and some mocks + mocked_shared_memory = MagicMock() + mocked_shared_memory.attach.return_value = True + MockedSharedMemory.return_value = mocked_shared_memory + MockedStandardButtons.return_value = 0 + mocked_critical.return_value = QtWidgets.QMessageBox.No + app = OpenLP([]) + + # WHEN: is_already_running() is called + result = app.is_already_running() + + # THEN: The result should be false + MockedSharedMemory.assert_called_once_with('OpenLP') + mocked_shared_memory.attach.assert_called_once_with() + MockedStandardButtons.assert_called_once_with(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) + mocked_critical.assert_called_once_with(None, 'Error', 'OpenLP is already running. Do you wish to continue?', 0) + assert result is True diff -Nru openlp-2.4.5/tests/functional/openlp_core_ui/test_settingsform.py openlp-2.4.6/tests/functional/openlp_core_ui/test_settingsform.py --- openlp-2.4.5/tests/functional/openlp_core_ui/test_settingsform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_core_ui/test_settingsform.py 2017-03-31 18:33:35.000000000 +0000 @@ -151,3 +151,14 @@ # THEN: The general tab's cancel() method should have been called, but not the themes tab mocked_general_cancel.assert_called_with() self.assertEqual(0, mocked_theme_cancel.call_count, 'The Themes tab\'s cancel() should not have been called') + + def test_register_post_process(self): + # GIVEN: A settings form instance + settings_form = SettingsForm(None) + fake_function = MagicMock() + + # WHEN: register_post_process() is called + settings_form.register_post_process(fake_function) + + # THEN: The fake function should be in the settings form's list + assert fake_function in settings_form.processes diff -Nru openlp-2.4.5/tests/functional/openlp_core_ui/test_slidecontroller.py openlp-2.4.6/tests/functional/openlp_core_ui/test_slidecontroller.py --- openlp-2.4.5/tests/functional/openlp_core_ui/test_slidecontroller.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_core_ui/test_slidecontroller.py 2017-03-31 18:33:35.000000000 +0000 @@ -681,7 +681,7 @@ slide_controller._process_item(mocked_media_item, 0) # THEN: Registry.execute should have been called to stop the presentation - self.assertEqual(3, mocked_execute.call_count, 'Execute should have been called 3 times') + self.assertEqual(2, mocked_execute.call_count, 'Execute should have been called 2 times') self.assertEqual('mocked_presentation_item_stop', mocked_execute.call_args_list[1][0][0], 'The presentation should have been stopped.') diff -Nru openlp-2.4.5/tests/functional/openlp_plugins/remotes/test_router.py openlp-2.4.6/tests/functional/openlp_plugins/remotes/test_router.py --- openlp-2.4.5/tests/functional/openlp_plugins/remotes/test_router.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_plugins/remotes/test_router.py 2017-03-31 18:33:35.000000000 +0000 @@ -25,11 +25,11 @@ import os import urllib.request from unittest import TestCase +from unittest.mock import MagicMock, patch, mock_open from openlp.core.common import Settings, Registry from openlp.core.ui import ServiceManager from openlp.plugins.remotes.lib.httpserver import HttpRouter -from tests.functional import MagicMock, patch, mock_open from tests.helpers.testmixin import TestMixin __default_settings__ = { @@ -313,11 +313,13 @@ with patch.object(self.service_manager, 'setup_ui'), \ patch.object(self.router, 'do_json_header'): self.service_manager.bootstrap_initialise() - self.app.processEvents() + # Not sure why this is here, it doesn't make sense in the test + # self.app.processEvents() # WHEN: Remote next is received self.router.service(action='next') - self.app.processEvents() + # Not sure why this is here, it doesn't make sense in the test + # self.app.processEvents() # THEN: service_manager.next_item() should have been called self.assertTrue(mocked_next_item.called, 'next_item() should have been called in service_manager') @@ -334,11 +336,13 @@ with patch.object(self.service_manager, 'setup_ui'), \ patch.object(self.router, 'do_json_header'): self.service_manager.bootstrap_initialise() - self.app.processEvents() + # Not sure why this is here, it doesn't make sense in the test + # self.app.processEvents() # WHEN: Remote next is received self.router.service(action='previous') - self.app.processEvents() + # Not sure why this is here, it doesn't make sense in the test + # self.app.processEvents() # THEN: service_manager.next_item() should have been called self.assertTrue(mocked_previous_item.called, 'previous_item() should have been called in service_manager') diff -Nru openlp-2.4.5/tests/functional/openlp_plugins/songs/test_editsongform.py openlp-2.4.6/tests/functional/openlp_plugins/songs/test_editsongform.py --- openlp-2.4.5/tests/functional/openlp_plugins/songs/test_editsongform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_plugins/songs/test_editsongform.py 2017-03-31 18:33:35.000000000 +0000 @@ -106,4 +106,5 @@ mocked_cache.append.assert_called_once_with('Charles') mocked_combo.setItemData.assert_called_once_with(0, 1) mocked_set_case_insensitive_completer.assert_called_once_with(mocked_cache, mocked_combo) - mocked_combo.setEditText.assert_called_once_with('') + mocked_combo.setCurrentIndex.assert_called_once_with(-1) + mocked_combo.setCurrentText.assert_called_once_with('') diff -Nru openlp-2.4.5/tests/functional/openlp_plugins/songs/test_openlpimporter.py openlp-2.4.6/tests/functional/openlp_plugins/songs/test_openlpimporter.py --- openlp-2.4.5/tests/functional/openlp_plugins/songs/test_openlpimporter.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_plugins/songs/test_openlpimporter.py 2017-03-31 18:33:35.000000000 +0000 @@ -23,10 +23,10 @@ This module contains tests for the OpenLP song importer. """ from unittest import TestCase +from unittest.mock import patch, MagicMock -from openlp.plugins.songs.lib.importers.openlp import OpenLPSongImport from openlp.core.common import Registry -from tests.functional import patch, MagicMock +from openlp.plugins.songs.lib.importers.openlp import OpenLPSongImport class TestOpenLPImport(TestCase): diff -Nru openlp-2.4.5/tests/functional/openlp_plugins/songs/test_songbeamerimport.py openlp-2.4.6/tests/functional/openlp_plugins/songs/test_songbeamerimport.py --- openlp-2.4.5/tests/functional/openlp_plugins/songs/test_songbeamerimport.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_plugins/songs/test_songbeamerimport.py 2017-03-31 18:33:35.000000000 +0000 @@ -49,6 +49,13 @@ self.file_import([os.path.join(TEST_PATH, 'Lobsinget dem Herrn.sng')], self.load_external_result_data(os.path.join(TEST_PATH, 'Lobsinget dem Herrn.json'))) + def test_cp1252_encoded_file(self): + """ + Test that a CP1252 encoded file get's decoded properly. + """ + self.file_import([os.path.join(TEST_PATH, 'cp1252song.sng')], + self.load_external_result_data(os.path.join(TEST_PATH, 'cp1252song.json'))) + class TestSongBeamerImport(TestCase): """ diff -Nru openlp-2.4.5/tests/functional/openlp_plugins/songs/test_songselect.py openlp-2.4.6/tests/functional/openlp_plugins/songs/test_songselect.py --- openlp-2.4.5/tests/functional/openlp_plugins/songs/test_songselect.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/functional/openlp_plugins/songs/test_songselect.py 2017-03-31 18:33:35.000000000 +0000 @@ -32,7 +32,7 @@ from openlp.core import Registry from openlp.plugins.songs.forms.songselectform import SongSelectForm, SearchWorker from openlp.plugins.songs.lib import Song -from openlp.plugins.songs.lib.songselect import SongSelectImport, LOGOUT_URL, BASE_URL +from openlp.plugins.songs.lib.songselect import SongSelectImport, LOGIN_PAGE, LOGOUT_URL, BASE_URL from tests.functional import MagicMock, patch, call from tests.helpers.songfileimport import SongImportTestHelper @@ -81,7 +81,7 @@ # THEN: callback was called 3 times, open was called twice, find was called twice, and False was returned self.assertEqual(2, mock_callback.call_count, 'callback should have been called 3 times') - self.assertEqual(1, mocked_login_page.find.call_count, 'find should have been called twice') + self.assertEqual(2, mocked_login_page.find.call_count, 'find should have been called twice') self.assertEqual(2, mocked_opener.open.call_count, 'opener should have been called twice') self.assertFalse(result, 'The login method should have returned False') @@ -96,7 +96,9 @@ mocked_build_opener.return_value = mocked_opener mocked_login_page = MagicMock() mocked_login_page.find.side_effect = [{'value': 'blah'}, None] - MockedBeautifulSoup.return_value = mocked_login_page + mocked_posted_page = MagicMock() + mocked_posted_page.find.return_value = None + MockedBeautifulSoup.side_effect = [mocked_login_page, mocked_posted_page] mock_callback = MagicMock() importer = SongSelectImport(None) @@ -105,7 +107,8 @@ # THEN: callback was called 3 times, open was called twice, find was called twice, and False was returned self.assertEqual(3, mock_callback.call_count, 'callback should have been called 3 times') - self.assertEqual(2, mocked_login_page.find.call_count, 'find should have been called twice') + self.assertEqual(2, mocked_login_page.find.call_count, 'find should have been called twice on the login page') + self.assertEqual(1, mocked_posted_page.find.call_count, 'find should have been called once on the posted page') self.assertEqual(2, mocked_opener.open.call_count, 'opener should have been called twice') self.assertFalse(result, 'The login method should have returned False') @@ -136,8 +139,10 @@ mocked_opener = MagicMock() mocked_build_opener.return_value = mocked_opener mocked_login_page = MagicMock() - mocked_login_page.find.side_effect = [{'value': 'blah'}, MagicMock()] - MockedBeautifulSoup.return_value = mocked_login_page + mocked_login_page.find.side_effect = [{'value': 'blah'}, None] + mocked_posted_page = MagicMock() + mocked_posted_page.find.return_value = MagicMock() + MockedBeautifulSoup.side_effect = [mocked_login_page, mocked_posted_page] mock_callback = MagicMock() importer = SongSelectImport(None) @@ -146,11 +151,41 @@ # THEN: callback was called 3 times, open was called twice, find was called twice, and True was returned self.assertEqual(3, mock_callback.call_count, 'callback should have been called 3 times') - self.assertEqual(2, mocked_login_page.find.call_count, 'find should have been called twice') + self.assertEqual(2, mocked_login_page.find.call_count, 'find should have been called twice on the login page') + self.assertEqual(1, mocked_posted_page.find.call_count, 'find should have been called once on the posted page') self.assertEqual(2, mocked_opener.open.call_count, 'opener should have been called twice') self.assertTrue(result, 'The login method should have returned True') @patch('openlp.plugins.songs.lib.songselect.build_opener') + @patch('openlp.plugins.songs.lib.songselect.BeautifulSoup') + def login_url_from_form_test(self, MockedBeautifulSoup, mocked_build_opener): + """ + Test that the login URL is from the form + """ + # GIVEN: A bunch of mocked out stuff and an importer object + mocked_opener = MagicMock() + mocked_build_opener.return_value = mocked_opener + mocked_form = MagicMock() + mocked_form.attrs = {'action': 'do/login'} + mocked_login_page = MagicMock() + mocked_login_page.find.side_effect = [{'value': 'blah'}, mocked_form] + mocked_posted_page = MagicMock() + mocked_posted_page.find.return_value = MagicMock() + MockedBeautifulSoup.side_effect = [mocked_login_page, mocked_posted_page] + mock_callback = MagicMock() + importer = SongSelectImport(None) + + # WHEN: The login method is called after being rigged to fail + result = importer.login('username', 'password', mock_callback) + + # THEN: callback was called 3 times, open was called twice, find was called twice, and True was returned + self.assertEqual(3, mock_callback.call_count, 'callback should have been called 3 times') + self.assertEqual(2, mocked_login_page.find.call_count, 'find should have been called twice on the login page') + self.assertEqual(1, mocked_posted_page.find.call_count, 'find should have been called once on the posted page') + self.assertEqual('https://profile.ccli.com/do/login', mocked_opener.open.call_args_list[1][0][0]) + self.assertTrue(result, 'The login method should have returned True') + + @patch('openlp.plugins.songs.lib.songselect.build_opener') def logout_test(self, mocked_build_opener): """ Test that when the logout method is called, it logs the user out of SongSelect diff -Nru openlp-2.4.5/tests/interfaces/openlp_core_ui/test_shortcutlistform.py openlp-2.4.6/tests/interfaces/openlp_core_ui/test_shortcutlistform.py --- openlp-2.4.5/tests/interfaces/openlp_core_ui/test_shortcutlistform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/interfaces/openlp_core_ui/test_shortcutlistform.py 2017-03-31 18:33:35.000000000 +0000 @@ -52,6 +52,24 @@ del self.form del self.main_window + def test_set_controls_enabled(self): + """ + Test that the _set_controls_enabled() method works correctly + """ + # GIVEN: A shortcut form, and a value to set the controls + is_enabled = True + + # WHEN: _set_controls_enabled() is called + self.form._set_controls_enabled(is_enabled) + + # THEN: The controls should be enabled + assert self.form.default_radio_button.isEnabled() is True + assert self.form.custom_radio_button.isEnabled() is True + assert self.form.primary_push_button.isEnabled() is True + assert self.form.alternate_push_button.isEnabled() is True + assert self.form.clear_primary_button.isEnabled() is True + assert self.form.clear_alternate_button.isEnabled() is True + def adjust_button_test(self): """ Test the _adjust_button() method @@ -71,6 +89,27 @@ mocked_check_method.assert_called_once_with(True) self.assertEqual(button.isEnabled(), enabled, 'The button should be disabled.') + @patch('openlp.core.ui.shortcutlistform.QtWidgets.QDialog.exec') + def test_exec(self, mocked_exec): + """ + Test the exec method + """ + # GIVEN: A form and a mocked out base exec method + mocked_exec.return_value = True + + # WHEN: exec is called + result = self.form.exec() + + # THEN: The result should be True and the controls should be disabled + assert self.form.default_radio_button.isEnabled() is False + assert self.form.custom_radio_button.isEnabled() is False + assert self.form.primary_push_button.isEnabled() is False + assert self.form.alternate_push_button.isEnabled() is False + assert self.form.clear_primary_button.isEnabled() is False + assert self.form.clear_alternate_button.isEnabled() is False + mocked_exec.assert_called_once_with(self.form) + assert result is True + def space_key_press_event_test(self): """ Test the keyPressEvent when the spacebar was pressed diff -Nru openlp-2.4.5/tests/interfaces/openlp_plugins/bibles/forms/test_bibleimportform.py openlp-2.4.6/tests/interfaces/openlp_plugins/bibles/forms/test_bibleimportform.py --- openlp-2.4.5/tests/interfaces/openlp_plugins/bibles/forms/test_bibleimportform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/interfaces/openlp_plugins/bibles/forms/test_bibleimportform.py 2017-03-31 18:33:35.000000000 +0000 @@ -22,7 +22,7 @@ """ Package to test the openlp.plugins.bibles.forms.bibleimportform package. """ -from unittest import TestCase +from unittest import TestCase, skip from PyQt5 import QtWidgets @@ -48,12 +48,12 @@ Registry().register('main_window', self.main_window) self.form = BibleImportForm(self.main_window, MagicMock(), MagicMock()) - def tearDown(self): - """ - Delete all the C++ objects at the end so that we don't have a segfault - """ - del self.form - del self.main_window + # def tearDown(self): + # """ + # Delete all the C++ objects at the end so that we don't have a segfault + # """ + # del self.form + # del self.main_window @patch('openlp.plugins.bibles.forms.bibleimportform.CWExtract.get_bibles_from_http') @patch('openlp.plugins.bibles.forms.bibleimportform.BGExtract.get_bibles_from_http') diff -Nru openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_authorsform.py openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_authorsform.py --- openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_authorsform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_authorsform.py 2017-03-31 18:33:35.000000000 +0000 @@ -23,6 +23,7 @@ Package to test the openlp.plugins.songs.forms.authorsform package. """ from unittest import TestCase +from unittest.mock import patch from PyQt5 import QtWidgets @@ -138,3 +139,217 @@ # THEN: The display_name_edit should have the correct value self.assertEqual(self.form.display_edit.text(), display_name, 'The display name should be set correctly') + + @patch('openlp.plugins.songs.forms.authorsform.QtWidgets.QDialog.exec') + def test_exec(self, mocked_exec): + """ + Test the exec() method + """ + # GIVEN: An authors for and various mocked objects + with patch.object(self.form.first_name_edit, 'clear') as mocked_first_name_edit_clear, \ + patch.object(self.form.last_name_edit, 'clear') as mocked_last_name_edit_clear, \ + patch.object(self.form.display_edit, 'clear') as mocked_display_edit_clear, \ + patch.object(self.form.first_name_edit, 'setFocus') as mocked_first_name_edit_setFocus: + # WHEN: The exec() method is called + self.form.exec(clear=True) + + # THEN: The clear and exec() methods should have been called + mocked_first_name_edit_clear.assert_called_once_with() + mocked_last_name_edit_clear.assert_called_once_with() + mocked_display_edit_clear.assert_called_once_with() + mocked_first_name_edit_setFocus.assert_called_once_with() + mocked_exec.assert_called_once_with(self.form) + + def test_first_name_edited(self): + """ + Test the on_first_name_edited() method + """ + # GIVEN: An author form + self.form.auto_display_name = True + + with patch.object(self.form.last_name_edit, 'text') as mocked_last_name_edit_text, \ + patch.object(self.form.display_edit, 'setText') as mocked_display_edit_setText: + mocked_last_name_edit_text.return_value = 'Newton' + + # WHEN: on_first_name_edited() is called + self.form.on_first_name_edited('John') + + # THEN: The display name should be updated + assert mocked_last_name_edit_text.call_count == 2 + mocked_display_edit_setText.assert_called_once_with('John Newton') + + def test_first_name_edited_no_auto(self): + """ + Test the on_first_name_edited() method without auto_display_name + """ + # GIVEN: An author form + self.form.auto_display_name = False + + with patch.object(self.form.last_name_edit, 'text') as mocked_last_name_edit_text, \ + patch.object(self.form.display_edit, 'setText') as mocked_display_edit_setText: + + # WHEN: on_first_name_edited() is called + self.form.on_first_name_edited('John') + + # THEN: The display name should not be updated + assert mocked_last_name_edit_text.call_count == 0 + assert mocked_display_edit_setText.call_count == 0 + + def test_last_name_edited(self): + """ + Test the on_last_name_edited() method + """ + # GIVEN: An author form + self.form.auto_display_name = True + + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.display_edit, 'setText') as mocked_display_edit_setText: + mocked_first_name_edit_text.return_value = 'John' + + # WHEN: on_last_name_edited() is called + self.form.on_last_name_edited('Newton') + + # THEN: The display name should be updated + assert mocked_first_name_edit_text.call_count == 2 + mocked_display_edit_setText.assert_called_once_with('John Newton') + + def test_last_name_edited_no_auto(self): + """ + Test the on_last_name_edited() method without auto_display_name + """ + # GIVEN: An author form + self.form.auto_display_name = False + + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.display_edit, 'setText') as mocked_display_edit_setText: + + # WHEN: on_last_name_edited() is called + self.form.on_last_name_edited('Newton') + + # THEN: The display name should not be updated + assert mocked_first_name_edit_text.call_count == 0 + assert mocked_display_edit_setText.call_count == 0 + + @patch('openlp.plugins.songs.forms.authorsform.critical_error_message_box') + def test_accept_no_first_name(self, mocked_critical_error): + """ + Test the accept() method with no first name + """ + # GIVEN: A form and no text in thefirst name edit + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.first_name_edit, 'setFocus') as mocked_first_name_edit_setFocus: + mocked_first_name_edit_text.return_value = '' + + # WHEN: accept() is called + result = self.form.accept() + + # THEN: The result should be false and a critical error displayed + assert result is False + mocked_critical_error.assert_called_once_with(message='You need to type in the first name of the author.') + mocked_first_name_edit_text.assert_called_once_with() + mocked_first_name_edit_setFocus.assert_called_once_with() + + @patch('openlp.plugins.songs.forms.authorsform.critical_error_message_box') + def test_accept_no_last_name(self, mocked_critical_error): + """ + Test the accept() method with no last name + """ + # GIVEN: A form and no text in the last name edit + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.last_name_edit, 'text') as mocked_last_name_edit_text, \ + patch.object(self.form.last_name_edit, 'setFocus') as mocked_last_name_edit_setFocus: + mocked_first_name_edit_text.return_value = 'John' + mocked_last_name_edit_text.return_value = '' + + # WHEN: accept() is called + result = self.form.accept() + + # THEN: The result should be false and a critical error displayed + assert result is False + mocked_critical_error.assert_called_once_with(message='You need to type in the last name of the author.') + mocked_first_name_edit_text.assert_called_once_with() + mocked_last_name_edit_text.assert_called_once_with() + mocked_last_name_edit_setFocus.assert_called_once_with() + + @patch('openlp.plugins.songs.forms.authorsform.critical_error_message_box') + def test_accept_no_display_name_no_combine(self, mocked_critical_error): + """ + Test the accept() method with no display name and no combining + """ + # GIVEN: A form and no text in the display name edit + mocked_critical_error.return_value = QtWidgets.QMessageBox.No + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.last_name_edit, 'text') as mocked_last_name_edit_text, \ + patch.object(self.form.display_edit, 'text') as mocked_display_edit_text, \ + patch.object(self.form.display_edit, 'setFocus') as mocked_display_edit_setFocus: + mocked_first_name_edit_text.return_value = 'John' + mocked_last_name_edit_text.return_value = 'Newton' + mocked_display_edit_text.return_value = '' + + # WHEN: accept() is called + result = self.form.accept() + + # THEN: The result should be false and a critical error displayed + assert result is False + mocked_critical_error.assert_called_once_with( + message='You have not set a display name for the author, combine the first and last names?', + parent=self.form, question=True) + mocked_first_name_edit_text.assert_called_once_with() + mocked_last_name_edit_text.assert_called_once_with() + mocked_display_edit_text.assert_called_once_with() + mocked_display_edit_setFocus.assert_called_once_with() + + @patch('openlp.plugins.songs.forms.authorsform.critical_error_message_box') + @patch('openlp.plugins.songs.forms.authorsform.QtWidgets.QDialog.accept') + def test_accept_no_display_name(self, mocked_accept, mocked_critical_error): + """ + Test the accept() method with no display name and auto-combine + """ + # GIVEN: A form and no text in the display name edit + mocked_accept.return_value = True + mocked_critical_error.return_value = QtWidgets.QMessageBox.Yes + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.last_name_edit, 'text') as mocked_last_name_edit_text, \ + patch.object(self.form.display_edit, 'text') as mocked_display_edit_text, \ + patch.object(self.form.display_edit, 'setText') as mocked_display_edit_setText: + mocked_first_name_edit_text.return_value = 'John' + mocked_last_name_edit_text.return_value = 'Newton' + mocked_display_edit_text.return_value = '' + + # WHEN: accept() is called + result = self.form.accept() + + # THEN: The result should be false and a critical error displayed + assert result is True + mocked_critical_error.assert_called_once_with( + message='You have not set a display name for the author, combine the first and last names?', + parent=self.form, question=True) + assert mocked_first_name_edit_text.call_count == 2 + assert mocked_last_name_edit_text.call_count == 2 + mocked_display_edit_text.assert_called_once_with() + mocked_display_edit_setText.assert_called_once_with('John Newton') + mocked_accept.assert_called_once_with(self.form) + + @patch('openlp.plugins.songs.forms.authorsform.QtWidgets.QDialog.accept') + def test_accept(self, mocked_accept): + """ + Test the accept() method + """ + # GIVEN: A form and text in the right places + mocked_accept.return_value = True + with patch.object(self.form.first_name_edit, 'text') as mocked_first_name_edit_text, \ + patch.object(self.form.last_name_edit, 'text') as mocked_last_name_edit_text, \ + patch.object(self.form.display_edit, 'text') as mocked_display_edit_text: + mocked_first_name_edit_text.return_value = 'John' + mocked_last_name_edit_text.return_value = 'Newton' + mocked_display_edit_text.return_value = 'John Newton' + + # WHEN: accept() is called + result = self.form.accept() + + # THEN: The result should be false and a critical error displayed + assert result is True + mocked_first_name_edit_text.assert_called_once_with() + mocked_last_name_edit_text.assert_called_once_with() + mocked_display_edit_text.assert_called_once_with() + mocked_accept.assert_called_once_with(self.form) diff -Nru openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py --- openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py 2017-03-31 18:33:35.000000000 +0000 @@ -23,13 +23,13 @@ Package to test the openlp.plugins.songs.forms.editsongform package. """ from unittest import TestCase +from unittest.mock import MagicMock, patch -from PyQt5 import QtWidgets +from PyQt5 import QtCore, QtWidgets from openlp.core.common import Registry from openlp.core.common.uistrings import UiStrings from openlp.plugins.songs.forms.editsongform import EditSongForm -from tests.interfaces import MagicMock from tests.helpers.testmixin import TestMixin @@ -157,3 +157,50 @@ # THEN: The verse order should be converted to uppercase self.assertEqual(form.verse_order_edit.text(), 'V1 V2 C1 V3 C1 V4 C1') + + @patch('openlp.plugins.songs.forms.editsongform.QtWidgets.QListWidgetItem') + def test_add_author_to_list(self, MockedQListWidgetItem): + """ + Test the _add_author_to_list() method + """ + # GIVEN: A song edit form and some mocked stuff + mocked_author = MagicMock() + mocked_author.id = 1 + mocked_author.get_display_name.return_value = 'John Newton' + mocked_author_type = 'words' + mocked_widget_item = MagicMock() + MockedQListWidgetItem.return_value = mocked_widget_item + + # WHEN: _add_author_to_list() is called + with patch.object(self.form.authors_list_view, 'addItem') as mocked_add_item: + self.form._add_author_to_list(mocked_author, mocked_author_type) + + # THEN: All the correct methods should have been called + mocked_author.get_display_name.assert_called_once_with('words') + MockedQListWidgetItem.assert_called_once_with('John Newton') + mocked_widget_item.setData.assert_called_once_with(QtCore.Qt.UserRole, (1, mocked_author_type)) + mocked_add_item.assert_called_once_with(mocked_widget_item) + + @patch('openlp.plugins.songs.forms.editsongform.SongBookEntry') + @patch('openlp.plugins.songs.forms.editsongform.QtWidgets.QListWidgetItem') + def test_add_songbook_entry_to_list(self, MockedQListWidgetItem, MockedSongbookEntry): + """ + Test the add_songbook_entry_to_list() method + """ + # GIVEN: A song edit form and some mocked stuff + songbook_id = 1 + songbook_name = 'Hymnal' + entry = '546' + MockedSongbookEntry.get_display_name.return_value = 'Hymnal #546' + mocked_widget_item = MagicMock() + MockedQListWidgetItem.return_value = mocked_widget_item + + # WHEN: _add_author_to_list() is called + with patch.object(self.form.songbooks_list_view, 'addItem') as mocked_add_item: + self.form.add_songbook_entry_to_list(songbook_id, songbook_name, entry) + + # THEN: All the correct methods should have been called + MockedSongbookEntry.get_display_name.assert_called_once_with(songbook_name, entry) + MockedQListWidgetItem.assert_called_once_with('Hymnal #546') + mocked_widget_item.setData.assert_called_once_with(QtCore.Qt.UserRole, (songbook_id, entry)) + mocked_add_item.assert_called_once_with(mocked_widget_item) diff -Nru openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py --- openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_editverseform.py 2017-03-31 18:33:35.000000000 +0000 @@ -28,6 +28,7 @@ from openlp.core.common import Registry from openlp.plugins.songs.forms.editverseform import EditVerseForm + from tests.helpers.testmixin import TestMixin diff -Nru openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_songmaintenanceform.py openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_songmaintenanceform.py --- openlp-2.4.5/tests/interfaces/openlp_plugins/songs/forms/test_songmaintenanceform.py 1970-01-01 00:00:00.000000000 +0000 +++ openlp-2.4.6/tests/interfaces/openlp_plugins/songs/forms/test_songmaintenanceform.py 2017-03-31 18:33:35.000000000 +0000 @@ -0,0 +1,422 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2017 OpenLP Developers # +# --------------------------------------------------------------------------- # +# 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 # +############################################################################### +""" +Package to test the openlp.plugins.songs.forms.songmaintenanceform package. +""" +from unittest import TestCase +from unittest.mock import MagicMock, patch, call + +from PyQt5 import QtCore, QtWidgets + +from openlp.core.common import Registry, UiStrings +from openlp.plugins.songs.forms.songmaintenanceform import SongMaintenanceForm + +from tests.helpers.testmixin import TestMixin + + +class TestSongMaintenanceForm(TestCase, TestMixin): + """ + Test the SongMaintenanceForm class + """ + + def setUp(self): + """ + Create the UI + """ + Registry.create() + self.setup_application() + self.main_window = QtWidgets.QMainWindow() + Registry().register('main_window', self.main_window) + self.mocked_manager = MagicMock() + self.form = SongMaintenanceForm(self.mocked_manager) + + def tearDown(self): + """ + Delete all the C++ objects at the end so that we don't have a segfault + """ + del self.form + del self.main_window + + def test_constructor(self): + """ + Test that a SongMaintenanceForm is created successfully + """ + # GIVEN: A SongMaintenanceForm + # WHEN: The form is created + # THEN: It should have some of the right components + assert self.form is not None + assert self.form.manager is self.mocked_manager + + @patch.object(QtWidgets.QDialog, 'exec') + def test_exect(self, mocked_exec): + """ + Test the song maintenance form being executed + """ + # GIVEN: A song maintenance form + mocked_exec.return_value = True + + # WHEN: The song mainetnance form is executed + with patch.object(self.form, 'type_list_widget') as mocked_type_list_widget, \ + patch.object(self.form, 'reset_authors') as mocked_reset_authors, \ + patch.object(self.form, 'reset_topics') as mocked_reset_topics, \ + patch.object(self.form, 'reset_song_books') as mocked_reset_song_books: + result = self.form.exec(from_song_edit=True) + + # THEN: The correct methods should have been called + assert self.form.from_song_edit is True + mocked_type_list_widget.setCurrentRow.assert_called_once_with(0) + mocked_reset_authors.assert_called_once_with() + mocked_reset_topics.assert_called_once_with() + mocked_reset_song_books.assert_called_once_with() + mocked_type_list_widget.setFocus.assert_called_once_with() + mocked_exec.assert_called_once_with(self.form) + assert result is True + + def test_get_current_item_id_no_item(self): + """ + Test _get_current_item_id() when there's no item + """ + # GIVEN: A song maintenance form without a selected item + mocked_list_widget = MagicMock() + mocked_list_widget.currentItem.return_value = None + + # WHEN: _get_current_item_id() is called + result = self.form._get_current_item_id(mocked_list_widget) + + # THEN: The result should be -1 + mocked_list_widget.currentItem.assert_called_once_with() + assert result == -1 + + def test_get_current_item_id(self): + """ + Test _get_current_item_id() when there's a valid item + """ + # GIVEN: A song maintenance form with a selected item + mocked_item = MagicMock() + mocked_item.data.return_value = 7 + mocked_list_widget = MagicMock() + mocked_list_widget.currentItem.return_value = mocked_item + + # WHEN: _get_current_item_id() is called + result = self.form._get_current_item_id(mocked_list_widget) + + # THEN: The result should be -1 + mocked_list_widget.currentItem.assert_called_once_with() + mocked_item.data.assert_called_once_with(QtCore.Qt.UserRole) + assert result == 7 + + @patch('openlp.plugins.songs.forms.songmaintenanceform.critical_error_message_box') + def test_delete_item_no_item_id(self, mocked_critical_error_message_box): + """ + Test the _delete_item() method when there is no item selected + """ + # GIVEN: Some mocked items + mocked_item_class = MagicMock() + mocked_list_widget = MagicMock() + mocked_reset_func = MagicMock() + dialog_title = 'Delete Item' + delete_text = 'Are you sure you want to delete this item?' + error_text = 'There was a problem deleting this item' + + # WHEN: _delete_item() is called + with patch.object(self.form, '_get_current_item_id') as mocked_get_current_item_id: + mocked_get_current_item_id.return_value = -1 + self.form._delete_item(mocked_item_class, mocked_list_widget, mocked_reset_func, dialog_title, delete_text, + error_text) + + # THEN: The right things should have been called + mocked_get_current_item_id.assert_called_once_with(mocked_list_widget) + mocked_critical_error_message_box.assert_called_once_with(dialog_title, UiStrings().NISs) + + @patch('openlp.plugins.songs.forms.songmaintenanceform.critical_error_message_box') + def test_delete_item_invalid_item(self, mocked_critical_error_message_box): + """ + Test the _delete_item() method when the item doesn't exist in the database + """ + # GIVEN: Some mocked items + self.mocked_manager.get_object.return_value = None + mocked_item_class = MagicMock() + mocked_list_widget = MagicMock() + mocked_reset_func = MagicMock() + dialog_title = 'Delete Item' + delete_text = 'Are you sure you want to delete this item?' + error_text = 'There was a problem deleting this item' + + # WHEN: _delete_item() is called + with patch.object(self.form, '_get_current_item_id') as mocked_get_current_item_id: + mocked_get_current_item_id.return_value = 1 + self.form._delete_item(mocked_item_class, mocked_list_widget, mocked_reset_func, dialog_title, delete_text, + error_text) + + # THEN: The right things should have been called + mocked_get_current_item_id.assert_called_once_with(mocked_list_widget) + self.mocked_manager.get_object.assert_called_once_with(mocked_item_class, 1) + mocked_critical_error_message_box.assert_called_once_with(dialog_title, error_text) + + @patch('openlp.plugins.songs.forms.songmaintenanceform.critical_error_message_box') + def test_delete_item(self, mocked_critical_error_message_box): + """ + Test the _delete_item() method + """ + # GIVEN: Some mocked items + mocked_item = MagicMock() + mocked_item.songs = [] + mocked_item.id = 1 + self.mocked_manager.get_object.return_value = mocked_item + mocked_critical_error_message_box.return_value = QtWidgets.QMessageBox.Yes + mocked_item_class = MagicMock() + mocked_list_widget = MagicMock() + mocked_reset_func = MagicMock() + dialog_title = 'Delete Item' + delete_text = 'Are you sure you want to delete this item?' + error_text = 'There was a problem deleting this item' + + # WHEN: _delete_item() is called + with patch.object(self.form, '_get_current_item_id') as mocked_get_current_item_id: + mocked_get_current_item_id.return_value = 1 + self.form._delete_item(mocked_item_class, mocked_list_widget, mocked_reset_func, dialog_title, delete_text, + error_text) + + # THEN: The right things should have been called + mocked_get_current_item_id.assert_called_once_with(mocked_list_widget) + self.mocked_manager.get_object.assert_called_once_with(mocked_item_class, 1) + mocked_critical_error_message_box.assert_called_once_with(dialog_title, delete_text, self.form, True) + self.mocked_manager.delete_object(mocked_item_class, 1) + mocked_reset_func.assert_called_once_with() + + @patch('openlp.plugins.songs.forms.songmaintenanceform.QtWidgets.QListWidgetItem') + @patch('openlp.plugins.songs.forms.songmaintenanceform.Author') + def test_reset_authors(self, MockedAuthor, MockedQListWidgetItem): + """ + Test the reset_authors() method + """ + # GIVEN: A mocked authors_list_widget and a few other mocks + mocked_author1 = MagicMock() + mocked_author1.display_name = 'John Newton' + mocked_author1.id = 1 + mocked_author2 = MagicMock() + mocked_author2.display_name = None + mocked_author2.first_name = 'John' + mocked_author2.last_name = 'Wesley' + mocked_author2.id = 2 + mocked_authors = [mocked_author1, mocked_author2] + mocked_author_item1 = MagicMock() + mocked_author_item2 = MagicMock() + MockedQListWidgetItem.side_effect = [mocked_author_item1, mocked_author_item2] + MockedAuthor.display_name = None + self.mocked_manager.get_all_objects.return_value = mocked_authors + + # WHEN: reset_authors() is called + with patch.object(self.form, 'authors_list_widget') as mocked_authors_list_widget: + self.form.reset_authors() + + # THEN: The authors list should be reset + expected_widget_item_calls = [call('John Newton'), call('John Wesley')] + mocked_authors_list_widget.clear.assert_called_once_with() + self.mocked_manager.get_all_objects.assert_called_once_with(MockedAuthor, + order_by_ref=MockedAuthor.display_name) + assert MockedQListWidgetItem.call_args_list == expected_widget_item_calls, MockedQListWidgetItem.call_args_list + mocked_author_item1.setData.assert_called_once_with(QtCore.Qt.UserRole, 1) + mocked_author_item2.setData.assert_called_once_with(QtCore.Qt.UserRole, 2) + mocked_authors_list_widget.addItem.call_args_list == [ + call(mocked_author_item1), call(mocked_author_item2)] + + @patch('openlp.plugins.songs.forms.songmaintenanceform.QtWidgets.QListWidgetItem') + @patch('openlp.plugins.songs.forms.songmaintenanceform.Topic') + def test_reset_topics(self, MockedTopic, MockedQListWidgetItem): + """ + Test the reset_topics() method + """ + # GIVEN: Some mocked out objects and methods + MockedTopic.name = 'Grace' + mocked_topic = MagicMock() + mocked_topic.id = 1 + mocked_topic.name = 'Grace' + self.mocked_manager.get_all_objects.return_value = [mocked_topic] + mocked_topic_item = MagicMock() + MockedQListWidgetItem.return_value = mocked_topic_item + + # WHEN: reset_topics() is called + with patch.object(self.form, 'topics_list_widget') as mocked_topic_list_widget: + self.form.reset_topics() + + # THEN: The topics list should be reset correctly + mocked_topic_list_widget.clear.assert_called_once_with() + self.mocked_manager.get_all_objects.assert_called_once_with(MockedTopic, order_by_ref=MockedTopic.name) + MockedQListWidgetItem.assert_called_once_with('Grace') + mocked_topic_item.setData.assert_called_once_with(QtCore.Qt.UserRole, 1) + mocked_topic_list_widget.addItem.assert_called_once_with(mocked_topic_item) + + @patch('openlp.plugins.songs.forms.songmaintenanceform.QtWidgets.QListWidgetItem') + @patch('openlp.plugins.songs.forms.songmaintenanceform.Book') + def test_reset_song_books(self, MockedBook, MockedQListWidgetItem): + """ + Test the reset_song_books() method + """ + # GIVEN: Some mocked out objects and methods + MockedBook.name = 'Hymnal' + mocked_song_book = MagicMock() + mocked_song_book.id = 1 + mocked_song_book.name = 'Hymnal' + mocked_song_book.publisher = 'Hymns and Psalms, Inc.' + self.mocked_manager.get_all_objects.return_value = [mocked_song_book] + mocked_song_book_item = MagicMock() + MockedQListWidgetItem.return_value = mocked_song_book_item + + # WHEN: reset_song_books() is called + with patch.object(self.form, 'song_books_list_widget') as mocked_song_book_list_widget: + self.form.reset_song_books() + + # THEN: The song_books list should be reset correctly + mocked_song_book_list_widget.clear.assert_called_once_with() + self.mocked_manager.get_all_objects.assert_called_once_with(MockedBook, order_by_ref=MockedBook.name) + MockedQListWidgetItem.assert_called_once_with('Hymnal (Hymns and Psalms, Inc.)') + mocked_song_book_item.setData.assert_called_once_with(QtCore.Qt.UserRole, 1) + mocked_song_book_list_widget.addItem.assert_called_once_with(mocked_song_book_item) + + @patch('openlp.plugins.songs.forms.songmaintenanceform.and_') + @patch('openlp.plugins.songs.forms.songmaintenanceform.Author') + def test_check_author_exists(self, MockedAuthor, mocked_and): + """ + Test the check_author_exists() method + """ + # GIVEN: A bunch of mocked out stuff + MockedAuthor.first_name = 'John' + MockedAuthor.last_name = 'Newton' + MockedAuthor.display_name = 'John Newton' + mocked_new_author = MagicMock() + mocked_new_author.first_name = 'John' + mocked_new_author.last_name = 'Newton' + mocked_new_author.display_name = 'John Newton' + mocked_and.return_value = True + mocked_authors = [MagicMock(), MagicMock()] + self.mocked_manager.get_all_objects.return_value = mocked_authors + + # WHEN: check_author_exists() is called + with patch.object(self.form, '_check_object_exists') as mocked_check_object_exists: + mocked_check_object_exists.return_value = True + result = self.form.check_author_exists(mocked_new_author, edit=True) + + # THEN: The correct result is returned + mocked_and.assert_called_once_with(True, True, True) + self.mocked_manager.get_all_objects.assert_called_once_with(MockedAuthor, True) + mocked_check_object_exists.assert_called_once_with(mocked_authors, mocked_new_author, True) + assert result is True + + @patch('openlp.plugins.songs.forms.songmaintenanceform.Topic') + def test_check_topic_exists(self, MockedTopic): + """ + Test the check_topic_exists() method + """ + # GIVEN: Some mocked stuff + MockedTopic.name = 'Grace' + mocked_new_topic = MagicMock() + mocked_new_topic.name = 'Grace' + mocked_topics = [MagicMock(), MagicMock()] + self.mocked_manager.get_all_objects.return_value = mocked_topics + + # WHEN: check_topic_exists() is run + with patch.object(self.form, '_check_object_exists') as mocked_check_object_exists: + mocked_check_object_exists.return_value = True + result = self.form.check_topic_exists(mocked_new_topic, True) + + # THEN: The correct things should have been called + self.mocked_manager.get_all_objects.assert_called_once_with(MockedTopic, True) + mocked_check_object_exists.assert_called_once_with(mocked_topics, mocked_new_topic, True) + assert result is True + + @patch('openlp.plugins.songs.forms.songmaintenanceform.and_') + @patch('openlp.plugins.songs.forms.songmaintenanceform.Book') + def test_check_song_book_exists(self, MockedBook, mocked_and): + """ + Test the check_song_book_exists() method + """ + # GIVEN: Some mocked stuff + MockedBook.name = 'Hymns' + MockedBook.publisher = 'Christian Songs' + mocked_new_book = MagicMock() + mocked_new_book.name = 'Hymns' + mocked_new_book.publisher = 'Christian Songs' + mocked_and.return_value = True + mocked_books = [MagicMock(), MagicMock()] + self.mocked_manager.get_all_objects.return_value = mocked_books + + # WHEN: check_book_exists() is run + with patch.object(self.form, '_check_object_exists') as mocked_check_object_exists: + mocked_check_object_exists.return_value = True + result = self.form.check_song_book_exists(mocked_new_book, True) + + # THEN: The correct things should have been called + mocked_and.assert_called_once_with(True, True) + self.mocked_manager.get_all_objects.assert_called_once_with(MockedBook, True) + mocked_check_object_exists.assert_called_once_with(mocked_books, mocked_new_book, True) + assert result is True + + def test_check_object_exists_no_existing_objects(self): + """ + Test the _check_object_exists() method when there are no existing objects + """ + # GIVEN: A SongMaintenanceForm instance + # WHEN: _check_object_exists() is called without existing objects + result = self.form._check_object_exists([], None, False) + + # THEN: The result should be True + assert result is True + + def test_check_object_exists_without_edit(self): + """ + Test the _check_object_exists() method when edit is false + """ + # GIVEN: A SongMaintenanceForm instance + # WHEN: _check_object_exists() is called with edit set to false + result = self.form._check_object_exists([MagicMock()], None, False) + + # THEN: The result should be False + assert result is False + + def test_check_object_exists_not_found(self): + """ + Test the _check_object_exists() method when the object is not found + """ + # GIVEN: A SongMaintenanceForm instance and some mocked objects + mocked_existing_objects = [MagicMock(id=1)] + mocked_new_object = MagicMock(id=2) + + # WHEN: _check_object_exists() is called with edit set to false + result = self.form._check_object_exists(mocked_existing_objects, mocked_new_object, True) + + # THEN: The result should be False + assert result is False + + def test_check_object_exists(self): + """ + Test the _check_object_exists() method + """ + # GIVEN: A SongMaintenanceForm instance and some mocked objects + mocked_existing_objects = [MagicMock(id=1)] + mocked_new_object = MagicMock(id=1) + + # WHEN: _check_object_exists() is called with edit set to false + result = self.form._check_object_exists(mocked_existing_objects, mocked_new_object, True) + + # THEN: The result should be False + assert result is True diff -Nru openlp-2.4.5/tests/resources/opensongsongs/Amazing Grace.json openlp-2.4.6/tests/resources/opensongsongs/Amazing Grace.json --- openlp-2.4.5/tests/resources/opensongsongs/Amazing Grace.json 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/resources/opensongsongs/Amazing Grace.json 2017-03-31 18:33:35.000000000 +0000 @@ -39,4 +39,4 @@ "v5" ] ] -} \ No newline at end of file +} diff -Nru openlp-2.4.5/tests/resources/presentationmanagersongs/Agnus Dei.sng openlp-2.4.6/tests/resources/presentationmanagersongs/Agnus Dei.sng --- openlp-2.4.5/tests/resources/presentationmanagersongs/Agnus Dei.sng 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/resources/presentationmanagersongs/Agnus Dei.sng 2017-03-31 18:33:35.000000000 +0000 @@ -1,7 +1,7 @@ -Agnus Dei +Agnus Dei diff -Nru openlp-2.4.5/tests/resources/songbeamersongs/cp1252song.json openlp-2.4.6/tests/resources/songbeamersongs/cp1252song.json --- openlp-2.4.5/tests/resources/songbeamersongs/cp1252song.json 1970-01-01 00:00:00.000000000 +0000 +++ openlp-2.4.6/tests/resources/songbeamersongs/cp1252song.json 2017-03-31 18:33:35.000000000 +0000 @@ -0,0 +1,8 @@ +{ +"title": "Some Song", + "authors": ["Author"], + "verses" : [ + ["Here are a couple of \"weird\" chars’’’.\n", "v"], + ["Here is another one….\n\n", "v"] + ] +} diff -Nru openlp-2.4.5/tests/resources/songbeamersongs/cp1252song.sng openlp-2.4.6/tests/resources/songbeamersongs/cp1252song.sng --- openlp-2.4.5/tests/resources/songbeamersongs/cp1252song.sng 1970-01-01 00:00:00.000000000 +0000 +++ openlp-2.4.6/tests/resources/songbeamersongs/cp1252song.sng 2017-03-31 18:33:35.000000000 +0000 @@ -0,0 +1,15 @@ +#LangCount=1 +#Editor=SongBeamer 4.28a +#Version=3 +#Format=F/K// +#TitleFormat=U +#Title=Some Song +#Author=Author +#Melody=Author +#(c)=No copyright +#CCLI=0000000000 +--- +Here are a couple of "weird" chars. +--- +Here is another one. + diff -Nru openlp-2.4.5/tests/utils/test_bzr_tags.py openlp-2.4.6/tests/utils/test_bzr_tags.py --- openlp-2.4.5/tests/utils/test_bzr_tags.py 2017-02-03 18:58:50.000000000 +0000 +++ openlp-2.4.6/tests/utils/test_bzr_tags.py 2017-03-31 18:33:35.000000000 +0000 @@ -29,7 +29,7 @@ TAGS1 = {'1.9.0', '1.9.1', '1.9.2', '1.9.3', '1.9.4', '1.9.5', '1.9.6', '1.9.7', '1.9.8', '1.9.9', '1.9.10', '1.9.11', '1.9.12', '2.0', '2.1.0', '2.1.1', '2.1.2', '2.1.3', '2.1.4', '2.1.5', '2.1.6', '2.2', - '2.3.1', '2.3.2', '2.3.3', '2.4', '2.4.1', '2.4.2', '2.4.3', '2.4.4', '2.4.5'} + '2.3.1', '2.3.2', '2.3.3', '2.4', '2.4.1', '2.4.2', '2.4.3', '2.4.4', '2.4.5', '2.4.6'} class TestBzrTags(TestCase):