sync with head

This commit is contained in:
rimach 2011-09-28 22:57:01 +02:00
commit 33d9ce07ac
30 changed files with 3168 additions and 10686 deletions

View File

@ -27,9 +27,13 @@
""" """
Provide HTML Tag management and Formatting Tag access class Provide HTML Tag management and Formatting Tag access class
""" """
import cPickle
from PyQt4 import QtCore
from openlp.core.lib import translate from openlp.core.lib import translate
class FormattingTags(object): class FormattingTags(object):
""" """
Static Class to HTML Tags to be access around the code the list is managed Static Class to HTML Tags to be access around the code the list is managed
@ -42,6 +46,8 @@ class FormattingTags(object):
""" """
Provide access to the html_expands list. 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 return FormattingTags.html_expands
@staticmethod @staticmethod
@ -49,6 +55,8 @@ class FormattingTags(object):
""" """
Resets the html_expands list. Resets the html_expands list.
""" """
temporary_tags = [tag for tag in FormattingTags.html_expands
if tag.get(u'temporary')]
FormattingTags.html_expands = [] FormattingTags.html_expands = []
base_tags = [] base_tags = []
# Append the base tags. # Append the base tags.
@ -56,75 +64,160 @@ class FormattingTags(object):
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Red'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Red'),
u'start tag': u'{r}', u'start tag': u'{r}',
u'start html': u'<span style="-webkit-text-fill-color:red">', u'start html': u'<span style="-webkit-text-fill-color:red">',
u'end tag': u'{/r}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/r}', u'end html': u'</span>', u'protected': True,
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Black'), u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Black'),
u'start tag': u'{b}', u'start tag': u'{b}',
u'start html': u'<span style="-webkit-text-fill-color:black">', u'start html': u'<span style="-webkit-text-fill-color:black">',
u'end tag': u'{/b}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/b}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Blue'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Blue'),
u'start tag': u'{bl}', u'start tag': u'{bl}',
u'start html': u'<span style="-webkit-text-fill-color:blue">', u'start html': u'<span style="-webkit-text-fill-color:blue">',
u'end tag': u'{/bl}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/bl}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Yellow'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Yellow'),
u'start tag': u'{y}', u'start tag': u'{y}',
u'start html': u'<span style="-webkit-text-fill-color:yellow">', u'start html': u'<span style="-webkit-text-fill-color:yellow">',
u'end tag': u'{/y}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/y}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Green'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Green'),
u'start tag': u'{g}', u'start tag': u'{g}',
u'start html': u'<span style="-webkit-text-fill-color:green">', u'start html': u'<span style="-webkit-text-fill-color:green">',
u'end tag': u'{/g}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/g}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Pink'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Pink'),
u'start tag': u'{pk}', u'start tag': u'{pk}',
u'start html': u'<span style="-webkit-text-fill-color:#FFC0CB">', u'start html': u'<span style="-webkit-text-fill-color:#FFC0CB">',
u'end tag': u'{/pk}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/pk}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Orange'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Orange'),
u'start tag': u'{o}', u'start tag': u'{o}',
u'start html': u'<span style="-webkit-text-fill-color:#FFA500">', u'start html': u'<span style="-webkit-text-fill-color:#FFA500">',
u'end tag': u'{/o}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/o}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Purple'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Purple'),
u'start tag': u'{pp}', u'start tag': u'{pp}',
u'start html': u'<span style="-webkit-text-fill-color:#800080">', u'start html': u'<span style="-webkit-text-fill-color:#800080">',
u'end tag': u'{/pp}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/pp}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'White'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'White'),
u'start tag': u'{w}', u'start tag': u'{w}',
u'start html': u'<span style="-webkit-text-fill-color:white">', u'start html': u'<span style="-webkit-text-fill-color:white">',
u'end tag': u'{/w}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/w}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({ base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Superscript'), u'desc': translate('OpenLP.FormattingTags', 'Superscript'),
u'start tag': u'{su}', u'start html': u'<sup>', u'start tag': u'{su}', u'start html': u'<sup>',
u'end tag': u'{/su}', u'end html': u'</sup>', u'protected': True}) u'end tag': u'{/su}', u'end html': u'</sup>', u'protected': True,
u'temporary': False})
base_tags.append({ base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Subscript'), u'desc': translate('OpenLP.FormattingTags', 'Subscript'),
u'start tag': u'{sb}', u'start html': u'<sub>', u'start tag': u'{sb}', u'start html': u'<sub>',
u'end tag': u'{/sb}', u'end html': u'</sub>', u'protected': True}) u'end tag': u'{/sb}', u'end html': u'</sub>', u'protected': True,
u'temporary': False})
base_tags.append({ base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Paragraph'), u'desc': translate('OpenLP.FormattingTags', 'Paragraph'),
u'start tag': u'{p}', u'start html': u'<p>', u'end tag': u'{/p}', u'start tag': u'{p}', u'start html': u'<p>', u'end tag': u'{/p}',
u'end html': u'</p>', u'protected': True}) u'end html': u'</p>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Bold'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Bold'),
u'start tag': u'{st}', u'start html': u'<strong>', u'start tag': u'{st}', u'start html': u'<strong>',
u'end tag': u'{/st}', u'end html': u'</strong>', u'end tag': u'{/st}', u'end html': u'</strong>',
u'protected': True}) u'protected': True, u'temporary': False})
base_tags.append({ base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Italics'), u'desc': translate('OpenLP.FormattingTags', 'Italics'),
u'start tag': u'{it}', u'start html': u'<em>', u'end tag': u'{/it}', u'start tag': u'{it}', u'start html': u'<em>', u'end tag': u'{/it}',
u'end html': u'</em>', u'protected': True}) u'end html': u'</em>', u'protected': True, u'temporary': False})
base_tags.append({ base_tags.append({
u'desc': translate('OpenLP.FormattingTags', 'Underline'), u'desc': translate('OpenLP.FormattingTags', 'Underline'),
u'start tag': u'{u}', u'start tag': u'{u}',
u'start html': u'<span style="text-decoration: underline;">', u'start html': u'<span style="text-decoration: underline;">',
u'end tag': u'{/u}', u'end html': u'</span>', u'protected': True}) u'end tag': u'{/u}', u'end html': u'</span>', u'protected': True,
u'temporary': False})
base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Break'), base_tags.append({u'desc': translate('OpenLP.FormattingTags', 'Break'),
u'start tag': u'{br}', u'start html': u'<br>', u'end tag': u'', u'start tag': u'{br}', u'start html': u'<br>', 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) FormattingTags.add_html_tags(base_tags)
FormattingTags.add_html_tags(temporary_tags)
@staticmethod @staticmethod
def add_html_tags(tags): def save_html_tags():
""" """
Add a list of tags to the list Saves all formatting tags except protected ones.
"""
tags = []
for tag in FormattingTags.html_expands:
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''))
@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):
"""
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
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 ``<span style="
-webkit-text-fill-color:red">``
* end html
The end html tag. For example ``</span>``
* 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) FormattingTags.html_expands.extend(tags)
if save:
FormattingTags.save_html_tags()
@staticmethod @staticmethod
def remove_html_tag(tag_id): def remove_html_tag(tag_id):

View File

@ -34,8 +34,8 @@ from openlp.core.lib.theme import BackgroundType, BackgroundGradientType, \
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
# FIXME: Add html5 doctype. However, do not break theme gradients.
HTMLSRC = u""" HTMLSRC = u"""
<!DOCTYPE html>
<html> <html>
<head> <head>
<title>OpenLP Display</title> <title>OpenLP Display</title>
@ -330,7 +330,7 @@ def build_background_css(item, width, height):
background = \ background = \
u'background: ' \ u'background: ' \
u'-webkit-gradient(linear, left top, left bottom, ' \ u'-webkit-gradient(linear, left top, left bottom, ' \
'from(%s), to(%s))' % (theme.background_start_color, 'from(%s), to(%s)) fixed' % (theme.background_start_color,
theme.background_end_color) theme.background_end_color)
elif theme.background_direction == \ elif theme.background_direction == \
BackgroundGradientType.to_string( \ BackgroundGradientType.to_string( \
@ -338,7 +338,7 @@ def build_background_css(item, width, height):
background = \ background = \
u'background: ' \ u'background: ' \
u'-webkit-gradient(linear, left top, right bottom, ' \ u'-webkit-gradient(linear, left top, right bottom, ' \
'from(%s), to(%s))' % (theme.background_start_color, 'from(%s), to(%s)) fixed' % (theme.background_start_color,
theme.background_end_color) theme.background_end_color)
elif theme.background_direction == \ elif theme.background_direction == \
BackgroundGradientType.to_string \ BackgroundGradientType.to_string \
@ -346,20 +346,21 @@ def build_background_css(item, width, height):
background = \ background = \
u'background: ' \ u'background: ' \
u'-webkit-gradient(linear, left bottom, right top, ' \ u'-webkit-gradient(linear, left bottom, right top, ' \
'from(%s), to(%s))' % (theme.background_start_color, 'from(%s), to(%s)) fixed' % (theme.background_start_color,
theme.background_end_color) theme.background_end_color)
elif theme.background_direction == \ elif theme.background_direction == \
BackgroundGradientType.to_string \ BackgroundGradientType.to_string \
(BackgroundGradientType.Vertical): (BackgroundGradientType.Vertical):
background = \ background = \
u'background: -webkit-gradient(linear, left top, ' \ u'background: -webkit-gradient(linear, left top, ' \
u'right top, from(%s), to(%s))' % \ u'right top, from(%s), to(%s)) fixed' % \
(theme.background_start_color, theme.background_end_color) (theme.background_start_color, theme.background_end_color)
else: else:
background = \ background = \
u'background: -webkit-gradient(radial, %s 50%%, 100, %s ' \ u'background: -webkit-gradient(radial, %s 50%%, 100, %s ' \
u'50%%, %s, from(%s), to(%s))' % (width, width, width, u'50%%, %s, from(%s), to(%s)) fixed' % (width, width,
theme.background_start_color, theme.background_end_color) width, theme.background_start_color,
theme.background_end_color)
return background return background
def build_lyrics_css(item, webkitvers): def build_lyrics_css(item, webkitvers):
@ -483,11 +484,15 @@ def build_lyrics_format_css(theme, width, height):
left_margin = int(theme.font_main_outline_size) * 2 left_margin = int(theme.font_main_outline_size) * 2
else: else:
left_margin = 0 left_margin = 0
lyrics = u'white-space:pre-wrap; word-wrap: break-word; ' \ justify = u'white-space:pre-wrap;'
# fix tag incompatibilities
if theme.display_horizontal_align == HorizontalType.Justify:
justify = u''
lyrics = u'%s word-wrap: break-word; ' \
'text-align: %s; vertical-align: %s; font-family: %s; ' \ 'text-align: %s; vertical-align: %s; font-family: %s; ' \
'font-size: %spt; color: %s; line-height: %d%%; margin: 0;' \ 'font-size: %spt; color: %s; line-height: %d%%; margin: 0;' \
'padding: 0; padding-left: %spx; width: %spx; height: %spx; ' % \ 'padding: 0; padding-left: %spx; width: %spx; height: %spx; ' % \
(align, valign, theme.font_main_name, theme.font_main_size, (justify, align, valign, theme.font_main_name, theme.font_main_size,
theme.font_main_color, 100 + int(theme.font_main_line_adjustment), theme.font_main_color, 100 + int(theme.font_main_line_adjustment),
left_margin, width, height) left_margin, width, height)
if theme.font_main_outline: if theme.font_main_outline:

View File

@ -44,6 +44,7 @@ VERSE = u'The Lord said to {r}Noah{/r}: \n' \
'Get those children out of the muddy, muddy \n' \ 'Get those children out of the muddy, muddy \n' \
'{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}' \ '{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}' \
'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n' 'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n'
VERSE_FOR_LINE_COUNT = u'\n'.join(map(unicode, xrange(50)))
FOOTER = [u'Arky Arky (Unknown)', u'Public Domain', u'CCLI 123456'] FOOTER = [u'Arky Arky (Unknown)', u'Public Domain', u'CCLI 123456']
class Renderer(object): class Renderer(object):
@ -193,7 +194,7 @@ class Renderer(object):
serviceItem.theme = theme_data serviceItem.theme = theme_data
if self.force_page: if self.force_page:
# make big page for theme edit dialog to get line count # make big page for theme edit dialog to get line count
serviceItem.add_from_text(u'', VERSE + VERSE + VERSE) serviceItem.add_from_text(u'', VERSE_FOR_LINE_COUNT)
else: else:
self.imageManager.del_image(theme_data.theme_name) self.imageManager.del_image(theme_data.theme_name)
serviceItem.add_from_text(u'', VERSE) serviceItem.add_from_text(u'', VERSE)
@ -227,14 +228,10 @@ class Renderer(object):
# Bibles # Bibles
if item.is_capable(ItemCapabilities.CanWordSplit): if item.is_capable(ItemCapabilities.CanWordSplit):
pages = self._paginate_slide_words(text.split(u'\n'), line_end) pages = self._paginate_slide_words(text.split(u'\n'), line_end)
else: # Songs and Custom
# Clean up line endings. elif item.is_capable(ItemCapabilities.CanSoftBreak):
lines = self._lines_split(text) pages = []
pages = self._paginate_slide(lines, line_end) if u'[---]' in text:
# Songs and Custom
if item.is_capable(ItemCapabilities.CanSoftBreak) and \
len(pages) > 1 and u'[---]' in text:
pages = []
while True: while True:
slides = text.split(u'\n[---]\n', 2) slides = text.split(u'\n[---]\n', 2)
# If there are (at least) two occurrences of [---] we use # If there are (at least) two occurrences of [---] we use
@ -275,6 +272,11 @@ class Renderer(object):
lines = text.strip(u'\n').split(u'\n') lines = text.strip(u'\n').split(u'\n')
pages.extend(self._paginate_slide(lines, line_end)) pages.extend(self._paginate_slide(lines, line_end))
break break
else:
# Clean up line endings.
pages = self._paginate_slide(text.split(u'\n'), line_end)
else:
pages = self._paginate_slide(text.split(u'\n'), line_end)
new_pages = [] new_pages = []
for page in pages: for page in pages:
while page.endswith(u'<br>'): while page.endswith(u'<br>'):
@ -588,12 +590,3 @@ class Renderer(object):
# this parse we are to be wordy # this parse we are to be wordy
line = line.replace(u'\n', u' ') line = line.replace(u'\n', u' ')
return line.split(u' ') return line.split(u' ')
def _lines_split(self, text):
"""
Split the slide up by physical line
"""
# this parse we do not want to use this so remove it
text = text.replace(u'\n[---]', u'')
text = text.replace(u'[---]', u'')
return text.split(u'\n')

View File

@ -176,8 +176,9 @@ class HorizontalType(object):
Left = 0 Left = 0
Right = 1 Right = 1
Center = 2 Center = 2
Justify = 3
Names = [u'left', u'right', u'center'] Names = [u'left', u'right', u'center', u'justify']
class VerticalType(object): class VerticalType(object):

View File

@ -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 The Custom Tag arrays are saved in a pickle so QSettings works on them. Base
Tags cannot be changed. Tags cannot be changed.
""" """
import cPickle
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate, FormattingTags from openlp.core.lib import translate, FormattingTags
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
from openlp.core.ui.formattingtagdialog import Ui_FormattingTagDialog from openlp.core.ui.formattingtagdialog import Ui_FormattingTagDialog
class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog): class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
""" """
The :class:`FormattingTagForm` manages the settings tab . The :class:`FormattingTagForm` manages the settings tab .
@ -48,7 +47,6 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
""" """
QtGui.QDialog.__init__(self, parent) QtGui.QDialog.__init__(self, parent)
self.setupUi(self) self.setupUi(self)
self._loadFormattingTags()
QtCore.QObject.connect(self.tagTableWidget, QtCore.QObject.connect(self.tagTableWidget,
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onRowSelected) QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onRowSelected)
QtCore.QObject.connect(self.newPushButton, QtCore.QObject.connect(self.newPushButton,
@ -59,41 +57,24 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
QtCore.SIGNAL(u'pressed()'), self.onDeletePushed) QtCore.SIGNAL(u'pressed()'), self.onDeletePushed)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
self.close) self.close)
# Forces reloading of tags from openlp configuration.
FormattingTags.load_tags()
def exec_(self): def exec_(self):
""" """
Load Display and set field state. Load Display and set field state.
""" """
# Create initial copy from master # Create initial copy from master
self._loadFormattingTags()
self._resetTable() self._resetTable()
self.selected = -1 self.selected = -1
return QtGui.QDialog.exec_(self) 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): def onRowSelected(self):
""" """
Table Row selected so display items and set field state. Table Row selected so display items and set field state.
""" """
row = self.tagTableWidget.currentRow() row = self.tagTableWidget.currentRow()
html = FormattingTags.get_html_tags()[row] html = FormattingTags.html_expands[row]
self.selected = row self.selected = row
self.descriptionLineEdit.setText(html[u'desc']) self.descriptionLineEdit.setText(html[u'desc'])
self.tagLineEdit.setText(self._strip(html[u'start tag'])) self.tagLineEdit.setText(self._strip(html[u'start tag']))
@ -118,7 +99,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
""" """
Add a new tag to list only if it is not a duplicate. 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': if self._strip(html[u'start tag']) == u'n':
critical_error_message_box( critical_error_message_box(
translate('OpenLP.FormattingTagForm', 'Update Error'), translate('OpenLP.FormattingTagForm', 'Update Error'),
@ -132,7 +113,8 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
u'start html': translate('OpenLP.FormattingTagForm', '<HTML here>'), u'start html': translate('OpenLP.FormattingTagForm', '<HTML here>'),
u'end tag': u'{/n}', u'end tag': u'{/n}',
u'end html': translate('OpenLP.FormattingTagForm', '</and here>'), u'end html': translate('OpenLP.FormattingTagForm', '</and here>'),
u'protected': False u'protected': False,
u'temporary': False
} }
FormattingTags.add_html_tags([tag]) FormattingTags.add_html_tags([tag])
self._resetTable() self._resetTable()
@ -149,13 +131,13 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
FormattingTags.remove_html_tag(self.selected) FormattingTags.remove_html_tag(self.selected)
self.selected = -1 self.selected = -1
self._resetTable() self._resetTable()
self._saveTable() FormattingTags.save_html_tags()
def onSavedPushed(self): def onSavedPushed(self):
""" """
Update Custom Tag details if not duplicate and save the data. 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: if self.selected != -1:
html = html_expands[self.selected] html = html_expands[self.selected]
tag = unicode(self.tagLineEdit.text()) tag = unicode(self.tagLineEdit.text())
@ -172,21 +154,11 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
html[u'end html'] = unicode(self.endTagLineEdit.text()) html[u'end html'] = unicode(self.endTagLineEdit.text())
html[u'start tag'] = u'{%s}' % tag html[u'start tag'] = u'{%s}' % tag
html[u'end 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.selected = -1
self._resetTable() self._resetTable()
self._saveTable() FormattingTags.save_html_tags()
def _saveTable(self):
"""
Saves all formatting tags except protected ones.
"""
tags = []
for tag in FormattingTags.get_html_tags():
if not tag[u'protected']:
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''))
def _resetTable(self): def _resetTable(self):
""" """
@ -197,9 +169,8 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
self.newPushButton.setEnabled(True) self.newPushButton.setEnabled(True)
self.savePushButton.setEnabled(False) self.savePushButton.setEnabled(False)
self.deletePushButton.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.setRowCount(self.tagTableWidget.rowCount() + 1)
self.tagTableWidget.rowCount() + 1)
self.tagTableWidget.setItem(linenumber, 0, self.tagTableWidget.setItem(linenumber, 0,
QtGui.QTableWidgetItem(html[u'desc'])) QtGui.QTableWidgetItem(html[u'desc']))
self.tagTableWidget.setItem(linenumber, 1, self.tagTableWidget.setItem(linenumber, 1,
@ -208,6 +179,9 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
QtGui.QTableWidgetItem(html[u'start html'])) QtGui.QTableWidgetItem(html[u'start html']))
self.tagTableWidget.setItem(linenumber, 3, self.tagTableWidget.setItem(linenumber, 3,
QtGui.QTableWidgetItem(html[u'end html'])) QtGui.QTableWidgetItem(html[u'end html']))
# Permanent (persistent) tags do not have this key.
if u'temporary' not in html:
html[u'temporary'] = False
self.tagTableWidget.resizeRowsToContents() self.tagTableWidget.resizeRowsToContents()
self.descriptionLineEdit.setText(u'') self.descriptionLineEdit.setText(u'')
self.tagLineEdit.setText(u'') self.tagLineEdit.setText(u'')

