From 23733608ef8487107450b3a6af5e91ac7f3f9946 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sat, 20 Aug 2011 19:06:48 +0200
Subject: [PATCH 01/68] adapted virtual breaks in OpenLyrics implementation
for the upcomming 0.8 release
---
openlp/plugins/songs/lib/xml.py | 48 +++++++++++++++++++++++----------
1 file changed, 34 insertions(+), 14 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 193a823d5..b88c03f6e 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -202,7 +202,8 @@ class OpenLyrics(object):
This property is not supported.
````
- The attribute *part* is not supported.
+ The attribute *part* is not supported. The *break* attribute is fully
+ supported.
````
This property is not supported.
@@ -227,13 +228,28 @@ class OpenLyrics(object):
````
The attribute *translit* is not supported. Note, the attribute *lang* is
- considered, but there is not further functionality implemented yet.
+ considered, but there is not further functionality implemented yet. The
+ following verse "types" are supported by OpenLP:
+
+ * v
+ * c
+ * b
+ * p
+ * i
+ * e
+ * o
+
+ The verse "types" stand for *Verse*, *Chorus*, *Bridge*, *Pre-Chorus*,
+ *Intro*, *Ending* and *Other*. Any numeric value is allowed after the
+ verse type. The complete verse name in OpenLP always consists of the
+ verse type and the verse number. If not number is present *1* is
+ assumed.
````
OpenLP supports this property.
"""
- IMPLEMENTED_VERSION = u'0.7'
+ IMPLEMENTED_VERSION = u'0.8'
def __init__(self, manager):
self.manager = manager
@@ -290,20 +306,21 @@ class OpenLyrics(object):
for verse in verse_list:
verse_tag = verse[0][u'type'][0].lower()
verse_number = verse[0][u'label']
+ verse_def = verse_tag + verse_number
+ verse_element = \
+ self._add_text_to_element(u'verse', lyrics, None, verse_def)
+ if verse[0].has_key(u'lang'):
+ verse_element.set(u'lang', verse[0][u'lang'])
# Create a list with all "virtual" verses.
virtual_verses = verse[1].split(u'[---]')
for index, virtual_verse in enumerate(virtual_verses):
- verse_def = verse_tag + verse_number
- # We need "v1a" because we have more than one virtual verse.
- if len(virtual_verses) > 1:
- verse_def += list(u'abcdefghijklmnopqrstuvwxyz')[index]
- element = \
- self._add_text_to_element(u'verse', lyrics, None, verse_def)
- if verse[0].has_key(u'lang'):
- element.set(u'lang', verse[0][u'lang'])
- element = self._add_text_to_element(u'lines', element)
+ lines_element = \
+ self._add_text_to_element(u'lines', verse_element)
+ # Do not add the break attribute to the last lines element.
+ if index < len(virtual_verses) - 1:
+ lines_element.set(u'break', u'optional')
for line in virtual_verse.strip(u'\n').split(u'\n'):
- self._add_text_to_element(u'line', element, line)
+ self._add_text_to_element(u'line', lines_element, line)
return self._extract_xml(song_xml)
def xml_to_song(self, xml):
@@ -478,7 +495,10 @@ class OpenLyrics(object):
for lines in verse.lines:
if text:
text += u'\n'
- text += u'\n'.join([unicode(line) for line in lines.line])
+ text += u'\n'.join(map(unicode, lines.line))
+ # Adgetd a virtual split to the verse text.
+ if self._get(lines, u'break'):
+ text += u'\n[---]'
verse_def = self._get(verse, u'name').lower()
if verse_def[0] in VerseType.Tags:
verse_tag = verse_def[0]
From 0ab092e56eef43fec9df31e54b1aa24f822266a2 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sat, 20 Aug 2011 19:15:31 +0200
Subject: [PATCH 02/68] removed _get method
---
openlp/plugins/songs/lib/xml.py | 37 ++++++++++-----------------------
1 file changed, 11 insertions(+), 26 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index b88c03f6e..b4b9aeffb 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -353,7 +353,7 @@ class OpenLyrics(object):
self._process_cclinumber(properties, song)
self._process_titles(properties, song)
# The verse order is processed with the lyrics!
- self._process_lyrics(properties, song_xml.lyrics, song)
+ self._process_lyrics(properties, song_xml, song)
self._process_comments(properties, song)
self._process_authors(properties, song)
self._process_songbooks(properties, song)
@@ -379,20 +379,6 @@ class OpenLyrics(object):
return etree.tostring(xml, encoding=u'UTF-8',
xml_declaration=True)
- def _get(self, element, attribute):
- """
- This returns the element's attribute as unicode string.
-
- ``element``
- The element.
-
- ``attribute``
- The element's attribute (unicode).
- """
- if element.get(attribute) is not None:
- return unicode(element.get(attribute))
- return u''
-
def _text(self, element):
"""
This returns the text of an element as unicode string.
@@ -474,22 +460,23 @@ class OpenLyrics(object):
if hasattr(properties, u'copyright'):
song.copyright = self._text(properties.copyright)
- def _process_lyrics(self, properties, lyrics, song):
+ def _process_lyrics(self, properties, song_xml, song_obj):
"""
Processes the verses and search_lyrics for the song.
``properties``
The properties object (lxml.objectify.ObjectifiedElement).
- ``lyrics``
- The lyrics object (lxml.objectify.ObjectifiedElement).
+ ``song_xml``
+ The objectified song (lxml.objectify.ObjectifiedElement).
- ``song``
+ ``song_obj``
The song object.
"""
sxml = SongXML()
verses = {}
verse_def_list = []
+ lyrics = song_xml.lyrics
for verse in lyrics.verse:
text = u''
for lines in verse.lines:
@@ -497,9 +484,9 @@ class OpenLyrics(object):
text += u'\n'
text += u'\n'.join(map(unicode, lines.line))
# Adgetd a virtual split to the verse text.
- if self._get(lines, u'break'):
+ if lines.get(u'break') is not None:
text += u'\n[---]'
- verse_def = self._get(verse, u'name').lower()
+ verse_def = verse.get(u'name', u' ').lower()
if verse_def[0] in VerseType.Tags:
verse_tag = verse_def[0]
else:
@@ -509,9 +496,7 @@ class OpenLyrics(object):
# not correct the verse order.
if not verse_number:
verse_number = u'1'
- lang = None
- if self._get(verse, u'lang'):
- lang = self._get(verse, u'lang')
+ lang = verse.get(u'lang')
if verses.has_key((verse_tag, verse_number, lang)):
verses[(verse_tag, verse_number, lang)] += u'\n[---]\n' + text
else:
@@ -540,7 +525,7 @@ class OpenLyrics(object):
song.song_number = u''
if hasattr(properties, u'songbooks'):
for songbook in properties.songbooks.songbook:
- bookname = self._get(songbook, u'name')
+ bookname = songbook.get(u'name', u'')
if bookname:
book = self.manager.get_object_filtered(Book,
Book.name == bookname)
@@ -549,7 +534,7 @@ class OpenLyrics(object):
book = Book.populate(name=bookname, publisher=u'')
self.manager.save_object(book)
song.song_book_id = book.id
- song.song_number = self._get(songbook, u'entry')
+ song.song_number = songbook.get(u'entry', u'')
# We only support one song book, so take the first one.
break
From c7d875a67f62e82f11060342c9a8d3e8c1e27850 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sat, 20 Aug 2011 19:39:38 +0200
Subject: [PATCH 03/68] compatibility for OpenLyrics files created with OpenLP
1.9.6 and OpenLyrics 0.7
---
openlp/plugins/songs/lib/xml.py | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index b4b9aeffb..801f61e5e 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -244,6 +244,8 @@ class OpenLyrics(object):
verse type. The complete verse name in OpenLP always consists of the
verse type and the verse number. If not number is present *1* is
assumed.
+ OpenLP will merge verses which are split up by appending a letter to the
+ verse name, such as *v1a*.
````
OpenLP supports this property.
@@ -497,8 +499,15 @@ class OpenLyrics(object):
if not verse_number:
verse_number = u'1'
lang = verse.get(u'lang')
- if verses.has_key((verse_tag, verse_number, lang)):
+ # In OpenLP 1.9.6 we used v1a, v1b ... to represent visual slide
+ # breaks. In OpenLyrics 0.7 an attribute has been added.
+ if song_xml.get(u'modifiedIn') in (u'1.9.6', u'OpenLP 1.9.6') and \
+ song_xml.get(u'version') == u'0.7' and \
+ verses.has_key((verse_tag, verse_number, lang)):
verses[(verse_tag, verse_number, lang)] += u'\n[---]\n' + text
+ # Merge v1a, v1b, .... to v1.
+ elif verses.has_key((verse_tag, verse_number, lang)):
+ verses[(verse_tag, verse_number, lang)] += u'\n' + text
else:
verses[(verse_tag, verse_number, lang)] = text
verse_def_list.append((verse_tag, verse_number, lang))
@@ -506,10 +515,10 @@ class OpenLyrics(object):
for verse in verse_def_list:
sxml.add_verse_to_lyrics(
verse[0], verse[1], verses[verse], verse[2])
- song.lyrics = unicode(sxml.extract_xml(), u'utf-8')
+ song_obj.lyrics = unicode(sxml.extract_xml(), u'utf-8')
# Process verse order
if hasattr(properties, u'verseOrder'):
- song.verse_order = self._text(properties.verseOrder)
+ song_obj.verse_order = self._text(properties.verseOrder)
def _process_songbooks(self, properties, song):
"""
From 650dc83aebd4703c76603a5e81cd9e49e9923279 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Mon, 22 Aug 2011 15:39:02 +0200
Subject: [PATCH 04/68] do not use re with xml
---
openlp/plugins/songs/lib/xml.py | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 801f61e5e..3391a1721 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -73,8 +73,6 @@ from openlp.core.utils import get_application_version
log = logging.getLogger(__name__)
-CHORD_REGEX = re.compile(u'')
-
class SongXML(object):
"""
This class builds and parses the XML used to describe songs.
@@ -202,7 +200,7 @@ class OpenLyrics(object):
This property is not supported.
````
- The attribute *part* is not supported. The *break* attribute is fully
+ The attribute *part* is not supported. The *break* attribute is
supported.
````
@@ -339,8 +337,6 @@ class OpenLyrics(object):
return None
if xml[:5] == u'
Date: Mon, 22 Aug 2011 16:11:37 +0200
Subject: [PATCH 05/68] simplification
---
openlp/plugins/songs/lib/xml.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 3391a1721..c6dd90c03 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -265,8 +265,7 @@ class OpenLyrics(object):
application_name = u'OpenLP ' + get_application_version()[u'version']
song_xml.set(u'createdIn', application_name)
song_xml.set(u'modifiedIn', application_name)
- song_xml.set(u'modifiedDate',
- datetime.datetime.now().strftime(u'%Y-%m-%dT%H:%M:%S'))
+ song_xml.set(u'modifiedDate', datetime.datetime.now().isoformat())
properties = etree.SubElement(song_xml, u'properties')
titles = etree.SubElement(properties, u'titles')
self._add_text_to_element(u'title', titles, song.title)
From 627b9429aa2bf1fa3fafdf6e02fd1b965ef10862 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Fri, 26 Aug 2011 16:27:53 +0200
Subject: [PATCH 06/68] documented formatting tags; added infrastructure to
allow temporary formatting tags
---
openlp/core/lib/formattingtags.py | 76 ++++++++++++++++++++++-------
openlp/core/ui/formattingtagform.py | 13 +++--
2 files changed, 68 insertions(+), 21 deletions(-)
diff --git a/openlp/core/lib/formattingtags.py b/openlp/core/lib/formattingtags.py
index ae9d5c1cf..8230da36a 100644
--- a/openlp/core/lib/formattingtags.py
+++ b/openlp/core/lib/formattingtags.py
@@ -56,73 +56,115 @@ class FormattingTags(object):
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Red'),
u'start tag': u'{r}',
u'start html': u'',
- u'end tag': u'{/r}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/r}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Black'),
u'start tag': u'{b}',
u'start html': u'',
- u'end tag': u'{/b}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/b}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Blue'),
u'start tag': u'{bl}',
u'start html': u'',
- u'end tag': u'{/bl}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/bl}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Yellow'),
u'start tag': u'{y}',
u'start html': u'',
- u'end tag': u'{/y}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/y}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Green'),
u'start tag': u'{g}',
u'start html': u'',
- u'end tag': u'{/g}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/g}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Pink'),
u'start tag': u'{pk}',
u'start html': u'',
- u'end tag': u'{/pk}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/pk}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Orange'),
u'start tag': u'{o}',
u'start html': u'',
- u'end tag': u'{/o}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/o}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Purple'),
u'start tag': u'{pp}',
u'start html': u'',
- u'end tag': u'{/pp}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/pp}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'White'),
u'start tag': u'{w}',
u'start html': u'',
- u'end tag': u'{/w}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/w}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Superscript'),
u'start tag': u'{su}', u'start html': u'',
- u'end tag': u'{/su}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/su}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Subscript'),
u'start tag': u'{sb}', u'start html': u'',
- u'end tag': u'{/sb}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/sb}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Paragraph'),
u'start tag': u'{p}', u'start html': u'
', u'end tag': u'{/p}',
- u'end html': u'
', u'protected': True})
+ u'end html': u'
', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Bold'),
u'start tag': u'{st}', u'start html': u'',
u'end tag': u'{/st}', u'end html': u'',
- u'protected': True})
+ u'protected': True, u'temporary': False})
base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Italics'),
u'start tag': u'{it}', u'start html': u'', u'end tag': u'{/it}',
- u'end html': u'', u'protected': True})
+ u'end html': u'', u'protected': True, u'temporary': False})
base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Underline'),
u'start tag': u'{u}',
u'start html': u'',
- u'end tag': u'{/u}', u'end html': u'', u'protected': True})
+ u'end tag': u'{/u}', u'end html': u'', u'protected': True,
+ u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Break'),
u'start tag': u'{br}', u'start html': u' ', u'end tag': u'',
- u'end html': u'', u'protected': True})
+ u'end html': u'', u'protected': True, u'temporary': False})
FormattingTags.add_html_tags(base_tags)
@staticmethod
def add_html_tags(tags):
"""
- Add a list of tags to the list
+ Add a list of tags to the list.
+
+ ``tags``
+ The list with tags to add.
+
+ Each **tag** has to be a ``dict`` and should have the following keys:
+
+ * desc
+ The formatting tag's description, e. g. **Red**
+
+ * start tag
+ The start tag, e. g. ``{r}``
+
+ * end tag
+ The end tag, e. g. ``{/r}``
+
+ * start html
+ The start html tag. For instance ````
+
+ * end html
+ The end html tag. For example ````
+
+ * protected
+ A boolean stating whether this is a build-in tag or not. Should be
+ ``True`` in most cases.
+
+ * temporary
+ A temporary tag will not be saved, but is also considered when
+ displaying text containing the tag. It has to be a ``boolean``.
"""
FormattingTags.html_expands.extend(tags)
diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py
index 2a8625b1a..4d4739204 100644
--- a/openlp/core/ui/formattingtagform.py
+++ b/openlp/core/ui/formattingtagform.py
@@ -132,7 +132,8 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
u'start html': translate('OpenLP.FormattingTagForm', ''),
u'end tag': u'{/n}',
u'end html': translate('OpenLP.FormattingTagForm', ''),
- u'protected': False
+ u'protected': False,
+ u'temporary': False
}
FormattingTags.add_html_tags([tag])
self._resetTable()
@@ -172,6 +173,8 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
html[u'end html'] = unicode(self.endTagLineEdit.text())
html[u'start tag'] = u'{%s}' % tag
html[u'end tag'] = u'{/%s}' % tag
+ # Keep temporary tags when the user changes one.
+ html[u'temporary'] = False
self.selected = -1
self._resetTable()
self._saveTable()
@@ -182,7 +185,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
"""
tags = []
for tag in FormattingTags.get_html_tags():
- if not tag[u'protected']:
+ if not tag[u'protected'] and not tag[u'temporary']:
tags.append(tag)
# Formatting Tags were also known as display tags.
QtCore.QSettings().setValue(u'displayTags/html_tags',
@@ -198,8 +201,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
self.savePushButton.setEnabled(False)
self.deletePushButton.setEnabled(False)
for linenumber, html in enumerate(FormattingTags.get_html_tags()):
- self.tagTableWidget.setRowCount(
- self.tagTableWidget.rowCount() + 1)
+ self.tagTableWidget.setRowCount(self.tagTableWidget.rowCount() + 1)
self.tagTableWidget.setItem(linenumber, 0,
QtGui.QTableWidgetItem(html[u'desc']))
self.tagTableWidget.setItem(linenumber, 1,
@@ -208,6 +210,9 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
QtGui.QTableWidgetItem(html[u'start html']))
self.tagTableWidget.setItem(linenumber, 3,
QtGui.QTableWidgetItem(html[u'end html']))
+ # Tags saved prior to 1.9.7 do not have this key.
+ if not html.has_key(u'temporary'):
+ html[u'temporary'] = False
self.tagTableWidget.resizeRowsToContents()
self.descriptionLineEdit.setText(u'')
self.tagLineEdit.setText(u'')
From 953ff87ff58c01424a13bf0356b259f3daed1552 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Fri, 26 Aug 2011 17:06:22 +0200
Subject: [PATCH 07/68] do not delete temporary tags when resetting the list;
preparations
---
openlp/core/lib/formattingtags.py | 3 +++
openlp/plugins/songs/lib/mediaitem.py | 3 +++
openlp/plugins/songs/lib/xml.py | 11 ++++++++---
3 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/openlp/core/lib/formattingtags.py b/openlp/core/lib/formattingtags.py
index 8230da36a..bb4c0bcc8 100644
--- a/openlp/core/lib/formattingtags.py
+++ b/openlp/core/lib/formattingtags.py
@@ -49,6 +49,8 @@ class FormattingTags(object):
"""
Resets the html_expands list.
"""
+ temporary_tags = [tag for tag in FormattingTags.html_expands
+ if tag[u'temporary']]
FormattingTags.html_expands = []
base_tags = []
# Append the base tags.
@@ -131,6 +133,7 @@ class FormattingTags(object):
u'start tag': u'{br}', u'start html': u' ', u'end tag': u'',
u'end html': u'', u'protected': True, u'temporary': False})
FormattingTags.add_html_tags(base_tags)
+ FormattingTags.add_html_tags(temporary_tags)
@staticmethod
def add_html_tags(tags):
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index a2814a1df..b1a5f3572 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -513,6 +513,9 @@ class SongMediaItem(MediaManagerItem):
if add_song and self.addSongFromService:
editId = self.openLyrics.xml_to_song(item.xml_version)
self.onSearchTextButtonClick()
+ else:
+ # Make sure we temporary import formatting tags.
+ self.openLyrics.xml_to_song(item.xml_version, False)
# Update service with correct song id.
if editId:
Receiver.send_message(u'service_item_update',
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index c6dd90c03..79b0bc986 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -322,7 +322,7 @@ class OpenLyrics(object):
self._add_text_to_element(u'line', lines_element, line)
return self._extract_xml(song_xml)
- def xml_to_song(self, xml):
+ def xml_to_song(self, xml, save_to_db=True):
"""
Create and save a song from OpenLyrics format xml to the database. Since
we also export XML from external sources (e. g. OpenLyrics import), we
@@ -330,6 +330,10 @@ class OpenLyrics(object):
``xml``
The XML to parse (unicode).
+
+ ``save_to_db``
+ Switch to prevent storing songs to the database. Defaults to
+ ``True``.
"""
# No xml get out of here.
if not xml:
@@ -356,8 +360,9 @@ class OpenLyrics(object):
self._process_songbooks(properties, song)
self._process_topics(properties, song)
clean_song(self.manager, song)
- self.manager.save_object(song)
- return song.id
+ if save_to_db:
+ self.manager.save_object(song)
+ return song.id
def _add_text_to_element(self, tag, parent, text=None, label=None):
if label:
From 407b342f45f1d93a23affe54debc8e2229efcbd1 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Fri, 26 Aug 2011 17:15:17 +0200
Subject: [PATCH 08/68] changed 'switch' name
---
openlp/plugins/songs/lib/mediaitem.py | 2 +-
openlp/plugins/songs/lib/xml.py | 35 ++++++++++++++-------------
2 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index b1a5f3572..2f8e37f96 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -515,7 +515,7 @@ class SongMediaItem(MediaManagerItem):
self.onSearchTextButtonClick()
else:
# Make sure we temporary import formatting tags.
- self.openLyrics.xml_to_song(item.xml_version, False)
+ self.openLyrics.xml_to_song(item.xml_version, True)
# Update service with correct song id.
if editId:
Receiver.send_message(u'service_item_update',
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 79b0bc986..4021d3355 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -322,7 +322,7 @@ class OpenLyrics(object):
self._add_text_to_element(u'line', lines_element, line)
return self._extract_xml(song_xml)
- def xml_to_song(self, xml, save_to_db=True):
+ def xml_to_song(self, xml, only_process_format_tags=False):
"""
Create and save a song from OpenLyrics format xml to the database. Since
we also export XML from external sources (e. g. OpenLyrics import), we
@@ -331,9 +331,9 @@ class OpenLyrics(object):
``xml``
The XML to parse (unicode).
- ``save_to_db``
- Switch to prevent storing songs to the database. Defaults to
- ``True``.
+ ``only_process_format_tags``
+ Switch to skip processing the whole song and to prevent storing the
+ songs to the database. Defaults to ``False``.
"""
# No xml get out of here.
if not xml:
@@ -346,21 +346,22 @@ class OpenLyrics(object):
else:
return None
song = Song()
- # Values will be set when cleaning the song.
- song.search_lyrics = u''
- song.verse_order = u''
- song.search_title = u''
- self._process_copyright(properties, song)
- self._process_cclinumber(properties, song)
- self._process_titles(properties, song)
+ if not only_process_format_tags:
+ # Values will be set when cleaning the song.
+ song.search_lyrics = u''
+ song.verse_order = u''
+ song.search_title = u''
+ self._process_copyright(properties, song)
+ self._process_cclinumber(properties, song)
+ self._process_titles(properties, song)
# The verse order is processed with the lyrics!
self._process_lyrics(properties, song_xml, song)
- self._process_comments(properties, song)
- self._process_authors(properties, song)
- self._process_songbooks(properties, song)
- self._process_topics(properties, song)
- clean_song(self.manager, song)
- if save_to_db:
+ if not only_process_format_tags:
+ self._process_comments(properties, song)
+ self._process_authors(properties, song)
+ self._process_songbooks(properties, song)
+ self._process_topics(properties, song)
+ clean_song(self.manager, song)
self.manager.save_object(song)
return song.id
From f3691516fd93c77c057719c5259125a48075f980 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sat, 27 Aug 2011 16:00:24 +0200
Subject: [PATCH 09/68] import tags from xml (part 1)
---
openlp/core/lib/formattingtags.py | 24 +++++++++-
openlp/core/ui/formattingtagform.py | 16 +------
openlp/plugins/songs/lib/xml.py | 70 ++++++++++++++++++++++-------
3 files changed, 78 insertions(+), 32 deletions(-)
diff --git a/openlp/core/lib/formattingtags.py b/openlp/core/lib/formattingtags.py
index bb4c0bcc8..529a8c029 100644
--- a/openlp/core/lib/formattingtags.py
+++ b/openlp/core/lib/formattingtags.py
@@ -27,6 +27,9 @@
"""
Provide HTML Tag management and Formatting Tag access class
"""
+import cPickle
+
+from PyQt4 import QtCore
from openlp.core.lib import translate
@@ -136,13 +139,30 @@ class FormattingTags(object):
FormattingTags.add_html_tags(temporary_tags)
@staticmethod
- def add_html_tags(tags):
+ def save_html_tags():
+ """
+ Saves all formatting tags except protected ones.
+ """
+ tags = []
+ for tag in FormattingTags.get_html_tags():
+ if not tag[u'protected'] and not tag[u'temporary']:
+ tags.append(tag)
+ # Formatting Tags were also known as display tags.
+ QtCore.QSettings().setValue(u'displayTags/html_tags',
+ QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
+
+ @staticmethod
+ def add_html_tags(tags, save=False):
"""
Add a list of tags to the list.
``tags``
The list with tags to add.
+ ``save``
+ Defaults to ``False``. If set to ``True`` the given ``tags`` are
+ saved to the config.
+
Each **tag** has to be a ``dict`` and should have the following keys:
* desc
@@ -170,6 +190,8 @@ class FormattingTags(object):
displaying text containing the tag. It has to be a ``boolean``.
"""
FormattingTags.html_expands.extend(tags)
+ if save:
+ FormattingTags.save_html_tags()
@staticmethod
def remove_html_tag(tag_id):
diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py
index 4d4739204..fee27a9c6 100644
--- a/openlp/core/ui/formattingtagform.py
+++ b/openlp/core/ui/formattingtagform.py
@@ -150,7 +150,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
FormattingTags.remove_html_tag(self.selected)
self.selected = -1
self._resetTable()
- self._saveTable()
+ FormattingTags.save_html_tags()
def onSavedPushed(self):
"""
@@ -177,19 +177,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
html[u'temporary'] = False
self.selected = -1
self._resetTable()
- self._saveTable()
-
- def _saveTable(self):
- """
- Saves all formatting tags except protected ones.
- """
- tags = []
- for tag in FormattingTags.get_html_tags():
- if not tag[u'protected'] and not tag[u'temporary']:
- tags.append(tag)
- # Formatting Tags were also known as display tags.
- QtCore.QSettings().setValue(u'displayTags/html_tags',
- QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
+ FormattingTags.save_html_tags()
def _resetTable(self):
"""
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 4021d3355..ac77596de 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -67,6 +67,7 @@ import re
from lxml import etree, objectify
+from openlp.core.lib import FormattingTags
from openlp.plugins.songs.lib import clean_song, VerseType
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic
from openlp.core.utils import get_application_version
@@ -265,7 +266,9 @@ class OpenLyrics(object):
application_name = u'OpenLP ' + get_application_version()[u'version']
song_xml.set(u'createdIn', application_name)
song_xml.set(u'modifiedIn', application_name)
- song_xml.set(u'modifiedDate', datetime.datetime.now().isoformat())
+ # "Convert" 2011-08-27 11:49:15 to 2011-08-27T11:49:15.
+ song_xml.set(u'modifiedDate',
+ unicode(song.last_modified).replace(u' ', u'T'))
properties = etree.SubElement(song_xml, u'properties')
titles = etree.SubElement(properties, u'titles')
self._add_text_to_element(u'title', titles, song.title)
@@ -299,6 +302,10 @@ class OpenLyrics(object):
themes = etree.SubElement(properties, u'themes')
for topic in song.topics:
self._add_text_to_element(u'theme', themes, topic.name)
+ # Process the formatting tags.
+ format = etree.SubElement(song_xml, u'format')
+ tags = etree.SubElement(format, u'tags')
+ tags.set(u'application', u'OpenLP')
# Process the song's lyrics.
lyrics = etree.SubElement(song_xml, u'lyrics')
verse_list = sxml.get_verses(song.lyrics)
@@ -345,25 +352,27 @@ class OpenLyrics(object):
properties = song_xml.properties
else:
return None
+ if float(song_xml.get(u'version')) > 0.6:
+ self._process_formatting_tags(song_xml, only_process_format_tags)
+ if only_process_format_tags:
+ return
song = Song()
- if not only_process_format_tags:
- # Values will be set when cleaning the song.
- song.search_lyrics = u''
- song.verse_order = u''
- song.search_title = u''
- self._process_copyright(properties, song)
- self._process_cclinumber(properties, song)
- self._process_titles(properties, song)
+ # Values will be set when cleaning the song.
+ song.search_lyrics = u''
+ song.verse_order = u''
+ song.search_title = u''
+ self._process_copyright(properties, song)
+ self._process_cclinumber(properties, song)
+ self._process_titles(properties, song)
# The verse order is processed with the lyrics!
self._process_lyrics(properties, song_xml, song)
- if not only_process_format_tags:
- self._process_comments(properties, song)
- self._process_authors(properties, song)
- self._process_songbooks(properties, song)
- self._process_topics(properties, song)
- clean_song(self.manager, song)
- self.manager.save_object(song)
- return song.id
+ self._process_comments(properties, song)
+ self._process_authors(properties, song)
+ self._process_songbooks(properties, song)
+ self._process_topics(properties, song)
+ clean_song(self.manager, song)
+ self.manager.save_object(song)
+ return song.id
def _add_text_to_element(self, tag, parent, text=None, label=None):
if label:
@@ -463,6 +472,33 @@ class OpenLyrics(object):
if hasattr(properties, u'copyright'):
song.copyright = self._text(properties.copyright)
+ def _process_formatting_tags(self, song_xml, temporary):
+ """
+ Process the formatting tags from the song and either add missing tags
+ temporary or permanently to the formatting tag list.
+ """
+ if not hasattr(song_xml, u'format'):
+ return
+ found_tags = []
+ for tag in song_xml.format.tags.getchildren():
+ name = tag.get(u'name')
+ if name is None:
+ continue
+ openlp_tag = {
+ u'desc': name,
+ u'start tag': u'{%s}' % name[:5],
+ u'end tag': u'{/%s}' % name[:5],
+ u'start html': tag.open.text,
+ u'end html': tag.close.text,
+ u'protected': False,
+ u'temporary': temporary
+ }
+ found_tags.append(openlp_tag)
+ existing_tag_ids = [tag[u'start tag']
+ for tag in FormattingTags.get_html_tags()]
+ FormattingTags.add_html_tags([tag for tag in found_tags
+ if tag[u'start tag'] not in existing_tag_ids], True)
+
def _process_lyrics(self, properties, song_xml, song_obj):
"""
Processes the verses and search_lyrics for the song.
From 4cf750ce9d406aa6759a68133f0333792042d960 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sat, 3 Sep 2011 16:21:36 +0200
Subject: [PATCH 10/68] Wrap db.Manager to a function arg for automated tests
---
openlp/core/__init__.py | 35 ++++++++++++++++--------------
openlp/core/lib/db.py | 12 +++++++++--
testing/conftest.py | 47 ++++++++++++++++++++++++++++++++++++++---
3 files changed, 73 insertions(+), 21 deletions(-)
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py
index 01d34956e..305398b9a 100644
--- a/openlp/core/__init__.py
+++ b/openlp/core/__init__.py
@@ -228,26 +228,29 @@ def main(args=None):
help='Set the Qt4 style (passed directly to Qt4).')
parser.add_option('--testing', dest='testing',
action='store_true', help='Run by testing framework')
- # Set up logging
- log_path = AppLocation.get_directory(AppLocation.CacheDir)
- check_directory_exists(log_path)
- filename = os.path.join(log_path, u'openlp.log')
- logfile = logging.FileHandler(filename, u'w')
- logfile.setFormatter(logging.Formatter(
- u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
- log.addHandler(logfile)
- logging.addLevelName(15, u'Timer')
# Parse command line options and deal with them.
# Use args supplied programatically if possible.
(options, args) = parser.parse_args(args) if args else parser.parse_args()
+ # Set up logging
+ # In test mode it is skipped
+ if not options.testing:
+ log_path = AppLocation.get_directory(AppLocation.CacheDir)
+ check_directory_exists(log_path)
+ filename = os.path.join(log_path, u'openlp.log')
+ logfile = logging.FileHandler(filename, u'w')
+ logfile.setFormatter(logging.Formatter(
+ u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
+ log.addHandler(logfile)
+ logging.addLevelName(15, u'Timer')
+ if options.loglevel.lower() in ['d', 'debug']:
+ log.setLevel(logging.DEBUG)
+ print 'Logging to:', filename
+ elif options.loglevel.lower() in ['w', 'warning']:
+ log.setLevel(logging.WARNING)
+ else:
+ log.setLevel(logging.INFO)
+ # Deal with other command line options.
qt_args = []
- if options.loglevel.lower() in ['d', 'debug']:
- log.setLevel(logging.DEBUG)
- print 'Logging to:', filename
- elif options.loglevel.lower() in ['w', 'warning']:
- log.setLevel(logging.WARNING)
- else:
- log.setLevel(logging.INFO)
if options.style:
qt_args.extend(['-style', options.style])
# Throw the rest of the arguments at Qt, just in case.
diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py
index 2e5d011cf..7bb42b321 100644
--- a/openlp/core/lib/db.py
+++ b/openlp/core/lib/db.py
@@ -159,7 +159,7 @@ class Manager(object):
Provide generic object persistence management
"""
def __init__(self, plugin_name, init_schema, db_file_name=None,
- upgrade_mod=None):
+ db_file_path=None, upgrade_mod=None):
"""
Runs the initialisation process that includes creating the connection
to the database and the tables if they don't exist.
@@ -176,6 +176,10 @@ class Manager(object):
``db_file_name``
The file name to use for this database. Defaults to None resulting
in the plugin_name being used.
+
+ ``db_file_path``
+ The path to sqlite file to use for this database. This is useful
+ for testing purposes.
"""
settings = QtCore.QSettings()
settings.beginGroup(plugin_name)
@@ -184,7 +188,11 @@ class Manager(object):
db_type = unicode(
settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString())
if db_type == u'sqlite':
- if db_file_name:
+ # For automated tests we need to supply file_path directly
+ if db_file_path:
+ self.db_url = u'sqlite:///%s' % os.path.normpath(
+ os.path.abspath(db_file_path))
+ elif db_file_name:
self.db_url = u'sqlite:///%s/%s' % (
AppLocation.get_section_data_path(plugin_name),
db_file_name)
diff --git a/testing/conftest.py b/testing/conftest.py
index f38018c17..3f3b79bc7 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -30,16 +30,57 @@
Configuration file for pytest framework.
"""
+import logging
+import random
+import string
+
+from PyQt4 import QtCore
+from sqlalchemy.orm import clear_mappers
+
from openlp.core import main as openlp_main
+from openlp.core.lib.db import Manager
+from openlp.plugins.songs.lib.db import init_schema
+
+# set up logging to stderr (console)
+_handler = logging.StreamHandler(stream=None)
+_handler.setFormatter(logging.Formatter(
+ u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
+logging.addLevelName(15, u'Timer')
+log = logging.getLogger()
+log.addHandler(_handler)
+log.setLevel(logging.DEBUG)
# Test function argument to make openlp gui instance persistent for all tests.
-# All test cases have to access the same instance. To allow create multiple
+# Test cases in module have to access the same instance. To allow creating
+# multiple
# instances it would be necessary use diffrent configuraion and data files.
# Created instance will use your OpenLP settings.
def pytest_funcarg__openlpapp(request):
def setup():
return openlp_main(['--testing'])
def teardown(app):
- pass
- return request.cached_setup(setup=setup, teardown=teardown, scope='session')
+ # sqlalchemy allows to map classess to only one database at a time
+ clear_mappers()
+ return request.cached_setup(setup=setup, teardown=teardown, scope='module')
+
+
+# Test function argument to make openlp gui instance persistent for all tests.
+def pytest_funcarg__empty_dbmanager(request):
+ def setup():
+ tmpdir = request.getfuncargvalue('tmpdir')
+ db_file_path = tmpdir.join('songs.sqlite')
+ print db_file_path
+ unique = ''.join(random.choice(string.letters + string.digits)
+ for i in range(8))
+ plugin_name = 'test_songs_%s' % unique
+ settings = QtCore.QSettings()
+ settings.beginGroup(plugin_name)
+ settings.setValue(u'db type', QtCore.QVariant(u'sqlite'))
+ settings.endGroup()
+ manager = Manager(plugin_name, init_schema,
+ db_file_path=db_file_path.strpath)
+ return manager
+ def teardown(manager):
+ clear_mappers()
+ return request.cached_setup(setup=setup, teardown=teardown, scope='function')
From 27897c95fd0fffa855954474b581510257a66d66 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sat, 3 Sep 2011 23:01:04 +0200
Subject: [PATCH 11/68] Add some db.Manager tests
---
testing/conftest.py | 5 ++--
testing/test_app.py | 4 +++
testing/test_songs_db.py | 53 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 60 insertions(+), 2 deletions(-)
create mode 100644 testing/test_songs_db.py
diff --git a/testing/conftest.py b/testing/conftest.py
index 3f3b79bc7..d21ced22d 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -66,11 +66,11 @@ def pytest_funcarg__openlpapp(request):
# Test function argument to make openlp gui instance persistent for all tests.
-def pytest_funcarg__empty_dbmanager(request):
+def pytest_funcarg__empty_songs_db(request):
def setup():
tmpdir = request.getfuncargvalue('tmpdir')
db_file_path = tmpdir.join('songs.sqlite')
- print db_file_path
+ # unique QSettings group
unique = ''.join(random.choice(string.letters + string.digits)
for i in range(8))
plugin_name = 'test_songs_%s' % unique
@@ -82,5 +82,6 @@ def pytest_funcarg__empty_dbmanager(request):
db_file_path=db_file_path.strpath)
return manager
def teardown(manager):
+ # sqlalchemy allows to map classess to only one database at a time
clear_mappers()
return request.cached_setup(setup=setup, teardown=teardown, scope='function')
diff --git a/testing/test_app.py b/testing/test_app.py
index 00cd744ba..2cfda14d0 100644
--- a/testing/test_app.py
+++ b/testing/test_app.py
@@ -26,6 +26,10 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
+"""
+GUI tests
+"""
+
from openlp.core import OpenLP
from openlp.core.ui.mainwindow import MainWindow
diff --git a/testing/test_songs_db.py b/testing/test_songs_db.py
new file mode 100644
index 000000000..4210b3fef
--- /dev/null
+++ b/testing/test_songs_db.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# This program is free software; you can redistribute it and/or modify it #
+# under the terms of the GNU General Public License as published by the Free #
+# Software Foundation; version 2 of the License. #
+# #
+# This program is distributed in the hope that it will be useful, but WITHOUT #
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
+# more details. #
+# #
+# You should have received a copy of the GNU General Public License along #
+# with this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+"""
+Songs database tests
+"""
+
+from openlp.plugins.songs.lib.db import Author, Book, MediaFile, Song, Topic
+
+
+def test_empty_songdb(empty_songs_db):
+ g = empty_songs_db.get_all_objects
+ assert g(Author) == []
+ assert g(Book) == []
+ assert g(MediaFile) == []
+ assert g(Song) == []
+ assert g(Topic) == []
+ c = empty_songs_db.get_object_count
+ assert c(Author) == 0
+ assert c(Book) == 0
+ assert c(MediaFile) == 0
+ assert c(Song) == 0
+ assert c(Topic) == 0
+
+
+def test_nonexisting_class(empty_songs_db):
+ # test class not mapped to any sqlalchemy table
+ assert 0
From 445a0ccb498423819552b792316582a3be207b04 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sun, 4 Sep 2011 14:50:25 +0200
Subject: [PATCH 12/68] Add test for empty song database
---
testing/test_songs_db.py | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/testing/test_songs_db.py b/testing/test_songs_db.py
index 4210b3fef..ae8d78251 100644
--- a/testing/test_songs_db.py
+++ b/testing/test_songs_db.py
@@ -30,6 +30,10 @@
Songs database tests
"""
+import pytest
+from sqlalchemy.exc import InvalidRequestError
+from sqlalchemy.orm.exc import UnmappedInstanceError
+
from openlp.plugins.songs.lib.db import Author, Book, MediaFile, Song, Topic
@@ -48,6 +52,24 @@ def test_empty_songdb(empty_songs_db):
assert c(Topic) == 0
-def test_nonexisting_class(empty_songs_db):
+def test_unmapped_class(empty_songs_db):
# test class not mapped to any sqlalchemy table
- assert 0
+ class A(object):
+ pass
+ db = empty_songs_db
+ assert db.save_object(A()) == False
+ assert db.save_objects([A(), A()]) == False
+ # no key - new object instance is created from supplied class
+ assert type(db.get_object(A, key=None)) == A
+
+ with pytest.raises(InvalidRequestError):
+ db.get_object(A, key=1)
+ with pytest.raises(InvalidRequestError):
+ db.get_object_filtered(A, filter_clause=None)
+ with pytest.raises(InvalidRequestError):
+ db.get_all_objects(A)
+ with pytest.raises(InvalidRequestError):
+ db.get_object_count(A)
+
+ assert db.delete_object(A, key=None) == False
+ assert db.delete_all_objects(A) == False
From 57f8f5c54c51ef95dc867deb411dc61cffadcb94 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 5 Sep 2011 14:55:39 +0200
Subject: [PATCH 13/68] Add test function argument with database containing
some data
---
testing/conftest.py | 48 ++++++++++++++++++++++++++++++++++++---------
1 file changed, 39 insertions(+), 9 deletions(-)
diff --git a/testing/conftest.py b/testing/conftest.py
index d21ced22d..52f7984d8 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -30,10 +30,12 @@
Configuration file for pytest framework.
"""
+import os
import logging
import random
import string
+import py.path
from PyQt4 import QtCore
from sqlalchemy.orm import clear_mappers
@@ -41,6 +43,11 @@ from openlp.core import main as openlp_main
from openlp.core.lib.db import Manager
from openlp.plugins.songs.lib.db import init_schema
+TESTS_PATH = os.path.dirname(os.path.abspath(__file__))
+
+RESOURCES_PATH = os.path.join(TESTS_PATH, 'resources')
+SONGS_PATH = os.path.join(RESOURCES_PATH, 'songs')
+
# set up logging to stderr (console)
_handler = logging.StreamHandler(stream=None)
_handler.setFormatter(logging.Formatter(
@@ -65,19 +72,42 @@ def pytest_funcarg__openlpapp(request):
return request.cached_setup(setup=setup, teardown=teardown, scope='module')
-# Test function argument to make openlp gui instance persistent for all tests.
+def _get_unique_qsettings():
+ # unique QSettings group
+ unique = ''.join(random.choice(string.letters + string.digits)
+ for i in range(8))
+ group_name = 'test_%s' % unique
+ settings = QtCore.QSettings()
+ settings.beginGroup(group_name)
+ settings.setValue(u'db type', QtCore.QVariant(u'sqlite'))
+ settings.endGroup()
+ return group_name
+
+
+# Test function argument giving access to empty song database.
def pytest_funcarg__empty_songs_db(request):
def setup():
tmpdir = request.getfuncargvalue('tmpdir')
db_file_path = tmpdir.join('songs.sqlite')
- # unique QSettings group
- unique = ''.join(random.choice(string.letters + string.digits)
- for i in range(8))
- plugin_name = 'test_songs_%s' % unique
- settings = QtCore.QSettings()
- settings.beginGroup(plugin_name)
- settings.setValue(u'db type', QtCore.QVariant(u'sqlite'))
- settings.endGroup()
+ plugin_name = _get_unique_qsettings()
+ manager = Manager(plugin_name, init_schema,
+ db_file_path=db_file_path.strpath)
+ return manager
+ def teardown(manager):
+ # sqlalchemy allows to map classess to only one database at a time
+ clear_mappers()
+ return request.cached_setup(setup=setup, teardown=teardown, scope='function')
+
+
+# Test function argument giving access to song database.
+def pytest_funcarg__songs_db(request):
+ def setup():
+ tmpdir = request.getfuncargvalue('tmpdir')
+ db_file_path = tmpdir.join('songs.sqlite')
+ # copy test data to tmpdir
+ orig_db = py.path.local(SONGS_PATH).join('songs.sqlite')
+ orig_db.copy(db_file_path)
+ plugin_name = _get_unique_qsettings()
manager = Manager(plugin_name, init_schema,
db_file_path=db_file_path.strpath)
return manager
From d8642636ecc25b658cdea05e1203728a257b2abd Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 5 Sep 2011 14:57:35 +0200
Subject: [PATCH 14/68] add song example for tests
---
testing/resources/songs/openlyric_test_1.xml | 64 +++++++++++++++++++
testing/resources/songs/songs.sqlite | Bin 0 -> 30720 bytes
2 files changed, 64 insertions(+)
create mode 100644 testing/resources/songs/openlyric_test_1.xml
create mode 100644 testing/resources/songs/songs.sqlite
diff --git a/testing/resources/songs/openlyric_test_1.xml b/testing/resources/songs/openlyric_test_1.xml
new file mode 100644
index 000000000..240736878
--- /dev/null
+++ b/testing/resources/songs/openlyric_test_1.xml
@@ -0,0 +1,64 @@
+
+
+
+
+ Jezu Kriste, štědrý kněže
+
+
+ M. Jan Hus
+
+
+
+
+
+
+
+
+ Jezu Kriste, štědrý kněže,
+ s Otcem, Duchem jeden Bože,
+ štědrost Tvá je naše zboží,
+ z Tvé milosti.
+
+
+
+
+ Ty jsi v světě, bydlil s námi,
+ Tvé tělo trpělo rány
+ za nás za hříšné křesťany,
+ z Tvé milosti.
+
+
+
+
+ Ó, Tvá dobroto důstojná
+ a k nám milosti přehojná!
+ Dáváš nám bohatství mnohá
+ z Tvé milosti.
+
+
+
+
+ Ráčils nás sám zastoupiti,
+ život za nás položiti,
+ tak smrt věčnou zahladiti,
+ z Tvé milosti.
+
+
+
+
+ Ó, křesťané, z bludů vstaňme,
+ dané dobro nám poznejme,
+ k Synu Božímu chvátejme,
+ k té milosti!
+
+
+
+
+ Chvála budiž Bohu Otci,
+ Synu jeho téže moci,
+ Duchu jeho rovné moci,
+ z též milosti!
+
+
+
+
diff --git a/testing/resources/songs/songs.sqlite b/testing/resources/songs/songs.sqlite
new file mode 100644
index 0000000000000000000000000000000000000000..204764f4a95e62f7f6316aa23f3b1aed736e74f1
GIT binary patch
literal 30720
zcmeHQ&2JmW72n}XT8WM#+p@EDRn;RIhD4OML^-nJSeB(obRvJqE={K~jD%Qn*XD}L
zU75R-EuknN$3UHfVHEBqFnZ9ThXgQs=%J_jLh(Q7sX$Ie4nQ674o`G*Vg}mnB6HAJ@#0c4{$V_Umo6vq(zS~hqd43{>QiaQ$)#!pq}($-%fKJcCFVbxON>rT
zPDZ$9n&lYBy4k=0RIuEx7|6GX6!pjvbniNqFK_6kmbz(z)dns@oP>dj7S>Dp;0LtM
zQoXg6+Hix71eBoY1kL`ALCw#fC&bV|7npW^eQ;8`;nXGfl4;mMPT~*<2n5;<0W$xQ
z{1*vc;t&W31a=<+1E@nf-Fx12JtJ+KnOy0QIH%be)3HmN7M=g-V+mg3cw-1WJdE~B
zXtDRvST8xG#V^jDIDyU^>qUH_Kn5a;%bVWT6TLtN!`^yQer8Ocy_>f%`9=XFb7mxV
ze0&5Ob_Slc?OSI?t|iYMdvE0IOn90+=2gjtfoynYnmxkLOw;cpm^>q%8D1TRr}ea9
zof(b+#n6p;c#5C9(OQOR*u|H3AX{<`FS{mQ#qR3X6F?`5(`&kA
zTG+*4s(CXSrkz8LmA^FH@^3YJ?LUz0
zL_o6A<0#WuchUvNbFg0io$EQvz%#7j92KvkG+qI&Sz0#~UMOt>P~}ZVk#@40=X$H9
zr#NprS!n#)c)c5tDpA_pdT3e{9T&R*5$F$M6<16Tz$!m8R~?T)LZMl4EEptO<7qkU
z<_lo%gW~!BjZJ#dkw9R_AwcH8EIp8<2Plc2OZOWn@P>VJ4LCs2j`pc=j<5fJ|CR8y
zHg>2|2U_E*UF&Nl^S@JiBuS4@cSs4%hF-uofy3~R9bm8-Y!$=!-NGJ-yjQ{O1iW}SkYBG9_r%^uD_TB*9zp{R!rp^Zh_
z+H+RG?at1f96c**;Yw}o?QP)G{duRN9zBXaKV9`XyD7$n%I;rxb5aCrh%D5AY982t
zZx&V{h%SLu39gcp$L}SID@~gC(!t5T-HpyX=)}{@x!$WC1?ib`zRP{8t4qCbwAnZZ
z^-RTrcRd?ZilPn-pnKeS`@s_r}-k
zobBAP528+~zklewW`9(4FCE8lf#HhGeF2+KzLwC}=-bd|p+})_nG1Mw%^K`wOEi_#hSIZr{2SR@A{kv@z%J;bM^tl{ki8ZsodCN|t+vbH>_m
zbxR+=11sFKs#!&Y?i2L4Th&5?XhT?ce(jKo{)^b!c{C!h6Q(F9a}%s&6Wk>qc76h=Z=fq+2Z
zWe5z*i>=>BX8rYl@%;ZXC`G+MV0R%z%D^xZ^sZqwT*rV9q5Q4#BT}=g-HB=H&Ud~
zRHzvGgM38(75WbS0t(veD5{D&If6C@XrvVvDM)_r2!6weEBg@_aK%;mm;sz{9F=bfg9a%Wor49|C8yrVd_c{HrArBT+
z=abO*x9PoI>Y$3Q(q3o`njcK(9^iVYR0TrZ;AdxEC!mx@g)#wH1S#deykAj|L6~VD
z6@XQ+*ip)nMBe#fqwjF?Y^SWsRShz&LRN`3jr?yzTJr}K_4Gg`fVN@)!5=vSr2XO_
zaJn_24VVQU4fYeo?TSEU
z|1bIc7xTYetw8AAt_W1-KhfXAkZ)n@q3skQSwPm(bebgKwNn#J22vA{gbCH`3#G53
z5OkQfijXw{uezRAevpT361qlmG|-F+EIq=Cvu+#9q$-E6uGvMJcB1q&U&NU#L^67n
zIyE
zpuFI$5`kGc1W^*QO45g+pcrG7bR1*k%j8VUNY2@owQnZQljh>UkQRhbudyw=28#-9
zkX)mhL84i5jao#hCl#7J6ErEd#g6mVx!w$ujELKsWv$
z0W+?*V%*e-AuEVWY?x(6;cOVH0w#=^b=Qm%vV;^#c(2Ji*lv?F=C|G?iReL##1rGO
w*s<|b$HpgdEcX7yxw2O$@~}g0hwc}=~3FnK3+L}D=`sq>{0~&4Tjmf`2YX_
literal 0
HcmV?d00001
From 15b63b82796d71e2cdd44a2baffa7c70e6ef0b02 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 5 Sep 2011 14:58:48 +0200
Subject: [PATCH 15/68] add openlyrics validator
---
.../openlyrics/openlyrics_schema.rng | 467 ++++++++++++++++++
testing/resources/openlyrics/validate.py | 26 +
2 files changed, 493 insertions(+)
create mode 100644 testing/resources/openlyrics/openlyrics_schema.rng
create mode 100755 testing/resources/openlyrics/validate.py
diff --git a/testing/resources/openlyrics/openlyrics_schema.rng b/testing/resources/openlyrics/openlyrics_schema.rng
new file mode 100644
index 000000000..9df99ecc5
--- /dev/null
+++ b/testing/resources/openlyrics/openlyrics_schema.rng
@@ -0,0 +1,467 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ words
+ music
+
+
+
+
+
+ translation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -99
+ 99
+
+
+
+
+
+
+
+
+
+
+ 30
+ 250
+
+
+ bpm
+
+
+
+
+
+
+ text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ 999
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [0-9]+\.[0-9]+(\.[0-9]+)?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+ (v[1-9]\d?[a-z]?)|([cpb][a-z]?)|([cpbe][1-9]\d?[a-z]?)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
diff --git a/testing/resources/openlyrics/validate.py b/testing/resources/openlyrics/validate.py
new file mode 100755
index 000000000..116f69454
--- /dev/null
+++ b/testing/resources/openlyrics/validate.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+
+import sys
+
+try:
+ from lxml import etree
+except ImportError:
+ print('Python module "lxml" is required')
+ exit(1)
+
+
+if len(sys.argv) != 3:
+ print('Usage: python %s openlyrics_schema.rng xmlfile.xml' % __file__)
+ exit(1)
+
+
+relaxng_file = sys.argv[1]
+xml_file = sys.argv[2]
+
+relaxng_doc = etree.parse(relaxng_file)
+xml_doc = etree.parse(xml_file)
+
+relaxng = etree.RelaxNG(relaxng_doc)
+
+relaxng.assertValid(xml_doc)
+
From e491e779811161420d4b5abbdcd822bb33ef46a9 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 6 Sep 2011 00:31:09 +0200
Subject: [PATCH 16/68] add test for openlyrics export
---
testing/conftest.py | 41 +++++++++++++++++++
...lyric_test_1.xml => openlyrics_test_1.xml} | 0
testing/test_app.py | 8 ++--
3 files changed, 45 insertions(+), 4 deletions(-)
rename testing/resources/songs/{openlyric_test_1.xml => openlyrics_test_1.xml} (100%)
diff --git a/testing/conftest.py b/testing/conftest.py
index 52f7984d8..bbcbeac3f 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -31,6 +31,8 @@ Configuration file for pytest framework.
"""
import os
+import sys
+import subprocess
import logging
import random
import string
@@ -58,6 +60,18 @@ log.addHandler(_handler)
log.setLevel(logging.DEBUG)
+# Paths with resources for tests
+def pytest_funcarg__pth(request):
+ def setup():
+ class Pth(object):
+ def __init__(self):
+ self.tests = py.path.local(TESTS_PATH)
+ self.resources = py.path.local(RESOURCES_PATH)
+ self.songs = py.path.local(SONGS_PATH)
+ return Pth()
+ return request.cached_setup(setup=setup, scope='module')
+
+
# Test function argument to make openlp gui instance persistent for all tests.
# Test cases in module have to access the same instance. To allow creating
# multiple
@@ -115,3 +129,30 @@ def pytest_funcarg__songs_db(request):
# sqlalchemy allows to map classess to only one database at a time
clear_mappers()
return request.cached_setup(setup=setup, teardown=teardown, scope='function')
+
+
+class OpenLyricsValidator(object):
+ """Validate xml if it conformns to OpenLyrics xml schema."""
+ def __init__(self, script, schema):
+ self.cmd = [sys.executable, script, schema]
+
+ def validate(self, file_path):
+ self.cmd.append(file_path)
+ print self.cmd
+ retcode = subprocess.call(self.cmd)
+ if retcode == 0:
+ # xml conforms to schema
+ return True
+ else:
+ # xml has invalid syntax
+ return False
+
+
+# Test function argument giving access to song database.
+def pytest_funcarg__openlyrics_validator(request):
+ def setup():
+ script = os.path.join(RESOURCES_PATH, 'openlyrics', 'validate.py')
+ schema = os.path.join(RESOURCES_PATH, 'openlyrics',
+ 'openlyrics_schema.rng')
+ return OpenLyricsValidator(script, schema)
+ return request.cached_setup(setup=setup, scope='session')
diff --git a/testing/resources/songs/openlyric_test_1.xml b/testing/resources/songs/openlyrics_test_1.xml
similarity index 100%
rename from testing/resources/songs/openlyric_test_1.xml
rename to testing/resources/songs/openlyrics_test_1.xml
diff --git a/testing/test_app.py b/testing/test_app.py
index 2cfda14d0..04030d95e 100644
--- a/testing/test_app.py
+++ b/testing/test_app.py
@@ -34,7 +34,7 @@ from openlp.core import OpenLP
from openlp.core.ui.mainwindow import MainWindow
-def test_start_app(openlpapp):
- assert type(openlpapp) == OpenLP
- assert type(openlpapp.mainWindow) == MainWindow
- assert unicode(openlpapp.mainWindow.windowTitle()) == u'OpenLP 2.0'
+#def test_start_app(openlpapp):
+ #assert type(openlpapp) == OpenLP
+ #assert type(openlpapp.mainWindow) == MainWindow
+ #assert unicode(openlpapp.mainWindow.windowTitle()) == u'OpenLP 2.0'
From b15d65feba7442c8b882e90c70508c3eaf363687 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 6 Sep 2011 12:49:15 +0200
Subject: [PATCH 17/68] add tests for openlyrics
---
testing/test_openlyrics.py | 52 ++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 testing/test_openlyrics.py
diff --git a/testing/test_openlyrics.py b/testing/test_openlyrics.py
new file mode 100644
index 000000000..15ce459e1
--- /dev/null
+++ b/testing/test_openlyrics.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
+# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# This program is free software; you can redistribute it and/or modify it #
+# under the terms of the GNU General Public License as published by the Free #
+# Software Foundation; version 2 of the License. #
+# #
+# This program is distributed in the hope that it will be useful, but WITHOUT #
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
+# more details. #
+# #
+# You should have received a copy of the GNU General Public License along #
+# with this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+"""
+OpenLyrics import/export tests
+"""
+
+from lxml import etree
+
+from openlp.plugins.songs.lib.db import Song
+from openlp.plugins.songs.lib import OpenLyrics
+
+def test_openlyrics_export(songs_db, openlyrics_validator, pth, tmpdir):
+ # export song to file
+ f = tmpdir.join('out.xml')
+ db = songs_db
+ s = db.get_all_objects(Song)[0]
+ o = OpenLyrics(db)
+ xml = o.song_to_xml(s)
+ tree = etree.ElementTree(etree.fromstring(xml))
+ tree.write(open(f.strpath, u'w'), encoding=u'utf-8', xml_declaration=True,
+ pretty_print=True)
+ # validate file
+ assert openlyrics_validator.validate(f.strpath) == True
+ # string comparison with original file
+ f_orig = pth.songs.join('openlyrics_test_1.xml')
+ assert f.read() == f_orig.read()
From c7ab79f9870e7813046347fb514cf252a612b7fb Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Tue, 6 Sep 2011 13:56:52 +0200
Subject: [PATCH 18/68] fixed bug 805088
---
openlp/core/lib/renderer.py | 35 ++++++++++++++++++++++++++++-------
1 file changed, 28 insertions(+), 7 deletions(-)
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 8353ddc19..3c1bb9be8 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -31,7 +31,7 @@ from PyQt4 import QtGui, QtCore, QtWebKit
from openlp.core.lib import ServiceItem, expand_tags, \
build_lyrics_format_css, build_lyrics_outline_css, Receiver, \
- ItemCapabilities
+ ItemCapabilities, FormattingTags
from openlp.core.lib.theme import ThemeLevel
from openlp.core.ui import MainDisplay, ScreenList
@@ -377,7 +377,8 @@ class Renderer(object):
separator = u' '
html_lines = map(expand_tags, lines)
# Text too long so go to next page.
- if not self._text_fits_on_slide(separator.join(html_lines)):
+ text = separator.join(html_lines)
+ if not self._text_fits_on_slide(text):
html_text, previous_raw = self._binary_chop(formatted,
previous_html, previous_raw, html_lines, lines, separator, u'')
else:
@@ -439,6 +440,22 @@ class Renderer(object):
log.debug(u'_paginate_slide_words - End')
return formatted
+ def _get_start_tags(self, text):
+ missing_raw_tags = []
+ missing_html_tags = []
+ for tag in FormattingTags.get_html_tags():
+ if tag[u'start html'] == u' ':
+ continue
+ if tag[u'start html'] in text:
+ missing_raw_tags.append((tag[u'start tag'], text.find(tag[u'start html'])))
+ missing_html_tags.append((tag[u'start html'], text.find(tag[u'start html'])))
+ elif tag[u'start tag'] in text:
+ missing_raw_tags.append((tag[u'start tag'], text.find(tag[u'start tag'])))
+ missing_html_tags.append((tag[u'start html'], text.find(tag[u'start tag'])))
+ missing_raw_tags.sort(key=lambda tag: tag[1])
+ missing_html_tags.sort(key=lambda tag: tag[1])
+ return u''.join(missing_raw_tags), u''.join(missing_html_tags)
+
def _binary_chop(self, formatted, previous_html, previous_raw, html_list,
raw_list, separator, line_end):
"""
@@ -490,8 +507,10 @@ class Renderer(object):
# We found the number of words which will fit.
if smallest_index == index or highest_index == index:
index = smallest_index
- formatted.append(previous_raw.rstrip(u' ') +
- separator.join(raw_list[:index + 1]))
+ text = previous_raw.rstrip(u' ') + \
+ separator.join(raw_list[:index + 1])
+ formatted.append(text)
+ raw_tags, html_tags = self._get_start_tags(text)
previous_html = u''
previous_raw = u''
# Stop here as the theme line count was requested.
@@ -502,17 +521,19 @@ class Renderer(object):
continue
# Check if the remaining elements fit on the slide.
if self._text_fits_on_slide(
- separator.join(html_list[index + 1:]).strip()):
- previous_html = separator.join(
+ html_tags + separator.join(html_list[index + 1:]).strip()):
+ previous_html = html_tags + separator.join(
html_list[index + 1:]).strip() + line_end
- previous_raw = separator.join(
+ previous_raw = raw_tags + separator.join(
raw_list[index + 1:]).strip() + line_end
break
else:
# The remaining elements do not fit, thus reset the indexes,
# create a new list and continue.
raw_list = raw_list[index + 1:]
+ raw_list[0] = raw_tags + raw_list[0]
html_list = html_list[index + 1:]
+ html_list[0] = html_tags + html_list[0]
smallest_index = 0
highest_index = len(html_list) - 1
index = int(highest_index / 2)
From 4c869fa1f54619d6a8782d197b2d74504666a655 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Tue, 6 Sep 2011 13:57:31 +0200
Subject: [PATCH 19/68] fixed bug 805088
Fixes: https://launchpad.net/bugs/805088
From 5d2bde01c26c2d03c0f3ab023210bb8754d66058 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 6 Sep 2011 15:14:57 +0200
Subject: [PATCH 20/68] For openlyrics export skip adding format tags if not
used.
---
openlp/plugins/songs/lib/xml.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 8f1d87720..671fc9032 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -61,7 +61,6 @@ The XML of an `OpenLyrics `_ song looks like this::
"""
-import datetime
import logging
import re
@@ -303,9 +302,13 @@ class OpenLyrics(object):
for topic in song.topics:
self._add_text_to_element(u'theme', themes, topic.name)
# Process the formatting tags.
- format = etree.SubElement(song_xml, u'format')
- tags = etree.SubElement(format, u'tags')
- tags.set(u'application', u'OpenLP')
+ # have we any tags in song lyrics?
+ match = re.match(u'.*\{/?\w+\}', song.lyrics)
+ if match:
+ # named 'formatting' - 'format' is built-in fuction in Python
+ formatting = etree.SubElement(song_xml, u'format')
+ tags = etree.SubElement(formatting, u'tags')
+ tags.set(u'application', u'OpenLP')
# Process the song's lyrics.
lyrics = etree.SubElement(song_xml, u'lyrics')
verse_list = sxml.get_verses(song.lyrics)
From 6163bc99c31aa08801db01f0e5febaee3b69e144 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 6 Sep 2011 15:22:17 +0200
Subject: [PATCH 21/68] Do not use depracated dict.has_key() function in
openlyrics code
---
openlp/plugins/songs/lib/xml.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 671fc9032..0dd248fe8 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -73,6 +73,7 @@ from openlp.core.utils import get_application_version
log = logging.getLogger(__name__)
+
class SongXML(object):
"""
This class builds and parses the XML used to describe songs.
@@ -250,6 +251,7 @@ class OpenLyrics(object):
"""
IMPLEMENTED_VERSION = u'0.8'
+
def __init__(self, manager):
self.manager = manager
@@ -318,7 +320,7 @@ class OpenLyrics(object):
verse_def = verse_tag + verse_number
verse_element = \
self._add_text_to_element(u'verse', lyrics, None, verse_def)
- if verse[0].has_key(u'lang'):
+ if u'lang' in verse[0]:
verse_element.set(u'lang', verse[0][u'lang'])
# Create a list with all "virtual" verses.
virtual_verses = verse[1].split(u'[---]')
@@ -549,10 +551,10 @@ class OpenLyrics(object):
# breaks. In OpenLyrics 0.7 an attribute has been added.
if song_xml.get(u'modifiedIn') in (u'1.9.6', u'OpenLP 1.9.6') and \
song_xml.get(u'version') == u'0.7' and \
- verses.has_key((verse_tag, verse_number, lang)):
+ (verse_tag, verse_number, lang) in verses:
verses[(verse_tag, verse_number, lang)] += u'\n[---]\n' + text
# Merge v1a, v1b, .... to v1.
- elif verses.has_key((verse_tag, verse_number, lang)):
+ elif (verse_tag, verse_number, lang) in verses:
verses[(verse_tag, verse_number, lang)] += u'\n' + text
else:
verses[(verse_tag, verse_number, lang)] = text
From 39946ccbe259aa7779218befd430b94f2bb1a098 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 6 Sep 2011 23:02:41 +0200
Subject: [PATCH 22/68] Add formatting tags to song example data
---
testing/resources/songs/songs.sqlite | Bin 30720 -> 30720 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/testing/resources/songs/songs.sqlite b/testing/resources/songs/songs.sqlite
index 204764f4a95e62f7f6316aa23f3b1aed736e74f1..f1ae584af22579ee8b55de2c80ce6a96aaae4e43 100644
GIT binary patch
delta 835
zcmd5)&ubGw6yB8;r0r(g3SwJ{&mygm&=vcO7D}xYViXaiC&5G0UE`WfW;-(}Y=(hc
zddZ;_=HQ{H94jcw_9R%4ZTM{2}+du?yc95u|cz0YhNM!B;(J8P=GomU;+Qz~E|DMtF6%)^7!QPt`HcD!O{#WoXi$T1#2KR6%e}C(I(v%^
z1yMnbJHuB+RReaxBNa+G5pGqg1*d#dGogYOXgWA&n9*7??u_MwQ?N9@`tFR`8T$a=
ztO2W2WkvUsQ|Ha%lij@4Sv7&;Qs_u6a|Elu>;MLp5QsJdyvz$-pE(gjMH>OJ`dYe?
zoR+TKN!Ftkv-Iy!Z%-3o9Jt;UPXYnI*jcBbwQ!UXsvq0Wr*)wx@jN#MAWfjEZ+|-p
zRprr#*AXp-*4g~UaEu)46NNlN_l|=d!lAVZjkL=kA|b9C@BnF(pVTr}7U169<+-Kh
U`6c})v6;R@y#G<|X!HH0U!4*?t^fc4
delta 536
zcmZqpz}WDCae}m7qwo0Tz)fiY~eAd3&9P_I0r5CfwpZ@)e-2rzhdPCmxd
zG5HjaoU9I4v4Vd|a%!%Qf=g*~Mry7?R%%LWo`O^U(S50t7x1c0zQV6DIf0*jG9Mog
zQ%L1xRlZob&@Mg!o{+M`3l&oGlZx_7@+aTr^PGH%Ukj+-Nb%^t%(DCvg{nk_yu%BN
z6$>8-|8eKgn7oJI0pz;P+y!QglOKA^5;8>s&6J${;*v}Sg_6q2
zmkXn0p+-Xm4{rw9h45WSkp~~#da#?caZ?3DLn|XwAOb}aEv*YG
LUB@(8fyDs;X{*Nk
From 9fb6936263c2b1d85978c1857ba39ccb6e118ad3 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Wed, 7 Sep 2011 22:54:53 +0200
Subject: [PATCH 23/68] code to add formatting tags to openlyrics lyrics
---
openlp/plugins/songs/lib/xml.py | 30 ++++++++++++++++++++++++++----
testing/test_openlyrics.py | 10 +++++++---
2 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 0dd248fe8..a20951753 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -254,6 +254,8 @@ class OpenLyrics(object):
def __init__(self, manager):
self.manager = manager
+ self.start_tags_regex = re.compile(r'\{\w+\}') # {abc}
+ self.end_tags_regex = re.compile(r'\{\/\w+\}') # {/abc}
def song_to_xml(self, song):
"""
@@ -305,12 +307,13 @@ class OpenLyrics(object):
self._add_text_to_element(u'theme', themes, topic.name)
# Process the formatting tags.
# have we any tags in song lyrics?
- match = re.match(u'.*\{/?\w+\}', song.lyrics)
+ tags_element = None
+ match = re.search(u'\{/?\w+\}', song.lyrics, re.UNICODE)
if match:
# named 'formatting' - 'format' is built-in fuction in Python
formatting = etree.SubElement(song_xml, u'format')
- tags = etree.SubElement(formatting, u'tags')
- tags.set(u'application', u'OpenLP')
+ tags_element = etree.SubElement(formatting, u'tags')
+ tags_element.set(u'application', u'OpenLP')
# Process the song's lyrics.
lyrics = etree.SubElement(song_xml, u'lyrics')
verse_list = sxml.get_verses(song.lyrics)
@@ -331,7 +334,13 @@ class OpenLyrics(object):
if index < len(virtual_verses) - 1:
lines_element.set(u'break', u'optional')
for line in virtual_verse.strip(u'\n').split(u'\n'):
- self._add_text_to_element(u'line', lines_element, line)
+ # Process only lines containing formatting tags
+ if self.start_tags_regex.search(line):
+ # add formatting tags to text
+ self._add_line_with_tags_to_lines(lines_element, line,
+ tags_element)
+ else:
+ self._add_text_to_element(u'line', lines_element, line)
return self._extract_xml(song_xml)
def xml_to_song(self, xml, only_process_format_tags=False):
@@ -389,6 +398,19 @@ class OpenLyrics(object):
parent.append(element)
return element
+ def _add_line_with_tags_to_lines(self, parent, text, tags_element):
+ start_tags = self.start_tags_regex.findall(text)
+ end_tags = self.end_tags_regex.findall(text)
+ # replace start tags with xml syntax
+ for t in start_tags:
+ text = text.replace(t, u'' % t[1:-1])
+ # replace end tags
+ for t in end_tags:
+ text = text.replace(t, u'')
+ text = u'' + text + u''
+ element = etree.XML(text)
+ parent.append(element)
+
def _extract_xml(self, xml):
"""
Extract our newly created XML song.
diff --git a/testing/test_openlyrics.py b/testing/test_openlyrics.py
index 15ce459e1..2d4ce024e 100644
--- a/testing/test_openlyrics.py
+++ b/testing/test_openlyrics.py
@@ -46,7 +46,11 @@ def test_openlyrics_export(songs_db, openlyrics_validator, pth, tmpdir):
tree.write(open(f.strpath, u'w'), encoding=u'utf-8', xml_declaration=True,
pretty_print=True)
# validate file
- assert openlyrics_validator.validate(f.strpath) == True
- # string comparison with original file
+ #assert openlyrics_validator.validate(f.strpath) == True
+ # string comparison with original file line by line
f_orig = pth.songs.join('openlyrics_test_1.xml')
- assert f.read() == f_orig.read()
+ for l, l_orig in zip(f.readlines(), f_orig.readlines()):
+ # skip line with item modifiedDate - it is unique everytime
+ if l.startswith('' % t[1:-1])
+ for tag in start_tags:
+ name = tag[1:-1]
+ text = text.replace(tag, u'' % name)
+ # add tag to elment if tag not present
+ if name not in xml_tags:
+ self._add_tag_to_formatting(name, tags_element)
# replace end tags
for t in end_tags:
text = text.replace(t, u'')
diff --git a/testing/test_openlyrics.py b/testing/test_openlyrics.py
index 2d4ce024e..32bde3fa0 100644
--- a/testing/test_openlyrics.py
+++ b/testing/test_openlyrics.py
@@ -46,7 +46,7 @@ def test_openlyrics_export(songs_db, openlyrics_validator, pth, tmpdir):
tree.write(open(f.strpath, u'w'), encoding=u'utf-8', xml_declaration=True,
pretty_print=True)
# validate file
- #assert openlyrics_validator.validate(f.strpath) == True
+ assert openlyrics_validator.validate(f.strpath) == True
# string comparison with original file line by line
f_orig = pth.songs.join('openlyrics_test_1.xml')
for l, l_orig in zip(f.readlines(), f_orig.readlines()):
From 11876791a410cf77eff62be41768aa9d4866cc9b Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Thu, 8 Sep 2011 14:11:13 +0200
Subject: [PATCH 25/68] update openlyrics schema to allow nested formatting
tags
---
.../openlyrics/openlyrics_schema.rng | 7 ++-
testing/resources/songs/openlyrics_test_1.xml | 56 ++++++++++++++++---
2 files changed, 53 insertions(+), 10 deletions(-)
diff --git a/testing/resources/openlyrics/openlyrics_schema.rng b/testing/resources/openlyrics/openlyrics_schema.rng
index 9df99ecc5..b4a7813fb 100644
--- a/testing/resources/openlyrics/openlyrics_schema.rng
+++ b/testing/resources/openlyrics/openlyrics_schema.rng
@@ -399,7 +399,12 @@
-
+
+
+
+
+
+
diff --git a/testing/resources/songs/openlyrics_test_1.xml b/testing/resources/songs/openlyrics_test_1.xml
index 240736878..d7a9c12ec 100644
--- a/testing/resources/songs/openlyrics_test_1.xml
+++ b/testing/resources/songs/openlyrics_test_1.xml
@@ -1,5 +1,5 @@
-
+Jezu Kriste, štědrý kněže
@@ -11,35 +11,73 @@
+
+
+
+ <span style="-webkit-text-fill-color:red">
+ </span>
+
+
+ <span style="-webkit-text-fill-color:blue">
+ </span>
+
+
+ <span style="-webkit-text-fill-color:yellow">
+ </span>
+
+
+ <span style="-webkit-text-fill-color:#FFA500">
+ </span>
+
+
+ <strong>
+ </strong>
+
+
+ <em>
+ </em>
+
+
+ <span style="-webkit-text-fill-color:green">
+ </span>
+
+
+
- Jezu Kriste, štědrý kněže,
- s Otcem, Duchem jeden Bože,
+ Jezu Kriste, štědrý kněže,
+ s Otcem, Duchem jeden Bože,štědrost Tvá je naše zboží,
- z Tvé milosti.
+ z Tvémilosti.
- Ty jsi v světě, bydlil s námi,
+ Ty jsi v světě, bydlil s námi,Tvé tělo trpělo rányza nás za hříšné křesťany,
- z Tvé milosti.
+ z Tvé milosti.
- Ó, Tvá dobroto důstojná
+ Ó, Tvá dobroto důstojnáa k nám milosti přehojná!Dáváš nám bohatství mnohá
- z Tvé milosti.
+
+
+ z Tvé milosti.
+
+ Ráčils nás sám zastoupiti,
- život za nás položiti,
+
+ život za nás položiti,
+ tak smrt věčnou zahladiti,z Tvé milosti.
From 5c13123ceff7e3c5ab77c77688d84b02f7a76bab Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sat, 10 Sep 2011 22:15:23 +0200
Subject: [PATCH 26/68] Delete print statement
---
openlp/plugins/songs/lib/xml.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 52f9b5292..573e9b866 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -401,7 +401,6 @@ class OpenLyrics(object):
return element
def _add_tag_to_formatting(self, tag_name, tags_element):
- print '------'
available_tags = FormattingTags.get_html_tags()
start_tag = '{%s}' % tag_name
for t in available_tags:
From 606e19734c0445b3592f30532f006709d982e92a Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sun, 11 Sep 2011 22:29:25 +0200
Subject: [PATCH 27/68] Allow to override data dir for tests
---
openlp/core/utils/__init__.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py
index 3612bb002..fbf185474 100644
--- a/openlp/core/utils/__init__.py
+++ b/openlp/core/utils/__init__.py
@@ -127,6 +127,9 @@ class AppLocation(object):
CacheDir = 6
LanguageDir = 7
+ # Base path where data/config/cache dir is located
+ BaseDir = None
+
@staticmethod
def get_directory(dir_type=1):
"""
@@ -152,6 +155,8 @@ class AppLocation(object):
os.path.abspath(os.path.split(sys.argv[0])[0]),
_get_os_dir_path(dir_type))
return os.path.join(app_path, u'i18n')
+ elif dir_type == AppLocation.DataDir and AppLocation.BaseDir:
+ return os.path.join(AppLocation.BaseDir, 'data')
else:
return _get_os_dir_path(dir_type)
From 50e1964795a75ae18635181bfad43fe13682cfe8 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sun, 11 Sep 2011 22:39:33 +0200
Subject: [PATCH 28/68] Remove the db_file_path option from db.Manager init
function
---
openlp/core/lib/db.py | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py
index 7635873ad..1b8d086df 100644
--- a/openlp/core/lib/db.py
+++ b/openlp/core/lib/db.py
@@ -159,7 +159,7 @@ class Manager(object):
Provide generic object persistence management
"""
def __init__(self, plugin_name, init_schema, db_file_name=None,
- db_file_path=None, upgrade_mod=None):
+ upgrade_mod=None):
"""
Runs the initialisation process that includes creating the connection
to the database and the tables if they don't exist.
@@ -176,10 +176,6 @@ class Manager(object):
``db_file_name``
The file name to use for this database. Defaults to None resulting
in the plugin_name being used.
-
- ``db_file_path``
- The path to sqlite file to use for this database. This is useful
- for testing purposes.
"""
settings = QtCore.QSettings()
settings.beginGroup(plugin_name)
@@ -188,11 +184,7 @@ class Manager(object):
db_type = unicode(
settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString())
if db_type == u'sqlite':
- # For automated tests we need to supply file_path directly
- if db_file_path:
- self.db_url = u'sqlite:///%s' % os.path.normpath(
- os.path.abspath(db_file_path))
- elif db_file_name:
+ if db_file_name:
self.db_url = u'sqlite:///%s/%s' % (
AppLocation.get_section_data_path(plugin_name),
db_file_name)
From eef786f85c1eedf5194f736ec1ed2fa0ddfbf0b1 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sun, 11 Sep 2011 22:40:30 +0200
Subject: [PATCH 29/68] update tests to work with latest changes
---
testing/conftest.py | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/testing/conftest.py b/testing/conftest.py
index bbcbeac3f..d92702fa1 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -34,14 +34,13 @@ import os
import sys
import subprocess
import logging
-import random
-import string
import py.path
from PyQt4 import QtCore
from sqlalchemy.orm import clear_mappers
from openlp.core import main as openlp_main
+from openlp.core.utils import AppLocation
from openlp.core.lib.db import Manager
from openlp.plugins.songs.lib.db import init_schema
@@ -86,30 +85,29 @@ def pytest_funcarg__openlpapp(request):
return request.cached_setup(setup=setup, teardown=teardown, scope='module')
-def _get_unique_qsettings():
- # unique QSettings group
- unique = ''.join(random.choice(string.letters + string.digits)
- for i in range(8))
- group_name = 'test_%s' % unique
- settings = QtCore.QSettings()
- settings.beginGroup(group_name)
- settings.setValue(u'db type', QtCore.QVariant(u'sqlite'))
- settings.endGroup()
- return group_name
+# Clean up QSettings for all plugins
+def _cleanup_qsettings():
+ s = QtCore.QSettings()
+ keys = s.allKeys()
+ for k in keys:
+ s.setValue(k, QtCore.QVariant(None))
# Test function argument giving access to empty song database.
def pytest_funcarg__empty_songs_db(request):
+ #def get_data_dir(section):
+ # return request.getfuncargvalue('tmpdir').strpath
def setup():
tmpdir = request.getfuncargvalue('tmpdir')
- db_file_path = tmpdir.join('songs.sqlite')
- plugin_name = _get_unique_qsettings()
- manager = Manager(plugin_name, init_schema,
- db_file_path=db_file_path.strpath)
+ # override data dir
+ AppLocation.BaseDir = tmpdir.strpath
+ manager = Manager('songs', init_schema)
return manager
def teardown(manager):
+ _cleanup_qsettings()
# sqlalchemy allows to map classess to only one database at a time
clear_mappers()
+ AppLocation.BaseDir = None
return request.cached_setup(setup=setup, teardown=teardown, scope='function')
@@ -117,17 +115,19 @@ def pytest_funcarg__empty_songs_db(request):
def pytest_funcarg__songs_db(request):
def setup():
tmpdir = request.getfuncargvalue('tmpdir')
- db_file_path = tmpdir.join('songs.sqlite')
+ # override data dir
+ AppLocation.BaseDir = tmpdir.strpath
+ datadir = tmpdir.mkdir(u'data').mkdir( u'songs')
# copy test data to tmpdir
orig_db = py.path.local(SONGS_PATH).join('songs.sqlite')
- orig_db.copy(db_file_path)
- plugin_name = _get_unique_qsettings()
- manager = Manager(plugin_name, init_schema,
- db_file_path=db_file_path.strpath)
+ orig_db.copy(datadir)
+ manager = Manager('songs', init_schema)
return manager
def teardown(manager):
+ _cleanup_qsettings()
# sqlalchemy allows to map classess to only one database at a time
clear_mappers()
+ AppLocation.BaseDir = None
return request.cached_setup(setup=setup, teardown=teardown, scope='function')
From 655245051a0da4f56f195bb7c39db5c2c3d3df48 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sun, 11 Sep 2011 23:53:19 +0200
Subject: [PATCH 30/68] Consolidating and restructuring test code
---
testing/conftest.py | 138 ++++++++++++++++++++-----------------
testing/test_app.py | 11 +--
testing/test_openlyrics.py | 5 +-
testing/test_songs_db.py | 11 +--
4 files changed, 89 insertions(+), 76 deletions(-)
diff --git a/testing/conftest.py b/testing/conftest.py
index d92702fa1..0ba4f34ed 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -49,14 +49,73 @@ TESTS_PATH = os.path.dirname(os.path.abspath(__file__))
RESOURCES_PATH = os.path.join(TESTS_PATH, 'resources')
SONGS_PATH = os.path.join(RESOURCES_PATH, 'songs')
-# set up logging to stderr (console)
-_handler = logging.StreamHandler(stream=None)
-_handler.setFormatter(logging.Formatter(
- u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
-logging.addLevelName(15, u'Timer')
-log = logging.getLogger()
-log.addHandler(_handler)
-log.setLevel(logging.DEBUG)
+
+# class to setup and teardown settings for running openlp tests
+class OpenLPRunner(object):
+ def __init__(self, tmpdir):
+ self.tmpdir = tmpdir
+ self._setup_qapp()
+ self._setup_logging()
+ self._cleanup_qsettings()
+ # override data dir of OpenLP - it points to tmpdir of a test case
+ AppLocation.BaseDir = tmpdir.strpath
+
+ def _setup_qapp(self):
+ QtCore.QCoreApplication.setOrganizationName(u'OpenLP')
+ QtCore.QCoreApplication.setOrganizationDomain(u'openlp.org')
+ QtCore.QCoreApplication.setApplicationName(u'TestOpenLP')
+
+ def _setup_logging(self):
+ # set up logging to stderr/stdout (console)
+ _handler = logging.StreamHandler(stream=None)
+ _handler.setFormatter(logging.Formatter(
+ u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
+ logging.addLevelName(15, u'Timer')
+ log = logging.getLogger()
+ log.addHandler(_handler)
+ log.setLevel(logging.DEBUG)
+
+ def _cleanup_qsettings(self):
+ # Clean up QSettings for all plugins
+ # The issue with QSettings is that is global for a running process
+ # and thus it is necessary to clean it before another test case.
+ # If it would not be cleaned up it could be saved in the system.
+ s = QtCore.QSettings()
+ keys = s.allKeys()
+ for k in keys:
+ s.setValue(k, None)
+
+ ## Public interface
+
+ def get_songs_db(self, empty=False):
+ # return initialized db Manager with empty db or db containing
+ # some example songs
+
+ if not empty:
+ # copy test data to tmpdir
+ datadir = self.tmpdir.mkdir(u'data').mkdir(u'songs')
+ orig_db = py.path.local(SONGS_PATH).join('songs.sqlite')
+ orig_db.copy(datadir)
+
+ manager = Manager('songs', init_schema)
+ return manager
+
+ def get_app(self):
+ # return QGui.QApplication of OpenLP - this object allows
+ # running different gui tests and allows access to gui objects
+ # (e.g MainWindow etc.)
+ # To allow creating multiple instances of OpenLP in one process
+ # it would be necessary use diffrent configuration and data files.
+ # Created instance will use your OpenLP settings.
+ return openlp_main(['--testing'])
+
+ def teardown(self):
+ # clean up code to run after running the test case
+ self._cleanup_qsettings()
+ # sqlalchemy allows to map classess to only one database at a time
+ clear_mappers()
+ # set data dir to original value
+ AppLocation.BaseDir = None
# Paths with resources for tests
@@ -68,66 +127,15 @@ def pytest_funcarg__pth(request):
self.resources = py.path.local(RESOURCES_PATH)
self.songs = py.path.local(SONGS_PATH)
return Pth()
- return request.cached_setup(setup=setup, scope='module')
+ return request.cached_setup(setup=setup, scope='session')
-# Test function argument to make openlp gui instance persistent for all tests.
-# Test cases in module have to access the same instance. To allow creating
-# multiple
-# instances it would be necessary use diffrent configuraion and data files.
-# Created instance will use your OpenLP settings.
-def pytest_funcarg__openlpapp(request):
+# Test function argument giving access to OpenLP runner
+def pytest_funcarg__openlp_runner(request):
def setup():
- return openlp_main(['--testing'])
- def teardown(app):
- # sqlalchemy allows to map classess to only one database at a time
- clear_mappers()
- return request.cached_setup(setup=setup, teardown=teardown, scope='module')
-
-
-# Clean up QSettings for all plugins
-def _cleanup_qsettings():
- s = QtCore.QSettings()
- keys = s.allKeys()
- for k in keys:
- s.setValue(k, QtCore.QVariant(None))
-
-
-# Test function argument giving access to empty song database.
-def pytest_funcarg__empty_songs_db(request):
- #def get_data_dir(section):
- # return request.getfuncargvalue('tmpdir').strpath
- def setup():
- tmpdir = request.getfuncargvalue('tmpdir')
- # override data dir
- AppLocation.BaseDir = tmpdir.strpath
- manager = Manager('songs', init_schema)
- return manager
- def teardown(manager):
- _cleanup_qsettings()
- # sqlalchemy allows to map classess to only one database at a time
- clear_mappers()
- AppLocation.BaseDir = None
- return request.cached_setup(setup=setup, teardown=teardown, scope='function')
-
-
-# Test function argument giving access to song database.
-def pytest_funcarg__songs_db(request):
- def setup():
- tmpdir = request.getfuncargvalue('tmpdir')
- # override data dir
- AppLocation.BaseDir = tmpdir.strpath
- datadir = tmpdir.mkdir(u'data').mkdir( u'songs')
- # copy test data to tmpdir
- orig_db = py.path.local(SONGS_PATH).join('songs.sqlite')
- orig_db.copy(datadir)
- manager = Manager('songs', init_schema)
- return manager
- def teardown(manager):
- _cleanup_qsettings()
- # sqlalchemy allows to map classess to only one database at a time
- clear_mappers()
- AppLocation.BaseDir = None
+ return OpenLPRunner(request.getfuncargvalue('tmpdir'))
+ def teardown(openlp_runner):
+ openlp_runner.teardown()
return request.cached_setup(setup=setup, teardown=teardown, scope='function')
diff --git a/testing/test_app.py b/testing/test_app.py
index 04030d95e..2c7b01d7d 100644
--- a/testing/test_app.py
+++ b/testing/test_app.py
@@ -34,7 +34,10 @@ from openlp.core import OpenLP
from openlp.core.ui.mainwindow import MainWindow
-#def test_start_app(openlpapp):
- #assert type(openlpapp) == OpenLP
- #assert type(openlpapp.mainWindow) == MainWindow
- #assert unicode(openlpapp.mainWindow.windowTitle()) == u'OpenLP 2.0'
+# TODO Uncommend when using custom OpenLP configuration is implemented.
+# Otherwise it would mess up user's OpenLP settings
+#def test_start_app(openlp_runner):
+ #app = openlp_runner.get_app()
+ #assert type(app) == OpenLP
+ #assert type(app.mainWindow) == MainWindow
+ #assert unicode(app.mainWindow.windowTitle()) == u'OpenLP 2.0'
diff --git a/testing/test_openlyrics.py b/testing/test_openlyrics.py
index 32bde3fa0..bf53f053d 100644
--- a/testing/test_openlyrics.py
+++ b/testing/test_openlyrics.py
@@ -35,10 +35,11 @@ from lxml import etree
from openlp.plugins.songs.lib.db import Song
from openlp.plugins.songs.lib import OpenLyrics
-def test_openlyrics_export(songs_db, openlyrics_validator, pth, tmpdir):
+
+def test_openlyrics_export(openlp_runner, openlyrics_validator, pth, tmpdir):
# export song to file
f = tmpdir.join('out.xml')
- db = songs_db
+ db = openlp_runner.get_songs_db()
s = db.get_all_objects(Song)[0]
o = OpenLyrics(db)
xml = o.song_to_xml(s)
diff --git a/testing/test_songs_db.py b/testing/test_songs_db.py
index ae8d78251..ace6929b5 100644
--- a/testing/test_songs_db.py
+++ b/testing/test_songs_db.py
@@ -37,14 +37,15 @@ from sqlalchemy.orm.exc import UnmappedInstanceError
from openlp.plugins.songs.lib.db import Author, Book, MediaFile, Song, Topic
-def test_empty_songdb(empty_songs_db):
- g = empty_songs_db.get_all_objects
+def test_empty_songdb(openlp_runner):
+ db = openlp_runner.get_songs_db(empty=True)
+ g = db.get_all_objects
assert g(Author) == []
assert g(Book) == []
assert g(MediaFile) == []
assert g(Song) == []
assert g(Topic) == []
- c = empty_songs_db.get_object_count
+ c = db.get_object_count
assert c(Author) == 0
assert c(Book) == 0
assert c(MediaFile) == 0
@@ -52,11 +53,11 @@ def test_empty_songdb(empty_songs_db):
assert c(Topic) == 0
-def test_unmapped_class(empty_songs_db):
+def test_unmapped_class(openlp_runner):
# test class not mapped to any sqlalchemy table
class A(object):
pass
- db = empty_songs_db
+ db = openlp_runner.get_songs_db(empty=True)
assert db.save_object(A()) == False
assert db.save_objects([A(), A()]) == False
# no key - new object instance is created from supplied class
From fb664bed0cb835481b435bcc320289538d0f14c7 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 12 Sep 2011 22:35:39 +0200
Subject: [PATCH 31/68] Remove openlyrics tests for easier merging. They will
be merged later.
---
openlp/core/__init__.py | 35 +-
openlp/core/utils/__init__.py | 5 -
testing/conftest.py | 139 +-----
.../openlyrics/openlyrics_schema.rng | 472 ------------------
testing/resources/openlyrics/validate.py | 26 -
testing/resources/songs/openlyrics_test_1.xml | 102 ----
testing/resources/songs/songs.sqlite | Bin 30720 -> 0 bytes
testing/test_app.py | 15 +-
testing/test_openlyrics.py | 57 ---
testing/test_songs_db.py | 76 ---
10 files changed, 29 insertions(+), 898 deletions(-)
delete mode 100644 testing/resources/openlyrics/openlyrics_schema.rng
delete mode 100755 testing/resources/openlyrics/validate.py
delete mode 100644 testing/resources/songs/openlyrics_test_1.xml
delete mode 100644 testing/resources/songs/songs.sqlite
delete mode 100644 testing/test_openlyrics.py
delete mode 100644 testing/test_songs_db.py
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py
index 0bec15678..a5347edeb 100644
--- a/openlp/core/__init__.py
+++ b/openlp/core/__init__.py
@@ -228,29 +228,26 @@ def main(args=None):
help='Set the Qt4 style (passed directly to Qt4).')
parser.add_option('--testing', dest='testing',
action='store_true', help='Run by testing framework')
+ # Set up logging
+ log_path = AppLocation.get_directory(AppLocation.CacheDir)
+ check_directory_exists(log_path)
+ filename = os.path.join(log_path, u'openlp.log')
+ logfile = logging.FileHandler(filename, u'w')
+ logfile.setFormatter(logging.Formatter(
+ u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
+ log.addHandler(logfile)
+ logging.addLevelName(15, u'Timer')
# Parse command line options and deal with them.
# Use args supplied programatically if possible.
(options, args) = parser.parse_args(args) if args else parser.parse_args()
- # Set up logging
- # In test mode it is skipped
- if not options.testing:
- log_path = AppLocation.get_directory(AppLocation.CacheDir)
- check_directory_exists(log_path)
- filename = os.path.join(log_path, u'openlp.log')
- logfile = logging.FileHandler(filename, u'w')
- logfile.setFormatter(logging.Formatter(
- u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
- log.addHandler(logfile)
- logging.addLevelName(15, u'Timer')
- if options.loglevel.lower() in ['d', 'debug']:
- log.setLevel(logging.DEBUG)
- print 'Logging to:', filename
- elif options.loglevel.lower() in ['w', 'warning']:
- log.setLevel(logging.WARNING)
- else:
- log.setLevel(logging.INFO)
- # Deal with other command line options.
qt_args = []
+ if options.loglevel.lower() in ['d', 'debug']:
+ log.setLevel(logging.DEBUG)
+ print 'Logging to:', filename
+ elif options.loglevel.lower() in ['w', 'warning']:
+ log.setLevel(logging.WARNING)
+ else:
+ log.setLevel(logging.INFO)
if options.style:
qt_args.extend(['-style', options.style])
# Throw the rest of the arguments at Qt, just in case.
diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py
index fbf185474..3612bb002 100644
--- a/openlp/core/utils/__init__.py
+++ b/openlp/core/utils/__init__.py
@@ -127,9 +127,6 @@ class AppLocation(object):
CacheDir = 6
LanguageDir = 7
- # Base path where data/config/cache dir is located
- BaseDir = None
-
@staticmethod
def get_directory(dir_type=1):
"""
@@ -155,8 +152,6 @@ class AppLocation(object):
os.path.abspath(os.path.split(sys.argv[0])[0]),
_get_os_dir_path(dir_type))
return os.path.join(app_path, u'i18n')
- elif dir_type == AppLocation.DataDir and AppLocation.BaseDir:
- return os.path.join(AppLocation.BaseDir, 'data')
else:
return _get_os_dir_path(dir_type)
diff --git a/testing/conftest.py b/testing/conftest.py
index 0ba4f34ed..f38018c17 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -30,137 +30,16 @@
Configuration file for pytest framework.
"""
-import os
-import sys
-import subprocess
-import logging
-
-import py.path
-from PyQt4 import QtCore
-from sqlalchemy.orm import clear_mappers
-
from openlp.core import main as openlp_main
-from openlp.core.utils import AppLocation
-from openlp.core.lib.db import Manager
-from openlp.plugins.songs.lib.db import init_schema
-
-TESTS_PATH = os.path.dirname(os.path.abspath(__file__))
-
-RESOURCES_PATH = os.path.join(TESTS_PATH, 'resources')
-SONGS_PATH = os.path.join(RESOURCES_PATH, 'songs')
-# class to setup and teardown settings for running openlp tests
-class OpenLPRunner(object):
- def __init__(self, tmpdir):
- self.tmpdir = tmpdir
- self._setup_qapp()
- self._setup_logging()
- self._cleanup_qsettings()
- # override data dir of OpenLP - it points to tmpdir of a test case
- AppLocation.BaseDir = tmpdir.strpath
-
- def _setup_qapp(self):
- QtCore.QCoreApplication.setOrganizationName(u'OpenLP')
- QtCore.QCoreApplication.setOrganizationDomain(u'openlp.org')
- QtCore.QCoreApplication.setApplicationName(u'TestOpenLP')
-
- def _setup_logging(self):
- # set up logging to stderr/stdout (console)
- _handler = logging.StreamHandler(stream=None)
- _handler.setFormatter(logging.Formatter(
- u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
- logging.addLevelName(15, u'Timer')
- log = logging.getLogger()
- log.addHandler(_handler)
- log.setLevel(logging.DEBUG)
-
- def _cleanup_qsettings(self):
- # Clean up QSettings for all plugins
- # The issue with QSettings is that is global for a running process
- # and thus it is necessary to clean it before another test case.
- # If it would not be cleaned up it could be saved in the system.
- s = QtCore.QSettings()
- keys = s.allKeys()
- for k in keys:
- s.setValue(k, None)
-
- ## Public interface
-
- def get_songs_db(self, empty=False):
- # return initialized db Manager with empty db or db containing
- # some example songs
-
- if not empty:
- # copy test data to tmpdir
- datadir = self.tmpdir.mkdir(u'data').mkdir(u'songs')
- orig_db = py.path.local(SONGS_PATH).join('songs.sqlite')
- orig_db.copy(datadir)
-
- manager = Manager('songs', init_schema)
- return manager
-
- def get_app(self):
- # return QGui.QApplication of OpenLP - this object allows
- # running different gui tests and allows access to gui objects
- # (e.g MainWindow etc.)
- # To allow creating multiple instances of OpenLP in one process
- # it would be necessary use diffrent configuration and data files.
- # Created instance will use your OpenLP settings.
+# Test function argument to make openlp gui instance persistent for all tests.
+# All test cases have to access the same instance. To allow create multiple
+# instances it would be necessary use diffrent configuraion and data files.
+# Created instance will use your OpenLP settings.
+def pytest_funcarg__openlpapp(request):
+ def setup():
return openlp_main(['--testing'])
-
- def teardown(self):
- # clean up code to run after running the test case
- self._cleanup_qsettings()
- # sqlalchemy allows to map classess to only one database at a time
- clear_mappers()
- # set data dir to original value
- AppLocation.BaseDir = None
-
-
-# Paths with resources for tests
-def pytest_funcarg__pth(request):
- def setup():
- class Pth(object):
- def __init__(self):
- self.tests = py.path.local(TESTS_PATH)
- self.resources = py.path.local(RESOURCES_PATH)
- self.songs = py.path.local(SONGS_PATH)
- return Pth()
- return request.cached_setup(setup=setup, scope='session')
-
-
-# Test function argument giving access to OpenLP runner
-def pytest_funcarg__openlp_runner(request):
- def setup():
- return OpenLPRunner(request.getfuncargvalue('tmpdir'))
- def teardown(openlp_runner):
- openlp_runner.teardown()
- return request.cached_setup(setup=setup, teardown=teardown, scope='function')
-
-
-class OpenLyricsValidator(object):
- """Validate xml if it conformns to OpenLyrics xml schema."""
- def __init__(self, script, schema):
- self.cmd = [sys.executable, script, schema]
-
- def validate(self, file_path):
- self.cmd.append(file_path)
- print self.cmd
- retcode = subprocess.call(self.cmd)
- if retcode == 0:
- # xml conforms to schema
- return True
- else:
- # xml has invalid syntax
- return False
-
-
-# Test function argument giving access to song database.
-def pytest_funcarg__openlyrics_validator(request):
- def setup():
- script = os.path.join(RESOURCES_PATH, 'openlyrics', 'validate.py')
- schema = os.path.join(RESOURCES_PATH, 'openlyrics',
- 'openlyrics_schema.rng')
- return OpenLyricsValidator(script, schema)
- return request.cached_setup(setup=setup, scope='session')
+ def teardown(app):
+ pass
+ return request.cached_setup(setup=setup, teardown=teardown, scope='session')
diff --git a/testing/resources/openlyrics/openlyrics_schema.rng b/testing/resources/openlyrics/openlyrics_schema.rng
deleted file mode 100644
index b4a7813fb..000000000
--- a/testing/resources/openlyrics/openlyrics_schema.rng
+++ /dev/null
@@ -1,472 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- words
- music
-
-
-
-
-
- translation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -99
- 99
-
-
-
-
-
-
-
-
-
-
- 30
- 250
-
-
- bpm
-
-
-
-
-
-
- text
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
- 999
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- optional
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [0-9]+\.[0-9]+(\.[0-9]+)?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
- (v[1-9]\d?[a-z]?)|([cpb][a-z]?)|([cpbe][1-9]\d?[a-z]?)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
diff --git a/testing/resources/openlyrics/validate.py b/testing/resources/openlyrics/validate.py
deleted file mode 100755
index 116f69454..000000000
--- a/testing/resources/openlyrics/validate.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-
-try:
- from lxml import etree
-except ImportError:
- print('Python module "lxml" is required')
- exit(1)
-
-
-if len(sys.argv) != 3:
- print('Usage: python %s openlyrics_schema.rng xmlfile.xml' % __file__)
- exit(1)
-
-
-relaxng_file = sys.argv[1]
-xml_file = sys.argv[2]
-
-relaxng_doc = etree.parse(relaxng_file)
-xml_doc = etree.parse(xml_file)
-
-relaxng = etree.RelaxNG(relaxng_doc)
-
-relaxng.assertValid(xml_doc)
-
diff --git a/testing/resources/songs/openlyrics_test_1.xml b/testing/resources/songs/openlyrics_test_1.xml
deleted file mode 100644
index d7a9c12ec..000000000
--- a/testing/resources/songs/openlyrics_test_1.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
- Jezu Kriste, štědrý kněže
-
-
- M. Jan Hus
-
-
-
-
-
-
-
-
- <span style="-webkit-text-fill-color:red">
- </span>
-
-
- <span style="-webkit-text-fill-color:blue">
- </span>
-
-
- <span style="-webkit-text-fill-color:yellow">
- </span>
-
-
- <span style="-webkit-text-fill-color:#FFA500">
- </span>
-
-
- <strong>
- </strong>
-
-
- <em>
- </em>
-
-
- <span style="-webkit-text-fill-color:green">
- </span>
-
-
-
-
-
-
- Jezu Kriste, štědrý kněže,
- s Otcem, Duchem jeden Bože,
- štědrost Tvá je naše zboží,
- z Tvémilosti.
-
-
-
-
- Ty jsi v světě, bydlil s námi,
- Tvé tělo trpělo rány
- za nás za hříšné křesťany,
- z Tvé milosti.
-
-
-
-
- Ó, Tvá dobroto důstojná
- a k nám milosti přehojná!
- Dáváš nám bohatství mnohá
-
-
- z Tvé milosti.
-
-
-
-
-
-
- Ráčils nás sám zastoupiti,
-
- život za nás položiti,
-
- tak smrt věčnou zahladiti,
- z Tvé milosti.
-
-
-
-
- Ó, křesťané, z bludů vstaňme,
- dané dobro nám poznejme,
- k Synu Božímu chvátejme,
- k té milosti!
-
-
-
-
- Chvála budiž Bohu Otci,
- Synu jeho téže moci,
- Duchu jeho rovné moci,
- z též milosti!
-
-
-
-
diff --git a/testing/resources/songs/songs.sqlite b/testing/resources/songs/songs.sqlite
deleted file mode 100644
index f1ae584af22579ee8b55de2c80ce6a96aaae4e43..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 30720
zcmeHQ&2JmW72n}XqD4pXcebvoWGKUs2+*b|TXt;AABs#T@`vowbQ;4*i6yxf*Ie$(
z+@)-aRRK9EY6M8#!o37W4?6VV07efj&{KV(`5*LDAg3aSqNgB6(YlwuH@i#jiXV2+
zAc(|S)63nNH}l^6%^Py{<_+J~A74~0h2AtuMcJZcBFl~;;NT9=DW#a!N|BA2rHHp=*dvOsN_^ReNzRi^;`yg5_&4SSTFYBAJ7&{
zwJM9v;RYM=D8bP2n*AMxnV&OH(9l2^n0DK?!6~=}P6Of)PQyMt@q;745$H7paQ+kV
z?*hE|!4cpHY(4~rNuO|H=)7uLN=8?+h1y?eLDsXXq1V{{yFfw#v_p9)RmLsWxo6v#$TP1_I1r>5D{KE)@nlcP(c@GP8Bw3DN8
zpa|cXg=gfM8`aW^M~rH$w9-bDXvn11jJ9&w$|}VuJzLJggM2jxCG?h(Q*>Ibth{4@
z%+*+BB^q*6F-(i5mTGH2Lv^{nrqJaK5Y?VUL(8;ktW-^F1?nGHV{lQ887s7^S}R3W
zgNAA~2G<8a{P5Itj49Dcmr1WKAW*8}$YrW@iJD8#9s#UTnyKV8Rih>a3o5G75b~u^
zqZ!mHEwcAgZB4I)mSrR{DZJ-$K
z_ApAT3)syX%^8`JVHwrf!V1mR|6p3iEs!B3(*hIM5`QZ7?5Y5>P8tT^O~Gv?biv}MK+l4BmDV)
zqkQUdIXME~J_0!ZMd7|6+$SmWT==*Rhi}<8*M(mXCJYx1JdjW5mY^=+%<1&uvU5#qlwiJ5pv@a4GmX%izMHK+|EODar!Oe&-Ah*ISZm8z1h>0=
z?)TB#WnEmU-MzhSe7ZmD4@@laEd`e9mUt=E7umuDAH4@YbL#%z&C6SdVWORv=Ip
zHv4(kGA8OO(1zI{4DT$-dr=ZhO$t)9Z7+H#+jt+sZjE_oD*?(uMt<#@VZ9I_|w2
zTs;~LO2fnCo^QOJ;SBlEatgZ)+D)|t%L^?-hx)LEhqg62)m+r%ioaQl-`s~VAQy`K
zpO(r{KwWILI*qI|m~9uUd@?n%o!dDsuz`0l)tP;$H>vA8_IaM}Q-+;Stys=of~DA~Wo7Z+cBH=*As=
z59t?n?Fyfl_4mr=rGpeMC|u$EC*pquc=3ZHz!B&b1p0|c;K1j9BK})|7e6=x9DyD|
zAlQeqpAh@||7$_~xSd2fTlwdV-*3IbcjVdBhx
z_Wd6up9|!3@@3$sfd_#v#iQcy#NA?2{H<`sM&!(n0qL#1ZNHp`tZn+2@L-0MN{zV6!67@A3aX6vT&{RZp%LM_@xC@QXM5J~>Tj33htIj@AO(
z(F%7hTUufNWk#b0?jof*wuuz)?JcAgikm|fT5+4<_EFf;=-WODsJv-^|9>HfUu-Ch
zxUd`nj=;+h7!~J;_d}%RBjk*;{?DKPUj`+w=Ll>r1e(wPJpO-kjV#xOBk-ySaR2|S
zBE{)A0-Fy3KL0o0m~xFc019gb@Fx
zz(4@w|F@8!5I7nr2mUPX6MsX#B0qh!zjp+`VdN|OkuTuN
zSLKjnOqZ{mj@!2oPu7fIy!}Q{iUV7z4O@)t^7Sy>g((uZVTr|zVS{(%?4AKBJWOu*
zII1~^(+}J7u%qf65*Gh9y?sC$k;qln3yVQ>g6YiNz8>5vPly}*?94X_C}mNhwg7en
zDdT@@XHYr-VW!)d0Ct5PJIXj>|c8Y)C)2#!o$1Lc$x1T7*UjTx69)RF~@de)j&|4pQT-#nn06qVKK-2%v
z_y6{)C2+la6#;kuFMj{?`QNKn!1eA`1l;+L`a6j%raU-URFG?bGunFC9=VCPL(G?sPc7FHGL)rwxGn8l*@q*$ieJcJ%vZk^T4p%4yr
z$xqgJ%Z{xh|^>!!U!1D4&r=_?*>&ZS9-jp82o8L+$V&9
zdb4$`OV)uwplx$?G?Gnp%GJS4z-|saoID+r*8WHr?8s6l@dn&B({9i%X*X!Dd)5uq
zvI1P0#4f)ImQu(r(m90&qR}aV2G(`Sp0S=AYUh~-3KM*{ZeNX@E?{unzS@3dw%FGzr+-Bg
Date: Tue, 13 Sep 2011 13:20:51 -0400
Subject: [PATCH 33/68] added QCoreApplication.exit() to cancel button
---
openlp/core/ui/firsttimeform.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py
index 53000e3e0..b3c899ed2 100644
--- a/openlp/core/ui/firsttimeform.py
+++ b/openlp/core/ui/firsttimeform.py
@@ -222,6 +222,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
if self.lastId == FirstTimePage.NoInternet or \
(self.lastId <= FirstTimePage.Plugins and \
not self.hasRunWizard):
+ QtCore.QCoreApplication.exit()
sys.exit()
self.downloadCanceled = True
Receiver.send_message(u'cursor_normal')
From 526365153fa8b31c98550b5b1d288d1f85c3bbc2 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 13 Sep 2011 22:40:34 +0200
Subject: [PATCH 34/68] rename in xml.py only_process_format_tags to
parse_and_not_save
---
openlp/plugins/songs/lib/xml.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 573e9b866..df37b54b6 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -345,7 +345,7 @@ class OpenLyrics(object):
self._add_text_to_element(u'line', lines_element, line)
return self._extract_xml(song_xml)
- def xml_to_song(self, xml, only_process_format_tags=False):
+ def xml_to_song(self, xml, parse_and_not_save=False):
"""
Create and save a song from OpenLyrics format xml to the database. Since
we also export XML from external sources (e. g. OpenLyrics import), we
@@ -354,7 +354,7 @@ class OpenLyrics(object):
``xml``
The XML to parse (unicode).
- ``only_process_format_tags``
+ ``parse_and_not_save``
Switch to skip processing the whole song and to prevent storing the
songs to the database. Defaults to ``False``.
"""
@@ -369,8 +369,8 @@ class OpenLyrics(object):
else:
return None
if float(song_xml.get(u'version')) > 0.6:
- self._process_formatting_tags(song_xml, only_process_format_tags)
- if only_process_format_tags:
+ self._process_formatting_tags(song_xml, parse_and_not_save)
+ if parse_and_not_save:
return
song = Song()
# Values will be set when cleaning the song.
From 82163867fedc2af9dc19d70b87cf4870a29f5270 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Thu, 15 Sep 2011 14:23:40 +0200
Subject: [PATCH 35/68] Add docstrings to some new openlyrics methods.
---
openlp/plugins/songs/lib/xml.py | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index df37b54b6..f49327450 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -172,7 +172,7 @@ class SongXML(object):
class OpenLyrics(object):
"""
- This class represents the converter for OpenLyrics XML (version 0.7)
+ This class represents the converter for OpenLyrics XML (version 0.8)
to/from a song.
As OpenLyrics has a rich set of different features, we cannot support them
@@ -197,6 +197,9 @@ class OpenLyrics(object):
````
This property is not supported.
+ ````
+ The custom formatting tags are fully supported.
+
````
This property is not supported.
@@ -306,13 +309,13 @@ class OpenLyrics(object):
for topic in song.topics:
self._add_text_to_element(u'theme', themes, topic.name)
# Process the formatting tags.
- # have we any tags in song lyrics?
+ # Have we any tags in song lyrics?
tags_element = None
match = re.search(u'\{/?\w+\}', song.lyrics, re.UNICODE)
if match:
- # reset available tags
+ # Reset available tags.
FormattingTags.reset_html_tags()
- # named 'formatting' - 'format' is built-in fuction in Python
+ # Named 'formatting' - 'format' is built-in fuction in Python.
formatting = etree.SubElement(song_xml, u'format')
tags_element = etree.SubElement(formatting, u'tags')
tags_element.set(u'application', u'OpenLP')
@@ -401,11 +404,15 @@ class OpenLyrics(object):
return element
def _add_tag_to_formatting(self, tag_name, tags_element):
+ """
+ Add new formatting tag to the element ````
+ if the tag is not present yet.
+ """
available_tags = FormattingTags.get_html_tags()
start_tag = '{%s}' % tag_name
for t in available_tags:
if t[u'start tag'] == start_tag:
- # create new formatting tag in openlyrics xml
+ # Rreate new formatting tag in openlyrics xml.
el = self._add_text_to_element(u'tag', tags_element)
el.set(u'name', tag_name)
el_open = self._add_text_to_element(u'open', el)
@@ -414,18 +421,22 @@ class OpenLyrics(object):
el_close.text = etree.CDATA(t[u'end html'])
def _add_line_with_tags_to_lines(self, parent, text, tags_element):
- # tags already converted to xml structure
+ """
+ Convert text with formatting tags from OpenLP format to OpenLyrics
+ format and append it to element ````.
+ """
+ # Tags already converted to xml structure.
xml_tags = tags_element.xpath(u'tag/attribute::name')
start_tags = self.start_tags_regex.findall(text)
end_tags = self.end_tags_regex.findall(text)
- # replace start tags with xml syntax
+ # Replace start tags with xml syntax.
for tag in start_tags:
name = tag[1:-1]
text = text.replace(tag, u'' % name)
- # add tag to elment if tag not present
+ # Add tag to elment if tag not present.
if name not in xml_tags:
self._add_tag_to_formatting(name, tags_element)
- # replace end tags
+ # Replace end tags.
for t in end_tags:
text = text.replace(t, u'')
text = u'' + text + u''
From a7cd6c8a17bf2ca3e4f23937000423ff7d876170 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Thu, 15 Sep 2011 19:44:03 +0200
Subject: [PATCH 36/68] fix typo in comment
---
openlp/plugins/songs/lib/xml.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index f49327450..cab9d9207 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -412,7 +412,7 @@ class OpenLyrics(object):
start_tag = '{%s}' % tag_name
for t in available_tags:
if t[u'start tag'] == start_tag:
- # Rreate new formatting tag in openlyrics xml.
+ # Create new formatting tag in openlyrics xml.
el = self._add_text_to_element(u'tag', tags_element)
el.set(u'name', tag_name)
el_open = self._add_text_to_element(u'open', el)
From 1afcbbc8379278ad180219e1bdec1d7a19b7ae61 Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Fri, 16 Sep 2011 10:15:37 +0200
Subject: [PATCH 37/68] Fixed bug #851653, added an if statement, and fixed the
orphaned variable.
Fixes: https://launchpad.net/bugs/851653
---
openlp/plugins/songs/lib/mediaitem.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index 381e2611c..7d5e85af5 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -399,8 +399,10 @@ class SongMediaItem(MediaManagerItem):
except:
log.exception('Could not remove file: %s', audio)
try:
- os.rmdir(os.path.join(AppLocation.get_section_data_path(
- self.plugin.name), 'audio', str(item_id)))
+ save_path = os.path.join(AppLocation.get_section_data_path(
+ self.plugin.name), 'audio', str(item_id))
+ if os.path.exists(save_path):
+ os.rmdir(save_path)
except OSError:
log.exception(u'Could not remove directory: %s', save_path)
self.plugin.manager.delete_object(Song, item_id)
From 614ad790aeb518e7d3cf3f24d1b4511f14618366 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Fri, 16 Sep 2011 13:31:11 +0200
Subject: [PATCH 38/68] Fix spelling mistake
---
openlp/plugins/songs/lib/xml.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index cab9d9207..96c85e092 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -433,7 +433,7 @@ class OpenLyrics(object):
for tag in start_tags:
name = tag[1:-1]
text = text.replace(tag, u'' % name)
- # Add tag to elment if tag not present.
+ # Add tag to element if tag not present.
if name not in xml_tags:
self._add_tag_to_formatting(name, tags_element)
# Replace end tags.
From 62979a006285fc5142c97f30c6d1883a6c06b128 Mon Sep 17 00:00:00 2001
From: Tim Bentley
Date: Sat, 17 Sep 2011 09:20:03 +0100
Subject: [PATCH 39/68] Sort for added items in Images, Media and Presentations
Fixes: https://launchpad.net/bugs/827027
---
openlp/core/lib/mediamanageritem.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index 1c464f911..a824b178b 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -376,18 +376,21 @@ class MediaManagerItem(QtGui.QWidget):
The files to be loaded
"""
names = []
+ fullList = []
for count in range(0, self.listView.count()):
names.append(unicode(self.listView.item(count).text()))
- newFiles = []
+ fullList.append(unicode(self.listView.item(count).
+ data(QtCore.Qt.UserRole).toString()))
duplicatesFound = False
for file in files:
filename = os.path.split(unicode(file))[1]
if filename in names:
duplicatesFound = True
else:
- newFiles.append(file)
- if newFiles:
- self.loadList(newFiles)
+ fullList.append(file)
+ if fullList:
+ self.listView.clear()
+ self.loadList(fullList)
lastDir = os.path.split(unicode(files[0]))[0]
SettingsManager.set_last_dir(self.settingsSection, lastDir)
SettingsManager.set_list(self.settingsSection,
From 11424c8a7a42e4a18116d1b953de7cc630e1c7cd Mon Sep 17 00:00:00 2001
From: Tim Bentley
Date: Sat, 17 Sep 2011 09:28:33 +0100
Subject: [PATCH 40/68] Only load list if changed
---
openlp/core/lib/mediamanageritem.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index a824b178b..5366f3f68 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -382,13 +382,15 @@ class MediaManagerItem(QtGui.QWidget):
fullList.append(unicode(self.listView.item(count).
data(QtCore.Qt.UserRole).toString()))
duplicatesFound = False
+ filesAdded = False
for file in files:
filename = os.path.split(unicode(file))[1]
if filename in names:
duplicatesFound = True
else:
+ filesAdded = True
fullList.append(file)
- if fullList:
+ if fullList and filesAdded:
self.listView.clear()
self.loadList(fullList)
lastDir = os.path.split(unicode(files[0]))[0]
From d47189e9048e38d3f5b61861d2acff3e85a21a1b Mon Sep 17 00:00:00 2001
From: Tim Bentley
Date: Sat, 17 Sep 2011 14:05:28 +0100
Subject: [PATCH 41/68] Remove unneeded timer logger . Was from old renderer
---
openlp/core/__init__.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py
index a5347edeb..3c8bdfe71 100644
--- a/openlp/core/__init__.py
+++ b/openlp/core/__init__.py
@@ -236,7 +236,6 @@ def main(args=None):
logfile.setFormatter(logging.Formatter(
u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s'))
log.addHandler(logfile)
- logging.addLevelName(15, u'Timer')
# Parse command line options and deal with them.
# Use args supplied programatically if possible.
(options, args) = parser.parse_args(args) if args else parser.parse_args()
From c44b4dccf26120e230f94b940cb15c3e23e30c21 Mon Sep 17 00:00:00 2001
From: Stevan Pettit
Date: Sat, 17 Sep 2011 18:33:03 -0400
Subject: [PATCH 42/68] Fixed import statements
---
openlp/core/ui/firsttimeform.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py
index b3c899ed2..bfa4bf6b1 100644
--- a/openlp/core/ui/firsttimeform.py
+++ b/openlp/core/ui/firsttimeform.py
@@ -27,8 +27,10 @@
import io
import logging
-import os, sys
-import urllib, urllib2
+import os
+import sys
+import urllib
+import urllib2
from tempfile import gettempdir
from ConfigParser import SafeConfigParser
From 14e94f87580975e810cc94c238f1edf86adcd8fe Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Sun, 18 Sep 2011 01:22:16 +0200
Subject: [PATCH 43/68] RAW code for OpenLyrics import with formatting tags
---
openlp/core/utils/__init__.py | 5 +++
openlp/plugins/songs/lib/xml.py | 60 +++++++++++++++++++++++++++++++--
2 files changed, 62 insertions(+), 3 deletions(-)
diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py
index 3612bb002..fbf185474 100644
--- a/openlp/core/utils/__init__.py
+++ b/openlp/core/utils/__init__.py
@@ -127,6 +127,9 @@ class AppLocation(object):
CacheDir = 6
LanguageDir = 7
+ # Base path where data/config/cache dir is located
+ BaseDir = None
+
@staticmethod
def get_directory(dir_type=1):
"""
@@ -152,6 +155,8 @@ class AppLocation(object):
os.path.abspath(os.path.split(sys.argv[0])[0]),
_get_os_dir_path(dir_type))
return os.path.join(app_path, u'i18n')
+ elif dir_type == AppLocation.DataDir and AppLocation.BaseDir:
+ return os.path.join(AppLocation.BaseDir, 'data')
else:
return _get_os_dir_path(dir_type)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 96c85e092..deac1d4b4 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -73,6 +73,9 @@ from openlp.core.utils import get_application_version
log = logging.getLogger(__name__)
+NAMESPACE = u'http://openlyrics.info/namespace/2009/song'
+NSMAP = '{' + NAMESPACE + '}' + '%s'
+
class SongXML(object):
"""
@@ -267,7 +270,7 @@ class OpenLyrics(object):
sxml = SongXML()
song_xml = objectify.fromstring(u'')
# Append the necessary meta data to the song.
- song_xml.set(u'xmlns', u'http://openlyrics.info/namespace/2009/song')
+ song_xml.set(u'xmlns', NAMESPACE)
song_xml.set(u'version', OpenLyrics.IMPLEMENTED_VERSION)
application_name = u'OpenLP ' + get_application_version()[u'version']
song_xml.set(u'createdIn', application_name)
@@ -371,7 +374,8 @@ class OpenLyrics(object):
properties = song_xml.properties
else:
return None
- if float(song_xml.get(u'version')) > 0.6:
+ # Formatting tags are new in OpenLyrics 0.8
+ if float(song_xml.get(u'version')) > 0.7:
self._process_formatting_tags(song_xml, parse_and_not_save)
if parse_and_not_save:
return
@@ -558,6 +562,52 @@ class OpenLyrics(object):
FormattingTags.add_html_tags([tag for tag in found_tags
if tag[u'start tag'] not in existing_tag_ids], True)
+ def _process_lyrics_mixed_content(self, element):
+ text = u''
+
+ #print '1:', repr(text)
+ # Skip element.
+ #if element.tag == u'chord' and element.tail:
+ ## Append tail text at chord element.
+ #text += element.tail
+
+ # Start formatting tag.
+ #print NSMAP % 'tag'
+ #print repr(element.tag)
+ if element.tag == NSMAP % 'tag':
+ text += u'{%s}' % element.get(u'name')
+ print '1:', repr(text)
+
+ # Append text from element
+ if element.text:
+ text += element.text
+ print '2:', repr(text)
+
+ #print '3:', repr(text)
+ # Process nested formatting tags
+ for child in element:
+ # Use recursion since nested formatting tags are allowed.
+ text += self._process_lyrics_mixed_content(child)
+
+ # Append text from tail and add formatting end tag.
+ if element.tag == NSMAP % 'tag':
+ text += u'{/%s}' % element.get(u'name')
+ print '3:', repr(text)
+
+ # Append text from tail
+ if element.tail:
+ text += element.tail
+ print '4:', repr(text)
+
+ return text
+
+ def _process_lyrics_line(self, line):
+ # Convert lxml.objectify to lxml.etree representation
+ line = etree.tostring(line)
+ element = etree.XML(line)
+ print element.nsmap
+ return self._process_lyrics_mixed_content(element)
+
def _process_lyrics(self, properties, song_xml, song_obj):
"""
Processes the verses and search_lyrics for the song.
@@ -586,7 +636,11 @@ class OpenLyrics(object):
for line in lines.line:
if text:
text += u'\n'
- text += u''.join(map(unicode, line.itertext()))
+ text += self._process_lyrics_line(line)
+ #AAA = u''.join(map(unicode, line.itertext()))
+ #print 'AAA:', repr(AAA)
+ #text += AAA
+ #print repr(text)
# Add a virtual split to the verse text.
if lines.get(u'break') is not None:
text += u'\n[---]'
From 3c3339f114643e1a06d8b2a2c1a93d09d454f014 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sun, 18 Sep 2011 12:26:47 +0200
Subject: [PATCH 44/68] final fixes and clean ups
---
openlp/core/lib/renderer.py | 46 ++++++++++++++++++++++++++-----------
1 file changed, 33 insertions(+), 13 deletions(-)
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 3c1bb9be8..bf7319da0 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -440,21 +440,41 @@ class Renderer(object):
log.debug(u'_paginate_slide_words - End')
return formatted
- def _get_start_tags(self, text):
- missing_raw_tags = []
- missing_html_tags = []
+ def _get_start_tags(self, raw_text):
+ """
+ Tests the given text for not closed formatting tags and returns a tuple
+ consisting of two unicode strings::
+
+ (u'{st}{r}', u'')
+
+ The returned strings can be prepended to the next slide. The first
+ unicode string are OpenLP's formatting tags and the second unicode
+ string the html formatting tags.
+
+ ``raw_text``
+ The text to test. The text must **not** contain html tags, only
+ OpenLP formatting tags are allowed.
+ """
+ raw_tags = []
+ html_tags = []
for tag in FormattingTags.get_html_tags():
- if tag[u'start html'] == u' ':
+ if tag[u'start tag'] == u'{br}':
continue
- if tag[u'start html'] in text:
- missing_raw_tags.append((tag[u'start tag'], text.find(tag[u'start html'])))
- missing_html_tags.append((tag[u'start html'], text.find(tag[u'start html'])))
- elif tag[u'start tag'] in text:
- missing_raw_tags.append((tag[u'start tag'], text.find(tag[u'start tag'])))
- missing_html_tags.append((tag[u'start html'], text.find(tag[u'start tag'])))
- missing_raw_tags.sort(key=lambda tag: tag[1])
- missing_html_tags.sort(key=lambda tag: tag[1])
- return u''.join(missing_raw_tags), u''.join(missing_html_tags)
+ if tag[u'start tag'] in raw_text and not \
+ tag[u'end tag'] in raw_text:
+ raw_tags.append(
+ (tag[u'start tag'], raw_text.find(tag[u'start tag'])))
+ html_tags.append(
+ (tag[u'start html'], raw_text.find(tag[u'start tag'])))
+ # Sort the lists, so that the tags which were opened first on the first
+ # slide (the text we are checking) will be opened first on the next
+ # slide as well.
+ raw_tags.sort(key=lambda tag: tag[1])
+ html_tags.sort(key=lambda tag: tag[1])
+ # Remove the indexes.
+ raw_tags = [tag[0] for tag in raw_tags]
+ html_tags = [tag[0] for tag in html_tags]
+ return u''.join(raw_tags), u''.join(html_tags)
def _binary_chop(self, formatted, previous_html, previous_raw, html_list,
raw_list, separator, line_end):
From ceec3d6f3a52b3c752d71ee74f3d35d16c478093 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sun, 18 Sep 2011 12:32:27 +0200
Subject: [PATCH 45/68] reverted not necessary change
---
openlp/core/lib/renderer.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index bf7319da0..37443a76c 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -377,8 +377,7 @@ class Renderer(object):
separator = u' '
html_lines = map(expand_tags, lines)
# Text too long so go to next page.
- text = separator.join(html_lines)
- if not self._text_fits_on_slide(text):
+ if not self._text_fits_on_slide(separator.join(html_lines)):
html_text, previous_raw = self._binary_chop(formatted,
previous_html, previous_raw, html_lines, lines, separator, u'')
else:
From 505be93907bae63578d78aa621dc7008e1bef7fc Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Sun, 18 Sep 2011 17:57:30 +0200
Subject: [PATCH 46/68] updated ts files
---
resources/i18n/af.ts | 662 ++++++++++++++++------------
resources/i18n/cs.ts | 460 ++++++++++++--------
resources/i18n/de.ts | 460 ++++++++++++--------
resources/i18n/en.ts | 467 +++++++++++---------
resources/i18n/en_GB.ts | 559 ++++++++++++++----------
resources/i18n/en_ZA.ts | 460 ++++++++++++--------
resources/i18n/es.ts | 460 ++++++++++++--------
resources/i18n/et.ts | 460 ++++++++++++--------
resources/i18n/fr.ts | 591 ++++++++++++++-----------
resources/i18n/hu.ts | 460 ++++++++++++--------
resources/i18n/id.ts | 460 ++++++++++++--------
resources/i18n/ja.ts | 460 ++++++++++++--------
resources/i18n/ko.ts | 467 +++++++++++---------
resources/i18n/nb.ts | 467 +++++++++++---------
resources/i18n/nl.ts | 460 ++++++++++++--------
resources/i18n/pt_BR.ts | 460 ++++++++++++--------
resources/i18n/ru.ts | 648 ++++++++++++++++------------
resources/i18n/sv.ts | 934 +++++++++++++++++++---------------------
resources/i18n/zh_CN.ts | 467 +++++++++++---------
19 files changed, 5641 insertions(+), 4221 deletions(-)
diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts
index df722c5a8..eff8f8b8b 100644
--- a/resources/i18n/af.ts
+++ b/resources/i18n/af.ts
@@ -65,7 +65,7 @@ Gaan steeds voort?
-
+ <strong>Waarskuwing Mini-program</strong><br/>Die waarskuwing mini-program beheer die vertoning van moederskamer inligting op die vertoon skerm.
@@ -118,25 +118,25 @@ Gaan steeds voort?
- Geen Parameter Gevind nie
+ Geen Parameter Gevind nie
- Daar is nie 'n parameter gegee om te vervang nie.
+ Daar is nie 'n parameter gegee om te vervang nie.
Gaan steeds voort?
- Geen Plekhouer Gevind nie
+ Geen Plekhouer Gevind nie
- Die attent-teks bevat nie '<>' nie.
+ Die attent-teks bevat nie '<>' nie.
Gaan steeds voort?
@@ -347,12 +347,12 @@ Gaan steeds voort?
- &Opgradeer ouer Bybels
+ &Opgradeer ouer Bybels
- Opgradeer die Bybel databasisse na die nuutste formaat.
+ Opgradeer die Bybel databasisse na die nuutste formaat.
@@ -515,18 +515,18 @@ Veranderinge affekteer nie verse wat reeds in die diens is nie.
- Boek invoer... %s
+ Boek invoer... %sImporting verses from <book name>...
- Vers invoer vanaf %s...
+ Vers invoer vanaf %s...
- Vers invoer... voltooi.
+ Vers invoer... voltooi.
@@ -550,22 +550,22 @@ Veranderinge affekteer nie verse wat reeds in die diens is nie.
- Aflaai Fout
+ Aflaai Fout
- Daar was 'n probleem om die vers seleksie af te laai. Gaan die Internet konneksie na en as hierdie probleem voortduur, oorweeg dit asseblief om 'n gogga te rapporteer.
+ Daar was 'n probleem om die vers seleksie af te laai. Gaan die Internet konneksie na en as hierdie probleem voortduur, oorweeg dit asseblief om 'n gogga te rapporteer.
- Ontleed Fout
+ Ontleed Fout
- Daar was 'n probleem om die vers seleksie te onttrek. As hierdie probleem voortduur, oorweeg dit asseblief om 'n gogga te rapporteer.
+ Daar was 'n probleem om die vers seleksie te onttrek. As hierdie probleem voortduur, oorweeg dit asseblief om 'n gogga te rapporteer.
@@ -824,22 +824,22 @@ vraag afgelaai word en dus is 'n internet konneksie nodig.
- Enkel en dubbel Bybel vers soek resultate kan nie kombineer word nie. Wis die resultate uit en begin 'n nuwe soektog?
+ Enkel en dubbel Bybel-vers soek-resultate kan nie gekombineer word nie. Wis die resultate uit en begin 'n nuwe soektog?
- Die Bybel is nie ten volle gelaai nie.
+ Die Bybel is nie ten volle gelaai nie.
- Informasie
+ Informasie
- Die tweede Bybel het nie al die verse wat in die hoof Bybel is nie. Slegs verse wat in beide Bybels voorkom, sal gewys word. %d verse is nie by die resultate ingesluit nie.
+ Die tweede Bybel het nie al die verse wat in die hoof Bybel is nie. Slegs verse wat in beide Bybels voorkom, sal gewys word. %d verse is nie by die resultate ingesluit nie.
@@ -1076,17 +1076,17 @@ word en dus is 'n Internet verbinding nodig.
-
+ 'n Rugsteun Ligging moet vir die Bybels gespesifiseer word.
-
+ Opgradering begin...
-
+ Daar is geen Bybels wat opgradering benodig nie.
@@ -1251,9 +1251,9 @@ word en dus is 'n Internet verbinding nodig.
-
-
-
+
+ Wis regtig die geselekteerde aangepasde skyfie uit?
+ Wis regtig die %n geselekteerde aangepasde skyfies uit?
@@ -1438,41 +1438,41 @@ word en dus is 'n Internet verbinding nodig.
Selekteer beeld(e)
-
+ 'n Beeld om uit te wis moet geselekteer word.
-
+ 'n Beeld wat die agtergrond vervang moet gekies word.
-
+ Vermisde Beeld(e)
-
+ Die volgende beeld(e) bestaan nie meer nie: %s
-
+ Die volgende beeld(e) bestaan nie meer nie: %s
Voeg steeds die ander beelde by?
-
+ Daar was 'n probleem om die agtergrond te vervang. Die beeld lêer "%s" bestaan ine meer nie.
-
+
-
+ Daar was geen vertoon item om by te voeg nie.
@@ -1597,17 +1597,17 @@ Voeg steeds die ander beelde by?
Selekteer Media
-
+ 'n Media lêer om uit te wis moet geselekteer word.
-
+ Vermisde Media Lêer
-
+ Die lêer %s bestaan nie meer nie.
@@ -1629,6 +1629,16 @@ Voeg steeds die ander beelde by?
+ Daar was geen vertoon item om by te voeg nie.
+
+
+
+
+
+
+
+
+
@@ -2267,17 +2277,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ Aflaai %s...
-
+ Aflaai voltooi. Klik op die klaar knoppie om OpenLP te begin.
-
+ Skakel geselekteerde miniprogramme aan...
@@ -2363,48 +2373,48 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Geen Internet verbinding was gevind nie. Die Eerste-keer Gids benodig 'n Internet verbinding sodat voorbeeld liedere, Bybels en temas afgelaai kan word.
+ Geen Internet verbinding was gevind nie. Die Eerste-keer Gids benodig 'n Internet verbinding sodat voorbeeld liedere, Bybels en temas afgelaai kan word.
Om die Eerste-gebruik Gids later te gebruik om hierde data in te trek, druk die kanselleer knoppie nou, gaan die Internet verbinding na en herlaai OpenLP.
Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hieronder.
-
+ Voorbeeld Liedere
-
+ Kies en laai liedere vanaf die publieke domein.
-
+ Voorbeeld Bybels
-
+ Kies en laai gratis Bybels af.
-
+ Voorbeeld Temas
-
+ Kies en laai voorbeeld temas af.
-
+ Verstek Instellings
-
+ Stel verstek instellings wat deur OpenLP gebruik moet word.
@@ -2419,17 +2429,17 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
Wag asseblief terwyl OpenLP opgestel word en die data ingevoer word.
-
+ Verstek uitgaande vertoning:
-
+ Kies verstek tema:
-
+ Konfigurasie proses begin...
@@ -2439,92 +2449,111 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
Hierdie gids sal bystand verleen in die proses om OpenLP op te stel vir eerste gebruik. Klik die volgende knoppie hieronder om die seleksie proses te begin.
-
+ Opstel en Afliaai
-
+ Wag asseblief terwyl OpenLP opgestel en die data afgelaai word.
-
+ Opstel
-
+ Kliek die voltooi knoppie om OpenLP te begin.
- Aangepasde Skyfies
+ Aangepasde Skyfies
-
+
+ Aflaai voltooi. Klik op die klaar knoppie om na OpenLP terug te keer.
+
+
+
+
+ Kliek die voltooi knoppie om na OpenLP terug te keer.
+
+
+
+
-
-
+
+
+
+
+
+ Eindig
+ OpenLP.FormattingTagDialog
-
+ Konfigureer Formattering Etiket
- Redigeer Seleksie
+ Redigeer Seleksie
- Stoor
+ Stoor
- Beskrywing
+ Beskrywing
- Etiket
+ Etiket
- Begin etiket
+ Begin etiket
- Eind-etiket
+ Eind-etiket
- Haak Id
+ Etiket Id
- Begin HTML
+ Begin HTML
- Eindig HTML
+ Eindig HTML
@@ -2532,32 +2561,32 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
- Opdateer Fout
+ Opdateer Fout
- Etiket "n" alreeds gedefinieër.
+ Etiket "n" alreeds gedefinieër.
- Nuwe Etiket
+ Nuwe Etiket
- <HTML hier>
+ <HTML hier>
- </en hier>
+ </en hier>
- Etiket %s alreeds gedefinieër.
+ Etiket %s alreeds gedefinieër.
@@ -2565,211 +2594,221 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
- Rooi
+ Rooi
- Swart
+ Swart
- Blou
+ Blou
- Geel
+ Geel
- Groen
+ Groen
- Pienk
+ Pienk
- Oranje
+ Oranje
- Pers
+ Pers
- Wit
+ Wit
- Bo-skrif
+ Bo-skrif
- Onder-skrif
+ Onder-skrif
- Paragraaf
+ Paragraaf
- Vetdruk
+ Vetdruk
- Italiaans
+ Italiaans
- Onderlyn
+ Onderlyn
- Breek
+ BreekOpenLP.GeneralTab
-
+ Algemeen
-
+ Monitors
-
+ Selekteer monitor vir uitgaande vertoning:
-
+ Vertoon as dit 'n enkel skerm is
-
+ Applikasie Aanskakel
-
+ Vertoon leë skerm waarskuwing
-
+ Maak vanself die laaste diens oop
-
+ Wys die spatsel skerm
-
+ Program Verstellings
-
+ Vra om te stoor voordat 'n nuwe diens begin word
-
+ Wys voorskou van volgende item in diens automaties
-
+ sek
-
+ CCLI Inligting
-
+ SongSelect gebruikersnaam:
-
+ SongSelect wagwoord:
-
+ Vertoon Posisie
-
+ X
-
+ Y
-
+ Hoogte
-
+ Wydte
-
+ Oorskryf vertoon posisie
-
+ Kyk vir opdaterings van OpenLP
-
+ Verwyder blanko vertoning wanneer 'n nuwe regstreekse item bygevoeg word
-
+ Laat skyfie omvouing toe
-
+ Tyd-gedrewe skyfie interval:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2787,7 +2826,7 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
OpenLP.MainDisplay
-
+ OpenLP Vertooning
@@ -3075,7 +3114,7 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier
Verstel die skou modus na Regstreeks.
-
+
@@ -3084,17 +3123,17 @@ You can download the latest version from http://openlp.org/.
Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/.
-
+ OpenLP Weergawe is Opdateer
-
+ OpenLP Hoof Vertoning Blanko
-
+ Die Hoof Skerm is afgeskakel
@@ -3167,50 +3206,57 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/.
-
+ Sl&uit Panele
-
+ Voorkom dat die panele rondgeskuif word.
-
+ Her-gebruik Eerste-keer Gids
-
+ Her-gebruik die Eerste-keer Gids om liedere, Bybels en tema's in te voer.
-
+
-
+ Her-gebruik Eerste-keer Gids?
-
+
-
+ Is u seker u wil weer die Eerste-ker Gids gebruik?
+
+Her-gebruik van hierdie gids mag veranderinge aan die huidige OpenLP konfigurasie aanbring en kan moontlik liedere byvoeg by die bestaande liedere lys en kan ook die verstek tema verander.
-
+ Onlangse Lêe&rs
-
-
- Clear List of recent files
-
+
+
+ &Konfigureer Formattering Etikette...
+
+ Clear List of recent files
+ Maak Lys Skoon
+
+
+
-
+ Maak die lys van onlangse lêers skoon.
@@ -3233,12 +3279,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Maak Lêer oop
-
+
-
+
-
+
-
+
-
+
@@ -3280,7 +3326,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3292,7 +3338,7 @@ Database: %s
-
+
@@ -3302,7 +3348,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Geen item geselekteer nie
@@ -3312,32 +3358,32 @@ Database: %s
&Voeg by die geselekteerde Diens item
-
+ Kies een of meer items vir die voorskou.
-
+ Kies een of meer items vir regstreekse uitsending.
-
+ Kies een of meer items.
-
+ 'n Bestaande diens item moet geselekteer word om by by te voeg.
-
+ Ongeldige Diens Item
-
+ Kies 'n %s diens item.
@@ -3349,12 +3395,12 @@ Filename already exists in list
Lêernaam bestaan reeds in die lys
-
+ Kies een of meer items om by te voeg.
-
+ Geen Soek Resultate
@@ -3366,23 +3412,28 @@ This filename is already in the list
Die lêer naam is reeds in die lys
-
+
-
+ &Kloon
-
+ Ongeldige Lêer Tipe
-
+ Ongeldige Lêer %s. Agtervoegsel nie ondersteun nie
+
+ Duplikaat lêers gevind tydens invoer en is geïgnoreer.
+
+
+
@@ -3518,17 +3569,17 @@ Suffix not supported
-
+ Druk
-
+ Titel:
-
+ Verpersoonlike Voetskrif Teks:
@@ -3547,14 +3598,14 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+ <strong>Begin</strong>: %s
-
+
-
+ <strong>Durasie</strong>: %s
@@ -3568,209 +3619,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Skuif boon&toe
-
+ Skuif item tot heel bo in die diens.
-
+ Sk&uif op
-
+ Skuif item een posisie boontoe in die diens.
-
+ Skuif &af
-
+ Skuif item een posisie af in die diens.
-
+ Skuif &tot heel onder
-
+ Skuif item tot aan die einde van die diens.
-
+ Wis uit vanaf die &Diens
-
+ Wis geselekteerde item van die diens af.
-
+ &Voeg Nuwe Item By
-
+ &Voeg by Geselekteerde Item
-
+ R&edigeer Item
-
+ Ve&rander Item orde
-
+ &Notas
-
+ &Verander Item Tema
-
+ Lêer is nie 'n geldige diens nie.
Die inhoud enkodering is nie UTF-8 nie.
-
+ Lêer is nie 'n geldige diens nie.
-
+ Vermisde Vertoon Hanteerder
-
+ Die item kan nie vertoon word nie omdat daar nie 'n hanteerder is om dit te vertoon nie
-
+ Die item kan nie vertoon word nie omdat die mini-program wat dit moet vertoon vermis of onaktief is
-
+ Br&ei alles uit
-
+ Brei al die diens items uit.
-
+ Sto&rt alles ineen
-
+ Stort al die diens items ineen.
-
+ Maak Lêer oop
-
+ OpenLP Diens Lêers (*.osz)
-
+ Skuif die geselekteerde afwaarts in die venster.
-
+ Skuif op
-
+ Skuif die geselekteerde opwaarts in die venster.
-
+ Gaan Regstreeks
-
+ Stuur die geselekteerde item Regstreeks.
-
+ Redigeer Diens
-
+ &Begin Tyd
-
+ Wys &Voorskou
-
+ Vertoo&n Regstreeks
-
+ Die huidige diens was verander. Stoor hierdie diens?
-
+ Lêer kon nie oopgemaak word nie omdat dit korrup is.
-
+ Leë Lêer
-
+ Die diens lêer het geen data inhoud nie.
-
+ Korrupte Lêer
@@ -3790,7 +3841,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Speel tyd:
-
+ Ongetitelde Diens
@@ -3800,39 +3851,39 @@ Die inhoud enkodering is nie UTF-8 nie.
Die lêer is óf korrup óf nie 'n OpenLP 2.0 diens lêer nie.
-
+ Laai 'n bestaande diens.
-
+ Stoor die diens.
-
+ Kies 'n tema vir die diens.
-
+ Die lêer is óf korrup óf is nie 'n OpenLP 2.0 diens lêer nie.
-
+
-
+ Skyfie tema
-
+
-
+ Notas
-
+
-
+ Diens Lêer Vermis
@@ -3921,7 +3972,7 @@ Die inhoud enkodering is nie UTF-8 nie.
-
+ Konfigureer Kortpaaie
@@ -3962,17 +4013,17 @@ Die inhoud enkodering is nie UTF-8 nie.
Volgende Skyfie
-
+ Vorige Diens
-
+ Volgende Diens
-
+ Ontsnap Item
@@ -4026,6 +4077,11 @@ Die inhoud enkodering is nie UTF-8 nie.
Begin media speel.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4334,7 +4390,7 @@ Die inhoud enkodering is nie UTF-8 nie.
Copy of <theme name>
-
+ Duplikaat van %s
@@ -4582,12 +4638,12 @@ Die inhoud enkodering is nie UTF-8 nie.
-
+ Begin Kleur:
-
+ Eind Kleur:
@@ -4640,7 +4696,7 @@ Die inhoud enkodering is nie UTF-8 nie.
- Temas
+ Temas
@@ -5196,27 +5252,27 @@ Die inhoud enkodering is nie UTF-8 nie.
-
+ Bevesting Uitwissing
- Speel Skyfies in Herhaling
+ Speel Skyfies in Herhaling
- Speel Skyfies tot Einde
+ Speel Skyfies tot Einde
-
+ Staak Skyfies in Herhaling
-
+ Staak Skyfies tot Einde
@@ -5341,17 +5397,17 @@ Die inhoud enkodering is nie UTF-8 nie.
Aanbiedinge (%s)
-
+ Vermisde Aanbieding
-
+ Die Aanbieding %s bestaan nie meer nie.
-
+ Die Aanbieding %s is onvolledig, herlaai asseblief.
@@ -5495,7 +5551,7 @@ Die inhoud enkodering is nie UTF-8 nie.
-
+ Voeg By Diens
@@ -5594,12 +5650,12 @@ Die inhoud enkodering is nie UTF-8 nie.
-
+ Lied gebruik volging is aktief.
-
+ Lied gebruik volging is onaktief.
@@ -5964,187 +6020,189 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Toegedien deur %s
-
+
-
+
+[hier-bo is Lied Merkers met notas ingevoer vanaf
+ EasyWorship]SongsPlugin.EditSongForm
-
+ Lied Redigeerder
-
+ &Titel:
-
+ Alt&ernatiewe titel:
-
+ &Lirieke:
-
+ &Vers orde:
-
+ Red&igeer Alles
-
+ Titel && Lirieke
-
+ &Voeg by Lied
-
+ Ve&rwyder
-
+ &Bestuur Skrywers, Onderwerpe en Lied Boeke
-
+ Voeg by Lie&d
-
+ V&erwyder
-
+ Boek:
-
+ Nommer:
-
+ Skrywers, Onderwerpe && Lied Boek
-
+ Nuwe &Tema
-
+ Kopiereg Informasie
-
+ Kommentaar
-
+ Tema, Kopiereg Informasie && Kommentaar
-
+ Voeg Skrywer By
-
+ Hierdie skrywer bestaan nie, moet die skrywer bygevoeg word?
-
+ Hierdie skrywer is alreeds in die lys.
-
+ 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.
-
+ Voeg Onderwerp by
-
+ Die onderwerp bestaan nie. Voeg dit by?
-
+ Die onderwerp is reeds in die lys.
-
+ 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.
-
+ Tik 'n lied titel in.
-
+ Ten minste een vers moet ingevoer word.
-
+ Waarskuwing
-
+ Die vers orde is ongeldig. Daar is geen vers wat ooreenstem met %s nie. Geldige opsies is %s.
-
+ In die vers orde is %s nie gebruik nie. Kan die lied so gestoor word?
-
+ Voeg Boek by
-
+ Die lied boek bestaan nie. Voeg dit by?
-
+ Daar word 'n outeur benodig vir hierdie lied.
@@ -6153,6 +6211,31 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.You need to type some text in to the verse.
Daar word teks benodig vir die vers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6393,15 +6476,28 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Die generiese dokument/aanbieding invoerder is onaktief gestel omdat OpenLP nie toegang tot OpenOffice of LibreOffice het nie.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titels
-
+ Lirieke
@@ -6411,17 +6507,17 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Wis Lied(ere) uit?
-
+ CCLI Lisensie:
-
+ Volledige Lied
-
+ Wis regtig die %n geselekteerde lied uit?
@@ -6429,21 +6525,21 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.
-
+ Onderhou die lys van skrywers, onderwerpe en boeke.
-
+ For song cloning
-
+ kopieërSongsPlugin.OpenLP1SongImport
-
+ Nie 'n geldige openlp.org 1.x lied databasis.
@@ -6508,12 +6604,12 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.
SongsPlugin.SongImport
-
+ kopiereg
-
+ Die volgende liedere kon nie ingevoer word nie:
diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts
index 00f4f80d8..ad1b8b192 100644
--- a/resources/i18n/cs.ts
+++ b/resources/i18n/cs.ts
@@ -1360,39 +1360,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Vybrat obrázky
-
+ Pro smazání musíte nejdříve vybrat obrázek.
-
+ K nahrazení pozadí musíte nejdříve vybrat obrázek.
-
+ Chybějící obrázky
-
+ Následující obrázky už neexistují: %s
-
+ Následující obrázky už neexistují: %
Chcete přidat ostatní obrázky?
-
+ Problém s nahrazením pozadí. Obrázek "%s" už neexistuje.
-
+
@@ -1519,7 +1519,7 @@ Chcete přidat ostatní obrázky?
Vybrat médium
-
+ Ke smazání musíte nejdříve vybrat soubor s médiem.
@@ -1534,12 +1534,12 @@ Chcete přidat ostatní obrázky?
Problém s nahrazením pozadí. Soubor s médiem "%s" už neexistuje.
-
+ Chybějící soubory s médii
-
+ Soubor %s už neexistuje.
@@ -1553,6 +1553,16 @@ Chcete přidat ostatní obrázky?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2163,22 +2173,22 @@ Version: %s
Povolit upozornění
-
+ Výchozí nastavení
-
+ Stahuji %s...
-
+ Stahování dokončeno. Klepnutím na tlačítko konec se spustí aplikace OpenLP.
-
+ Zapínám vybrané moduly...
@@ -2199,44 +2209,44 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Žádné připojení k Internetu nenalezeno. Průvodce prvním spuštění potřebuje internetové připojení pro stahování ukázek písní, Biblí a motivů.
+ Žádné připojení k Internetu nenalezeno. Průvodce prvním spuštění potřebuje internetové připojení pro stahování ukázek písní, Biblí a motivů.
Pro pozdější opětovné spuštění Průvodce prvním spuštění a importu ukázkových dat klepněte na tlačítko Zrušit, prověřte internetové připojení a restartujte aplikaci OpenLP.
Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítko Dokončit.
-
+ Ukázky písní
-
+ Vybrat a stáhnout písně s nechráněnými autorskými právy.
-
+ Ukázky Biblí
-
+ Vybrat a stáhnout volně dostupné Bible.
-
+ Ukázky motivů
-
+ Vybrat a stáhnout ukázky motivů.
-
+ Nastavit výchozí nastavení pro aplikaci OpenLP.
@@ -2251,17 +2261,17 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
Čekejte prosím, než aplikace OpenLP nastaví a importuje vaše data.
-
+ Výchozí výstup zobrazit na:
-
+ Vybrat výchozí motiv:
-
+ Spouštím průběh nastavení...
@@ -2271,22 +2281,22 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
Tento průvodce pomáhá nastavit OpenLP pro první použití. Pro start klepněte níže na tlačítko další.
-
+
-
+
-
+
-
+
@@ -2296,15 +2306,34 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Konec
+ OpenLP.FormattingTagDialog
@@ -2478,57 +2507,57 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
OpenLP.GeneralTab
-
+ Obecné
-
+ Monitory
-
+ Vybrat monitor pro výstupní zobrazení:
-
+ Zobrazení při jedné obrazovce
-
+ Spuštění aplikace
-
+ Zobrazit varování při prázdné obrazovce
-
+ Automaticky otevřít poslední službu
-
+ Zobrazit úvodní obrazovku
-
+ Nastavení aplikace
-
+ Před spuštěním nové služby se ptát na uložení
-
+ Automatický náhled další položky ve službě
@@ -2538,75 +2567,85 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
Zpoždění smyčky snímku:
-
+ sek
-
+ CCLI podrobnosti
-
+ SongSelect uživatelské jméno:
-
+ SongSelect heslo:
-
+ Umístění zobrazení
-
+ X
-
+ Y
-
+ Výška
-
+ Šířka
-
+ Překrýt umístění zobrazení
-
+ Kontrola aktualizací aplikace OpenLP
-
+ Odkrýt zobrazení při přidání nové položky naživo
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2624,7 +2663,7 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
OpenLP.MainDisplay
-
+ Zobrazení OpenLP
@@ -2912,7 +2951,7 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk
Nastavit režim zobrazení na Naživo.
-
+
@@ -2921,17 +2960,17 @@ You can download the latest version from http://openlp.org/.
Nejnovější verzi lze stáhnout z http://openlp.org/.
-
+ Verze OpenLP aktualizována
-
+ Hlavní zobrazení OpenLP je prázdné
-
+ Hlavní zobrazení nastaveno na prázdný snímek
@@ -3027,12 +3066,12 @@ Nejnovější verzi lze stáhnout z http://openlp.org/.
-
+
-
+
@@ -3044,13 +3083,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3075,12 +3114,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Otevřít soubor
-
+
-
+
-
+
-
+
-
+
@@ -3122,7 +3161,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3134,7 +3173,7 @@ Database: %s
-
+
@@ -3144,7 +3183,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Nevybraná zádná položka
@@ -3154,32 +3193,32 @@ Database: %s
&Přidat k vybrané Položce Služby
-
+ Pro náhled je třeba vybrat jednu nebo více položek.
-
+ Pro zobrazení naživo je potřeba vybrat jednu nebo více položek.
-
+ Je třeba vybrat jednu nebo více položek.
-
+ K přidání Je třeba vybrat existující položku služby.
-
+ Neplatná Položka služby
-
+ Je třeba vybrat %s položku služby.
@@ -3191,17 +3230,17 @@ Filename already exists in list
Název souboru již v seznamu existuje
-
+ Pro přidání Je třeba vybrat jednu nebo více položek.
-
+ Žádné výsledky hledání
-
+
@@ -3217,7 +3256,7 @@ Suffix not supported
-
+
@@ -3382,12 +3421,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3403,209 +3442,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Přesun &nahoru
-
+ Přesun položky ve službě úplně nahoru.
-
+ Přesun &výše
-
+ Přesun položky ve službě o jednu pozici výše.
-
+ P?esun &níže
-
+ P?esun položky ve služb? o jednu pozici níže.
-
+ Přesun &dolu
-
+ Přesun položky ve službě úplně dolů.
-
+ &Smazat ze služby
-
+ Smazat vybranou položku ze služby.
-
+ &Přidat novou položku
-
+ &Přidat k vybrané položce
-
+ &Upravit položku
-
+ &Změnit pořadí položky
-
+ &Poznámky
-
+ &Změnit motiv položky
-
+ Soubory služby OpenLP (*.osz)
-
+ Soubor není platná služba.
Obsah souboru není v kódování UTF-8.
-
+ Soubor není platná služba.
-
+ Chybějící obsluha zobrazení
-
+ Položku není možno zobrazit, protože chybí obsluha pro její zobrazení
-
+ Položku není možno zobrazit, protože modul potřebný pro zobrazení položky chybí nebo je neaktivní
-
+ &Rozvinou vše
-
+ Rozvinout všechny položky služby.
-
+ &Svinout vše
-
+ Svinout všechny položky služby.
-
+ Otevřít soubor
-
+ Přesune výběr v rámci okna dolu.
-
+ Přesun nahoru
-
+ Přesune výběr v rámci okna nahoru.
-
+ Zobrazit naživo
-
+ Zobrazí vybranou položku naživo.
-
+ &Spustit čas
-
+ Zobrazit &náhled
-
+ Zobrazit n&aživo
-
+ Změněná služba
-
+ Současná služba byla změněna. Přejete si službu uložit?
-
+ Soubor se nepodařilo otevřít, protože je poškozený.
-
+ Prázdný soubor
-
+ Tento soubor služby neobsahuje žádná data.
-
+ Poškozený soubor
@@ -3625,7 +3664,7 @@ Obsah souboru není v kódování UTF-8.
Čas přehrávání:
-
+ Prázdná služba
@@ -3635,37 +3674,37 @@ Obsah souboru není v kódování UTF-8.
Tento soubor je buďto poškozen nebo to není soubor se službou OpenLP 2.0.
-
+ Načíst existující službu.
-
+ Uložit tuto službu.
-
+ Vybrat motiv pro službu.
-
+
-
+
-
+
-
+
@@ -3837,17 +3876,17 @@ Obsah souboru není v kódování UTF-8.
Následující snímek
-
+ Předchozí služba
-
+ Následující služba
-
+ Zrušit položku
@@ -3901,6 +3940,11 @@ Obsah souboru není v kódování UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5221,17 +5265,17 @@ Obsah souboru není v kódování UTF-8.
Prezentace (%s)
-
+ Chybějící prezentace
-
+ Prezentace %s už neexistuje.
-
+ Prezentace %s není kompletní, prosím načtěte ji znovu.
@@ -5838,7 +5882,7 @@ Kódování zodpovídá za správnou reprezentaci znaků.
Spravuje %s
-
+
@@ -5848,177 +5892,177 @@ Kódování zodpovídá za správnou reprezentaci znaků.
SongsPlugin.EditSongForm
-
+ Editor písně
-
+ &Název:
-
+ &Jiný název:
-
+ &Text písně:
-
+ &Pořadí veršů:
-
+ &Upravit vše
-
+ Název a text písně
-
+ &Přidat k písni
-
+ &Odstranit
-
+ &Správa autorů, témat a zpěvníků
-
+ &Přidat k písni
-
+ &Odstranit
-
+ Zpěvník:
-
+ Číslo:
-
+ Autoři, témata a zpěvníky
-
+ Nový &motiv
-
+ Informace o autorském právu
-
+ Komentáře
-
+ Motiv, autorská práva a komentáře
-
+ Přidat autora
-
+ Tento autor neexistuje. Chcete ho přidat?
-
+ Tento autor je už v seznamu.
-
+ 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".
-
+ Přidat téma
-
+ Toto téma neexistuje. Chcete ho přidat?
-
+ Toto téma je už v seznamu.
-
+ 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".
-
+ Je potřeba zadat název písne.
-
+ Je potřeba zadat alespoň jednu sloku.
-
+ Varování
-
+ Pořadí částí písně není platné. Část odpovídající %s neexistuje. Platné položky jsou %s.
-
+ Část %s není použita v pořadí částí písně. Jste si jisti, že chcete píseň takto uložit?
-
+ Přidat zpěvník
-
+ Tento zpěvník neexistuje. Chcete ho přidat?
-
+ Pro tuto píseň je potřeba zadat autora.
@@ -6027,6 +6071,31 @@ Kódování zodpovídá za správnou reprezentaci znaků.
Ke sloce je potřeba zadat nějaký text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6267,15 +6336,28 @@ Kódování zodpovídá za správnou reprezentaci znaků.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Názvy
-
+ Text písně
@@ -6285,17 +6367,17 @@ Kódování zodpovídá za správnou reprezentaci znaků.
Smazat písně?
-
+ CCLI Licence:
-
+ Celá píseň
-
+ Jste si jisti, že chcete smazat %n vybranou píseň?
@@ -6304,12 +6386,12 @@ Kódování zodpovídá za správnou reprezentaci znaků.
-
+ Spravovat seznamy autorů, témat a zpěvníků.
-
+ For song cloning
@@ -6318,7 +6400,7 @@ Kódování zodpovídá za správnou reprezentaci znaků.
SongsPlugin.OpenLP1SongImport
-
+ Neplatná databáze písní openlp.org 1.x.
@@ -6383,12 +6465,12 @@ Kódování zodpovídá za správnou reprezentaci znaků.
SongsPlugin.SongImport
-
+ autorská práva
-
+ Následující písně nemohly být importovány:
diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts
index a57b1ad4e..fde335644 100644
--- a/resources/i18n/de.ts
+++ b/resources/i18n/de.ts
@@ -1126,39 +1126,39 @@ Bitte beachten Sie, dass Bibeltexte von Onlinebibeln bei Bedarf heruntergeladen
Bilder auswählen
-
+ Das Bild, das entfernt werden soll, muss ausgewählt sein.
-
+ Das Bild, das Sie als Hintergrund setzen möchten, muss ausgewählt sein.
-
+ Fehlende Bilder
-
+ Auf die folgenden Bilder kann nicht mehr zugegriffen werden: %s
-
+ Auf die folgenden Bilder kann nicht mehr zugegriffen werden: %s
Wollen Sie die anderen Bilder trotzdem hinzufügen?
-
+ Da auf das Bild »%s« nicht mehr zugegriffen werden kann, konnte es nicht als Hintergrund gesetzt werden.
-
+
@@ -1250,17 +1250,17 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen?
Audio-/Videodatei auswählen
-
+ Die Audio-/Videodatei, die entfernt werden soll, muss ausgewählt sein.
-
+ Fehlende Audio-/Videodatei
-
+ Die Audio-/Videodatei »%s« existiert nicht mehr.
@@ -1284,6 +1284,16 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1757,17 +1767,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ %s wird heruntergeladen...
-
+ Download vollständig. Klicken Sie »Abschließen« um OpenLP zu starten.
-
+ Aktiviere ausgewählte Erweiterungen...
@@ -1848,64 +1858,64 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Es konnte keine Internetverbindung aufgebaut werden. Der Einrichtungsassistent benötigt eine Internetverbindung um Lieder, Bibeln und Design herunter zu laden.
+ Es konnte keine Internetverbindung aufgebaut werden. Der Einrichtungsassistent benötigt eine Internetverbindung um Lieder, Bibeln und Design herunter zu laden.
Um den Einrichtungsassistent später erneut zu starten und diese Beispieldaten zu importieren, drücken Sie »Abbrechen«, überprüfen Sie Ihre Internetverbindung und starten Sie OpenLP erneut.
Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.
-
+ Beispiellieder
-
+ Wählen und laden Sie gemeinfreie (bzw. kostenlose) Lieder herunter.
-
+ Beispielbibeln
-
+ Wählen und laden Sie freie Bibeln runter.
-
+ Beispieldesigns
-
+ Wählen und laden Sie Beispieldesigns runter.
-
+ Standardeinstellungen
-
+ Grundeinstellungen konfigurieren.
-
+ Projektionsbildschirm:
-
+ Standarddesign:
-
+ Starte Konfiguration...
@@ -1915,22 +1925,22 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
Dieser Assistent wird Ihnen helfen OpenLP für die erste Benutzung zu konfigurieren. Klicken sie »Weiter« um den Assistenten zu starten.
-
+ Konfiguriere und Herunterladen
-
+ Bitte warten Sie, während OpenLP eingerichtet wird und die Daten heruntergeladen werden.
-
+ Konfiguriere
-
+ Klicken Sie »Abschließen« um OpenLP zu starten.
@@ -1940,15 +1950,34 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
Sonderfolien
-
+ Download vollständig. Klicken Sie »Abschließen« um zurück zu OpenLP zu gelangen.
-
+ Klicken Sie »Abschließen« um zu OpenLP zurück zu gelangen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ende
+ OpenLP.FormattingTagDialog
@@ -2122,130 +2151,140 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
OpenLP.GeneralTab
-
+ Allgemein
-
+ Bildschirme
-
+ Projektionsbildschirm:
-
+ Anzeige bei nur einem Bildschirm
-
+ Programmstart
-
+ Warnung wenn Projektion deaktiviert wurde
-
+ Zuletzt benutzten Ablauf beim Start laden
-
+ Zeige den Startbildschirm
-
+ Anwendungseinstellungen
-
+ Geänderte Abläufe nicht ungefragt ersetzen
-
+ Vorschau des nächsten Ablaufelements
-
+ sek
-
+ CCLI-Details
-
+ SongSelect-Benutzername:
-
+ SongSelect-Passwort:
-
+ Anzeigeposition
-
+ X
-
+ Y
-
+ Höhe
-
+ Breite
-
+ Anzeigeposition überschreiben
-
+ Prüfe nach Aktualisierungen
-
+ Neues Element hellt Anzeige automatisch auf
-
+ Nach letzter Folie wieder die Erste anzeigen
-
+ Automatischer Folienwechsel:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2263,7 +2302,7 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
OpenLP.MainDisplay
-
+ OpenLP-Anzeige
@@ -2551,17 +2590,17 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
Die Ansicht für den Live-Betrieb optimieren.
-
+ Neue OpenLP Version verfügbar
-
+ Hauptbildschirm abgedunkelt
-
+ Die Projektion ist momentan nicht aktiv.
@@ -2571,7 +2610,7 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
Standarddesign: %s
-
+
@@ -2651,12 +2690,12 @@ Sie können die letzte Version auf http://openlp.org abrufen.
Einrichtungsassistent erneut starten um Beispiel-Lieder, Bibeln und Designs zu importieren.
-
+ Einrichtungsassistent starten?
-
+
@@ -2675,13 +2714,13 @@ Der Einrichtungsassistent kann einige Einstellungen verändern und ggf. neue Lie
Konfiguriere &Formatvorlagen...
-
+ Clear List of recent filesLeeren
-
+ Leert die Liste der zuletzte geöffnete Abläufe.
@@ -2696,12 +2735,12 @@ Der Einrichtungsassistent kann einige Einstellungen verändern und ggf. neue Lie
Einstellungen
-
+ Importiere Einstellungen?
-
+
-
+ Öffne Datei
-
+ OpenLP Einstellungsdatei (*.conf)
-
+ Importiere Einstellungen
-
+ OpenLP wird nun geschlossen. Importierte Einstellungen werden bei dem nächsten Start übernommen.
-
+ Exportiere Einstellungsdatei
-
+ OpenLP Einstellungsdatei (*.conf)
@@ -2757,7 +2796,7 @@ Falsche Einstellungen können fehlerhaftes Verhalten von OpenLP verursachen.
OpenLP.Manager
-
+ Datenbankfehler
@@ -2769,7 +2808,7 @@ Database: %s
-
+
@@ -2779,7 +2818,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Keine Elemente ausgewählt.
@@ -2789,47 +2828,47 @@ Database: %s
Zum &gewählten Ablaufelement hinzufügen
-
+ Zur Vorschau muss mindestens ein Elemente auswählt sein.
-
+ Zur Live Anzeige muss mindestens ein Element ausgewählt sein.
-
+ Es muss mindestens ein Element ausgewählt sein.
-
+ Sie müssen ein vorhandenes Ablaufelement auswählen.
-
+ Ungültiges Ablaufelement
-
+ Sie müssen ein %s-Element im Ablaufs wählen.
-
+ Kein Suchergebnis
-
+ Sie müssen ein oder mehrer Element auswählen.
-
+ &Klonen
@@ -2846,7 +2885,7 @@ Suffix not supported
Dateiendung nicht unterstützt.
-
+
@@ -3001,12 +3040,12 @@ Dateiendung nicht unterstützt.
OpenLP.ServiceItem
-
+ <strong>Anfang</strong>: %s
-
+ <strong>Spiellänge</strong>: %s
@@ -3022,214 +3061,214 @@ Dateiendung nicht unterstützt.
OpenLP.ServiceManager
-
+ Zum &Anfang schieben
-
+ Das ausgewählte Element an den Anfang des Ablaufs verschieben.
-
+ Nach &oben schieben
-
+ Das ausgewählte Element um eine Position im Ablauf nach oben verschieben.
-
+ Nach &unten schieben
-
+ Das ausgewählte Element um eine Position im Ablauf nach unten verschieben.
-
+ Zum &Ende schieben
-
+ Das ausgewählte Element an das Ende des Ablaufs verschieben.
-
+ Vom Ablauf &löschen
-
+ Das ausgewählte Element aus dem Ablaufs entfernen.
-
+ &Neues Element hinzufügen
-
+ &Zum gewählten Element hinzufügen
-
+ Element &bearbeiten
-
+ &Aufnahmeelement
-
+ &Notizen
-
+ &Design des Elements ändern
-
+ Die gewählte Datei ist keine gültige OpenLP Ablaufdatei.
Der Inhalt ist nicht in UTF-8 kodiert.
-
+ Die Datei ist keine gültige OpenLP Ablaufdatei.
-
+ Fehlende Anzeigesteuerung
-
+ Dieses Element kann nicht angezeigt werden, da es keine Steuerung dafür gibt.
-
+ Dieses Element kann nicht angezeigt werden, da die zugehörige Erweiterung fehlt oder inaktiv ist.
-
+ Alle au&sklappen
-
+ Alle Ablaufelemente ausklappen.
-
+ Alle ei&nklappen
-
+ Alle Ablaufelemente einklappen.
-
+ Ablauf öffnen
-
+ OpenLP Ablaufdateien (*.osz)
-
+ Ausgewähltes nach oben schieben
-
+ Nach oben
-
+ Live
-
+ Zeige das ausgewählte Element Live.
-
+ Ausgewähltes nach unten schieben
-
+ Modifizierter Ablauf
-
+ Der momentane Ablauf wurde modifiziert. Möchten Sie ihn speichern?
-
+ &Startzeit
-
+ &Vorschau
-
+ &Live
-
+ Datei konnte nicht geöffnet werden, da sie fehlerhaft ist.
-
+ Leere Datei
-
+ Diese Datei enthält keine Daten.
-
+ Dehlerhaft Datei
-
+ Unbenannt
@@ -3249,37 +3288,37 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Spiellänge:
-
+ Einen bestehenden Ablauf öffnen.
-
+ Den aktuellen Ablauf speichern.
-
+ Design für den Ablauf auswählen.
-
+ Entweder ist die Datei fehlerhaft oder sie ist keine OpenLP 2.0 Ablauf-Datei.
-
+ Element-Design
-
+ Notizen
-
+ Ablaufdatei fehlt
@@ -3406,17 +3445,17 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Nächste Folie
-
+ Vorheriges Element
-
+ Nächstes Element
-
+ Folie schließen
@@ -3460,6 +3499,11 @@ Der Inhalt ist nicht in UTF-8 kodiert.
Abspielen.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4697,17 +4741,17 @@ Sie ist nicht in UTF-8 kodiert.
Präsentationen (%s)
-
+ Fehlende Präsentation
-
+ Die Präsentation »%s« existiert nicht mehr.
-
+ Die Präsentation »%s« ist nicht vollständig, bitte neu laden.
@@ -5285,7 +5329,7 @@ Einstellung korrekt.
Verwaltet durch %s
-
+
@@ -5295,177 +5339,177 @@ Einstellung korrekt.
SongsPlugin.EditSongForm
-
+ Lied bearbeiten
-
+ &Titel:
-
+ Lied&text:
-
+ &Alle Bearbeiten
-
+ Titel && Liedtext
-
+ &Hinzufügen
-
+ &Entfernen
-
+ H&inzufügen
-
+ &Entfernen
-
+ Neues &Design
-
+ Copyright
-
+ Kommentare
-
+ Design, Copyright && Kommentare
-
+ Autor hinzufügen
-
+ Dieser Autor existiert nicht. Soll er zur Datenbank hinzugefügt werden?
-
+ 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«.
-
+ Thema hinzufügen
-
+ Dieses Thema existiert nicht. Soll es zur Datenbank hinzugefügt werden?
-
+ 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«.
-
+ Liederbuch hinzufügen
-
+ Dieses Liederbuch existiert nicht. Soll es zur Datenbank hinzugefügt werden?
-
+ Ein Liedtitel muss angegeben sein.
-
+ Mindestens ein Vers muss angegeben sein.
-
+ Warnung
-
+ Die Versfolge ist ungültig. Es gibt keinen Vers mit der Kennung »%s«. Gültige Werte sind »%s«.
-
+ »%s« wurde nirgends in der Versfolge verwendet. Wollen Sie das Lied trotzdem so abspeichern?
-
+ &Zusatztitel:
-
+ &Versfolge:
-
+ &Datenbankeinträge verwalten
-
+ Autoren, Themen && Liederbücher
-
+ Dieser Autor ist bereits vorhanden.
-
+ Dieses Thema ist bereits vorhanden.
-
+ Liederbuch:
-
+ Nummer:
-
+ Das Lied benötigt mindestens einen Autor.
@@ -5474,6 +5518,31 @@ Einstellung korrekt.
Die Strophe benötigt etwas Text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5694,30 +5763,43 @@ Einstellung korrekt.
Der Präsentation/Textdokument importer wurde deaktiviert, weil OpenLP nicht OpenOffice oder LibreOffice öffnen konnte.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titel
-
+ Liedtext
-
+ CCLI-Lizenz:
-
+ Ganzes Lied
-
+ Sind Sie sicher, dass das %n Lied gelöscht werden soll?
@@ -5725,12 +5807,12 @@ Einstellung korrekt.
-
+ Autoren, Themen und Bücher verwalten.
-
+ For song cloningKopie
@@ -5739,7 +5821,7 @@ Einstellung korrekt.
SongsPlugin.OpenLP1SongImport
-
+ Keine gültige openlp.org 1.x Liederdatenbank.
@@ -5804,12 +5886,12 @@ Einstellung korrekt.
SongsPlugin.SongImport
-
+ copyright
-
+ Die folgenden Lieder konnten nicht importiert werden:
diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts
index 65cf0b8b9..8bad8b94d 100644
--- a/resources/i18n/en.ts
+++ b/resources/i18n/en.ts
@@ -1106,38 +1106,38 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1229,7 +1229,7 @@ Do you want to add the other images anyway?
-
+
@@ -1244,12 +1244,12 @@ Do you want to add the other images anyway?
-
+
-
+
@@ -1263,6 +1263,16 @@ Do you want to add the other images anyway?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1694,22 +1704,22 @@ Version: %s
-
+
-
+
-
+
-
+
@@ -1724,61 +1734,52 @@ Version: %s
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1788,32 +1789,32 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1822,6 +1823,25 @@ To cancel the First Time Wizard completely, press the finish button now.Custom Slides
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.FormattingTagDialog
@@ -1995,130 +2015,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2136,7 +2166,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+
@@ -2424,24 +2454,24 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -2527,25 +2557,25 @@ You can download the latest version from http://openlp.org/.
-
+
-
+
-
+ Clear List of recent files
-
+
@@ -2570,12 +2600,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2617,7 +2647,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -2629,7 +2659,7 @@ Database: %s
-
+
@@ -2639,7 +2669,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+
@@ -2649,42 +2679,42 @@ Database: %s
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2700,12 +2730,12 @@ Suffix not supported
-
+
-
+
@@ -2860,12 +2890,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -2881,188 +2911,188 @@ Suffix not supported
OpenLP.ServiceManager
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3082,62 +3112,62 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3264,17 +3294,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -3318,6 +3348,11 @@ The content encoding is not UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4554,17 +4589,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -5136,7 +5171,7 @@ The encoding is responsible for the correct character representation.
-
+
@@ -5146,177 +5181,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5325,6 +5360,31 @@ The encoding is responsible for the correct character representation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5540,42 +5600,55 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+
-
+
-
+
-
+
-
+
-
+
-
+ For song cloning
@@ -5584,7 +5657,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -5644,12 +5717,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+
-
+
diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts
index 05631c139..2981bc2a5 100644
--- a/resources/i18n/en_GB.ts
+++ b/resources/i18n/en_GB.ts
@@ -65,7 +65,7 @@ Do you want to continue anyway?
-
+ <strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen.
@@ -1075,17 +1075,17 @@ on demand and so an Internet connection is required.
-
+ You need to specify a backup directory for your Bibles.
-
+ Starting upgrade...
-
+ There are no Bibles that need to be upgraded.
@@ -1250,9 +1250,9 @@ on demand and so an Internet connection is required.
-
-
-
+
+ Are you sure you want to delete the %n selected custom slides(s)?
+ Are you sure you want to delete the %n selected custom slides(s)?
@@ -1431,41 +1431,41 @@ on demand and so an Internet connection is required.
Select Image(s)
-
+ You must select an image to delete.
-
+ You must select an image to replace the background with.
-
+ Missing Image(s)
-
+ The following image(s) no longer exist: %s
-
+ The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+ There was a problem replacing your background, the image file "%s" no longer exists.
-
+
-
+ There was no display item to amend.
@@ -1590,17 +1590,17 @@ Do you want to add the other images anyway?
Select Media
-
+ You must select a media file to delete.
-
+ Missing Media File
-
+ The file %s no longer exists.
@@ -1622,6 +1622,16 @@ Do you want to add the other images anyway?
+ There was no display item to amend.
+
+
+
+
+
+
+
+
+
@@ -2261,17 +2271,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ Downloading %s...
-
+ Download complete. Click the finish button to start OpenLP.
-
+ Enabling selected plugins...
@@ -2357,64 +2367,64 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- No Internet connection was found. The First Time Wizard needs an Internet connection in order to be able to download sample songs, Bibles and themes.
+ No Internet connection was found. The First Time Wizard needs an Internet connection in order to be able to download sample songs, Bibles and themes.
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
-
+ Sample Songs
-
+ Select and download public domain songs.
-
+ Sample Bibles
-
+ Select and download free Bibles.
-
+ Sample Themes
-
+ Select and download sample themes.
-
+ Default Settings
-
+ Set up default settings to be used by OpenLP.
-
+ Default output display:
-
+ Select default theme:
-
+ Starting configuration process...
@@ -2424,22 +2434,22 @@ To cancel the First Time Wizard completely, press the finish button now.This wizard will help you to configure OpenLP for initial use. Click the next button below to start.
-
+ Setting Up And Downloading
-
+ Please wait while OpenLP is set up and your data is downloaded.
-
+ Setting Up
-
+ Click the finish button to start OpenLP.
@@ -2459,22 +2469,41 @@ To cancel the First Time Wizard completely, press the finish button now.Custom Slides
-
+
+ Download complete. Click the finish button to return to OpenLP.
+
+
+
+
+ Click the finish button to return to OpenLP.
+
+
+
+
-
-
+
+
+
+
+
+ Finish
+ OpenLP.FormattingTagDialog
-
+ Configure Formatting Tags
@@ -2641,130 +2670,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+ General
-
+ Monitors
-
+ Select monitor for output display:
-
+ Display if a single screen
-
+ Application Startup
-
+ Show blank screen warning
-
+ Automatically open the last service
-
+ Show the splash screen
-
+ Application Settings
-
+ Prompt to save before starting a new service
-
+ Automatically preview next item in service
-
+ sec
-
+ CCLI Details
-
+ SongSelect username:
-
+ SongSelect password:
-
+ Display Position
-
+ X
-
+ Y
-
+ Height
-
+ Width
-
+ Override display position
-
+ Check for updates to OpenLP
-
+ Unblank display when adding new live item
-
+ Enable slide wrap-around
-
+ Timed slide interval:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2782,7 +2821,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+ OpenLP Display
@@ -3070,7 +3109,7 @@ To cancel the First Time Wizard completely, press the finish button now.Set the view mode to Live.
-
+
@@ -3078,17 +3117,17 @@ You can download the latest version from http://openlp.org/.
You can download the latest version from http://openlp.org/.
-
+ OpenLP Version Updated
-
+ OpenLP Main Display Blanked
-
+ The Main Display has been blanked out
@@ -3161,50 +3200,57 @@ You can download the latest version from http://openlp.org/.
-
+ L&ock Panels
-
+ Prevent the panels being moved.
-
+ Re-run First Time Wizard
-
+ Re-run the First Time Wizard, importing songs, Bibles and themes.
-
+
-
+ Re-run First Time Wizard?
-
+
-
+ Are you sure you want to re-run the First Time Wizard?
+
+Re-running this wizard may make changes to your current OpenLP configuration and possibly add songs to your existing songs list and change your default theme.
-
+ &Recent Files
-
-
- Clear List of recent files
-
+
+
+ &Configure Formatting Tags...
+
+ Clear List of recent files
+ Clear List
+
+
+
-
+ Clear the list of recent files.
@@ -3227,12 +3273,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Open File
-
+
-
+
-
+
-
+
-
+
@@ -3274,7 +3320,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3286,7 +3332,7 @@ Database: %s
-
+
@@ -3296,7 +3342,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ No Items Selected
@@ -3306,42 +3352,42 @@ Database: %s
&Add to selected Service Item
-
+ You must select one or more items to preview.
-
+ You must select one or more items to send live.
-
+ You must select one or more items.
-
+ You must select an existing service item to add to.
-
+ Invalid Service Item
-
+ You must select a %s service item.
-
+ You must select one or more items to add.
-
+ No Search Results
@@ -3360,23 +3406,29 @@ Filename already exists in list
Filename already exists in list
-
+
-
+ &Clone
-
+ Invalid File Type
-
+ Invalid File %s.
+Suffix not supported
+
+ Duplicate files found on import and ignored.
+
+
+
@@ -3512,17 +3564,17 @@ Suffix not supported
-
+ Print
-
+ Title:
-
+ Custom Footer Text:
@@ -3541,14 +3593,14 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+ <strong>Start</strong>: %s
-
+
-
+ <strong>Length</strong>: %s
@@ -3562,209 +3614,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Move to &top
-
+ Move item to the top of the service.
-
+ Move &up
-
+ Move item up one position in the service.
-
+ Move &down
-
+ Move item down one position in the service.
-
+ Move to &bottom
-
+ Move item to the end of the service.
-
+ &Delete From Service
-
+ Delete the selected item from the service.
-
+ &Add New Item
-
+ &Add to Selected Item
-
+ &Edit Item
-
+ &Reorder Item
-
+ &Notes
-
+ &Change Item Theme
-
+ File is not a valid service.
The content encoding is not UTF-8.
-
+ File is not a valid service.
-
+ Missing Display Handler
-
+ Your item cannot be displayed as there is no handler to display it
-
+ Your item cannot be displayed as the plugin required to display it is missing or inactive
-
+ &Expand all
-
+ Expand all the service items.
-
+ &Collapse all
-
+ Collapse all the service items.
-
+ Open File
-
+ OpenLP Service Files (*.osz)
-
+ Moves the selection down the window.
-
+ Move up
-
+ Moves the selection up the window.
-
+ Go Live
-
+ Send the selected item to Live.
-
+ Modified Service
-
+ &Start Time
-
+ Show &Preview
-
+ Show &Live
-
+ The current service has been modified. Would you like to save this service?
-
+ File could not be opened because it is corrupt.
-
+ Empty File
-
+ This service file does not contain any data.
-
+ Corrupt File
@@ -3784,27 +3836,27 @@ The content encoding is not UTF-8.
Playing time:
-
+ Untitled Service
-
+ Load an existing service.
-
+ Save this service.
-
+ Select a theme for the service.
-
+ This file is either corrupt or it is not an OpenLP 2.0 service file.
@@ -3814,19 +3866,19 @@ The content encoding is not UTF-8.
This file is either corrupt or not an OpenLP 2.0 service file.
-
+
-
+ Slide theme
-
+
-
+ Notes
-
+
-
+ Service File Missing
@@ -3915,7 +3967,7 @@ The content encoding is not UTF-8.
-
+ Configure Shortcuts
@@ -3956,17 +4008,17 @@ The content encoding is not UTF-8.
Next Slide
-
+ Previous Service
-
+ Next Service
-
+ Escape Item
@@ -4020,6 +4072,11 @@ The content encoding is not UTF-8.
Start playing media.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4328,7 +4385,7 @@ The content encoding is not UTF-8.
Copy of <theme name>
-
+ Copy of %s
@@ -4576,12 +4633,12 @@ The content encoding is not UTF-8.
-
+ Starting color:
-
+ Ending color:
@@ -5190,7 +5247,7 @@ The content encoding is not UTF-8.
-
+ Confirm Delete
@@ -5205,12 +5262,12 @@ The content encoding is not UTF-8.
-
+ Stop Play Slides in Loop
-
+ Stop Play Slides to End
@@ -5335,17 +5392,17 @@ The content encoding is not UTF-8.
Presentations (%s)
-
+ Missing Presentation
-
+ The Presentation %s no longer exists.
-
+ The Presentation %s is incomplete, please reload.
@@ -5489,7 +5546,7 @@ The content encoding is not UTF-8.
-
+ Add to Service
@@ -5588,12 +5645,12 @@ The content encoding is not UTF-8.
-
+ Song usage tracking is active.
-
+ Song usage tracking is inactive.
@@ -5957,187 +6014,189 @@ The encoding is responsible for the correct character representation.Administered by %s
-
+
-
+
+[above are Song Tags with notes imported from
+ EasyWorship]SongsPlugin.EditSongForm
-
+ Song Editor
-
+ &Title:
-
+ Alt&ernate title:
-
+ &Lyrics:
-
+ &Verse order:
-
+ Ed&it All
-
+ Title && Lyrics
-
+ &Add to Song
-
+ &Remove
-
+ &Manage Authors, Topics, Song Books
-
+ A&dd to Song
-
+ R&emove
-
+ Book:
-
+ Number:
-
+ Authors, Topics && Song Book
-
+ New &Theme
-
+ Copyright Information
-
+ Comments
-
+ Theme, Copyright Info && Comments
-
+ Add Author
-
+ This author does not exist, do you want to add them?
-
+ 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.
-
+ Warning
-
+ The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s.
-
+ You have not used %s anywhere in the verse order. Are you sure you want to save the song like this?
-
+ Add Book
-
+ This song book does not exist, do you want to add it?
-
+ You need to have an author for this song.
@@ -6146,6 +6205,31 @@ The encoding is responsible for the correct character representation.You need to type some text in to the verse.
You need to type some text in to the verse.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6386,15 +6470,28 @@ The encoding is responsible for the correct character representation.The generic document/presentation importer has been disabled because OpenLP cannot find OpenOffice.org on your computer.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titles
-
+ Lyrics
@@ -6404,17 +6501,17 @@ The encoding is responsible for the correct character representation.Delete Song(s)?
-
+ CCLI License:
-
+ Entire Song
-
+ Are you sure you want to delete the %n selected song?
@@ -6422,21 +6519,21 @@ The encoding is responsible for the correct character representation.
-
+ Maintain the lists of authors, topics and books.
-
+ For song cloning
-
+ copySongsPlugin.OpenLP1SongImport
-
+ Not a valid openlp.org 1.x song database.
@@ -6501,12 +6598,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+ copyright
-
+ The following songs could not be imported:
diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts
index 114409dac..015b2d177 100644
--- a/resources/i18n/en_ZA.ts
+++ b/resources/i18n/en_ZA.ts
@@ -1283,39 +1283,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Select Image(s)
-
+ You must select an image to delete.
-
+ You must select an image to replace the background with.
-
+ Missing Image(s)
-
+ The following image(s) no longer exist: %s
-
+ The following image(s) no longer exist: %s
Do you want to add the other images anyway?
-
+ There was a problem replacing your background, the image file "%s" no longer exists.
-
+
@@ -1407,17 +1407,17 @@ Do you want to add the other images anyway?
Select Media
-
+ You must select a media file to delete.
-
+ Missing Media File
-
+ The file %s no longer exists.
@@ -1441,6 +1441,16 @@ Do you want to add the other images anyway?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2073,17 +2083,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ Downloading %s...
-
+ Download complete. Click the finish button to start OpenLP.
-
+ Enabling selected plugins...
@@ -2169,64 +2179,64 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- No Internet connection was found. The First Time Wizard needs an Internet connection in order to be able to download sample songs, Bibles and themes.
+ No Internet connection was found. The First Time Wizard needs an Internet connection in order to be able to download sample songs, Bibles and themes.
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
-
+ Sample Songs
-
+ Select and download public domain songs.
-
+ Sample Bibles
-
+ Select and download free Bibles.
-
+ Sample Themes
-
+ Select and download sample themes.
-
+ Default Settings
-
+ Set up default settings to be used by OpenLP.
-
+ Default output display:
-
+ Select default theme:
-
+ Starting configuration process...
@@ -2236,22 +2246,22 @@ To cancel the First Time Wizard completely, press the finish button now.This wizard will help you to configure OpenLP for initial use. Click the next button below to start.
-
+ Setting Up And Downloading
-
+ Please wait while OpenLP is set up and your data is downloaded.
-
+ Setting Up
-
+ Click the finish button to start OpenLP.
@@ -2261,15 +2271,34 @@ To cancel the First Time Wizard completely, press the finish button now.Custom Slides
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Finish
+ OpenLP.FormattingTagDialog
@@ -2443,130 +2472,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+ General
-
+ Monitors
-
+ Select monitor for output display:
-
+ Display if a single screen
-
+ Application Startup
-
+ Show blank screen warning
-
+ Automatically open the last service
-
+ Show the splash screen
-
+ Application Settings
-
+ CCLI Details
-
+ SongSelect username:
-
+ SongSelect password:
-
+ Display Position
-
+ X
-
+ Y
-
+ Height
-
+ Width
-
+ Override display position
-
+ Prompt to save before starting a new service
-
+ Automatically preview next item in service
-
+ sec
-
+ Check for updates to OpenLP
-
+ Unblank display when adding new live item
-
+ Enable slide wrap-around
-
+ Timed slide interval:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2584,7 +2623,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+ OpenLP Display
@@ -2872,17 +2911,17 @@ To cancel the First Time Wizard completely, press the finish button now.Set the view mode to Live.
-
+ OpenLP Version Updated
-
+ OpenLP Main Display Blanked
-
+ The Main Display has been blanked out
@@ -2892,7 +2931,7 @@ To cancel the First Time Wizard completely, press the finish button now.Default Theme: %s
-
+
@@ -2977,12 +3016,12 @@ You can download the latest version from http://openlp.org/.
-
+
-
+
@@ -2994,13 +3033,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3025,12 +3064,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Open File
-
+
-
+
-
+
-
+
-
+
@@ -3072,7 +3111,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3084,7 +3123,7 @@ Database: %s
-
+
@@ -3094,7 +3133,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ No Items Selected
@@ -3104,42 +3143,42 @@ Database: %s
&Add to selected Service Item
-
+ You must select one or more items to preview.
-
+ You must select one or more items to send live.
-
+ You must select one or more items.
-
+ You must select an existing service item to add to.
-
+ Invalid Service Item
-
+ You must select a %s service item.
-
+ You must select one or more items to add.
-
+ No Search Results
@@ -3151,7 +3190,7 @@ This filename is already in the list
This filename is already in the list
-
+
@@ -3167,7 +3206,7 @@ Suffix not supported
-
+
@@ -3327,12 +3366,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3348,209 +3387,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Move to &top
-
+ Move item to the top of the service.
-
+ Move &up
-
+ Move item up one position in the service.
-
+ Move &down
-
+ Move item down one position in the service.
-
+ Move to &bottom
-
+ Move item to the end of the service.
-
+ &Delete From Service
-
+ Delete the selected item from the service.
-
+ &Add New Item
-
+ &Add to Selected Item
-
+ &Edit Item
-
+ &Reorder Item
-
+ &Notes
-
+ &Change Item Theme
-
+ File is not a valid service.
The content encoding is not UTF-8.
-
+ File is not a valid service.
-
+ Missing Display Handler
-
+ Your item cannot be displayed as there is no handler to display it
-
+ Your item cannot be displayed as the plugin required to display it is missing or inactive
-
+ &Expand all
-
+ Expand all the service items.
-
+ &Collapse all
-
+ Collapse all the service items.
-
+ Open File
-
+ OpenLP Service Files (*.osz)
-
+ Moves the selection down the window.
-
+ Move up
-
+ Moves the selection up the window.
-
+ Go Live
-
+ Send the selected item to Live.
-
+ Modified Service
-
+ &Start Time
-
+ Show &Preview
-
+ Show &Live
-
+ The current service has been modified. Would you like to save this service?
-
+ File could not be opened because it is corrupt.
-
+ Empty File
-
+ This service file does not contain any data.
-
+ Corrupt File
@@ -3570,42 +3609,42 @@ The content encoding is not UTF-8.
Playing time:
-
+ Untitled Service
-
+ Load an existing service.
-
+ Save this service.
-
+ Select a theme for the service.
-
+ This file is either corrupt or it is not an OpenLP 2.0 service file.
-
+
-
+
-
+
@@ -3737,17 +3776,17 @@ The content encoding is not UTF-8.
Next Slide
-
+ Previous Service
-
+ Next Service
-
+ Escape Item
@@ -3801,6 +3840,11 @@ The content encoding is not UTF-8.
Start playing media.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5051,17 +5095,17 @@ The content encoding is not UTF-8.
Presentations (%s)
-
+ Missing Presentation
-
+ The Presentation %s no longer exists.
-
+ The Presentation %s is incomplete, please reload.
@@ -5643,7 +5687,7 @@ The encoding is responsible for the correct character representation.Administered by %s
-
+
@@ -5653,177 +5697,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+ Song Editor
-
+ &Title:
-
+ &Lyrics:
-
+ Ed&it All
-
+ Title && Lyrics
-
+ &Add to Song
-
+ &Remove
-
+ &Manage Authors, Topics, Song Books
-
+ A&dd to Song
-
+ R&emove
-
+ Authors, Topics && Song Book
-
+ New &Theme
-
+ Copyright Information
-
+ Comments
-
+ Theme, Copyright Info && Comments
-
+ Add Author
-
+ This author does not exist, do you want to add them?
-
+ 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.
-
+ Warning
-
+ The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s.
-
+ You have not used %s anywhere in the verse order. Are you sure you want to save the song like this?
-
+ Add Book
-
+ This song book does not exist, do you want to add it?
-
+ Alt&ernate title:
-
+ &Verse order:
-
+ Book:
-
+ Number:
-
+ You need to have an author for this song.
@@ -5832,6 +5876,31 @@ The encoding is responsible for the correct character representation.You need to type some text in to the verse.
You need to type some text in to the verse.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6052,15 +6121,28 @@ The encoding is responsible for the correct character representation.The generic document/presentation importer has been disabled because OpenLP cannot access OpenOffice or LibreOffice.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titles
-
+ Lyrics
@@ -6070,17 +6152,17 @@ The encoding is responsible for the correct character representation.Delete Song(s)?
-
+ CCLI License:
-
+ Entire Song
-
+ Are you sure you want to delete the %n selected song(s)?
@@ -6088,12 +6170,12 @@ The encoding is responsible for the correct character representation.
-
+ Maintain the lists of authors, topics and books.
-
+ For song cloning
@@ -6102,7 +6184,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+ Not a valid openlp.org 1.x song database.
@@ -6167,12 +6249,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+ copyright
-
+ The following songs could not be imported:
diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts
index e74a370ec..bbdba709c 100644
--- a/resources/i18n/es.ts
+++ b/resources/i18n/es.ts
@@ -1437,39 +1437,39 @@ Note que los versículos se descargarán según sea necesario, por lo que debe c
Seleccionar Imagen(es)
-
+ Debe seleccionar una imagen para eliminar.
-
+ Debe seleccionar una imagen para reemplazar el fondo.
-
+ Imágen(es) faltante
-
+ La siguiente imagen(es) ya no esta disponible: %s
-
+ La siguiente imagen(es) ya no esta disponible: %s
¿Desea agregar las demás imágenes?
-
+ Ocurrió un problema al reemplazar el fondo, el archivo "%s" ya no existe.
-
+
@@ -1596,17 +1596,17 @@ Do you want to add the other images anyway?
Seleccionar Medios
-
+ Debe seleccionar un medio para eliminar.
-
+ Archivo de Medios faltante
-
+ El archivo %s ya no esta disponible.
@@ -1630,6 +1630,16 @@ Do you want to add the other images anyway?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2268,17 +2278,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ Descargando %s...
-
+ Descarga completa. Presione finalizar para iniciar OpenLP.
-
+ Habilitando complementos seleccionados...
@@ -2364,49 +2374,49 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- No se encontró una conexión a Internet. El Asistente Inicial necesita una conexión a Internet para poder descargar canciones de muestra, Biblias y temas.
+ No se encontró una conexión a Internet. El Asistente Inicial necesita una conexión a Internet para poder descargar canciones de muestra, Biblias y temas.
Para volver a ejecutar el AsistenteInicial e importar estos datos de muestra posteriormente, presione el botón de cancelar ahora, compruebe su conexión a Internet y reinicie OpenLP.
Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora.
-
+ Canciones de Muestra
-
+ Seleccionar y descargar canciones de dominio público.
-
+ Biblias de Muestra
-
+ Seleccionar y descargar Biblias gratuitas.
-
+ Temas de Muestra
-
+ Seleccionar y descargar temas de muestra.
-
+ Configuración por defecto
-
+ Utilizar la configuración por defecto.
@@ -2421,17 +2431,17 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
Por favor espere mientras OpenLP se configura e importa los datos.
-
+ Pantalla predeterminada:
-
+ Seleccione el tema por defecto:
-
+ Iniciando proceso de configuración...
@@ -2441,22 +2451,22 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
Este asistente configurará OpenLP para su uso inicial. Presione el botón Siguiente para iniciar.
-
+ Configurando && Descargando
-
+ Por favor espere mientras OpenLP se configura e importa los datos.
-
+ Configurando
-
+ Presione finalizar para iniciar OpenLP.
@@ -2466,15 +2476,34 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
Diapositivas
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Final
+ OpenLP.FormattingTagDialog
@@ -2648,130 +2677,140 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
OpenLP.GeneralTab
-
+ General
-
+ Monitores
-
+ Seleccionar monitor para proyectar:
-
+ Mostar si solo hay una pantalla
-
+ Inicio de la Aplicación
-
+ Mostrar advertencia de pantalla en blanco
-
+ Abrir automáticamente el último servicio
-
+ Mostrar pantalla de bienvenida
-
+ Configuración del Programa
-
+ Ofrecer guardar antes de abrir un servicio nuevo
-
+ Vista previa automatica del siguiente ítem de servicio
-
+ seg
-
+ Detalles de CCLI
-
+ Usuario SongSelect:
-
+ Contraseña SongSelect:
-
+ Posición de Pantalla
-
+ X
-
+ Y
-
+ Altura
-
+ Ancho
-
+ Ignorar posición de pantalla
-
+ Buscar actualizaciones para OpenLP
-
+ Mostar proyección al agregar un ítem nuevo
-
+ Habilitar ajuste de diapositiva
-
+ Intervalo de diapositivas:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2789,7 +2828,7 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
OpenLP.MainDisplay
-
+ Pantalla de OpenLP
@@ -3077,7 +3116,7 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora
Modo de visualización.en Vivo.
-
+
@@ -3086,17 +3125,17 @@ You can download the latest version from http://openlp.org/.
Puede descargar la última versión desde http://openlp.org/.
-
+ Versión de OpenLP Actualizada
-
+ Pantalla Principal de OpenLP en Blanco
-
+ La Pantalla Principal se ha puesto en blanco
@@ -3187,12 +3226,12 @@ Puede descargar la última versión desde http://openlp.org/.
-
+
-
+
@@ -3204,13 +3243,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3235,12 +3274,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Abrir Archivo
-
+
-
+
-
+
-
+
-
+
@@ -3282,7 +3321,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3294,7 +3333,7 @@ Database: %s
-
+
@@ -3304,7 +3343,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Nada Seleccionado
@@ -3314,32 +3353,32 @@ Database: %s
&Agregar al ítem del Servico
-
+ Debe seleccionar uno o más ítems para visualizar.
-
+ Debe seleccionar uno o más ítems para proyectar.
-
+ Debe seleccionar uno o más ítems.
-
+ Debe seleccionar un servicio existente al cual añadir.
-
+ Ítem de Servicio no válido
-
+ Debe seleccionar un(a) %s del servicio.
@@ -3351,12 +3390,12 @@ Filename already exists in list
Este ya existe en la lista
-
+ Debe seleccionar uno o más ítemes para agregar.
-
+ Sin Resultados
@@ -3368,7 +3407,7 @@ This filename is already in the list
Este nombre ya existe en la lista
-
+
@@ -3384,7 +3423,7 @@ Suffix not supported
-
+
@@ -3549,12 +3588,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3570,209 +3609,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Mover al &inicio
-
+ Mover el ítem al inicio del servicio.
-
+ S&ubir
-
+ Mover el ítem una posición hacia arriba.
-
+ Ba&jar
-
+ Mover el ítem una posición hacia abajo.
-
+ Mover al &final
-
+ Mover el ítem al final del servicio.
-
+ &Eliminar Del Servicio
-
+ Eliminar el ítem seleccionado del servicio.
-
+ &Agregar un ítem nuevo
-
+ &Agregar al ítem Seleccionado
-
+ &Editar ítem
-
+ &Reorganizar ítem
-
+ &Notas
-
+ &Cambiar Tema de ítem
-
+ Este no es un servicio válido.
La codificación del contenido no es UTF-8.
-
+ El archivo no es un servicio válido.
-
+ Controlador de Pantalla Faltante
-
+ No se puede mostrar el ítem porque no hay un controlador de pantalla disponible
-
+ El ítem no se puede mostar porque falta el complemento requerido o esta desabilitado
-
+ &Expandir todo
-
+ Expandir todos los ítems del servicio.
-
+ &Colapsar todo
-
+ Colapsar todos los ítems del servicio.
-
+ Abrir Archivo
-
+ Archivo de Servicio OpenLP (*.osz)
-
+ Mover selección hacia abajo.
-
+ Subir
-
+ Mover selección hacia arriba.
-
+ Proyectar
-
+ Proyectar el ítem seleccionado.
-
+ Servicio Modificado
-
+ &Tiempo de Inicio
-
+ Mostrar &Vista previa
-
+ Mostrar &Proyección
-
+ El servicio actual a sido modificado. ¿Desea guardar este servicio?
-
+ No se pudo abrir el archivo porque está corrompido.
-
+ Archivo Vacio
-
+ El archivo de servicio no contiene ningún dato.
-
+ Archivo Corrompido
@@ -3792,7 +3831,7 @@ La codificación del contenido no es UTF-8.
Tiempo de reproducción:
-
+ Servicio Sin nombre
@@ -3802,37 +3841,37 @@ La codificación del contenido no es UTF-8.
El archivo está corrompido o no es una archivo de OpenLP 2.0.
-
+ Abrir un servicio existente.
-
+ Guardar este servicio.
-
+ Seleccione un tema para el servicio.
-
+ El archivo está corrupto o no es un archivo OpenLP 2.0 válido.
-
+
-
+
-
+
@@ -3964,17 +4003,17 @@ La codificación del contenido no es UTF-8.
Diapositiva Siguiente
-
+ Servicio Anterior
-
+ Servicio Siguiente
-
+ Salir de ítem
@@ -4028,6 +4067,11 @@ La codificación del contenido no es UTF-8.
Reproducir medios.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5343,17 +5387,17 @@ La codificación del contenido no es UTF-8.
Presentaciones (%s)
-
+ Presentación faltante
-
+ La Presentación %s ya no esta disponible.
-
+ La Presentación %s esta incompleta, por favor recargela.
@@ -5965,7 +6009,7 @@ La codificación se encarga de la correcta representación de caracteres.Administrado por %s
-
+
@@ -5975,177 +6019,177 @@ La codificación se encarga de la correcta representación de caracteres.
SongsPlugin.EditSongForm
-
+ Editor de Canción
-
+ &Título:
-
+ Título alt&ernativo:
-
+ &Letras:
-
+ Orden de &versos:
-
+ Ed&itar Todo
-
+ Título && Letra
-
+ &Agregar a Canción
-
+ &Quitar
-
+ Ad&ministrar Autores, Categorías, Himnarios
-
+ A&gregar a Canción
-
+ &Quitar
-
+ Libro:
-
+ Número:
-
+ Autores, Categorías e Himnarios
-
+ &Tema Nuevo
-
+ Información de Derechos de Autor
-
+ Comentarios
-
+ Tema, Derechos de Autor && Comentarios
-
+ Agregar Autor
-
+ Este autor no existe, ¿desea agregarlo?
-
+ Este autor ya esta en la lista.
-
+ No 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.
-
+ Agregar Categoría
-
+ Esta categoría no existe, ¿desea agregarla?
-
+ Esta categoría ya esta en la lista.
-
+ No seleccionado una categoría válida. Seleccione una categoría de la lista o ingrese un nombre nuevo y presione el botón "Agregar Categoría a Canción" para agregar la categoría nueva.
-
+ Debe escribir un título.
-
+ Debe agregar al menos un verso.
-
+ Advertencia
-
+ El orden de los versos no es válido. Ningún verso corresponde a %s. Las entradas válidas so %s.
-
+ No ha utilizado %s en el orden de los versos. ¿Desea guardar la canción de esta manera?
-
+ Agregar Himnario
-
+ Este himnario no existe, ¿desea agregarlo?
-
+ Debe ingresar un autor para esta canción.
@@ -6154,6 +6198,31 @@ La codificación se encarga de la correcta representación de caracteres.You need to type some text in to the verse.
Debe ingresar algún texto en el verso.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6394,15 +6463,28 @@ La codificación se encarga de la correcta representación de caracteres.El importador documento/presentación se ha deshabilitado porque OpenOffice.org o LibreOffice no esta disponible.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Títulos
-
+ Letra
@@ -6412,17 +6494,17 @@ La codificación se encarga de la correcta representación de caracteres.¿Eliminar Canción(es)?
-
+ Licensia CCLI:
-
+ Canción Completa
-
+ ¿Desea realmente borrar %n canción(es) seleccionada(s)?
@@ -6430,12 +6512,12 @@ La codificación se encarga de la correcta representación de caracteres.
-
+ Administrar la lista de autores, categorías y libros.
-
+ For song cloning
@@ -6444,7 +6526,7 @@ La codificación se encarga de la correcta representación de caracteres.
SongsPlugin.OpenLP1SongImport
-
+ Base de datos openlp.org 1.x no válida.
@@ -6509,12 +6591,12 @@ La codificación se encarga de la correcta representación de caracteres.
SongsPlugin.SongImport
-
+ derechos de autor
-
+ Las siguientes canciones no se importaron:
diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts
index 777eee651..7d2fb718f 100644
--- a/resources/i18n/et.ts
+++ b/resources/i18n/et.ts
@@ -1406,38 +1406,38 @@ Pane tähele, et veebipiiblite salmid laaditakse internetist vajadusel, seega on
Pildi (piltide) valimine
-
+ Pead valima pildi, mida kustutada.
-
+ Pead enne valima pildi, millega tausta asendada.
-
+ Puuduvad pildid
-
+ Järgnevaid pilte enam pole: %s
-
+ Järgnevaid pilte enam pole: %sKas tahad teised pildid sellest hoolimata lisada?
-
+ Tausta asendamisel esines viga, pildifaili "%s" enam pole.
-
+ Polnud ühtegi kuvatavat elementi, mida täiendada.
@@ -1564,17 +1564,17 @@ Do you want to add the other images anyway?
Meedia valimine
-
+ Pead valima meedia, mida kustutada.
-
+ Puuduv meediafail
-
+ Faili %s ei ole enam olemas.
@@ -1598,6 +1598,16 @@ Do you want to add the other images anyway?
Polnud ühtegi kuvatavat elementi, mida täiendada.
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2224,17 +2234,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ %s allalaadimine...
-
+ Allalaadimine lõpetatud. OpenLP käivitamiseks klõpsa lõpetamise nupule.
-
+ Valitud pluginate sisselülitamine...
@@ -2320,49 +2330,49 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Internetiühendust ei leitud. Esmakäivituse nõustaja vajab internetiühendust näidislaulude, Piiblite ja kujunduste allalaadimiseks.
+ Internetiühendust ei leitud. Esmakäivituse nõustaja vajab internetiühendust näidislaulude, Piiblite ja kujunduste allalaadimiseks.
Esmakäivituse nõustaja taaskäivitamiseks hiljem, klõpsa praegu loobu nupule, kontrolli oma internetiühendust ja taaskäivita OpenLP.
Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
-
+ Näidislaulud
-
+ Vali ja laadi alla avalikku omandisse kuuluvaid laule.
-
+ Näidispiiblid
-
+ Vabade Piiblite valimine ja allalaadimine.
-
+ Näidiskujundused
-
+ Näidiskujunduste valimine ja allalaadimine.
-
+ Vaikimisi sätted
-
+ OpenLP jaoks vaikimisi sätete määramine.
@@ -2377,17 +2387,17 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.Palun oota, kuni OpenLP on seadistatud ning sinu andmed on imporditud.
-
+ Vaikimisi ekraani kuva:
-
+ Vali vaikimisi kujundus:
-
+ Seadistamise alustamine...
@@ -2397,22 +2407,22 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
See nõustaja aitab alguses OpenLP seadistada. Alustamiseks klõpsa edasi nupule.
-
+ Seadistamine ja allalaadimine
-
+ Palun oota, kuni OpenLP-d seadistatakse ja andmeid allalaaditakse.
-
+ Seadistamine
-
+ OpenLP käivitamiseks klõpsa lõpetamise nupule.
@@ -2422,15 +2432,34 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Kohandatud slaidid
-
+ Allalaadimine lõpetatud. Klõpsa lõpetamise nupule, et naaseda OpenLP-sse.
-
+ Klõpsa lõpetamise nupule, et naaseda OpenLP-sse.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lõpp
+ OpenLP.FormattingTagDialog
@@ -2604,130 +2633,140 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
OpenLP.GeneralTab
-
+ Üldine
-
+ Monitorid
-
+ Vali väljundkuva ekraan:
-
+ Kuvatakse, kui on ainult üks ekraan
-
+ Rakenduse käivitumine
-
+ Kuvatakse tühjendatud ekraani hoiatust
-
+ Automaatselt avatakse viimane teenistus
-
+ Käivitumisel kuvatakse logo
-
+ Rakenduse sätted
-
+ Enne uue teenistuse alustamist küsitakse, kas salvestada avatud teenistus
-
+ Järgmise teenistuse elemendi automaatne eelvaade
-
+ sek
-
+ CCLI andmed
-
+ SongSelecti kasutajanimi:
-
+ SongSelecti parool:
-
+ Kuva asukoht
-
+ X
-
+ Y
-
+ Kõrgus
-
+ Laius
-
+ Kuva asukoht määratakse jõuga
-
+ OpenLP uuenduste kontrollimine
-
+ Uue elemendi saatmisel ekraanile võetakse ekraani tühjendamine maha
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2745,7 +2784,7 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
OpenLP.MainDisplay
-
+ OpenLP kuva
@@ -3033,17 +3072,17 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Vaate režiimiks ekraanivaate valimine.
-
+ OpenLP uuendus
-
+ OpenLP peakuva on tühi
-
+ Peakuva on tühi
@@ -3053,7 +3092,7 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule.
Vaikimisi kujundus: %s
-
+
@@ -3143,12 +3182,12 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.Käivita esmanõustaja uuesti laulude, Piiblite ja kujunduste importimiseks.
-
+ Kas käivitada esmanõustaja uuesti?
-
+
@@ -3162,13 +3201,13 @@ Selle nõustaja taaskäivitamine muudab sinu praegust OpenLP seadistust ja võib
-
+ Clear List of recent files
-
+
@@ -3193,12 +3232,12 @@ Selle nõustaja taaskäivitamine muudab sinu praegust OpenLP seadistust ja võib
-
+
-
+
-
+ Faili avamine
-
+
-
+
-
+
-
+
-
+
@@ -3240,7 +3279,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3252,7 +3291,7 @@ Database: %s
-
+
@@ -3262,7 +3301,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Ühtegi elementi pole valitud
@@ -3272,32 +3311,32 @@ Database: %s
&Lisa valitud teenistuse elemendile
-
+ Sa pead valima vähemalt ühe kirje, mida eelvaadelda.
-
+ Sa pead valima vähemalt ühe kirje, mida tahad ekraanil näidata.
-
+ Pead valima vähemalt ühe elemendi.
-
+ Pead valima olemasoleva teenistuse, millele lisada.
-
+ Vigane teenistuse element
-
+ Pead valima teenistuse elemendi %s.
@@ -3309,17 +3348,17 @@ Filename already exists in list
Failinimi on loendis juba olemas
-
+
-
+
-
+
@@ -3335,7 +3374,7 @@ Suffix not supported
-
+
@@ -3500,12 +3539,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3521,209 +3560,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Tõsta ü&lemiseks
-
+ Teenistuse algusesse tõstmine.
-
+ Liiguta &üles
-
+ Elemendi liigutamine teenistuses ühe koha võrra ettepoole.
-
+ Liiguta &alla
-
+ Elemendi liigutamine teenistuses ühe koha võrra tahapoole.
-
+ Tõsta &alumiseks
-
+ Teenistuse lõppu tõstmine.
-
+ &Kustuta teenistusest
-
+ Valitud elemendi kustutamine teenistusest.
-
+ &Lisa uus element
-
+ &Lisa valitud elemendile
-
+ &Muuda kirjet
-
+ &Muuda elemendi kohta järjekorras
-
+ &Märkmed
-
+ &Muuda elemendi kujundust
-
+ Fail ei ole sobiv teenistus.
Sisu ei ole UTF-8 kodeeringus.
-
+ Fail pole sobiv teenistus.
-
+ Puudub kuvakäsitleja
-
+ Seda elementi pole võimalik näidata ekraanil, kuna puudub seda käsitsev programm
-
+ Seda elementi pole võimalik näidata ekraanil, kuna puudub seda käsitsev programm
-
+ &Laienda kõik
-
+ Kõigi teenistuse kirjete laiendamine.
-
+ &Ahenda kõik
-
+ Kõigi teenistuse kirjete ahendamine.
-
+ Faili avamine
-
+ OpenLP teenistuse failid (*.osz)
-
+ Valiku tõstmine aknas allapoole.
-
+ Liiguta üles
-
+ Valiku tõstmine aknas ülespoole.
-
+ Ekraanile
-
+ Valitud kirje saatmine ekraanile.
-
+ Teenistust on muudetud
-
+ &Alguse aeg
-
+ Näita &eelvaadet
-
+ Näita &ekraanil
-
+ Praegust teensitust on muudetud. Kas tahad selle teenistuse salvestada?
-
+ Faili pole võimalik avada, kuna see on rikutud.
-
+ Tühi fail
-
+ Selles teenistuse failis pole andmeid.
-
+ Rikutud fail
@@ -3743,7 +3782,7 @@ Sisu ei ole UTF-8 kodeeringus.
Kestus:
-
+ Pealkirjata teenistus
@@ -3753,37 +3792,37 @@ Sisu ei ole UTF-8 kodeeringus.
See fail on rikutud või pole see OpenLP 2.0 teenistuse fail.
-
+ Olemasoleva teenistuse laadimine.
-
+ Selle teenistuse salvestamine.
-
+ Teenistuse jaoks kujunduse valimine.
-
+
-
+
-
+
-
+
@@ -3915,17 +3954,17 @@ Sisu ei ole UTF-8 kodeeringus.
Järgmine slaid
-
+ Eelmine teenistus
-
+ Järgmine teenistus
-
+ Kuva sulgemine
@@ -3969,6 +4008,11 @@ Sisu ei ole UTF-8 kodeeringus.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5284,17 +5328,17 @@ Sisu kodeering ei ole UTF-8.
Esitlused (%s)
-
+ Puuduv esitlus
-
+ Esitlust %s enam ei ole.
-
+ Esitlus %s ei ole täielik, palun laadi see uuesti.
@@ -5900,7 +5944,7 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Haldab %s
-
+
@@ -5910,177 +5954,177 @@ Kodeering on vajalik märkide õige esitamise jaoks.
SongsPlugin.EditSongForm
-
+ Lauluredaktor
-
+ &Pealkiri:
-
+ &Alternatiivne pealkiri:
-
+ &Sõnad:
-
+ &Salmide järjekord:
-
+ Muuda &kõiki
-
+ Pealkiri && laulusõnad
-
+ &Lisa laulule
-
+ &Eemalda
-
+ &Autorite, teemade ja laulikute haldamine
-
+ L&isa laulule
-
+ &Eemalda
-
+ Book:
-
+ Number:
-
+ Autorid, teemad && laulik
-
+ Uus &kujundus
-
+ Autoriõiguse andmed
-
+ Kommentaarid
-
+ Kujundus, autoriõigus && kommentaarid
-
+ Autori lisamine
-
+ Seda autorit veel pole, kas tahad autori lisada?
-
+ See autor juba on loendis.
-
+ Sa ei ole valinud ühtegi sobilikku autorit. Vali autor loendist või sisesta uue autori nimi ja klõpsa uue nupul "Lisa laulule autor".
-
+ Teema lisamine
-
+ Sellist teemat pole. Kas tahad selle lisada?
-
+ See teema juba on loendis.
-
+ Sa pole valinud sobivat teemat. Vali teema kas loendist või sisesta uus teema ja selle lisamiseks klõpsa nupule "Lisa laulule teema".
-
+ Pead sisestama laulu pealkirja.
-
+ Pead sisestama vähemalt ühe salmi.
-
+ Hoiatus
-
+ Salmide järjekord pole sobiv. Mitte ükski valm ei vasta %s-le. Sobivad salmid on %s.
-
+ Sa pole kasutanud %s mitte kusagil salmide järjekorras. Kas sa oled kindel, et tahad laulu selliselt salvestada?
-
+ Lauliku lisamine
-
+ Sellist laulikut pole. Kas tahad selle lisada?
-
+ Pead lisama sellele laulule autori.
@@ -6089,6 +6133,31 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Salm peab sisaldama teksti.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6319,15 +6388,28 @@ Kodeering on vajalik märkide õige esitamise jaoks.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Pealkirjad
-
+ Laulusõnad
@@ -6337,17 +6419,17 @@ Kodeering on vajalik märkide õige esitamise jaoks.
Kas kustutada laul(ud)?
-
+ CCLI litsents:
-
+ Kogu laulust
-
+ Kas sa oled kindel, et soovid kustutada %n valitud laulu?
@@ -6355,12 +6437,12 @@ Kodeering on vajalik märkide õige esitamise jaoks.
-
+ Autorite, teemade ja laulikute loendi haldamine.
-
+ For song cloning
@@ -6369,7 +6451,7 @@ Kodeering on vajalik märkide õige esitamise jaoks.
SongsPlugin.OpenLP1SongImport
-
+ See pole openlp.org 1.x laulude andmebaas.
@@ -6434,12 +6516,12 @@ Kodeering on vajalik märkide õige esitamise jaoks.
SongsPlugin.SongImport
-
+ autoriõigus
-
+ Järgnevaid laule polnud võimalik importida:
diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts
index f5c8408eb..b314cd17f 100644
--- a/resources/i18n/fr.ts
+++ b/resources/i18n/fr.ts
@@ -65,7 +65,7 @@ Voulez-vous continuer tout de même ?
-
+ <strong>Module d'alerte</strong><br />Le module d'alerte contrôle l'affichage de message d'alertes a l'écran.
@@ -352,7 +352,7 @@ Voulez-vous continuer tout de même ?
- Mettre à jour les bases de données de Bible au nouveau format
+ Mettre à jour les bases de données de Bible au nouveau format.
@@ -839,7 +839,7 @@ téléchargé à la demande, une connexion Internet fiable est donc nécessaire.
- La deuxième Bible ne contient pas tous les versets présents dans la Bible principale. Seulement les versets trouvés dans les deux Bibles vont être affichés. %s versets n'ont pas été inclus dans le résultat.
+ La deuxième Bible ne contient pas tous les versets présents dans la Bible principale. Seulement les versets trouvés dans les deux Bibles vont être affichés. %d versets n'ont pas été inclus dans le résultat.
@@ -1075,17 +1075,17 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem
-
+ Vous devez spécifier un répertoire de sauvegarde pour vos Bibles.
-
+ Démarrer la mise à jours...
-
+ Il n'y a pas de Bibles qui ont besoin d'être mise a jours.
@@ -1250,9 +1250,9 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem
-
-
-
+
+ Être vous sur de vouloir effacer la %n diapositive personnel sélectionnée ?
+ Être vous sur de vouloir effacer les %n diapositives personnels sélectionnées ?
@@ -1431,41 +1431,41 @@ Veuillez remarquer, que les versets des Bibles Web sont téléchargés à la dem
Sélectionne Image(s)
-
+ Vous devez sélectionner une image a effacer.
-
+ Image(s) manquante
-
+ L(es) image(s) suivante(s) n'existe(nt) plus : %s
-
+ L(es) image(s) suivante(s) n'existe(nt) plus : %s
Voulez-vous ajouter de toute façon d'autres images ?
-
+ Vous devez sélectionner une image pour remplacer le fond.
-
+ Il y a un problème pour remplacer votre fond, le fichier d'image "%s" n'existe plus.
-
+
-
+ Il n'y avait aucun élément d'affichage à modifier.
@@ -1600,17 +1600,17 @@ Voulez-vous ajouter de toute façon d'autres images ?
Il y a un problème pour remplacer le fond du direct, le fichier du média "%s" n'existe plus.
-
+ Fichier du média manquant
-
+ Le fichier %s n'existe plus.
-
+ Vous devez sélectionné un fichier média à effacer.
@@ -1622,6 +1622,16 @@ Voulez-vous ajouter de toute façon d'autres images ?
+ Il n'y avait aucun élément d'affichage à modifier.
+
+
+
+
+
+
+
+
+
@@ -2262,17 +2272,17 @@ Version : %s
OpenLP.FirstTimeWizard
-
+ Téléchargement %s...
-
+ Téléchargement terminer. Clic le bouton terminer pour démarrer OpenLP.
-
+ Active le module sélectionné...
@@ -2358,49 +2368,49 @@ Version : %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Pas de connexion Internet trouvée. L'assistant de démarrage a besoin d'une connexion Internet pour pouvoir télécharge les exemple de chants , Bibles et thèmes.
+ Pas de connexion Internet trouvée. L'assistant de démarrage a besoin d'une connexion Internet pour pouvoir télécharge les exemple de chants , Bibles et thèmes.
Pour redémarrer l'assistant de démarrage et importer les donnée d'exemple plus tard, appuyez sur le bouton annuler maintenant, vérifier votre connexion Internet et redémarrer OpenLP.
Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenant.
-
+ Chant exemple
-
+ Sélectionne et télécharge les chants du domaine publics.
-
+ Example de Bibles
-
+ Sélectionne et télécharge des Bibles gratuites.
-
+ Exemple de Thèmes
-
+ Sélectionne et télécharge des exemple de thèmes.
-
+ Paramètres par défaut
-
+ Définir les paramètres par défaut pour être utilisé par OpenLP.
@@ -2415,17 +2425,17 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
Merci de patienter pendant que OpenLP ce met en place et importe vos données.
-
+ Sortie écran par défaut :
-
+ Sélectionne le thème pas défaut :
-
+ Démarrer le processus de configuration...
@@ -2435,22 +2445,22 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
Cet assistant va vous aider à configurer OpenLP pour sa première utilisation. Cliquez sur le bouton suivant pour démarrer.
-
+ Mise en place et téléchargement
-
+ Merci d'attendre pendant qu'OpenLP ce met en place que que vos données soient téléchargée.
-
+ Mise en place
-
+ Cliquer sur le bouton pour démarrer OpenLP.
@@ -2460,22 +2470,41 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
Diapositives personnelles
-
+
+ Téléchargement terminé. Cliquez sur le bouton Terminer pour revenir à OpenLP.
+
+
+
+
+ Cliquez sur le bouton Terminer pour revenir à OpenLP.
+
+
+
+
-
-
+
+
+
+
+
+ Fini
+ OpenLP.FormattingTagDialog
-
+ Configurer les balises de formatage
@@ -2642,130 +2671,140 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
OpenLP.GeneralTab
-
+ Général
-
+ Monitors
-
+ Sélectionne l’écran pour la sortie d'affichage :
-
+ Affiche si il n'y a qu'un écran
-
+ Démarrage de l'application
-
+ Afficher un avertissement d'écran vide
-
+ Ouvre automatiquement le dernier service
-
+ Affiche l'écran de démarrage
-
+ Regarde s'il y a des mise à jours d'OpenLP
-
+ Préférence d'application
-
+ Demande d'enregistrer avant de commencer un nouveau service
-
+ Prévisualise automatiquement le prochain élément de service
-
+ sec
-
+ CCLI détails
-
+ Nom d'utilisateur SongSelect :
-
+ Mot de passe SongSelect :
-
+ Position d'affichage
-
+ X
-
+ Y
-
+ Hauteur
-
+ Largeur
-
+ Surcharge la position d'affichage
-
+ Supprime l'écran noir lors de l'ajout de nouveaux élément direct
-
+ Enclenche le passage automatique des diapositives
-
+ Intervalle de temps entre les diapositives :
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2783,7 +2822,7 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
OpenLP.MainDisplay
-
+ Affichage OpenLP
@@ -2803,7 +2842,7 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
- &Export
+ E&xport
@@ -2823,7 +2862,7 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
- &Options
+ O&ptions
@@ -3008,7 +3047,7 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
- &À propos
+ À &propos
@@ -3076,7 +3115,7 @@ Pour annuler l'assistant de démarrage, appuyer sur le bouton fin maintenan
Mode vue Direct.
-
+
@@ -3085,17 +3124,17 @@ You can download the latest version from http://openlp.org/.
Vous pouvez télécharger la dernière version depuis http://openlp.org/.
-
+ Version d'OpenLP mis a jours
-
+ OpenLP affichage principale noirci
-
+ L'affichage principale a été noirci
@@ -3128,7 +3167,7 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.
- Ouvre le répertoire de &données...
+ &Ouvre le répertoire de données...
@@ -3153,7 +3192,7 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.
- Met a jours les images de tous les thèmes.
+ Mettre à jours les images de tous les thèmes.
@@ -3163,50 +3202,57 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.
-
+ &Verrouille les panneaux
-
+ Empêcher les panneaux d'être déplacé.
-
+ Re-démarrer l'assistant de démarrage
-
+ Re-démarrer l'assistant de démarrage, importer les chants, Bibles et thèmes.
-
+
-
+ Re-démarrer l'assistant de démarrage ?
-
+
-
+ Êtes vous sur de vouloir re-démarrer l'assistant de démarrage ?
+
+Re-démarrer cet assistant peut apporter des modifications à votre configuration actuelle OpenLP et éventuellement ajouter des chansons à votre liste de chansons existantes et de changer votre thème par défaut.
-
+ Fichiers &récents
-
-
- Clear List of recent files
-
+
+
+ &Configurer les balises de formatage...
+
+ Clear List of recent files
+ Vide la liste
+
+
+
-
+ Vide la liste des fichiers récents.
@@ -3229,12 +3275,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Ouvre un fichier
-
+
-
+
-
+
-
+
-
+
@@ -3276,7 +3322,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3288,7 +3334,7 @@ Database: %s
-
+
@@ -3298,7 +3344,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Pas d'éléments sélectionné
@@ -3308,32 +3354,32 @@ Database: %s
&Ajoute à l'élément sélectionné du service
-
+ Vous devez sélectionner un ou plusieurs éléments a prévisualiser.
-
+ Vous devez sélectionner un ou plusieurs éléments pour les envoyer en direct.
-
+ Vous devez sélectionner un ou plusieurs éléments.
-
+ Vous devez sélectionner un élément existant du service pour l'ajouter.
-
+ Élément du service invalide
-
+ Vous devez sélectionner un %s élément du service.
@@ -3345,12 +3391,12 @@ Filename already exists in list
Le nom de fichiers existe dans la liste
-
+ Vous devez sélectionner un ou plusieurs éléments a ajouter.
-
+ Pas de résultats de recherche
@@ -3362,23 +3408,29 @@ This filename is already in the list
Ce nom de fichier est déjà dans la liste
-
+
-
+ %Clone
-
+ Type de fichier invalide
-
+ Fichier invalide %s.
+Suffixe pas supporter
+
+ Les fichier dupliqué et ignorer trouvé dans l'import.
+
+
+
@@ -3514,17 +3566,17 @@ Suffix not supported
-
+ Imprimer
-
+ Titre :
-
+ Texte de pied de page personnalisé :
@@ -3543,14 +3595,14 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+ <strong>Début</strong> : %s
-
+
-
+ <strong>Longueur</strong> : %s
@@ -3564,209 +3616,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Place en &premier
-
+ Place l'élément au début du service.
-
+ Déplace en &haut
-
+ Déplace l'élément d'une position en haut.
-
+ Déplace en &bas
-
+ Déplace l'élément d'une position en bas.
-
+ Place en &dernier
-
+ Place l'élément a la fin du service.
-
+ Déplace la sélection en haut de la fenêtre.
-
+ Déplace en haut
-
+
- &Efface du service
+ &Retire du service
-
+
- Efface l'élément sélectionner du service.
+ Retire l'élément sélectionné du service.
-
+ &Développer tous
-
+ Développe tous les éléments du service.
-
+ &Réduire tous
-
+ Réduit tous les élément du service.
-
+ Lance le direct
-
+ Envoie l'élément sélectionné en direct.
-
+ &Ajoute un nouvel élément
-
+ &Ajoute a l'élément sélectionné
-
+ &Édite l'élément
-
+ &Réordonne l'élément
-
+ &Remarques
-
+ &Change le thème de l'élément
-
+ Ouvre un fichier
-
+ Fichier service OpenLP (*.osz)
-
+ Le fichier n'est un service valide.
Le contenu n'est pas de l'UTF-8.
-
+ Le fichier n'est pas un service valide.
-
+ Délégué d'affichage manquent
-
+ Votre élément ne peut pas être affiché il n'y a pas de délégué pour l'afficher
-
+ Votre élément ne peut pas être affiché le module nécessaire pour l'afficher est manquant ou inactif
-
+ Déplace la sélection en bas de la fenêtre.
-
+ Service modifié
-
+ Temps de &début
-
+ Affiche en &prévisualisation
-
+ Affiche en &direct
-
+ Le service courant à été modifier. Voulez-vous l'enregistrer ?
-
+ Le fichier n'a pas pu être ouvert car il est corrompu.
-
+ Fichier vide
-
+ Ce fichier de service ne contiens aucune données.
-
+ Fichier corrompu
@@ -3786,7 +3838,7 @@ Le contenu n'est pas de l'UTF-8.
Durée du service :
-
+ Service sans titre
@@ -3796,39 +3848,39 @@ Le contenu n'est pas de l'UTF-8.
Ce fichier est corrompu ou n'est la un fichier service OpenLP 2.0.
-
+ Charge un service existant.
-
+ Enregistre ce service.
-
+ Sélectionne un thème pour le service.
-
+ Ce fichier est sois corrompu ou n'est pas un fichier de service OpenLP 2.0.
-
+
-
+ Thème de diapositive
-
+
-
+ Notes
-
+
-
+ Fichier de service manquant
@@ -3917,7 +3969,7 @@ Le contenu n'est pas de l'UTF-8.
-
+ Configure les raccourcis
@@ -3958,17 +4010,17 @@ Le contenu n'est pas de l'UTF-8.
Aller à
-
+ Service précédent
-
+ Service suivant
-
+ Élément échappement
@@ -4022,6 +4074,11 @@ Le contenu n'est pas de l'UTF-8.
Joue le média.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4330,7 +4387,7 @@ Le contenu n'est pas de l'UTF-8.
Copy of <theme name>
-
+ Copie de %s
@@ -4578,12 +4635,12 @@ Le contenu n'est pas de l'UTF-8.
-
+ Couleur de début :
-
+ Couleur de fin :
@@ -5192,27 +5249,27 @@ Le contenu n'est pas de l'UTF-8.
-
+ Confirme la suppression
- Joue les diapositives en boucle
+ Affiche les diapositives en boucle
- Joue les diapositives jusqu’à la fin
+ Affiche les diapositives jusqu’à la fin
-
+ Arrête la boucle de diapositive
-
+ Arrête la boucle de diapositive a la fin
@@ -5337,17 +5394,17 @@ Le contenu n'est pas de l'UTF-8.
Ce type de présentation n'est pas supporté.
-
+ Présentation manquante
-
+ La présentation %s est incomplète, merci de recharger.
-
+ La présentation %s n'existe plus.
@@ -5491,7 +5548,7 @@ Le contenu n'est pas de l'UTF-8.
-
+ Ajoute au service
@@ -5552,7 +5609,7 @@ Le contenu n'est pas de l'UTF-8.
- Enclenche/déclenche suivi
+ Enclencher/déclencher le suivi
@@ -5590,12 +5647,12 @@ Le contenu n'est pas de l'UTF-8.
-
+ Le suivi de l'utilisation est actif.
-
+ Le suivi de l'utilisation est inactif.
@@ -5910,7 +5967,7 @@ L'enccodage est responsable de l'affichage correct des caractères.
-
+ Auteur de maintenance
@@ -5959,187 +6016,189 @@ L'enccodage est responsable de l'affichage correct des caractères.Administré pas %s
-
+
-
+
+[ci-dessus sont les balises des chants avec des notes importées de
+ EasyWorship]SongsPlugin.EditSongForm
-
+ Éditeur de Chant
-
+ &Titre :
-
+ Titre alt&ernatif :
-
+ &Paroles :
-
+ Ordre des &versets :
-
+ Édite &tous
-
+ Titre && paroles
-
+
- &Ajoute un Chant
+ &Ajoute au Chant
-
+ &Enlève
-
+ &Gère les auteurs, sujets, psautiers
-
+
- A&joute un Chant
+ A&joute au Chant
-
+ E&nlève
-
+ Psautier :
-
+ Numéro :
-
+ Auteurs, sujets && psautiers
-
+ Nouveau &thème
-
+ Information du copyright
-
+ Commentaires
-
+ Thème, copyright && commentaires
-
+ Ajoute un auteur
-
+ Cet auteur n'existe pas, voulez vous l'ajouter ?
-
+ Cet auteur ce trouve déjà dans la liste.
-
+ Vous n'avez pas sélectionné un autheur valide. Vous pouvez sélectionner un auteur de la liste, ou tapez un nouvel auteur et cliquez sur "Ajouter un auteur au Chant" pour ajouter le nouvel auteur.
-
+ Ajoute un sujet
-
+ Ce sujet n'existe pas voulez vous l'ajouter ?
-
+ Ce sujet ce trouve déjà dans la liste.
-
+ Vous n'avez pas sélectionné de sujet valide. Vous pouvez sélectionner un auteur de la liste, ou tapez un nouvel auteur et cliquez sur "Ajouter un sujet au Chant" pour ajouter le nouvel auteur.
-
+ Vous avez besoin d'introduire un titre pour le chant.
-
+ Vous avez besoin d'introduire au moins un verset.
-
+ Vous avez besoin d'un auteur pour ce chant.
-
+ L'ordre des versets n'est pas valide. Il n'y a pas de verset correspondant à %s. Les entrées valide sont %s.
-
+ Attention
-
+ Vous n'avez pas utilisé %s dans l'ordre des verset. Êtes vous sur de vouloir enregistrer un chant comme ça ?
-
+ Ajoute un psautier
-
+ Ce chant n'existe pas, voulez vous l'ajouter ?
@@ -6148,6 +6207,31 @@ L'enccodage est responsable de l'affichage correct des caractères.You need to type some text in to the verse.
Vous avez besoin d'introduire du texte pour le verset.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6388,20 +6472,33 @@ L'enccodage est responsable de l'affichage correct des caractères.L'import générique de document/présentation à été désactiver car OpenLP ne peut accéder à OpenOffice ou LibreOffice.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ L'entier du Chant
-
+ Titres
-
+ Paroles
@@ -6411,7 +6508,7 @@ L'enccodage est responsable de l'affichage correct des caractères.Supprime le(s) Chant(s) ?
-
+ Êtes vous sur de vouloir supprimer le(s) %n chant(s) sélectionné(s) ?
@@ -6419,26 +6516,26 @@ L'enccodage est responsable de l'affichage correct des caractères.
-
+ License CCLI :
-
+ Maintenir la liste des auteur, sujet et psautiers.
-
+ For song cloning
-
+ copierSongsPlugin.OpenLP1SongImport
-
+ Base de données de chant openlp.org 1.x pas valide.
@@ -6503,12 +6600,12 @@ L'enccodage est responsable de l'affichage correct des caractères.
SongsPlugin.SongImport
-
+ copyright
-
+ Les chants suivant ne peut pas être importé :
@@ -6669,7 +6766,7 @@ L'enccodage est responsable de l'affichage correct des caractères.
- Met à jours le service avec les édition de chant
+ Mettre à jours le service avec les édition de chant
diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts
index 17fb60028..2baf3f508 100644
--- a/resources/i18n/hu.ts
+++ b/resources/i18n/hu.ts
@@ -1116,39 +1116,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Kép(ek) kijelölése
-
+ Ki kell választani egy képet a törléshez.
-
+ Ki kell választani egy képet a háttér cseréjéhez.
-
+
-
+ A következő kép(ek) nem létezik: %s
-
+ A következő kép(ek) nem létezik: %s
Szeretnél más képeket megadni?
-
+ Probléma történt a háttér cseréje során, a(z) „%s” kép nem létezik.
-
+ Nem volt módosított megjelenő elem.
@@ -1240,7 +1240,7 @@ Szeretnél más képeket megadni?
Médiafájl kijelölése
-
+ Ki kell jelölni egy médiafájlt a törléshez.
@@ -1260,12 +1260,12 @@ Szeretnél más képeket megadni?
Probléma történt a háttér cseréje során, a(z) „%s” média fájl nem létezik.
-
+ Hiányzó média fájl
-
+ A(z) „%s” fájl nem létezik.
@@ -1274,6 +1274,16 @@ Szeretnél más képeket megadni?
Nem volt módosított megjelenő elem.
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1714,17 +1724,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ Letöltés %s…
-
+ Letöltés kész. Kattints a Befejezés gombra az OpenLP indításához.
-
+ Kijelölt bővítmények engedélyezése…
@@ -1805,64 +1815,64 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Nem sikerült internetkapcsolatot találni. Az Első indulás tündérnek internetkapcsolatra van szüksége ahhoz, hogy a példa dalokat, bibliákat és témákat le tudja tölteni.
+ Nem sikerült internetkapcsolatot találni. Az Első indulás tündérnek internetkapcsolatra van szüksége ahhoz, hogy a példa dalokat, bibliákat és témákat le tudja tölteni.
Az Első indulás tündér újbóli indításához most a Mégse gobra kattints először, ellenőrizd az internetkapcsolatot és indítsd újra az OpenLP-t.
Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés gombot.
-
+ Példa dalok
-
+ Közkincs dalok kijelölése és letöltése.
-
+ Példa bibliák
-
+ Szabad bibliák kijelölése és letöltése.
-
+ Példa témák
-
+ Példa témák kijelölése és letöltése.
-
+ Alapértelmezett beállítások
-
+ Az OpenLP alapértelmezett beállításai.
-
+ Alapértelmezett kimeneti képernyő:
-
+ Alapértelmezett téma kijelölése:
-
+ Beállítási folyamat kezdése…
@@ -1872,32 +1882,32 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
A tündér segít elkezdeni az OpenLP használatát. Kattints az alábbi Következő gombra az indításhoz.
-
+ Beállítás és letöltés
-
+ Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok letöltődnek.
-
+ Beállítás
-
+ Kattints a Befejezés gombra az OpenLP indításához.
-
+ Letöltés kész. Kattints a Befejezés gombra az OpenLP-hez való visszatéréshez.
-
+ Kattints a Befejezés gombra az OpenLP-hez való visszatéréshez.
@@ -1906,6 +1916,25 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
Speciális diák
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Befejezés
+ OpenLP.FormattingTagDialog
@@ -2079,130 +2108,140 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
OpenLP.GeneralTab
-
+ Általános
-
+ Monitorok
-
+ Jelöld ki a vetítési képernyőt:
-
+ Megjelenítés egy képernyő esetén
-
+ Alkalmazás indítása
-
+ Figyelmeztetés megjelenítése az elsötétített képernyőről
-
+ Utolsó sorrend automatikus megnyitása
-
+ Indító képernyő megjelenítése
-
+ Alkalmazás beállítások
-
+ Rákérdezés mentésre új sorrend létrehozása előtt
-
+ Következő elem automatikus előnézete a sorrendben
-
+ mp
-
+ CCLI részletek
-
+ SongSelect felhasználói név:
-
+ SongSelect jelszó:
-
+ Megjelenítés pozíciója
-
+
-
+
-
+ Magasság
-
+ Szélesség
-
+ Megjelenítési pozíció felülírása
-
+ Frissítés keresése az OpenLP-hez
-
+ Képernyő elsötétítésének visszavonása új elem élő adásba küldésekor
-
+ Körbefutó diák engedélyezése
-
+ Időzített dia intervalluma:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2220,7 +2259,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
OpenLP.MainDisplay
-
+ OpenLP megjelenítés
@@ -2508,7 +2547,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
Nézetmód váltása a Élő módra.
-
+
@@ -2517,17 +2556,17 @@ You can download the latest version from http://openlp.org/.
A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.
-
+ OpenLP verziófrissítés
-
+ Elsötétített OpenLP fő képernyő
-
+ A fő képernyő el lett sötétítve
@@ -2618,12 +2657,12 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.Első indítás tündér újbóli futtatása dalok, bibliák, témák importálásához.
-
+ Újra futtatható az Első indítás tündér?
-
+
@@ -2632,13 +2671,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
A tündér újbóli futtatása során megváltozhatnak az OpenLP aktuális beállításai, az alapértelmezett téma és új dalok adhatók hozzá a jelenlegi dallistákhoz.
-
+ Clear List of recent filesLista törlése
-
+ Törli a legutóbbi fájlok listáját.
@@ -2658,12 +2697,12 @@ A tündér újbóli futtatása során megváltozhatnak az OpenLP aktuális beál
-
+
-
+
-
+ Fájl megnyitása
-
+
-
+
-
+
-
+
-
+
@@ -2705,7 +2744,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+ Adatbázis hiba
@@ -2719,7 +2758,7 @@ Database: %s
Adatbázis: %s
-
+
@@ -2731,7 +2770,7 @@ Adatbázis: %s
OpenLP.MediaManagerItem
-
+ Nincs kijelölt elem
@@ -2741,42 +2780,42 @@ Adatbázis: %s
&Hozzáadás a kijelölt sorrend elemhez
-
+ Ki kell jelölni egy elemet az előnézethez.
-
+ Ki kell jelölni egy élő adásba küldendő elemet.
-
+ Ki kell jelölni egy vagy több elemet.
-
+ Ki kell jelölni egy sorrend elemet, amihez hozzá szeretné adni.
-
+ Érvénytelen sorrend elem
-
+ Ki kell jelölni egy %s sorrend elemet.
-
+ Ki kell jelölni egy vagy több elemet a hozzáadáshoz.
-
+ Nincs találat
@@ -2798,12 +2837,12 @@ Az utótag nem támogatott
Importálás közben duplikált fájl bukkant elő, figyelmet kívül lett hagyva.
-
+ &Klónozás
-
+
@@ -2958,12 +2997,12 @@ Az utótag nem támogatott
OpenLP.ServiceItem
-
+ <strong>Kezdés</strong>: %s
-
+ <strong>Hossz</strong>: %s
@@ -2979,209 +3018,209 @@ Az utótag nem támogatott
OpenLP.ServiceManager
-
+ Mozgatás &felülre
-
+ Elem mozgatása a sorrend elejére.
-
+ Mozgatás f&eljebb
-
+ Elem mozgatása a sorrendben eggyel feljebb.
-
+ Mozgatás &lejjebb
-
+ Elem mozgatása a sorrendben eggyel lejjebb.
-
+ Mozgatás &alulra
-
+ Elem mozgatása a sorrend végére.
-
+ &Törlés a sorrendből
-
+ Kijelölt elem törlése a sorrendből.
-
+ Új elem &hozzáadása
-
+ &Hozzáadás a kijelölt elemhez
-
+ &Elem szerkesztése
-
+ Elem újra&rendezése
-
+ &Jegyzetek
-
+ Elem témájának &módosítása
-
+ OpenLP sorrend fájlok (*.osz)
-
+ A fájl nem érvényes sorrend.
A tartalom kódolása nem UTF-8.
-
+ A fájl nem érvényes sorrend.
-
+ Hiányzó képernyő kezelő
-
+ Az elemet nem lehet megjeleníteni, mert nincs kezelő, amely megjelenítené
-
+ Az elemet nem lehet megjeleníteni, mert a bővítmény, amely kezelné, hiányzik vagy inaktív
-
+ Mind &kibontása
-
+ Minden sorrend elem kibontása.
-
+ Mind össze&csukása
-
+ Minden sorrend elem összecsukása.
-
+ A kiválasztás lejjebb mozgatja az ablakot.
-
+ Mozgatás feljebb
-
+ A kiválasztás feljebb mozgatja az ablakot.
-
+ Élő adásba
-
+ A kiválasztott elem élő adásba küldése.
-
+ &Kezdő időpont
-
+ &Előnézet megjelenítése
-
+ Élő &adás megjelenítése
-
+ Fájl megnyitása
-
+ Módosított sorrend
-
+ Az aktuális sorrend módosult. Szeretnéd elmenteni?
-
+ A fájl nem nyitható meg, mivel sérült.
-
+ Üres fájl
-
+ A szolgálati sorrend fájl nem tartalmaz semmilyen adatot.
-
+ Sérült fájl
@@ -3201,42 +3240,42 @@ A tartalom kódolása nem UTF-8.
Lejátszási idő:
-
+ Névnélküli szolgálat
-
+ Egy meglévő szolgálati sorrend betöltése.
-
+ Sorrend mentése.
-
+ Jelöljön ki egy témát a sorrendhez.
-
+ A fájl vagy sérült vagy nem egy OpenLP 2.0 szolgálati sorrend fájl.
-
+ Hiányzó sorrend fájl
-
+ Dia téma
-
+ Jegyzetek
@@ -3363,17 +3402,17 @@ A tartalom kódolása nem UTF-8.
Következő dia
-
+ Előző sorrend
-
+ Következő sorrend
-
+ Kilépés az elemből
@@ -3417,6 +3456,11 @@ A tartalom kódolása nem UTF-8.
Médialejátszás indítása.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4654,17 +4698,17 @@ A tartalom kódolása nem UTF-8.
Bemutatók (%s)
-
+ Hiányzó bemutató
-
+ A(z) %s bemutató hiányos, újra kell tölteni.
-
+ A(z) %s bemutató már nem létezik.
@@ -5239,7 +5283,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért.
Adminisztrálta: %s
-
+
@@ -5251,177 +5295,177 @@ EasyWorshipbőlkerültek importálásra]
SongsPlugin.EditSongForm
-
+ Dalszerkesztő
-
+ &Cím:
-
+ &Alternatív cím:
-
+ &Dalszöveg:
-
+ Versszak &sorrend:
-
+ &Összes szerkesztése
-
+ Cím és dalszöveg
-
+ &Hozzáadás
-
+ &Eltávolítás
-
+ Szerzők, témakörök, énekeskönyvek &kezelése
-
+ H&ozzáadás
-
+ &Eltávolítás
-
+ Könyv:
-
+ Szám:
-
+ Szerzők, témakörök és énekeskönyvek
-
+ Új &téma
-
+ Szerzői jogi információ
-
+ Megjegyzések
-
+ Téma, szerzői jog és megjegyzések
-
+ Szerző hozzáadása
-
+ Ez a szerző még nem létezik, valóban hozzá kívánja adni?
-
+ A szerző már benne van a listában.
-
+ Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints a Hozzáadás gombra a szerző megjelöléséhez.
-
+ Témakör hozzáadása
-
+ Ez a témakör még nem létezik, szeretnéd hozzáadni?
-
+ A témakör már benne van a listában.
-
+ Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Hozzáadás gombraa témakör megjelöléséhez.
-
+ Add meg a dal címét.
-
+ Legalább egy versszakot meg kell adnod.
-
+ Figyelmeztetés
-
+ A versszaksorrend hibás. Nincs ilyen versszak: %s. Az érvényes elemek ezek: %s.
-
+ Ez a versszak sehol nem lett megadva a sorrendben: %s. Biztosan így kívánod elmenteni a dalt?
-
+ Könyv hozzáadása
-
+ Ez az énekeskönyv még nem létezik, szeretnéd hozzáadni a listához?
-
+ Egy szerzőt meg kell adnod ehhez a dalhoz.
@@ -5430,6 +5474,31 @@ EasyWorshipbőlkerültek importálásra]
Meg kell adnod a versszak szövegét.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5650,42 +5719,55 @@ EasyWorshipbőlkerültek importálásra]
Az általános dokumentum, ill. bemutató importáló le lett tiltva, mivel az OpenLP nem talál OpenOffice-t vagy LibreOffice-t a számítógépen.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Címek
-
+ Dalszöveg
-
+ CCLI licenc:
-
+ Teljes dal
-
+ Törölhetők a kijelölt dalok: %n?
-
+ Szerzők, témakörök, könyvek listájának kezelése.
-
+ For song cloningmásolás
@@ -5694,7 +5776,7 @@ EasyWorshipbőlkerültek importálásra]
SongsPlugin.OpenLP1SongImport
-
+ Ez nem egy openlp.org 1.x daladatbázis.
@@ -5759,12 +5841,12 @@ EasyWorshipbőlkerültek importálásra]
SongsPlugin.SongImport
-
+ szerzői jog
-
+ A következő dalok nem importálhatók:
diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts
index 9b4eac07b..69298a863 100644
--- a/resources/i18n/id.ts
+++ b/resources/i18n/id.ts
@@ -1429,39 +1429,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Pilih Gambar
-
+ Pilih sebuah gambar untuk dihapus.
-
+ Pilih sebuah gambar untuk menggantikan latar.
-
+ Gambar Tidak Ditemukan
-
+ Gambar berikut tidak ada lagi: %s
-
+ Gambar berikut tidak ada lagi: %s
Ingin tetap menambah gambar lain?
-
+ Ada masalah dalam mengganti latar, berkas gambar "%s" tidak ada lagi.
-
+
@@ -1588,7 +1588,7 @@ Ingin tetap menambah gambar lain?
Pilih Media
-
+ Pilih sebuah berkas media untuk dihapus.
@@ -1603,12 +1603,12 @@ Ingin tetap menambah gambar lain?
Ada masalah dalam mengganti latar, berkas media "%s" tidak ada lagi.
-
+ Berkas Media hilang
-
+ Berkas %s tidak ada lagi.
@@ -1622,6 +1622,16 @@ Ingin tetap menambah gambar lain?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2143,17 +2153,17 @@ Mohon gunakan bahasa Inggris untuk laporan kutu.
OpenLP.FirstTimeWizard
-
+ Mengunduh %s...
-
+ Unduhan selesai. Klik tombol selesai untuk memulai OpenLP.
-
+ Mengaktifkan plugin terpilih...
@@ -2239,49 +2249,49 @@ Mohon gunakan bahasa Inggris untuk laporan kutu.
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Koneksi Internet tidak ditemukan. Wisaya Kali Pertama butuh sambungan Internet untuk mengunduh contoh lagu, Alkitab, dan tema.
+ Koneksi Internet tidak ditemukan. Wisaya Kali Pertama butuh sambungan Internet untuk mengunduh contoh lagu, Alkitab, dan tema.
Untuk menjalankan lagi Wisaya Kali Pertama dan mengimpor contoh data, tekan batal, cek koneksi Internet, dan mulai ulang OpenLP.
Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
-
+ Contoh Lagu
-
+ Pilih dan unduh lagu domain bebas.
-
+ Contoh Alkitab
-
+ Pilih dan unduh Alkitab gratis
-
+ Contoh Tema
-
+ Pilih dan unduh contoh Tema
-
+ Pengaturan Bawaan
-
+ Atur pengaturan bawaan pada OpenLP.
@@ -2296,17 +2306,17 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.Mohon tunggu selama OpenLP diatur dan data diimpor.
-
+ Tampilan keluaran bawaan:
-
+ Pilih tema bawaan:
-
+ Memulai proses konfigurasi...
@@ -2316,22 +2326,22 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
-
+
-
+
-
+
-
+
@@ -2341,15 +2351,34 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.FormattingTagDialog
@@ -2523,130 +2552,140 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
OpenLP.GeneralTab
-
+ Umum
-
+ Monitor
-
+ Pilih monitor untuk tampilan keluaran:
-
+ Tampilkan jika layar tunggal
-
+ Awal Mulai Aplikasi
-
+ Tampilkan peringatan layar kosong
-
+ Buka layanan terakhir secara otomatis
-
+ Tampilkan logo di awal
-
+ Pengaturan Aplikasi
-
+ Coba simpan sebelum memulai pelayanan baru
-
+ Pratinjau item selanjutnya pada sevice
-
+ sec
-
+ Detail CCLI
-
+ Nama pengguna SongSelect:
-
+ Sandi-lewat SongSelect:
-
+ Posisi Tampilan
-
+ X
-
+ Y
-
+ Tinggi
-
+ Lebar
-
+ Timpa posisi tampilan
-
+ Cek pembaruan untuk OpenLP
-
+ Jangan kosongkan layar saat menambah butir tayang baru
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2664,7 +2703,7 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
OpenLP.MainDisplay
-
+ Tampilan OpenLP
@@ -2952,7 +2991,7 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.
Pasang mode tampilan ke Tayang.
-
+
@@ -2961,17 +3000,17 @@ You can download the latest version from http://openlp.org/.
Versi terbaru dapat diunduh dari http://openlp.org/.
-
+ Versi OpenLP Terbarui
-
+ Tampilan Utama OpenLP Kosong
-
+ Tampilan Utama telah dikosongkan
@@ -3062,12 +3101,12 @@ Versi terbaru dapat diunduh dari http://openlp.org/.
-
+
-
+
@@ -3079,13 +3118,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3110,12 +3149,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Buka Berkas
-
+
-
+
-
+
-
+
-
+
@@ -3157,7 +3196,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3169,7 +3208,7 @@ Database: %s
-
+
@@ -3179,7 +3218,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Tidak Ada Barang yang Terpilih
@@ -3189,32 +3228,32 @@ Database: %s
T&ambahkan ke dalam Butir Layanan
-
+ Anda harus memilih satu atau beberapa butir untuk dipratilik.
-
+ Anda harus memilih satu atau beberapa butir untuk ditayangkan.
-
+ Anda harus memilih satu atau beberapa butir.
-
+ Anda harus memilih butir layanan yang ada untuk ditambahkan.
-
+ Butir Layanan Tidak Sahih
-
+ Anda harus memilih sebuah butir layanan %s.
@@ -3226,17 +3265,17 @@ Filename already exists in list
Nama berkas sudah ada di daftar.
-
+
-
+
-
+
@@ -3252,7 +3291,7 @@ Suffix not supported
-
+
@@ -3417,12 +3456,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3438,209 +3477,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Pindahkan ke punc&ak
-
+ Pindahkan butir ke puncak daftar layanan.
-
+ Pindahkan ke a&tas
-
+ Naikkan butir satu posisi pada daftar layanan.
-
+ Pindahkan ke &bawah
-
+ Turunkan butir satu posisi pada daftar layanan.
-
+ Pindahkan ke &kaki
-
+ Pindahkan butir ke kaki daftar layanan.
-
+ Hapus &dari Layanan
-
+ Hapus butir terpilih dari layanan,
-
+ T&ambahkan Butir Baru
-
+ T&ambahkan ke Butir Terpilih
-
+ &Sunting Butir
-
+ Atu&r Ulang Butir
-
+ Catata&n
-
+ &Ubah Tema
-
+ Berkas Layanan OpenLP (*.osz)
-
+ Berkas bukan berupa layanan.
Isi berkas tidak berupa UTF-8.
-
+ Berkas bukan layanan sahih.
-
+ Penangan Tayang hilang
-
+ Butir tidak dapat ditayangkan karena tidak ada penangan untuk menayangkannya.
-
+
-
+
-
+
-
+
-
+
-
+ Buka Berkas
-
+
-
+
-
+
-
+ Tayangkan
-
+ Tayangkan butir terpilih.
-
+
-
+
-
+ Tampi&lkan Tayang
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3660,42 +3699,42 @@ Isi berkas tidak berupa UTF-8.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3822,17 +3861,17 @@ Isi berkas tidak berupa UTF-8.
-
+
-
+
-
+
@@ -3876,6 +3915,11 @@ Isi berkas tidak berupa UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5112,17 +5156,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -5694,7 +5738,7 @@ The encoding is responsible for the correct character representation.
-
+
@@ -5704,177 +5748,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+
-
+ &Judul:
-
+
-
+
-
+
-
+ Sun&ting Semua
-
+
-
+
-
+
-
+
-
+
-
+
-
+ Kitab:
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5883,6 +5927,31 @@ The encoding is responsible for the correct character representation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6098,42 +6167,55 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+
-
+
-
+
-
+
-
+
-
+
-
+ For song cloning
@@ -6142,7 +6224,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -6202,12 +6284,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+
-
+
diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts
index fc6a83b56..222b4cd92 100644
--- a/resources/i18n/ja.ts
+++ b/resources/i18n/ja.ts
@@ -1434,39 +1434,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
画像を選択
-
+ 削除する画像を選択してください。
-
+ 置き換える画像を選択してください。
-
+ 画像が見つかりません
-
+ 以下の画像は既に存在しません
-
+ 以下の画像は既に存在しません:%s
それでも他の画像を追加しますか?
-
+ 背景画像を置換する際に問題が発生しました。画像ファイル"%s"が存在しません。
-
+
@@ -1593,17 +1593,17 @@ Do you want to add the other images anyway?
メディア選択
-
+ 削除するメディアファイルを選択してください。
-
+ メディアファイルが見つかりません
-
+ ファイル %s が見つかりません。
@@ -1627,6 +1627,16 @@ Do you want to add the other images anyway?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2266,17 +2276,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ ダウンロード中 %s...
-
+ ダウンロードが完了しました。完了をクリックすると、OpenLPが開始します。
-
+ 選択されたプラグインを有効化しています...
@@ -2362,49 +2372,49 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- インターネット接続が見つかりませんでした。初回起動ウィザードは、サンプルとなる聖書、テーマ、賛美データを取得するためにインターネット接続を必要とします。
+ インターネット接続が見つかりませんでした。初回起動ウィザードは、サンプルとなる聖書、テーマ、賛美データを取得するためにインターネット接続を必要とします。
初回起動ウィザードを後で再実行しサンプルをインポートしたい場合は、キャンセルボタンをクリックし、インターネット接続を確認してから、OpenLPを再起動してください。P.
初回起動ウィザードを完全にキャンセルする場合は、終了ボタンを押下してください。
-
+ サンプル賛美
-
+ パブリックドメインの賛美を選択する事でダウンロードできます。
-
+ サンプル聖書
-
+ 以下のフリー聖書を選択する事でダウンロードできます。
-
+ サンプル外観テーマ
-
+ サンプル外観テーマを選択する事でダウンロードできます。
-
+ 既定設定
-
+ 既定設定がOpenLPに使われるようにセットアップします。
@@ -2419,17 +2429,17 @@ To cancel the First Time Wizard completely, press the finish button now.OpenLPがセットアップされ、あなたのデータがインポートされるまでお待ち下さい。
-
+ 既定出力先:
-
+ 既定外観テーマを選択:
-
+ 設定処理を開始しています...
@@ -2439,22 +2449,22 @@ To cancel the First Time Wizard completely, press the finish button now.このウィザードで、OpenLPを初めて使用する際の設定をします。次へをクリックして開始してください。
-
+ 設定とダウンロード中
-
+ OpenLPがセットアップされ、あなたのデータがインポートされるまでお待ち下さい。
-
+ 設定中
-
+ 完了をクリックすると、OpenLPが開始します。
@@ -2464,15 +2474,34 @@ To cancel the First Time Wizard completely, press the finish button now.カスタムスライド
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 終了
+ OpenLP.FormattingTagDialog
@@ -2646,130 +2675,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+ 一般
-
+ モニタ
-
+ 画面出力に使用するスクリーン:
-
+ スクリーンが1つしかなくても表示する
-
+ アプリケーションの起動
-
+ 警告中には、ブランク画面を表示する
-
+ 自動的に前回の礼拝プログラムを開く
-
+ スプラッシュスクリーンを表示
-
+ アプリケーションの設定
-
+ 新しい礼拝プログラムを開く前に保存を確認する
-
+ 自動的に次の項目をプレビューする
-
+ 秒
-
+ CCLI詳細
-
+ SongSelect ユーザー名:
-
+ SongSelect パスワード:
-
+ 表示位置
-
+ X
-
+ Y
-
+ 高
-
+ 幅
-
+ 表示位置を変更する
-
+ OpenLPのバージョン更新の確認
-
+ ライブ項目の追加時にブランクを解除
-
+ スライドの最後から最初に戻る
-
+ 時間付きスライドの間隔:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2787,7 +2826,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+ OpenLP ディスプレイ
@@ -3075,7 +3114,7 @@ To cancel the First Time Wizard completely, press the finish button now.表示モードをライブにします。
-
+
@@ -3084,17 +3123,17 @@ You can download the latest version from http://openlp.org/.
http://openlp.org/から最新版がダウンロード可能です。
-
+ OpenLPのバージョンアップ完了
-
+ OpenLPのプライマリディスプレイがブランクです
-
+ OpenLPのプライマリディスプレイがブランクになりました
@@ -3185,12 +3224,12 @@ http://openlp.org/から最新版がダウンロード可能です。
-
+
-
+
@@ -3202,13 +3241,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3233,12 +3272,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ ファイルを開く
-
+
-
+
-
+
-
+
-
+
@@ -3280,7 +3319,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3292,7 +3331,7 @@ Database: %s
-
+
@@ -3302,7 +3341,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ 項目の選択がありません
@@ -3312,32 +3351,32 @@ Database: %s
選択された礼拝項目を追加(&A
-
+ プレビューを見るには、一つ以上の項目を選択してください。
-
+ ライブビューを見るには、一つ以上の項目を選択してください。
-
+ 一つ以上の項目を選択してください。
-
+ 追加するには、既存の礼拝項目を選択してください。
-
+ 無効な礼拝項目
-
+ %sの項目を選択してください。
@@ -3349,12 +3388,12 @@ Filename already exists in list
このファイル名は既にリストに存在します
-
+ 追加するには、一つ以上の項目を選択してください。
-
+ 見つかりませんでした
@@ -3366,7 +3405,7 @@ This filename is already in the list
このファイル名は既に一覧に存在します。
-
+
@@ -3382,7 +3421,7 @@ Suffix not supported
-
+
@@ -3547,12 +3586,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3568,209 +3607,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ 一番上に移動(&t)
-
+ 選択した項目を最も上に移動する。
-
+ 一つ上に移動(&u)
-
+ 選択した項目を1つ上に移動する。
-
+ 一つ下に移動(&d)
-
+ 選択した項目を1つ下に移動する。
-
+ 一番下に移動(&b)
-
+ 選択した項目を最も下に移動する。
-
+ 削除(&D)
-
+ 選択した項目を礼拝プログラムから削除する。
-
+ 新しい項目を追加(&A)
-
+ 選択された項目を追加(&A)
-
+ 項目の編集(&E)
-
+ 項目を並べ替え(&R)
-
+ メモ(&N)
-
+ 項目の外観テーマを変更(&C)
-
+ 礼拝プログラムファイルが有効でありません。
エンコードがUTF-8でありません。
-
+ 礼拝プログラムファイルが有効でありません。
-
+ ディスプレイハンドラが見つかりません
-
+ ディスプレイハンドラが見つからないため項目を表示する事ができません
-
+ 必要なプラグインが見つからないか無効なため、項目を表示する事ができません
-
+ すべて展開(&E)
-
+ 全ての項目を展開する。
-
+ すべて折り畳む(&C)
-
+ 全ての項目を折り畳みます。
-
+ ファイルを開く
-
+ OpenLP 礼拝プログラムファイル (*.osz)
-
+ 選択をウィンドウの下に移動する。
-
+ 上に移動
-
+ 選択をウィンドウの上に移動する。
-
+ ライブへ送る
-
+ 選択された項目をライブ表示する。
-
+ 礼拝プログラムの編集
-
+ 開始時間(&S)
-
+ プレビュー表示(&P)
-
+ ライブ表示(&L)
-
+ 現在の礼拝プログラムは、編集されています。保存しますか?
-
+ ファイルが破損しているため開けません。
-
+ 空のファイル
-
+ この礼拝プログラムファイルは空です。
-
+ 破損したファイル
@@ -3790,7 +3829,7 @@ The content encoding is not UTF-8.
再生時間:
-
+ 無題
@@ -3800,37 +3839,37 @@ The content encoding is not UTF-8.
このファイルは破損しているかOpenLP 2.0の礼拝プログラムファイルではありません。
-
+ 既存の礼拝プログラムを読み込みます。
-
+ 礼拝プログラムを保存します。
-
+ 礼拝プログラムの外観テーマを選択します。
-
+ このファイルは破損しているかOpenLP 2.0の礼拝プログラムファイルではありません。
-
+
-
+
-
+
@@ -3962,17 +4001,17 @@ The content encoding is not UTF-8.
次スライド
-
+ 前の礼拝プログラム
-
+ 次の礼拝プログラム
-
+ 項目をエスケープ
@@ -4026,6 +4065,11 @@ The content encoding is not UTF-8.
メディアの再生を開始する。
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5340,17 +5384,17 @@ The content encoding is not UTF-8.
プレゼンテーション (%s)
-
+ 不明なプレゼンテーション
-
+ プレゼンテーション%sが見つかりません。
-
+ プレゼンテーション%sは不完全です。再度読み込んでください。
@@ -5959,7 +6003,7 @@ The encoding is responsible for the correct character representation.
%s によって管理されています
-
+
@@ -5969,177 +6013,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+ ソングエディタ
-
+ タイトル(&T):
-
+ サブタイトル(&e):
-
+ 賛美詞(&L):
-
+ 節順(&V):
-
+ 全て編集(&E)
-
+ タイトル && 賛美詞
-
+ 賛美に追加(&A)
-
+ 削除(&R)
-
+ アーティスト、題目、アルバムを管理(&M)
-
+ 賛美に追加(&A)
-
+ 削除(&e)
-
+ 書名:
-
+ ナンバー:
-
+ アーティスト、題目 && アルバム
-
+ 新しい外観テーマ(&N)
-
+ 著作権情報
-
+ コメント
-
+ 外観テーマ、著作情報 && コメント
-
+ アーティストを追加
-
+ アーティストが存在しません。追加しますか?
-
+ 既にアーティストは一覧に存在します。
-
+ 有効なアーティストを選択してください。一覧から選択するか新しいアーティストを入力し、"賛美にアーティストを追加"をクリックしてください。
-
+ トピックを追加
-
+ このトピックは存在しません。追加しますか?
-
+ このトピックは既に存在します。
-
+ 有効なトピックを選択してください。一覧から選択するか新しいトピックを入力し、"賛美にトピックを追加"をクリックしてください。
-
+ 賛美のタイトルを入力する必要があります。
-
+ 最低一つのバースを入力する必要があります。
-
+ 警告
-
+ バース順序が無効です。%sに対応するバースはありません。%sは有効です。
-
+ %sはバース順序で使われていません。本当にこの賛美を保存しても宜しいですか?
-
+ アルバムを追加
-
+ アルバムが存在しません、追加しますか?
-
+ アーティストを入力する必要があります。
@@ -6148,6 +6192,31 @@ The encoding is responsible for the correct character representation.
バースにテキストを入力する必要があります。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6388,15 +6457,28 @@ The encoding is responsible for the correct character representation.
OpenOfficeまたはLibreOfficeに接続できないため、汎用ドキュメント/プレゼンテーションのインポート機能は無効になっています。
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ タイトル
-
+ 賛美詞
@@ -6406,29 +6488,29 @@ The encoding is responsible for the correct character representation.
これらの賛美を削除しますか?
-
+ CCLI ライセンス:
-
+ 賛美全体
-
+ 選択された%n件の賛美を削除します。宜しいですか?
-
+ アーティスト、トピックとアルバムの一覧を保守します。
-
+ For song cloning
@@ -6437,7 +6519,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+ 有効なopenlp.org v1.xデータベースではありません。
@@ -6502,12 +6584,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+ 著作権
-
+ 以下の賛美はインポートできませんでした:
diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts
index d47154c3c..6480fc576 100644
--- a/resources/i18n/ko.ts
+++ b/resources/i18n/ko.ts
@@ -1117,38 +1117,38 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1240,17 +1240,17 @@ Do you want to add the other images anyway?
-
+
-
+
-
+
@@ -1274,6 +1274,16 @@ Do you want to add the other images anyway?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1645,17 +1655,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+
-
+
-
+
@@ -1730,66 +1740,57 @@ Version: %s
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1799,22 +1800,22 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -1824,15 +1825,34 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.FormattingTagDialog
@@ -2006,130 +2026,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2147,7 +2177,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+
@@ -2435,24 +2465,24 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -2533,12 +2563,12 @@ You can download the latest version from http://openlp.org/.
-
+
-
+
@@ -2550,13 +2580,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -2581,12 +2611,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2628,7 +2658,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -2640,7 +2670,7 @@ Database: %s
-
+
@@ -2650,7 +2680,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+
@@ -2660,47 +2690,47 @@ Database: %s
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2716,7 +2746,7 @@ Suffix not supported
-
+
@@ -2871,12 +2901,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -2892,208 +2922,208 @@ Suffix not supported
OpenLP.ServiceManager
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3113,42 +3143,42 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3275,17 +3305,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -3329,6 +3359,11 @@ The content encoding is not UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4565,17 +4600,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -5147,7 +5182,7 @@ The encoding is responsible for the correct character representation.
-
+
@@ -5157,177 +5192,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5336,6 +5371,31 @@ The encoding is responsible for the correct character representation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5551,42 +5611,55 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+
-
+
-
+
-
+
-
+
-
+
-
+ For song cloning
@@ -5595,7 +5668,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -5655,12 +5728,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+
-
+
diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts
index a8e666bd8..def2553f4 100644
--- a/resources/i18n/nb.ts
+++ b/resources/i18n/nb.ts
@@ -1259,39 +1259,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Velg bilde(r)
-
+ Du må velge et bilde å slette.
-
+ Du må velge et bilde å erstatte bakgrunnen med.
-
+ Bilde(r) mangler
-
+ De følgende bilde(r) finnes ikke lenger: %s
-
+ De følgende bilde(r) finnes ikke lenger: %s
Vil du likevel legge til de andre bildene?
-
+ Det oppstod et problem ved erstatting av bakgrunnen, bildefilen "%s" finnes ikke lenger.
-
+
@@ -1383,17 +1383,17 @@ Vil du likevel legge til de andre bildene?
Velg fil
-
+ Du må velge en fil å slette
-
+ Fil mangler
-
+ Filen %s finnes ikke lenger
@@ -1417,6 +1417,16 @@ Vil du likevel legge til de andre bildene?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1848,17 +1858,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+
-
+
-
+
@@ -1933,66 +1943,57 @@ Version: %s
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2002,22 +2003,22 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -2027,15 +2028,34 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.FormattingTagDialog
@@ -2209,130 +2229,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+ Generell
-
+
-
+ Velg hvilken skjerm som skal brukes til fremvisning:
-
+
-
+ Programoppstart
-
+
-
+ Åpne forrige møteplan automatisk
-
+
-
+ Programinnstillinger
-
+
-
+
-
+
-
+ CCLI-detaljer
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2350,7 +2380,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+
@@ -2638,24 +2668,24 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+ OpenLP versjonen har blitt oppdatert
-
+
-
+
@@ -2736,12 +2766,12 @@ You can download the latest version from http://openlp.org/.
-
+
-
+
@@ -2753,13 +2783,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -2784,12 +2814,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2831,7 +2861,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -2843,7 +2873,7 @@ Database: %s
-
+
@@ -2853,7 +2883,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+
@@ -2863,47 +2893,47 @@ Database: %s
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2919,7 +2949,7 @@ Suffix not supported
-
+
@@ -3074,12 +3104,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3095,208 +3125,208 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Flytt til &toppen
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+ &Notis
-
+ &Bytt objekttema
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3316,42 +3346,42 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3478,17 +3508,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -3532,6 +3562,11 @@ The content encoding is not UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4773,17 +4808,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -5355,7 +5390,7 @@ The encoding is responsible for the correct character representation.
-
+
@@ -5365,177 +5400,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+ Sangredigeringsverktøy
-
+ &Tittel:
-
+
-
+
-
+
-
+ Rediger alle
-
+ Tittel && Sangtekst
-
+
-
+ &Fjern
-
+
-
+
-
+ &Fjern
-
+ Bok:
-
+
-
+
-
+
-
+ Copyright-informasjon
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5544,6 +5579,31 @@ The encoding is responsible for the correct character representation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5759,30 +5819,43 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titler
-
+
-
+
-
+
-
+
@@ -5790,12 +5863,12 @@ The encoding is responsible for the correct character representation.
-
+
-
+ For song cloning
@@ -5804,7 +5877,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -5864,12 +5937,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+
-
+
diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts
index 1e135c56f..dc7e83445 100644
--- a/resources/i18n/nl.ts
+++ b/resources/i18n/nl.ts
@@ -1437,39 +1437,39 @@ Let op, de bijbelverzen worden gedownload indien nodig en een internetverbinding
Selecteer afbeelding(en)
-
+ Selecteer een afbeelding om te verwijderen.
-
+ Selecteer een afbeelding om de achtergrond te vervangen.
-
+ Ontbrekende afbeelding(en)
-
+ De volgende afbeelding(en) ontbreken: %s
-
+ De volgende afbeelding(en) ontbreken: %s
De andere afbeeldingen alsnog toevoegen?
-
+ Achtergrond kan niet vervangen worden, omdat de afbeelding "%s" ontbreekt.
-
+
@@ -1596,17 +1596,17 @@ De andere afbeeldingen alsnog toevoegen?
Secteer media bestand
-
+ Selecteer een media bestand om te verwijderen.
-
+ Ontbrekend media bestand
-
+ Media bestand %s bestaat niet meer.
@@ -1630,6 +1630,16 @@ De andere afbeeldingen alsnog toevoegen?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2270,17 +2280,17 @@ Schrijf in het Engels, omdat de meeste programmeurs geen Nederlands spreken.
OpenLP.FirstTimeWizard
-
+ Downloaden %s...
-
+ Download compleet. Klik op afrond om OpenLP te starten.
-
+ Geselecteerde plugins inschakelen...
@@ -2366,49 +2376,49 @@ Schrijf in het Engels, omdat de meeste programmeurs geen Nederlands spreken.
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Geen internetverbinding gevonden. De Eerste Keer assistent heeft internet nodig om voorbeeld liederen, bijbels en thema's te downloaden.
+ Geen internetverbinding gevonden. De Eerste Keer assistent heeft internet nodig om voorbeeld liederen, bijbels en thema's te downloaden.
Om deze assistent de volgende keer te starten, klikt u nu annuleren, controleer uw verbinding en herstart OpenLP.
Om deze assistent over te slaan, klik op klaar.
-
+ Voorbeeld liederen
-
+ Selecteer en download liederen uit het publieke domein.
-
+ Voorbeeld bijbels
-
+ Selecteer en download (gratis) bijbels uit het publieke domein.
-
+ Voorbeeld thema's
-
+ Selecteer en download voorbeeld thema's.
-
+ Standaard instellingen
-
+ Stel standaardinstellingen in voor OpenLP.
@@ -2423,17 +2433,17 @@ Om deze assistent over te slaan, klik op klaar.Even geduld terwijl OpenLP de gegevens importeert.
-
+ Standaard weergave scherm:
-
+ Selecteer standaard thema:
-
+ Begin het configuratie proces...
@@ -2443,22 +2453,22 @@ Om deze assistent over te slaan, klik op klaar.
Deze assistent helpt u bij het instellen van OpenLP voor het eerste gebruik. Klik op volgende om te beginnen.
-
+ Instellen en downloaden
-
+ Even geduld terwijl OpenLP ingesteld wordt en de voorbeeldgegevens worden gedownload.
-
+ Instellen
-
+ Klik op afronden om OpenLP te starten.
@@ -2468,15 +2478,34 @@ Om deze assistent over te slaan, klik op klaar.
Aangepaste dia’s
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eind
+ OpenLP.FormattingTagDialog
@@ -2650,130 +2679,140 @@ Om deze assistent over te slaan, klik op klaar.
OpenLP.GeneralTab
-
+ Algemeen
-
+ Beeldschermen
-
+ Projectiescherm:
-
+ Weergeven bij enkel scherm
-
+ Programma start
-
+ Toon zwart scherm waarschuwing
-
+ Automatisch laatste liturgie openen
-
+ Toon splash screen
-
+ Programma instellingen
-
+ Waarschuw om werk op te slaan bij het beginnen van een nieuwe liturgie
-
+ Automatisch volgend onderdeel van liturgie tonen
-
+ sec
-
+ CCLI-details
-
+ SongSelect gebruikersnaam:
-
+ SongSelect wachtwoord:
-
+ Weergave positie
-
+ X
-
+ Y
-
+ Hoogte
-
+ Breedte
-
+ Overschrijf scherm positie
-
+ Controleer op updates voor OpenLP
-
+ Zwart scherm uitschakelen als er een nieuw live item wordt toegevoegd
-
+ Doorlopende voorstelling aan
-
+ Tijd tussen dia’s:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2791,7 +2830,7 @@ Om deze assistent over te slaan, klik op klaar.
OpenLP.MainDisplay
-
+ OpenLP Weergave
@@ -3079,17 +3118,17 @@ Om deze assistent over te slaan, klik op klaar.
Weergave modus naar Live.
-
+ Nieuwe OpenLP versie beschikbaar
-
+ OpenLP projectie op zwart
-
+ Projectie is uitgeschakeld: scherm staat op zwart
@@ -3099,7 +3138,7 @@ Om deze assistent over te slaan, klik op klaar.
Standaardthema: %s
-
+
@@ -3189,12 +3228,12 @@ U kunt de laatste versie op http://openlp.org/ downloaden.
-
+
-
+
@@ -3206,13 +3245,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3237,12 +3276,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Open bestand
-
+
-
+
-
+
-
+
-
+
@@ -3284,7 +3323,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3296,7 +3335,7 @@ Database: %s
-
+
@@ -3306,7 +3345,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Niets geselecteerd
@@ -3316,32 +3355,32 @@ Database: %s
&Voeg selectie toe aan de liturgie
-
+ Selecteer een of meerdere onderdelen om voorbeeld te laten zien.
-
+ Selecteer een of meerdere onderdelen om Live te tonen.
-
+ Selecteer een of meerdere onderdelen.
-
+ Selecteer een liturgie om deze onderdelen aan toe te voegen.
-
+ Ongeldige Liturgie onderdeel
-
+ Selecteer een %s liturgie onderdeel.
@@ -3353,12 +3392,12 @@ Filename already exists in list
Deze bestandsnaam staat als in de lijst
-
+ Selecteer een of meerdere onderdelen om toe te voegen.
-
+ Niets gevonden
@@ -3370,7 +3409,7 @@ This filename is already in the list
Deze bestandsnaam staat al in de lijst
-
+
@@ -3386,7 +3425,7 @@ Suffix not supported
-
+
@@ -3551,12 +3590,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3572,209 +3611,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Bovenaan plaa&tsen
-
+ Plaats dit onderdeel bovenaan.
-
+ Naar b&oven
-
+ Verplaats een plek naar boven.
-
+ Naar bene&den
-
+ Verplaats een plek naar beneden.
-
+ Onderaan &plaatsen
-
+ Plaats dit onderdeel onderaan.
-
+ Verwij&deren uit de liturgie
-
+ Verwijder dit onderdeel uit de liturgie.
-
+ &Voeg toe
-
+ &Voeg selectie toe
-
+ B&ewerk onderdeel
-
+ He&rschik onderdeel
-
+ Aa&ntekeningen
-
+ &Wijzig onderdeel thema
-
+ Geen geldig liturgie bestand.
Tekst codering is geen UTF-8.
-
+ Geen geldig liturgie bestand.
-
+ Ontbrekende weergave regelaar
-
+ Dit onderdeel kan niet weergegeven worden, omdat er een regelaar ontbreekt
-
+ Dit onderdeel kan niet weergegeven worden omdat de benodigde plugin ontbreekt of inactief is
-
+ Alles &uitklappen
-
+ Alle liturgie onderdelen uitklappen.
-
+ Alles &inklappen
-
+ Alle liturgie onderdelen inklappen.
-
+ Open bestand
-
+ OpenLP liturgie bestanden (*.osz)
-
+ Verplaatst de selectie naar boven.
-
+ Naar boven
-
+ Ga Live
-
+ Toon selectie Live.
-
+ Verplaatst de selectie naar beneden.
-
+ Gewijzigde liturgie
-
+ &Start Tijd
-
+ Toon &Voorbeeld
-
+ Toon &Live
-
+ De huidige liturgie is gewijzigd. Veranderingen opslaan?
-
+ Bestand kan niet worden geopend omdat het beschadigd is.
-
+ Leeg bestand
-
+ Deze liturgie bevat nog geen gegevens.
-
+ Corrupt bestand
@@ -3794,7 +3833,7 @@ Tekst codering is geen UTF-8.
Speeltijd:
-
+ Liturgie zonder naam
@@ -3804,37 +3843,37 @@ Tekst codering is geen UTF-8.
Dit bestand is beschadigd of geen OpenLP 2.0 liturgie bestand.
-
+ Laad een bestaande liturgie.
-
+ Deze liturgie opslaan.
-
+ Selecteer een thema voor de liturgie.
-
+ Dit bestand is beschadigd of geen OpenLP 2.0 liturgie bestand.
-
+
-
+
-
+
@@ -3966,17 +4005,17 @@ Tekst codering is geen UTF-8.
Volgende dia
-
+ Vorige liturgie
-
+ Volgende liturgie
-
+ Onderdeel annuleren
@@ -4030,6 +4069,11 @@ Tekst codering is geen UTF-8.
Speel media af.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5345,17 +5389,17 @@ Tekst codering is geen UTF-8.
Presentaties (%s)
-
+ Ontbrekende presentatie
-
+ De presentatie %s bestaat niet meer.
-
+ De presentatie %s is niet compleet, herladen aub.
@@ -5967,7 +6011,7 @@ Meestal voldoet de suggestie van OpenLP.
Beheerd door %s
-
+
@@ -5977,177 +6021,177 @@ Meestal voldoet de suggestie van OpenLP.
SongsPlugin.EditSongForm
-
+ Lied bewerker
-
+ &Titel:
-
+ Lied&tekst:
-
+ &Alles bewerken
-
+ Titel && Liedtekst
-
+ Voeg toe &aan lied
-
+ Ve&rwijderen
-
+ Voeg toe &aan lied
-
+ V&erwijderen
-
+ Nieuw &Thema
-
+ Copyright
-
+ Commentaren
-
+ Thema, Copyright && Commentaren
-
+ Voeg auteur toe
-
+ Deze auteur bestaat nog niet, toevoegen?
-
+ 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.
-
+ Voeg onderwerp toe
-
+ Dit onderwerp bestaat nog niet, toevoegen?
-
+ Geen geldig onderwerp geselecteerd. Kies een onderwerp uit de lijst of type een nieuw onderwerp en klik op "Nieuw onderwerp toevoegen".
-
+ Voeg boek toe
-
+ Dit liedboek bestaat nog niet, toevoegen?
-
+ Vul de titel van het lied in.
-
+ Vul minstens de tekst van één couplet in.
-
+ Waarschuwing
-
+ De volgorde van de coupletten klopt niet. Er is geen couplet dat overeenkomt met %s. Wel zijn %s beschikbaar.
-
+ U heeft %s nergens in de vers volgorde gebruikt. Weet u zeker dat u dit lied zo wilt opslaan?
-
+ Afwiss&elende titel:
-
+ &Vers volgorde:
-
+ &Beheer auteurs, onderwerpen, liedboeken
-
+ Auteurs, onderwerpen && liedboeken
-
+ Deze auteur staat al in de lijst.
-
+ Dit onderwerp staat al in de lijst.
-
+ Boek:
-
+ Nummer:
-
+ Iemand heeft dit lied geschreven.
@@ -6156,6 +6200,31 @@ Meestal voldoet de suggestie van OpenLP.
Er moet toch een tekst zijn om te zingen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6396,15 +6465,28 @@ Meestal voldoet de suggestie van OpenLP.
Algemeen document/presentatie import is uitgeschakeld omdat OpenLP OpenOffice.org niet kan vinden op deze computer.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titels
-
+ Liedtekst
@@ -6414,17 +6496,17 @@ Meestal voldoet de suggestie van OpenLP.
Wis lied(eren)?
-
+ CCLI Licentie:
-
+ Gehele lied
-
+ Weet u zeker dat u dit %n lied wilt verwijderen?
@@ -6432,12 +6514,12 @@ Meestal voldoet de suggestie van OpenLP.
-
+ Beheer de lijst met auteurs, onderwerpen en liedboeken.
-
+ For song cloning
@@ -6446,7 +6528,7 @@ Meestal voldoet de suggestie van OpenLP.
SongsPlugin.OpenLP1SongImport
-
+ Geen geldige openlp.org v1.x lied database.
@@ -6511,12 +6593,12 @@ Meestal voldoet de suggestie van OpenLP.
SongsPlugin.SongImport
-
+ copyright
-
+ De volgende liederen konden niet worden geïmporteerd:
diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts
index 10fbad74e..e0a037049 100644
--- a/resources/i18n/pt_BR.ts
+++ b/resources/i18n/pt_BR.ts
@@ -1437,39 +1437,39 @@ Observe, que versículos das Bíblias Internet serão transferidos sob demanda e
Selecionar Imagem(s)
-
+ Você precisa selecionar uma imagem para excluir.
-
+ Você precisa selecionar uma imagem para definir como plano de fundo.
-
+ Imagem(s) não encontrada(s)
-
+ A(s) seguinte(s) imagem(s) não existe(m) mais: %s
-
+ A(s) seguinte(s) imagem(s) não existe(m) mais: %s
Mesmo assim, deseja continuar adicionando as outras imagens?
-
+ Ocorreu um erro ao substituir o plano de fundo, o arquivo de imagem "%s" não existe.
-
+
@@ -1596,17 +1596,17 @@ Mesmo assim, deseja continuar adicionando as outras imagens?
Selecionar Mídia
-
+ Você deve selecionar um arquivo de mídia para apagar.
-
+ Arquivo de Mídia não encontrado
-
+ O arquivo %s não existe.
@@ -1630,6 +1630,16 @@ Mesmo assim, deseja continuar adicionando as outras imagens?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2268,17 +2278,17 @@ Agradecemos se for possível escrever seu relatório em inglês.
OpenLP.FirstTimeWizard
-
+ Transferindo %s...
-
+ Transferência finalizada. Clique no botão terminar para iniciar o OpenLP.
-
+ Habilitando os plugins selecionados...
@@ -2364,49 +2374,49 @@ Agradecemos se for possível escrever seu relatório em inglês.
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Nenhuma conexão com a internet foi encontrada. O Assistente de Primeiro Uso necessita de uma conexão com a internet para baixar exemplos de músicas, Bíblias e temas.
+ Nenhuma conexão com a internet foi encontrada. O Assistente de Primeiro Uso necessita de uma conexão com a internet para baixar exemplos de músicas, Bíblias e temas.
Para executar o assistente novamente mais tarde e importar os dados de exemplo, clique no botão cancelar, verifique a sua conexão com a internet e reinicie o OpenLP.
Para cancelar o assistente completamente, clique no botão finalizar.
-
+ Músicas de Exemplo
-
+ Selecione e baixe músicas de domínio público.
-
+ Bíblias de Exemplo
-
+ Selecione e baixe Bíblias gratuitas.
-
+ Temas de Exemplo
-
+ Selecione e baixe temas de exemplo.
-
+ Configurações Padrões
-
+ Configure os ajustes padrões que serão utilizados pelo OpenLP.
@@ -2421,17 +2431,17 @@ Para cancelar o assistente completamente, clique no botão finalizar.Por Favor aguarde enquanto o OpenLP é configurado e os seus dados importados.
-
+ Saída de projeção padrão:
-
+ Selecione o tema padrão:
-
+ Iniciando o processo de configuração...
@@ -2441,22 +2451,22 @@ Para cancelar o assistente completamente, clique no botão finalizar.Este assistente irá ajudá-lo na configuração do OpenLP para o uso inicial. Clique abaixo no botão avançar para começar.
-
+ Configurando e Transferindo
-
+ Por favor, aguarde enquanto o OpenLP é configurado e seus dados são transferidos.
-
+ Configurando
-
+ Clique o botão finalizar para iniciar o OpenLP.
@@ -2466,15 +2476,34 @@ Para cancelar o assistente completamente, clique no botão finalizar.Slides Personalizados
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fim
+ OpenLP.FormattingTagDialog
@@ -2648,130 +2677,140 @@ Para cancelar o assistente completamente, clique no botão finalizar.
OpenLP.GeneralTab
-
+ Geral
-
+ Monitores
-
+ Selecione um monitor para exibição:
-
+ Exibir em caso de tela única
-
+ Inicialização do Aplicativo
-
+ Exibir alerta de tela em branco
-
+ Abrir automaticamente o último culto
-
+ Exibir a tela de abertura
-
+ Configurações do Aplicativo
-
+ Perguntar sobre salvamento antes de iniciar um novo culto
-
+ Pré-visualizar automaticamente o próximo item no culto
-
+ seg
-
+ Detalhes de CCLI
-
+ Usuário SongSelect:
-
+ Senha do SongSelect:
-
+ Posição do Display
-
+ X
-
+ Y
-
+ Altura
-
+ Largura
-
+ Modificar posição do display
-
+ Procurar por atualizações do OpenLP
-
+ Ativar projeção ao adicionar um item novo
-
+ Habilitar repetição de slides
-
+ Intervalo temporizado de slide:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2789,7 +2828,7 @@ Para cancelar o assistente completamente, clique no botão finalizar.
OpenLP.MainDisplay
-
+ Saída do OpenLP
@@ -3077,7 +3116,7 @@ Para cancelar o assistente completamente, clique no botão finalizar.Configurar o modo de visualização como Ao Vivo.
-
+
@@ -3086,17 +3125,17 @@ You can download the latest version from http://openlp.org/.
Voce pode baixar a última versão em http://openlp.org/.
-
+ Versão do OpenLP Atualizada
-
+ Tela Principal do OpenLP desativada
-
+ A Tela Principal foi desativada
@@ -3187,12 +3226,12 @@ Voce pode baixar a última versão em http://openlp.org/.
-
+
-
+
@@ -3204,13 +3243,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -3235,12 +3274,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Abrir Arquivo
-
+
-
+
-
+
-
+
-
+
@@ -3282,7 +3321,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3294,7 +3333,7 @@ Database: %s
-
+
@@ -3304,7 +3343,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Nenhum Item Selecionado
@@ -3314,32 +3353,32 @@ Database: %s
&Adicionar ao Item de Ordem de Culto selecionado
-
+ Você deve selecionar um ou mais itens para pré-visualizar.
-
+ Você deve selecionar um ou mais itens para projetar.
-
+ Você deve selecionar um ou mais itens.
-
+ Você deve selecionar um item de culto existente ao qual adicionar.
-
+ Item de Culto inválido
-
+ Você deve selecionar um item de culto %s.
@@ -3351,12 +3390,12 @@ Filename already exists in list
O nome do arquivo já existe na lista
-
+ Você deve selecionar um ou mais itens para adicionar.
-
+ Nenhum Resultado de Busca
@@ -3368,7 +3407,7 @@ This filename is already in the list
Este nome de arquivo já está na lista
-
+
@@ -3384,7 +3423,7 @@ Suffix not supported
-
+
@@ -3549,12 +3588,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3570,209 +3609,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Mover para o &topo
-
+ Mover item para o topo do culto.
-
+ Mover para &cima
-
+ Mover item uma posição para cima no culto.
-
+ Mover para &baixo
-
+ Mover item uma posição para baixo no culto.
-
+ Mover para o &final
-
+ Mover item para o final do culto.
-
+ &Excluir do Culto
-
+ Excluir o item selecionado do culto.
-
+ &Adicionar um Novo Item
-
+ &Adicionar ao Item Selecionado
-
+ &Editar Item
-
+ &Reordenar Item
-
+ &Anotações
-
+ &Alterar Tema do Item
-
+ O arquivo não é um culto válida.
A codificação do conteúdo não é UTF-8.
-
+ Arquivo não é uma ordem de culto válida.
-
+ Faltando o Manipulador de Exibição
-
+ O seu item não pode ser exibido porque não existe um manipulador para exibí-lo
-
+ O item não pode ser exibido porque o plugin necessário para visualizá-lo está ausente ou está desativado
-
+ &Expandir todos
-
+ Expandir todos os itens do culto.
-
+ &Recolher todos
-
+ Recolher todos os itens do culto.
-
+ Abrir Arquivo
-
+ Arquivos de Culto do OpenLP (*.osz)
-
+ Move a seleção para baixo dentro da janela.
-
+ Mover para cima
-
+ Move a seleção para cima dentro da janela.
-
+ Projetar
-
+ Enviar o item selecionado para a Projeção.
-
+ Culto Modificado
-
+ &Horário Inicial
-
+ Exibir &Pré-visualização
-
+ Exibir &Projeção
-
+ O culto atual foi modificada. Você gostaria de salvar este culto?
-
+ Arquivo não pôde ser aberto porque está corrompido.
-
+ Arquivo vazio
-
+ Este arquivo de culto não contém dados.
-
+ Arquivo corrompido
@@ -3792,7 +3831,7 @@ A codificação do conteúdo não é UTF-8.
Duração:
-
+ Culto Sem Nome
@@ -3802,37 +3841,37 @@ A codificação do conteúdo não é UTF-8.
O arquivo está corrompido ou não é uma arquivo de culto OpenLP 2.0.
-
+ Carregar um culto existente.
-
+ Salvar este culto.
-
+ Selecionar um tema para o culto.
-
+ Este arquivo está corrompido ou não é um arquivo de culto do OpenLP 2.0.
-
+
-
+
-
+
@@ -3964,17 +4003,17 @@ A codificação do conteúdo não é UTF-8.
Slide Seguinte
-
+ Lista Anterior
-
+ Próxima Lista
-
+ Escapar Item
@@ -4028,6 +4067,11 @@ A codificação do conteúdo não é UTF-8.
Começar a reproduzir mídia.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -5343,17 +5387,17 @@ A codificação do conteúdo não é UTF-8.
Apresentações (%s)
-
+ Apresentação Não Encontrada
-
+ A Apresentação %s não existe mais.
-
+ A Apresentação %s está incompleta, por favor recarregue-a.
@@ -5965,7 +6009,7 @@ A codificação é responsável pela correta representação dos caracteres.Administrado por %s
-
+
@@ -5975,177 +6019,177 @@ A codificação é responsável pela correta representação dos caracteres.
SongsPlugin.EditSongForm
-
+ Editor de Músicas
-
+ &Título:
-
+ Título &Alternativo:
-
+ &Letra:
-
+ Ordem das &estrofes:
-
+ &Editar Todos
-
+ Título && Letra
-
+ &Adicionar à Música
-
+ &Remover
-
+ &Gerenciar Autores, Assuntos, Hinários
-
+ A&dicionar uma Música
-
+ R&emover
-
+ Hinário:
-
+ Número:
-
+ Autores, Assuntos && Hinários
-
+ Novo &Tema
-
+ Direitos Autorais
-
+ Comentários
-
+ Tema, Direitos Autorais && Comentários
-
+ Adicionar Autor
-
+ Este autor não existe, deseja adicioná-lo?
-
+ Este autor já está na lista.
-
+ 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.
-
+ Adicionar Assunto
-
+ Este assunto não existe, deseja adicioná-lo?
-
+ Este assunto já está na lista.
-
+ 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.
-
+ Você deve digitar um título para a música.
-
+ Você deve digitar ao menos um verso.
-
+ Aviso
-
+ A ordem das estrofes é inválida. Não há estrofe correspondente a %s. Valores válidos são %s.
-
+ Você não usou %s em nenhum lugar na ordem das estrofes. Deseja mesmo salvar a música assim?
-
+ Adicionar Hinário
-
+ Este hinário não existe, deseja adicioná-lo?
-
+ Você precisa ter um autor para esta música.
@@ -6154,6 +6198,31 @@ A codificação é responsável pela correta representação dos caracteres.You need to type some text in to the verse.
Você precisa digitar algum texto na estrofe.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -6394,15 +6463,28 @@ A codificação é responsável pela correta representação dos caracteres.A importação de documentos/apresentações genéricos foi desabilitada porque OpenLP não consegue acessar OpenOffice ou LibreOffice.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Títulos
-
+ Letras
@@ -6412,17 +6494,17 @@ A codificação é responsável pela correta representação dos caracteres.Excluir Música(s)?
-
+ Licença CCLI:
-
+ Música Inteira
-
+ Tem certeza de que quer excluir a(s) %n música(s) selecionada(s)?
@@ -6430,12 +6512,12 @@ A codificação é responsável pela correta representação dos caracteres.
-
+ Gerencia a lista de autores, tópicos e hinários.
-
+ For song cloning
@@ -6444,7 +6526,7 @@ A codificação é responsável pela correta representação dos caracteres.
SongsPlugin.OpenLP1SongImport
-
+ Não é uma base de dados de músicas válida do openlp.org 1.x.
@@ -6509,12 +6591,12 @@ A codificação é responsável pela correta representação dos caracteres.
SongsPlugin.SongImport
-
+ copyright
-
+ As seguintes músicas não puderam ser importadas:
diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts
index 383306a5b..82f9936e9 100644
--- a/resources/i18n/ru.ts
+++ b/resources/i18n/ru.ts
@@ -1238,39 +1238,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Выбрать Изображение(я)
-
+ Вы должны выбрать изображение для удаления.
-
+ Отсутствует изображение(я)
-
+ Следующие изображения больше не существуют: %s
-
+ Следующих изображений больше не существуют: %s
Добавить остальные изображения?
-
+ Вы должны выбрать изображение, которым следует заменить фон.
-
+ Возникла проблема при замене Фона проектора, файл "%s" больше не существует.
-
+ Отсутствует объект для изменений.
@@ -1372,17 +1372,17 @@ Do you want to add the other images anyway?
Возникла проблема замены фона, поскольку файл "%s" не найден.
-
+ Отсутствует медиа-файл
-
+ Файл %s не существует.
-
+ Вы должны выбрать медиа-файл для удаления.
@@ -1396,6 +1396,16 @@ Do you want to add the other images anyway?
Отсутствует объект для изменений.
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -2028,17 +2038,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+ Загрузка %s...
-
+ Загрузка завершена. Нажмите кнопку Завершить для запуска OpenLP.
-
+ Разрешение выбранных плагинов...
@@ -2119,64 +2129,64 @@ Version: %s
To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP.
To cancel the First Time Wizard completely, press the finish button now.
- Соединение с интернетом не было найдено. Для Мастера первого запуска необходимо наличие интернет-соединения чтобы загрузить образцы песен, Библию и темы.
+ Соединение с интернетом не было найдено. Для Мастера первого запуска необходимо наличие интернет-соединения чтобы загрузить образцы песен, Библию и темы.
Чтобы перезапустить Мастер первого запуска и импортировать данные позже, нажмите кнопку Отмена, проверьте интернет-соединение и перезапустите OpenLP.
Чтобы полностью отменить запуск Мастера первого запуска, нажмите кнопку Завершить.
-
+ Готовые сборники
-
+ Выберите и загрузите песни.
-
+ Библии
-
+ Выберите и загрузите Библии
-
+ Образцы тем
-
+ Выберите и загрузите темы.
-
+ Настройки по умолчанию
-
+ Установите настройки по умолчанию для использования в OpenLP.
-
+ Дисплей для показа по умолчанию:
-
+ Тема по умолчанию:
-
+ Запуск процесса конфигурирования...
@@ -2186,22 +2196,22 @@ To cancel the First Time Wizard completely, press the finish button now.Этот мастер поможет вам настроить OpenLP для первого использования. Чтобы приступить, нажмите кнопку Далее.
-
+ Настройка и загрузка
-
+ Пожалуйста, дождитесь пока OpenLP применит настройки и загрузит данные.
-
+ Настройка
-
+ Нажмите кнопку Завершить чтобы запустить OpenLP.
@@ -2211,15 +2221,34 @@ To cancel the First Time Wizard completely, press the finish button now.Специальные Слайды
-
+ Загрузка завершена. Нажмите кнопку Завершить, чтобы вернуться в OpenLP.
-
+ Нажмите кнопку Завершить для возврата в OpenLP.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Конец
+ OpenLP.FormattingTagDialog
@@ -2393,130 +2422,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+ Общие
-
+ Мониторы
-
+ Выберите монитор для показа:
-
+ Выполнять на одном экране
-
+ Запуск приложения
-
+ Показывать предупреждение об очистке экрана
-
+ Автоматически загружать последнее служение
-
+ Показывать заставку
-
+ Проверять обновления OpenLP
-
+ Настройки приложения
-
+ Запрос сохранения перед созданием нового служения
-
+ Автоматически просматривать следующий объект в служении
-
+ сек
-
+ Детали CCLI
-
+ SongSelect логин:
-
+ SongSelect пароль:
-
+ Положение дисплея
-
+ Х
-
+ Y
-
+ Высота
-
+ Ширина
-
+ Сместить положение показа
-
+ Снимать блокировку дисплея при добавлении нового объекта
-
+ Разрешить слайдам циклический переход
-
+ Интервал показа:
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2534,7 +2573,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+ Дисплей OpenLP
@@ -2827,7 +2866,7 @@ To cancel the First Time Wizard completely, press the finish button now.Установить вид в режим демонстрации.
-
+
@@ -2836,17 +2875,17 @@ You can download the latest version from http://openlp.org/.
Вы можете загрузить последнюю версию с http://openlp.org/.
-
+ Версия OpenLP обновлена
-
+ Главный дисплей OpenLP очищен
-
+ Главный дисплей был очищен
@@ -2922,12 +2961,12 @@ You can download the latest version from http://openlp.org/.
Перезапуск Мастера первого запуска, импорт песен, Библий и тем.
-
+ Перезапустить Мастер первого запуска?
-
+
@@ -2946,13 +2985,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
&Настроить теги форматирования...
-
+ Clear List of recent filesОчистить список
-
+ Очистить список недавних файлов.
@@ -2969,7 +3008,7 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Настройки
@@ -2977,12 +3016,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+ Открыть файл
-
+
-
+
-
+
-
+
-
+
@@ -3024,7 +3063,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -3036,7 +3075,7 @@ Database: %s
-
+
@@ -3046,7 +3085,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Объекты не выбраны
@@ -3056,47 +3095,47 @@ Database: %s
&Добавить в выбранный объект Служения
-
+ Вы должны выбрать объекты для просмотра.
-
+ Вы должны выбрать элементы для показа.
-
+ Вы должны выбрать один или более элементов.
-
+ Для добавления вы должны выбрать существующий элемент служения.
-
+ Неправильный элемент Служения
-
+ Вы должны выбрать объект служения %s.
-
+ Для добавления вы должны выбрать один или более элементов.
-
+ Результаты поиска отсутствуют
-
+ &Клонировать
@@ -3118,7 +3157,7 @@ Suffix not supported
Во время импорта обнаружены и проигнорированы дубликаты.
-
+
@@ -3273,12 +3312,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+ <strong>Начать</strong>: %s
-
+ <strong>Длина</strong>: %s
@@ -3294,209 +3333,209 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Передвинуть &вверх
-
+ Передвинуть объект в начало служения.
-
+ Передвинуть &вверх
-
+ Передвинуть объект на одну позицию в служении
-
+ Передвинуть &вниз
-
+ Передвинуть объект на одну позицию вниз в служении.
-
+ Передвинуть &вниз
-
+ Передвинуть объект в конец служения.
-
+ Передвинуть выделенное вниз окна.
-
+ Передвинуть вверх
-
+ Передвинуть выделенное вверх окна.
-
+ &Удалить из служения
-
+ Удалить выбранный объект из служения.
-
+ &Расширить все
-
+ Расширить все объекты служения.
-
+ &Свернуть все
-
+ Свернуть все объекты служения.
-
+ Показать
-
+ Показать выбранный объект.
-
+ &Добавить новый элемент
-
+ &Добавить к выбранному элементу
-
+ &Изменить элемент
-
+ &Упорядочить элементы
-
+ &Заметки
-
+ &Изменить тему элемента
-
+ Открыть файл
-
+ Открыть файл служения OpenLP (*.osz)
-
+ Измененное служение
-
+ Файл не является правильным служением.
Формат кодирования не UTF-8.
-
+ Файл не является правильным служением.
-
+ Отсутствует обработчик показа
-
+ Объект не может быть показан, поскольку отсутствует обработчик для его показа
-
+ Элемент служения не может быть показан, поскольку требуемый плагин отсутствует или отключен
-
+ &Время начала
-
+ Показать &Просмотр
-
+ Показать &на проектор
-
+ Текущее служение было изменено. Вы хотите сохранить это служение?
-
+ Файл не может быть открыт, поскольку он поврежден.
-
+ Пустой файл
-
+ Файл служения не содержит данных.
-
+ Поврежденный файл
@@ -3516,42 +3555,42 @@ The content encoding is not UTF-8.
Время игры:
-
+ Служение без названия
-
+ Загрузить существующее служение.
-
+ Сохранить это служение.
-
+ Выбрать тему для служения.
-
+ Этот файл поврежден или не является файлом служения OpenLP 2.0.
-
+ Тема слайда
-
+ Заметки
-
+ Файл служения отсутствует
@@ -3678,17 +3717,17 @@ The content encoding is not UTF-8.
Перейти к
-
+ Предыдущее служение
-
+ Следующее служение
-
+
@@ -3732,6 +3771,11 @@ The content encoding is not UTF-8.
Начать проигрывание медиафайла.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -3907,7 +3951,7 @@ The content encoding is not UTF-8.
- Установить &по-умолчания для всех
+ Установить &по умолчания для всех
@@ -4030,7 +4074,7 @@ The content encoding is not UTF-8.
Copy of <theme name>
-
+ Копия %s
@@ -4038,117 +4082,117 @@ The content encoding is not UTF-8.
-
+ Изменить тему - %s
-
+ Мастер Тем
-
+ Добро пожаловать в Мастер Тем
-
+ Этот мастер поможет вам создать и изменить темы. Выберите кнопку Далее чтобы начать процесс настройки темы.
-
+ Выбор фона
-
+ Установите фон темы в соответствии с параметрами.
-
+ Тип фона:
-
+ Сплошная заливка
-
+ Градиент
-
+ Цвет:
-
+ Градиент:
-
+ Горизонтальный
-
+ Вертикальный
-
+ Круговой
-
+ Верх слева - низ справа
-
+ Низ слева - верх справа
-
+ Шрифт основной области
-
+ Определите шрифт и характеристики дисплея
-
+ Шрифт:
-
+ Размер:
-
+ Интервал:
-
+ &Контур:
-
+ &Тень:
@@ -4158,132 +4202,132 @@ The content encoding is not UTF-8.
-
+ Курсив
-
+ Настройки шрифта подписи
-
+ Определите шрифт для подписи
-
+ Настройки форматирования текста
-
+ Разрешить дополнительные настройки форматирования
-
+ Горизонтальная привязка:
-
+ Слева
-
+ Справа
-
+ По центру
-
+ Переходы:
-
+ Расположение области вывода
-
+ Разрешить изменять и перемещать основную область и область вывода.
-
+ &Основная область
-
+ &Использовать положение по умолчанию
-
+ Позиция Х:
-
+ px
-
+ Позиция Y:
-
+ Ширина:
-
+ Высота:
-
+ &Область подписи
-
+ Использовать расположение по умолчанию
-
+ Сохранить и просмотреть
-
+ Просмотреть тему и сохранить ее заменяя текущую или изменить название создав новую тему
-
+ Название темы:
-
+ Начальный цвет:
-
+ Конечный цвет:
@@ -4296,42 +4340,42 @@ The content encoding is not UTF-8.
-
+ Основная Тема
-
+ Уровень Темы
-
+ У&ровень песен
-
+ Использовать тему для каждой песни. Если песня не имеет специальную тему, назначенную ей, иначе использовать тему служения. Если тема служения не используется, используется основная тема.
-
+ &Уровень служения
-
+ Использовать тему служения, заменяя индивидуальные настройки песен. Если тема служения не существует, используется основная тема.
-
+ &Основной уровень
-
+ Используется основная тема, заменяя все темы назначенные служению или песне.
@@ -4465,7 +4509,7 @@ The content encoding is not UTF-8.
-
+ По центру
@@ -4519,7 +4563,7 @@ The content encoding is not UTF-8.
- Предпросмотр
+ Просмотр
@@ -4587,7 +4631,7 @@ The content encoding is not UTF-8.
-
+ Вверх
@@ -4708,7 +4752,7 @@ The content encoding is not UTF-8.
-
+ Обслуживание песен
@@ -4720,154 +4764,154 @@ The content encoding is not UTF-8.
Plural
-
+ Темы
-
+ Непрерывно
- По-умолчанию
+ По умолчанию
-
+ Стиль показа:
-
+ Файл
-
+ ПомощьThe abbreviated unit for hours
-
+ ч
-
+ Стиль размещения:
-
+ Панель показаThe abbreviated unit for minutes
-
+ м
-
+ OpenLP уже запущен. Вы хотите продолжить?
-
+ Настройки
-
+ Инструменты
-
+ Стих на слайд
-
+ Стих на абзац
-
+ Просмотр
-
+ Ошибка дупликата
-
+ Файл не поддерживается
-
+ Название и/или стих не найден
-
+ Ошибка синтаксиса XML
-
+ Режим отображения
-
+ Добро пожаловать в Мастер обновления Библии
-
+ Открыть служение.
-
+ Распечатать служение
-
+ Заменить фон показа
-
+ Сбросить фон показа
-
+ &Разделить
-
+ Разделить слайд на два если он не помещается как один слайд.
-
+ Подтвердить удаление
-
+ Воспроизводить слайды в цикле
@@ -4974,17 +5018,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -5560,7 +5604,7 @@ The encoding is responsible for the correct character representation.
Администрируется %s
-
+
@@ -5570,177 +5614,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+ Редактор Песен
-
+ &Название:
-
+ До&полнительное название:
-
+ &Слова:
-
+ П&орядок куплтов:
-
+ Редактировать &все
-
+ Название и слова
-
+ Д&обавить к песне
-
+ Уда&лить
-
+ &Управление Авторами, Темами и Сборниками песен
-
+ Д&обавить к песне
-
+ Уда&лить
-
+ Сборник:
-
+ Номер:
-
+ Авторы, Темы и Сборники песен
-
+ Новая &Тема
-
+ Информация об авторских правах
-
+ Комментарии
-
+ Тема, информация об авторских правах и комментарии
-
+ Добавить Автора
-
+ Этот автор не существует. Хотите добавить его?
-
+ Такой автор уже присутсвует в списке.
-
+ Вы не выбрали подходящего автора. Выберите автора из списка, или введите нового автора и выберите "Добавить Автора к Песне", чтобы добавить нового автора.
-
+ Добавить Тему
-
+ Эта тема не существует. Хотите добавить её?
-
+ Такая тема уже присутсвует в списке.
-
+ Вы не выбрали подходящую тему. Выберите тему из списка, или введите новую тему и выберите "Добавить Тему к Песне", чтобы добавить новую тему.
-
+ Вы должны указать название песни.
-
+ Вы должны ввести по крайней мере один куплет.
-
+ Вы должны добавить автора к этой песне.
-
+ Порядок куплетов указан неверно. Нет куплета, который бы соответсвовал %s. Правильными записями являютеся %s.
-
+ Предупреждение
-
+ Вы не используете %s нигде в порядке куплетов. Вы уверены, что хотите сохранить песню в таком виде?
-
+ Добавить Книгу
-
+ Этот сборник песен не существует. Хотите добавить его?
@@ -5749,6 +5793,31 @@ The encoding is responsible for the correct character representation.
Вы должны указать какой-то текст в этом куплете.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5969,20 +6038,33 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Всю песню
-
+ Название
-
+ Слова
@@ -5992,7 +6074,7 @@ The encoding is responsible for the correct character representation.
Удалить песню(и)?
-
+ Вы уверены, что хотите удалить %n выбранную песню?
@@ -6001,17 +6083,17 @@ The encoding is responsible for the correct character representation.
-
+ Лицензия CCLI:
-
+
-
+ For song cloning
@@ -6020,7 +6102,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -6080,12 +6162,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+
-
+
diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts
index b337a7acc..715047537 100644
--- a/resources/i18n/sv.ts
+++ b/resources/i18n/sv.ts
@@ -1,66 +1,39 @@
-
- AlertPlugin.AlertForm
-
-
-
- Du har inte angivit någon parameter som kan ersättas.
-Vill du fortsätta ändå?
-
-
-
-
- Inga parametrar hittades
-
-
-
-
- Larmmeddelandet innehåller inte '<>'.
-Vill du fortsätta ändå?
-
-AlertsPlugin
- &Larm
+ &Meddelande
- Visa ett larmmeddelande.
-
-
-
-
- <strong>Larmplugin</strong><br />Larmpluginen kontrollerar visningen av larmmeddelande på visningsskärmen
+ Visa ett publikt meddelande.name singular
- Larm
+ Meddelandename plural
- Alarm
+ Meddelandencontainer title
- Larm
+ Meddelanden
-
+ <strong>Meddelandemodul</strong><br />Meddelandemodulen kontrollerar visningen av publika meddelanden på visningsskärmen.
@@ -68,22 +41,22 @@ Vill du fortsätta ändå?
- Larmmeddelande
+ Meddelande
- Larm & text:
+ Meddelande&text:
- &Ny
+ &Nytt
- &Spara
+ &Spara
@@ -98,12 +71,12 @@ Vill du fortsätta ändå?
- Nytt larm
+ Nytt meddelande
- Du har inte angivit någon text för ditt larm. Ange en text innan du klickar på Nytt.
+ Du har inte angivit någon text för ditt meddelande. Ange en text innan du klickar på Nytt.
@@ -113,25 +86,25 @@ Vill du fortsätta ändå?
- Inga parametrar hittades
+ Parameter saknas
- Du har inte angivit någon parameter som kan ersättas.
+ Du har inte angivit någon parameter.
Vill du fortsätta ändå?
-
+ Platshållare saknas
- Larmmeddelandet innehåller inte '<>'.
+ Meddelandet innehåller inte '<>'.
Vill du fortsätta ändå?
@@ -140,7 +113,7 @@ Vill du fortsätta ändå?
- Larmmeddelande skapat och visat.
+ Meddelande skapat och visat.
@@ -176,67 +149,12 @@ Vill du fortsätta ändå?
Visningstid:
-
- BibleDB.Wizard
-
-
-
- Importerar böcker... %s
-
-
-
-
- Importing verses from <book name>...
- Importerar verser från %s...
-
-
-
-
- Importerar verser... klart.
-
-
-
- BiblePlugin.HTTPBible
-
-
-
- Fel vid nerladdning
-
-
-
-
- Fel vid analys
-
-
-
-
- Det var problem med nerladdningen av versurvalet. Kontrollera internetuppkopplingen och om problemet återkommer fundera på att rapportera det som en bugg.
-
-
-
-
- Det var ett problem att extrahera ditt vers-val. Om problemet uppstår igen, överväg att rapportera en bugg.
-
-
-
- BiblePlugin.MediaItem
-
-
-
- Bibeln är inte helt laddad.
-
-
-
-
- Du kan inte kombinera sökresultat från en bibel och två biblar. Vill du ta bort dina sökresultat och starta en ny sökning?
-
-BiblesPlugin
- &Bibel
+ &Bibel
@@ -248,28 +166,28 @@ Vill du fortsätta ändå?
name plural
- Biblar
+ Biblarcontainer title
- Biblar
+ Biblar
- Ingen bok hittades
+ Bok saknas
- Ingen bok hittades i vald bibel. Kontrollera stavningen på bokens namn.
+ Ingen bok hittades i vald bibel. Kontrollera stavningen av bokens namn.
- Importera en bibel.
+ Importera en bibelöversättning.
@@ -279,7 +197,7 @@ Vill du fortsätta ändå?
- Ändra i vald bibel.
+ Redigera vald bibel.
@@ -289,32 +207,32 @@ Vill du fortsätta ändå?
- Förhandsgranska vald bibel.
+ Förhandsgranska bibeltexten.
- Skicka vald bibel.
+ Visa bibeltexten live.
- Lägg till vald bibel till gudstjänsten.
+ Lägg till bibeltexten i körschemat.
-
+ <strong>Bibelmodul</strong><br />Bibelmodulen gör det möjligt att visa bibelverser från olika översättningar under gudstjänsten.
-
+ &Uppgradera äldre biblar
-
+ Uppgradera bibeldatabasen till det senaste formatet.
@@ -322,17 +240,17 @@ Vill du fortsätta ändå?
- Felaktigt bibelställe
+ Felaktig bibelreferens
- Bibel på webben kan inte användas
+ Webb-bibel kan inte användas
- Textsökning är inte tillgänglig för bibel på webben.
+ Textsökning är inte tillgänglig för webb-biblar.
@@ -344,7 +262,7 @@ Du kan ange flera sökord avskilda med mellanslag för att söka på alla sökor
- Det finns ingen bibel installerad. Använd guiden för bibelimport och installera en eller flera biblar.
+ Det finns inga biblar installerade. Använd guiden för bibelimport och installera en eller flera bibelöversättningar.
@@ -356,12 +274,19 @@ Book Chapter:Verse-Verse
Book Chapter:Verse-Verse,Verse-Verse
Book Chapter:Verse-Verse,Chapter:Verse-Verse
Book Chapter:Verse-Chapter:Verse
-
+ Bibelreferensen stöds antingen inte av OpenLP, eller är ogiltig. Kontrollera att bibelreferensen är given enligt något av följande mönster:
+
+Bok kapitel
+Bok kapitel-kapitel
+Bok kapitel:vers-vers
+Bok kapitel:vers-vers,vers-vers
+Bok kapitel:vers-vers,kapitel:vers-vers
+Bok kapitel:vers-kapitel:vers
- Inga biblar tillgängliga.
+ Inga biblar tillgängliga
@@ -369,7 +294,7 @@ Book Chapter:Verse-Chapter:Verse
- Visning av verser
+ Visning av bibeltext
@@ -405,8 +330,8 @@ Book Chapter:Verse-Chapter:Verse
- Notera:
-Ändringar kommer inte påverka verser som finns i planeringen.
+ Observera:
+Ändringar kommer inte att påverka verser som redan finns i körschemat.
@@ -419,42 +344,42 @@ Changes do not affect verses already in the service.
-
+ Välj bok
-
+ Följande bok kunde inte identifieras. Välj motsvarande engelskt namn från listan.
-
+ Nuvarande namn:
-
+ Motsvarande namn:
-
+ Visa böcker från
-
+ Gamla testamentet
-
+ Nya testamentet
-
+ Apokryferna
@@ -462,7 +387,7 @@ Changes do not affect verses already in the service.
-
+ Du måste välja en bok.
@@ -470,18 +395,18 @@ Changes do not affect verses already in the service.
- Importerar böcker... %s
+ Importerar böcker... %sImporting verses from <book name>...
- Importerar verser från %s...
+ Importerar verser från %s...
- Importerar verser... klart.
+ Importerar verser... klart.
@@ -489,38 +414,38 @@ Changes do not affect verses already in the service.
-
+ Registrerar bibel och laddar böcker...
-
+ Registrerar språk...Importing <book name>...
-
+ Importerar %s...
- Fel vid nerladdning
+ Fel vid nedladdning
- Det var problem med nerladdningen av versurvalet. Kontrollera internetuppkopplingen och om problemet återkommer fundera på att rapportera det som en bugg.
+ Det uppstod problem vid nedladdningen av versurvalet. Kontrollera Internetanslutningen och om problemet återkommer, överväg att rapportera det som en bugg.
- Fel vid analys
+ Fel vid tolkning
- Det var ett problem att extrahera ditt vers-val. Om problemet uppstår igen, överväg att rapportera en bugg.
+ Det uppstod problem vid extraherande av vers-urvalet. Om problemet uppstår igen, överväg att rapportera det som en bugg.
@@ -538,52 +463,52 @@ Changes do not affect verses already in the service.
- Nedladdning från internet
+ Nedladdning från Internet
- Placering:
+ Källa:
- Crosswalk
+ Crosswalk
- BibleGateway
+ BibleGateway
- Bibel:
+ Bibel:
- Alternativ för nedladdning
+ Alternativ för nedladdning
- Server:
+ Server:
- Användarnamn:
+ Användarnamn:
- Lösenord:
+ Lösenord:
- Proxyserver (Frivilligt)
+ Proxyserver (frivilligt)
@@ -598,32 +523,32 @@ Changes do not affect verses already in the service.
- Versionsnamn:
+ Namn på bibelöversättningen:
- Copyright:
+ Copyright:
- Vänta medan din bibel importeras.
+ Vänta medan bibeln importeras.
- Du måste välja en fil med bibelböcker att använda i importen.
+ Du måste välja en fil med bibelböcker att använda i importen.
- Du måste specificera en fil med bibelverser att importera.
+ Du måste välja en fil med bibelverser att importera.
- Du måste ange ett versionsnamn för din bibel.
+ Du måste ange ett namn för bibeln.
@@ -633,17 +558,17 @@ Changes do not affect verses already in the service.
- Din bibelimport misslyckades.
+ Bibelimporten misslyckades.
-
+ Du måste ange en copyright-text för bibeln. Biblar i public domain måste anges som sådana.
- Denna Bibeln finns redan. Importera en annan Bibel eller radera den nuvarande.
+ Bibeln finns redan. Importera en annan Bibel eller radera den nuvarande.
@@ -689,7 +614,8 @@ Changes do not affect verses already in the service.
-
+ Bibeln registrerad. Observera att verser kommer att laddas ner
+vid behov, och därför behövs en Internetanslutning.
@@ -697,17 +623,17 @@ demand and thus an internet connection is required.
-
+ Välj språk
-
+ OpenLP kan inte avgöra den här bibelöversättningens språk. Välj språk från listan nedan.
-
+ Språk:
@@ -715,7 +641,7 @@ demand and thus an internet connection is required.
-
+ Du måste välja ett språk.
@@ -723,77 +649,77 @@ demand and thus an internet connection is required.
- Snabb
+ Enkelt
- Hitta:
+ Sök efter:
- Bok:
+ Bok:
- Kapitel:
+ Kapitel:
- Vers:
+ Vers:
- Från:
+ Från:
- Till:
+ Till:
- Textsökning
+ Textsökning
- Andra:
+ Alternativ:
-
+ Bibelreferens
-
+ Växla mellan att behålla eller rensa föregående sökresultat.
- Du kan inte kombinera sökresultat från en bibel och två biblar. Vill du ta bort dina sökresultat och starta en ny sökning?
+ Du kan inte kombinera resultat från sökning i en bibel med resultat från sökning i två biblar. Vill du ta bort dina sökresultat och starta en ny sökning?
- Bibeln är inte helt laddad.
+ Bibeln är inte helt laddad.
-
+ Information
-
+ Den alternativa bibelöversättningen innehåller inte alla verser som finns i huvudöversättningen. Endast verser som finns i båda översättningar kommer att visas. %d verser har utelämnats.
@@ -824,158 +750,149 @@ demand and thus an internet connection is required.
-
+ Välj en backupmapp
-
+ Bibeluppgraderingsguiden
-
+ Den här guiden hjälper dig att uppgradera dina befintliga biblar från en tidigare version av OpenLP 2. Klicka på Nästa för att starta uppgraderingsprocessen.
-
+ Välj backupmapp
-
+ Välj en mapp för backup av dina biblar
-
+ Tidigare utgåvor av OpenLP 2.0 kan inte använda uppgraderade biblar. Nu skapas en backup av dina nuvarande biblar så att du enkelt kan kopiera tillbaks filerna till din OpenLP-datamapp om du skulle behöva återgå till en tidigare utgåva av OpenLP. Instruktioner om hur man återställer finns i vår <a href="http://wiki.openlp.org/faq">FAQ</a>.
-
+ Välj en mapp för backup av dina biblar.
-
+ Backupmapp:
-
+ Det är inte nödvändigt med backup av mina biblar
-
+ Välj biblar
-
-
-
-
-
- Versionsnamn:
+ Välj biblar att uppgradera
-
+ Uppgraderar
-
-
-
-
-
- Du måste ange ett versionsnamn för din bibel.
-
-
-
-
- Bibeln finns redan
+ Vänta medan biblarna uppgraderas.
-
+ Uppgraderar bibel %s av %s: "%s"
+Misslyckades
-
+ Uppgraderar bibel %s av %s: "%s"
+Uppgraderar...
- Fel vid nerladdning
+ Fel vid nedladdning
-
+ Uppgraderar bibel %s av %s: "%s"
+Uppgraderar %s...
-
+ , %s misslyckades
-
+ Uppgradering av biblar: %s lyckades%s
-
+ Uppgradering misslyckades.
-
+ Backuptagningen lyckades inte.
+För att kunna göra backup av dina biblar krävs skrivrättigheter i den givna mappen.
-
+ För att uppgradera dina webb-biblar krävs en Internetanslutning.
-
+ Uppgraderar bibel %s av %s: "%s"
+Färdig
-
+ Uppgradering av biblar: %s lyckades%s
+Observera att verser från webb-biblar kommer att laddas ner vid behov, och därför behövs en Internetanslutning.
-
+ Du måste välja en backupmapp för dina biblar.
-
+ Startar uppgradering...
-
+ Det finns inga biblar som behöver uppgraderas.
@@ -1084,11 +1001,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Redigera alla diabilder på en gång.
-
-
-
- Dela diabilden
-
@@ -1136,21 +1048,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
- CustomsPlugin
-
-
-
- name singular
- Anpassad
-
-
-
-
- container title
- Anpassad
-
-ImagePlugin
@@ -1176,31 +1073,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
container titleBilder
-
-
-
- Ladda en ny bild.
-
-
-
-
- Lägg till en ny bild.
-
-
-
-
- Redigera den valda bilden.
-
-
-
-
- Radera den valda bilden.
-
-
-
-
- Förhandsgranska den valda bilden.
-
@@ -1253,39 +1125,39 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
Välj bild(er)
-
+ Du måste välja en bild som skall tas bort.
-
+ Du måste välja en bild att ersätta bakgrundsbilden med.
-
+ Bild(er) saknas
-
+ Följande bild(er) finns inte längre: %s
-
+ Följande bild(er) finns inte längre: %s
Vill du lägga till dom andra bilderna ändå?
-
+ Det uppstod ett problem med att ersätta din bakgrund, bildfilen "%s" finns inte längre.
-
+
@@ -1377,17 +1249,17 @@ Vill du lägga till dom andra bilderna ändå?
Välj media
-
+ Du måste välja en mediafil för borttagning.
-
+
-
+ Filen %s finns inte längre.
@@ -1411,6 +1283,16 @@ Vill du lägga till dom andra bilderna ändå?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1435,7 +1317,7 @@ Vill du lägga till dom andra bilderna ändå?
-
+ Information
@@ -1782,17 +1664,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+
-
+
-
+
@@ -1867,66 +1749,57 @@ Version: %s
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1936,22 +1809,22 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -1961,15 +1834,34 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.FormattingTagDialog
@@ -2143,130 +2035,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+ Allmänt
-
+ Skärmar
-
+ Välj skärm för utsignal:
-
+ Visa även på enkel skärm
-
+ Programstart
-
+ Visa varning vid tom skärm
-
+
- Öppna automatiskt den senaste planeringen
+ Öppna det senaste körschemat automatiskt
-
+ Visa startbilden
-
+ Programinställningar
-
+
-
+
- Automatiskt förhandsgranska nästa post i planeringen
+ Förhandsgranska nästa post i körschemat automatiskt
-
+ sekunder
-
+ CCLI-detaljer
-
+ SongSelect användarnamn:
-
+ SongSelect lösenord:
-
+
-
+ X
-
+ Y
-
+ Höjd
-
+ Bredd
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2284,7 +2186,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+
@@ -2344,7 +2246,7 @@ To cancel the First Time Wizard completely, press the finish button now.
- Planeringshanterare
+ Körschema
@@ -2364,7 +2266,7 @@ To cancel the First Time Wizard completely, press the finish button now.
- Öppna en befintlig planering.
+ Öppna ett befintligt körschema.
@@ -2374,7 +2276,7 @@ To cancel the First Time Wizard completely, press the finish button now.
- Spara den aktuella planeringen till disk.
+ Spara det aktuella körschemat till disk.
@@ -2384,12 +2286,12 @@ To cancel the First Time Wizard completely, press the finish button now.
- Spara planering som
+ Spara körschema som
- Spara den aktuella planeringen under ett nytt namn.
+ Spara det aktuella körschemat under ett nytt namn.
@@ -2444,17 +2346,18 @@ To cancel the First Time Wizard completely, press the finish button now.
- &Planeringshanterare
+
+
- Växla planeringshanterare
+ Växla körschema
- Växla synligheten för planeringshanteraren.
+ Växla synligheten för körschemat.
@@ -2572,24 +2475,24 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+ OpenLP-versionen uppdaterad
-
+ OpenLPs huvuddisplay rensad
-
+ Huvuddisplayen har rensats
@@ -2670,12 +2573,12 @@ You can download the latest version from http://openlp.org/.
-
+
-
+
@@ -2687,13 +2590,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -2718,12 +2621,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2765,7 +2668,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -2777,7 +2680,7 @@ Database: %s
-
+
@@ -2787,57 +2690,57 @@ Database: %s
OpenLP.MediaManagerItem
-
+ Inget objekt valt
- &Lägg till vald planeringsobjekt
+ &Lägg till i vald post i körschemat
-
+ Du måste välja ett eller flera objekt att förhandsgranska.
-
+
-
+ Du måste välja ett eller flera objekt.
-
+
- Du måste välja en befintligt planeringsobjekt att lägga till till.
+ Du måste välja ett befintlig post i körschemat att lägga till i.
-
+
- Felaktigt planeringsobjekt
+ Ogiltig körschemapost
-
+
- Du måste välja ett %s planeringsobjekt.
+ Du måste välja en %s i körschemat.
-
+
-
+
-
+
@@ -2853,7 +2756,7 @@ Suffix not supported
-
+
@@ -2921,11 +2824,6 @@ Suffix not supported
Alternativ
-
-
-
- Stäng
-
@@ -3013,12 +2911,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -3034,208 +2932,208 @@ Suffix not supported
OpenLP.ServiceManager
-
+ Flytta högst &upp
-
+
-
+ Flytta &upp
-
+
-
+ Flytta &ner
-
+
-
+ Flytta längst &ner
-
+
-
+
- &Ta bort från planeringen
+ &Ta bort från körschemat
-
+
-
+
-
+
-
+ &Redigera objekt
-
+
-
+ &Anteckningar
-
+ &Byt objektets tema
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3255,42 +3153,42 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3417,17 +3315,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -3471,6 +3369,11 @@ The content encoding is not UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -3487,7 +3390,7 @@ The content encoding is not UTF-8.
-
+ Språk:
@@ -4049,7 +3952,7 @@ The content encoding is not UTF-8.
- Använd temat för varje sång i databasen indviduellt. Om en sång inte har ett associerat tema, använd planeringens schema. Om planeringen inte har ett tema, använd globala temat.
+ Använd temat för varje sång i databasen indviduellt. Om en sång inte har ett associerat tema, använd körschemats tema. Om körschemat inte har ett tema, använd globala temat.
@@ -4059,7 +3962,7 @@ The content encoding is not UTF-8.
- Använd temat för mötesplaneringen, och ignorera sångernas individuella teman. Om mötesplaneringen inte har ett tema använd då det globala temat.
+ Använd temat för körschemat och ignorera sångernas individuella teman. Om körschemat inte har ett tema, använd det globala temat.
@@ -4069,7 +3972,7 @@ The content encoding is not UTF-8.
- Använd det globala temat, ignorerar teman associerade med mötesplaneringen eller sångerna.
+ Använd det globala temat och ignorera teman associerade med körschemat eller sångerna.
@@ -4122,7 +4025,7 @@ The content encoding is not UTF-8.
- Skapa en ny planering.
+ Skapa ett nytt körschema.
@@ -4137,7 +4040,7 @@ The content encoding is not UTF-8.
-
+ Live
@@ -4152,22 +4055,17 @@ The content encoding is not UTF-8.
- Ny planering
+ Nytt körschemaOpenLP 2.0
-
-
-
- Öppna planering
-
- Förhandsgranska
+ Förhandsgranskning
@@ -4182,7 +4080,7 @@ The content encoding is not UTF-8.
- Spara planering
+ Spara körschema
@@ -4712,17 +4610,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -4786,7 +4684,7 @@ The content encoding is not UTF-8.
- Planeringshanterare
+ Körschema
@@ -5294,7 +5192,7 @@ The encoding is responsible for the correct character representation.
-
+
@@ -5304,177 +5202,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+ Sångredigerare
-
+ &Titel:
-
+
-
+
-
+
-
+ Red&igera alla
-
+ Titel && Sångtexter
-
+ &Lägg till i sång
-
+ &Ta bort
-
+
-
+ Lä&gg till i sång
-
+ Ta &bort
-
+ Bok:
-
+ Nummer:
-
+
-
+ Nytt &tema
-
+ Copyrightinformation
-
+ Kommentarer
-
+ Tema, copyrightinfo && kommentarer
-
+ Lägg till föfattare
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5483,6 +5381,31 @@ The encoding is responsible for the correct character representation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5698,30 +5621,43 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+ Titlar
-
+ Sångtexter
-
+
-
+
-
+
@@ -5729,12 +5665,12 @@ The encoding is responsible for the correct character representation.
-
+
-
+ For song cloning
@@ -5743,7 +5679,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -5803,12 +5739,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+ copyright
-
+
diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts
index a026043bf..4d8f7ce74 100644
--- a/resources/i18n/zh_CN.ts
+++ b/resources/i18n/zh_CN.ts
@@ -1106,38 +1106,38 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1229,7 +1229,7 @@ Do you want to add the other images anyway?
-
+
@@ -1244,12 +1244,12 @@ Do you want to add the other images anyway?
-
+
-
+
@@ -1263,6 +1263,16 @@ Do you want to add the other images anyway?
+
+
+
+
+
+
+
+
+
+ MediaPlugin.MediaTab
@@ -1634,17 +1644,17 @@ Version: %s
OpenLP.FirstTimeWizard
-
+
-
+
-
+
@@ -1719,66 +1729,57 @@ Version: %s
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1788,22 +1789,22 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -1813,15 +1814,34 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenLP.FormattingTagDialog
@@ -1995,130 +2015,140 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.GeneralTab
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+ OpenLP.LanguageManager
@@ -2136,7 +2166,7 @@ To cancel the First Time Wizard completely, press the finish button now.
OpenLP.MainDisplay
-
+
@@ -2424,24 +2454,24 @@ To cancel the First Time Wizard completely, press the finish button now.
-
+
-
+
-
+
-
+
@@ -2522,12 +2552,12 @@ You can download the latest version from http://openlp.org/.
-
+
-
+
@@ -2539,13 +2569,13 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+ Clear List of recent files
-
+
@@ -2570,12 +2600,12 @@ Re-running this wizard may make changes to your current OpenLP configuration and
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2617,7 +2647,7 @@ Importing incorrect settings may cause erratic behaviour or OpenLP to terminate
OpenLP.Manager
-
+
@@ -2629,7 +2659,7 @@ Database: %s
-
+
@@ -2639,7 +2669,7 @@ Database: %s
OpenLP.MediaManagerItem
-
+
@@ -2649,47 +2679,47 @@ Database: %s
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2705,7 +2735,7 @@ Suffix not supported
-
+
@@ -2860,12 +2890,12 @@ Suffix not supported
OpenLP.ServiceItem
-
+
-
+
@@ -2881,208 +2911,208 @@ Suffix not supported
OpenLP.ServiceManager
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3102,42 +3132,42 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3264,17 +3294,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -3318,6 +3348,11 @@ The content encoding is not UTF-8.
+
+
+
+
+ OpenLP.SpellTextEdit
@@ -4554,17 +4589,17 @@ The content encoding is not UTF-8.
-
+
-
+
-
+
@@ -5136,7 +5171,7 @@ The encoding is responsible for the correct character representation.
-
+
@@ -5146,177 +5181,177 @@ The encoding is responsible for the correct character representation.
SongsPlugin.EditSongForm
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5325,6 +5360,31 @@ The encoding is responsible for the correct character representation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SongsPlugin.EditVerseForm
@@ -5540,42 +5600,55 @@ The encoding is responsible for the correct character representation.
+
+ SongsPlugin.MediaFilesForm
+
+
+
+
+
+
+
+
+
+
+SongsPlugin.MediaItem
-
+
-
+
-
+
-
+
-
+
-
+
-
+ For song cloning
@@ -5584,7 +5657,7 @@ The encoding is responsible for the correct character representation.
SongsPlugin.OpenLP1SongImport
-
+
@@ -5644,12 +5717,12 @@ The encoding is responsible for the correct character representation.
SongsPlugin.SongImport
-
+
-
+
From 2b7f51d4e925616f4542ddc8ff17e88f70790c67 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 19 Sep 2011 00:43:12 +0200
Subject: [PATCH 47/68] Code cleanup of openlyrics import with formatting tags
---
openlp/plugins/songs/lib/xml.py | 30 +++++++++---------------------
1 file changed, 9 insertions(+), 21 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index deac1d4b4..4db2580fe 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -562,51 +562,43 @@ class OpenLyrics(object):
FormattingTags.add_html_tags([tag for tag in found_tags
if tag[u'start tag'] not in existing_tag_ids], True)
- def _process_lyrics_mixed_content(self, element):
+ def _process_line_mixed_content(self, element):
text = u''
- #print '1:', repr(text)
# Skip element.
- #if element.tag == u'chord' and element.tail:
- ## Append tail text at chord element.
- #text += element.tail
+ if element.tag == u'chord' and element.tail:
+ # Append tail text at chord element.
+ text += element.tail
+ return
# Start formatting tag.
- #print NSMAP % 'tag'
- #print repr(element.tag)
if element.tag == NSMAP % 'tag':
text += u'{%s}' % element.get(u'name')
- print '1:', repr(text)
# Append text from element
if element.text:
text += element.text
- print '2:', repr(text)
- #print '3:', repr(text)
# Process nested formatting tags
for child in element:
# Use recursion since nested formatting tags are allowed.
- text += self._process_lyrics_mixed_content(child)
+ text += self._process_line_mixed_content(child)
# Append text from tail and add formatting end tag.
if element.tag == NSMAP % 'tag':
text += u'{/%s}' % element.get(u'name')
- print '3:', repr(text)
# Append text from tail
if element.tail:
text += element.tail
- print '4:', repr(text)
return text
- def _process_lyrics_line(self, line):
+ def _process_verse_line(self, line):
# Convert lxml.objectify to lxml.etree representation
line = etree.tostring(line)
element = etree.XML(line)
- print element.nsmap
- return self._process_lyrics_mixed_content(element)
+ return self._process_line_mixed_content(element)
def _process_lyrics(self, properties, song_xml, song_obj):
"""
@@ -636,11 +628,7 @@ class OpenLyrics(object):
for line in lines.line:
if text:
text += u'\n'
- text += self._process_lyrics_line(line)
- #AAA = u''.join(map(unicode, line.itertext()))
- #print 'AAA:', repr(AAA)
- #text += AAA
- #print repr(text)
+ text += self._process_verse_line(line)
# Add a virtual split to the verse text.
if lines.get(u'break') is not None:
text += u'\n[---]'
From b27784e8387e98d2d4f4faf46ecaa3bfe6cf1800 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 19 Sep 2011 01:00:55 +0200
Subject: [PATCH 48/68] Add comments to some new functions
---
openlp/plugins/songs/lib/xml.py | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 4db2580fe..8ce628497 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -563,6 +563,13 @@ class OpenLyrics(object):
if tag[u'start tag'] not in existing_tag_ids], True)
def _process_line_mixed_content(self, element):
+ """
+ Converts the xml text with mixed content to OpenLP representation.
+ Chords are skipped and formatting tags are converted.
+
+ ``element``
+ The property object (lxml.etree.Element).
+ """
text = u''
# Skip element.
@@ -575,11 +582,11 @@ class OpenLyrics(object):
if element.tag == NSMAP % 'tag':
text += u'{%s}' % element.get(u'name')
- # Append text from element
+ # Append text from element.
if element.text:
text += element.text
- # Process nested formatting tags
+ # Process nested formatting tags.
for child in element:
# Use recursion since nested formatting tags are allowed.
text += self._process_line_mixed_content(child)
@@ -588,14 +595,20 @@ class OpenLyrics(object):
if element.tag == NSMAP % 'tag':
text += u'{/%s}' % element.get(u'name')
- # Append text from tail
+ # Append text from tail.
if element.tail:
text += element.tail
return text
def _process_verse_line(self, line):
- # Convert lxml.objectify to lxml.etree representation
+ """
+ Converts lyrics line to OpenLP representation.
+
+ ``line``
+ The line object (lxml.objectify.ObjectifiedElement).
+ """
+ # Convert lxml.objectify to lxml.etree representation.
line = etree.tostring(line)
element = etree.XML(line)
return self._process_line_mixed_content(element)
From 039115c7f4dcbcd94b45a8681f74c361cf519bc6 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Mon, 19 Sep 2011 14:59:37 +0200
Subject: [PATCH 49/68] Fix issue with more new lines when having more
element in openlyrics document.
---
openlp/plugins/songs/lib/xml.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 8ce628497..7c268e340 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -638,10 +638,13 @@ class OpenLyrics(object):
if text:
text += u'\n'
# Loop over the "line" elements removing chords.
+ lines_text = u''
for line in lines.line:
- if text:
- text += u'\n'
- text += self._process_verse_line(line)
+ if lines_text:
+ lines_text += u'\n'
+ lines_text += self._process_verse_line(line)
+ # Append text from "lines" element to verse text.
+ text += lines_text
# Add a virtual split to the verse text.
if lines.get(u'break') is not None:
text += u'\n[---]'
From 724e2be04faecf2b8af5504bb54447ef046b6eb6 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Mon, 19 Sep 2011 18:00:27 +0200
Subject: [PATCH 50/68] close tags
---
openlp/core/lib/renderer.py | 36 ++++++++++++++++++++++--------------
1 file changed, 22 insertions(+), 14 deletions(-)
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 37443a76c..f08ca38fa 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -442,17 +442,20 @@ class Renderer(object):
def _get_start_tags(self, raw_text):
"""
Tests the given text for not closed formatting tags and returns a tuple
- consisting of two unicode strings::
+ consisting of three unicode strings::
- (u'{st}{r}', u'')
+ (u'{st}{r}Text text text{/st}{/r}', u'{st}{r}', u'
+ ')
- The returned strings can be prepended to the next slide. The first
- unicode string are OpenLP's formatting tags and the second unicode
- string the html formatting tags.
+ The first unicode string is the text, with correct closing tags. The
+ second unicode string are OpenLP's opening formatting tags and the third
+ unicode string the html opening formatting tags.
``raw_text``
The text to test. The text must **not** contain html tags, only
- OpenLP formatting tags are allowed.
+ OpenLP formatting tags are allowed::
+
+ {st}{r}Text text text
"""
raw_tags = []
html_tags = []
@@ -462,18 +465,23 @@ class Renderer(object):
if tag[u'start tag'] in raw_text and not \
tag[u'end tag'] in raw_text:
raw_tags.append(
- (tag[u'start tag'], raw_text.find(tag[u'start tag'])))
+ (raw_text.find(tag[u'start tag']), tag[u'start tag'],
+ tag[u'end tag']))
html_tags.append(
- (tag[u'start html'], raw_text.find(tag[u'start tag'])))
+ (raw_text.find(tag[u'start tag']), tag[u'start html']))
# Sort the lists, so that the tags which were opened first on the first
# slide (the text we are checking) will be opened first on the next
# slide as well.
- raw_tags.sort(key=lambda tag: tag[1])
- html_tags.sort(key=lambda tag: tag[1])
+ raw_tags.sort(key=lambda tag: tag[0])
+ html_tags.sort(key=lambda tag: tag[0])
+ # Create a list with closing tags for the raw_text.
+ end_tags = [tag[2] for tag in raw_tags]
+ end_tags.reverse()
# Remove the indexes.
- raw_tags = [tag[0] for tag in raw_tags]
- html_tags = [tag[0] for tag in html_tags]
- return u''.join(raw_tags), u''.join(html_tags)
+ raw_tags = [tag[1] for tag in raw_tags]
+ html_tags = [tag[1] for tag in html_tags]
+ return raw_text + u''.join(end_tags), u''.join(raw_tags), \
+ u''.join(html_tags)
def _binary_chop(self, formatted, previous_html, previous_raw, html_list,
raw_list, separator, line_end):
@@ -528,8 +536,8 @@ class Renderer(object):
index = smallest_index
text = previous_raw.rstrip(u' ') + \
separator.join(raw_list[:index + 1])
+ text, raw_tags, html_tags = self._get_start_tags(text)
formatted.append(text)
- raw_tags, html_tags = self._get_start_tags(text)
previous_html = u''
previous_raw = u''
# Stop here as the theme line count was requested.
From 240d612948e2aefc5a26a6eaf49b6dfa41fa9acb Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Mon, 19 Sep 2011 18:13:38 +0200
Subject: [PATCH 51/68] fixed doc
---
openlp/core/lib/renderer.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index f08ca38fa..68ca7f1a9 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -444,7 +444,7 @@ class Renderer(object):
Tests the given text for not closed formatting tags and returns a tuple
consisting of three unicode strings::
- (u'{st}{r}Text text text{/st}{/r}', u'{st}{r}', u'
+ (u'{st}{r}Text text text{/r}{/st}', u'{st}{r}', u'')
The first unicode string is the text, with correct closing tags. The
From 429a1a4541da8f63d6b41857ed3a1d16bc2d8d54 Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Mon, 19 Sep 2011 20:55:34 +0200
Subject: [PATCH 52/68] Remove reference to the non-existent __del__ method.
Fixes: https://launchpad.net/bugs/854125
---
openlp/core/ui/maindisplay.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index 297f5430b..06afb0313 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -606,7 +606,6 @@ class AudioPlayer(QtCore.QObject):
self.stop()
for path in self.mediaObject.outputPaths():
path.disconnect()
- QtCore.QObject.__del__(self)
def onAboutToFinish(self):
"""
From 834ed570cee03b32beb16110a90f2da86bec353c Mon Sep 17 00:00:00 2001
From: Tim Bentley
Date: Tue, 20 Sep 2011 16:23:29 +0100
Subject: [PATCH 53/68] Fix bug where string is added to image instead of
QColor.
Fix issue where queue has records to process but it is not running.
Fixes: https://launchpad.net/bugs/854171
---
openlp/core/lib/__init__.py | 2 +-
openlp/core/lib/imagemanager.py | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index 2c0b53a95..1454f877e 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -185,7 +185,7 @@ def resize_image(image_path, width, height, background):
new_image = QtGui.QImage(width, height,
QtGui.QImage.Format_ARGB32_Premultiplied)
painter = QtGui.QPainter(new_image)
- painter.fillRect(new_image.rect(), background)
+ painter.fillRect(new_image.rect(), QtGui.QColor(background))
painter.drawImage((width - realw) / 2, (height - realh) / 2, preview)
return new_image
diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py
index 4d6c90078..14444a8a8 100644
--- a/openlp/core/lib/imagemanager.py
+++ b/openlp/core/lib/imagemanager.py
@@ -215,6 +215,8 @@ class ImageManager(QtCore.QObject):
image = self._cache[name]
if image.image is None:
self._conversion_queue.modify_priority(image, Priority.High)
+ # make sure we are runnning and if not give it a kick
+ self.process_updates()
while image.image is None:
log.debug(u'get_image - waiting')
time.sleep(0.1)
@@ -235,6 +237,8 @@ class ImageManager(QtCore.QObject):
image = self._cache[name]
if image.image_bytes is None:
self._conversion_queue.modify_priority(image, Priority.Urgent)
+ # make sure we are runnning and if not give it a kick
+ self.process_updates()
while image.image_bytes is None:
log.debug(u'get_image_bytes - waiting')
time.sleep(0.1)
@@ -279,6 +283,7 @@ class ImageManager(QtCore.QObject):
"""
log.debug(u'_process_cache')
image = self._conversion_queue.get()[1]
+ print image
# Generate the QImage for the image.
if image.image is None:
image.image = resize_image(image.path, self.width, self.height,
From 47b7379967a1bb10e83cc93ab3fd63d377dfe42f Mon Sep 17 00:00:00 2001
From: Tim Bentley
Date: Tue, 20 Sep 2011 16:41:04 +0100
Subject: [PATCH 54/68] Fix spelling and remove print statement
---
openlp/core/lib/imagemanager.py | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py
index 14444a8a8..0dcc2246b 100644
--- a/openlp/core/lib/imagemanager.py
+++ b/openlp/core/lib/imagemanager.py
@@ -215,7 +215,7 @@ class ImageManager(QtCore.QObject):
image = self._cache[name]
if image.image is None:
self._conversion_queue.modify_priority(image, Priority.High)
- # make sure we are runnning and if not give it a kick
+ # make sure we are running and if not give it a kick
self.process_updates()
while image.image is None:
log.debug(u'get_image - waiting')
@@ -237,7 +237,7 @@ class ImageManager(QtCore.QObject):
image = self._cache[name]
if image.image_bytes is None:
self._conversion_queue.modify_priority(image, Priority.Urgent)
- # make sure we are runnning and if not give it a kick
+ # make sure we are running and if not give it a kick
self.process_updates()
while image.image_bytes is None:
log.debug(u'get_image_bytes - waiting')
@@ -283,7 +283,6 @@ class ImageManager(QtCore.QObject):
"""
log.debug(u'_process_cache')
image = self._conversion_queue.get()[1]
- print image
# Generate the QImage for the image.
if image.image is None:
image.image = resize_image(image.path, self.width, self.height,
From 920a65b4e1ee899595df7e953e99a5dcf53f0cb2 Mon Sep 17 00:00:00 2001
From: Andreas Preikschat
Date: Tue, 20 Sep 2011 17:50:43 +0200
Subject: [PATCH 55/68] fix detection when tag exists more than once
---
openlp/core/lib/renderer.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 68ca7f1a9..abfd658ba 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -462,8 +462,8 @@ class Renderer(object):
for tag in FormattingTags.get_html_tags():
if tag[u'start tag'] == u'{br}':
continue
- if tag[u'start tag'] in raw_text and not \
- tag[u'end tag'] in raw_text:
+ if raw_text.count(tag[u'start tag']) != \
+ raw_text.count(tag[u'end tag']):
raw_tags.append(
(raw_text.find(tag[u'start tag']), tag[u'start tag'],
tag[u'end tag']))
From 74c56691947a7cf8b1f95f8de92fd453878cd119 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Tue, 20 Sep 2011 17:52:19 +0200
Subject: [PATCH 56/68] Dropped element for openlyrics parsing and allow
to import formatting tags over multiple lines and tags with only starting tag
---
openlp/plugins/songs/lib/xml.py | 80 +++++++++++++++++++++++----------
1 file changed, 56 insertions(+), 24 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 7c268e340..4484e1700 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -547,12 +547,16 @@ class OpenLyrics(object):
name = tag.get(u'name')
if name is None:
continue
+ start_tag = u'{%s}' % name[:5]
+ # Some tags have only start tag e.g. {br}
+ end_tag = u'{' + name[:5] + u'}' if hasattr(tag, 'close') else u''
openlp_tag = {
u'desc': name,
- u'start tag': u'{%s}' % name[:5],
- u'end tag': u'{/%s}' % name[:5],
+ u'start tag': start_tag,
+ u'end tag': end_tag,
u'start html': tag.open.text,
- u'end html': tag.close.text,
+ # Some tags have only start html e.g. {br}
+ u'end html': tag.close.text if hasattr(tag, 'close') else u'',
u'protected': False,
u'temporary': temporary
}
@@ -562,25 +566,45 @@ class OpenLyrics(object):
FormattingTags.add_html_tags([tag for tag in found_tags
if tag[u'start tag'] not in existing_tag_ids], True)
- def _process_line_mixed_content(self, element):
+ def _process_lines_mixed_content(self, element, newlines=True):
"""
Converts the xml text with mixed content to OpenLP representation.
Chords are skipped and formatting tags are converted.
``element``
The property object (lxml.etree.Element).
+
+ ``newlines``
+ The switch to enable/disable processing of line breaks .
+ The is used since OpenLyrics 0.8.
"""
text = u''
+ use_endtag = True
- # Skip element.
- if element.tag == u'chord' and element.tail:
+ # Skip elements - not yet supported.
+ if element.tag == NSMAP % u'comment' and element.tail:
# Append tail text at chord element.
text += element.tail
- return
+ return text
+ # Skip element - not yet supported.
+ elif element.tag == NSMAP % u'chord' and element.tail:
+ # Append tail text at chord element.
+ text += element.tail
+ return text
+ # Convert line breaks to \n.
+ elif newlines and element.tag == NSMAP % u'br':
+ text += u'\n'
+ if element.tail:
+ text += element.tail
+ return text
# Start formatting tag.
- if element.tag == NSMAP % 'tag':
+ if element.tag == NSMAP % u'tag':
text += u'{%s}' % element.get(u'name')
+ # Some formattings may have only start tag.
+ # Handle this case if element has no children and contains no text.
+ if len(element) == 0 and not element.text:
+ use_endtag = False
# Append text from element.
if element.text:
@@ -589,10 +613,10 @@ class OpenLyrics(object):
# Process nested formatting tags.
for child in element:
# Use recursion since nested formatting tags are allowed.
- text += self._process_line_mixed_content(child)
+ text += self._process_lines_mixed_content(child, newlines)
# Append text from tail and add formatting end tag.
- if element.tag == NSMAP % 'tag':
+ if element.tag == NSMAP % 'tag' and use_endtag:
text += u'{/%s}' % element.get(u'name')
# Append text from tail.
@@ -601,17 +625,31 @@ class OpenLyrics(object):
return text
- def _process_verse_line(self, line):
+ def _process_verse_lines(self, lines):
"""
- Converts lyrics line to OpenLP representation.
+ Converts lyrics lines to OpenLP representation.
- ``line``
- The line object (lxml.objectify.ObjectifiedElement).
+ ``lines``
+ The lines object (lxml.objectify.ObjectifiedElement).
"""
+ text = u''
# Convert lxml.objectify to lxml.etree representation.
- line = etree.tostring(line)
- element = etree.XML(line)
- return self._process_line_mixed_content(element)
+ lines = etree.tostring(lines)
+ element = etree.XML(lines)
+ # OpenLyrics version <= 0.7 contais elements to represent lines.
+ # First child element is tested.
+ if element[0].tag == NSMAP % 'line':
+ # Loop over the "line" elements removing comments and chords.
+ for line in element:
+ if text:
+ text += u'\n'
+ text += self._process_lines_mixed_content(line, newlines=False)
+ # OpenLyrics 0.8 uses for new lines.
+ # Append text from "lines" element to verse text.
+ else:
+ text = self._process_lines_mixed_content(element)
+
+ return text
def _process_lyrics(self, properties, song_xml, song_obj):
"""
@@ -637,14 +675,8 @@ class OpenLyrics(object):
for lines in verse.lines:
if text:
text += u'\n'
- # Loop over the "line" elements removing chords.
- lines_text = u''
- for line in lines.line:
- if lines_text:
- lines_text += u'\n'
- lines_text += self._process_verse_line(line)
# Append text from "lines" element to verse text.
- text += lines_text
+ text += self._process_verse_lines(lines)
# Add a virtual split to the verse text.
if lines.get(u'break') is not None:
text += u'\n[---]'
From 54a1e25cb7e90a809977e937033b71bf13c02497 Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Tue, 20 Sep 2011 18:24:07 +0200
Subject: [PATCH 57/68] Trying to fix bug #803342
---
openlp/core/utils/__init__.py | 6 +++---
openlp/plugins/presentations/lib/mediaitem.py | 1 +
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py
index 3612bb002..2d800d1b0 100644
--- a/openlp/core/utils/__init__.py
+++ b/openlp/core/utils/__init__.py
@@ -475,11 +475,11 @@ def get_uno_command():
Returns the UNO command to launch an openoffice.org instance.
"""
COMMAND = u'soffice'
- OPTIONS = u'-nologo -norestore -minimized -nodefault -nofirststartwizard'
+ OPTIONS = u'--nologo --norestore --minimized --nodefault --nofirststartwizard'
if UNO_CONNECTION_TYPE == u'pipe':
- CONNECTION = u'"-accept=pipe,name=openlp_pipe;urp;"'
+ CONNECTION = u'"--accept=pipe,name=openlp_pipe;urp;"'
else:
- CONNECTION = u'"-accept=socket,host=localhost,port=2002;urp;"'
+ CONNECTION = u'"--accept=socket,host=localhost,port=2002;urp;"'
return u'%s %s %s' % (COMMAND, OPTIONS, CONNECTION)
def get_uno_instance(resolver):
diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py
index 6c997a6b6..c6455a03a 100644
--- a/openlp/plugins/presentations/lib/mediaitem.py
+++ b/openlp/plugins/presentations/lib/mediaitem.py
@@ -56,6 +56,7 @@ class PresentationMediaItem(MediaManagerItem):
MediaManagerItem.__init__(self, parent, plugin, icon)
self.message_listener = MessageListener(self)
self.hasSearch = True
+ self.singleServiceItem = False
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'mediaitem_presentation_rebuild'), self.rebuild)
# Allow DnD from the desktop
From bd3961eb5013adf04c2bcd8b9b18acd60bf5d01d Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Tue, 20 Sep 2011 18:26:04 +0200
Subject: [PATCH 58/68] Reverted a change for deprecated options (for now).
---
openlp/core/utils/__init__.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py
index 2d800d1b0..3612bb002 100644
--- a/openlp/core/utils/__init__.py
+++ b/openlp/core/utils/__init__.py
@@ -475,11 +475,11 @@ def get_uno_command():
Returns the UNO command to launch an openoffice.org instance.
"""
COMMAND = u'soffice'
- OPTIONS = u'--nologo --norestore --minimized --nodefault --nofirststartwizard'
+ OPTIONS = u'-nologo -norestore -minimized -nodefault -nofirststartwizard'
if UNO_CONNECTION_TYPE == u'pipe':
- CONNECTION = u'"--accept=pipe,name=openlp_pipe;urp;"'
+ CONNECTION = u'"-accept=pipe,name=openlp_pipe;urp;"'
else:
- CONNECTION = u'"--accept=socket,host=localhost,port=2002;urp;"'
+ CONNECTION = u'"-accept=socket,host=localhost,port=2002;urp;"'
return u'%s %s %s' % (COMMAND, OPTIONS, CONNECTION)
def get_uno_instance(resolver):
From b0dc146043361df166dc616dc3d6840b5594789b Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Tue, 20 Sep 2011 19:53:09 +0200
Subject: [PATCH 59/68] Added the default background colour back in so that the
rest of the app that is not expecting to have to supply a background colour
doesn't have to be changed.
Fixes: https://launchpad.net/bugs/803342
---
openlp/core/lib/__init__.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index 1454f877e..e24045883 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -144,7 +144,7 @@ def image_to_byte(image):
# convert to base64 encoding so does not get missed!
return byte_array.toBase64()
-def resize_image(image_path, width, height, background):
+def resize_image(image_path, width, height, background=u'#000000'):
"""
Resize an image to fit on the current screen.
@@ -159,6 +159,8 @@ def resize_image(image_path, width, height, background):
``background``
The background colour defaults to black.
+
+ DO NOT REMOVE THE DEFAULT BACKGROUND VALUE!
"""
log.debug(u'resize_image - start')
reader = QtGui.QImageReader(image_path)
From 6e4c619cbd992ad53cd367b326635b48b4429a27 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Wed, 21 Sep 2011 01:06:43 +0200
Subject: [PATCH 60/68] Add openlyrics export with formatting tags support.
---
openlp/plugins/songs/lib/xml.py | 57 +++++++++++++++++++--------------
1 file changed, 33 insertions(+), 24 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 4484e1700..d99f58396 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -260,8 +260,8 @@ class OpenLyrics(object):
def __init__(self, manager):
self.manager = manager
- self.start_tags_regex = re.compile(r'\{\w+\}') # {abc}
- self.end_tags_regex = re.compile(r'\{\/\w+\}') # {/abc}
+ self.start_tags_regex = re.compile(r'\{(\w+)\}') # {abc} -> abc
+ self.end_tags_regex = re.compile(r'\{\/(\w+)\}') # {/abc} -> abc
def song_to_xml(self, song):
"""
@@ -336,19 +336,12 @@ class OpenLyrics(object):
# Create a list with all "virtual" verses.
virtual_verses = verse[1].split(u'[---]')
for index, virtual_verse in enumerate(virtual_verses):
- lines_element = \
- self._add_text_to_element(u'lines', verse_element)
+ # Add formatting tags to text
+ lines_element =self._add_text_with_tags_to_lines(verse_element,
+ virtual_verse, tags_element)
# Do not add the break attribute to the last lines element.
if index < len(virtual_verses) - 1:
lines_element.set(u'break', u'optional')
- for line in virtual_verse.strip(u'\n').split(u'\n'):
- # Process only lines containing formatting tags
- if self.start_tags_regex.search(line):
- # add formatting tags to text
- self._add_line_with_tags_to_lines(lines_element, line,
- tags_element)
- else:
- self._add_text_to_element(u'line', lines_element, line)
return self._extract_xml(song_xml)
def xml_to_song(self, xml, parse_and_not_save=False):
@@ -420,32 +413,48 @@ class OpenLyrics(object):
el = self._add_text_to_element(u'tag', tags_element)
el.set(u'name', tag_name)
el_open = self._add_text_to_element(u'open', el)
- el_close = self._add_text_to_element(u'close', el)
el_open.text = etree.CDATA(t[u'start html'])
- el_close.text = etree.CDATA(t[u'end html'])
+ # Check if formatting tag contains end tag. Some formatting
+ # tags e.g. {br} has only start tag. If no end tag is present
+ # element has not to be in OpenLyrics xml.
+ if t['end tag']:
+ el_close = self._add_text_to_element(u'close', el)
+ el_close.text = etree.CDATA(t[u'end html'])
- def _add_line_with_tags_to_lines(self, parent, text, tags_element):
+ def _add_text_with_tags_to_lines(self, verse_element, text, tags_element):
"""
Convert text with formatting tags from OpenLP format to OpenLyrics
format and append it to element ````.
"""
- # Tags already converted to xml structure.
- xml_tags = tags_element.xpath(u'tag/attribute::name')
start_tags = self.start_tags_regex.findall(text)
end_tags = self.end_tags_regex.findall(text)
+
# Replace start tags with xml syntax.
for tag in start_tags:
- name = tag[1:-1]
- text = text.replace(tag, u'' % name)
+ # Tags already converted to xml structure.
+ xml_tags = tags_element.xpath(u'tag/attribute::name')
+ # Some formatting tag has only starting part e.g. .
+ # Handle this case.
+ if tag in end_tags:
+ text = text.replace(u'{%s}' % tag, u'' % tag)
+ else:
+ text = text.replace(u'{%s}' % tag, u'' % tag)
# Add tag to element if tag not present.
- if name not in xml_tags:
- self._add_tag_to_formatting(name, tags_element)
+ if tag not in xml_tags:
+ self._add_tag_to_formatting(tag, tags_element)
+
# Replace end tags.
for t in end_tags:
- text = text.replace(t, u'')
- text = u'' + text + u''
+ print repr(t)
+ text = text.replace(u'{/%s}' % t, u'')
+
+ # Replace \n with .
+ text = text.replace(u'\n', u' ')
+ text = u'' + text + u''
+ print repr(text)
element = etree.XML(text)
- parent.append(element)
+ verse_element.append(element)
+ return element
def _extract_xml(self, xml):
"""
From 58695ac6f62cc07cc2ba34775d97d53e61014420 Mon Sep 17 00:00:00 2001
From: Tim Bentley
Date: Wed, 21 Sep 2011 18:23:04 +0100
Subject: [PATCH 61/68] Change None to u'' for printing
Fixes: https://launchpad.net/bugs/855368
---
openlp/core/lib/serviceitem.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py
index 05a1128b1..3170e0a93 100644
--- a/openlp/core/lib/serviceitem.py
+++ b/openlp/core/lib/serviceitem.py
@@ -466,7 +466,7 @@ class ServiceItem(object):
'Length: %s')) % \
unicode(datetime.timedelta(seconds=self.media_length))
if not start and not end:
- return None
+ return u''
elif start and not end:
return start
elif not start and end:
From e3ecee8ae5a9f38a8a809f15d9fd0181deea1161 Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Wed, 21 Sep 2011 22:47:30 +0200
Subject: [PATCH 62/68] Fixed bug #855342 where saving an already-saved service
file with an audio file in it caused an exception.
Fixes: https://launchpad.net/bugs/855342
---
openlp/core/ui/servicemanager.py | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py
index d2d7450ca..c6ffaaccc 100644
--- a/openlp/core/ui/servicemanager.py
+++ b/openlp/core/ui/servicemanager.py
@@ -554,6 +554,18 @@ class ServiceManager(QtGui.QWidget):
for path_from in write_list:
zip.write(path_from, path_from.encode(u'utf-8'))
for path_from, path_to in audio_files:
+ if path_from == path_to:
+ # If this file has already been saved, let's use set the
+ # from path to the real location of the files
+ path_from = os.path.join(self.servicePath, path_from)
+ else:
+ # If this file has not yet been saved, let's copy the file
+ # to the service manager path
+ save_file = os.path.join(self.servicePath, path_to)
+ save_path = os.path.split(save_file)[0]
+ if not os.path.exists(save_path):
+ os.makedirs(save_path)
+ shutil.copy(path_from, save_file)
zip.write(path_from, path_to.encode(u'utf-8'))
except IOError:
log.exception(u'Failed to save service to disk')
From 8b6887036b05855f28bd7da19ec46ac5325692e5 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Thu, 22 Sep 2011 16:23:51 +0200
Subject: [PATCH 63/68] Fix regressions with users tags in preview and
import/export in openlyrics
---
openlp/core/lib/formattingtags.py | 26 ++++++++++++++++++++++++--
openlp/core/ui/formattingtagform.py | 25 ++-----------------------
openlp/plugins/songs/lib/xml.py | 26 +++++++-------------------
3 files changed, 33 insertions(+), 44 deletions(-)
diff --git a/openlp/core/lib/formattingtags.py b/openlp/core/lib/formattingtags.py
index 529a8c029..6a0013635 100644
--- a/openlp/core/lib/formattingtags.py
+++ b/openlp/core/lib/formattingtags.py
@@ -33,6 +33,7 @@ from PyQt4 import QtCore
from openlp.core.lib import translate
+
class FormattingTags(object):
"""
Static Class to HTML Tags to be access around the code the list is managed
@@ -45,6 +46,8 @@ class FormattingTags(object):
"""
Provide access to the html_expands list.
"""
+ # Load user defined tags otherwise user defined tags are not present.
+ FormattingTags.load_tags()
return FormattingTags.html_expands
@staticmethod
@@ -63,7 +66,7 @@ class FormattingTags(object):
u'start html': u'',
u'end tag': u'{/r}', u'end html': u'', u'protected': True,
u'temporary': False})
- base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Black'),
+ base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Black'),
u'start tag': u'{b}',
u'start html': u'',
u'end tag': u'{/b}', u'end html': u'', u'protected': True,
@@ -144,13 +147,32 @@ class FormattingTags(object):
Saves all formatting tags except protected ones.
"""
tags = []
- for tag in FormattingTags.get_html_tags():
+ for tag in FormattingTags.html_expands:
if not tag[u'protected'] and not tag[u'temporary']:
tags.append(tag)
# Formatting Tags were also known as display tags.
QtCore.QSettings().setValue(u'displayTags/html_tags',
QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
+ @staticmethod
+ def load_tags():
+ """
+ Load the Tags from store so can be used in the system or used to
+ update the display. If Cancel was selected this is needed to reset the
+ dsiplay to the correct version.
+ """
+ # Initial Load of the Tags
+ FormattingTags.reset_html_tags()
+ # Formatting Tags were also known as display tags.
+ user_expands = QtCore.QSettings().value(u'displayTags/html_tags',
+ QtCore.QVariant(u'')).toString()
+ # cPickle only accepts str not unicode strings
+ user_expands_string = str(unicode(user_expands).encode(u'utf8'))
+ if user_expands_string:
+ user_tags = cPickle.loads(user_expands_string)
+ # If we have some user ones added them as well
+ FormattingTags.add_html_tags(user_tags)
+
@staticmethod
def add_html_tags(tags, save=False):
"""
diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py
index fee27a9c6..df2c3d673 100644
--- a/openlp/core/ui/formattingtagform.py
+++ b/openlp/core/ui/formattingtagform.py
@@ -30,14 +30,13 @@ protected and included each time loaded. Custom tags can be defined and saved.
The Custom Tag arrays are saved in a pickle so QSettings works on them. Base
Tags cannot be changed.
"""
-import cPickle
-
from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate, FormattingTags
from openlp.core.lib.ui import critical_error_message_box
from openlp.core.ui.formattingtagdialog import Ui_FormattingTagDialog
+
class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
"""
The :class:`FormattingTagForm` manages the settings tab .
@@ -48,7 +47,6 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
"""
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
- self._loadFormattingTags()
QtCore.QObject.connect(self.tagTableWidget,
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onRowSelected)
QtCore.QObject.connect(self.newPushButton,
@@ -65,29 +63,10 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
Load Display and set field state.
"""
# Create initial copy from master
- self._loadFormattingTags()
self._resetTable()
self.selected = -1
return QtGui.QDialog.exec_(self)
- def _loadFormattingTags(self):
- """
- Load the Tags from store so can be used in the system or used to
- update the display. If Cancel was selected this is needed to reset the
- dsiplay to the correct version.
- """
- # Initial Load of the Tags
- FormattingTags.reset_html_tags()
- # Formatting Tags were also known as display tags.
- user_expands = QtCore.QSettings().value(u'displayTags/html_tags',
- QtCore.QVariant(u'')).toString()
- # cPickle only accepts str not unicode strings
- user_expands_string = str(unicode(user_expands).encode(u'utf8'))
- if user_expands_string:
- user_tags = cPickle.loads(user_expands_string)
- # If we have some user ones added them as well
- FormattingTags.add_html_tags(user_tags)
-
def onRowSelected(self):
"""
Table Row selected so display items and set field state.
@@ -199,7 +178,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
self.tagTableWidget.setItem(linenumber, 3,
QtGui.QTableWidgetItem(html[u'end html']))
# Tags saved prior to 1.9.7 do not have this key.
- if not html.has_key(u'temporary'):
+ if u'temporary' not in html:
html[u'temporary'] = False
self.tagTableWidget.resizeRowsToContents()
self.descriptionLineEdit.setText(u'')
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index d99f58396..4a0ebc6af 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -319,8 +319,8 @@ class OpenLyrics(object):
# Reset available tags.
FormattingTags.reset_html_tags()
# Named 'formatting' - 'format' is built-in fuction in Python.
- formatting = etree.SubElement(song_xml, u'format')
- tags_element = etree.SubElement(formatting, u'tags')
+ format_ = etree.SubElement(song_xml, u'format')
+ tags_element = etree.SubElement(format_, u'tags')
tags_element.set(u'application', u'OpenLP')
# Process the song's lyrics.
lyrics = etree.SubElement(song_xml, u'lyrics')
@@ -337,7 +337,7 @@ class OpenLyrics(object):
virtual_verses = verse[1].split(u'[---]')
for index, virtual_verse in enumerate(virtual_verses):
# Add formatting tags to text
- lines_element =self._add_text_with_tags_to_lines(verse_element,
+ lines_element = self._add_text_with_tags_to_lines(verse_element,
virtual_verse, tags_element)
# Do not add the break attribute to the last lines element.
if index < len(virtual_verses) - 1:
@@ -428,7 +428,6 @@ class OpenLyrics(object):
"""
start_tags = self.start_tags_regex.findall(text)
end_tags = self.end_tags_regex.findall(text)
-
# Replace start tags with xml syntax.
for tag in start_tags:
# Tags already converted to xml structure.
@@ -442,16 +441,12 @@ class OpenLyrics(object):
# Add tag to element if tag not present.
if tag not in xml_tags:
self._add_tag_to_formatting(tag, tags_element)
-
# Replace end tags.
for t in end_tags:
- print repr(t)
text = text.replace(u'{/%s}' % t, u'')
-
# Replace \n with .
text = text.replace(u'\n', u' ')
text = u'' + text + u''
- print repr(text)
element = etree.XML(text)
verse_element.append(element)
return element
@@ -558,7 +553,7 @@ class OpenLyrics(object):
continue
start_tag = u'{%s}' % name[:5]
# Some tags have only start tag e.g. {br}
- end_tag = u'{' + name[:5] + u'}' if hasattr(tag, 'close') else u''
+ end_tag = u'{/' + name[:5] + u'}' if hasattr(tag, 'close') else u''
openlp_tag = {
u'desc': name,
u'start tag': start_tag,
@@ -572,8 +567,9 @@ class OpenLyrics(object):
found_tags.append(openlp_tag)
existing_tag_ids = [tag[u'start tag']
for tag in FormattingTags.get_html_tags()]
- FormattingTags.add_html_tags([tag for tag in found_tags
- if tag[u'start tag'] not in existing_tag_ids], True)
+ new_tags = [tag for tag in found_tags
+ if tag[u'start tag'] not in existing_tag_ids]
+ FormattingTags.add_html_tags(new_tags, True)
def _process_lines_mixed_content(self, element, newlines=True):
"""
@@ -589,7 +585,6 @@ class OpenLyrics(object):
"""
text = u''
use_endtag = True
-
# Skip elements - not yet supported.
if element.tag == NSMAP % u'comment' and element.tail:
# Append tail text at chord element.
@@ -606,7 +601,6 @@ class OpenLyrics(object):
if element.tail:
text += element.tail
return text
-
# Start formatting tag.
if element.tag == NSMAP % u'tag':
text += u'{%s}' % element.get(u'name')
@@ -614,24 +608,19 @@ class OpenLyrics(object):
# Handle this case if element has no children and contains no text.
if len(element) == 0 and not element.text:
use_endtag = False
-
# Append text from element.
if element.text:
text += element.text
-
# Process nested formatting tags.
for child in element:
# Use recursion since nested formatting tags are allowed.
text += self._process_lines_mixed_content(child, newlines)
-
# Append text from tail and add formatting end tag.
if element.tag == NSMAP % 'tag' and use_endtag:
text += u'{/%s}' % element.get(u'name')
-
# Append text from tail.
if element.tail:
text += element.tail
-
return text
def _process_verse_lines(self, lines):
@@ -657,7 +646,6 @@ class OpenLyrics(object):
# Append text from "lines" element to verse text.
else:
text = self._process_lines_mixed_content(element)
-
return text
def _process_lyrics(self, properties, song_xml, song_obj):
From 77e4e376c62c8e231cc9cea0ef518168b8f83d9a Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Thu, 22 Sep 2011 22:07:31 +0200
Subject: [PATCH 64/68] Fixed bug #812289. Forced the mediaitem to get the
QListWidgetItem from the list again.
Fixes: https://launchpad.net/bugs/812289
---
openlp/plugins/songs/forms/editsongform.py | 2 +-
openlp/plugins/songs/lib/mediaitem.py | 11 +++++++----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py
index 146ef0422..1c254406c 100644
--- a/openlp/plugins/songs/forms/editsongform.py
+++ b/openlp/plugins/songs/forms/editsongform.py
@@ -682,7 +682,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
text = unicode(self.songBookComboBox.currentText())
if item == 0 and text:
temp_song_book = text
- self.mediaitem.song_maintenance_form.exec_()
+ self.mediaitem.songMaintenanceForm.exec_()
self.loadAuthors()
self.loadBooks()
self.loadTopics()
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index 7d5e85af5..ac56b4c53 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -239,7 +239,7 @@ class SongMediaItem(MediaManagerItem):
+ u'%'),
Song.comments.like(u'%' + search_keywords.lower() + u'%')))
- def onSongListLoad(self):
+ def onSongListLoad(self, item_id=None):
"""
Handle the exit from the edit dialog and trigger remote updates
of songs
@@ -371,7 +371,7 @@ class SongMediaItem(MediaManagerItem):
self.editSongForm.loadSong(item_id, False)
self.editSongForm.exec_()
self.autoSelectId = -1
- self.onSongListLoad()
+ self.onSongListLoad(item_id)
self.editItem = None
def onDeleteClick(self):
@@ -428,8 +428,11 @@ class SongMediaItem(MediaManagerItem):
def generateSlideData(self, service_item, item=None, xmlVersion=False,
remote=False):
- log.debug(u'generateSlideData (%s:%s)' % (service_item, item))
- item_id = self._getIdOfItemToGenerate(item, self.remoteSong)
+ log.debug(u'generateSlideData: %s, %s, %s' % (service_item, item, self.remoteSong))
+ # The ``None`` below is a workaround for bug #812289 - I think that Qt
+ # deletes the item somewhere along the line because the user is taking
+ # so long to update their item (or something weird like that).
+ item_id = self._getIdOfItemToGenerate(None, self.remoteSong)
service_item.add_capability(ItemCapabilities.CanEdit)
service_item.add_capability(ItemCapabilities.CanPreview)
service_item.add_capability(ItemCapabilities.CanLoop)
From 354bec8b33c8c7de68d28a5250cf59acd381a0ee Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Thu, 22 Sep 2011 22:30:15 +0200
Subject: [PATCH 65/68] Fix - do not save temporary key by formatting tags into
openlp configuration
---
openlp/core/lib/formattingtags.py | 8 ++++++--
openlp/core/ui/formattingtagform.py | 2 +-
openlp/plugins/songs/lib/xml.py | 5 ++++-
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/openlp/core/lib/formattingtags.py b/openlp/core/lib/formattingtags.py
index 6a0013635..ea5547f27 100644
--- a/openlp/core/lib/formattingtags.py
+++ b/openlp/core/lib/formattingtags.py
@@ -56,7 +56,7 @@ class FormattingTags(object):
Resets the html_expands list.
"""
temporary_tags = [tag for tag in FormattingTags.html_expands
- if tag[u'temporary']]
+ if tag.get(u'temporary')]
FormattingTags.html_expands = []
base_tags = []
# Append the base tags.
@@ -148,8 +148,12 @@ class FormattingTags(object):
"""
tags = []
for tag in FormattingTags.html_expands:
- if not tag[u'protected'] and not tag[u'temporary']:
+ if not tag[u'protected'] and not tag.get(u'temporary'):
tags.append(tag)
+ # Remove key 'temporary' from tags. It is not needed to be saved.
+ for tag in tags:
+ if u'temporary' in tag:
+ del tag[u'temporary']
# Formatting Tags were also known as display tags.
QtCore.QSettings().setValue(u'displayTags/html_tags',
QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py
index df2c3d673..a08b004ca 100644
--- a/openlp/core/ui/formattingtagform.py
+++ b/openlp/core/ui/formattingtagform.py
@@ -177,7 +177,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
QtGui.QTableWidgetItem(html[u'start html']))
self.tagTableWidget.setItem(linenumber, 3,
QtGui.QTableWidgetItem(html[u'end html']))
- # Tags saved prior to 1.9.7 do not have this key.
+ # Permanent (persistent) tags do not have this key.
if u'temporary' not in html:
html[u'temporary'] = False
self.tagTableWidget.resizeRowsToContents()
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 4a0ebc6af..d9aafd23f 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -562,8 +562,11 @@ class OpenLyrics(object):
# Some tags have only start html e.g. {br}
u'end html': tag.close.text if hasattr(tag, 'close') else u'',
u'protected': False,
- u'temporary': temporary
}
+ # Add 'temporary' key in case the formatting tag should not be
+ # saved otherwise it is supposed that formatting tag is permanent.
+ if temporary:
+ openlp_tag[u'temporary'] = temporary
found_tags.append(openlp_tag)
existing_tag_ids = [tag[u'start tag']
for tag in FormattingTags.get_html_tags()]
From a6821c0b7d74d4bc433b0fbd259e135aa0446ab8 Mon Sep 17 00:00:00 2001
From: Raoul Snyman
Date: Thu, 22 Sep 2011 22:39:27 +0200
Subject: [PATCH 66/68] Removed some unnecessary experimental code.
---
openlp/plugins/songs/lib/mediaitem.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index ac56b4c53..f20095500 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -239,7 +239,7 @@ class SongMediaItem(MediaManagerItem):
+ u'%'),
Song.comments.like(u'%' + search_keywords.lower() + u'%')))
- def onSongListLoad(self, item_id=None):
+ def onSongListLoad(self):
"""
Handle the exit from the edit dialog and trigger remote updates
of songs
@@ -371,7 +371,7 @@ class SongMediaItem(MediaManagerItem):
self.editSongForm.loadSong(item_id, False)
self.editSongForm.exec_()
self.autoSelectId = -1
- self.onSongListLoad(item_id)
+ self.onSongListLoad()
self.editItem = None
def onDeleteClick(self):
From 1ef223b4a39036a3990172450901cc70f746e9b4 Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Fri, 23 Sep 2011 02:12:55 +0200
Subject: [PATCH 67/68] Fix issues with ignoring comments and chords
---
openlp/plugins/songs/lib/xml.py | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index d9aafd23f..5b36a7cb9 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -589,14 +589,16 @@ class OpenLyrics(object):
text = u''
use_endtag = True
# Skip elements - not yet supported.
- if element.tag == NSMAP % u'comment' and element.tail:
- # Append tail text at chord element.
- text += element.tail
+ if element.tag == NSMAP % u'comment':
+ if element.tail:
+ # Append tail text at chord element.
+ text += element.tail
return text
# Skip element - not yet supported.
- elif element.tag == NSMAP % u'chord' and element.tail:
- # Append tail text at chord element.
- text += element.tail
+ elif element.tag == NSMAP % u'chord':
+ if element.tail:
+ # Append tail text at chord element.
+ text += element.tail
return text
# Convert line breaks to \n.
elif newlines and element.tag == NSMAP % u'br':
@@ -626,7 +628,7 @@ class OpenLyrics(object):
text += element.tail
return text
- def _process_verse_lines(self, lines):
+ def _process_verse_lines(self, lines, version):
"""
Converts lyrics lines to OpenLP representation.
@@ -637,18 +639,22 @@ class OpenLyrics(object):
# Convert lxml.objectify to lxml.etree representation.
lines = etree.tostring(lines)
element = etree.XML(lines)
+
+ # OpenLyrics 0.8 uses for new lines.
+ # Append text from "lines" element to verse text.
+ if version > '0.7':
+ text = self._process_lines_mixed_content(element)
# OpenLyrics version <= 0.7 contais elements to represent lines.
# First child element is tested.
- if element[0].tag == NSMAP % 'line':
+ else:
# Loop over the "line" elements removing comments and chords.
for line in element:
+ # Skip comment lines.
+ if line.tag == NSMAP % u'comment':
+ continue
if text:
text += u'\n'
text += self._process_lines_mixed_content(line, newlines=False)
- # OpenLyrics 0.8 uses for new lines.
- # Append text from "lines" element to verse text.
- else:
- text = self._process_lines_mixed_content(element)
return text
def _process_lyrics(self, properties, song_xml, song_obj):
@@ -676,7 +682,8 @@ class OpenLyrics(object):
if text:
text += u'\n'
# Append text from "lines" element to verse text.
- text += self._process_verse_lines(lines)
+ text += self._process_verse_lines(lines,
+ version=song_xml.get(u'version'))
# Add a virtual split to the verse text.
if lines.get(u'break') is not None:
text += u'\n[---]'
From 7d016dd6a6f053baa4861d1f250424562e33246c Mon Sep 17 00:00:00 2001
From: Martin Zibricky
Date: Fri, 23 Sep 2011 02:41:01 +0200
Subject: [PATCH 68/68] Fix regressions with formattingtagsform
---
openlp/core/ui/formattingtagform.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/openlp/core/ui/formattingtagform.py b/openlp/core/ui/formattingtagform.py
index a08b004ca..e7435e5b7 100644
--- a/openlp/core/ui/formattingtagform.py
+++ b/openlp/core/ui/formattingtagform.py
@@ -57,6 +57,8 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
QtCore.SIGNAL(u'pressed()'), self.onDeletePushed)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
self.close)
+ # Forces reloading of tags from openlp configuration.
+ FormattingTags.load_tags()
def exec_(self):
"""
@@ -72,7 +74,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
Table Row selected so display items and set field state.
"""
row = self.tagTableWidget.currentRow()
- html = FormattingTags.get_html_tags()[row]
+ html = FormattingTags.html_expands[row]
self.selected = row
self.descriptionLineEdit.setText(html[u'desc'])
self.tagLineEdit.setText(self._strip(html[u'start tag']))
@@ -97,7 +99,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
"""
Add a new tag to list only if it is not a duplicate.
"""
- for html in FormattingTags.get_html_tags():
+ for html in FormattingTags.html_expands:
if self._strip(html[u'start tag']) == u'n':
critical_error_message_box(
translate('OpenLP.FormattingTagForm', 'Update Error'),
@@ -135,7 +137,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
"""
Update Custom Tag details if not duplicate and save the data.
"""
- html_expands = FormattingTags.get_html_tags()
+ html_expands = FormattingTags.html_expands
if self.selected != -1:
html = html_expands[self.selected]
tag = unicode(self.tagLineEdit.text())
@@ -167,7 +169,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
self.newPushButton.setEnabled(True)
self.savePushButton.setEnabled(False)
self.deletePushButton.setEnabled(False)
- for linenumber, html in enumerate(FormattingTags.get_html_tags()):
+ for linenumber, html in enumerate(FormattingTags.html_expands):
self.tagTableWidget.setRowCount(self.tagTableWidget.rowCount() + 1)
self.tagTableWidget.setItem(linenumber, 0,
QtGui.QTableWidgetItem(html[u'desc']))