View File

@ -30,6 +30,7 @@ import logging
import os import os
import shutil import shutil
import zipfile import zipfile
from tempfile import mkstemp
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -467,15 +468,24 @@ class ServiceManager(QtGui.QWidget):
def saveFile(self): def saveFile(self):
""" """
Save the current Service file. Save the current service file.
A temporary file is created so that we don't overwrite the existing one
and leave a mangled service file should there be an error when saving.
Audio files are also copied into the service manager directory, and
then packaged into the zip file.
""" """
if not self.fileName(): if not self.fileName():
return self.saveFileAs() return self.saveFileAs()
temp_file, temp_file_name = mkstemp(u'.osz', u'openlp_')
# We don't need the file handle.
os.close(temp_file)
log.debug(temp_file_name)
path_file_name = unicode(self.fileName()) path_file_name = unicode(self.fileName())
path, file_name = os.path.split(path_file_name) path, file_name = os.path.split(path_file_name)
basename, extension = os.path.splitext(file_name) basename, extension = os.path.splitext(file_name)
service_file_name = '%s.osd' % basename service_file_name = '%s.osd' % basename
log.debug(u'ServiceManager.saveFile - %s' % path_file_name) log.debug(u'ServiceManager.saveFile - %s', path_file_name)
SettingsManager.set_last_dir( SettingsManager.set_last_dir(
self.mainwindow.servicemanagerSettingsSection, self.mainwindow.servicemanagerSettingsSection,
path) path)
@ -494,7 +504,8 @@ class ServiceManager(QtGui.QWidget):
if len(service_item[u'header'][u'background_audio']) > 0: if len(service_item[u'header'][u'background_audio']) > 0:
for i, filename in \ for i, filename in \
enumerate(service_item[u'header'][u'background_audio']): enumerate(service_item[u'header'][u'background_audio']):
new_file = os.path.join(u'audio', item[u'service_item']._uuid, new_file = os.path.join(u'audio',
item[u'service_item']._uuid,
os.path.split(filename)[1]) os.path.split(filename)[1])
audio_files.append((filename, new_file)) audio_files.append((filename, new_file))
service_item[u'header'][u'background_audio'][i] = new_file service_item[u'header'][u'background_audio'][i] = new_file
@ -545,30 +556,38 @@ class ServiceManager(QtGui.QWidget):
success = True success = True
self.mainwindow.incrementProgressBar() self.mainwindow.incrementProgressBar()
try: try:
zip = zipfile.ZipFile(path_file_name, 'w', zipfile.ZIP_STORED, zip = zipfile.ZipFile(temp_file_name, 'w', zipfile.ZIP_STORED,
allow_zip_64) allow_zip_64)
# First we add service contents. # First we add service contents.
# We save ALL filenames into ZIP using UTF-8. # We save ALL filenames into ZIP using UTF-8.
zip.writestr(service_file_name.encode(u'utf-8'), service_content) zip.writestr(service_file_name.encode(u'utf-8'), service_content)
# Finally add all the listed media files. # Finally add all the listed media files.
for path_from in write_list: for write_from in write_list:
zip.write(path_from, path_from.encode(u'utf-8')) zip.write(write_from, write_from.encode(u'utf-8'))
for path_from, path_to in audio_files: for audio_from, audio_to in audio_files:
if path_from == path_to: if audio_from.startswith(u'audio'):
# If this file has already been saved, let's use set the # When items are saved, they get new UUID's. Let's copy the
# from path to the real location of the files # file to the new location. Unused files can be ignored,
path_from = os.path.join(self.servicePath, path_from) # OpenLP automatically cleans up the service manager dir on
else: # exit.
# If this file has not yet been saved, let's copy the file audio_from = os.path.join(self.servicePath, audio_from)
# to the service manager path save_file = os.path.join(self.servicePath, audio_to)
save_file = os.path.join(self.servicePath, path_to) save_path = os.path.split(save_file)[0]
save_path = os.path.split(save_file)[0] if not os.path.exists(save_path):
if not os.path.exists(save_path): os.makedirs(save_path)
os.makedirs(save_path) if not os.path.exists(save_file):
shutil.copy(path_from, save_file) shutil.copy(audio_from, save_file)
zip.write(path_from, path_to.encode(u'utf-8')) zip.write(audio_from, audio_to.encode(u'utf-8'))
except IOError: except IOError:
log.exception(u'Failed to save service to disk') log.exception(u'Failed to save service to disk: %s', temp_file_name)
# Add this line in after the release to notify the user that saving
# their file failed. Commented out due to string freeze.
#Receiver.send_message(u'openlp_error_message', {
# u'title': translate(u'OpenLP.ServiceManager',
# u'Error Saving File'),
# u'message': translate(u'OpenLP.ServiceManager',
# u'There was an error saving your file.')
#})
success = False success = False
finally: finally:
if zip: if zip:
@ -576,10 +595,13 @@ class ServiceManager(QtGui.QWidget):
self.mainwindow.finishedProgressBar() self.mainwindow.finishedProgressBar()
Receiver.send_message(u'cursor_normal') Receiver.send_message(u'cursor_normal')
if success: if success:
shutil.copy(temp_file_name, path_file_name)
self.mainwindow.addRecentFile(path_file_name) self.mainwindow.addRecentFile(path_file_name)
self.setModified(False) self.setModified(False)
else: try:
delete_file(path_file_name) delete_file(temp_file_name)
except:
pass
return success return success
def saveFileAs(self): def saveFileAs(self):
@ -623,6 +645,7 @@ class ServiceManager(QtGui.QWidget):
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile)) osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
if not osfile.startswith(u'audio'): if not osfile.startswith(u'audio'):
osfile = os.path.split(osfile)[1] osfile = os.path.split(osfile)[1]
log.debug(u'Extract file: %s', osfile)
zipinfo.filename = osfile zipinfo.filename = osfile
zip.extract(zipinfo, self.servicePath) zip.extract(zipinfo, self.servicePath)
if osfile.endswith(u'osd'): if osfile.endswith(u'osd'):
@ -637,14 +660,17 @@ class ServiceManager(QtGui.QWidget):
for item in items: for item in items:
self.mainwindow.incrementProgressBar() self.mainwindow.incrementProgressBar()
serviceItem = ServiceItem() serviceItem = ServiceItem()
serviceItem.from_service = True
serviceItem.renderer = self.mainwindow.renderer serviceItem.renderer = self.mainwindow.renderer
serviceItem.set_from_service(item, self.servicePath) serviceItem.set_from_service(item, self.servicePath)
self.validateItem(serviceItem) self.validateItem(serviceItem)
self.addServiceItem(serviceItem, repaint=False) self.loadItem_uuid = 0
if serviceItem.is_capable(ItemCapabilities.OnLoadUpdate): if serviceItem.is_capable(ItemCapabilities.OnLoadUpdate):
Receiver.send_message(u'%s_service_load' % Receiver.send_message(u'%s_service_load' %
serviceItem.name.lower(), serviceItem) serviceItem.name.lower(), serviceItem)
# if the item has been processed
if serviceItem._uuid == self.loadItem_uuid:
serviceItem.edit_id = int(self.loadItem_editId)
self.addServiceItem(serviceItem, repaint=False)
delete_file(p_file) delete_file(p_file)
self.setFileName(fileName) self.setFileName(fileName)
self.mainwindow.addRecentFile(fileName) self.mainwindow.addRecentFile(fileName)
@ -1022,11 +1048,12 @@ class ServiceManager(QtGui.QWidget):
""" """
Empties the servicePath of temporary files. Empties the servicePath of temporary files.
""" """
log.debug(u'Cleaning up servicePath')
for file in os.listdir(self.servicePath): for file in os.listdir(self.servicePath):
file_path = os.path.join(self.servicePath, file) file_path = os.path.join(self.servicePath, file)
delete_file(file_path) delete_file(file_path)
if os.path.exists(os.path.join(self.servicePath, u'audio')): if os.path.exists(os.path.join(self.servicePath, u'audio')):
shutil.rmtree(os.path.join(self.servicePath, u'audio'), False) shutil.rmtree(os.path.join(self.servicePath, u'audio'), True)
def onThemeComboBoxSelected(self, currentIndex): def onThemeComboBoxSelected(self, currentIndex):
""" """
@ -1098,12 +1125,10 @@ class ServiceManager(QtGui.QWidget):
def serviceItemUpdate(self, message): def serviceItemUpdate(self, message):
""" """
Triggered from plugins to update service items. Triggered from plugins to update service items.
Save the values as they will be used as part of the service load
""" """
editId, uuid = message.split(u':') editId, self.loadItem_uuid = message.split(u':')
for item in self.serviceItems: self.loadItem_editId = int(editId)
if item[u'service_item']._uuid == uuid:
item[u'service_item'].edit_id = int(editId)
self.setModified()
def replaceServiceItem(self, newItem): def replaceServiceItem(self, newItem):
""" """

View File

@ -246,7 +246,7 @@ class Ui_ThemeWizard(object):
self.horizontalLabel = QtGui.QLabel(self.alignmentPage) self.horizontalLabel = QtGui.QLabel(self.alignmentPage)
self.horizontalLabel.setObjectName(u'HorizontalLabel') self.horizontalLabel.setObjectName(u'HorizontalLabel')
self.horizontalComboBox = QtGui.QComboBox(self.alignmentPage) self.horizontalComboBox = QtGui.QComboBox(self.alignmentPage)
self.horizontalComboBox.addItems([u'', u'', u'']) self.horizontalComboBox.addItems([u'', u'', u'', u''])
self.horizontalComboBox.setObjectName(u'HorizontalComboBox') self.horizontalComboBox.setObjectName(u'HorizontalComboBox')
self.alignmentLayout.addRow(self.horizontalLabel, self.alignmentLayout.addRow(self.horizontalLabel,
self.horizontalComboBox) self.horizontalComboBox)
@ -495,6 +495,8 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Right')) translate('OpenLP.ThemeWizard', 'Right'))
self.horizontalComboBox.setItemText(HorizontalType.Center, self.horizontalComboBox.setItemText(HorizontalType.Center,
translate('OpenLP.ThemeWizard', 'Center')) translate('OpenLP.ThemeWizard', 'Center'))
self.horizontalComboBox.setItemText(HorizontalType.Justify,
translate('OpenLP.ThemeWizard', 'Justify'))
self.transitionsLabel.setText( self.transitionsLabel.setText(
translate('OpenLP.ThemeWizard', 'Transitions:')) translate('OpenLP.ThemeWizard', 'Transitions:'))
self.areaPositionPage.setTitle( self.areaPositionPage.setTitle(

View File

@ -127,6 +127,9 @@ class AppLocation(object):
CacheDir = 6 CacheDir = 6
LanguageDir = 7 LanguageDir = 7
# Base path where data/config/cache dir is located
BaseDir = None
@staticmethod @staticmethod
def get_directory(dir_type=1): def get_directory(dir_type=1):
""" """
@ -152,6 +155,8 @@ class AppLocation(object):
os.path.abspath(os.path.split(sys.argv[0])[0]), os.path.abspath(os.path.split(sys.argv[0])[0]),
_get_os_dir_path(dir_type)) _get_os_dir_path(dir_type))
return os.path.join(app_path, u'i18n') return os.path.join(app_path, u'i18n')
elif dir_type == AppLocation.DataDir and AppLocation.BaseDir:
return os.path.join(AppLocation.BaseDir, 'data')
else: else:
return _get_os_dir_path(dir_type) return _get_os_dir_path(dir_type)

View File

@ -682,7 +682,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
text = unicode(self.songBookComboBox.currentText()) text = unicode(self.songBookComboBox.currentText())
if item == 0 and text: if item == 0 and text:
temp_song_book = text temp_song_book = text
self.mediaitem.song_maintenance_form.exec_() self.mediaitem.songMaintenanceForm.exec_()
self.loadAuthors() self.loadAuthors()
self.loadBooks() self.loadBooks()
self.loadTopics() self.loadTopics()

View File

@ -428,7 +428,8 @@ class SongMediaItem(MediaManagerItem):
def generateSlideData(self, service_item, item=None, xmlVersion=False, def generateSlideData(self, service_item, item=None, xmlVersion=False,
remote=False): remote=False):
log.debug(u'generateSlideData (%s:%s)' % (service_item, item)) log.debug(u'generateSlideData: %s, %s, %s' %
(service_item, item, self.remoteSong))
item_id = self._getIdOfItemToGenerate(item, self.remoteSong) item_id = self._getIdOfItemToGenerate(item, self.remoteSong)
service_item.add_capability(ItemCapabilities.CanEdit) service_item.add_capability(ItemCapabilities.CanEdit)
service_item.add_capability(ItemCapabilities.CanPreview) service_item.add_capability(ItemCapabilities.CanPreview)
@ -509,7 +510,8 @@ class SongMediaItem(MediaManagerItem):
# Add the audio file to the service item. # Add the audio file to the service item.
if len(song.media_files) > 0: if len(song.media_files) > 0:
service_item.add_capability(ItemCapabilities.HasBackgroundAudio) service_item.add_capability(ItemCapabilities.HasBackgroundAudio)
service_item.background_audio = [m.file_name for m in song.media_files] service_item.background_audio = \
[m.file_name for m in song.media_files]
return True return True
def serviceLoad(self, item): def serviceLoad(self, item):
@ -559,6 +561,9 @@ class SongMediaItem(MediaManagerItem):
self._updateBackgroundAudio(song, item) self._updateBackgroundAudio(song, item)
editId = song.id editId = song.id
self.onSearchTextButtonClick() self.onSearchTextButtonClick()
else:
# Make sure we temporary import formatting tags.
self.openLyrics.xml_to_song(item.xml_version, True)
# Update service with correct song id. # Update service with correct song id.
if editId: if editId:
Receiver.send_message(u'service_item_update', Receiver.send_message(u'service_item_update',

View File

@ -61,19 +61,21 @@ The XML of an `OpenLyrics <http://openlyrics.info/>`_ song looks like this::
</song> </song>
""" """
import datetime
import logging import logging
import re import re
from lxml import etree, objectify 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 import clean_song, VerseType
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic from openlp.plugins.songs.lib.db import Author, Book, Song, Topic
from openlp.core.utils import get_application_version from openlp.core.utils import get_application_version
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
CHORD_REGEX = re.compile(u'<chord name=".*?"/>') NAMESPACE = u'http://openlyrics.info/namespace/2009/song'
NSMAP = '{' + NAMESPACE + '}' + '%s'
class SongXML(object): class SongXML(object):
""" """
@ -173,7 +175,7 @@ class SongXML(object):
class OpenLyrics(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. to/from a song.
As OpenLyrics has a rich set of different features, we cannot support them As OpenLyrics has a rich set of different features, we cannot support them
@ -198,11 +200,15 @@ class OpenLyrics(object):
``<key>`` ``<key>``
This property is not supported. This property is not supported.
``<format>``
The custom formatting tags are fully supported.
``<keywords>`` ``<keywords>``
This property is not supported. This property is not supported.
``<lines>`` ``<lines>``
The attribute *part* is not supported. The attribute *part* is not supported. The *break* attribute is
supported.
``<publisher>`` ``<publisher>``
This property is not supported. This property is not supported.
@ -227,15 +233,35 @@ class OpenLyrics(object):
``<verse name="v1a" lang="he" translit="en">`` ``<verse name="v1a" lang="he" translit="en">``
The attribute *translit* is not supported. Note, the attribute *lang* is 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 will merge verses which are split up by appending a letter to the
verse name, such as *v1a*.
``<verseOrder>`` ``<verseOrder>``
OpenLP supports this property. OpenLP supports this property.
""" """
IMPLEMENTED_VERSION = u'0.7' IMPLEMENTED_VERSION = u'0.8'
def __init__(self, manager): def __init__(self, manager):
self.manager = manager self.manager = manager
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): def song_to_xml(self, song):
""" """
@ -244,13 +270,14 @@ class OpenLyrics(object):
sxml = SongXML() sxml = SongXML()
song_xml = objectify.fromstring(u'<song/>') song_xml = objectify.fromstring(u'<song/>')
# Append the necessary meta data to the song. # 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) song_xml.set(u'version', OpenLyrics.IMPLEMENTED_VERSION)
application_name = u'OpenLP ' + get_application_version()[u'version'] application_name = u'OpenLP ' + get_application_version()[u'version']
song_xml.set(u'createdIn', application_name) song_xml.set(u'createdIn', application_name)
song_xml.set(u'modifiedIn', application_name) song_xml.set(u'modifiedIn', application_name)
# "Convert" 2011-08-27 11:49:15 to 2011-08-27T11:49:15.
song_xml.set(u'modifiedDate', song_xml.set(u'modifiedDate',
datetime.datetime.now().strftime(u'%Y-%m-%dT%H:%M:%S')) unicode(song.last_modified).replace(u' ', u'T'))
properties = etree.SubElement(song_xml, u'properties') properties = etree.SubElement(song_xml, u'properties')
titles = etree.SubElement(properties, u'titles') titles = etree.SubElement(properties, u'titles')
self._add_text_to_element(u'title', titles, song.title) self._add_text_to_element(u'title', titles, song.title)
@ -284,29 +311,40 @@ class OpenLyrics(object):
themes = etree.SubElement(properties, u'themes') themes = etree.SubElement(properties, u'themes')
for topic in song.topics: for topic in song.topics:
self._add_text_to_element(u'theme', themes, topic.name) self._add_text_to_element(u'theme', themes, topic.name)
# Process the formatting tags.
# Have we any tags in song lyrics?
tags_element = None
match = re.search(u'\{/?\w+\}', song.lyrics, re.UNICODE)
if match:
# Reset available tags.
FormattingTags.reset_html_tags()
# Named 'formatting' - 'format' is built-in fuction in Python.
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. # Process the song's lyrics.
lyrics = etree.SubElement(song_xml, u'lyrics') lyrics = etree.SubElement(song_xml, u'lyrics')
verse_list = sxml.get_verses(song.lyrics) verse_list = sxml.get_verses(song.lyrics)
for verse in verse_list: for verse in verse_list:
verse_tag = verse[0][u'type'][0].lower() verse_tag = verse[0][u'type'][0].lower()
verse_number = verse[0][u'label'] 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 u'lang' in verse[0]:
verse_element.set(u'lang', verse[0][u'lang'])
# Create a list with all "virtual" verses. # Create a list with all "virtual" verses.
virtual_verses = verse[1].split(u'[---]') virtual_verses = verse[1].split(u'[---]')
for index, virtual_verse in enumerate(virtual_verses): for index, virtual_verse in enumerate(virtual_verses):
verse_def = verse_tag + verse_number # Add formatting tags to text
# We need "v1a" because we have more than one virtual verse. lines_element = self._add_text_with_tags_to_lines(verse_element,
if len(virtual_verses) > 1: virtual_verse, tags_element)
verse_def += list(u'abcdefghijklmnopqrstuvwxyz')[index] # Do not add the break attribute to the last lines element.
element = \ if index < len(virtual_verses) - 1:
self._add_text_to_element(u'verse', lyrics, None, verse_def) lines_element.set(u'break', u'optional')
if verse[0].has_key(u'lang'):
element.set(u'lang', verse[0][u'lang'])
element = self._add_text_to_element(u'lines', element)
for line in virtual_verse.strip(u'\n').split(u'\n'):
self._add_text_to_element(u'line', element, line)
return self._extract_xml(song_xml) return self._extract_xml(song_xml)
def xml_to_song(self, xml): def xml_to_song(self, xml, parse_and_not_save=False):
""" """
Create and save a song from OpenLyrics format xml to the database. Since 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 we also export XML from external sources (e. g. OpenLyrics import), we
@ -314,19 +352,26 @@ class OpenLyrics(object):
``xml`` ``xml``
The XML to parse (unicode). The XML to parse (unicode).
``parse_and_not_save``
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. # No xml get out of here.
if not xml: if not xml:
return None return None
if xml[:5] == u'<?xml': if xml[:5] == u'<?xml':
xml = xml[38:] xml = xml[38:]
# Remove chords from xml.
xml = CHORD_REGEX.sub(u'', xml)
song_xml = objectify.fromstring(xml) song_xml = objectify.fromstring(xml)
if hasattr(song_xml, u'properties'): if hasattr(song_xml, u'properties'):
properties = song_xml.properties properties = song_xml.properties
else: else:
return None return None
# 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
song = Song() song = Song()
# Values will be set when cleaning the song. # Values will be set when cleaning the song.
song.search_lyrics = u'' song.search_lyrics = u''
@ -336,7 +381,7 @@ class OpenLyrics(object):
self._process_cclinumber(properties, song) self._process_cclinumber(properties, song)
self._process_titles(properties, song) self._process_titles(properties, song)
# The verse order is processed with the lyrics! # 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_comments(properties, song)
self._process_authors(properties, song) self._process_authors(properties, song)
self._process_songbooks(properties, song) self._process_songbooks(properties, song)
@ -355,6 +400,57 @@ class OpenLyrics(object):
parent.append(element) parent.append(element)
return element return element
def _add_tag_to_formatting(self, tag_name, tags_element):
"""
Add new formatting tag to the element ``<format>``
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.
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_open.text = etree.CDATA(t[u'start html'])
# Check if formatting tag contains end tag. Some formatting
# tags e.g. {br} has only start tag. If no end tag is present
# <close> 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_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 ``<lines>``.
"""
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.
xml_tags = tags_element.xpath(u'tag/attribute::name')
# Some formatting tag has only starting part e.g. <br>.
# Handle this case.
if tag in end_tags:
text = text.replace(u'{%s}' % tag, u'<tag name="%s">' % tag)
else:
text = text.replace(u'{%s}' % tag, u'<tag name="%s"/>' % tag)
# Add tag to <format> 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:
text = text.replace(u'{/%s}' % t, u'</tag>')
# Replace \n with <br/>.
text = text.replace(u'\n', u'<br/>')
text = u'<lines>' + text + u'</lines>'
element = etree.XML(text)
verse_element.append(element)
return element
def _extract_xml(self, xml): def _extract_xml(self, xml):
""" """
Extract our newly created XML song. Extract our newly created XML song.
@ -362,20 +458,6 @@ class OpenLyrics(object):
return etree.tostring(xml, encoding=u'UTF-8', return etree.tostring(xml, encoding=u'UTF-8',
xml_declaration=True) 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): def _text(self, element):
""" """
This returns the text of an element as unicode string. This returns the text of an element as unicode string.
@ -457,29 +539,155 @@ class OpenLyrics(object):
if hasattr(properties, u'copyright'): if hasattr(properties, u'copyright'):
song.copyright = self._text(properties.copyright) song.copyright = self._text(properties.copyright)
def _process_lyrics(self, properties, lyrics, song): 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
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': start_tag,
u'end tag': end_tag,
u'start html': tag.open.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,
}
# 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()]
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):
"""
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 <br/>.
The <br/> is used since OpenLyrics 0.8.
"""
text = u''
use_endtag = True
# Skip <comment> elements - not yet supported.
if element.tag == NSMAP % u'comment':
if element.tail:
# Append tail text at chord element.
text += element.tail
return text
# Skip <chord> element - not yet supported.
elif element.tag == NSMAP % u'chord':
if element.tail:
# Append tail text at chord element.
text += element.tail
return text
# Convert line breaks <br/> 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 % 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:
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, version):
"""
Converts lyrics lines to OpenLP representation.
``lines``
The lines object (lxml.objectify.ObjectifiedElement).
"""
text = u''
# Convert lxml.objectify to lxml.etree representation.
lines = etree.tostring(lines)
element = etree.XML(lines)
# OpenLyrics 0.8 uses <br/> 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 <line> elements to represent lines.
# First child element is tested.
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)
return text
def _process_lyrics(self, properties, song_xml, song_obj):
""" """
Processes the verses and search_lyrics for the song. Processes the verses and search_lyrics for the song.
``properties`` ``properties``
The properties object (lxml.objectify.ObjectifiedElement). The properties object (lxml.objectify.ObjectifiedElement).
``lyrics`` ``song_xml``
The lyrics object (lxml.objectify.ObjectifiedElement). The objectified song (lxml.objectify.ObjectifiedElement).
``song`` ``song_obj``
The song object. The song object.
""" """
sxml = SongXML() sxml = SongXML()
verses = {} verses = {}
verse_def_list = [] verse_def_list = []
lyrics = song_xml.lyrics
# Loop over the "verse" elements.
for verse in lyrics.verse: for verse in lyrics.verse:
text = u'' text = u''
# Loop over the "lines" elements.
for lines in verse.lines: for lines in verse.lines:
if text: if text:
text += u'\n' text += u'\n'
text += u'\n'.join([unicode(line) for line in lines.line]) # Append text from "lines" element to verse text.
verse_def = self._get(verse, u'name').lower() 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[---]'
verse_def = verse.get(u'name', u' ').lower()
if verse_def[0] in VerseType.Tags: if verse_def[0] in VerseType.Tags:
verse_tag = verse_def[0] verse_tag = verse_def[0]
else: else:
@ -489,11 +697,16 @@ class OpenLyrics(object):
# not correct the verse order. # not correct the verse order.
if not verse_number: if not verse_number:
verse_number = u'1' verse_number = u'1'
lang = None lang = verse.get(u'lang')
if self._get(verse, u'lang'): # In OpenLP 1.9.6 we used v1a, v1b ... to represent visual slide
lang = self._get(verse, u'lang') # breaks. In OpenLyrics 0.7 an attribute has been added.
if verses.has_key((verse_tag, verse_number, lang)): 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 \
(verse_tag, verse_number, lang) in verses:
verses[(verse_tag, verse_number, lang)] += u'\n[---]\n' + text verses[(verse_tag, verse_number, lang)] += u'\n[---]\n' + text
# Merge v1a, v1b, .... to v1.
elif (verse_tag, verse_number, lang) in verses:
verses[(verse_tag, verse_number, lang)] += u'\n' + text
else: else:
verses[(verse_tag, verse_number, lang)] = text verses[(verse_tag, verse_number, lang)] = text
verse_def_list.append((verse_tag, verse_number, lang)) verse_def_list.append((verse_tag, verse_number, lang))
@ -501,10 +714,10 @@ class OpenLyrics(object):
for verse in verse_def_list: for verse in verse_def_list:
sxml.add_verse_to_lyrics( sxml.add_verse_to_lyrics(
verse[0], verse[1], verses[verse], verse[2]) 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 # Process verse order
if hasattr(properties, u'verseOrder'): 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): def _process_songbooks(self, properties, song):
""" """
@ -520,7 +733,7 @@ class OpenLyrics(object):
song.song_number = u'' song.song_number = u''
if hasattr(properties, u'songbooks'): if hasattr(properties, u'songbooks'):
for songbook in properties.songbooks.songbook: for songbook in properties.songbooks.songbook:
bookname = self._get(songbook, u'name') bookname = songbook.get(u'name', u'')
if bookname: if bookname:
book = self.manager.get_object_filtered(Book, book = self.manager.get_object_filtered(Book,
Book.name == bookname) Book.name == bookname)
@ -529,7 +742,7 @@ class OpenLyrics(object):
book = Book.populate(name=bookname, publisher=u'') book = Book.populate(name=bookname, publisher=u'')
self.manager.save_object(book) self.manager.save_object(book)
song.song_book_id = book.id 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. # We only support one song book, so take the first one.
break break

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1160,7 +1160,7 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen?</translation>
<message> <message>
<location filename="openlp/plugins/images/lib/mediaitem.py" line="228"/> <location filename="openlp/plugins/images/lib/mediaitem.py" line="228"/>
<source>There was no display item to amend.</source> <source>There was no display item to amend.</source>
<translation type="unfinished"></translation> <translation>Es waren keine Änderungen nötig.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1282,17 +1282,17 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen?</translation>
<message> <message>
<location filename="openlp/plugins/media/lib/mediaitem.py" line="123"/> <location filename="openlp/plugins/media/lib/mediaitem.py" line="123"/>
<source>There was no display item to amend.</source> <source>There was no display item to amend.</source>
<translation type="unfinished"></translation> <translation>Es waren keine Änderungen nötig.</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/media/lib/mediaitem.py" line="161"/> <location filename="openlp/plugins/media/lib/mediaitem.py" line="161"/>
<source>File Too Big</source> <source>File Too Big</source>
<translation type="unfinished"></translation> <translation>Diese Datei ist zu groß</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/media/lib/mediaitem.py" line="161"/> <location filename="openlp/plugins/media/lib/mediaitem.py" line="161"/>
<source>The file you are trying to load is too big. Please reduce it to less than 50MiB.</source> <source>The file you are trying to load is too big. Please reduce it to less than 50MiB.</source>
<translation type="unfinished"></translation> <translation>Die ausgewählte Datei ist zu groß. Die maximale Dateigröße ist 50 MiB.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1311,7 +1311,7 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen?</translation>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation>Bilddateien</translation> <translation>Bilddateien</translation>
</message> </message>
@ -1851,19 +1851,6 @@ Version: %s
<source>Unable to detect an Internet connection.</source> <source>Unable to detect an Internet connection.</source>
<translation>Es könnte keine Internetverbindung aufgebaut werden.</translation> <translation>Es könnte keine Internetverbindung aufgebaut werden.</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/firsttimewizard.py" line="233"/>
<source>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.</source>
<translation type="obsolete">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«.</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="244"/> <location filename="openlp/core/ui/firsttimewizard.py" line="244"/>
<source>Sample Songs</source> <source>Sample Songs</source>
@ -1964,19 +1951,23 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.<
<source>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. Press the Finish button now to start OpenLP with initial settings and no sample data. <source>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. Press the Finish button now to start OpenLP with initial settings and no sample data.
To re-run the First Time Wizard and import this sample data at a later time, check your Internet connection and re-run this wizard by selecting &quot;Tools/Re-run First Time Wizard&quot; from OpenLP.</source> To re-run the First Time Wizard and import this sample data at a later time, check your Internet connection and re-run this wizard by selecting &quot;Tools/Re-run First Time Wizard&quot; from OpenLP.</source>
<translation type="unfinished"></translation> <translation>Es wurde keine Internetverbindung erkannt. Um während des erstmaligen Startes von OpenLP Beispiel Lieder, Bibeln und Designs zu installieren ist eine Internetverbindung nötig. Klicken Sie &gt;&gt;Abschließen&lt;&lt;, um OpenLP nun mit Grundeinstellungen und ohne Beispiel Daten zu starten.
Um diesen Einrichtungsassistenten erneut zu starten und die Beispiel Daten zu importieren, prüfen Sie Ihre Internetverbindung und starten den Assistenten im Menü &quot;Extras/Einrichtungsassistenten starten&quot;.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="241"/> <location filename="openlp/core/ui/firsttimewizard.py" line="241"/>
<source> <source>
To cancel the First Time Wizard completely (and not start OpenLP), press the Cancel button now.</source> To cancel the First Time Wizard completely (and not start OpenLP), press the Cancel button now.</source>
<translation type="unfinished"></translation> <translation>
Um den Einrichtungsassistenten zu unterbrechen (und OpenLP nicht zu starten), bitte &gt;&gt;Abbrechen&lt;&lt; klicken.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="266"/> <location filename="openlp/core/ui/firsttimewizard.py" line="266"/>
<source>Finish</source> <source>Finish</source>
<translation type="unfinished">Ende</translation> <translation>Ende</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2035,32 +2026,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation>Aktualisierungsfehler</translation> <translation>Aktualisierungsfehler</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation>Tag »n« bereits definiert.</translation> <translation>Tag »n« bereits definiert.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation>Neuer Tag</translation> <translation>Neuer Tag</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation>&lt;HTML hier&gt;</translation> <translation>&lt;HTML hier&gt;</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation>&lt;/und hier&gt;</translation> <translation>&lt;/und hier&gt;</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation>Tag »%s« bereits definiert.</translation> <translation>Tag »%s« bereits definiert.</translation>
</message> </message>
@ -2068,82 +2059,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation>rot</translation> <translation>rot</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation>schwarz</translation> <translation>schwarz</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation>blau</translation> <translation>blau</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation>gelb</translation> <translation>gelb</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation>grün</translation> <translation>grün</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation>rosa</translation> <translation>rosa</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation>orange</translation> <translation>orange</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation>lila</translation> <translation>lila</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation>weiß</translation> <translation>weiß</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation>hochgestellt</translation> <translation>hochgestellt</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation>tiefgestellt</translation> <translation>tiefgestellt</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation>Textabsatz</translation> <translation>Textabsatz</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation>fett</translation> <translation>fett</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation>kursiv</translation> <translation>kursiv</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation>unterstrichen</translation> <translation>unterstrichen</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation>Textumbruch</translation> <translation>Textumbruch</translation>
</message> </message>
@ -2278,12 +2269,12 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<message> <message>
<location filename="openlp/core/ui/generaltab.py" line="255"/> <location filename="openlp/core/ui/generaltab.py" line="255"/>
<source>Background Audio</source> <source>Background Audio</source>
<translation type="unfinished"></translation> <translation>Hintergrundmusik</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/generaltab.py" line="257"/> <location filename="openlp/core/ui/generaltab.py" line="257"/>
<source>Start background audio paused</source> <source>Start background audio paused</source>
<translation type="unfinished"></translation> <translation>Starte Hintergrundmusik pausiert</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2708,11 +2699,6 @@ Der Einrichtungsassistent kann einige Einstellungen verändern und ggf. neue Lie
<source>&amp;Recent Files</source> <source>&amp;Recent Files</source>
<translation>&amp;Zuletzte geöffnete Abläufe</translation> <translation>&amp;Zuletzte geöffnete Abläufe</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/mainwindow.py" line="419"/>
<source>&amp;Configure Formatting Tags...</source>
<translation type="obsolete">Konfiguriere &amp;Formatvorlagen...</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/mainwindow.py" line="1365"/> <location filename="openlp/core/ui/mainwindow.py" line="1365"/>
<source>Clear List</source> <source>Clear List</source>
@ -2785,12 +2771,12 @@ Falsche Einstellungen können fehlerhaftes Verhalten von OpenLP verursachen.</tr
<message> <message>
<location filename="openlp/core/ui/mainwindow.py" line="430"/> <location filename="openlp/core/ui/mainwindow.py" line="430"/>
<source>Export OpenLP settings to a specified *.config file</source> <source>Export OpenLP settings to a specified *.config file</source>
<translation type="unfinished"></translation> <translation>Exportiere OpenLPs Einstellungen in ein *.config-Datei.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/mainwindow.py" line="434"/> <location filename="openlp/core/ui/mainwindow.py" line="434"/>
<source>Import OpenLP settings from a specified *.config file previously exported on this or another machine</source> <source>Import OpenLP settings from a specified *.config file previously exported on this or another machine</source>
<translation type="unfinished"></translation> <translation>Importiere OpenLPs Einstellungen aus ein *.config-Datei, die vorher an diesem oder einem anderen Computer exportiert wurde.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2805,20 +2791,24 @@ Falsche Einstellungen können fehlerhaftes Verhalten von OpenLP verursachen.</tr
<source>The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded. <source>The database being loaded was created in a more recent version of OpenLP. The database is version %d, while OpenLP expects version %d. The database will not be loaded.
Database: %s</source> Database: %s</source>
<translation type="unfinished"></translation> <translation>Die Datenbank die versucht wird zu laden, wurde in einer neueren Version von OpenLP erstellt. Die Datenbank hat die Version %d, wobei OpenLP die Version %d erwartet. Die Datenkbank wird nicht geladen.
Datenbank: %s</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/db.py" line="218"/> <location filename="openlp/core/lib/db.py" line="218"/>
<source>OpenLP cannot load your database. <source>OpenLP cannot load your database.
Database: %s</source> Database: %s</source>
<translation type="unfinished"></translation> <translation>OpenLP kann die Datenbank nicht laden.
Datenbank: %s</translation>
</message> </message>
</context> </context>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation>Keine Elemente ausgewählt.</translation> <translation>Keine Elemente ausgewählt.</translation>
</message> </message>
@ -2887,7 +2877,7 @@ Dateiendung nicht unterstützt.</translation>
<message> <message>
<location filename="openlp/core/lib/mediamanageritem.py" line="401"/> <location filename="openlp/core/lib/mediamanageritem.py" line="401"/>
<source>Duplicate files were found on import and were ignored.</source> <source>Duplicate files were found on import and were ignored.</source>
<translation type="unfinished"></translation> <translation>Duplikate wurden beim Importieren gefunden und wurden ignoriert.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3141,29 +3131,29 @@ Dateiendung nicht unterstützt.</translation>
<translation>&amp;Design des Elements ändern</translation> <translation>&amp;Design des Elements ändern</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation>Die gewählte Datei ist keine gültige OpenLP Ablaufdatei. <translation>Die gewählte Datei ist keine gültige OpenLP Ablaufdatei.
Der Inhalt ist nicht in UTF-8 kodiert.</translation> Der Inhalt ist nicht in UTF-8 kodiert.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation>Die Datei ist keine gültige OpenLP Ablaufdatei.</translation> <translation>Die Datei ist keine gültige OpenLP Ablaufdatei.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation>Fehlende Anzeigesteuerung</translation> <translation>Fehlende Anzeigesteuerung</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation>Dieses Element kann nicht angezeigt werden, da es keine Steuerung dafür gibt.</translation> <translation>Dieses Element kann nicht angezeigt werden, da es keine Steuerung dafür gibt.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation>Dieses Element kann nicht angezeigt werden, da die zugehörige Erweiterung fehlt oder inaktiv ist.</translation> <translation>Dieses Element kann nicht angezeigt werden, da die zugehörige Erweiterung fehlt oder inaktiv ist.</translation>
</message> </message>
@ -3193,7 +3183,7 @@ Der Inhalt ist nicht in UTF-8 kodiert.</translation>
<translation>Ablauf öffnen</translation> <translation>Ablauf öffnen</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation>OpenLP Ablaufdateien (*.osz)</translation> <translation>OpenLP Ablaufdateien (*.osz)</translation>
</message> </message>
@ -3248,22 +3238,22 @@ Der Inhalt ist nicht in UTF-8 kodiert.</translation>
<translation>&amp;Live</translation> <translation>&amp;Live</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation>Datei konnte nicht geöffnet werden, da sie fehlerhaft ist.</translation> <translation>Datei konnte nicht geöffnet werden, da sie fehlerhaft ist.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation>Leere Datei</translation> <translation>Leere Datei</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation>Diese Datei enthält keine Daten.</translation> <translation>Diese Datei enthält keine Daten.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation>Dehlerhaft Datei</translation> <translation>Dehlerhaft Datei</translation>
</message> </message>
@ -3303,17 +3293,17 @@ Der Inhalt ist nicht in UTF-8 kodiert.</translation>
<translation>Design für den Ablauf auswählen.</translation> <translation>Design für den Ablauf auswählen.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation>Entweder ist die Datei fehlerhaft oder sie ist keine OpenLP 2.0 Ablauf-Datei.</translation> <translation>Entweder ist die Datei fehlerhaft oder sie ist keine OpenLP 2.0 Ablauf-Datei.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation>Element-Design</translation> <translation>Element-Design</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation>Notizen</translation> <translation>Notizen</translation>
</message> </message>
@ -3502,7 +3492,7 @@ Der Inhalt ist nicht in UTF-8 kodiert.</translation>
<message> <message>
<location filename="openlp/core/ui/slidecontroller.py" line="260"/> <location filename="openlp/core/ui/slidecontroller.py" line="260"/>
<source>Pause audio.</source> <source>Pause audio.</source>
<translation type="unfinished"></translation> <translation>Pausiere Musik.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -4050,12 +4040,12 @@ Sie ist nicht in UTF-8 kodiert.</translation>
<message> <message>
<location filename="openlp/core/ui/themewizard.py" line="435"/> <location filename="openlp/core/ui/themewizard.py" line="435"/>
<source>Starting color:</source> <source>Starting color:</source>
<translation type="unfinished"></translation> <translation>Startfarbe:</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/themewizard.py" line="437"/> <location filename="openlp/core/ui/themewizard.py" line="437"/>
<source>Ending color:</source> <source>Ending color:</source>
<translation type="unfinished"></translation> <translation>Endfarbe</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/themewizard.py" line="451"/> <location filename="openlp/core/ui/themewizard.py" line="451"/>
@ -4706,52 +4696,52 @@ Sie ist nicht in UTF-8 kodiert.</translation>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation>Präsentationen auswählen</translation> <translation>Präsentationen auswählen</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation>automatisch</translation> <translation>automatisch</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation>Anzeigen mit:</translation> <translation>Anzeigen mit:</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation>Eine Präsentation mit diesem Dateinamen existiert bereits.</translation> <translation>Eine Präsentation mit diesem Dateinamen existiert bereits.</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation>Datei existiert</translation> <translation>Datei existiert</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation>Präsentationsdateien dieses Dateiformats werden nicht unterstützt.</translation> <translation>Präsentationsdateien dieses Dateiformats werden nicht unterstützt.</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation>Präsentationen (%s)</translation> <translation>Präsentationen (%s)</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation>Fehlende Präsentation</translation> <translation>Fehlende Präsentation</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation>Die Präsentation »%s« existiert nicht mehr.</translation> <translation>Die Präsentation »%s« existiert nicht mehr.</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation>Die Präsentation »%s« ist nicht vollständig, bitte neu laden.</translation> <translation>Die Präsentation »%s« ist nicht vollständig, bitte neu laden.</translation>
</message> </message>
@ -4999,12 +4989,12 @@ Sie ist nicht in UTF-8 kodiert.</translation>
<message> <message>
<location filename="openlp/plugins/songusage/songusageplugin.py" line="203"/> <location filename="openlp/plugins/songusage/songusageplugin.py" line="203"/>
<source>display</source> <source>display</source>
<translation type="unfinished"></translation> <translation>Bildschirm</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songusage/songusageplugin.py" line="210"/> <location filename="openlp/plugins/songusage/songusageplugin.py" line="210"/>
<source>printed</source> <source>printed</source>
<translation type="unfinished"></translation> <translation>gedruckt</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5037,7 +5027,7 @@ Sie ist nicht in UTF-8 kodiert.</translation>
<message> <message>
<location filename="openlp/plugins/songusage/forms/songusagedeletedialog.py" line="62"/> <location filename="openlp/plugins/songusage/forms/songusagedeletedialog.py" line="62"/>
<source>Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.</source> <source>Select the date up to which the song usage data should be deleted. All data recorded before this date will be permanently deleted.</source>
<translation type="unfinished"></translation> <translation>Bitte wählen Sie das Datum bis zu dem die Protokollierungsdaten gelöscht werden sollen. Alle gespeicherten Daten, welche älter sind, werden dauerhaft gelöscht.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5333,7 +5323,9 @@ Einstellung korrekt.</translation>
<source> <source>
[above are Song Tags with notes imported from [above are Song Tags with notes imported from
EasyWorship]</source> EasyWorship]</source>
<translation type="unfinished"></translation> <translation>
[obige Liedformatierungen und Notizen werden importiert von
Easy Worship]</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5521,27 +5513,27 @@ Einstellung korrekt.</translation>
<message> <message>
<location filename="openlp/plugins/songs/forms/editsongdialog.py" line="341"/> <location filename="openlp/plugins/songs/forms/editsongdialog.py" line="341"/>
<source>Linked Audio</source> <source>Linked Audio</source>
<translation type="unfinished"></translation> <translation>Hintergrundmusik</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/forms/editsongdialog.py" line="344"/> <location filename="openlp/plugins/songs/forms/editsongdialog.py" line="344"/>
<source>Add &amp;File(s)</source> <source>Add &amp;File(s)</source>
<translation type="unfinished"></translation> <translation>&amp;Datei(en) hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/forms/editsongdialog.py" line="346"/> <location filename="openlp/plugins/songs/forms/editsongdialog.py" line="346"/>
<source>Add &amp;Media</source> <source>Add &amp;Media</source>
<translation type="unfinished"></translation> <translation>&amp;Medien hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/forms/editsongdialog.py" line="350"/> <location filename="openlp/plugins/songs/forms/editsongdialog.py" line="350"/>
<source>Remove &amp;All</source> <source>Remove &amp;All</source>
<translation type="unfinished"></translation> <translation type="unfinished">&amp;Alle Entfernen</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/forms/editsongform.py" line="710"/> <location filename="openlp/plugins/songs/forms/editsongform.py" line="710"/>
<source>Open File(s)</source> <source>Open File(s)</source>
<translation type="unfinished"></translation> <translation>Datei(en) öffnen</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5574,11 +5566,6 @@ Einstellung korrekt.</translation>
<source>Song Export Wizard</source> <source>Song Export Wizard</source>
<translation>Lied Exportassistent</translation> <translation>Lied Exportassistent</translation>
</message> </message>
<message>
<location filename="openlp/plugins/songs/forms/songexportform.py" line="171"/>
<source>This wizard will help to export your songs to the open and free OpenLyrics worship song format.</source>
<translation type="obsolete">Dieser Assistent wird Ihnen helfen Lieder in das freie und offene OpenLyrics Lobpreis Lieder Format zu exportieren.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/songs/forms/songexportform.py" line="175"/> <location filename="openlp/plugins/songs/forms/songexportform.py" line="175"/>
<source>Select Songs</source> <source>Select Songs</source>
@ -5768,12 +5755,12 @@ Einstellung korrekt.</translation>
<message> <message>
<location filename="openlp/plugins/songs/forms/mediafilesdialog.py" line="69"/> <location filename="openlp/plugins/songs/forms/mediafilesdialog.py" line="69"/>
<source>Select Media File(s)</source> <source>Select Media File(s)</source>
<translation type="unfinished"></translation> <translation>Wähle Audio-/Videodatei(en)</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/forms/mediafilesdialog.py" line="71"/> <location filename="openlp/plugins/songs/forms/mediafilesdialog.py" line="71"/>
<source>Select one or more audio files from the list below, and click OK to import them into this song.</source> <source>Select one or more audio files from the list below, and click OK to import them into this song.</source>
<translation type="unfinished"></translation> <translation>Wähle eine oder mehrere Audio Dateien von der folgenden Liste und klicke &gt;&gt;OK&lt;&lt;, um sie in dieses Lied zu importieren.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5789,7 +5776,7 @@ Einstellung korrekt.</translation>
<translation>Liedtext</translation> <translation>Liedtext</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation>CCLI-Lizenz: </translation> <translation>CCLI-Lizenz: </translation>
</message> </message>
@ -5867,11 +5854,6 @@ Einstellung korrekt.</translation>
</context> </context>
<context> <context>
<name>SongsPlugin.SongExportForm</name> <name>SongsPlugin.SongExportForm</name>
<message>
<location filename="openlp/plugins/songs/forms/songexportform.py" line="287"/>
<source>Finished export.</source>
<translation type="obsolete">Export beendet.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/songs/forms/songexportform.py" line="292"/> <location filename="openlp/plugins/songs/forms/songexportform.py" line="292"/>
<source>Your song export failed.</source> <source>Your song export failed.</source>

View File

@ -1290,7 +1290,7 @@ Do you want to add the other images anyway?</source>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1899,32 +1899,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1932,82 +1932,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2669,7 +2669,7 @@ Database: %s</source>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2991,33 +2991,33 @@ Suffix not supported</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3117,22 +3117,22 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3152,7 +3152,7 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3162,12 +3162,12 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -4554,52 +4554,52 @@ The content encoding is not UTF-8.</source>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5626,7 +5626,7 @@ The encoding is responsible for the correct character representation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="id" sourcelanguage=""> <!DOCTYPE TS><TS version="2.0" language="id" sourcelanguage="">
<context>
<name>AlertPlugin.AlertForm</name>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="178"/>
<source>You have not entered a parameter to be replaced.
Do you want to continue anyway?</source>
<translation type="obsolete">Anda belum memasukkan parameter baru.
Tetap lanjutkan?</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="178"/>
<source>No Parameter Found</source>
<translation type="obsolete">Parameter Tidak Ditemukan</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="189"/>
<source>No Placeholder Found</source>
<translation type="obsolete">Placeholder Tidak Ditemukan</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="189"/>
<source>The alert text does not contain &apos;&lt;&gt;&apos;.
Do you want to continue anyway?</source>
<translation type="obsolete">Peringatan tidak mengandung &apos;&lt;&gt;&apos;.
Tetap lanjutkan?</translation>
</message>
</context>
<context> <context>
<name>AlertsPlugin</name> <name>AlertsPlugin</name>
<message> <message>
@ -39,11 +12,6 @@ Tetap lanjutkan?</translation>
<source>Show an alert message.</source> <source>Show an alert message.</source>
<translation>Menampilkan pesan peringatan.</translation> <translation>Menampilkan pesan peringatan.</translation>
</message> </message>
<message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="105"/>
<source>&lt;strong&gt;Alerts Plugin&lt;/strong&gt;&lt;br /&gt;The alert plugin controls the displaying of nursery alerts on the display screen</source>
<translation type="obsolete">&lt;strong&gt;Plugin Peringatan&lt;/strong&gt;&lt;br /&gt;Plugin peringatan mengendalikan tampilan pesan pada layar</translation>
</message>
<message> <message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/> <location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/>
<source>Alert</source> <source>Alert</source>
@ -181,94 +149,6 @@ Tetap lanjutkan?</translation>
<translation>Waktu-habis untuk peringatan:</translation> <translation>Waktu-habis untuk peringatan:</translation>
</message> </message>
</context> </context>
<context>
<name>BibleDB.Wizard</name>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="117"/>
<source>Importing books... %s</source>
<translation type="obsolete">Mengimpor kitab... %s</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="157"/>
<source>Importing verses from %s...</source>
<comment>Importing verses from &lt;book name&gt;...</comment>
<translation type="obsolete">Mengimpor ayat dari %s...</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="166"/>
<source>Importing verses... done.</source>
<translation type="obsolete">Mengimpor ayat... selesai.</translation>
</message>
</context>
<context>
<name>BiblePlugin</name>
<message>
<location filename="openlp/plugins/bibles/bibleplugin.py" line="119"/>
<source>&amp;Upgrade older Bibles</source>
<translation type="obsolete">&amp;Upgrade Alkitab lama</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/bibleplugin.py" line="121"/>
<source>Upgrade the Bible databases to the latest format</source>
<translation type="obsolete">Upgrade basis data Alkitab ke format terbaru.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/bibleplugin.py" line="121"/>
<source>Upgrade the Bible databases to the latest format.</source>
<translation type="obsolete">Upgrade basis data Alkitab ke format terbaru.</translation>
</message>
</context>
<context>
<name>BiblePlugin.HTTPBible</name>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="596"/>
<source>Download Error</source>
<translation type="obsolete">Unduhan Gagal</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="596"/>
<source>There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug.</source>
<translation type="obsolete">Ada masalah dalam mengunduh ayat yang terpilih. Mohon periksa sambungan internet Anda dan jika masalah berlanjut, pertimbangkan untuk melaporkan hal ini sebagai kutu.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="603"/>
<source>Parse Error</source>
<translation type="obsolete">Galat saat parsing</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="603"/>
<source>There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug.</source>
<translation type="obsolete">Ada masalah dalam mengekstrak ayat yang terpilih. Jika masalah berlanjut, pertimbangkan untuk melaporkan hal ini sebagai kutu.</translation>
</message>
</context>
<context>
<name>BiblePlugin.MediaItem</name>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="438"/>
<source>Bible not fully loaded.</source>
<translation type="obsolete">Alkitab belum termuat seluruhnya.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="88"/>
<source>You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?</source>
<translation type="obsolete">Tidak dapat menggabungkan hasil pencarian ayat. Ingin menghapus hasil pencarian dan mulai pencarian baru?</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="695"/>
<source>Information</source>
<translation type="obsolete">Informasi</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/lib/mediaitem.py" line="695"/>
<source>The second Bibles does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.</source>
<translation type="obsolete">Alkitab kedua tidak memiliki seluruh ayat yang ada di Alkitab utama. Hanya ayat yang ditemukan di kedua Alkitab yang akan ditampilkan. %d ayat tidak terlihat di hasil.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="695"/>
<source>The second Bible does not contain all the verses that are in the main Bible. Only verses found in both Bibles will be shown. %d verses have not been included in the results.</source>
<translation type="obsolete">Alkitab kedua tidak memiliki seluruh ayat yang ada di Alkitab utama. Hanya ayat yang ditemukan di kedua Alkitab yang akan ditampilkan. %d ayat tidak terlihat di hasil.</translation>
</message>
</context>
<context> <context>
<name>BiblesPlugin</name> <name>BiblesPlugin</name>
<message> <message>
@ -922,16 +802,6 @@ dibutuhkan dan membutuhkan koneksi internet.</translation>
<source>Please select the Bibles to upgrade</source> <source>Please select the Bibles to upgrade</source>
<translation>Mohon pilih Alkitab untuk dimutakhirkan</translation> <translation>Mohon pilih Alkitab untuk dimutakhirkan</translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="389"/>
<source>Version name:</source>
<translation type="obsolete">Nama versi:</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="391"/>
<source>This Bible still exists. Please change the name or uncheck it.</source>
<translation type="obsolete">Alkitab masih ada. Mohon ubah namanya atau kosongkan centang.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/>
<source>Upgrading</source> <source>Upgrading</source>
@ -942,43 +812,6 @@ dibutuhkan dan membutuhkan koneksi internet.</translation>
<source>Please wait while your Bibles are upgraded.</source> <source>Please wait while your Bibles are upgraded.</source>
<translation>Mohon tunggu sementara Alkitab sedang diperbarui.</translation> <translation>Mohon tunggu sementara Alkitab sedang diperbarui.</translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="414"/>
<source>You need to specify a Backup Directory for your Bibles.</source>
<translation type="obsolete">Anda harus menentukan Direktori Cadangan untuk Alkitab.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/forms/bibleupgradeform.py" line="422"/>
<source>The backup was not successful.
To backup your Bibles you need permission to write to the given directory. If you have write permissions and this error still occurs, please report a bug.</source>
<translation type="obsolete">Pencadangan gagal.
Untuk mencadangkan Alkitab Anda membutuhkan izin untuk write di direktori tersebut. Jika Anda sudah memiliki izin dan tetap terjadi galat, mohon laporkan ini sebagai kutu.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="433"/>
<source>You need to specify a version name for your Bible.</source>
<translation type="obsolete">Anda harus menentukan nama versi untuk Alkitab Anda.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="471"/>
<source>Bible Exists</source>
<translation type="obsolete">Alkitab Sudah Ada</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="471"/>
<source>This Bible already exists. Please upgrade a different Bible, delete the existing one or uncheck.</source>
<translation type="obsolete">Alkitab sudah ada. Mohon mutakhirkan Alkitab yang lain, hapus yang sudah ada, atau hilangkan centang.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/forms/bibleupgradeform.py" line="522"/>
<source>Starting upgrading Bible(s)...</source>
<translation type="obsolete">Memulai pemutakhiran Alkitab...</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="533"/>
<source>There are no Bibles available to upgrade.</source>
<translation type="obsolete">Tidak ada Alkitab yang dapat dimutakhirkan.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="570"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="570"/>
<source>Upgrading Bible %s of %s: &quot;%s&quot; <source>Upgrading Bible %s of %s: &quot;%s&quot;
@ -998,39 +831,18 @@ Memutakhirkan...</translation>
<source>Download Error</source> <source>Download Error</source>
<translation type="unfinished">Unduhan Gagal</translation> <translation type="unfinished">Unduhan Gagal</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/forms/bibleupgradeform.py" line="603"/>
<source>To upgrade your Web Bibles an Internet connection is required. If you have a working Internet connection and this error still occurs, please report a bug.</source>
<translation type="obsolete">To upgrade your Web Bibles an Internet connection is required. If you have a working Internet connection and this error still occurs, please report a bug.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="536"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="536"/>
<source>Upgrading Bible %s of %s: &quot;%s&quot; <source>Upgrading Bible %s of %s: &quot;%s&quot;
Upgrading %s ...</source> Upgrading %s ...</source>
<translation>Memutakhirkan Alkitab %s dari %s: &quot;%s&quot; <translation>Memutakhirkan Alkitab %s dari %s: &quot;%s&quot;
Memutakhirkan %s...</translation> Memutakhirkan %s...</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/forms/bibleupgradeform.py" line="736"/>
<source>Upgrading Bible %s of %s: &quot;%s&quot;
Done</source>
<translation type="obsolete">Memutakhirkan Alkitab %s dari %s: &quot;%s&quot;
Selesai</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="605"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="605"/>
<source>, %s failed</source> <source>, %s failed</source>
<translation>, %s gagal</translation> <translation>, %s gagal</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/bibles/forms/bibleupgradeform.py" line="770"/>
<source>Upgrading Bible(s): %s successful%s
Please note, that verses from Web Bibles will be downloaded
on demand and so an Internet connection is required.</source>
<translation type="obsolete">Memutakhirkan Alkitab: %s berhasil%s
Mohon perhatikan bahwa ayat dari Alkitab Internet
akan diunduh saat diperlukan. Koneksi diperlukan.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="619"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="619"/>
<source>Upgrading Bible(s): %s successful%s</source> <source>Upgrading Bible(s): %s successful%s</source>
@ -1048,11 +860,6 @@ To backup your Bibles you need permission to write to the given directory.</sour
<translation>Pencadangan gagal. <translation>Pencadangan gagal.
Untuk mencadangkan Alkitab Anda perlu izin untuk menulis di direktori terpilih.</translation> Untuk mencadangkan Alkitab Anda perlu izin untuk menulis di direktori terpilih.</translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="521"/>
<source>Starting Bible upgrade...</source>
<translation type="obsolete">Memulai pemutakhiran Alkitab...</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="440"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="440"/>
<source>To upgrade your Web Bibles an Internet connection is required.</source> <source>To upgrade your Web Bibles an Internet connection is required.</source>
@ -1088,11 +895,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
</context> </context>
<context> <context>
<name>CustomPlugin</name> <name>CustomPlugin</name>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="57"/>
<source>&lt;strong&gt;Custom Plugin&lt;/strong&gt;&lt;br /&gt;The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source>
<translation type="obsolete">&lt;strong&gt;Plugin Tambahan&lt;/strong&gt;&lt;br/&gt;Plugin tambahan menyediakan kemampuan untuk mengatur slide teks yang dapat ditampilkan pada layar dengan cara yang sama dengan lagu. Plugin ini lebih fleksibel ketimbang plugin lagu.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/custom/customplugin.py" line="57"/> <location filename="openlp/plugins/custom/customplugin.py" line="57"/>
<source>&lt;strong&gt;Custom Slide Plugin&lt;/strong&gt;&lt;br /&gt;The custom slide plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source> <source>&lt;strong&gt;Custom Slide Plugin&lt;/strong&gt;&lt;br /&gt;The custom slide plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source>
@ -1197,11 +999,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
<source>Edit all the slides at once.</source> <source>Edit all the slides at once.</source>
<translation>Sunting seluruh slide bersamaan.</translation> <translation>Sunting seluruh slide bersamaan.</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/forms/editcustomslidedialog.py" line="57"/>
<source>Split Slide</source>
<translation type="obsolete">Pecah Slide</translation>
</message>
<message> <message>
<location filename="openlp/plugins/custom/forms/editcustomslidedialog.py" line="61"/> <location filename="openlp/plugins/custom/forms/editcustomslidedialog.py" line="61"/>
<source>Split a slide into two by inserting a slide splitter.</source> <source>Split a slide into two by inserting a slide splitter.</source>
@ -1248,75 +1045,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
</translation> </translation>
</message> </message>
</context> </context>
<context>
<name>CustomsPlugin</name>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="98"/>
<source>Custom</source>
<comment>name singular</comment>
<translation type="obsolete">Suaian</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="99"/>
<source>Customs</source>
<comment>name plural</comment>
<translation type="obsolete">Suaian</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="103"/>
<source>Custom</source>
<comment>container title</comment>
<translation type="obsolete">Suaian</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="107"/>
<source>Load a new Custom.</source>
<translation type="obsolete">Muat Suaian baru.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="108"/>
<source>Import a Custom.</source>
<translation type="obsolete">Impor sebuah Suaian.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="109"/>
<source>Add a new Custom.</source>
<translation type="obsolete">Tambahkan sebuah Suaian.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="110"/>
<source>Edit the selected Custom.</source>
<translation type="obsolete">Sunting Suaian terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="111"/>
<source>Delete the selected Custom.</source>
<translation type="obsolete">Hapus Suaian terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="113"/>
<source>Preview the selected Custom.</source>
<translation type="obsolete">Pratinjau Suaian terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="115"/>
<source>Send the selected Custom live.</source>
<translation type="obsolete">Tayangkan Suaian terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="117"/>
<source>Add the selected Custom to the service.</source>
<translation type="obsolete">Tambahkan Suaian ke dalam layanan</translation>
</message>
</context>
<context>
<name>GeneralTab</name>
<message>
<location filename="openlp/core/ui/generaltab.py" line="47"/>
<source>General</source>
<translation type="obsolete">Umum</translation>
</message>
</context>
<context> <context>
<name>ImagePlugin</name> <name>ImagePlugin</name>
<message> <message>
@ -1342,41 +1070,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
<comment>container title</comment> <comment>container title</comment>
<translation>Gambar</translation> <translation>Gambar</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="73"/>
<source>Load a new Image.</source>
<translation type="obsolete">Muat Gambar baru</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="75"/>
<source>Add a new Image.</source>
<translation type="obsolete">Tambahkan Gambar baru</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="76"/>
<source>Edit the selected Image.</source>
<translation type="obsolete">Sunting Gambar terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="77"/>
<source>Delete the selected Image.</source>
<translation type="obsolete">Hapus Gambar terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="78"/>
<source>Preview the selected Image.</source>
<translation type="obsolete">Pratinjau Gambar terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="79"/>
<source>Send the selected Image live.</source>
<translation type="obsolete">Tayangkan Gambar terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/images/imageplugin.py" line="80"/>
<source>Add the selected Image to the service.</source>
<translation type="obsolete">Tambahkan Gambar terpilih ke layanan.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/images/imageplugin.py" line="79"/> <location filename="openlp/plugins/images/imageplugin.py" line="79"/>
<source>Load a new image.</source> <source>Load a new image.</source>
@ -1509,41 +1202,6 @@ Ingin tetap menambah gambar lain?</translation>
<comment>container title</comment> <comment>container title</comment>
<translation>Media</translation> <translation>Media</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="115"/>
<source>Load a new Media.</source>
<translation type="obsolete">Muat Media baru.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="117"/>
<source>Add a new Media.</source>
<translation type="obsolete">Tambahkan Media baru.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="118"/>
<source>Edit the selected Media.</source>
<translation type="obsolete">Sunting Media terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="119"/>
<source>Delete the selected Media.</source>
<translation type="obsolete">Hapus Media terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="120"/>
<source>Preview the selected Media.</source>
<translation type="obsolete">Pratinjau Media terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="121"/>
<source>Send the selected Media live.</source>
<translation type="obsolete">Tayangkan Media terpilih.</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/media/mediaplugin.py" line="122"/>
<source>Add the selected Media to the service.</source>
<translation type="obsolete">Tambahkan Media terpilih ke layanan.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/media/mediaplugin.py" line="115"/> <location filename="openlp/plugins/media/mediaplugin.py" line="115"/>
<source>Load new media.</source> <source>Load new media.</source>
@ -1649,7 +1307,7 @@ Ingin tetap menambah gambar lain?</translation>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation>Berkas Gambar</translation> <translation>Berkas Gambar</translation>
</message> </message>
@ -1930,67 +1588,6 @@ Portions copyright &#xa9; 2004-2011 %s</source>
<translation>Balikkan ke logo OpenLP bawaan.</translation> <translation>Balikkan ke logo OpenLP bawaan.</translation>
</message> </message>
</context> </context>
<context>
<name>OpenLP.DisplayTagDialog</name>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="126"/>
<source>Edit Selection</source>
<translation type="obsolete">Sunting pilihan</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="139"/>
<source>Description</source>
<translation type="obsolete">Deskripsi</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="132"/>
<source>Tag</source>
<translation type="obsolete">Label</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="133"/>
<source>Start tag</source>
<translation type="obsolete">Label awal</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="135"/>
<source>End tag</source>
<translation type="obsolete">Label akhir</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="141"/>
<source>Tag Id</source>
<translation type="obsolete">ID Label</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="143"/>
<source>Start HTML</source>
<translation type="obsolete">HTML Awal</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="145"/>
<source>End HTML</source>
<translation type="obsolete">Akhir HTML</translation>
</message>
</context>
<context>
<name>OpenLP.DisplayTagTab</name>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="164"/>
<source>Update Error</source>
<translation type="obsolete">Galat dalam Memperbarui</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="122"/>
<source>Tag &quot;n&quot; already defined.</source>
<translation type="obsolete">Label &quot;n&quot; sudah terdefinisi.</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="164"/>
<source>Tag %s already defined.</source>
<translation type="obsolete">Label %s telah terdefinisi.</translation>
</message>
</context>
<context> <context>
<name>OpenLP.ExceptionDialog</name> <name>OpenLP.ExceptionDialog</name>
<message> <message>
@ -2192,11 +1789,6 @@ Mohon gunakan bahasa Inggris untuk laporan kutu.</translation>
<source>Songs</source> <source>Songs</source>
<translation>Lagu</translation> <translation>Lagu</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/firsttimewizard.py" line="211"/>
<source>Custom Text</source>
<translation type="obsolete">Teks </translation>
</message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="213"/> <location filename="openlp/core/ui/firsttimewizard.py" line="213"/>
<source>Bible</source> <source>Bible</source>
@ -2242,19 +1834,6 @@ Mohon gunakan bahasa Inggris untuk laporan kutu.</translation>
<source>Unable to detect an Internet connection.</source> <source>Unable to detect an Internet connection.</source>
<translation>Tidak dapat mendeteksi koneksi Internet.</translation> <translation>Tidak dapat mendeteksi koneksi Internet.</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/firsttimewizard.py" line="233"/>
<source>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.</source>
<translation type="obsolete">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.</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="244"/> <location filename="openlp/core/ui/firsttimewizard.py" line="244"/>
<source>Sample Songs</source> <source>Sample Songs</source>
@ -2295,16 +1874,6 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai.</translation>
<source>Set up default settings to be used by OpenLP.</source> <source>Set up default settings to be used by OpenLP.</source>
<translation>Atur pengaturan bawaan pada OpenLP.</translation> <translation>Atur pengaturan bawaan pada OpenLP.</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/core/ui/firsttimewizard.py" line="257"/>
<source>Setting Up And Importing</source>
<translation type="obsolete">Pengaturan Awal dan Pengimporan</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/core/ui/firsttimewizard.py" line="259"/>
<source>Please wait while OpenLP is set up and your data is imported.</source>
<translation type="obsolete">Mohon tunggu selama OpenLP diatur dan data diimpor.</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="260"/> <location filename="openlp/core/ui/firsttimewizard.py" line="260"/>
<source>Default output display:</source> <source>Default output display:</source>
@ -2436,32 +2005,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation type="unfinished">Galat dalam Memperbarui</translation> <translation type="unfinished">Galat dalam Memperbarui</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation type="unfinished">Label &quot;n&quot; sudah terdefinisi.</translation> <translation type="unfinished">Label &quot;n&quot; sudah terdefinisi.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation type="unfinished">Label %s telah terdefinisi.</translation> <translation type="unfinished">Label %s telah terdefinisi.</translation>
</message> </message>
@ -2469,82 +2038,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3040,11 +2609,6 @@ Versi terbaru dapat diunduh dari http://openlp.org/.</translation>
<source>Are you sure you want to close OpenLP?</source> <source>Are you sure you want to close OpenLP?</source>
<translation>Yakin ingin menutup OpenLP?</translation> <translation>Yakin ingin menutup OpenLP?</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/core/ui/mainwindow.py" line="360"/>
<source>Print the current Service Order.</source>
<translation type="obsolete">Cetak Daftar Layanan aktif</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/mainwindow.py" line="499"/> <location filename="openlp/core/ui/mainwindow.py" line="499"/>
<source>Open &amp;Data Folder...</source> <source>Open &amp;Data Folder...</source>
@ -3055,11 +2619,6 @@ Versi terbaru dapat diunduh dari http://openlp.org/.</translation>
<source>Open the folder where songs, bibles and other data resides.</source> <source>Open the folder where songs, bibles and other data resides.</source>
<translation>Buka folder tempat lagu, Alkitab, dan data lain disimpan.</translation> <translation>Buka folder tempat lagu, Alkitab, dan data lain disimpan.</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/mainwindow.py" line="412"/>
<source>&amp;Configure Display Tags</source>
<translation type="obsolete">&amp;Konfigurasi Label Tampilan</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/mainwindow.py" line="491"/> <location filename="openlp/core/ui/mainwindow.py" line="491"/>
<source>&amp;Autodetect</source> <source>&amp;Autodetect</source>
@ -3218,7 +2777,7 @@ Database: %s</source>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation>Tidak Ada Barang yang Terpilih</translation> <translation>Tidak Ada Barang yang Terpilih</translation>
</message> </message>
@ -3257,13 +2816,6 @@ Database: %s</source>
<source>You must select a %s service item.</source> <source>You must select a %s service item.</source>
<translation>Anda harus memilih sebuah butir layanan %s.</translation> <translation>Anda harus memilih sebuah butir layanan %s.</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/core/lib/mediamanageritem.py" line="341"/>
<source>Duplicate file name %s.
Filename already exists in list</source>
<translation type="obsolete">Nama berkas %s ganda.
Nama berkas sudah ada di daftar.</translation>
</message>
<message> <message>
<location filename="openlp/core/lib/mediamanageritem.py" line="569"/> <location filename="openlp/core/lib/mediamanageritem.py" line="569"/>
<source>You must select one or more items to add.</source> <source>You must select one or more items to add.</source>
@ -3359,11 +2911,6 @@ Suffix not supported</source>
<source>Options</source> <source>Options</source>
<translation>Pilihan</translation> <translation>Pilihan</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/printservicedialog.py" line="71"/>
<source>Close</source>
<translation type="obsolete">Tutup</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/printservicedialog.py" line="66"/> <location filename="openlp/core/ui/printservicedialog.py" line="66"/>
<source>Copy</source> <source>Copy</source>
@ -3409,11 +2956,6 @@ Suffix not supported</source>
<source>Include play length of media items</source> <source>Include play length of media items</source>
<translation>Masukkan lama putar butir media</translation> <translation>Masukkan lama putar butir media</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/core/ui/printservicedialog.py" line="161"/>
<source>Service Order Sheet</source>
<translation type="obsolete">Lembar Daftar Layanan</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/printservicedialog.py" line="150"/> <location filename="openlp/core/ui/printservicedialog.py" line="150"/>
<source>Add page break before each text item</source> <source>Add page break before each text item</source>
@ -3557,34 +3099,34 @@ Suffix not supported</source>
<translation>&amp;Ubah Tema</translation> <translation>&amp;Ubah Tema</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation>Berkas Layanan OpenLP (*.osz)</translation> <translation>Berkas Layanan OpenLP (*.osz)</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation>Berkas bukan berupa layanan. <translation>Berkas bukan berupa layanan.
Isi berkas tidak berupa UTF-8.</translation> Isi berkas tidak berupa UTF-8.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation>Berkas bukan layanan sahih.</translation> <translation>Berkas bukan layanan sahih.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation>Penangan Tayang hilang</translation> <translation>Penangan Tayang hilang</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation>Butir tidak dapat ditayangkan karena tidak ada penangan untuk menayangkannya.</translation> <translation>Butir tidak dapat ditayangkan karena tidak ada penangan untuk menayangkannya.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3664,22 +3206,22 @@ Isi berkas tidak berupa UTF-8.</translation>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3719,17 +3261,17 @@ Isi berkas tidak berupa UTF-8.</translation>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5121,52 +4663,52 @@ The content encoding is not UTF-8.</source>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -6193,7 +5735,7 @@ The encoding is responsible for the correct character representation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

File diff suppressed because it is too large Load Diff

View File

@ -12,11 +12,6 @@
<source>Show an alert message.</source> <source>Show an alert message.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="105"/>
<source>&lt;strong&gt;Alerts Plugin&lt;/strong&gt;&lt;br /&gt;The alert plugin controls the displaying of nursery alerts on the display screen</source>
<translation type="obsolete">&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt; .</translation>
</message>
<message> <message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/> <location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/>
<source>Alert</source> <source>Alert</source>
@ -796,11 +791,6 @@ demand and thus an internet connection is required.</source>
<source>Please select the Bibles to upgrade</source> <source>Please select the Bibles to upgrade</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="389"/>
<source>Version name:</source>
<translation type="obsolete"> :</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/>
<source>Upgrading</source> <source>Upgrading</source>
@ -1301,7 +1291,7 @@ Do you want to add the other images anyway?</source>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1910,32 +1900,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1943,82 +1933,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2680,7 +2670,7 @@ Database: %s</source>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3002,28 +2992,28 @@ Suffix not supported</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3053,7 +3043,7 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3108,22 +3098,22 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3163,17 +3153,17 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -4565,52 +4555,52 @@ The content encoding is not UTF-8.</source>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5637,7 +5627,7 @@ The encoding is responsible for the correct character representation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -1,32 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="nb" sourcelanguage=""> <!DOCTYPE TS><TS version="2.0" language="nb" sourcelanguage="">
<context>
<name>AlertPlugin.AlertForm</name>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="178"/>
<source>You have not entered a parameter to be replaced.
Do you want to continue anyway?</source>
<translation type="obsolete">Du har ikke angitt et parameter å erstatte.
Vil du fortsette likevel?</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="178"/>
<source>No Parameter Found</source>
<translation type="obsolete">Ingen parametre funnet</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="189"/>
<source>No Placeholder Found</source>
<translation type="obsolete">Ingen plassholder funnet</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="189"/>
<source>The alert text does not contain &apos;&lt;&gt;&apos;.
Do you want to continue anyway?</source>
<translation type="obsolete">Varselteksten inneholder ikke &apos;&lt;&gt;&apos;.
Vil du fortsette likevel?</translation>
</message>
</context>
<context> <context>
<name>AlertsPlugin</name> <name>AlertsPlugin</name>
<message> <message>
@ -39,11 +12,6 @@ Vil du fortsette likevel?</translation>
<source>Show an alert message.</source> <source>Show an alert message.</source>
<translation>Vis en varselmelding.</translation> <translation>Vis en varselmelding.</translation>
</message> </message>
<message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="105"/>
<source>&lt;strong&gt;Alerts Plugin&lt;/strong&gt;&lt;br /&gt;The alert plugin controls the displaying of nursery alerts on the display screen</source>
<translation type="obsolete">&lt;strong&gt;Varsel Tilleg&lt;/strong&gt;&lt;br /&gt;Varsels tillegg kontrolleren viser barn-varsel visnings skjermen</translation>
</message>
<message> <message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/> <location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/>
<source>Alert</source> <source>Alert</source>
@ -181,61 +149,6 @@ Vil du fortsette likevel?</translation>
<translation>Varselvarighet:</translation> <translation>Varselvarighet:</translation>
</message> </message>
</context> </context>
<context>
<name>BibleDB.Wizard</name>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="117"/>
<source>Importing books... %s</source>
<translation type="obsolete">Importerer bøker... %s</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="157"/>
<source>Importing verses from %s...</source>
<comment>Importing verses from &lt;book name&gt;...</comment>
<translation type="obsolete">Importerer vers fra %s...</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="166"/>
<source>Importing verses... done.</source>
<translation type="obsolete">Importerer vers... ferdig.</translation>
</message>
</context>
<context>
<name>BiblePlugin.HTTPBible</name>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="596"/>
<source>Download Error</source>
<translation type="obsolete">Nedlastningsfeil</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="603"/>
<source>Parse Error</source>
<translation type="obsolete">Analysefeil</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="596"/>
<source>There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug.</source>
<translation type="obsolete">Det oppstod et problem ved nedlastingen av de valgte versene. Vennligst sjekk internettilkoblingen, dersom denne feilen vedvarer, vær vennlig å rapportere feilen.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="603"/>
<source>There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug.</source>
<translation type="obsolete">Det oppstod et problem ved uthenting av de valgte versene. Dersom denne feilen vedvarer, vær vennlig å rapportere feilen.</translation>
</message>
</context>
<context>
<name>BiblePlugin.MediaItem</name>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="438"/>
<source>Bible not fully loaded.</source>
<translation type="obsolete">Bibelen er ikke ferdiglastet.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="88"/>
<source>You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?</source>
<translation type="obsolete">Du kan ikke kombinere enkle og doble bibelverssøkeresultat. Vil du fjerne søkeresultatene og starte et nytt søk?</translation>
</message>
</context>
<context> <context>
<name>BiblesPlugin</name> <name>BiblesPlugin</name>
<message> <message>
@ -888,11 +801,6 @@ demand and thus an internet connection is required.</source>
<source>Please select the Bibles to upgrade</source> <source>Please select the Bibles to upgrade</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="389"/>
<source>Version name:</source>
<translation type="obsolete">Versjonsnavn:</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/>
<source>Upgrading</source> <source>Upgrading</source>
@ -903,16 +811,6 @@ demand and thus an internet connection is required.</source>
<source>Please wait while your Bibles are upgraded.</source> <source>Please wait while your Bibles are upgraded.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="433"/>
<source>You need to specify a version name for your Bible.</source>
<translation type="obsolete">Du spesifisere et versjonsnavn for Bibelen din.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="471"/>
<source>Bible Exists</source>
<translation type="obsolete">Bibelen finnes</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="570"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="570"/>
<source>Upgrading Bible %s of %s: &quot;%s&quot; <source>Upgrading Bible %s of %s: &quot;%s&quot;
@ -992,11 +890,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
</context> </context>
<context> <context>
<name>CustomPlugin</name> <name>CustomPlugin</name>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="57"/>
<source>&lt;strong&gt;Custom Plugin&lt;/strong&gt;&lt;br /&gt;The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source>
<translation type="obsolete">&lt;strong&gt;Egendefinert lystbildetillegg&lt;/strong&gt;&lt;br /&gt;Tillegget gir mulighet til å sette opp tilpassede lysbilder med tekst som kan vises skjermen samme måte som sanger. Tillegget tilbyr større fleksibilitet enn sangteksttillegget.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/custom/customplugin.py" line="57"/> <location filename="openlp/plugins/custom/customplugin.py" line="57"/>
<source>&lt;strong&gt;Custom Slide Plugin&lt;/strong&gt;&lt;br /&gt;The custom slide plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source> <source>&lt;strong&gt;Custom Slide Plugin&lt;/strong&gt;&lt;br /&gt;The custom slide plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source>
@ -1101,11 +994,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
<source>Edit all the slides at once.</source> <source>Edit all the slides at once.</source>
<translation>Rediger alle lysbilder en gang.</translation> <translation>Rediger alle lysbilder en gang.</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/forms/editcustomslidedialog.py" line="57"/>
<source>Split Slide</source>
<translation type="obsolete">Del opp lysbilde</translation>
</message>
<message> <message>
<location filename="openlp/plugins/custom/forms/editcustomslidedialog.py" line="61"/> <location filename="openlp/plugins/custom/forms/editcustomslidedialog.py" line="61"/>
<source>Split a slide into two by inserting a slide splitter.</source> <source>Split a slide into two by inserting a slide splitter.</source>
@ -1153,35 +1041,6 @@ Please note that verses from Web Bibles will be downloaded on demand and so an I
</translation> </translation>
</message> </message>
</context> </context>
<context>
<name>CustomsPlugin</name>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="98"/>
<source>Custom</source>
<comment>name singular</comment>
<translation type="obsolete">Egendefinert lysbilde</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="99"/>
<source>Customs</source>
<comment>name plural</comment>
<translation type="obsolete">Egendefinerte lysbilder</translation>
</message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/plugins/custom/customplugin.py" line="103"/>
<source>Custom</source>
<comment>container title</comment>
<translation type="obsolete">Egendefinert lysbilde</translation>
</message>
</context>
<context>
<name>GeneralTab</name>
<message>
<location filename="openlp/core/ui/generaltab.py" line="47"/>
<source>General</source>
<translation type="obsolete">Generell</translation>
</message>
</context>
<context> <context>
<name>ImagePlugin</name> <name>ImagePlugin</name>
<message> <message>
@ -1444,7 +1303,7 @@ Vil du likevel legge til de andre bildene?</translation>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation>Bildefiler</translation> <translation>Bildefiler</translation>
</message> </message>
@ -2113,32 +1972,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2146,82 +2005,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2883,7 +2742,7 @@ Database: %s</source>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3205,28 +3064,28 @@ Suffix not supported</source>
<translation type="unfinished">&amp;Bytt objekttema</translation> <translation type="unfinished">&amp;Bytt objekttema</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3256,7 +3115,7 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3311,22 +3170,22 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3366,17 +3225,17 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -4255,11 +4114,6 @@ The content encoding is not UTF-8.</source>
<source>OpenLP 2.0</source> <source>OpenLP 2.0</source>
<translation type="unfinished">OpenLP 2.0</translation> <translation type="unfinished">OpenLP 2.0</translation>
</message> </message>
<message>
<location filename="build/lib.linux-i686-2.7/openlp/core/lib/ui.py" line="105"/>
<source>Open Service</source>
<translation type="obsolete">Åpne møteplan</translation>
</message>
<message> <message>
<location filename="openlp/core/lib/ui.py" line="107"/> <location filename="openlp/core/lib/ui.py" line="107"/>
<source>Preview</source> <source>Preview</source>
@ -4773,52 +4627,52 @@ The content encoding is not UTF-8.</source>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation type="unfinished">Velg presentasjon(er)</translation> <translation type="unfinished">Velg presentasjon(er)</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation type="unfinished">Automatisk</translation> <translation type="unfinished">Automatisk</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation type="unfinished">Presenter ved hjelp av:</translation> <translation type="unfinished">Presenter ved hjelp av:</translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5845,7 +5699,7 @@ The encoding is responsible for the correct character representation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="ru" sourcelanguage=""> <!DOCTYPE TS><TS version="2.0" language="ru" sourcelanguage="">
<context>
<name>AlertPlugin.AlertForm</name>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="178"/>
<source>You have not entered a parameter to be replaced.
Do you want to continue anyway?</source>
<translation type="obsolete">Вы не указали параметры для замены.
Все равно продолжить?</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="178"/>
<source>No Parameter Found</source>
<translation type="obsolete">Параметр не найден</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="189"/>
<source>No Placeholder Found</source>
<translation type="obsolete">Заполнитель не найден</translation>
</message>
<message>
<location filename="openlp/plugins/alerts/forms/alertform.py" line="189"/>
<source>The alert text does not contain &apos;&lt;&gt;&apos;.
Do you want to continue anyway?</source>
<translation type="obsolete">Текст оповещения не содержит &apos;&lt;&gt;.
Все равно продолжить?</translation>
</message>
</context>
<context> <context>
<name>AlertsPlugin</name> <name>AlertsPlugin</name>
<message> <message>
@ -39,11 +12,6 @@ Do you want to continue anyway?</source>
<source>Show an alert message.</source> <source>Show an alert message.</source>
<translation>Показать текст оповещения.</translation> <translation>Показать текст оповещения.</translation>
</message> </message>
<message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="105"/>
<source>&lt;strong&gt;Alerts Plugin&lt;/strong&gt;&lt;br /&gt;The alert plugin controls the displaying of nursery alerts on the display screen</source>
<translation type="obsolete">&lt;strong&gt;Плагин оповещений&lt;/strong&gt;&lt;br /&gt;Плагин оповещений управляет отображением срочных сообщений на экране</translation>
</message>
<message> <message>
<location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/> <location filename="openlp/plugins/alerts/alertsplugin.py" line="116"/>
<source>Alert</source> <source>Alert</source>
@ -181,61 +149,6 @@ Do you want to continue anyway?</source>
<translation>Таймаут оповещения:</translation> <translation>Таймаут оповещения:</translation>
</message> </message>
</context> </context>
<context>
<name>BibleDB.Wizard</name>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="117"/>
<source>Importing books... %s</source>
<translation type="obsolete">Импорт книг... %s</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="157"/>
<source>Importing verses from %s...</source>
<comment>Importing verses from &lt;book name&gt;...</comment>
<translation type="obsolete">Импорт стихов из %s...</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/csvbible.py" line="166"/>
<source>Importing verses... done.</source>
<translation type="obsolete">Импорт стихов... завершен.</translation>
</message>
</context>
<context>
<name>BiblePlugin.HTTPBible</name>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="596"/>
<source>Download Error</source>
<translation type="obsolete">Ошибка загрузки</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="596"/>
<source>There was a problem downloading your verse selection. Please check your Internet connection, and if this error continues to occur please consider reporting a bug.</source>
<translation type="obsolete">Возникла проблема при загрузке секции стихов. Пожалуйста, проверьте параметры Интернет соединения. В случае если ошибка происходит при нормальном Интернет соединении, сообщите о ней на сайте разработчика в разделе &quot;Ошибки&quot;.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="603"/>
<source>Parse Error</source>
<translation type="obsolete">Обработка ошибки</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/http.py" line="603"/>
<source>There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug.</source>
<translation type="obsolete">Возникла проблема при распковкие раздела стихов. Если это ошибка будет повторяться, пожалуйста сообщите о ней.</translation>
</message>
</context>
<context>
<name>BiblePlugin.MediaItem</name>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="438"/>
<source>Bible not fully loaded.</source>
<translation type="obsolete">Библия загружена не полностью.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/lib/mediaitem.py" line="88"/>
<source>You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search?</source>
<translation type="obsolete">Вы не можете комбинировать результат поиска для одной и двух Библий. Желаете удалить результаты поиска и начать новый поиск?</translation>
</message>
</context>
<context> <context>
<name>BiblesPlugin</name> <name>BiblesPlugin</name>
<message> <message>
@ -889,16 +802,6 @@ demand and thus an internet connection is required.</source>
<source>Please select the Bibles to upgrade</source> <source>Please select the Bibles to upgrade</source>
<translation>Выберите Библии для обновления</translation> <translation>Выберите Библии для обновления</translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="389"/>
<source>Version name:</source>
<translation type="obsolete">Название версии:</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="391"/>
<source>This Bible still exists. Please change the name or uncheck it.</source>
<translation type="obsolete">Эта Библия все еще существует. Пожалуйста, измените имя или снимите с нее отметку.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="291"/>
<source>Upgrading</source> <source>Upgrading</source>
@ -909,21 +812,6 @@ demand and thus an internet connection is required.</source>
<source>Please wait while your Bibles are upgraded.</source> <source>Please wait while your Bibles are upgraded.</source>
<translation>Пожалуйста, подождите пока выполнится обновление Библий.</translation> <translation>Пожалуйста, подождите пока выполнится обновление Библий.</translation>
</message> </message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="433"/>
<source>You need to specify a version name for your Bible.</source>
<translation type="obsolete">Вы должны указать название версии Библии.</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="471"/>
<source>Bible Exists</source>
<translation type="obsolete">Библия существует</translation>
</message>
<message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="471"/>
<source>This Bible already exists. Please upgrade a different Bible, delete the existing one or uncheck.</source>
<translation type="obsolete">Библия уже существует. Пожалуйста, обновите другую Библию, удалите существующую, или отмените выбор текущей.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="570"/> <location filename="openlp/plugins/bibles/forms/bibleupgradeform.py" line="570"/>
<source>Upgrading Bible %s of %s: &quot;%s&quot; <source>Upgrading Bible %s of %s: &quot;%s&quot;
@ -1423,7 +1311,7 @@ Do you want to add the other images anyway?</source>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation>Файлы изображений</translation> <translation>Файлы изображений</translation>
</message> </message>
@ -1712,170 +1600,6 @@ Portions copyright © 2004-2011 %s</translation>
<translation>Возврат к логотипу OpenLP</translation> <translation>Возврат к логотипу OpenLP</translation>
</message> </message>
</context> </context>
<context>
<name>OpenLP.DisplayTagDialog</name>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="126"/>
<source>Edit Selection</source>
<translation type="obsolete">Редактор тегов</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="139"/>
<source>Description</source>
<translation type="obsolete">Описание</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="132"/>
<source>Tag</source>
<translation type="obsolete">Тег</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="133"/>
<source>Start tag</source>
<translation type="obsolete">Начальный тег</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="135"/>
<source>End tag</source>
<translation type="obsolete">Конечный тег</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="141"/>
<source>Tag Id</source>
<translation type="obsolete">Дескриптор тега</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="143"/>
<source>Start HTML</source>
<translation type="obsolete">Начальный тег HTML</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="145"/>
<source>End HTML</source>
<translation type="obsolete">Конечный тег HTML</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagdialog.py" line="128"/>
<source>Save</source>
<translation type="obsolete">Сохранить</translation>
</message>
</context>
<context>
<name>OpenLP.DisplayTagTab</name>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="164"/>
<source>Update Error</source>
<translation type="obsolete">Ошибка обновления</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="122"/>
<source>Tag &quot;n&quot; already defined.</source>
<translation type="obsolete">Тег &quot;n&quot; уже определен.</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="164"/>
<source>Tag %s already defined.</source>
<translation type="obsolete">Тег %s уже определен.</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="129"/>
<source>New Tag</source>
<translation type="obsolete">Новый тег</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="133"/>
<source>&lt;/and here&gt;</source>
<translation type="obsolete">&lt;/и здесь&gt;</translation>
</message>
<message>
<location filename="openlp/core/ui/displaytagform.py" line="131"/>
<source>&lt;HTML here&gt;</source>
<translation type="obsolete">&lt;HTML сюда&gt;</translation>
</message>
</context>
<context>
<name>OpenLP.DisplayTags</name>
<message>
<location filename="openlp/core/lib/displaytags.py" line="56"/>
<source>Red</source>
<translation type="obsolete">Красный</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="60"/>
<source>Black</source>
<translation type="obsolete">Черный</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="64"/>
<source>Blue</source>
<translation type="obsolete">Синий</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="68"/>
<source>Yellow</source>
<translation type="obsolete">Желтый</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="72"/>
<source>Green</source>
<translation type="obsolete">Зеленый</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="76"/>
<source>Pink</source>
<translation type="obsolete">Розовый</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="80"/>
<source>Orange</source>
<translation type="obsolete">Оранжевый</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="84"/>
<source>Purple</source>
<translation type="obsolete">Пурпурный</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="88"/>
<source>White</source>
<translation type="obsolete">Белый</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="92"/>
<source>Superscript</source>
<translation type="obsolete">Надстрочный</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="96"/>
<source>Subscript</source>
<translation type="obsolete">Подстрочный</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="99"/>
<source>Paragraph</source>
<translation type="obsolete">Абзац</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="102"/>
<source>Bold</source>
<translation type="obsolete">Жирный</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="106"/>
<source>Italics</source>
<translation type="obsolete">Курсив</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="109"/>
<source>Underline</source>
<translation type="obsolete">Подчеркнутый</translation>
</message>
<message>
<location filename="openlp/core/lib/displaytags.py" line="113"/>
<source>Break</source>
<translation type="obsolete">Разрыв</translation>
</message>
</context>
<context> <context>
<name>OpenLP.ExceptionDialog</name> <name>OpenLP.ExceptionDialog</name>
<message> <message>
@ -2122,19 +1846,6 @@ Version: %s
<source>Unable to detect an Internet connection.</source> <source>Unable to detect an Internet connection.</source>
<translation>Не удалось найти соединение с интернетом.</translation> <translation>Не удалось найти соединение с интернетом.</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/firsttimewizard.py" line="233"/>
<source>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.</source>
<translation type="obsolete">Соединение с интернетом не было найдено. Для Мастера первого запуска необходимо наличие интернет-соединения чтобы загрузить образцы песен, Библию и темы.
Чтобы перезапустить Мастер первого запуска и импортировать данные позже, нажмите кнопку Отмена, проверьте интернет-соединение и перезапустите OpenLP.
Чтобы полностью отменить запуск Мастера первого запуска, нажмите кнопку Завершить.</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/firsttimewizard.py" line="244"/> <location filename="openlp/core/ui/firsttimewizard.py" line="244"/>
<source>Sample Songs</source> <source>Sample Songs</source>
@ -2306,32 +2017,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation type="unfinished">Ошибка обновления</translation> <translation type="unfinished">Ошибка обновления</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation type="unfinished">Тег &quot;n&quot; уже определен.</translation> <translation type="unfinished">Тег &quot;n&quot; уже определен.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation type="unfinished">Новый тег</translation> <translation type="unfinished">Новый тег</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation>&lt;HTML здесь&gt;</translation> <translation>&lt;HTML здесь&gt;</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation type="unfinished">&lt;/и здесь&gt;</translation> <translation type="unfinished">&lt;/и здесь&gt;</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation type="unfinished">Тег %s уже определен.</translation> <translation type="unfinished">Тег %s уже определен.</translation>
</message> </message>
@ -2339,82 +2050,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished">Красный</translation> <translation type="unfinished">Красный</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation type="unfinished">Черный</translation> <translation type="unfinished">Черный</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished">Синий</translation> <translation type="unfinished">Синий</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished">Желтый</translation> <translation type="unfinished">Желтый</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished">Зеленый</translation> <translation type="unfinished">Зеленый</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished">Розовый</translation> <translation type="unfinished">Розовый</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished">Оранжевый</translation> <translation type="unfinished">Оранжевый</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation type="unfinished">Пурпурный</translation> <translation type="unfinished">Пурпурный</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation type="unfinished">Белый</translation> <translation type="unfinished">Белый</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation type="unfinished">Надстрочный</translation> <translation type="unfinished">Надстрочный</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation type="unfinished">Подстрочный</translation> <translation type="unfinished">Подстрочный</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation type="unfinished">Абзац</translation> <translation type="unfinished">Абзац</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation type="unfinished">Жирный</translation> <translation type="unfinished">Жирный</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation type="unfinished">Курсив</translation> <translation type="unfinished">Курсив</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation type="unfinished">Подчеркнутый</translation> <translation type="unfinished">Подчеркнутый</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation type="unfinished">Разрыв</translation> <translation type="unfinished">Разрыв</translation>
</message> </message>
@ -2979,11 +2690,6 @@ Re-running this wizard may make changes to your current OpenLP configuration and
<source>&amp;Recent Files</source> <source>&amp;Recent Files</source>
<translation>&amp;Недавние файлы</translation> <translation>&amp;Недавние файлы</translation>
</message> </message>
<message>
<location filename="openlp/core/ui/mainwindow.py" line="419"/>
<source>&amp;Configure Formatting Tags...</source>
<translation type="obsolete">&amp;Настроить теги форматирования...</translation>
</message>
<message> <message>
<location filename="openlp/core/ui/mainwindow.py" line="1365"/> <location filename="openlp/core/ui/mainwindow.py" line="1365"/>
<source>Clear List</source> <source>Clear List</source>
@ -3085,7 +2791,7 @@ Database: %s</source>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation type="unfinished">Объекты не выбраны</translation> <translation type="unfinished">Объекты не выбраны</translation>
</message> </message>
@ -3151,11 +2857,6 @@ Suffix not supported</source>
<translation>Неправильный файл %s. <translation>Неправильный файл %s.
Расширение не поддерживается</translation> Расширение не поддерживается</translation>
</message> </message>
<message>
<location filename="openlp/core/lib/mediamanageritem.py" line="396"/>
<source>Duplicate files found on import and ignored.</source>
<translation type="obsolete">Во время импорта обнаружены и проигнорированы дубликаты.</translation>
</message>
<message> <message>
<location filename="openlp/core/lib/mediamanageritem.py" line="401"/> <location filename="openlp/core/lib/mediamanageritem.py" line="401"/>
<source>Duplicate files were found on import and were ignored.</source> <source>Duplicate files were found on import and were ignored.</source>
@ -3463,7 +3164,7 @@ Suffix not supported</source>
<translation type="unfinished">Открыть файл</translation> <translation type="unfinished">Открыть файл</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation>Открыть файл служения OpenLP (*.osz)</translation> <translation>Открыть файл служения OpenLP (*.osz)</translation>
</message> </message>
@ -3473,29 +3174,29 @@ Suffix not supported</source>
<translation>Измененное служение</translation> <translation>Измененное служение</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation>Файл не является правильным служением. <translation>Файл не является правильным служением.
Формат кодирования не UTF-8.</translation> Формат кодирования не UTF-8.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation>Файл не является правильным служением.</translation> <translation>Файл не является правильным служением.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation>Отсутствует обработчик показа</translation> <translation>Отсутствует обработчик показа</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation>Объект не может быть показан, поскольку отсутствует обработчик для его показа</translation> <translation>Объект не может быть показан, поскольку отсутствует обработчик для его показа</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation>Элемент служения не может быть показан, поскольку требуемый плагин отсутствует или отключен</translation> <translation>Элемент служения не может быть показан, поскольку требуемый плагин отсутствует или отключен</translation>
</message> </message>
@ -3520,22 +3221,22 @@ The content encoding is not UTF-8.</source>
<translation>Текущее служение было изменено. Вы хотите сохранить это служение?</translation> <translation>Текущее служение было изменено. Вы хотите сохранить это служение?</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation>Файл не может быть открыт, поскольку он поврежден.</translation> <translation>Файл не может быть открыт, поскольку он поврежден.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation>Пустой файл</translation> <translation>Пустой файл</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation>Файл служения не содержит данных.</translation> <translation>Файл служения не содержит данных.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation>Поврежденный файл</translation> <translation>Поврежденный файл</translation>
</message> </message>
@ -3575,17 +3276,17 @@ The content encoding is not UTF-8.</source>
<translation>Выбрать тему для служения.</translation> <translation>Выбрать тему для служения.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation>Этот файл поврежден или не является файлом служения OpenLP 2.0.</translation> <translation>Этот файл поврежден или не является файлом служения OpenLP 2.0.</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation>Тема слайда</translation> <translation>Тема слайда</translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation>Заметки</translation> <translation>Заметки</translation>
</message> </message>
@ -4486,11 +4187,6 @@ The content encoding is not UTF-8.</source>
<source>Import</source> <source>Import</source>
<translation>Импорт</translation> <translation>Импорт</translation>
</message> </message>
<message>
<location filename="openlp/core/lib/ui.py" line="85"/>
<source>Length %s</source>
<translation type="obsolete">Длина %s</translation>
</message>
<message> <message>
<location filename="openlp/core/lib/ui.py" line="86"/> <location filename="openlp/core/lib/ui.py" line="86"/>
<source>Live</source> <source>Live</source>
@ -4983,52 +4679,52 @@ The content encoding is not UTF-8.</source>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5849,11 +5545,6 @@ The encoding is responsible for the correct character representation.</source>
<source>Song Export Wizard</source> <source>Song Export Wizard</source>
<translation>Мастер экспорта песен</translation> <translation>Мастер экспорта песен</translation>
</message> </message>
<message>
<location filename="openlp/plugins/songs/forms/songexportform.py" line="171"/>
<source>This wizard will help to export your songs to the open and free OpenLyrics worship song format.</source>
<translation type="obsolete">Этот мастер поможет вам экспортировать песни в открытый и свободный формат OpenLyrics.</translation>
</message>
<message> <message>
<location filename="openlp/plugins/songs/forms/songexportform.py" line="175"/> <location filename="openlp/plugins/songs/forms/songexportform.py" line="175"/>
<source>Select Songs</source> <source>Select Songs</source>
@ -6068,11 +5759,6 @@ The encoding is responsible for the correct character representation.</source>
<source>Lyrics</source> <source>Lyrics</source>
<translation>Слова</translation> <translation>Слова</translation>
</message> </message>
<message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="355"/>
<source>Delete Song(s)?</source>
<translation type="obsolete">Удалить песню(и)?</translation>
</message>
<message numerus="yes"> <message numerus="yes">
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="383"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="383"/>
<source>Are you sure you want to delete the %n selected song(s)?</source> <source>Are you sure you want to delete the %n selected song(s)?</source>
@ -6083,7 +5769,7 @@ The encoding is responsible for the correct character representation.</source>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation>Лицензия CCLI: </translation> <translation>Лицензия CCLI: </translation>
</message> </message>
@ -6387,12 +6073,4 @@ The encoding is responsible for the correct character representation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>ThemeTab</name>
<message>
<location filename="openlp/core/ui/themestab.py" line="40"/>
<source>Themes</source>
<translation type="obsolete">Темы</translation>
</message>
</context>
</TS> </TS>

File diff suppressed because it is too large Load Diff

View File

@ -1290,7 +1290,7 @@ Do you want to add the other images anyway?</source>
<context> <context>
<name>OpenLP</name> <name>OpenLP</name>
<message> <message>
<location filename="openlp/core/utils/__init__.py" line="375"/> <location filename="openlp/core/utils/__init__.py" line="380"/>
<source>Image Files</source> <source>Image Files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1899,32 +1899,32 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTagForm</name> <name>OpenLP.FormattingTagForm</name>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Update Error</source> <source>Update Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="123"/> <location filename="openlp/core/ui/formattingtagform.py" line="104"/>
<source>Tag &quot;n&quot; already defined.</source> <source>Tag &quot;n&quot; already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="130"/> <location filename="openlp/core/ui/formattingtagform.py" line="111"/>
<source>New Tag</source> <source>New Tag</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="132"/> <location filename="openlp/core/ui/formattingtagform.py" line="113"/>
<source>&lt;HTML here&gt;</source> <source>&lt;HTML here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="134"/> <location filename="openlp/core/ui/formattingtagform.py" line="115"/>
<source>&lt;/and here&gt;</source> <source>&lt;/and here&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/formattingtagform.py" line="165"/> <location filename="openlp/core/ui/formattingtagform.py" line="147"/>
<source>Tag %s already defined.</source> <source>Tag %s already defined.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1932,82 +1932,82 @@ To cancel the First Time Wizard completely (and not start OpenLP), press the Can
<context> <context>
<name>OpenLP.FormattingTags</name> <name>OpenLP.FormattingTags</name>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="56"/> <location filename="openlp/core/lib/formattingtags.py" line="64"/>
<source>Red</source> <source>Red</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="60"/> <location filename="openlp/core/lib/formattingtags.py" line="69"/>
<source>Black</source> <source>Black</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="64"/> <location filename="openlp/core/lib/formattingtags.py" line="74"/>
<source>Blue</source> <source>Blue</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="68"/> <location filename="openlp/core/lib/formattingtags.py" line="79"/>
<source>Yellow</source> <source>Yellow</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="72"/> <location filename="openlp/core/lib/formattingtags.py" line="84"/>
<source>Green</source> <source>Green</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="76"/> <location filename="openlp/core/lib/formattingtags.py" line="89"/>
<source>Pink</source> <source>Pink</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="80"/> <location filename="openlp/core/lib/formattingtags.py" line="94"/>
<source>Orange</source> <source>Orange</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="84"/> <location filename="openlp/core/lib/formattingtags.py" line="99"/>
<source>Purple</source> <source>Purple</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="88"/> <location filename="openlp/core/lib/formattingtags.py" line="104"/>
<source>White</source> <source>White</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="92"/> <location filename="openlp/core/lib/formattingtags.py" line="109"/>
<source>Superscript</source> <source>Superscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="96"/> <location filename="openlp/core/lib/formattingtags.py" line="114"/>
<source>Subscript</source> <source>Subscript</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="100"/> <location filename="openlp/core/lib/formattingtags.py" line="119"/>
<source>Paragraph</source> <source>Paragraph</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="104"/> <location filename="openlp/core/lib/formattingtags.py" line="124"/>
<source>Bold</source> <source>Bold</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="108"/> <location filename="openlp/core/lib/formattingtags.py" line="128"/>
<source>Italics</source> <source>Italics</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="112"/> <location filename="openlp/core/lib/formattingtags.py" line="132"/>
<source>Underline</source> <source>Underline</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/lib/formattingtags.py" line="117"/> <location filename="openlp/core/lib/formattingtags.py" line="138"/>
<source>Break</source> <source>Break</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2669,7 +2669,7 @@ Database: %s</source>
<context> <context>
<name>OpenLP.MediaManagerItem</name> <name>OpenLP.MediaManagerItem</name>
<message> <message>
<location filename="openlp/core/lib/__init__.py" line="203"/> <location filename="openlp/core/lib/__init__.py" line="205"/>
<source>No Items Selected</source> <source>No Items Selected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2991,33 +2991,33 @@ Suffix not supported</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="578"/> <location filename="openlp/core/ui/servicemanager.py" line="590"/>
<source>OpenLP Service Files (*.osz)</source> <source>OpenLP Service Files (*.osz)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="606"/> <location filename="openlp/core/ui/servicemanager.py" line="618"/>
<source>File is not a valid service. <source>File is not a valid service.
The content encoding is not UTF-8.</source> The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="643"/> <location filename="openlp/core/ui/servicemanager.py" line="655"/>
<source>File is not a valid service.</source> <source>File is not a valid service.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Missing Display Handler</source> <source>Missing Display Handler</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1169"/> <location filename="openlp/core/ui/servicemanager.py" line="1181"/>
<source>Your item cannot be displayed as there is no handler to display it</source> <source>Your item cannot be displayed as there is no handler to display it</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="1221"/> <location filename="openlp/core/ui/servicemanager.py" line="1233"/>
<source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source> <source>Your item cannot be displayed as the plugin required to display it is missing or inactive</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3097,22 +3097,22 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="649"/> <location filename="openlp/core/ui/servicemanager.py" line="661"/>
<source>File could not be opened because it is corrupt.</source> <source>File could not be opened because it is corrupt.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>Empty File</source> <source>Empty File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="655"/> <location filename="openlp/core/ui/servicemanager.py" line="667"/>
<source>This service file does not contain any data.</source> <source>This service file does not contain any data.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>Corrupt File</source> <source>Corrupt File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3152,17 +3152,17 @@ The content encoding is not UTF-8.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="662"/> <location filename="openlp/core/ui/servicemanager.py" line="674"/>
<source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source> <source>This file is either corrupt or it is not an OpenLP 2.0 service file.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="972"/> <location filename="openlp/core/ui/servicemanager.py" line="984"/>
<source>Slide theme</source> <source>Slide theme</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/core/ui/servicemanager.py" line="976"/> <location filename="openlp/core/ui/servicemanager.py" line="988"/>
<source>Notes</source> <source>Notes</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -4554,52 +4554,52 @@ The content encoding is not UTF-8.</source>
<context> <context>
<name>PresentationPlugin.MediaItem</name> <name>PresentationPlugin.MediaItem</name>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="68"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="69"/>
<source>Select Presentation(s)</source> <source>Select Presentation(s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="70"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="71"/>
<source>Automatic</source> <source>Automatic</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="72"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="73"/>
<source>Present using:</source> <source>Present using:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>File Exists</source> <source>File Exists</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="179"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="180"/>
<source>A presentation with that filename already exists.</source> <source>A presentation with that filename already exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="203"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="204"/>
<source>This type of presentation is not supported.</source> <source>This type of presentation is not supported.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="88"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="89"/>
<source>Presentations (%s)</source> <source>Presentations (%s)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>Missing Presentation</source> <source>Missing Presentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="289"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="290"/>
<source>The Presentation %s no longer exists.</source> <source>The Presentation %s no longer exists.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/presentations/lib/mediaitem.py" line="280"/> <location filename="openlp/plugins/presentations/lib/mediaitem.py" line="281"/>
<source>The Presentation %s is incomplete, please reload.</source> <source>The Presentation %s is incomplete, please reload.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -5626,7 +5626,7 @@ The encoding is responsible for the correct character representation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="openlp/plugins/songs/lib/mediaitem.py" line="499"/> <location filename="openlp/plugins/songs/lib/mediaitem.py" line="502"/>
<source>CCLI License: </source> <source>CCLI License: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>