Version Notes
fitting Magento v.1.6.0.0.0
Download this release
Release Info
Developer | Rico Neitzel |
Extension | Locale_Mage_community_de_DE |
Version | 1.6.0.0 |
Comparing to | |
See all releases |
Code changes from version 1.5.1.1 to 1.6.0.0
- app/locale/de_DE/Find_Feed.csv +17 -17
- app/locale/de_DE/Mage_AdminNotification.csv +6 -6
- app/locale/de_DE/Mage_Adminhtml.csv +126 -119
- app/locale/de_DE/Mage_Api.csv +50 -57
- app/locale/de_DE/Mage_Authorizenet.csv +36 -36
- app/locale/de_DE/Mage_Backup.csv +8 -8
- app/locale/de_DE/Mage_Bundle.csv +11 -12
- app/locale/de_DE/Mage_Catalog.csv +89 -145
- app/locale/de_DE/Mage_CatalogInventory.csv +26 -35
- app/locale/de_DE/Mage_CatalogRule.csv +7 -10
- app/locale/de_DE/Mage_CatalogSearch.csv +7 -8
- app/locale/de_DE/Mage_Centinel.csv +22 -23
- app/locale/de_DE/Mage_Checkout.csv +53 -46
- app/locale/de_DE/Mage_Cms.csv +33 -39
- app/locale/de_DE/Mage_Compiler.csv +5 -5
- app/locale/de_DE/Mage_Connect.csv +3 -3
- app/locale/de_DE/Mage_Core.csv +74 -83
- app/locale/de_DE/Mage_Cron.csv +7 -10
- app/locale/de_DE/Mage_Customer.csv +49 -107
- app/locale/de_DE/Mage_Dataflow.csv +18 -35
- app/locale/de_DE/Mage_Directory.csv +8 -11
- app/locale/de_DE/Mage_Downloadable.csv +22 -23
- app/locale/de_DE/Mage_Eav.csv +80 -66
- app/locale/de_DE/Mage_GiftMessage.csv +18 -20
- app/locale/de_DE/Mage_GoogleBase.csv +10 -28
- app/locale/de_DE/Mage_GoogleCheckout.csv +19 -23
- app/locale/de_DE/Mage_GoogleOptimizer.csv +7 -7
- app/locale/de_DE/Mage_ImportExport.csv +54 -54
- app/locale/de_DE/Mage_Index.csv +16 -16
- app/locale/de_DE/Mage_Install.csv +40 -52
- app/locale/de_DE/Mage_Media.csv +1 -1
- app/locale/de_DE/Mage_Newsletter.csv +18 -33
- app/locale/de_DE/Mage_Page.csv +23 -24
- app/locale/de_DE/Mage_PageCache.csv +4 -4
- app/locale/de_DE/Mage_Paygate.csv +40 -41
- app/locale/de_DE/Mage_Payment.csv +45 -49
- app/locale/de_DE/Mage_Paypal.csv +229 -222
- app/locale/de_DE/Mage_PaypalUk.csv +16 -19
- app/locale/de_DE/Mage_Persistent.csv +61 -0
- app/locale/de_DE/Mage_Poll.csv +6 -8
- app/locale/de_DE/Mage_ProductAlert.csv +8 -12
- app/locale/de_DE/Mage_Rating.csv +1 -1
- app/locale/de_DE/Mage_Reports.csv +6 -9
- app/locale/de_DE/Mage_Review.csv +10 -11
- app/locale/de_DE/Mage_Rss.csv +7 -8
- app/locale/de_DE/Mage_Rule.csv +5 -5
- app/locale/de_DE/Mage_Sales.csv +177 -149
- app/locale/de_DE/Mage_SalesRule.csv +7 -7
- app/locale/de_DE/Mage_Sendfriend.csv +11 -14
- app/locale/de_DE/Mage_Shipping.csv +13 -12
- app/locale/de_DE/Mage_Sitemap.csv +10 -10
- app/locale/de_DE/Mage_Tag.csv +9 -16
- app/locale/de_DE/Mage_Tax.csv +14 -17
- app/locale/de_DE/Mage_Usa.csv +50 -34
- app/locale/de_DE/Mage_Weee.csv +14 -14
- app/locale/de_DE/Mage_Widget.csv +15 -15
- app/locale/de_DE/Mage_Wishlist.csv +16 -16
- app/locale/de_DE/Mage_XmlConnect.csv +184 -132
- app/locale/de_DE/Phoenix_Moneybookers.csv +7 -10
- app/locale/de_DE/sql_translation/attributes.sql +5 -1
- app/locale/de_DE/sql_translation/attributes_default.sql +12 -6
- js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentovariable/editor_plugin_de.js +3 -3
- js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentowidget/editor_plugin_de.js +3 -4
- js/tiny_mce_german/classes/AddOnManager.js +109 -109
- js/tiny_mce_german/classes/CommandManager.js +56 -56
- js/tiny_mce_german/classes/ControlManager.js +507 -507
- js/tiny_mce_german/classes/Developer.js +94 -94
- js/tiny_mce_german/classes/Editor.js +2699 -2699
- js/tiny_mce_german/classes/EditorCommands.js +444 -444
- js/tiny_mce_german/classes/EditorManager.js +453 -453
- js/tiny_mce_german/classes/ForceBlocks.js +751 -751
- js/tiny_mce_german/classes/Formatter.js +1526 -1526
- js/tiny_mce_german/classes/LegacyInput.js +62 -62
- js/tiny_mce_german/classes/Popup.js +438 -438
- js/tiny_mce_german/classes/UndoManager.js +163 -163
- js/tiny_mce_german/classes/WindowManager.js +182 -182
- js/tiny_mce_german/classes/adapter/jquery/adapter.js +336 -336
- js/tiny_mce_german/classes/adapter/jquery/jquery.tinymce.js +0 -106
app/locale/de_DE/Find_Feed.csv
CHANGED
@@ -1,30 +1,30 @@
|
|
1 |
-
"%s codes deleted","%s
|
2 |
-
"%s codes imported","%s
|
3 |
-
"%s codes not imported","%s
|
4 |
-
"%s product in feed.","%s
|
5 |
-
"%s product not in feed.","%s
|
6 |
"Add new","Anlegen"
|
7 |
"Attrib. Set Name","Attrib. Set Name"
|
8 |
-
"Attributes map","
|
9 |
-
"Cron Frequency","Cron
|
10 |
-
"Cron Hour","Cron
|
11 |
"Delete","Löschen"
|
12 |
-
"Eav code","
|
13 |
"FTP Password","FTP Passwort"
|
14 |
"FTP Path","FTP Pfad"
|
15 |
"FTP Server","FTP Server"
|
16 |
"FTP Settings","FTP Einstellungen"
|
17 |
-
"FTP User","FTP
|
18 |
"FTP: Can't delete files","FTP: Dateien konnten nicht gelöscht werden"
|
19 |
"Feed","Feed"
|
20 |
"Feed code","Feed Code"
|
21 |
"ID","ID"
|
22 |
"Import","Import"
|
23 |
-
"Import attribute map","Import Attribut
|
24 |
"Import code","Import Code"
|
25 |
-
"In feed","
|
26 |
-
"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center. Click <a href="https://merchant.thefind.com/mc/claim.fhtml">here</a> to get started.","
|
27 |
-
"Is imported","
|
28 |
"Item params","Artiekleigenschaften"
|
29 |
"Manage attributes","Attribute verwalten"
|
30 |
"Manage items","Artikel verwalten"
|
@@ -36,9 +36,9 @@
|
|
36 |
"Publish","Veröffentlichen"
|
37 |
"SKU","Artikelnummer"
|
38 |
"Settings","Einstellungen"
|
39 |
-
"The Find","
|
40 |
"TheFind Feed Filename","TheFind Feed Dateiname"
|
41 |
-
"TheFind feed","TheFind
|
42 |
"Type","Art"
|
43 |
"Unable to process an import. ","Import nicht möglich. "
|
44 |
-
"Update TheFind Item when Product is Updated","TheFind
|
1 |
+
"%s codes deleted","%s Codes gelöscht"
|
2 |
+
"%s codes imported","%s Codes importiert"
|
3 |
+
"%s codes not imported","%s Codes nicht importiert"
|
4 |
+
"%s product in feed.","%s Artikel im Feed."
|
5 |
+
"%s product not in feed.","%s Artikel nicht im Feed."
|
6 |
"Add new","Anlegen"
|
7 |
"Attrib. Set Name","Attrib. Set Name"
|
8 |
+
"Attributes map","Attribut-Zuordnungen"
|
9 |
+
"Cron Frequency","Cron Häufigkeiten"
|
10 |
+
"Cron Hour","Cron Stunde"
|
11 |
"Delete","Löschen"
|
12 |
+
"Eav code","EAV Code"
|
13 |
"FTP Password","FTP Passwort"
|
14 |
"FTP Path","FTP Pfad"
|
15 |
"FTP Server","FTP Server"
|
16 |
"FTP Settings","FTP Einstellungen"
|
17 |
+
"FTP User","FTP Benutzer"
|
18 |
"FTP: Can't delete files","FTP: Dateien konnten nicht gelöscht werden"
|
19 |
"Feed","Feed"
|
20 |
"Feed code","Feed Code"
|
21 |
"ID","ID"
|
22 |
"Import","Import"
|
23 |
+
"Import attribute map","Import Attribut-Zuordnung"
|
24 |
"Import code","Import Code"
|
25 |
+
"In feed","TheFind Feed"
|
26 |
+
"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center. Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","Um Zugriff zu Ihren FTP-Zugangsdaten zu erhalten, müssen Sie zunächst Ihren Shop im TheFind Merchant Center anmelden. <a href=""https://merchant.thefind.com/mc/claim.fhtml"">Klicken Sie bitte hier.</a>"
|
27 |
+
"Is imported","Im Feed vorhanden"
|
28 |
"Item params","Artiekleigenschaften"
|
29 |
"Manage attributes","Attribute verwalten"
|
30 |
"Manage items","Artikel verwalten"
|
36 |
"Publish","Veröffentlichen"
|
37 |
"SKU","Artikelnummer"
|
38 |
"Settings","Einstellungen"
|
39 |
+
"The Find","TheFind"
|
40 |
"TheFind Feed Filename","TheFind Feed Dateiname"
|
41 |
+
"TheFind feed","TheFind Feed"
|
42 |
"Type","Art"
|
43 |
"Unable to process an import. ","Import nicht möglich. "
|
44 |
+
"Update TheFind Item when Product is Updated","TheFind Eintrag aktualisieren wenn der Artikel aktualisiert wird"
|
app/locale/de_DE/Mage_AdminNotification.csv
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
"Actions","Aktionen"
|
2 |
"An error occurred while marking notification as read.","Fehler beim Markieren des Hinweises als gelesen."
|
3 |
"An error occurred while marking the messages as read.","Fehler beim Markieren der Nachrichten als gelesen."
|
4 |
-
"An error occurred while removing messages.","Fehler beim
|
5 |
-
"An error occurred while removing the message.","Fehler beim
|
6 |
"Are you sure?","Sind Sie sicher?"
|
7 |
"Date Added","Hinzugefügt am"
|
8 |
"Last Update","Letzte Aktualisierung"
|
@@ -24,7 +24,7 @@
|
|
24 |
"Unable to proceed. Please, try again.","Vorgang konnte nicht ausgeführt werden. Bitte versuchen Sie es später noch einmal."
|
25 |
"Update Frequency","Aktualisierungshäufigkeit"
|
26 |
"Use HTTPS to Get Feed","Verwende HTTPS für Feed"
|
27 |
-
"critical","
|
28 |
-
"major","
|
29 |
-
"minor","
|
30 |
-
"notice","
|
1 |
"Actions","Aktionen"
|
2 |
"An error occurred while marking notification as read.","Fehler beim Markieren des Hinweises als gelesen."
|
3 |
"An error occurred while marking the messages as read.","Fehler beim Markieren der Nachrichten als gelesen."
|
4 |
+
"An error occurred while removing messages.","Fehler beim Entfernen der Nachrichten"
|
5 |
+
"An error occurred while removing the message.","Fehler beim Entfernen der Nachricht."
|
6 |
"Are you sure?","Sind Sie sicher?"
|
7 |
"Date Added","Hinzugefügt am"
|
8 |
"Last Update","Letzte Aktualisierung"
|
24 |
"Unable to proceed. Please, try again.","Vorgang konnte nicht ausgeführt werden. Bitte versuchen Sie es später noch einmal."
|
25 |
"Update Frequency","Aktualisierungshäufigkeit"
|
26 |
"Use HTTPS to Get Feed","Verwende HTTPS für Feed"
|
27 |
+
"critical","kritische"
|
28 |
+
"major","sehr wichtige"
|
29 |
+
"minor","wichtige"
|
30 |
+
"notice","unwichtige"
|
app/locale/de_DE/Mage_Adminhtml.csv
CHANGED
@@ -6,9 +6,10 @@
|
|
6 |
"%s cache type(s) disabled.","%s x erfolgreich Cache deaktiviert."
|
7 |
"%s cache type(s) enabled.","%s x erfolgreich Cache aktiviert."
|
8 |
"%s cache type(s) refreshed.","%s x erfolgreich Cache aktualisiert."
|
9 |
-
"(
|
10 |
"(For US 2-letter state names)","(Für USA Staatsnamen aus 2 Buchstaben)"
|
11 |
"(If left empty will be auto-generated)","(Wird automatisch generiert, wenn leer gelassen)"
|
|
|
12 |
"(Leave empty for first spreadsheet)","(Leer lassen für erste Tabelle)"
|
13 |
"(Products will be added/updated to this store if 'store' column is blank or missing in the import file.)","(Artikel werden zu diesem Shop hinzugefügt/aktualisiert, wenn die 'Shop' Spalte in dieser Importdatei leer ist oder fehlt.)"
|
14 |
"(Shift-)Click or drag to change value","(Shift-)Klick oder Ziehen, um den Wert zu ändern"
|
@@ -23,10 +24,10 @@
|
|
23 |
"- Use the %s, %s buttons to select year","- Benutzen Sie die %s, %s Buttons für die Jahresauswahl"
|
24 |
"- or Shift-click to decrease it","- oder halten Sie beim Klicken Shift (Großschreiben) gedrückt, um den Wert zu verringern"
|
25 |
"- or click and drag for faster selection.","- oder klicken und ziehen Sie für eine schnellere Auswahl."
|
26 |
-
"-- Not Selected --","--
|
27 |
"-- Please Select --","-- Bitte auswählen --"
|
28 |
-
"-- Please Select Billing Agreement--","-- Bitte
|
29 |
-
"-- Please Select a Category --","-- Bitte wählen Sie
|
30 |
"-- Please select --","-- Bitte wählen --"
|
31 |
"--Please Select--","--Bitte wählen--"
|
32 |
"1 Hour","1 Stunde"
|
@@ -40,11 +41,12 @@
|
|
40 |
"6 Hours","6 Stunden"
|
41 |
"80px x 80px","80px x 80px"
|
42 |
"80x80 px","80px x 80px"
|
43 |
-
"<h1 class="page-heading">404 Error</h1><p>Page not found.</p>","<h1 class="page-heading">404 Fehler</h1><p>Seite nicht gefunden.</p>"
|
44 |
"A new password was sent to your email address. Please check your email and click Back to Login.","Ein neues Passwort wurde an Ihre E-Mail Adresse gesendet. Bitte prüfen Sie Ihre E-Mails und klicken Sie auf Zurück zur Anmeldung."
|
45 |
"A user with the same user name or email aleady exists.","Ein Nutzer mit dem gleichen Benutzernamen oder E-Mail Adresse existiert bereits."
|
46 |
"API Key","API Schlüssel"
|
47 |
"API Key Confirmation","API Schlüssel Bestätigung"
|
|
|
48 |
"Abandoned Carts","Aufgegebene Warenkörbe"
|
49 |
"About the calendar","Über den Kalender"
|
50 |
"Access Denied","Zugriff verweigert"
|
@@ -58,36 +60,35 @@
|
|
58 |
"Account status","Benutzerkonto Status"
|
59 |
"Action","Aktion"
|
60 |
"Actions","Aktionen"
|
61 |
-
"Actions XML","Aktionen
|
62 |
"Activate","Aktivieren"
|
63 |
"Active","Aktiv"
|
64 |
"Add","Hinzufügen"
|
65 |
-
"Add Contents Path","Inhaltspfad
|
66 |
-
"Add Exception","Ausnahme
|
67 |
"Add Field Mapping","Neue Feldzuordnung"
|
68 |
-
"Add Field with URL:","Feld mit URL
|
69 |
-
"Add
|
70 |
"Add New Image","Neues Bild"
|
71 |
-
"Add New Profile","
|
72 |
-
"Add New Role","Neue
|
73 |
"Add New Template","Neue Vorlage"
|
74 |
-
"Add New URL Rewrite","
|
75 |
"Add New User","Neuer Benutzer"
|
76 |
-
"Add New Variable","Neue Variable
|
77 |
-
"Add
|
78 |
-
"Add
|
79 |
-
"Add
|
80 |
-
"Add URL Rewrite","URL Rewrite
|
81 |
-
"Add URL Rewrite for a
|
82 |
-
"Add URL Rewrite for a Product","URL Rewrite für einen Artikel hinzufügen"
|
83 |
"Add after","Hinzufügen nach"
|
84 |
"Add to Cart","In den Warenkorb"
|
85 |
"Add to Wishlist","Auf den Wunschzettel"
|
86 |
"Additional Cache Management","Zusätzliche Caches"
|
87 |
-
"Address Type:","
|
88 |
"Admin","Admin"
|
89 |
"Advanced Admin Section","Erweiterte Administration"
|
90 |
-
"Advanced Profiles","Erweiterte
|
91 |
"Advanced Section","Erweitert"
|
92 |
"AirMail Template Preview","AirMail Vorlage Vorschau"
|
93 |
"All","Alle"
|
@@ -100,18 +101,19 @@
|
|
100 |
"All Websites","Alle Websites"
|
101 |
"All countries","Alle Länder"
|
102 |
"All fields","Alle Felder"
|
103 |
-
"All
|
104 |
-
"All rates were fetched, please click on "Save" to apply","Alle Kurse wurden
|
|
|
105 |
"All valid rates have been saved.","Alle gültigen Kurse wurden erfolgreich gespeichert."
|
106 |
"Amounts","Gesamtbeträge"
|
107 |
"An error has occured while syncronizing media storages.","Fehler beim Synchronisieren der Media-Speicher"
|
108 |
-
"An error occurred while clearing the JavaScript/CSS cache.","Beim
|
109 |
-
"An error occurred while clearing the image cache.","Beim
|
110 |
"An error occurred while creating the backup.","Beim Anlegen des Backups ist ein Fehler aufgetreten."
|
111 |
-
"An error occurred while deleting email template data. Please review log and try again.","Beim
|
112 |
-
"An error occurred while deleting this role.","Beim Löschen dieser
|
113 |
"An error occurred while deleting this set.","Beim Löschen dieses Sets ist ein Fehler aufgetreten."
|
114 |
-
"An error occurred while deleting this template.","Beim
|
115 |
"An error occurred while finishing process. Please refresh the cache","Ein Fehler ist beim Abschließen dieses Prozesses aufgetreten. Bitte aktualisieren Sie den Cache"
|
116 |
"An error occurred while rebuilding the CatalogInventory Stock Status.","Beim Neuaufbau vom Lagerbestands-Status ist ein Fehler aufgetreten."
|
117 |
"An error occurred while rebuilding the catalog index.","Beim Neuaufbau vom Katalogindex ist ein Fehler aufgetreten."
|
@@ -121,13 +123,13 @@
|
|
121 |
"An error occurred while refreshing the Catalog Rewrites.","Beim Neuaufbau der Katalog-Rewrites ist ein Fehler aufgetreten."
|
122 |
"An error occurred while refreshing the Layered Navigation indices.","Beim Neuaufbau der Filterbaren Navigation Indizes ist ein Fehler aufgetreten."
|
123 |
"An error occurred while refreshing the catalog rewrites.","Ein Fehler ist bei der Aktualisierung der Katalog-Rewrites aufgetreten."
|
124 |
-
"An error occurred while refreshing the layered navigation indices.","Beim
|
125 |
"An error occurred while saving account.","Beim Speichern des Kontos ist ein Fehler aufgetreten."
|
126 |
"An error occurred while saving the customer.","Beim Speichern des Kunden ist ein Fehler aufgetreten."
|
127 |
-
"An error occurred while saving this configuration:","Beim
|
128 |
-
"An error occurred while saving this role.","Beim Speichern dieser
|
129 |
-
"An error occurred while saving this template.","Beim
|
130 |
-
"An error occurred while updating the selected review(s).","Beim
|
131 |
"Any","Alle"
|
132 |
"Any Attribute Set","Jedes Attributset"
|
133 |
"Any Group","Jede Gruppe"
|
@@ -135,13 +137,13 @@
|
|
135 |
"Any Store","Jeder Store"
|
136 |
"Any Type","Jeder Typ"
|
137 |
"Any Visibility","Jede Sichtbarkeit"
|
138 |
-
"Apply Theme","Vorlage anwenden"
|
139 |
"Archive file name:","Archiv Dateiname:"
|
140 |
"Are you sure that you want to delete this template?","Sind Sie sicher, dass Sie diese Vorlage löschen möchten?"
|
141 |
"Are you sure that you want to strip tags?","Sind Sie sicher, dass Sie die Schlagworte entfernen möchten?"
|
|
|
142 |
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das machen wollen?"
|
143 |
"Area","Bereich"
|
144 |
-
"As low as:","So
|
145 |
"Assigned","Zugewiesen"
|
146 |
"Associated Tags","Verbundene Schlagworte"
|
147 |
"Attribute Set Name:","Attributset Name:"
|
@@ -151,10 +153,11 @@
|
|
151 |
"Available Products","Verfügbare Artikel"
|
152 |
"Average Order Amount","Durchschnittlicher Bestellbetrag"
|
153 |
"Average Orders","Durchschnittlicher Bestellumsatz"
|
|
|
154 |
"Back","Zurück"
|
155 |
"Back to Login","Zurück zur Anmeldung"
|
156 |
"Backup","Sicherung"
|
157 |
-
"Backup record was deleted.","
|
158 |
"Backups","Sicherungen"
|
159 |
"Base currency","Basiswährung"
|
160 |
"Bcc","Bcc"
|
@@ -162,8 +165,8 @@
|
|
162 |
"Big Image","Großes Bild"
|
163 |
"Billing Address","Rechnungsanschrift"
|
164 |
"Billing Address: ","Rechnungsanschrift"
|
165 |
-
"Billing Agreement","
|
166 |
-
"Billing Agreements","
|
167 |
"Block Information","Blockinformation"
|
168 |
"Both (without and with tax)","Beides (ohne und mit Steuern)"
|
169 |
"Both IPN and PDT","Besides IPN und PDT"
|
@@ -208,18 +211,17 @@
|
|
208 |
"Chairs","Stühle"
|
209 |
"Change Orientation","Ausrichtung ändern"
|
210 |
"Channel","Channel"
|
211 |
-
"Chart is disabled. If you want to enable chart, click <a href="%s">here</a>.","Das Chart ist deaktiviert. Wenn Sie es aktivieren wollen, klicken Sie <a href="%s">hier</a>."
|
212 |
"Checkbox","Checkbox"
|
213 |
"Child Transactions","Kinder Transaktionen"
|
214 |
"Choose Store View","StoreView wählen"
|
215 |
"Choose a selection...","Auswahl treffen..."
|
216 |
"Choose an attribute","Attribut wählen"
|
217 |
-
"Chosen category does not associated with any website, ","
|
218 |
-
"Chosen product does not associated with any website, ","
|
219 |
"Clear","Leeren"
|
220 |
"Close","Schließen"
|
221 |
"Comment text field cannot be empty.","Kommentarfeld darf nicht leer sein."
|
222 |
-
"Comments History","Kommentarverlauf"
|
223 |
"Complete","Vollständig"
|
224 |
"Configuration","Konfiguration"
|
225 |
"Confirmed email:","Bestätigte E-Mail:"
|
@@ -253,8 +255,7 @@
|
|
253 |
"Current Configuration Scope:","Aktueller Konfig.-Bereich:"
|
254 |
"Current Month","Aktueller Monat"
|
255 |
"Custom","Eigene"
|
256 |
-
"Custom
|
257 |
-
"Custom Variable "%s"","Eigene Variable "%s""
|
258 |
"Custom Variables","Eigene Variablen"
|
259 |
"Customer","Kunde"
|
260 |
"Customer Group:","Kundengruppe:"
|
@@ -273,7 +274,6 @@
|
|
273 |
"Data Format","Datenformat"
|
274 |
"Data transfer:","Datenübertragung:"
|
275 |
"Database","Datenbank"
|
276 |
-
"Dataflow - Advance Profiles","Dataflow - Erweiterte Profile"
|
277 |
"Dataflow - Advanced Profiles","Dataflow - Erweiterte Profile"
|
278 |
"Dataflow - Profiles","Dataflow - Profile"
|
279 |
"Date","Datum"
|
@@ -289,7 +289,7 @@
|
|
289 |
"Default Config","Standardkonfiguration"
|
290 |
"Default Template from Locale","Standardvorlage der Lokalisierung"
|
291 |
"Default Values","Standardwerte"
|
292 |
-
"Default display currency "%s" is not available in allowed currencies.","Standard Anzeigewährung "%s" ist nicht Teil der verfügbaren Währungen"
|
293 |
"Default scope","Standardgeltungsbereich"
|
294 |
"Delete","Löschen"
|
295 |
"Delete %s","Lösche %s"
|
@@ -303,7 +303,9 @@
|
|
303 |
"Delete Template","Vorlage löschen"
|
304 |
"Delete User","Benutzer löschen"
|
305 |
"Delete Website","Website löschen"
|
|
|
306 |
"Description","Beschreibung"
|
|
|
307 |
"Design","Gestaltung"
|
308 |
"Design Section","Design"
|
309 |
"Details","Details"
|
@@ -348,13 +350,13 @@
|
|
348 |
"Entity Attributes","Datensatzattribute"
|
349 |
"Entity Type","Datensatztyp"
|
350 |
"Entity type:","Datensatztyp:"
|
|
|
351 |
"Excel XML","Excel XML"
|
352 |
"Excl. Tax","zzgl. Steuern"
|
353 |
"Expiration Date","Gültig bis"
|
354 |
"Expiration Date: %s/%s","Gültig bis: %s/%s"
|
355 |
"Export","Exportieren"
|
356 |
"Export CSV","CSV exportieren"
|
357 |
-
"Export FAQ","FAQ exportieren"
|
358 |
"Export Filters","Filter exportieren"
|
359 |
"Export to:","Export als:"
|
360 |
"Export:","Export:"
|
@@ -362,27 +364,27 @@
|
|
362 |
"Extensions","Erweiterungen"
|
363 |
"FILTERS APPLIED","FILTER ANGEWANDT"
|
364 |
"FTP Host[:Port]","FTP Host[:Port]"
|
365 |
-
"Failed to add a product to cart by id "%s".","Fehler beim "
|
366 |
-
"Failed to cancel the billing agreement.","Fehler beim
|
367 |
-
"Failed to clear the JavaScript/CSS cache.","Fehler beim
|
368 |
-
"Failed to delete the billing agreement.","Fehler beim
|
369 |
-
"Failed to update the profile.","
|
370 |
"Field","Feld"
|
371 |
"Field Mapping","Feldzuordnung"
|
372 |
"File","Datei"
|
373 |
"File Information","Dateiinformation"
|
374 |
"File System","Dateisystem"
|
|
|
375 |
"File name:","Dateiname:"
|
376 |
"File size should be more than 0 bytes","Datei sollte größer als Null Byte sein"
|
377 |
"Files","Dateien"
|
378 |
-
"Final Price","Endpreis"
|
379 |
"Finished profile execution.","Profilausführung beendet."
|
380 |
"First Invoice Created Date","Erste Rechnungsstellung"
|
381 |
"First Name","Vorname"
|
382 |
"First Name is required field.","Vorname ist ein Pflichtfeld."
|
383 |
"First Name:","Vorname:"
|
384 |
"Fixed","Fest"
|
385 |
-
"Flush Catalog Images Cache","Katalog Bilder Cache leeren
|
386 |
"Flush JavaScript/CSS Cache","JavaScript/CSS Cache leeren"
|
387 |
"For category","Für Kategorie"
|
388 |
"For latest version visit: %s","Für eine aktuelle Version besuchen Sie bitte: %s"
|
@@ -406,14 +408,15 @@
|
|
406 |
"Google Base Items","Google Base Artikel"
|
407 |
"Google Sitemaps","Google Sitemaps"
|
408 |
"Grand Total","Gesamtsumme"
|
409 |
-
"Grid (default) / List","
|
410 |
-
"Grid Only","Nur
|
411 |
"Group:","Gruppe:"
|
412 |
"Guest","Gast"
|
413 |
"HTTP (unsecure)","HTTP (ungesichert)"
|
414 |
"HTTPS (SSL)","HTTPS (SSL)"
|
415 |
-
"Help Us Keep Magento Healthy - Report All Bugs","Helfen Sie uns, Magento
|
416 |
-
"Helper
|
|
|
417 |
"Home","Startseite"
|
418 |
"ID","ID"
|
419 |
"ID Path","ID Pfad"
|
@@ -426,8 +429,6 @@
|
|
426 |
"Images (.gif, .jpg, .png)","Bilder (.gif, .jpg, .png)"
|
427 |
"Images Cache","Bilder-Cache"
|
428 |
"Import","Import"
|
429 |
-
"Import / Export FAQ (Frequently Asked Questions)","Import/Export FAQ"
|
430 |
-
"Import FAQ","Import FAQ"
|
431 |
"Import Service","Import Dienst"
|
432 |
"Import and Export","Import und Export"
|
433 |
"Import and Export Tax Rates","Steuersätze importieren / exportieren"
|
@@ -459,7 +460,8 @@
|
|
459 |
"Invalid input data for %s => %s rate","Ungültige Eingabedaten für %s => %s Rate"
|
460 |
"Invalid parent block for this block","Ungültiger Elternblock für diesen Block"
|
461 |
"Invalid parent block for this block.","Ungültiger Elternblock für diesen Block."
|
462 |
-
"Invalid sender name "%s". Please use only visible characters and spaces.","Ungültiger Sender Name "%s". Bitte verwenden Sie ausschließlich sichtbare Zeichen und keine Leerräume."
|
|
|
463 |
"Invalidated","Außer Kraft"
|
464 |
"Inventory Stock Status","Lagerbestände"
|
465 |
"Invoice #%s comment added","Rechnung Nr. %s Kommentar hinzugefügt"
|
@@ -468,7 +470,7 @@
|
|
468 |
"Invoice Totals","Rechnungsgesamtbetrag"
|
469 |
"Invoice canceling error.","Fehler beim Stornieren der Rechnung."
|
470 |
"Invoice capturing error.","Fehler bei Aufnahme der Rechnung."
|
471 |
-
"Invoice voiding error.","Fehler beim
|
472 |
"Invoices","Rechnungen"
|
473 |
"Is Closed","geschlossen"
|
474 |
"Issue Number","Vorfallnummer"
|
@@ -488,7 +490,7 @@
|
|
488 |
"Last Name","Nachname"
|
489 |
"Last Name is required field.","Nachname ist ein Pflichtfeld."
|
490 |
"Last Name:","Nachname:"
|
491 |
-
"Last updated: %s. To refresh last day\'s <a href="%s">statistics</a>, click <a href="%s">here</a>.","
|
492 |
"Latest Message:","Letzte Nachricht:"
|
493 |
"Layered Navigation Indices","Filter-Navigation Indizes"
|
494 |
"Layered Navigation Indices were refreshed.","Filternavigation Indezes wurden neu angelegt"
|
@@ -501,6 +503,7 @@
|
|
501 |
"List Only","Nur Liste"
|
502 |
"Load Template","Vorlage laden"
|
503 |
"Load default template","Standardvorlage laden"
|
|
|
504 |
"Loading...","Wird geladen..."
|
505 |
"Local Server","Lokaler Server"
|
506 |
"Local/Remote Server","Lokaler/Entfernter Server"
|
@@ -525,8 +528,8 @@
|
|
525 |
"Magento™ is a trademark of Magento Inc.<br/>Copyright © %s Magento Inc.","Magento™ ist eine Handelsmarke der Magento Inc.<br/>Copyright © %s Magento Inc."
|
526 |
"Main Tabs","Haupt-Tabs"
|
527 |
"Make Inactive","Deaktivieren"
|
528 |
-
"Make sure that data encoding in the file is consistent and saved in one of supported encodings (UTF-8 or ANSI).","Stellen Sie sicher das die Zeichenkodierung der Dateien beim
|
529 |
-
"Make sure that you configure the design settings for the Payflow Link form in your Payflow link account.","
|
530 |
"Manage Attribute Sets","Attributsets verwalten"
|
531 |
"Manage Attributes","Attribute verwalten"
|
532 |
"Manage Categories","Kategorien verwalten"
|
@@ -537,8 +540,6 @@
|
|
537 |
"Manage Stores","Stores verwalten"
|
538 |
"Manage Tax Rules","Steuerregeln verwalten"
|
539 |
"Manage Tax Zones and Rates","Steuerzonen und -sätze verwalten"
|
540 |
-
"Manage osCommerce Orders","osCommerce Bestellungen verwalten"
|
541 |
-
"Manage osCommerce Profiles","osCommerce Profile verwalten"
|
542 |
"Manual","Manuell"
|
543 |
"Matched Expression","Passender Ausdruck"
|
544 |
"Max","Max"
|
@@ -584,7 +585,7 @@
|
|
584 |
"New Rate","Neuen Satz"
|
585 |
"New Rating","Neue Artikelbewertung anlegen"
|
586 |
"New Review","Neue Kundenmeinung anlegen"
|
587 |
-
"New Role","Neue
|
588 |
"New Rule","Neue Regel anlegen"
|
589 |
"New Search","Neue Suche anlegen"
|
590 |
"New Set","Neues Set anlegen"
|
@@ -629,15 +630,18 @@
|
|
629 |
"Number of records:","Anzahl der Einträge:"
|
630 |
"Old rate:","Alter Kurs:"
|
631 |
"On my website","Auf meiner Website"
|
632 |
-
"Once you log into your Payflow Link account, navigate to the Service Settings - Hosted Checkout Pages - Set Up menu and set the options described below","
|
633 |
-
"One or more media files failed to be synchronized during the media storages syncronization process. Refer to the log file for details.","
|
634 |
"One or more of the Cache Types are invalidated:","Eine oder mehr Cache-Arten sind außer Kraft:"
|
635 |
"Online Customers","Online-Kunden"
|
636 |
-
"Only attributes with scope "Global", input type "Dropdown" and Use To Create Configurable Product "Yes" are available.","
|
|
|
|
|
637 |
"Only mapped fields","Nur zugeordnete Felder"
|
638 |
"Optional","freiwillig"
|
639 |
"Options","Optionen"
|
640 |
-
"Options menu items","
|
|
|
641 |
"Order #%s","Bestell-Nr. %s"
|
642 |
"Order #%s (%s)","Bestell-Nr. %s (%s)"
|
643 |
"Order Created Date","Bestellerstellungs-Datum"
|
@@ -666,7 +670,7 @@
|
|
666 |
"Password:","Passwort:"
|
667 |
"Path","Pfad"
|
668 |
"Path:","Pfad:"
|
669 |
-
"Payment method instance is not available.","
|
670 |
"Payment method is not available.","Zahlweise ist nicht verfügbar"
|
671 |
"Payment method must be specified.","Zahlweise muß angegeben werden"
|
672 |
"Pending Reviews","Ausstehende Kundenmeinungen"
|
@@ -718,9 +722,9 @@
|
|
718 |
"Please specify at least start or end date.","Bitte geben Sie mindestens Start- oder Enddatum an."
|
719 |
"Please specify the admin custom URL.","Bitte geben Sie die individuelle Admin URL an."
|
720 |
"Please try to logout and sign in again.","Bitte versuchen Sie sich ein und wieder aus zu loggen."
|
721 |
-
"Please use in this field only "a-z,0-9,_".","Bitte nur "a-z,0-9,_"
|
722 |
"Please use letters only (a-z) in this field.","Bitte nur Buchstaben (a-z) in diesem Feld benutzen."
|
723 |
-
"Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.","
|
724 |
"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte nur Buchstaben (a-z) oder Zahlen (0-9) in diesem Feld verwenden. Es sind keine Leerzeichen oder andere Zeichen erlaubt."
|
725 |
"Please use only letters (a-z) or numbers (0-9) or spaces and # only in this field.","Bitte nur Buchstaben (a-z), Zahlen (0-9) oder Leerzeichen und # in diesem Feld verwenden."
|
726 |
"Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.","Bitte benutzen Sie dieses Datumsformat: tt/mm/jjjj. Zum Beispiel 17/03/2006 für den 17. März 2006."
|
@@ -728,7 +732,7 @@
|
|
728 |
"Please wait, loading...","Bitte warten, wird geladen..."
|
729 |
"Please wait...","Bitte warten..."
|
730 |
"Please, add some answers to this poll first.","Bitte fügen Sie erst ein paar Antworten zu dieser Umfrage hinzu"
|
731 |
-
"Please, select "Visible in Stores" for this poll first.","Bitte wählen Sie für diese Umfrage zuerst "Sichtbar in Store"."
|
732 |
"Poll Manager","Umfrageverwaltung"
|
733 |
"Polls","Umfragen"
|
734 |
"Popular","Beliebt"
|
@@ -740,7 +744,6 @@
|
|
740 |
"Preview","Vorschau"
|
741 |
"Preview Template","Vorlagenvorschau"
|
742 |
"Previous page","Vorherige Seite"
|
743 |
-
"Price","Preis"
|
744 |
"Price alert subscription was saved.","Preisbenachrichtigung wurde gespeichert"
|
745 |
"Price:","Preis:"
|
746 |
"Processed <strong>%s%% %s/%d</strong> records","<strong>%s%% %s/%d</strong> Einträge verarbeiten"
|
@@ -749,6 +752,7 @@
|
|
749 |
"Product Name3 1","Artikelname3 1"
|
750 |
"Product Name3 2","Artikelname3 2"
|
751 |
"Product Reviews","Artikelbewertungen"
|
|
|
752 |
"Product Thumbnail Itself","Vorschaubild"
|
753 |
"Product is not loaded.","Artikel nicht geladen."
|
754 |
"Product:","Artikel:"
|
@@ -769,7 +773,6 @@
|
|
769 |
"Promo","Aktion"
|
770 |
"Promotions","Preisregeln"
|
771 |
"Purchased Item","Gekaufter Artikel"
|
772 |
-
"Qty","Menge"
|
773 |
"Qty:","Menge"
|
774 |
"Quantity","Menge"
|
775 |
"Queue Refresh","Aktualisierung anstoßen"
|
@@ -804,7 +807,7 @@
|
|
804 |
"Required settings","Pflichteinstellungen"
|
805 |
"Reset","Zurücksetzen"
|
806 |
"Reset Filter","Filter zurücksetzen"
|
807 |
-
"Reset
|
808 |
"Resize","Größenanpassung"
|
809 |
"Resource Access","Quellenzugriff"
|
810 |
"Resources","Quelle"
|
@@ -841,13 +844,14 @@
|
|
841 |
"Save","Speichern"
|
842 |
"Save & Generate","Speichern & Erstellen"
|
843 |
"Save Account","Benutzerkonto speichern"
|
|
|
844 |
"Save Cache Settings","Cache-Einstellungen speicherns"
|
845 |
"Save Config","Konfiguration speichern"
|
846 |
"Save Currency Rates","Währungskurse speichern"
|
847 |
"Save Profile","Profil speichern"
|
848 |
"Save Role","Gruppenberechtigung speichern"
|
849 |
"Save Template","Vorlage speichern"
|
850 |
-
"Save Theme","Theme
|
851 |
"Save User","Benutzer speichern"
|
852 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
853 |
"Screens:","Ansichten"
|
@@ -860,14 +864,13 @@
|
|
860 |
"Select Category","Kategorie auswählen"
|
861 |
"Select Date","Datum wählen"
|
862 |
"Select Range","Zeitraum auswählen"
|
863 |
-
"Select Template","Vorlage auswählen"
|
864 |
"Select Visible","Sichtbare wählen"
|
865 |
"Select date","Datum auswählen"
|
866 |
-
"Selected allowed currency "%s" is not available in installed currencies.","Ausgewählte erlaubte Währung "%s" ist nicht verfügbar in den installierten Währungen."
|
867 |
"Selected base currency is not available in installed currencies.","Ausgewählte Basiswährung ist nicht verfügbar in den installierten Währungen."
|
868 |
-
"Selected default display currency is not available in allowed currencies.","
|
869 |
-
"Selected default display currency is not available in installed currencies.","
|
870 |
-
"Self-assigned roles cannot be deleted.","Selbst zugewiesene
|
871 |
"Sender","Absender"
|
872 |
"Separate Email","Seperate E-Mail"
|
873 |
"Shipment #%s comment added","Versand Nr. %s Kommentar hinzugefügt"
|
@@ -890,13 +893,12 @@
|
|
890 |
"Show Report For","Zeige Bericht für"
|
891 |
"Show Reviews","Kundenmeinungen anzeigen"
|
892 |
"Show confirmation page: ","Konfigurationsseite anzeigen"
|
893 |
-
"Silent Post URL:","
|
894 |
"Sitemap Information","Sitemap Informationen"
|
895 |
"Size for %s","Größe für %s"
|
896 |
"Skip Category Selection","Kategorieauswahl überspringen"
|
897 |
"Some items in this order have different invoice and shipment types. You can create shipment only after the invoice is created.","Einige Artikel in dieser Bestellung haben unterschiedliche Rechnungs- und Versandarten. Sie können den Versand erst nach Erstellung der Rechnung erstellen."
|
898 |
"Some of the ordered items do not exist in the catalog anymore and will be removed if you try to edit the order.","Einige der bestellten Artikel sind im System nicht mehr verfügbar und werden beim Bearbeiten der Bestellung entfernt."
|
899 |
-
"Some other FAQ","Some other FAQ"
|
900 |
"Sorry, this feature is coming soon...","Entschuldigung, diese Funktion kommt bald..."
|
901 |
"Sort Order","Reihenfolge"
|
902 |
"Special Price:","Sonderpreis:"
|
@@ -962,16 +964,16 @@
|
|
962 |
"The Layered Navigation indexing has been queued.","Die Warteschlange der Indexierung der Filterbaren Navigation wurde angestoßen."
|
963 |
"The Layered Navigation indexing queue has been canceled.","Die Warteschlange der Indexierung der Filterbaren Navigation wurde abgebrochen."
|
964 |
"The Layered Navigation indices were refreshed.","Die Filternavigation Indizes wurden aktualisiert."
|
965 |
-
"The Layered Navigation process has been queued to be killed.","
|
966 |
"The Magento cache storage has been flushed.","Die Magento Cache-Lagerung wurde geleert."
|
967 |
"The URL Rewrite has been deleted.","URL Rewrite wurde gelöscht."
|
968 |
"The URL Rewrite has been saved.","URL Rewrite wurde gespeichert."
|
969 |
"The account has been saved.","Das Konto wurde gespeichert."
|
970 |
-
"The archive can be uncompressed with <a href="%s">%s</a> on Windows systems","Das Archiv kann auf Windows Systemen mit <a href="%s">%s</a> entpackt werden"
|
971 |
"The attribute set has been removed.","Das Attribut-Set wurde gelöscht."
|
972 |
"The backup has been created.","Die Sicherung wurde angelegt."
|
973 |
-
"The billing agreement has been canceled.","Die
|
974 |
-
"The billing agreement has been deleted.","Die
|
975 |
"The cache storage has been flushed.","Die Cache-Lagerung wurde geleert."
|
976 |
"The card has failed verification with the issuer bank.","Die Karte hat die Überprüfung mit der ausstellenden Bank nicht bestanden."
|
977 |
"The carrier needs to be specified.","Der Beförderer muss spezifiziert werden."
|
@@ -996,6 +998,7 @@
|
|
996 |
"The image cache was cleared.","Der Bildercache wurde geleert."
|
997 |
"The information in this tab has been changed.","Die Informationen in diesem Tab wurden geändert."
|
998 |
"The invoice and shipment have been created.","Die Rechnung und der Versand wurden angelegt."
|
|
|
999 |
"The invoice has been canceled.","Die Rechnung wurde storniert."
|
1000 |
"The invoice has been captured.","Die Rechnung wurde erfasst."
|
1001 |
"The invoice has been created.","Die Rechnung wurde erstellt."
|
@@ -1009,26 +1012,30 @@
|
|
1009 |
"The profile has been saved.","Das Profil wurde gespeichert."
|
1010 |
"The profile has been updated.","Das Profil wurde aktualisiert."
|
1011 |
"The profile has no changes.","Das Profil hat keine Veränderungen."
|
|
|
1012 |
"The rating has been deleted.","Die Bewertung wurde gelöscht."
|
1013 |
"The rating has been saved.","Die Bewertung wurde gespeichert."
|
1014 |
-
"The role has been deleted.","Die
|
1015 |
-
"The role has been saved.","Die
|
1016 |
-
"The role has been successfully saved.","Die
|
1017 |
"The search index has been rebuilt.","Der Suchindex wurde neu aufgebaut."
|
1018 |
"The shipment has been created.","Der Versand wurde angelegt."
|
|
|
1019 |
"The shipment has been sent.","Versandmitteilung wurde versandt."
|
1020 |
"The tag has been deleted.","Das Tag wurde gelöscht."
|
1021 |
"The tag has been saved.","Das Tag wurde gespeichert."
|
1022 |
"The user has been deleted.","Der Nutzer wurde gelöscht."
|
1023 |
"The user has been saved.","Der Nutzer wurde gespeichert."
|
1024 |
-
"Theme
|
|
|
|
|
1025 |
"Themes JavaScript and CSS files combined to one file.","Theme JavaScript und CSS Dateien kombiniert zu einer Datei."
|
1026 |
"There has been wrong payment information submitted or time limit has expired. Please, try again.","Falsche Zahlungsinformation übermittelt oder Zeitlimit überschritten. Bitte versuchen Sie es erneut."
|
1027 |
"There is an error in one of the option rows.","Ein Fehler in einer der Optionszeilen."
|
1028 |
"This Account is","Dieses Konto ist"
|
1029 |
"This Email template no longer exists.","Diese E-Mail Vorlage existiert nicht mehr."
|
1030 |
"This Role no longer exists","Diese Gruppenberechtigung existiert nicht mehr"
|
1031 |
-
"This Role no longer exists.","Diese
|
1032 |
"This account is","Dieses Benutzerkonto ist"
|
1033 |
"This account is inactive.","Dieses Benutzerkonto ist inaktiv."
|
1034 |
"This attribute set does not have attributes which we can use for configurable product","Dieses Attributset besitzt keine Attribute, die für einen konfigurierbarer Artikel verwendet werden können."
|
@@ -1047,8 +1054,8 @@
|
|
1047 |
"Timeout limit for response from synchronize process was reached.","Timeout Limit für Antwort vom Synchronisierungsprozess überschritten."
|
1048 |
"Title bar","Title Leiste"
|
1049 |
"To","Bis"
|
1050 |
-
"To cancel pending authorizations and release amounts that have already been processed during this payment, click Cancel.","
|
1051 |
-
"To use Payflow Link, you must configure your Payflow Link account on the Paypal website.","
|
1052 |
"Toggle Editor","Editor umschalten"
|
1053 |
"Tools","Werkzeuge"
|
1054 |
"Top 5 Search Terms","Top 5 Suchbegriffe"
|
@@ -1064,10 +1071,10 @@
|
|
1064 |
"Track this shipment","Sendung verfolgen"
|
1065 |
"Tracking number %s for %s assigned","Trackingnummer %s für %s zugewiesen"
|
1066 |
"Tracking number cannot be empty.","Trackingnummer darf nicht leer sein."
|
1067 |
-
"Transaction Data","
|
1068 |
-
"Transaction Details","
|
1069 |
-
"Transaction ID","
|
1070 |
-
"Transaction Type","
|
1071 |
"Transactional Emails","Transaktions-E-Mails"
|
1072 |
"Transactions","Transaktionen"
|
1073 |
"Try Magento Go for Free","Magento Go kostenfrei testen"
|
@@ -1109,7 +1116,7 @@
|
|
1109 |
"Use Default","Standard verwenden"
|
1110 |
"Use Default Value","Verwende Standardwert"
|
1111 |
"Use Default Variable Values","Verwende Standard Variablen-Werte"
|
1112 |
-
"Use Silent Post:","
|
1113 |
"Use Website","Website verwenden"
|
1114 |
"Used Currently For","Aktuell genutzt für"
|
1115 |
"Used as Default For","Genutzt als Standard für"
|
@@ -1151,10 +1158,10 @@
|
|
1151 |
"Warning! Empty value can cause problems with CSV format.","Achtung! Leerer Wert kann Fehler in CSV-Dateien verursachen."
|
1152 |
"Warning!\r\nThis action will remove this user from already assigned role\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diesen Benutzer von einer bereits zugewiesenen Gruppenberechtigung entfernen\r\nSind Sie sicher?"
|
1153 |
"Warning!\r\nThis action will remove those users from already assigned roles\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diese Benutzer von einer bereits zugewiesenen Gruppenberechtigung entfernen\r\nSind Sie sicher?"
|
1154 |
-
"Warning: All related AirMail messages will be deteted!\n Are you sure you want to do this?","
|
1155 |
"Warning: Please do not close the window during importing/exporting data","Warnung: Bitte schließen Sie das Fenster nicht während des Import-/Export Vorgangs"
|
1156 |
"Watermark File for %s","Wasserzeichen Datei für %s"
|
1157 |
-
"We appreciate our merchants\' feedback, please <a href="#" onclick="surveyAction(\'yes\'); return false;">take our survey</a> to provide insight on the features you would like included in Magento. <a href="#" onclick="surveyAction(\'no\'); return false;">Remove this notification</a>","Die Meinung unserer Kunden ist uns wichtig, bitte <a href
|
1158 |
"We detected that your JavaScript seem to be disabled.","Javascript scheint in Ihrem Browser deaktiviert zu sein."
|
1159 |
"We\'re in our typing table, coding away more features for Magento. Thank you for your patience.","Wir arbeiten daran. Vielen Dank für Ihre Geduld."
|
1160 |
"Web Section","Web"
|
@@ -1164,19 +1171,21 @@
|
|
1164 |
"What is this?","Was ist das?"
|
1165 |
"Wishlist Report","Wunschliste Bericht"
|
1166 |
"Wishlist item is not loaded.","Wunschzettel Artikel nicht geladen."
|
1167 |
-
"Wrong billing agreement ID specified.","Falsche
|
1168 |
"Wrong column format.","Falsches Spalten-Format"
|
1169 |
"Wrong newsletter template.","Falsche Newsletter Vorlage."
|
1170 |
-
"Wrong quote item.","
|
1171 |
"Wrong tab configuration.","Falsche Tab Konfiguration"
|
1172 |
"Wrong tag was specified.","Falsches Schlagwort spezifiziert."
|
1173 |
-
"Wrong transaction ID specified.","Falsche
|
1174 |
"XML","XML"
|
|
|
|
|
1175 |
"YTD","Seit Jahresbeginn"
|
1176 |
"Year","Jahr"
|
1177 |
"Yes","Ja"
|
1178 |
-
"Yes (301 Moved Permanently)","
|
1179 |
-
"Yes (302 Found)","
|
1180 |
"Yes (only price with tax)","Ja (nur Preis mit Steuer)"
|
1181 |
"You cannot delete your own account.","Sie können Ihr eigenes Konto nicht löschen."
|
1182 |
"You have %s unread message(s).","Sie haben %s ungelesene Nachricht(en)."
|
@@ -1195,19 +1204,17 @@
|
|
1195 |
"[WEBSITE]","[WEBSITE]"
|
1196 |
"b","B"
|
1197 |
"close","schließen"
|
1198 |
-
"critical","
|
1199 |
-
"example: "sitemap/" or "/" for base path (path must be writeable)","Beispiel: "sitemap/" oder "/" für den Basispfad (Pfad
|
1200 |
"example: sitemap.xml","Beispiel: sitemap.xml"
|
1201 |
"from","von"
|
1202 |
-
"images/logo.gif","images/logo.gif"
|
1203 |
"items selected","Artikel ausgewählt"
|
1204 |
-
"major","
|
1205 |
-
"minor","
|
1206 |
-
"notice","
|
1207 |
"of %s pages","von %s Seiten"
|
1208 |
"per page","pro Seite"
|
1209 |
-
"so url rewrite is not possible.","URL Rewrite ist nicht möglich."
|
1210 |
"store(%s) scope","Store(%s) Gültigkeit"
|
1211 |
"to","bis"
|
1212 |
"website(%s) scope","Website(%s) Gültigkeit"
|
1213 |
-
"{{base_url}} is not recommended to use in a production environment to declare the Base Unsecure URL / Base Secure URL. It is highly recommended to change this value in your Magento <a href="%s">configuration</a>.","{{base_url}} wird nicht in Produktivumgebungen empfohlen um Base Unsecure Url / Base Secure Url zu bestimmen. Es wird dringend empfohlen, diesen Wert in der Magento <a href="%s">Konfiguration</a> zu ändern."
|
6 |
"%s cache type(s) disabled.","%s x erfolgreich Cache deaktiviert."
|
7 |
"%s cache type(s) enabled.","%s x erfolgreich Cache aktiviert."
|
8 |
"%s cache type(s) refreshed.","%s x erfolgreich Cache aktualisiert."
|
9 |
+
"(For Type ""Local Server"" need to use relative path to Magento install var/export or var/import, e.g. var/export, var/import, var/export/some/dir, var/import/some/dir)","(Für den Typ ""Lokalen Server"" wird die relative Pfadanganbe zur Magento Instanz var/export oder var/import benötigt, z.B. var/export, var/import, var/export/unter/verzeichnis, var/import/unter/verzeichnis)"
|
10 |
"(For US 2-letter state names)","(Für USA Staatsnamen aus 2 Buchstaben)"
|
11 |
"(If left empty will be auto-generated)","(Wird automatisch generiert, wenn leer gelassen)"
|
12 |
+
"(Includes more countries than those listed below. As the application owner, you are responsible for complying with country-specific laws related to the distribution or sale of your application into that country, including your home country.)","(Dazu gehören weitere Ländern außer den genannten. Als Eigentümer der Anwendung sind sie für die Einhaltung der Rechtsvorschriften ihres Landes hinsichtlich der Verbreitung oder dem Verkauf ihrer Anwendung in jeweiligem Land, einschließlich ihrem Heimatland, selbst verantwortlich.)"
|
13 |
"(Leave empty for first spreadsheet)","(Leer lassen für erste Tabelle)"
|
14 |
"(Products will be added/updated to this store if 'store' column is blank or missing in the import file.)","(Artikel werden zu diesem Shop hinzugefügt/aktualisiert, wenn die 'Shop' Spalte in dieser Importdatei leer ist oder fehlt.)"
|
15 |
"(Shift-)Click or drag to change value","(Shift-)Klick oder Ziehen, um den Wert zu ändern"
|
24 |
"- Use the %s, %s buttons to select year","- Benutzen Sie die %s, %s Buttons für die Jahresauswahl"
|
25 |
"- or Shift-click to decrease it","- oder halten Sie beim Klicken Shift (Großschreiben) gedrückt, um den Wert zu verringern"
|
26 |
"- or click and drag for faster selection.","- oder klicken und ziehen Sie für eine schnellere Auswahl."
|
27 |
+
"-- Not Selected --","-- Nichts ausgewählt --"
|
28 |
"-- Please Select --","-- Bitte auswählen --"
|
29 |
+
"-- Please Select Billing Agreement--","-- Bitte wählen Sie eine Zahlungsvereinbarung --"
|
30 |
+
"-- Please Select a Category --","-- Bitte wählen Sie eine Kategorie --"
|
31 |
"-- Please select --","-- Bitte wählen --"
|
32 |
"--Please Select--","--Bitte wählen--"
|
33 |
"1 Hour","1 Stunde"
|
41 |
"6 Hours","6 Stunden"
|
42 |
"80px x 80px","80px x 80px"
|
43 |
"80x80 px","80px x 80px"
|
44 |
+
"<h1 class=""page-heading"">404 Error</h1><p>Page not found.</p>","<h1 class=""page-heading"">404 Fehler</h1><p>Seite nicht gefunden.</p>"
|
45 |
"A new password was sent to your email address. Please check your email and click Back to Login.","Ein neues Passwort wurde an Ihre E-Mail Adresse gesendet. Bitte prüfen Sie Ihre E-Mails und klicken Sie auf Zurück zur Anmeldung."
|
46 |
"A user with the same user name or email aleady exists.","Ein Nutzer mit dem gleichen Benutzernamen oder E-Mail Adresse existiert bereits."
|
47 |
"API Key","API Schlüssel"
|
48 |
"API Key Confirmation","API Schlüssel Bestätigung"
|
49 |
+
"ASCII","ASCII"
|
50 |
"Abandoned Carts","Aufgegebene Warenkörbe"
|
51 |
"About the calendar","Über den Kalender"
|
52 |
"Access Denied","Zugriff verweigert"
|
60 |
"Account status","Benutzerkonto Status"
|
61 |
"Action","Aktion"
|
62 |
"Actions","Aktionen"
|
63 |
+
"Actions XML","Aktionen XML"
|
64 |
"Activate","Aktivieren"
|
65 |
"Active","Aktiv"
|
66 |
"Add","Hinzufügen"
|
67 |
+
"Add Contents Path","Neuer Inhaltspfad"
|
68 |
+
"Add Exception","Neue Ausnahme"
|
69 |
"Add Field Mapping","Neue Feldzuordnung"
|
70 |
+
"Add Field with URL:","Neues Feld mit URL:"
|
71 |
+
"Add New","Neu"
|
72 |
"Add New Image","Neues Bild"
|
73 |
+
"Add New Profile","Neue wiederkehrende Leistung"
|
74 |
+
"Add New Role","Neue Berechtigung"
|
75 |
"Add New Template","Neue Vorlage"
|
76 |
+
"Add New URL Rewrite","Neuer URL-Rewrite"
|
77 |
"Add New User","Neuer Benutzer"
|
78 |
+
"Add New Variable","Neue Variable"
|
79 |
+
"Add PHP Extension dependency","PHP Extension-Abhängigkeit"
|
80 |
+
"Add Package dependency","Neue Paket-Abhängigkeit"
|
81 |
+
"Add URL Rewrite","Neuer URL Rewrite"
|
82 |
+
"Add URL Rewrite for a Category","Neuer URL Rewrite für eine Kategorie"
|
83 |
+
"Add URL Rewrite for a Product","Neuer URL Rewrite für einen Artikel"
|
|
|
84 |
"Add after","Hinzufügen nach"
|
85 |
"Add to Cart","In den Warenkorb"
|
86 |
"Add to Wishlist","Auf den Wunschzettel"
|
87 |
"Additional Cache Management","Zusätzliche Caches"
|
88 |
+
"Address Type:","Adresstyp:"
|
89 |
"Admin","Admin"
|
90 |
"Advanced Admin Section","Erweiterte Administration"
|
91 |
+
"Advanced Profiles","Erweiterte wiederkehrende Leistungen"
|
92 |
"Advanced Section","Erweitert"
|
93 |
"AirMail Template Preview","AirMail Vorlage Vorschau"
|
94 |
"All","Alle"
|
101 |
"All Websites","Alle Websites"
|
102 |
"All countries","Alle Länder"
|
103 |
"All fields","Alle Felder"
|
104 |
+
"All locations","Alle Orte"
|
105 |
+
"All possible rates were fetched, please click on ""Save"" to apply","Alle verfügbaren Kurse wurden abgefragt, bitte klicken Sie auf <strong>""Speichern""</strong>"
|
106 |
+
"All rates were fetched, please click on ""Save"" to apply","Alle verfügbaren Kurse wurden abgefragt, bitte klicken Sie auf <strong>""Speichern""</strong>"
|
107 |
"All valid rates have been saved.","Alle gültigen Kurse wurden erfolgreich gespeichert."
|
108 |
"Amounts","Gesamtbeträge"
|
109 |
"An error has occured while syncronizing media storages.","Fehler beim Synchronisieren der Media-Speicher"
|
110 |
+
"An error occurred while clearing the JavaScript/CSS cache.","Beim Leeren der JavaScript/CSS Caches ist ein Fehler aufgetreten."
|
111 |
+
"An error occurred while clearing the image cache.","Beim Leeren der Bilder-Caches ist ein Fehler aufgetreten."
|
112 |
"An error occurred while creating the backup.","Beim Anlegen des Backups ist ein Fehler aufgetreten."
|
113 |
+
"An error occurred while deleting email template data. Please review log and try again.","Beim Leeren der E-Mail Vorlagen Inhalte ist ein Fehler aufgetreten. Bitte überprüfen Sie die Log-Aufzeichnung und versuchen es erneut."
|
114 |
+
"An error occurred while deleting this role.","Beim Löschen dieser Berechtigung ist ein Fehler aufgetreten."
|
115 |
"An error occurred while deleting this set.","Beim Löschen dieses Sets ist ein Fehler aufgetreten."
|
116 |
+
"An error occurred while deleting this template.","Beim Löschen dieser Vorlage ist ein Fehler aufgetreten."
|
117 |
"An error occurred while finishing process. Please refresh the cache","Ein Fehler ist beim Abschließen dieses Prozesses aufgetreten. Bitte aktualisieren Sie den Cache"
|
118 |
"An error occurred while rebuilding the CatalogInventory Stock Status.","Beim Neuaufbau vom Lagerbestands-Status ist ein Fehler aufgetreten."
|
119 |
"An error occurred while rebuilding the catalog index.","Beim Neuaufbau vom Katalogindex ist ein Fehler aufgetreten."
|
123 |
"An error occurred while refreshing the Catalog Rewrites.","Beim Neuaufbau der Katalog-Rewrites ist ein Fehler aufgetreten."
|
124 |
"An error occurred while refreshing the Layered Navigation indices.","Beim Neuaufbau der Filterbaren Navigation Indizes ist ein Fehler aufgetreten."
|
125 |
"An error occurred while refreshing the catalog rewrites.","Ein Fehler ist bei der Aktualisierung der Katalog-Rewrites aufgetreten."
|
126 |
+
"An error occurred while refreshing the layered navigation indices.","Beim Aktualisieren der Filterbaren Navigation Indizes ist ein Fehler aufgetreten."
|
127 |
"An error occurred while saving account.","Beim Speichern des Kontos ist ein Fehler aufgetreten."
|
128 |
"An error occurred while saving the customer.","Beim Speichern des Kunden ist ein Fehler aufgetreten."
|
129 |
+
"An error occurred while saving this configuration:","Beim Speichern dieser Konfiguration ist ein Fehler aufgetreten:"
|
130 |
+
"An error occurred while saving this role.","Beim Speichern dieser Berechtigung ist ein Fehler aufgetreten."
|
131 |
+
"An error occurred while saving this template.","Beim Speichern dieser Vorlage ist ein Fehler aufgetreten."
|
132 |
+
"An error occurred while updating the selected review(s).","Beim Aktualisieren der ausgewählten Kundenmeinungen ist ein Fehler aufgetreten."
|
133 |
"Any","Alle"
|
134 |
"Any Attribute Set","Jedes Attributset"
|
135 |
"Any Group","Jede Gruppe"
|
137 |
"Any Store","Jeder Store"
|
138 |
"Any Type","Jeder Typ"
|
139 |
"Any Visibility","Jede Sichtbarkeit"
|
|
|
140 |
"Archive file name:","Archiv Dateiname:"
|
141 |
"Are you sure that you want to delete this template?","Sind Sie sicher, dass Sie diese Vorlage löschen möchten?"
|
142 |
"Are you sure that you want to strip tags?","Sind Sie sicher, dass Sie die Schlagworte entfernen möchten?"
|
143 |
+
"Are you sure you want to delete this theme? This change will affect all applications.","Sind Sie sicher, dass Sie diese Vorlage löschen möchten? Dieser Vorgang wirkt sich auf alle Anwendungen aus."
|
144 |
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das machen wollen?"
|
145 |
"Area","Bereich"
|
146 |
+
"As low as:","So günstig wie:"
|
147 |
"Assigned","Zugewiesen"
|
148 |
"Associated Tags","Verbundene Schlagworte"
|
149 |
"Attribute Set Name:","Attributset Name:"
|
153 |
"Available Products","Verfügbare Artikel"
|
154 |
"Average Order Amount","Durchschnittlicher Bestellbetrag"
|
155 |
"Average Orders","Durchschnittlicher Bestellumsatz"
|
156 |
+
"BINARY","Binär"
|
157 |
"Back","Zurück"
|
158 |
"Back to Login","Zurück zur Anmeldung"
|
159 |
"Backup","Sicherung"
|
160 |
+
"Backup record was deleted.","Sicherung wurde gelöscht."
|
161 |
"Backups","Sicherungen"
|
162 |
"Base currency","Basiswährung"
|
163 |
"Bcc","Bcc"
|
165 |
"Big Image","Großes Bild"
|
166 |
"Billing Address","Rechnungsanschrift"
|
167 |
"Billing Address: ","Rechnungsanschrift"
|
168 |
+
"Billing Agreement","Zahlungsvereinbarung"
|
169 |
+
"Billing Agreements","Zahlungsvereinbarungen"
|
170 |
"Block Information","Blockinformation"
|
171 |
"Both (without and with tax)","Beides (ohne und mit Steuern)"
|
172 |
"Both IPN and PDT","Besides IPN und PDT"
|
211 |
"Chairs","Stühle"
|
212 |
"Change Orientation","Ausrichtung ändern"
|
213 |
"Channel","Channel"
|
214 |
+
"Chart is disabled. If you want to enable chart, click <a href=""%s"">here</a>.","Das Chart ist deaktiviert. Wenn Sie es aktivieren wollen, klicken Sie <a href=""%s"">hier</a>."
|
215 |
"Checkbox","Checkbox"
|
216 |
"Child Transactions","Kinder Transaktionen"
|
217 |
"Choose Store View","StoreView wählen"
|
218 |
"Choose a selection...","Auswahl treffen..."
|
219 |
"Choose an attribute","Attribut wählen"
|
220 |
+
"Chosen category does not associated with any website, so url rewrite is not possible.","Die ausgewählte Kategorie ist keiner Webseite zugeordnet, daher ist ein url rewrite nicht möglich"
|
221 |
+
"Chosen product does not associated with any website, so url rewrite is not possible.","Der ausgewählte Artikel ist keiner Webseite zugeordnet, daher ist ein url rewrite nicht möglich"
|
222 |
"Clear","Leeren"
|
223 |
"Close","Schließen"
|
224 |
"Comment text field cannot be empty.","Kommentarfeld darf nicht leer sein."
|
|
|
225 |
"Complete","Vollständig"
|
226 |
"Configuration","Konfiguration"
|
227 |
"Confirmed email:","Bestätigte E-Mail:"
|
255 |
"Current Configuration Scope:","Aktueller Konfig.-Bereich:"
|
256 |
"Current Month","Aktueller Monat"
|
257 |
"Custom","Eigene"
|
258 |
+
"Custom Variable ""%s""","Eigene Variable ""%s"""
|
|
|
259 |
"Custom Variables","Eigene Variablen"
|
260 |
"Customer","Kunde"
|
261 |
"Customer Group:","Kundengruppe:"
|
274 |
"Data Format","Datenformat"
|
275 |
"Data transfer:","Datenübertragung:"
|
276 |
"Database","Datenbank"
|
|
|
277 |
"Dataflow - Advanced Profiles","Dataflow - Erweiterte Profile"
|
278 |
"Dataflow - Profiles","Dataflow - Profile"
|
279 |
"Date","Datum"
|
289 |
"Default Config","Standardkonfiguration"
|
290 |
"Default Template from Locale","Standardvorlage der Lokalisierung"
|
291 |
"Default Values","Standardwerte"
|
292 |
+
"Default display currency ""%s"" is not available in allowed currencies.","Standard Anzeigewährung ""%s"" ist nicht Teil der verfügbaren Währungen"
|
293 |
"Default scope","Standardgeltungsbereich"
|
294 |
"Delete","Löschen"
|
295 |
"Delete %s","Lösche %s"
|
303 |
"Delete Template","Vorlage löschen"
|
304 |
"Delete User","Benutzer löschen"
|
305 |
"Delete Website","Website löschen"
|
306 |
+
"Delete theme","Lösche Theme"
|
307 |
"Description","Beschreibung"
|
308 |
+
"Deselect All","Alle abwählen"
|
309 |
"Design","Gestaltung"
|
310 |
"Design Section","Design"
|
311 |
"Details","Details"
|
350 |
"Entity Attributes","Datensatzattribute"
|
351 |
"Entity Type","Datensatztyp"
|
352 |
"Entity type:","Datensatztyp:"
|
353 |
+
"Error","Fehler"
|
354 |
"Excel XML","Excel XML"
|
355 |
"Excl. Tax","zzgl. Steuern"
|
356 |
"Expiration Date","Gültig bis"
|
357 |
"Expiration Date: %s/%s","Gültig bis: %s/%s"
|
358 |
"Export","Exportieren"
|
359 |
"Export CSV","CSV exportieren"
|
|
|
360 |
"Export Filters","Filter exportieren"
|
361 |
"Export to:","Export als:"
|
362 |
"Export:","Export:"
|
364 |
"Extensions","Erweiterungen"
|
365 |
"FILTERS APPLIED","FILTER ANGEWANDT"
|
366 |
"FTP Host[:Port]","FTP Host[:Port]"
|
367 |
+
"Failed to add a product to cart by id ""%s"".","Fehler beim Hinzufügen des Artikels zum Warenkorb mit der ID ""%s"". "
|
368 |
+
"Failed to cancel the billing agreement.","Fehler beim Stornieren der Zahlungsvereinbarung."
|
369 |
+
"Failed to clear the JavaScript/CSS cache.","Fehler beim Leeren des JavaScript/CSS Caches."
|
370 |
+
"Failed to delete the billing agreement.","Fehler beim Löschen der Zahlungsvereinbarung."
|
371 |
+
"Failed to update the profile.","Aktualisierung der Wiederkehrenden Leistung fehlgeschlagen."
|
372 |
"Field","Feld"
|
373 |
"Field Mapping","Feldzuordnung"
|
374 |
"File","Datei"
|
375 |
"File Information","Dateiinformation"
|
376 |
"File System","Dateisystem"
|
377 |
+
"File mode","Dateimodus"
|
378 |
"File name:","Dateiname:"
|
379 |
"File size should be more than 0 bytes","Datei sollte größer als Null Byte sein"
|
380 |
"Files","Dateien"
|
|
|
381 |
"Finished profile execution.","Profilausführung beendet."
|
382 |
"First Invoice Created Date","Erste Rechnungsstellung"
|
383 |
"First Name","Vorname"
|
384 |
"First Name is required field.","Vorname ist ein Pflichtfeld."
|
385 |
"First Name:","Vorname:"
|
386 |
"Fixed","Fest"
|
387 |
+
"Flush Catalog Images Cache","Katalog Bilder Cache leeren"
|
388 |
"Flush JavaScript/CSS Cache","JavaScript/CSS Cache leeren"
|
389 |
"For category","Für Kategorie"
|
390 |
"For latest version visit: %s","Für eine aktuelle Version besuchen Sie bitte: %s"
|
408 |
"Google Base Items","Google Base Artikel"
|
409 |
"Google Sitemaps","Google Sitemaps"
|
410 |
"Grand Total","Gesamtsumme"
|
411 |
+
"Grid (default) / List","Gitter (Standard) / Liste"
|
412 |
+
"Grid Only","Nur Gitter"
|
413 |
"Group:","Gruppe:"
|
414 |
"Guest","Gast"
|
415 |
"HTTP (unsecure)","HTTP (ungesichert)"
|
416 |
"HTTPS (SSL)","HTTPS (SSL)"
|
417 |
+
"Help Us Keep Magento Healthy - Report All Bugs","Helfen Sie uns, Magento noch besser zu machen - Melden Sie alle Fehler"
|
418 |
+
"Helper attributes should not be used in custom layout updates.","Helper Attribute sollten nicht in Custom Layout Updates genutzt werden."
|
419 |
+
"Helper for options rendering doesn't implement required interface.","Helper für Optionsrendering implementiert nicht das erforderliche Interface."
|
420 |
"Home","Startseite"
|
421 |
"ID","ID"
|
422 |
"ID Path","ID Pfad"
|
429 |
"Images (.gif, .jpg, .png)","Bilder (.gif, .jpg, .png)"
|
430 |
"Images Cache","Bilder-Cache"
|
431 |
"Import","Import"
|
|
|
|
|
432 |
"Import Service","Import Dienst"
|
433 |
"Import and Export","Import und Export"
|
434 |
"Import and Export Tax Rates","Steuersätze importieren / exportieren"
|
460 |
"Invalid input data for %s => %s rate","Ungültige Eingabedaten für %s => %s Rate"
|
461 |
"Invalid parent block for this block","Ungültiger Elternblock für diesen Block"
|
462 |
"Invalid parent block for this block.","Ungültiger Elternblock für diesen Block."
|
463 |
+
"Invalid sender name ""%s"". Please use only visible characters and spaces.","Ungültiger Sender Name ""%s"". Bitte verwenden Sie ausschließlich sichtbare Zeichen und keine Leerräume."
|
464 |
+
"Invalid timezone","Ungültige Zeitzone"
|
465 |
"Invalidated","Außer Kraft"
|
466 |
"Inventory Stock Status","Lagerbestände"
|
467 |
"Invoice #%s comment added","Rechnung Nr. %s Kommentar hinzugefügt"
|
470 |
"Invoice Totals","Rechnungsgesamtbetrag"
|
471 |
"Invoice canceling error.","Fehler beim Stornieren der Rechnung."
|
472 |
"Invoice capturing error.","Fehler bei Aufnahme der Rechnung."
|
473 |
+
"Invoice voiding error.","Fehler beim Leeren der Rechnung."
|
474 |
"Invoices","Rechnungen"
|
475 |
"Is Closed","geschlossen"
|
476 |
"Issue Number","Vorfallnummer"
|
490 |
"Last Name","Nachname"
|
491 |
"Last Name is required field.","Nachname ist ein Pflichtfeld."
|
492 |
"Last Name:","Nachname:"
|
493 |
+
"Last updated: %s. To refresh last day\'s <a href=""%s"">statistics</a>, click <a href=""%s"">here</a>.","Letztes Update: %s. Zum aktualisieren der <a href=""%s"">Statistik</a>, Klick <a href=""%s"">hier</a>."
|
494 |
"Latest Message:","Letzte Nachricht:"
|
495 |
"Layered Navigation Indices","Filter-Navigation Indizes"
|
496 |
"Layered Navigation Indices were refreshed.","Filternavigation Indezes wurden neu angelegt"
|
503 |
"List Only","Nur Liste"
|
504 |
"Load Template","Vorlage laden"
|
505 |
"Load default template","Standardvorlage laden"
|
506 |
+
"Loading Preview...","Vorschau wird geladen..."
|
507 |
"Loading...","Wird geladen..."
|
508 |
"Local Server","Lokaler Server"
|
509 |
"Local/Remote Server","Lokaler/Entfernter Server"
|
528 |
"Magento™ is a trademark of Magento Inc.<br/>Copyright © %s Magento Inc.","Magento™ ist eine Handelsmarke der Magento Inc.<br/>Copyright © %s Magento Inc."
|
529 |
"Main Tabs","Haupt-Tabs"
|
530 |
"Make Inactive","Deaktivieren"
|
531 |
+
"Make sure that data encoding in the file is consistent and saved in one of supported encodings (UTF-8 or ANSI).","Stellen Sie sicher das die Zeichenkodierung der Dateien beim Speichern einheitlich in einer der unterstützten Formate ist (UTF-8 oder ANSI)."
|
532 |
+
"Make sure that you configure the design settings for the Payflow Link form in your Payflow link account.","Stellen Sie sicher das die Design Einstellungen für das Payflow Link Formular in ihrem Payflow Account eingestellt sind"
|
533 |
"Manage Attribute Sets","Attributsets verwalten"
|
534 |
"Manage Attributes","Attribute verwalten"
|
535 |
"Manage Categories","Kategorien verwalten"
|
540 |
"Manage Stores","Stores verwalten"
|
541 |
"Manage Tax Rules","Steuerregeln verwalten"
|
542 |
"Manage Tax Zones and Rates","Steuerzonen und -sätze verwalten"
|
|
|
|
|
543 |
"Manual","Manuell"
|
544 |
"Matched Expression","Passender Ausdruck"
|
545 |
"Max","Max"
|
585 |
"New Rate","Neuen Satz"
|
586 |
"New Rating","Neue Artikelbewertung anlegen"
|
587 |
"New Review","Neue Kundenmeinung anlegen"
|
588 |
+
"New Role","Neue Berechtigung anlegen"
|
589 |
"New Rule","Neue Regel anlegen"
|
590 |
"New Search","Neue Suche anlegen"
|
591 |
"New Set","Neues Set anlegen"
|
630 |
"Number of records:","Anzahl der Einträge:"
|
631 |
"Old rate:","Alter Kurs:"
|
632 |
"On my website","Auf meiner Website"
|
633 |
+
"Once you log into your Payflow Link account, navigate to the Service Settings - Hosted Checkout Pages - Set Up menu and set the options described below","Sobald Sie sich in Ihren Payflow Link-Account einloggen, gehen Sie zum Menü Service Settings - Hosted Checkout Pages - Set Up und stellen Sie die Optionen wie folgt ein"
|
634 |
+
"One or more media files failed to be synchronized during the media storages syncronization process. Refer to the log file for details.","Eine oder mehrere Mediendateien konnten nicht synchronisiert werden während der Synchronisation des Medienspeichers. Sie finden mehr Details in den Logdateien."
|
635 |
"One or more of the Cache Types are invalidated:","Eine oder mehr Cache-Arten sind außer Kraft:"
|
636 |
"Online Customers","Online-Kunden"
|
637 |
+
"Only attributes with scope ""Global"", input type ""Dropdown"" and Use To Create Configurable Product ""Yes"" are available.","Nur Attribute mit den Einstellungen im Anwendungsbereich "Global", dem Eingabetyp "Dropdown" , um ein konfigurierbares Produkt zu erstellen "Ja" sind verfügbar."
|
638 |
+
"Only custom theme can be deleted","Nur eigene Themes können gelöscht werden"
|
639 |
+
"Only default theme can be reset","Nur das default Theme kann zurückgesetzt werden"
|
640 |
"Only mapped fields","Nur zugeordnete Felder"
|
641 |
"Optional","freiwillig"
|
642 |
"Options","Optionen"
|
643 |
+
"Options menu items","Optionsmenü Einträge"
|
644 |
+
"Order","Bestellung"
|
645 |
"Order #%s","Bestell-Nr. %s"
|
646 |
"Order #%s (%s)","Bestell-Nr. %s (%s)"
|
647 |
"Order Created Date","Bestellerstellungs-Datum"
|
670 |
"Password:","Passwort:"
|
671 |
"Path","Pfad"
|
672 |
"Path:","Pfad:"
|
673 |
+
"Payment method instance is not available.","Zahlmethoden Instanz ist nicht verfügbar."
|
674 |
"Payment method is not available.","Zahlweise ist nicht verfügbar"
|
675 |
"Payment method must be specified.","Zahlweise muß angegeben werden"
|
676 |
"Pending Reviews","Ausstehende Kundenmeinungen"
|
722 |
"Please specify at least start or end date.","Bitte geben Sie mindestens Start- oder Enddatum an."
|
723 |
"Please specify the admin custom URL.","Bitte geben Sie die individuelle Admin URL an."
|
724 |
"Please try to logout and sign in again.","Bitte versuchen Sie sich ein und wieder aus zu loggen."
|
725 |
+
"Please use in this field only ""a-z,0-9,_"".","Bitte verwenden Sie in diesem Feld nur "a-z,0-9,_""."
|
726 |
"Please use letters only (a-z) in this field.","Bitte nur Buchstaben (a-z) in diesem Feld benutzen."
|
727 |
+
"Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.","Bitte verwenden Sie nur Ganzzahlen in diesem Feld. Bitte vermeiden Sie Leerräume wie auch Punkte und Komma."
|
728 |
"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte nur Buchstaben (a-z) oder Zahlen (0-9) in diesem Feld verwenden. Es sind keine Leerzeichen oder andere Zeichen erlaubt."
|
729 |
"Please use only letters (a-z) or numbers (0-9) or spaces and # only in this field.","Bitte nur Buchstaben (a-z), Zahlen (0-9) oder Leerzeichen und # in diesem Feld verwenden."
|
730 |
"Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.","Bitte benutzen Sie dieses Datumsformat: tt/mm/jjjj. Zum Beispiel 17/03/2006 für den 17. März 2006."
|
732 |
"Please wait, loading...","Bitte warten, wird geladen..."
|
733 |
"Please wait...","Bitte warten..."
|
734 |
"Please, add some answers to this poll first.","Bitte fügen Sie erst ein paar Antworten zu dieser Umfrage hinzu"
|
735 |
+
"Please, select ""Visible in Stores"" for this poll first.","Bitte wählen Sie für diese Umfrage zuerst ""Sichtbar in Store""."
|
736 |
"Poll Manager","Umfrageverwaltung"
|
737 |
"Polls","Umfragen"
|
738 |
"Popular","Beliebt"
|
744 |
"Preview","Vorschau"
|
745 |
"Preview Template","Vorlagenvorschau"
|
746 |
"Previous page","Vorherige Seite"
|
|
|
747 |
"Price alert subscription was saved.","Preisbenachrichtigung wurde gespeichert"
|
748 |
"Price:","Preis:"
|
749 |
"Processed <strong>%s%% %s/%d</strong> records","<strong>%s%% %s/%d</strong> Einträge verarbeiten"
|
752 |
"Product Name3 1","Artikelname3 1"
|
753 |
"Product Name3 2","Artikelname3 2"
|
754 |
"Product Reviews","Artikelbewertungen"
|
755 |
+
"Product Tax Classes","Artikelsteuerklasse"
|
756 |
"Product Thumbnail Itself","Vorschaubild"
|
757 |
"Product is not loaded.","Artikel nicht geladen."
|
758 |
"Product:","Artikel:"
|
773 |
"Promo","Aktion"
|
774 |
"Promotions","Preisregeln"
|
775 |
"Purchased Item","Gekaufter Artikel"
|
|
|
776 |
"Qty:","Menge"
|
777 |
"Quantity","Menge"
|
778 |
"Queue Refresh","Aktualisierung anstoßen"
|
807 |
"Required settings","Pflichteinstellungen"
|
808 |
"Reset","Zurücksetzen"
|
809 |
"Reset Filter","Filter zurücksetzen"
|
810 |
+
"Reset theme to default","Theme auf default zurücksetzen"
|
811 |
"Resize","Größenanpassung"
|
812 |
"Resource Access","Quellenzugriff"
|
813 |
"Resources","Quelle"
|
844 |
"Save","Speichern"
|
845 |
"Save & Generate","Speichern & Erstellen"
|
846 |
"Save Account","Benutzerkonto speichern"
|
847 |
+
"Save As","Speichern als"
|
848 |
"Save Cache Settings","Cache-Einstellungen speicherns"
|
849 |
"Save Config","Konfiguration speichern"
|
850 |
"Save Currency Rates","Währungskurse speichern"
|
851 |
"Save Profile","Profil speichern"
|
852 |
"Save Role","Gruppenberechtigung speichern"
|
853 |
"Save Template","Vorlage speichern"
|
854 |
+
"Save Theme","Theme speichern"
|
855 |
"Save User","Benutzer speichern"
|
856 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
857 |
"Screens:","Ansichten"
|
864 |
"Select Category","Kategorie auswählen"
|
865 |
"Select Date","Datum wählen"
|
866 |
"Select Range","Zeitraum auswählen"
|
|
|
867 |
"Select Visible","Sichtbare wählen"
|
868 |
"Select date","Datum auswählen"
|
869 |
+
"Selected allowed currency ""%s"" is not available in installed currencies.","Ausgewählte erlaubte Währung ""%s"" ist nicht verfügbar in den installierten Währungen."
|
870 |
"Selected base currency is not available in installed currencies.","Ausgewählte Basiswährung ist nicht verfügbar in den installierten Währungen."
|
871 |
+
"Selected default display currency is not available in allowed currencies.","Standard Anzeigewährung ""%s"" ist nicht Teil der verfügbaren Währungen"
|
872 |
+
"Selected default display currency is not available in installed currencies.","Standard Anzeigewährung ""%s"" ist nicht Teil der eingestellten Währungen"
|
873 |
+
"Self-assigned roles cannot be deleted.","Selbst zugewiesene Berechtigungen können nicht gelöscht werden."
|
874 |
"Sender","Absender"
|
875 |
"Separate Email","Seperate E-Mail"
|
876 |
"Shipment #%s comment added","Versand Nr. %s Kommentar hinzugefügt"
|
893 |
"Show Report For","Zeige Bericht für"
|
894 |
"Show Reviews","Kundenmeinungen anzeigen"
|
895 |
"Show confirmation page: ","Konfigurationsseite anzeigen"
|
896 |
+
"Silent Post URL:","Stille Post URL:"
|
897 |
"Sitemap Information","Sitemap Informationen"
|
898 |
"Size for %s","Größe für %s"
|
899 |
"Skip Category Selection","Kategorieauswahl überspringen"
|
900 |
"Some items in this order have different invoice and shipment types. You can create shipment only after the invoice is created.","Einige Artikel in dieser Bestellung haben unterschiedliche Rechnungs- und Versandarten. Sie können den Versand erst nach Erstellung der Rechnung erstellen."
|
901 |
"Some of the ordered items do not exist in the catalog anymore and will be removed if you try to edit the order.","Einige der bestellten Artikel sind im System nicht mehr verfügbar und werden beim Bearbeiten der Bestellung entfernt."
|
|
|
902 |
"Sorry, this feature is coming soon...","Entschuldigung, diese Funktion kommt bald..."
|
903 |
"Sort Order","Reihenfolge"
|
904 |
"Special Price:","Sonderpreis:"
|
964 |
"The Layered Navigation indexing has been queued.","Die Warteschlange der Indexierung der Filterbaren Navigation wurde angestoßen."
|
965 |
"The Layered Navigation indexing queue has been canceled.","Die Warteschlange der Indexierung der Filterbaren Navigation wurde abgebrochen."
|
966 |
"The Layered Navigation indices were refreshed.","Die Filternavigation Indizes wurden aktualisiert."
|
967 |
+
"The Layered Navigation process has been queued to be killed.","Der Layered Navigation-Vorgang wurde zum Beenden in die Warteschlange gestellt."
|
968 |
"The Magento cache storage has been flushed.","Die Magento Cache-Lagerung wurde geleert."
|
969 |
"The URL Rewrite has been deleted.","URL Rewrite wurde gelöscht."
|
970 |
"The URL Rewrite has been saved.","URL Rewrite wurde gespeichert."
|
971 |
"The account has been saved.","Das Konto wurde gespeichert."
|
972 |
+
"The archive can be uncompressed with <a href=""%s"">%s</a> on Windows systems","Das Archiv kann auf Windows Systemen mit <a href=""%s"">%s</a> entpackt werden"
|
973 |
"The attribute set has been removed.","Das Attribut-Set wurde gelöscht."
|
974 |
"The backup has been created.","Die Sicherung wurde angelegt."
|
975 |
+
"The billing agreement has been canceled.","Die Zahlungsvereinbarung wurde storniert."
|
976 |
+
"The billing agreement has been deleted.","Die Zahlungsvereinbarung wurde gelöscht."
|
977 |
"The cache storage has been flushed.","Die Cache-Lagerung wurde geleert."
|
978 |
"The card has failed verification with the issuer bank.","Die Karte hat die Überprüfung mit der ausstellenden Bank nicht bestanden."
|
979 |
"The carrier needs to be specified.","Der Beförderer muss spezifiziert werden."
|
998 |
"The image cache was cleared.","Der Bildercache wurde geleert."
|
999 |
"The information in this tab has been changed.","Die Informationen in diesem Tab wurden geändert."
|
1000 |
"The invoice and shipment have been created.","Die Rechnung und der Versand wurden angelegt."
|
1001 |
+
"The invoice and the shipment have been created. The shipping label cannot be created at the moment.","Rechnung und Versand wurden erstellt. Das Versandetikett kann derzeit nicht erstellt werden."
|
1002 |
"The invoice has been canceled.","Die Rechnung wurde storniert."
|
1003 |
"The invoice has been captured.","Die Rechnung wurde erfasst."
|
1004 |
"The invoice has been created.","Die Rechnung wurde erstellt."
|
1012 |
"The profile has been saved.","Das Profil wurde gespeichert."
|
1013 |
"The profile has been updated.","Das Profil wurde aktualisiert."
|
1014 |
"The profile has no changes.","Das Profil hat keine Veränderungen."
|
1015 |
+
"The profile you are trying to save no longer exists","Das Profil was du versuchst abzuspeichern existiert nicht mehr"
|
1016 |
"The rating has been deleted.","Die Bewertung wurde gelöscht."
|
1017 |
"The rating has been saved.","Die Bewertung wurde gespeichert."
|
1018 |
+
"The role has been deleted.","Die Berechtigung wurde gelöscht."
|
1019 |
+
"The role has been saved.","Die Berechtigung wurde gespeichert."
|
1020 |
+
"The role has been successfully saved.","Die Berechtigung wurde erfolgreich gespeichert."
|
1021 |
"The search index has been rebuilt.","Der Suchindex wurde neu aufgebaut."
|
1022 |
"The shipment has been created.","Der Versand wurde angelegt."
|
1023 |
+
"The shipment has been created. The shipping label has been created.","Der Versand wurde angelegt. Das Versandetikett wurde erstellt"
|
1024 |
"The shipment has been sent.","Versandmitteilung wurde versandt."
|
1025 |
"The tag has been deleted.","Das Tag wurde gelöscht."
|
1026 |
"The tag has been saved.","Das Tag wurde gespeichert."
|
1027 |
"The user has been deleted.","Der Nutzer wurde gelöscht."
|
1028 |
"The user has been saved.","Der Nutzer wurde gespeichert."
|
1029 |
+
"Theme configurations are successfully reset.","Theme Konfiguration erfolgreich zurückgesetzt"
|
1030 |
+
"Theme label can\'t be empty","Theme Label kann nicht leer sein"
|
1031 |
+
"Theme label:","Theme Label:"
|
1032 |
"Themes JavaScript and CSS files combined to one file.","Theme JavaScript und CSS Dateien kombiniert zu einer Datei."
|
1033 |
"There has been wrong payment information submitted or time limit has expired. Please, try again.","Falsche Zahlungsinformation übermittelt oder Zeitlimit überschritten. Bitte versuchen Sie es erneut."
|
1034 |
"There is an error in one of the option rows.","Ein Fehler in einer der Optionszeilen."
|
1035 |
"This Account is","Dieses Konto ist"
|
1036 |
"This Email template no longer exists.","Diese E-Mail Vorlage existiert nicht mehr."
|
1037 |
"This Role no longer exists","Diese Gruppenberechtigung existiert nicht mehr"
|
1038 |
+
"This Role no longer exists.","Diese Berechtigung existiert nicht mehr."
|
1039 |
"This account is","Dieses Benutzerkonto ist"
|
1040 |
"This account is inactive.","Dieses Benutzerkonto ist inaktiv."
|
1041 |
"This attribute set does not have attributes which we can use for configurable product","Dieses Attributset besitzt keine Attribute, die für einen konfigurierbarer Artikel verwendet werden können."
|
1054 |
"Timeout limit for response from synchronize process was reached.","Timeout Limit für Antwort vom Synchronisierungsprozess überschritten."
|
1055 |
"Title bar","Title Leiste"
|
1056 |
"To","Bis"
|
1057 |
+
"To cancel pending authorizations and release amounts that have already been processed during this payment, click Cancel.","Zum Abbrechen anhängiger Genehmigungen und zur Freigabe von Beträge, die bereits während dieser Zahlung bearbeitet wurden, klicken Sie auf Abbrechen."
|
1058 |
+
"To use Payflow Link, you must configure your Payflow Link account on the Paypal website.","Um den Payflow Link zu benutzen, müssen Sie Ihr Payflow Link-Konto auf der Paypal-Website konfigurieren."
|
1059 |
"Toggle Editor","Editor umschalten"
|
1060 |
"Tools","Werkzeuge"
|
1061 |
"Top 5 Search Terms","Top 5 Suchbegriffe"
|
1071 |
"Track this shipment","Sendung verfolgen"
|
1072 |
"Tracking number %s for %s assigned","Trackingnummer %s für %s zugewiesen"
|
1073 |
"Tracking number cannot be empty.","Trackingnummer darf nicht leer sein."
|
1074 |
+
"Transaction Data","Transaktionsdaten"
|
1075 |
+
"Transaction Details","Transaktionsdetails"
|
1076 |
+
"Transaction ID","Transaktionsnummer"
|
1077 |
+
"Transaction Type","Transaktionsart"
|
1078 |
"Transactional Emails","Transaktions-E-Mails"
|
1079 |
"Transactions","Transaktionen"
|
1080 |
"Try Magento Go for Free","Magento Go kostenfrei testen"
|
1116 |
"Use Default","Standard verwenden"
|
1117 |
"Use Default Value","Verwende Standardwert"
|
1118 |
"Use Default Variable Values","Verwende Standard Variablen-Werte"
|
1119 |
+
"Use Silent Post:","Stillen Post verwenden:"
|
1120 |
"Use Website","Website verwenden"
|
1121 |
"Used Currently For","Aktuell genutzt für"
|
1122 |
"Used as Default For","Genutzt als Standard für"
|
1158 |
"Warning! Empty value can cause problems with CSV format.","Achtung! Leerer Wert kann Fehler in CSV-Dateien verursachen."
|
1159 |
"Warning!\r\nThis action will remove this user from already assigned role\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diesen Benutzer von einer bereits zugewiesenen Gruppenberechtigung entfernen\r\nSind Sie sicher?"
|
1160 |
"Warning!\r\nThis action will remove those users from already assigned roles\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diese Benutzer von einer bereits zugewiesenen Gruppenberechtigung entfernen\r\nSind Sie sicher?"
|
1161 |
+
"Warning: All related AirMail messages will be deteted!\n Are you sure you want to do this?","Warnung: Alle zusammengehörigen AirMail Nachrichten werden gelöscht\n Sind Sie sich sicher bei der Sache?"
|
1162 |
"Warning: Please do not close the window during importing/exporting data","Warnung: Bitte schließen Sie das Fenster nicht während des Import-/Export Vorgangs"
|
1163 |
"Watermark File for %s","Wasserzeichen Datei für %s"
|
1164 |
+
"We appreciate our merchants\' feedback, please <a href=""#"" onclick=""surveyAction(\'yes\'); return false;"">take our survey</a> to provide insight on the features you would like included in Magento. <a href=""#"" onclick=""surveyAction(\'no\'); return false;"">Remove this notification</a>","Die Meinung unserer Kunden ist uns wichtig, bitte <a href=#"" onclick=""surveyAction(\'yes\'); return false;"">nehmen Sie an unserer Umfrage teil</a> um Wünsche zu äußern"
|
1165 |
"We detected that your JavaScript seem to be disabled.","Javascript scheint in Ihrem Browser deaktiviert zu sein."
|
1166 |
"We\'re in our typing table, coding away more features for Magento. Thank you for your patience.","Wir arbeiten daran. Vielen Dank für Ihre Geduld."
|
1167 |
"Web Section","Web"
|
1171 |
"What is this?","Was ist das?"
|
1172 |
"Wishlist Report","Wunschliste Bericht"
|
1173 |
"Wishlist item is not loaded.","Wunschzettel Artikel nicht geladen."
|
1174 |
+
"Wrong billing agreement ID specified.","Falsche Zahlungsvereinbarung ID spezifiziert."
|
1175 |
"Wrong column format.","Falsches Spalten-Format"
|
1176 |
"Wrong newsletter template.","Falsche Newsletter Vorlage."
|
1177 |
+
"Wrong quote item.","Falscher Quote Artikel."
|
1178 |
"Wrong tab configuration.","Falsche Tab Konfiguration"
|
1179 |
"Wrong tag was specified.","Falsches Schlagwort spezifiziert."
|
1180 |
+
"Wrong transaction ID specified.","Falsche Transaktionsnummer spezifiziert."
|
1181 |
"XML","XML"
|
1182 |
+
"XML data is invalid.","XML Daten sind ungültig"
|
1183 |
+
"XML object is not instance of ""Varien_Simplexml_Element"".","XML Objekt ist keine Instanz von ""Varien_Simplexml_Element""."
|
1184 |
"YTD","Seit Jahresbeginn"
|
1185 |
"Year","Jahr"
|
1186 |
"Yes","Ja"
|
1187 |
+
"Yes (301 Moved Permanently)","Ja (301 Moved Permanently)"
|
1188 |
+
"Yes (302 Found)","Ja (302 Found)"
|
1189 |
"Yes (only price with tax)","Ja (nur Preis mit Steuer)"
|
1190 |
"You cannot delete your own account.","Sie können Ihr eigenes Konto nicht löschen."
|
1191 |
"You have %s unread message(s).","Sie haben %s ungelesene Nachricht(en)."
|
1204 |
"[WEBSITE]","[WEBSITE]"
|
1205 |
"b","B"
|
1206 |
"close","schließen"
|
1207 |
+
"critical","kritische"
|
1208 |
+
"example: ""sitemap/"" or ""/"" for base path (path must be writeable)","Beispiel: ""sitemap/"" oder ""/"" für den Basispfad (Pfad muss beschreibbar sein)"
|
1209 |
"example: sitemap.xml","Beispiel: sitemap.xml"
|
1210 |
"from","von"
|
|
|
1211 |
"items selected","Artikel ausgewählt"
|
1212 |
+
"major","sehr wichtige"
|
1213 |
+
"minor","weniger wichtige"
|
1214 |
+
"notice","unwichtige"
|
1215 |
"of %s pages","von %s Seiten"
|
1216 |
"per page","pro Seite"
|
|
|
1217 |
"store(%s) scope","Store(%s) Gültigkeit"
|
1218 |
"to","bis"
|
1219 |
"website(%s) scope","Website(%s) Gültigkeit"
|
1220 |
+
"{{base_url}} is not recommended to use in a production environment to declare the Base Unsecure URL / Base Secure URL. It is highly recommended to change this value in your Magento <a href=""%s"">configuration</a>.","{{base_url}} wird nicht in Produktivumgebungen empfohlen um Base Unsecure Url / Base Secure Url zu bestimmen. Es wird dringend empfohlen, diesen Wert in der Magento <a href=""%s"">Konfiguration</a> zu ändern."
|
app/locale/de_DE/Mage_Api.csv
CHANGED
@@ -1,8 +1,9 @@
|
|
1 |
" and "," und "
|
2 |
-
" note that the URLs provided below are the correct values for your current website): ","
|
3 |
-
"(
|
4 |
"(For US 2-letter state names)","(Für USA 2-Zeichen Staatennamen)"
|
5 |
"(If left empty will be auto-generated)","(Wird autoamtisch erzeugt, wenn leer gelassen)"
|
|
|
6 |
"(Leave empty for first spreadsheet)","(Leerlassen für erstes Tabellenblatt)"
|
7 |
"(Products will be added/updated to this store if 'store' column is blank or missing in the import file.)","(Artikel werden in diesem Store hinzufügt/aktualisiert, wenn 'store' Spalte in der Importdatei leer oder nicht vorhanden ist.)"
|
8 |
"(Shift-)Click or drag to change value","(Umschalt-)Klick oder ziehen, um Wert zu ändern"
|
@@ -16,10 +17,11 @@
|
|
16 |
"- Use the %s, %s buttons to select year","- Benutzen Sie die %s Buttons für die Jahresauswahl"
|
17 |
"- or Shift-click to decrease it","- oder Umschalt-Taste gedrückt halten und klicken, um den Wert zu verkleinern"
|
18 |
"- or click and drag for faster selection.","- oder klicken und ziehen Sie für eine Schnellauswahl."
|
19 |
-
"-- Please Select Billing Agreement--","-- Bitte wählen Sie eine
|
20 |
"10:40 AM","10:40 AM"
|
21 |
"80px x 80px","80px x 80px"
|
22 |
-
"80x80 px","
|
|
|
23 |
"About the calendar","Über den Kalender"
|
24 |
"Access denied.","Zugriff verweigert."
|
25 |
"Account Created in:","Kundenkonto angelegt in:"
|
@@ -30,8 +32,7 @@
|
|
30 |
"Activate","Aktivieren"
|
31 |
"Add Contents Path","Inhaltspfad hinzufügen"
|
32 |
"Add Field with URL:","Feld mit URL hinzufügen"
|
33 |
-
"Add
|
34 |
-
"Add New Role","Neue Aufgabenrolle hinzufügen"
|
35 |
"Add New User","Neuen Benutzer hinzufügen"
|
36 |
"Add PHP Extension dependency","PHP-Erweiterung-Abhängigkeit hinzufügen"
|
37 |
"Add Package dependency","Paket-Abhängigkeit hinzufügen"
|
@@ -42,15 +43,17 @@
|
|
42 |
"All","Alle"
|
43 |
"All Websites","Alle Websites"
|
44 |
"All fields","Alle Felder"
|
45 |
-
"
|
46 |
"Archive file name:","Archivdateiname:"
|
47 |
"Are you sure that you want to delete this template?","Sind Sie sicher, dass Sie dieses Template löschen möchten?"
|
48 |
"Are you sure that you want to strip tags?","Sind Sie sicher, dass Sie Tags löschen möchten?"
|
|
|
49 |
"As low as:","So niedrig wie"
|
50 |
"Attribute Set Name:","Attributsetname:"
|
51 |
"Attributes","Attribute"
|
52 |
"Authors","Autoren"
|
53 |
"Available Products","Verfügbare Artikel"
|
|
|
54 |
"Back","Zurück"
|
55 |
"Big Image","Großes Bild"
|
56 |
"Billing Address","Rechnungsanschrift"
|
@@ -58,6 +61,7 @@
|
|
58 |
"Bundle Items","Artikel zusammenfügen"
|
59 |
"Bundle with dynamic pricing cannot include custom defined options. Options will not be saved.","Bündelung mit dynamischem Preis kann keine Sonderoptionen enthalten. Optionen werden nicht gespeichert."
|
60 |
"CSV / Tab separated","CSV / Tabulator getrennt"
|
|
|
61 |
"Cancel URL: ","Stornierungs-URL"
|
62 |
"Card Verification Number","Kartenprüfnummer"
|
63 |
"Carrier","Beförderer"
|
@@ -68,10 +72,9 @@
|
|
68 |
"Child Transactions","Kind-Transaktionen"
|
69 |
"Choose Store View","StoreView wählen"
|
70 |
"Choose a selection...","Treffen Sie eine Auswahl..."
|
71 |
-
"Clear","
|
72 |
"Client Session Timeout (sec.)","Client Session Zeitüberschreitung (Sek.)"
|
73 |
"Close","Schließen"
|
74 |
-
"Comments History","Kommentarverlauf"
|
75 |
"Confirmed email:","Bestätigte E-Mail-Adresse:"
|
76 |
"Connect with the Magento Community","Mit Magento Community verbinden"
|
77 |
"Contents","Inhalte"
|
@@ -87,7 +90,6 @@
|
|
87 |
"Credit Memo Totals","Gesamtgutschriften"
|
88 |
"Current Configuration Scope:","Aktueller Geltungsbereich:"
|
89 |
"Custom","Spezifisch"
|
90 |
-
"Custom Colors","Individuelle Farben"
|
91 |
"Customer","Kunde"
|
92 |
"Customer Group:","Kundengruppe:"
|
93 |
"Customer Since:","Kunde seit:"
|
@@ -101,22 +103,24 @@
|
|
101 |
"Decimal separator:","Dezimaltrennzeichen:"
|
102 |
"Default (Admin) Values","Standard (Admin) Werte"
|
103 |
"Default Billing Address","Standard Rechnungsadresse"
|
104 |
-
"Default Response Charset","
|
105 |
"Default Values","Standardwerte"
|
106 |
"Delete","Löschen"
|
|
|
|
|
107 |
"Direction:","Richtung:"
|
108 |
"Display %s first","Zeige %s zuerst"
|
109 |
"Distributed under GNU LGPL. See %s for details.","Veröffentlicht unter der GNU LGPL. Mehr Informationen unter %s."
|
110 |
"Do not enable AVS or CSC options. The do not work when using Payflow Link Silent Mode.","Do not enable AVS or CSC options. The do not work when using Payflow Link Silent Mode."
|
111 |
-
"Do not set any fields in the Billing and Shipping Information block as editable in your Payflow accout.","
|
112 |
"Drag to move","Ziehen zum Bewegen"
|
113 |
"Edit Filter","Filter bearbeiten"
|
114 |
-
"Edit Role","
|
115 |
"Edit User '%s'","Benutzer '%s' bearbeiten"
|
116 |
"Email","E-Mail"
|
117 |
"Email Preview","E-Mail Vorschau"
|
118 |
"Email:","E-Mail:"
|
119 |
-
"Enable Secure Token:","
|
120 |
"Enclose Values In:","Werte innerhalb von:"
|
121 |
"Entity Attributes","Entitäts-Attribute"
|
122 |
"Entity type:","Entitätentyp:"
|
@@ -124,7 +128,6 @@
|
|
124 |
"Expiration Date","Ablaufdatum"
|
125 |
"Expiration Date: %s/%s","Ablaufdatum: %s/%s"
|
126 |
"Export","Export"
|
127 |
-
"Export FAQ","Export FAQ"
|
128 |
"Export Filters","Export Filter"
|
129 |
"Export to:","Export nach:"
|
130 |
"Export:","Export:"
|
@@ -134,9 +137,9 @@
|
|
134 |
"FTP Host[:Port]","FTP Server[:Port]"
|
135 |
"Field Mapping","Feldzuordnung"
|
136 |
"File Information","Dateiinformationen"
|
|
|
137 |
"File name:","Dateiname:"
|
138 |
"Files","Dateien"
|
139 |
-
"Final Price","Gesamtpreis"
|
140 |
"Finished profile execution.","Profilausführung abgeschlossen."
|
141 |
"First Name:","Vorname:"
|
142 |
"For latest version visit: %s","Für die letzte Version besuchen Sie bitte: %s"
|
@@ -151,13 +154,11 @@
|
|
151 |
"Google Base Items","Google Base Artikel"
|
152 |
"Group:","Gruppe:"
|
153 |
"Help Us Keep Magento Healthy - Report All Bugs","Helfen Sie uns Magento gesund zu halten - Melden Sie alle Fehler"
|
154 |
-
"Home","
|
155 |
-
"If your Magento instance is used for multiple websites, you must configure a separate Payflow Link account for each website.","
|
156 |
"Ignore","Ignorieren"
|
157 |
"Images","Bilder"
|
158 |
"Import","Import"
|
159 |
-
"Import / Export FAQ (Frequently Asked Questions)","Import / Export FAQ (Frequently Asked Questions)"
|
160 |
-
"Import FAQ","Import FAQ"
|
161 |
"Import Service","Import Service"
|
162 |
"Important: ","Wichtig: "
|
163 |
"In Database:","In Datenbank:"
|
@@ -184,7 +185,8 @@
|
|
184 |
"Last Name:","Nachname:"
|
185 |
"Latest Message:","Aktuellste Nachricht:"
|
186 |
"Leave empty to use tax identifier","Leerlassen um Steuerbezeichnung zu verwenden"
|
187 |
-
"Links with associated products will retain only after saving current product.","Links
|
|
|
188 |
"Loading...","Lade..."
|
189 |
"Local Server","Lokaler Server"
|
190 |
"Local/Remote Server","Lokaler/Entfernter Server"
|
@@ -192,15 +194,15 @@
|
|
192 |
"Log Out","Abmelden"
|
193 |
"Logged in as %s","Angemeldet als %s"
|
194 |
"MS Excel XML","MS Excel XML"
|
195 |
-
"Magento Core
|
196 |
-
"Magento Core
|
197 |
"Magento Logo","Magento Logo"
|
198 |
"Magento ver. %s","Magento Version. %s"
|
199 |
"Magento™ is a trademark of Magento Inc.<br/>Copyright © %s Magento Inc.","Magento™ ist eine Handelsmarke der Magento Inc.<br/>Copyright © %s Magento Inc."
|
200 |
"Main Tabs","Haupt Tabs"
|
201 |
"Make Inactive","Inaktiv machen"
|
202 |
"Make sure that data encoding in the file is consistent and saved in one of supported encodings (UTF-8 or ANSI).","Make sure that data encoding in the file is consistent and saved in one of supported encodings (UTF-8 or ANSI)."
|
203 |
-
"Make sure that you configure the design settings for the Payflow Link form in your Payflow link account.","
|
204 |
"Manage Stores","Stores verwalten"
|
205 |
"Max","Max"
|
206 |
"Min","Min"
|
@@ -222,19 +224,20 @@
|
|
222 |
"Note:","Hinweis:"
|
223 |
"Number of records:","Anzahl der Einträge:"
|
224 |
"Old rate:","Alter Kurs:"
|
225 |
-
"On my website","
|
226 |
-
"Once you log into your Payflow Link account, navigate to the Service Settings - Hosted Checkout Pages - Set Up menu and set the options described below","
|
|
|
|
|
227 |
"Only mapped fields","Nur zugewiesene Felder"
|
228 |
-
"Options menu items","
|
229 |
"Order ID","Bestellung ID"
|
230 |
-
"Order Totals","Gesamtsummen der Bestellung"
|
231 |
"Order cannot be placed.","Bestellung kann nicht angelegt werden."
|
232 |
"Original Magento attribute names in first row:","Original Magento Attributnamen in erster Zeile:"
|
233 |
"Out of stock","Ausverkauft"
|
234 |
"Package","Paket"
|
235 |
"Packages","Pakete"
|
236 |
"Page","Seite"
|
237 |
-
"Parent Transaction ID","
|
238 |
"Passive mode","Passivmodus"
|
239 |
"Password","Passwort"
|
240 |
"Path","Pfad"
|
@@ -259,7 +262,7 @@
|
|
259 |
"Please enter a valid value, ex: 10,20,30","Bitte geben Sie einen gültigen Wert ein, beispielsweise 10,20,30"
|
260 |
"Please enter a valid zip code.","Bitte geben Sie eine gültige PLZ ein."
|
261 |
"Please enter a valid zip code. For example 90602 or 90602-1234.","Bitte geben Sie eine gültige PLZ ein, beispielsweise 12345."
|
262 |
-
"Please enter another credit card number to complete your purchase.","
|
263 |
"Please enter valid password.","Bitte geben Sie ein gültiges Passwort ein."
|
264 |
"Please make sure that your changes were saved before running the profile.","Bitte stellen Sie sicher, dass die Änderungen vor Ausführen des Profiles gespeichert wurden."
|
265 |
"Please make sure your passwords match.","Bitte achten Sie darauf, dass die beiden Passworte übereinstimmen."
|
@@ -267,9 +270,9 @@
|
|
267 |
"Please select an option.","Bitte wählen Sie eine Option."
|
268 |
"Please select one of the above options.","Bitte wählen Sie eine der oben gezeigten Optionen."
|
269 |
"Please select one of the options.","Bitte wählen Sie eine der Optionen."
|
270 |
-
"Please use in this field only "a-z,0-9,_".","Bitte verwenden Sie in diesem Feld nur "a-z,0-9
|
271 |
"Please use letters only (a-z) in this field.","Bitte verwenden Sie in diesem Feld nur Buchstaben (a-z)."
|
272 |
-
"Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.","
|
273 |
"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte verwenden Sie in diesem Feld nur Buchstaben (a-z) oder Ziffern (0-9), vermeiden Sie Leerzeichen oder andere nicht erlaubte Zeichen."
|
274 |
"Please use only letters (a-z) or numbers (0-9) or spaces and # only in this field.","Bitte verwenden Sie in diesem Feld nur Buchstaben (a-z), Ziffern (0-9) oder Leerzeichen und # (Raute)."
|
275 |
"Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.","Bitte verwenden Sie folgendes Datumsformat: dd/mm/yyyy, beispielsweise 17/03/2006 für den 17. März 2006."
|
@@ -280,15 +283,12 @@
|
|
280 |
"Prev. year (hold for menu)","Vor. Jahr (gedrückt halten für Menü)"
|
281 |
"Preview","Vorschau"
|
282 |
"Previous page","Vorige Seite"
|
283 |
-
"Price","Preis"
|
284 |
"Price:","Preis:"
|
285 |
-
"Product","Artikel"
|
286 |
"Product Name3 ","Artikel Name3 "
|
287 |
"Product Name3 1","Artikel Name3 1"
|
288 |
"Product Name3 2","Artikel Name3 2"
|
289 |
"Products","Artikel"
|
290 |
"Profile Information","Profilinformation"
|
291 |
-
"Qty","Menge"
|
292 |
"Qty:","Menge"
|
293 |
"Read details","Details lesen"
|
294 |
"Reference ID","Referenz ID"
|
@@ -296,23 +296,22 @@
|
|
296 |
"Remote FTP","Entferntes FTP"
|
297 |
"Remove","Entfernen"
|
298 |
"Required settings","Pflichteinstellungen"
|
299 |
-
"Reset","
|
300 |
-
"Reset Successful","Zurücksetzen erfolgreich"
|
301 |
"Resource Access","Resourceen Zugriff"
|
302 |
"Resources","Resourcen"
|
303 |
"Return URL: ","Rückkehr URL: "
|
304 |
-
"Role Users","
|
305 |
-
"Roles","
|
306 |
-
"Roles Resources","
|
307 |
-
"SKU","Artikelnummer"
|
308 |
"SKU:","Artikelnummer:"
|
309 |
"SORT BY:","Sortieren nach:"
|
|
|
|
|
310 |
"Save Theme","Theme speichern"
|
311 |
"Screens:","Ansichten:"
|
312 |
"Select All","Alle auswählen"
|
313 |
"Select Date","Datum auswählen"
|
314 |
"Select Range","Zeiraum auswählen"
|
315 |
-
"Select Template","Vorlage auswählen"
|
316 |
"Select Visible","Sichtbarkeit auswählen"
|
317 |
"Select date","Datum auswählen"
|
318 |
"Shipment Comments","Versandkommentare"
|
@@ -325,7 +324,6 @@
|
|
325 |
"Show confirmation page: ","Konfigurationsseite anzeigen:"
|
326 |
"Silent Post URL:","Silent Post URL:"
|
327 |
"Some items in this order have different invoice and shipment types. You can create shipment only after the invoice is created.","Einige Artikel in dieser Bestellung haben verschiedene Rechnungs- und Versandarten. Sie können den Versand erst starten, wenn die Rechnung erstellt wurde."
|
328 |
-
"Some other FAQ","Some other FAQ"
|
329 |
"Sort Order","Sortierreihenfolge"
|
330 |
"Special Price:","Sonderpreis:"
|
331 |
"Spreadsheet Name:","Tabellenblatt Name:"
|
@@ -348,11 +346,12 @@
|
|
348 |
"T-Shirts","T-Shirts"
|
349 |
"Target","Ziel"
|
350 |
"Tell a Friend","Einem Freund empfehlen"
|
351 |
-
"Template Name","Name der Vorlage"
|
352 |
"The card has failed verification with the issuer bank.","The card has failed verification with the issuer bank."
|
353 |
"The information in this tab has been changed.","Die Angaben in diesem Tab wurden geändert."
|
354 |
-
"Theme
|
355 |
-
"
|
|
|
|
|
356 |
"This is a demo store. Any orders placed through this store will not be honored or fulfilled.","Dies ist eine Demo-Installation. Jegliche Bestellung in diesem Shop wird weder beachtet noch ausgeführt."
|
357 |
"This is a required field.","Dies ist eine Pflichtangabe."
|
358 |
"This tab contains invalid data. Please solve the problem before saving.","Dieses Tab enthält ungültige Daten. Bitte korrigieren Sie dies vor dem Speichern."
|
@@ -362,14 +361,14 @@
|
|
362 |
"Title bar","Titel Leiste"
|
363 |
"To","An"
|
364 |
"To cancel pending authorizations and release amounts that have already been processed during this payment, click Cancel.","To cancel pending authorizations and release amounts that have already been processed during this payment, click Cancel."
|
365 |
-
"To use Payflow Link, you must configure your Payflow Link account on the Paypal website.","
|
366 |
"Top 5 Search Terms","Top 5 Suchanfragen"
|
367 |
"Total %d records found","Gesamt %d Einträge gefunden"
|
368 |
"Track Order","Bestellverfolgung"
|
369 |
"Track this shipment","Diesen Versand verfolgen"
|
370 |
"Transaction Data","Transaktions-Daten"
|
371 |
"Transaction Details","Transaktions-Details"
|
372 |
-
"Transaction ID","
|
373 |
"Transaction Type","Transaktions-Art"
|
374 |
"Try Magento Go for Free","Magento Go kostenfrei testen"
|
375 |
"Type","Typ"
|
@@ -382,10 +381,10 @@
|
|
382 |
"Update Preview","Vorschau aktualisieren"
|
383 |
"Updated At","Aktualisiert am"
|
384 |
"Use Default Value","Standardwert verwenden"
|
385 |
-
"Use Silent Post:","
|
386 |
"User","Benutzer"
|
387 |
"User Name","Benutzername"
|
388 |
-
"User Roles","
|
389 |
"User name","Benutzer Name"
|
390 |
"Users","Benutzer"
|
391 |
"Validation Results","Überprüfungs-Ergebnis"
|
@@ -398,6 +397,7 @@
|
|
398 |
"View Gallery","Galerie ansehen"
|
399 |
"View Statistics For","Statistiken für"
|
400 |
"Visibility:","Sichtbarkeit:"
|
|
|
401 |
"Warning! Empty value can cause problems with CSV format.","Warnung! Leerer Weert kann Probleme mit dem CSV-Format verursachen."
|
402 |
"Warning!\r\nThis action will remove this user from already assigned role\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diesen Benutzer von allen bisher zugeteilten Berechtigungen entfernen.\r\nSind sie sicher?"
|
403 |
"Warning!\r\nThis action will remove those users from already assigned roles\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diese Benutzer von allen bisher zugeteilten Berechtigungen entfernen.\r\nSind sie sicher?"
|
@@ -412,7 +412,6 @@
|
|
412 |
"Your server PHP settings allow you to upload files not more than %s at a time. Please modify post_max_size (currently is %s) and upload_max_filesize (currently is %s) values in php.ini if you want to upload larger files.","Ihre PHP Einstellungen auf Ihrem Server unterbindet Uploads von mehr als %s Dateien zur gleichen Zeit. Bitte ändern Sie post_max_size (aktuell %s) und upload_max_filesize (aktuell %s) in der php.ini wenn Sie größere Dateien hochladen möchten."
|
413 |
"Zip/Postal Code:","PLZ:"
|
414 |
"critical","kritisch"
|
415 |
-
"images/logo.gif","images/logo.gif"
|
416 |
"items selected","Elemente ausgewählt"
|
417 |
"major","Versionssprung"
|
418 |
"minor","geringfügig"
|
@@ -420,9 +419,3 @@
|
|
420 |
"of %s pages","von %s Seiten"
|
421 |
"per page","pro Seite"
|
422 |
"to","bis"
|
423 |
-
"Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.","Bitte verwenden Sie in diesem Feld nur Ziffern, vermeiden Sie Leerzeichen oder andere Zeichen wie Komma oder Punkt."
|
424 |
-
"The card has failed verification with issuer bank.","Die Karte hat die Verifikation mit der ausführenden Bank nicht bestanden."
|
425 |
-
"Track order","Bestellung verfolgen"
|
426 |
-
"View Statistics for","Statistiken anzeigen für"
|
427 |
-
"You have","Sie haben"
|
428 |
-
"Your Account has been deactivated.","Ihr Kundenkonto wurde deaktiviert."
|
1 |
" and "," und "
|
2 |
+
" note that the URLs provided below are the correct values for your current website): ","Bitte beachten sie, dass die unten gezeigten URLs die korrekten Werte ihrer aktuellen Webseite angeben): "
|
3 |
+
"(For Type ""Local Server"" need to use relative path to Magento install var/export or var/import, e.g. var/export, var/import, var/export/some/dir, var/import/some/dir)","(Für den Typ ""Lokalen Server"" wird die relative Pfadanganbe zur Magento Instanz var/export oder var/import benötigt, z.B. var/export, var/import, var/export/unter/verzeichnis, var/import/unter/verzeichnis)"
|
4 |
"(For US 2-letter state names)","(Für USA 2-Zeichen Staatennamen)"
|
5 |
"(If left empty will be auto-generated)","(Wird autoamtisch erzeugt, wenn leer gelassen)"
|
6 |
+
"(Includes more countries than those listed below. As the application owner, you are responsible for complying with country-specific laws related to the distribution or sale of your application into that country, including your home country.)","(Dazu gehören weitere Ländern außer den genannten. Als Eigentümer der Anwendung sind sie für die Einhaltung der Rechtsvorschriften ihres Landes hinsichtlich der Verbreitung oder dem Verkauf ihrer Anwendung in jeweiligem Land, einschließlich ihrem Heimatland, selbst verantwortlich.)"
|
7 |
"(Leave empty for first spreadsheet)","(Leerlassen für erstes Tabellenblatt)"
|
8 |
"(Products will be added/updated to this store if 'store' column is blank or missing in the import file.)","(Artikel werden in diesem Store hinzufügt/aktualisiert, wenn 'store' Spalte in der Importdatei leer oder nicht vorhanden ist.)"
|
9 |
"(Shift-)Click or drag to change value","(Umschalt-)Klick oder ziehen, um Wert zu ändern"
|
17 |
"- Use the %s, %s buttons to select year","- Benutzen Sie die %s Buttons für die Jahresauswahl"
|
18 |
"- or Shift-click to decrease it","- oder Umschalt-Taste gedrückt halten und klicken, um den Wert zu verkleinern"
|
19 |
"- or click and drag for faster selection.","- oder klicken und ziehen Sie für eine Schnellauswahl."
|
20 |
+
"-- Please Select Billing Agreement--","-- Bitte wählen Sie eine Zahlungsvereinbarung aus --"
|
21 |
"10:40 AM","10:40 AM"
|
22 |
"80px x 80px","80px x 80px"
|
23 |
+
"80x80 px","80px x 80px"
|
24 |
+
"ASCII","ASCII"
|
25 |
"About the calendar","Über den Kalender"
|
26 |
"Access denied.","Zugriff verweigert."
|
27 |
"Account Created in:","Kundenkonto angelegt in:"
|
32 |
"Activate","Aktivieren"
|
33 |
"Add Contents Path","Inhaltspfad hinzufügen"
|
34 |
"Add Field with URL:","Feld mit URL hinzufügen"
|
35 |
+
"Add New Role","Neue Berechtigung"
|
|
|
36 |
"Add New User","Neuen Benutzer hinzufügen"
|
37 |
"Add PHP Extension dependency","PHP-Erweiterung-Abhängigkeit hinzufügen"
|
38 |
"Add Package dependency","Paket-Abhängigkeit hinzufügen"
|
43 |
"All","Alle"
|
44 |
"All Websites","Alle Websites"
|
45 |
"All fields","Alle Felder"
|
46 |
+
"All locations","Alle Orte"
|
47 |
"Archive file name:","Archivdateiname:"
|
48 |
"Are you sure that you want to delete this template?","Sind Sie sicher, dass Sie dieses Template löschen möchten?"
|
49 |
"Are you sure that you want to strip tags?","Sind Sie sicher, dass Sie Tags löschen möchten?"
|
50 |
+
"Are you sure you want to delete this theme? This change will affect all applications.","Sind Sie sicher das Sie das Theme löschen wollen? Diese Änderung betrifft die ganze Anwendung"
|
51 |
"As low as:","So niedrig wie"
|
52 |
"Attribute Set Name:","Attributsetname:"
|
53 |
"Attributes","Attribute"
|
54 |
"Authors","Autoren"
|
55 |
"Available Products","Verfügbare Artikel"
|
56 |
+
"BINARY","Binär"
|
57 |
"Back","Zurück"
|
58 |
"Big Image","Großes Bild"
|
59 |
"Billing Address","Rechnungsanschrift"
|
61 |
"Bundle Items","Artikel zusammenfügen"
|
62 |
"Bundle with dynamic pricing cannot include custom defined options. Options will not be saved.","Bündelung mit dynamischem Preis kann keine Sonderoptionen enthalten. Optionen werden nicht gespeichert."
|
63 |
"CSV / Tab separated","CSV / Tabulator getrennt"
|
64 |
+
"Cancel","Abbrechen"
|
65 |
"Cancel URL: ","Stornierungs-URL"
|
66 |
"Card Verification Number","Kartenprüfnummer"
|
67 |
"Carrier","Beförderer"
|
72 |
"Child Transactions","Kind-Transaktionen"
|
73 |
"Choose Store View","StoreView wählen"
|
74 |
"Choose a selection...","Treffen Sie eine Auswahl..."
|
75 |
+
"Clear","Leeren"
|
76 |
"Client Session Timeout (sec.)","Client Session Zeitüberschreitung (Sek.)"
|
77 |
"Close","Schließen"
|
|
|
78 |
"Confirmed email:","Bestätigte E-Mail-Adresse:"
|
79 |
"Connect with the Magento Community","Mit Magento Community verbinden"
|
80 |
"Contents","Inhalte"
|
90 |
"Credit Memo Totals","Gesamtgutschriften"
|
91 |
"Current Configuration Scope:","Aktueller Geltungsbereich:"
|
92 |
"Custom","Spezifisch"
|
|
|
93 |
"Customer","Kunde"
|
94 |
"Customer Group:","Kundengruppe:"
|
95 |
"Customer Since:","Kunde seit:"
|
103 |
"Decimal separator:","Dezimaltrennzeichen:"
|
104 |
"Default (Admin) Values","Standard (Admin) Werte"
|
105 |
"Default Billing Address","Standard Rechnungsadresse"
|
106 |
+
"Default Response Charset","Standard-Schriftsatz für Antwort"
|
107 |
"Default Values","Standardwerte"
|
108 |
"Delete","Löschen"
|
109 |
+
"Delete theme","Theme löschen"
|
110 |
+
"Deselect All","Alle abwählen"
|
111 |
"Direction:","Richtung:"
|
112 |
"Display %s first","Zeige %s zuerst"
|
113 |
"Distributed under GNU LGPL. See %s for details.","Veröffentlicht unter der GNU LGPL. Mehr Informationen unter %s."
|
114 |
"Do not enable AVS or CSC options. The do not work when using Payflow Link Silent Mode.","Do not enable AVS or CSC options. The do not work when using Payflow Link Silent Mode."
|
115 |
+
"Do not set any fields in the Billing and Shipping Information block as editable in your Payflow accout.","Stellen Sie keine Felder im Block der Rechnungs-und Versandinformationen in Ihrem Zahlungskonto auf Bearbeiten."
|
116 |
"Drag to move","Ziehen zum Bewegen"
|
117 |
"Edit Filter","Filter bearbeiten"
|
118 |
+
"Edit Role","Berechtigung bearbeiten"
|
119 |
"Edit User '%s'","Benutzer '%s' bearbeiten"
|
120 |
"Email","E-Mail"
|
121 |
"Email Preview","E-Mail Vorschau"
|
122 |
"Email:","E-Mail:"
|
123 |
+
"Enable Secure Token:","Sicherheitstoken aktivieren:"
|
124 |
"Enclose Values In:","Werte innerhalb von:"
|
125 |
"Entity Attributes","Entitäts-Attribute"
|
126 |
"Entity type:","Entitätentyp:"
|
128 |
"Expiration Date","Ablaufdatum"
|
129 |
"Expiration Date: %s/%s","Ablaufdatum: %s/%s"
|
130 |
"Export","Export"
|
|
|
131 |
"Export Filters","Export Filter"
|
132 |
"Export to:","Export nach:"
|
133 |
"Export:","Export:"
|
137 |
"FTP Host[:Port]","FTP Server[:Port]"
|
138 |
"Field Mapping","Feldzuordnung"
|
139 |
"File Information","Dateiinformationen"
|
140 |
+
"File mode","Datei Modus"
|
141 |
"File name:","Dateiname:"
|
142 |
"Files","Dateien"
|
|
|
143 |
"Finished profile execution.","Profilausführung abgeschlossen."
|
144 |
"First Name:","Vorname:"
|
145 |
"For latest version visit: %s","Für die letzte Version besuchen Sie bitte: %s"
|
154 |
"Google Base Items","Google Base Artikel"
|
155 |
"Group:","Gruppe:"
|
156 |
"Help Us Keep Magento Healthy - Report All Bugs","Helfen Sie uns Magento gesund zu halten - Melden Sie alle Fehler"
|
157 |
+
"Home","Startseite"
|
158 |
+
"If your Magento instance is used for multiple websites, you must configure a separate Payflow Link account for each website.","Falls Ihre Magneto-Instanz für mehrere Webseiten verwendet wird, müssen Sie einen separaten Payflow Link-Account für jede Webseite erstellen."
|
159 |
"Ignore","Ignorieren"
|
160 |
"Images","Bilder"
|
161 |
"Import","Import"
|
|
|
|
|
162 |
"Import Service","Import Service"
|
163 |
"Important: ","Wichtig: "
|
164 |
"In Database:","In Datenbank:"
|
185 |
"Last Name:","Nachname:"
|
186 |
"Latest Message:","Aktuellste Nachricht:"
|
187 |
"Leave empty to use tax identifier","Leerlassen um Steuerbezeichnung zu verwenden"
|
188 |
+
"Links with associated products will retain only after saving current product.","Links zu zugewiesenen Produkten werden nur nach Speichern des aktuellen Produkts beibehalten."
|
189 |
+
"Loading Preview...","Vorschau wird geladen..."
|
190 |
"Loading...","Lade..."
|
191 |
"Local Server","Lokaler Server"
|
192 |
"Local/Remote Server","Lokaler/Entfernter Server"
|
194 |
"Log Out","Abmelden"
|
195 |
"Logged in as %s","Angemeldet als %s"
|
196 |
"MS Excel XML","MS Excel XML"
|
197 |
+
"Magento Core APIMagento Core API
|
198 |
+
"Magento Core API Section","Magento Core Api"
|
199 |
"Magento Logo","Magento Logo"
|
200 |
"Magento ver. %s","Magento Version. %s"
|
201 |
"Magento™ is a trademark of Magento Inc.<br/>Copyright © %s Magento Inc.","Magento™ ist eine Handelsmarke der Magento Inc.<br/>Copyright © %s Magento Inc."
|
202 |
"Main Tabs","Haupt Tabs"
|
203 |
"Make Inactive","Inaktiv machen"
|
204 |
"Make sure that data encoding in the file is consistent and saved in one of supported encodings (UTF-8 or ANSI).","Make sure that data encoding in the file is consistent and saved in one of supported encodings (UTF-8 or ANSI)."
|
205 |
+
"Make sure that you configure the design settings for the Payflow Link form in your Payflow link account.","Stellen Sie sicher, dass Sie die Designeinstellungen für das Payflow Link-Formular in Ihrem Payflow Link-Account konfigurieren."
|
206 |
"Manage Stores","Stores verwalten"
|
207 |
"Max","Max"
|
208 |
"Min","Min"
|
224 |
"Note:","Hinweis:"
|
225 |
"Number of records:","Anzahl der Einträge:"
|
226 |
"Old rate:","Alter Kurs:"
|
227 |
+
"On my website","Auf meiner Website"
|
228 |
+
"Once you log into your Payflow Link account, navigate to the Service Settings - Hosted Checkout Pages - Set Up menu and set the options described below","Sobald Sie sich in Ihren Payflow Link-Account einloggen, gehen Sie zum Menü Service Settings - Hosted Checkout Pages - Set Up und stellen Sie die Optionen wie folgt ein"
|
229 |
+
"Only custom theme can be deleted","Nur eigene Themes können gelöscht werden"
|
230 |
+
"Only default theme can be reset","Nur das default Theme kann zurückgesetzt werden"
|
231 |
"Only mapped fields","Nur zugewiesene Felder"
|
232 |
+
"Options menu items","Optionsmenü-Elemente"
|
233 |
"Order ID","Bestellung ID"
|
|
|
234 |
"Order cannot be placed.","Bestellung kann nicht angelegt werden."
|
235 |
"Original Magento attribute names in first row:","Original Magento Attributnamen in erster Zeile:"
|
236 |
"Out of stock","Ausverkauft"
|
237 |
"Package","Paket"
|
238 |
"Packages","Pakete"
|
239 |
"Page","Seite"
|
240 |
+
"Parent Transaction ID","Übergeordnete Trasaktions-ID"
|
241 |
"Passive mode","Passivmodus"
|
242 |
"Password","Passwort"
|
243 |
"Path","Pfad"
|
262 |
"Please enter a valid value, ex: 10,20,30","Bitte geben Sie einen gültigen Wert ein, beispielsweise 10,20,30"
|
263 |
"Please enter a valid zip code.","Bitte geben Sie eine gültige PLZ ein."
|
264 |
"Please enter a valid zip code. For example 90602 or 90602-1234.","Bitte geben Sie eine gültige PLZ ein, beispielsweise 12345."
|
265 |
+
"Please enter another credit card number to complete your purchase.","Bitte geben Sie eine andere Kreditkarten-Nummer ein, um Ihren Kauf abzuschließen."
|
266 |
"Please enter valid password.","Bitte geben Sie ein gültiges Passwort ein."
|
267 |
"Please make sure that your changes were saved before running the profile.","Bitte stellen Sie sicher, dass die Änderungen vor Ausführen des Profiles gespeichert wurden."
|
268 |
"Please make sure your passwords match.","Bitte achten Sie darauf, dass die beiden Passworte übereinstimmen."
|
270 |
"Please select an option.","Bitte wählen Sie eine Option."
|
271 |
"Please select one of the above options.","Bitte wählen Sie eine der oben gezeigten Optionen."
|
272 |
"Please select one of the options.","Bitte wählen Sie eine der Optionen."
|
273 |
+
"Please use in this field only ""a-z,0-9,_"".","Bitte verwenden Sie in diesem Feld nur ""a-z,0-9._""."
|
274 |
"Please use letters only (a-z) in this field.","Bitte verwenden Sie in diesem Feld nur Buchstaben (a-z)."
|
275 |
+
"Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.","Bitte verwenden Sie nur Ganzzahlen in diesem Feld. Bitte vermeiden Sie Leerräume wie auch Punkte und Komma."
|
276 |
"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte verwenden Sie in diesem Feld nur Buchstaben (a-z) oder Ziffern (0-9), vermeiden Sie Leerzeichen oder andere nicht erlaubte Zeichen."
|
277 |
"Please use only letters (a-z) or numbers (0-9) or spaces and # only in this field.","Bitte verwenden Sie in diesem Feld nur Buchstaben (a-z), Ziffern (0-9) oder Leerzeichen und # (Raute)."
|
278 |
"Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.","Bitte verwenden Sie folgendes Datumsformat: dd/mm/yyyy, beispielsweise 17/03/2006 für den 17. März 2006."
|
283 |
"Prev. year (hold for menu)","Vor. Jahr (gedrückt halten für Menü)"
|
284 |
"Preview","Vorschau"
|
285 |
"Previous page","Vorige Seite"
|
|
|
286 |
"Price:","Preis:"
|
|
|
287 |
"Product Name3 ","Artikel Name3 "
|
288 |
"Product Name3 1","Artikel Name3 1"
|
289 |
"Product Name3 2","Artikel Name3 2"
|
290 |
"Products","Artikel"
|
291 |
"Profile Information","Profilinformation"
|
|
|
292 |
"Qty:","Menge"
|
293 |
"Read details","Details lesen"
|
294 |
"Reference ID","Referenz ID"
|
296 |
"Remote FTP","Entferntes FTP"
|
297 |
"Remove","Entfernen"
|
298 |
"Required settings","Pflichteinstellungen"
|
299 |
+
"Reset theme to default","Theme auf default zurücksetzen"
|
|
|
300 |
"Resource Access","Resourceen Zugriff"
|
301 |
"Resources","Resourcen"
|
302 |
"Return URL: ","Rückkehr URL: "
|
303 |
+
"Role Users","Berechtigte Benutzer"
|
304 |
+
"Roles","Berechtigungen"
|
305 |
+
"Roles Resources","Berechtigungsresourcen"
|
|
|
306 |
"SKU:","Artikelnummer:"
|
307 |
"SORT BY:","Sortieren nach:"
|
308 |
+
"Save","Speichern"
|
309 |
+
"Save As","Speichern unter"
|
310 |
"Save Theme","Theme speichern"
|
311 |
"Screens:","Ansichten:"
|
312 |
"Select All","Alle auswählen"
|
313 |
"Select Date","Datum auswählen"
|
314 |
"Select Range","Zeiraum auswählen"
|
|
|
315 |
"Select Visible","Sichtbarkeit auswählen"
|
316 |
"Select date","Datum auswählen"
|
317 |
"Shipment Comments","Versandkommentare"
|
324 |
"Show confirmation page: ","Konfigurationsseite anzeigen:"
|
325 |
"Silent Post URL:","Silent Post URL:"
|
326 |
"Some items in this order have different invoice and shipment types. You can create shipment only after the invoice is created.","Einige Artikel in dieser Bestellung haben verschiedene Rechnungs- und Versandarten. Sie können den Versand erst starten, wenn die Rechnung erstellt wurde."
|
|
|
327 |
"Sort Order","Sortierreihenfolge"
|
328 |
"Special Price:","Sonderpreis:"
|
329 |
"Spreadsheet Name:","Tabellenblatt Name:"
|
346 |
"T-Shirts","T-Shirts"
|
347 |
"Target","Ziel"
|
348 |
"Tell a Friend","Einem Freund empfehlen"
|
|
|
349 |
"The card has failed verification with the issuer bank.","The card has failed verification with the issuer bank."
|
350 |
"The information in this tab has been changed.","Die Angaben in diesem Tab wurden geändert."
|
351 |
+
"Theme configurations are successfully reset.","Theme-Einstellungen wurden erfolgreich zurückgesetzt."
|
352 |
+
"Theme label can\'t be empty","Theme-Bezeichnung darf nicht leer sein."
|
353 |
+
"Theme label:","Theme-Bezeichnung"
|
354 |
+
"There has been wrong payment information submitted or time limit has expired. Please, try again.","Falsche Zahlungsinformation übermittelt oder das Zeit Limit wurde überschritten. Bitte versuchen Sie es erneut."
|
355 |
"This is a demo store. Any orders placed through this store will not be honored or fulfilled.","Dies ist eine Demo-Installation. Jegliche Bestellung in diesem Shop wird weder beachtet noch ausgeführt."
|
356 |
"This is a required field.","Dies ist eine Pflichtangabe."
|
357 |
"This tab contains invalid data. Please solve the problem before saving.","Dieses Tab enthält ungültige Daten. Bitte korrigieren Sie dies vor dem Speichern."
|
361 |
"Title bar","Titel Leiste"
|
362 |
"To","An"
|
363 |
"To cancel pending authorizations and release amounts that have already been processed during this payment, click Cancel.","To cancel pending authorizations and release amounts that have already been processed during this payment, click Cancel."
|
364 |
+
"To use Payflow Link, you must configure your Payflow Link account on the Paypal website.","Um Payflow Link zu verwenden, müssen Sie Ihr Payflow Link Konto auf der PayPal Webseite konfigurieren."
|
365 |
"Top 5 Search Terms","Top 5 Suchanfragen"
|
366 |
"Total %d records found","Gesamt %d Einträge gefunden"
|
367 |
"Track Order","Bestellverfolgung"
|
368 |
"Track this shipment","Diesen Versand verfolgen"
|
369 |
"Transaction Data","Transaktions-Daten"
|
370 |
"Transaction Details","Transaktions-Details"
|
371 |
+
"Transaction ID","Transaktionsnummer"
|
372 |
"Transaction Type","Transaktions-Art"
|
373 |
"Try Magento Go for Free","Magento Go kostenfrei testen"
|
374 |
"Type","Typ"
|
381 |
"Update Preview","Vorschau aktualisieren"
|
382 |
"Updated At","Aktualisiert am"
|
383 |
"Use Default Value","Standardwert verwenden"
|
384 |
+
"Use Silent Post:","Stillen Post verwenden:"
|
385 |
"User","Benutzer"
|
386 |
"User Name","Benutzername"
|
387 |
+
"User Roles","Benutzerberechtigungen"
|
388 |
"User name","Benutzer Name"
|
389 |
"Users","Benutzer"
|
390 |
"Validation Results","Überprüfungs-Ergebnis"
|
397 |
"View Gallery","Galerie ansehen"
|
398 |
"View Statistics For","Statistiken für"
|
399 |
"Visibility:","Sichtbarkeit:"
|
400 |
+
"WS-I Compliance","WS-I Konform"
|
401 |
"Warning! Empty value can cause problems with CSV format.","Warnung! Leerer Weert kann Probleme mit dem CSV-Format verursachen."
|
402 |
"Warning!\r\nThis action will remove this user from already assigned role\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diesen Benutzer von allen bisher zugeteilten Berechtigungen entfernen.\r\nSind sie sicher?"
|
403 |
"Warning!\r\nThis action will remove those users from already assigned roles\r\nAre you sure?","Warnung!\r\nDiese Aktion wird diese Benutzer von allen bisher zugeteilten Berechtigungen entfernen.\r\nSind sie sicher?"
|
412 |
"Your server PHP settings allow you to upload files not more than %s at a time. Please modify post_max_size (currently is %s) and upload_max_filesize (currently is %s) values in php.ini if you want to upload larger files.","Ihre PHP Einstellungen auf Ihrem Server unterbindet Uploads von mehr als %s Dateien zur gleichen Zeit. Bitte ändern Sie post_max_size (aktuell %s) und upload_max_filesize (aktuell %s) in der php.ini wenn Sie größere Dateien hochladen möchten."
|
413 |
"Zip/Postal Code:","PLZ:"
|
414 |
"critical","kritisch"
|
|
|
415 |
"items selected","Elemente ausgewählt"
|
416 |
"major","Versionssprung"
|
417 |
"minor","geringfügig"
|
419 |
"of %s pages","von %s Seiten"
|
420 |
"per page","pro Seite"
|
421 |
"to","bis"
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Authorizenet.csv
CHANGED
@@ -1,40 +1,40 @@
|
|
1 |
"--Please Select--","--Bitte wählen--"
|
2 |
-
"API Login ID","API
|
3 |
-
"Accepted Currency","
|
4 |
"Authorize.net Direct Post","Authorize.net Direct Post"
|
5 |
-
"Card Verification Number","
|
6 |
-
"Card Verification Number Visual Reference","
|
7 |
-
"Close","
|
8 |
-
"Credit Card Information","
|
9 |
-
"Credit Card Number","
|
10 |
-
"Credit Card Type","
|
11 |
-
"Credit Card Types","
|
12 |
-
"Credit Card Verification","
|
13 |
"Debug","Debug"
|
14 |
-
"Email Customer","
|
15 |
-
"Enabled","
|
16 |
-
"Expiration Date","
|
17 |
"Gateway URL","Gateway URL"
|
18 |
-
"Maximum Order Total","
|
19 |
-
"Merchant MD5","
|
20 |
-
"Merchant's Email","
|
21 |
-
"Minimum Order Total","
|
22 |
-
"New Order Status","
|
23 |
-
"Order saving error: %s","
|
24 |
-
"Payment Action","
|
25 |
-
"Payment authorization error.","
|
26 |
-
"Payment authorization error. Transacion id is empty.","
|
27 |
-
"Payment error. Order was not found.","
|
28 |
-
"Payment error. Paid amount doesn\'t match the order amount.","
|
29 |
-
"Payment from Applicable Countries","
|
30 |
-
"Payment from Specific Countries","
|
31 |
-
"Please, choose payment method","
|
32 |
-
"Response hash validation failed. Transaction declined.","
|
33 |
-
"Sort Order","
|
34 |
-
"Test Mode","Test
|
35 |
-
"The order has been created.","
|
36 |
-
"There was an error processing your order. Please contact us or try again later.","
|
37 |
-
"Title","
|
38 |
-
"Transaction Key","
|
39 |
-
"What is this?","
|
40 |
-
"You will be required to enter your payment details before you place an order.","
|
1 |
"--Please Select--","--Bitte wählen--"
|
2 |
+
"API Login ID","API Anmelde-ID"
|
3 |
+
"Accepted Currency","Akzeptierte Währung"
|
4 |
"Authorize.net Direct Post","Authorize.net Direct Post"
|
5 |
+
"Card Verification Number","Kreditkartenprüfnummer"
|
6 |
+
"Card Verification Number Visual Reference","Kartenprüfnummer Sichtmerkmale"
|
7 |
+
"Close","Schließen"
|
8 |
+
"Credit Card Information","Kreditkarten Information"
|
9 |
+
"Credit Card Number","Kartennummer"
|
10 |
+
"Credit Card Type","Kreditkarten Art"
|
11 |
+
"Credit Card Types","Kreditkarten Arten"
|
12 |
+
"Credit Card Verification","Kreditkarten Verifikation"
|
13 |
"Debug","Debug"
|
14 |
+
"Email Customer","Kunden-E-Mail"
|
15 |
+
"Enabled","Aktiviert"
|
16 |
+
"Expiration Date","Ablaufdatum"
|
17 |
"Gateway URL","Gateway URL"
|
18 |
+
"Maximum Order Total","Maximale Bestellsumme"
|
19 |
+
"Merchant MD5","Händler MD5-Hash"
|
20 |
+
"Merchant's Email","Händler-E-Mail"
|
21 |
+
"Minimum Order Total","Minimale Bestellsumme"
|
22 |
+
"New Order Status","Neuer Bestell-Status"
|
23 |
+
"Order saving error: %s","Fehler beim Speichern der Bestellung: %s"
|
24 |
+
"Payment Action","Zahlungsaktion"
|
25 |
+
"Payment authorization error.","Fehler bei der Zahlungsbestätigung."
|
26 |
+
"Payment authorization error. Transacion id is empty.","Fehler bei der Zahlungsbestätigung. Transaktionsnummer ist leer."
|
27 |
+
"Payment error. Order was not found.","Zahlungsfehler. Bestellung konnte nicht gefunden werden."
|
28 |
+
"Payment error. Paid amount doesn\'t match the order amount.","Zahlungsfehler. Gezahlter Betrag entspricht nicht dem Rechnungsbetrag."
|
29 |
+
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
30 |
+
"Payment from Specific Countries","Zahlung aus bestimmten Ländern"
|
31 |
+
"Please, choose payment method","Bitte wählen Sie eine Zahlart"
|
32 |
+
"Response hash validation failed. Transaction declined.","Überprüfung der Zahlungsfähigkeit fehlgeschlagen. Transaktion abgelehnt."
|
33 |
+
"Sort Order","Reihenfolge"
|
34 |
+
"Test Mode","Test Modus"
|
35 |
+
"The order has been created.","Die Bestellung wurde angelegt."
|
36 |
+
"There was an error processing your order. Please contact us or try again later.","Bei der Bearbeitung Ihrer Bestellung ist ein Fehler aufgetreten. Bitte nehmen Sie mit uns Kontakt auf oder versuchen Sie es später noch einmal."
|
37 |
+
"Title","Titel"
|
38 |
+
"Transaction Key","Trasaktionsschlüssel"
|
39 |
+
"What is this?","Was ist das?"
|
40 |
+
"You will be required to enter your payment details before you place an order.","Bevor Sie eine Bestellung aufgeben können, müssen Sie Ihre Zahlungsdaten angeben."
|
app/locale/de_DE/Mage_Backup.csv
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
"Action","Aktion"
|
2 |
-
"An error occurred while writing to the backup file "%s".","Fehler beim
|
3 |
-
"Backup file "%s" cannot be read from or written to.","
|
4 |
-
"Backup file "%s" does not exist.","Sicherungsdatei "%s" existiert nicht."
|
5 |
"Backup file does not exist.","Sicherungsdatei existiert nicht"
|
6 |
-
"Backup file handler was unspecified.","Sicherungsdatei-Handler nicht spezifiziert
|
7 |
-
"Backup file path was not specified.","Dateipfad für die
|
8 |
"Backups","Sicherungen"
|
9 |
"Cannot read backup file.","Sicherungsdatei konnte nicht gelesen werden."
|
10 |
"Create Backup","Sicherung erstellen"
|
@@ -12,8 +12,8 @@
|
|
12 |
"Database was successfuly backed up.","Datenbank wurde erfolgreich gesichert."
|
13 |
"Download","Herunterladen"
|
14 |
"Size, Bytes","Größe in Bytes"
|
15 |
-
"The file was compressed with Zlib, but this extension is not installed on server.","Die Datei ist
|
16 |
"Time","Zeit"
|
17 |
-
"Type","
|
18 |
"Unable to create backup. Please, try again later.","Fehler beim Erstellen der Sicherung. Bitte versuchen Sie es später nocheinmal."
|
19 |
-
"Wrong order of creation for new backup.","Falsche Erstellungsreihenfolge für neues Backup"
|
1 |
"Action","Aktion"
|
2 |
+
"An error occurred while writing to the backup file ""%s"".","Fehler beim Erstellen der Sicherungsdatei ""%s""."
|
3 |
+
"Backup file ""%s"" cannot be read from or written to.","Sicherungsdatei ""%s"" kann nicht gelesen oder geschrieben werden."
|
4 |
+
"Backup file ""%s"" does not exist.","Sicherungsdatei ""%s"" existiert nicht."
|
5 |
"Backup file does not exist.","Sicherungsdatei existiert nicht"
|
6 |
+
"Backup file handler was unspecified.","Sicherungsdatei-Handler wurde nicht spezifiziert."
|
7 |
+
"Backup file path was not specified.","Dateipfad für die Sicherungsdateien wurde nicht spezifiziert."
|
8 |
"Backups","Sicherungen"
|
9 |
"Cannot read backup file.","Sicherungsdatei konnte nicht gelesen werden."
|
10 |
"Create Backup","Sicherung erstellen"
|
12 |
"Database was successfuly backed up.","Datenbank wurde erfolgreich gesichert."
|
13 |
"Download","Herunterladen"
|
14 |
"Size, Bytes","Größe in Bytes"
|
15 |
+
"The file was compressed with Zlib, but this extension is not installed on server.","Die Datei ist Zlib komprimiert. Diese Erweiterung ist jedoch auf dem Server nicht installiert."
|
16 |
"Time","Zeit"
|
17 |
+
"Type","Art"
|
18 |
"Unable to create backup. Please, try again later.","Fehler beim Erstellen der Sicherung. Bitte versuchen Sie es später nocheinmal."
|
19 |
+
"Wrong order of creation for new backup.","Falsche Erstellungsreihenfolge für neues Backup."
|
app/locale/de_DE/Mage_Bundle.csv
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
"-- Select --","-- Bitte auswählen --"
|
3 |
"Add New Option","Neue Option hinzufügen"
|
4 |
"Add Selection","Auswahl hinzufügen"
|
5 |
-
"As Low as","
|
6 |
-
"As low as","
|
7 |
-
"Bundle Items","
|
8 |
-
"Bundle Product","
|
9 |
"Buy %1$s with %2$s discount each","Kaufe %1$s mit je %2$s Rabatt"
|
10 |
"Catalog Product View (Bundle)","Katalog Artikel Ansicht (Bundle)"
|
11 |
"Checkbox","Checkbox"
|
@@ -31,10 +31,10 @@
|
|
31 |
"None","Keine"
|
32 |
"Percent","Prozent"
|
33 |
"Percent Discount","Prozent Rabatt"
|
34 |
-
"Please Select Products to Add","Bitte Artikel zum
|
35 |
"Please enter search conditions to view products.","Bitte bestimmen Sie Suchkriterien, um Artikel anzeigen zu lassen."
|
36 |
-
"Please select options for product.","Bitte Optionen für den Artikel
|
37 |
-
"Please specify product option(s).","Bitte legen Sie die Artikeloption(en) fest"
|
38 |
"Position","Position"
|
39 |
"Price Range","Preisbereich"
|
40 |
"Price Type","Preisart"
|
@@ -44,14 +44,13 @@
|
|
44 |
"Required options are not selected.","Pflichtangaben nicht gewählt."
|
45 |
"Selected required options are not available.","Ausgewählte Pflichtangaben nicht verfügbar."
|
46 |
"Separately","Einzeln"
|
47 |
-
"Ship Bundle Items","
|
48 |
"Shipment","Versand"
|
49 |
"Store View Title","StoreView Bezeichnung"
|
50 |
-
"There is no defined renderer for "%s" option type.","
|
51 |
-
"This product is also part of bundle(s)","Dieser Artikel ist auch Teil
|
52 |
"To","Bis"
|
53 |
"To:","Bis:"
|
54 |
"Together","Gemeinsam"
|
55 |
-
"Use Default Value","Standardwert
|
56 |
"User Defined Qty","Benutzerdefinierte Menge"
|
57 |
-
"There is no defined renderer for "%s" option type","Kein passender Renderer für "%s" Optionstyp"
|
2 |
"-- Select --","-- Bitte auswählen --"
|
3 |
"Add New Option","Neue Option hinzufügen"
|
4 |
"Add Selection","Auswahl hinzufügen"
|
5 |
+
"As Low as","So niedrig wie"
|
6 |
+
"As low as","So niedrig wie"
|
7 |
+
"Bundle Items","Bündelartikel"
|
8 |
+
"Bundle Product","Bündelartikel"
|
9 |
"Buy %1$s with %2$s discount each","Kaufe %1$s mit je %2$s Rabatt"
|
10 |
"Catalog Product View (Bundle)","Katalog Artikel Ansicht (Bundle)"
|
11 |
"Checkbox","Checkbox"
|
31 |
"None","Keine"
|
32 |
"Percent","Prozent"
|
33 |
"Percent Discount","Prozent Rabatt"
|
34 |
+
"Please Select Products to Add","Bitte Artikel zum Hinzufügen auswählen"
|
35 |
"Please enter search conditions to view products.","Bitte bestimmen Sie Suchkriterien, um Artikel anzeigen zu lassen."
|
36 |
+
"Please select options for product.","Bitte wählen Sie Optionen für den Artikel aus."
|
37 |
+
"Please specify product option(s).","Bitte legen Sie die Artikeloption(en) fest."
|
38 |
"Position","Position"
|
39 |
"Price Range","Preisbereich"
|
40 |
"Price Type","Preisart"
|
44 |
"Required options are not selected.","Pflichtangaben nicht gewählt."
|
45 |
"Selected required options are not available.","Ausgewählte Pflichtangaben nicht verfügbar."
|
46 |
"Separately","Einzeln"
|
47 |
+
"Ship Bundle Items","Versand von Bündelartikel"
|
48 |
"Shipment","Versand"
|
49 |
"Store View Title","StoreView Bezeichnung"
|
50 |
+
"There is no defined renderer for ""%s"" option type.","Kein passender Renderer für die Optionsart ""%s""."
|
51 |
+
"This product is also part of bundle(s)","Dieser Artikel ist auch Teil von Bündelartikeln"
|
52 |
"To","Bis"
|
53 |
"To:","Bis:"
|
54 |
"Together","Gemeinsam"
|
55 |
+
"Use Default Value","Standardwert anwenden"
|
56 |
"User Defined Qty","Benutzerdefinierte Menge"
|
|
app/locale/de_DE/Mage_Catalog.csv
CHANGED
@@ -8,12 +8,14 @@
|
|
8 |
"* Required Fields","* Pflichtangaben"
|
9 |
"-- Please Select --","-- Bitte wählen --"
|
10 |
"86400 by default, if not set. To refresh instantly, Clear the Blocks HTML Output Cache.","86400 als Standard, falls nicht gesetzt. Um die Instanz zu aktualisieren, deaktivieren Sie den Cache für die Ausgabe von HTML-Blöcken."
|
|
|
11 |
"A group with the same name already exists.","Eine Gruppe mit dem selben Namen existiert bereits."
|
12 |
"A name is required","Ein Name wird benötigt"
|
13 |
"A product type is not defined for the indexer.","Eine Artikelart ist noch nicht definiert für den Indexer."
|
14 |
"ALL GROUPS","ALLE GRUPPEN"
|
15 |
"AM","AM"
|
16 |
"Action","Aktion"
|
|
|
17 |
"Add Attribute","Attribut hinzufügen"
|
18 |
"Add Design Change","Gestaltungsänderung hinzufügen"
|
19 |
"Add Group","Gruppe hinzufügen"
|
@@ -46,25 +48,24 @@
|
|
46 |
"Allow HTML Tags on Frontend","HTML-Tags im Frontend erlauben"
|
47 |
"Allowed File Extensions","Erlaubte Dateierweiterungen"
|
48 |
"Allowed file extensions to upload","Erlaubte Dateierweiterungen zum hochladen"
|
49 |
-
"An error occurred while adding
|
50 |
-
"An error occurred while
|
51 |
-
"An error occurred while
|
52 |
-
"An error occurred while
|
53 |
-
"An error occurred while saving the URL rewrite.","Ein Fehler ist beim Speichern des URL-Rewrites aufgetreten."
|
54 |
"An error occurred while saving the attribute set.","Beim Speichern des Attribut-Sets ist ein Fehler aufgetreten."
|
55 |
-
"An error occurred while saving the collection, aborting. Error message: %s","Ein Fehler ist beim speichern der Kollektion aufgetreten. Fehler Nachricht: %s"
|
56 |
"An error occurred while saving the product. ","Ein Fehler ist beim Speichern des Artikels aufgetreten. "
|
57 |
"An error occurred while saving the search query.","Beim Speichern der Suchanfrage ist ein Fehler aufgetreten."
|
58 |
"An error occurred while saving this group.","Beim Speichern dieser Gruppe ist ein Fehler aufgetreten."
|
59 |
"An error occurred while trying to delete the category.","Beim Versuch die Kategorie zu löschen ist ein Fehler aufgetreten."
|
60 |
-
"An error occurred while updating the product(s) attributes.","Beim
|
61 |
-
"An error occurred while updating the product(s) status.","Beim
|
62 |
-
"An invalid group ID is specified, skipping the record.","
|
63 |
"An invalid option ID is specified for %s (%s), skipping the record.","Eine ungültige Options-ID ist festgelegt für %s (%s), Eintrag überspringen."
|
64 |
"An invalid store was specified.","Ein ungültiger Store ist festgelegt."
|
65 |
"Anchor Custom Text","Individueller Anker-Text"
|
66 |
"Anchor Custom Title","Individueller Anker-Titel"
|
67 |
"Applicable to catalog products and categories only. Any media content will be inserted into editor as a static URL. It is not updated if the system configuration base URL changes.","Nur anwendbar auf Katalog Artikel und Kategorien. Jeder Medien-Inhalt wird über den Editor als statische URL eingefügt. Diese wird nicht aktualisiert wenn in der Systemkonfiguration die BasisURL verändert wird."
|
|
|
68 |
"Apply To","Anwenden auf"
|
69 |
"Approved","Freigegeben"
|
70 |
"Are you sure you want to delete this category?","Sind Sie sicher, dass Sie diese Kategorie wirklich löschen wollen?"
|
@@ -78,8 +79,8 @@
|
|
78 |
"Assigned Products","Zugewiesene Artikel"
|
79 |
"Associated Products","Verknüpfte Artikel"
|
80 |
"Attrib. Set Name","Attributsetname"
|
81 |
-
"Attribute "%s" is invalid.","Attribut "%s" ist ungültig."
|
82 |
-
"Attribute "%s" is required.","Attribut "%s" ist ein Pflichtfeld."
|
83 |
"Attribute Information","Attributinformation"
|
84 |
"Attribute Model","Attributmodell"
|
85 |
"Attribute Name:","Attributname"
|
@@ -96,6 +97,7 @@
|
|
96 |
"Backend Table Title","Backend Tabellentitel"
|
97 |
"Backorders","Nachbestellungen"
|
98 |
"Based On","Basiert auf"
|
|
|
99 |
"Best Value","Bewertung"
|
100 |
"Block after Info Column","Block nach der Info-Spalte"
|
101 |
"Bottom Block Options Wrapper","Unterer Options-Block Container"
|
@@ -103,6 +105,8 @@
|
|
103 |
"Bottom/Right","Unten rechts"
|
104 |
"Browse By","Durchsuchen nach"
|
105 |
"Bundle Items","Bündel-Artikel"
|
|
|
|
|
106 |
"Buy %1$s for %2$s","ab %1$s für %2$s"
|
107 |
"Buy %1$s for %2$s (%3$s incl. tax) each","ab %1$s zu je %2$s (%3$s inkl. Steuern)"
|
108 |
"Buy %1$s for %2$s each","ab %1$s zu je %2$s"
|
@@ -117,15 +121,15 @@
|
|
117 |
"Cannot create writeable directory '%s'.","Verzeichnis '%s' mit Schreibrechten konnte nicht erstellt werden."
|
118 |
"Cart Item Attribute","Warenkorb Artikel Attribut"
|
119 |
"Catalog","Katalog"
|
120 |
-
"Catalog Category (Anchor)","Katalog Kategorie(Anker)"
|
121 |
-
"Catalog Category (Non-Anchor)","Katalog Kategorie(Kein-Anker)"
|
122 |
-
"Catalog Category (Without Subcategories)","Katalog Kategorie(Ohne Unterkategorien)"
|
123 |
"Catalog Category Link","Katalog Kategorie-Link"
|
124 |
-
"Catalog New Products List","Katalog
|
125 |
"Catalog Price Scope","Katalogpreis-Gültigkeit"
|
126 |
"Catalog Product Compare List","Katalog Artikel Vergleichsliste"
|
127 |
"Catalog Product Email to a Friend","Katalog Artikel E-Mail an einen Freund"
|
128 |
-
"Catalog Product Image Gallery Popup","Katalog Artikel
|
129 |
"Catalog Product Link","Katalog Artikel Link"
|
130 |
"Catalog Product View (Any)","Katalog Artikel Ansicht(jede)"
|
131 |
"Catalog Product View (Configurable)","Katalog Artikel Ansicht(Konfigurierbare)"
|
@@ -153,15 +157,18 @@
|
|
153 |
"Category URL Suffix","Kategorie URL-Suffix"
|
154 |
"Category attributes API","Kategorie Attribut-API"
|
155 |
"Category move error","Fehler beim Verschieben der Kategorie"
|
156 |
-
"Category move operation is not possible:
|
157 |
-
"Category
|
|
|
|
|
158 |
"Center","Mittig"
|
159 |
"Change","Veränderung"
|
160 |
-
"Change or Retrieve attribute store view","Ändern oder Attribut
|
161 |
"Change status","Status ändern"
|
162 |
"Check items to add to the cart or","Wählen Sie die Artikel aus, die dem Warenkorb hinzugefügt werden sollen oder"
|
163 |
"Choose an Option...","Option wählen..."
|
164 |
"Clear All","Alles entfernen"
|
|
|
165 |
"Close Window","Fenster schließen"
|
166 |
"Collapse All","Alle einklappen"
|
167 |
"Comma-separated.","Kommma-getrennt."
|
@@ -187,25 +194,26 @@
|
|
187 |
"Create new category","Neue Kategorie anlegen"
|
188 |
"Create new product","Neuen Artikel anlegen"
|
189 |
"Cross-sells","Cross-Selling"
|
190 |
-
"Currently Shopping by:","
|
191 |
"Custom Design","Eigene Gestaltung"
|
192 |
"Custom Options","Individuelle Optionen"
|
193 |
"Customer Group","Kundengruppe"
|
194 |
"Customers Reviews","Kundenmeinungen"
|
195 |
"Customers Tagged Product","Schlagworte von Kunden"
|
196 |
-
"
|
197 |
-
"Data Type for Saving in Database","Daten-Typ zum speichern in der Datenbank"
|
198 |
"Date & Time Custom Options","Kundenoptionen - abhängig von Datum & Zeit"
|
199 |
"Date Fields Order","Reihenfolge der Datum-Felder"
|
200 |
"Date Subscribed","Anmeldedatum"
|
201 |
"Datetime","Datum/Zeit"
|
202 |
"Decimal","Dezimalzahl"
|
203 |
"Declare attribute value saving scope","Bestimme Speicherbereich der Werte des Attributs"
|
|
|
|
|
204 |
"Default Price","Standardpreis"
|
205 |
"Default Price Navigation Step","Standardpreis Navigations Schritt"
|
206 |
"Default Qty","Standardmenge"
|
207 |
"Default Values","Standardwerte"
|
208 |
-
"Defines the base currency scope ("Currency Setup" > "Currency Options" > "Base Currency").","Definiert den Standard Gültigkeitsbereich ("Einrichten der Währung" > "Währungsoptionen" > "Basis Währung")."
|
209 |
"Delete","Löschen"
|
210 |
"Delete Attribute","Attribut löschen"
|
211 |
"Delete Attribute Set","Attributset löschen"
|
@@ -221,26 +229,26 @@
|
|
221 |
"Details","Details"
|
222 |
"Disabled","Deaktiviert"
|
223 |
"Disallowed file type.","Nicht erlaubter Datei-Typ."
|
|
|
224 |
"Display in Suggested Terms","Zeige in vorgeschlagenen Begriffen"
|
225 |
-
"Display Settings","Anzeigeeinstellungen"
|
226 |
"Double click on a group to rename it","Klicken Sie doppelt auf eine Gruppe, um diese umzubenennen"
|
227 |
"Double click on above image to view full picture","Klicken Sie doppelt auf das obere Bild, um es im voller Größe zu sehen"
|
228 |
"Downloadable Information","Herunterladbare Informationen"
|
229 |
"Duplicate","Duplizieren"
|
230 |
"Duplicate website tier price customer group and quantity.","Doppelte Website, Staffelpreis, Kundengruppe und Menge."
|
231 |
"Duplicate website, country and state tax found.","Doppelte Website, Bundesland und Land - Steuern gefunden."
|
232 |
-
"E.g. {{media url="path/to/image.jpg"}} {{skin url="path/to/picture.gif"}}. Dynamic directives parsing impacts catalog performance.","Z.B. {{media url="pfad/zum/bild.jpg"}} {{skin url="pfad/zum/bild.gif"}}. Dynamische Pfade haben negative Auswirkungen auf die Katalog-Performance."
|
233 |
"Edit","Bearbeiten"
|
234 |
"Edit Attribute Set '%s'","Attributset'%s' bearbeiten"
|
235 |
"Edit Product Attribute","Artikelattribute bearbeiten"
|
236 |
-
"Edit Product Attribute "%s"","Artikelattribut"%s" bearbeiten"
|
237 |
"Edit Search","Suche bearbeiten"
|
238 |
"Edit Search '%s'","Suche '%s' bearbeiten"
|
239 |
"Edit Set Name","Set-Namen bearbeiten"
|
240 |
"Email","E-Mail"
|
241 |
-
"Email to %s was not sent.","Email an %s wurde nicht gesendet."
|
242 |
"Email to a Friend","E-Mail an einen Freund"
|
243 |
"Empty","Leer"
|
|
|
244 |
"Enable Qty Increments","Aktiviere Mengeneinheiten"
|
245 |
"Enable WYSIWYG","WYSIWYG aktivieren"
|
246 |
"Enabled","Aktiviert"
|
@@ -248,15 +256,16 @@
|
|
248 |
"Exclude","Nicht in Galerie"
|
249 |
"Expand All","Alle ausklappen"
|
250 |
"Failed","Fehlgeschlagen"
|
|
|
251 |
"Failed to move file: %s","Fehler beim Verschieben der Datei: %s"
|
252 |
"Feature Products","Besonders präsentierte Artikel"
|
253 |
"Field is not complete","Feld ist nicht vollständig"
|
254 |
"File options format is not valid.","Dateioptionen Format ist ungültig."
|
255 |
"File upload failed","Datei Upload fehlgeschlagen"
|
256 |
-
"Filter model name must be declared.","Filter
|
257 |
"Filter must be an object. Please set correct filter.","Filter muss ein Objekt sein. Bitte setzen Sie den korrekten Filter."
|
258 |
-
"Filterable (no results)","Filterbar (keine
|
259 |
-
"Filterable (with results)","Filterbar (mit
|
260 |
"First Name","Vorname"
|
261 |
"Fixed","Festpreis"
|
262 |
"For internal use.","Zur internen Verwendung."
|
@@ -283,6 +292,7 @@
|
|
283 |
"Image does not exist.","Bild existiert nicht."
|
284 |
"Image file was not found.","Bilddatei wurde nicht gefunden."
|
285 |
"Image type and information need to be specified for each store view.","Bildtyp und -information muß für jede StoreView separat hinterlegt werden."
|
|
|
286 |
"In Stock","Auf Lager"
|
287 |
"In stock","Auf Lager"
|
288 |
"Incl. Tax","Inkl. Steuern"
|
@@ -290,24 +300,23 @@
|
|
290 |
"Index product attributes for layered navigation building","Indexierung von Artikel-Attributen zum Aufbau der Filternavigation"
|
291 |
"Index product prices","Indexierung von Artikel Preisen"
|
292 |
"Indexed category/products association","Indexierung von Kategorie & Artikel Beziehungen / Verknüpfungen"
|
293 |
-
"Info Column Options Wrapper","
|
294 |
"Input Type","Eingabetyp"
|
295 |
"Integer","Ganzzahl"
|
296 |
"Invalid Tier Prices","Ungültige Staffelpreise"
|
297 |
-
"Invalid attribute %s
|
298 |
-
"Invalid attribute option specified for attribute %s (%s), skipping the record.","
|
299 |
-
"Invalid attribute set specified, skipping the record.","
|
300 |
"Invalid block: %s.","Ungültiger Block: %s."
|
301 |
"Invalid category IDs.","Ungültige Kategorie IDs."
|
302 |
"Invalid category.","Ungültige Kategorie."
|
303 |
"Invalid image file type.","Ungültiger Bild Dateityp."
|
304 |
"Invalid image type.","Ungültiger Bildtyp."
|
305 |
-
"Invalid option ID specified for %s (%s), skipping the record.","
|
306 |
-
"Invalid product type specified, skipping the record.","
|
307 |
"Invalid store specified","Ungültiger Store angegeben"
|
308 |
-
"Invalid store specified, skipping the record.","
|
309 |
-
"Invalid tier prices. The product is not associated to the requested website.","
|
310 |
-
"Invalid transactional email code.","Ungültiger Transaktions E-Mail Code."
|
311 |
"Inventory","Lagerverwaltung"
|
312 |
"Is Default","Standard"
|
313 |
"Is Required","Pflichtangabe"
|
@@ -319,7 +328,6 @@
|
|
319 |
"Last Name","Nachname"
|
320 |
"Last Notification","Letzter Hinweis"
|
321 |
"Layered Navigation","Filternavigation"
|
322 |
-
"Layered Navigation Price Step","Filternavigation Preisbereiche"
|
323 |
"Learn More","Erfahren Sie mehr"
|
324 |
"Line %d, Email: %s","Zeile %d, E-Mail: %s"
|
325 |
"Line %d, SKU: %s","Zeile %d, Artikelnummer: %s"
|
@@ -345,11 +353,11 @@
|
|
345 |
"Maximal Depth","Maximale Tiefe"
|
346 |
"Maximum Image Size","Maximale Bildgröße"
|
347 |
"Maximum Qty Allowed in Shopping Cart","Höchstbestellmenge"
|
348 |
-
"Maximum allowed image size for '%s' is %sx%s px.","Maximal erlaubte Bildgröße für '%s' ist %sx%s px."
|
349 |
"Maximum image height","Maximale Bildhöhe"
|
350 |
"Maximum image width","Maximale Bildbreite"
|
351 |
"Maximum number of characters:","Maximale Anzahl von Ziffern oder Zeichen:"
|
352 |
"Media Image","Bild"
|
|
|
353 |
"Minimum Lines per Page","Minimale Zeilenanzahl pro Seite"
|
354 |
"Minimum Qty Allowed in Shopping Cart","Mindestbestellmenge"
|
355 |
"Minimum Qty for Item\'s Status to be Out of Stock","Stückzahl für Nicht auf Lager-Status"
|
@@ -357,7 +365,7 @@
|
|
357 |
"More Views","Mehr Ansichten"
|
358 |
"Move","Verschieben"
|
359 |
"Move category in tree","Verschieben der Kategorie in den Baum"
|
360 |
-
"Must be in the allowed values list.","
|
361 |
"N/A","N/A"
|
362 |
"Name","Name"
|
363 |
"Name in %s","Name in %s"
|
@@ -382,11 +390,12 @@
|
|
382 |
"Notify for Quantity Below","Hinweis bei Lagerbestand unter"
|
383 |
"Number of Products to Display","Anzahl der Artikel die angezeigt werden sollen"
|
384 |
"Number of Uses","Anzahl der Verwendungen"
|
385 |
-
"Number of results<br/>(For the last time placed)","
|
386 |
"OK","OK"
|
387 |
"OR","ODER"
|
388 |
"Old Price:","Alter Preis:"
|
389 |
-
"
|
|
|
390 |
"Option:","Option:"
|
391 |
"Options Control","Optionenkontrolle"
|
392 |
"Options is required","Optionen sind Pflichtangaben"
|
@@ -403,7 +412,7 @@
|
|
403 |
"Please be careful as once you click on the row it will load package data form the selected file and all unsaved form data will be lost.","ACHTUNG: Bei einem Klick auf die Zeile werden die Paketdaten geladen und überschreiben alle ungespeicherten Formulardaten!"
|
404 |
"Please click on the Close Window button if it is not closed automatically.","Bitte klicken Sie auf den Fenster schließen Button falls es nicht automatisch schließen sollte."
|
405 |
"Please enter a new group name","Bitte geben Sie einen neuen Gruppennamen ein"
|
406 |
-
"Please refresh "Catalog URL Rewrites" and "Product Attributes" in System -> <a href="%s">Index Management</a>","Bitte aktualisieren Sie "Katalog URL Rewrites" und "Artikel Attribute" in System -> <a href="%s">Index-Verwaltung</a>"
|
407 |
"Please select a static block ...","Bitte wählen Sie einen Block ..."
|
408 |
"Please select items.","Bitte wählen Sie Artikel"
|
409 |
"Please select one or more attributes.","Bitte wählen Sie ein oder mehrere Attribut(e)"
|
@@ -421,7 +430,6 @@
|
|
421 |
"Position in Layered Navigation","Position in Filternavigation"
|
422 |
"Position of attribute in layered navigation block","Position des Attributs in Filter-Navigation"
|
423 |
"Prev","Zurück"
|
424 |
-
"Previous","vorangegangen"
|
425 |
"Price","Preis"
|
426 |
"Price Navigation Step Calculation","Preis Navigation Schritt Kalkulation"
|
427 |
"Price Type","Preisart"
|
@@ -486,7 +494,7 @@
|
|
486 |
"Quick Create","Schnellanlegen"
|
487 |
"Quick Overview","Kurzübersicht"
|
488 |
"Quick simple product creation","Schnell einfache Artikel anlegen"
|
489 |
-
"Records for "","Einträge für ""
|
490 |
"Redirect","Weiterleitung"
|
491 |
"Redirect URL","Weiterleitungs-URL"
|
492 |
"Regular Price:","Regulärer Preis:"
|
@@ -535,12 +543,14 @@
|
|
535 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
536 |
"Saved %d record(s)","Gespeichert %d Einträge"
|
537 |
"Scope","Geltungsbereich"
|
|
|
538 |
"Search","Suche"
|
539 |
"Search Engine Optimizations","Suchmaschinen Optimierung"
|
540 |
"Search Information","Suchinformationen"
|
541 |
"Search Query","Suchanfrage"
|
542 |
"Search Term with such search query already exists.","Suchergebnis mit dieser Suchanfrage existiert bereits."
|
543 |
"Searchable","Suchbar"
|
|
|
544 |
"Select Category...","Kategorie auswählen..."
|
545 |
"Select Configurable Attributes ","Wählen Sie die konfigurierbaren Attribute"
|
546 |
"Select Product...","Artikel auswählen..."
|
@@ -553,7 +563,7 @@
|
|
553 |
"Set Descending Direction","In absteigender Reihenfolge"
|
554 |
"Set Name","Setname"
|
555 |
"Set Root Category for Store","Root Kategorie setzen für den Store"
|
556 |
-
"Set root category for this store in the <a href="%s">configuration</a>","Rootkategorie für diesen Store in der <a href="%s">Konfiguration</a> festlegen"
|
557 |
"Set special price","Sonderpreis festlegen"
|
558 |
"Set/Get current store view","Aktuellen StoreView festlegen/abrufen"
|
559 |
"Settings","Einstellungen"
|
@@ -565,15 +575,11 @@
|
|
565 |
"Simple Product","Einfacher Artikel"
|
566 |
"Site Map","Site Map"
|
567 |
"Sitemap","Sitemap"
|
568 |
-
"Skip import row,
|
569 |
-
"
|
570 |
-
"
|
571 |
-
"
|
572 |
-
"
|
573 |
-
"Skipping import row, store "%s" field does not exist.","Skipping import row, store "%s" field does not exist."
|
574 |
-
"Skipping import row, the value "%s" is not valid for the "%s" field.","Überspringen der Importzeile, der Wert "%s" ist nicht gültig für das Feld "%s"."
|
575 |
-
"Some of the processed products have no SKU value defined. Please fill it prior to performing operations on these products.","Some of the processed products have no SKU value defined. Please fill it prior to performing operations on these products."
|
576 |
-
"Some of the products below do not have all the required options. Please edit them and configure all the required options.","Some of the products below do not have all the required options. Please edit them and configure all the required options."
|
577 |
"Sort By","Sortieren nach"
|
578 |
"Sort Order","Reihenfolge"
|
579 |
"Source Model","Source-Modell"
|
@@ -597,20 +603,18 @@
|
|
597 |
"Tax","Steuern"
|
598 |
"Template","Vorlage"
|
599 |
"Text","Text"
|
600 |
-
"The Flat Catalog module has a limit of %2\$d filterable and/or sortable attributes. Currently there are %1\$d of them. Please reduce the number of filterable/sortable attributes in order to use this module
|
601 |
"The attribute model is not defined","Das Attribut-Model ist nicht festgelegt"
|
602 |
"The attribute set has been saved.","Das Attribut-Set wurde gespeichert."
|
603 |
"The base directory to upload file is not specified.","Das Standardverzeichnis zum Upload von Dateien ist nicht festgelegt."
|
604 |
"The category has been deleted.","Die Kategorie wurde gelöscht."
|
605 |
"The category has been saved.","Die Kategorie wurde gespeichert."
|
606 |
"The comparison list was cleared.","Die Vergleichsliste wurde geleert."
|
607 |
-
"The email template is not specified by administrator.","Die E-Mail Vorlage wurde nicht vom Administrator festgelegt."
|
608 |
-
"The file '%s' for '%s' has an invalid extension","Die Datei '%s' für '%s' hat eine ungültige Dateierweiterung"
|
609 |
-
"The file '%s' you uploaded is larger than %s Megabytes allowed by server","Die Datei '%s' die Sie hochladen wollen ist größer wie die %s Megabyte die der Server zulässt"
|
610 |
"The file you uploaded is larger than %s Megabytes allowed by server","Die Datei die Sie hochladen wollen ist größer wie %s Megabyte, die der Server zulässt"
|
611 |
"The filters must be an array.","Die Filter müssen ein Feld sein."
|
612 |
"The image contents is not valid base64 data.","Der Bildinhalt ist keine gültige Base64 Datei."
|
613 |
"The image is not specified.","Das Bild ist nicht festgelegt."
|
|
|
614 |
"The product %s has been added to comparison list.","Der Artikel %s wurde der Vergleichsliste hinzugefügt."
|
615 |
"The product %s has been removed from comparison list.","Der Artikel %s wurde von der Vergleichslisté entfernt."
|
616 |
"The product attribute has been deleted.","Das Artikelattribut wurde gelöscht."
|
@@ -629,11 +633,12 @@
|
|
629 |
"There are no customers for this alert","Es sind keine Kunden für diesen Alarm vorhanden"
|
630 |
"There are no customers for this alert.","Es sind keine Kunden für diesen Alarm vorhanden."
|
631 |
"There are no products matching the selection.","Es stehen keine Artikel entsprechend der Auswahl bereit."
|
632 |
-
"There was an error while request processing.","
|
633 |
"This Attribute no longer exists","Dieses Attribut existiert nicht mehr"
|
634 |
"This attribute cannot be deleted.","Das Attribut kann nicht gelöscht werden."
|
635 |
"This attribute cannot be edited.","Dieses Attribut kann nicht bearbeitet werden."
|
636 |
"This attribute cannot be updated.","Das Attribut kann nicht aktualisiert werden."
|
|
|
637 |
"This attribute is used in configurable products. You cannot remove it from the attribute set.","Dieses Attribut wird von konfigurierbaren Artikeln verwendet. Sie können es daher nicht aus dem Attributset löschen."
|
638 |
"This attribute no longer exists","Dieses Attribut existiert nicht mehr"
|
639 |
"This attribute set no longer exists.","Dieses Attribut-Set existiert nicht mehr."
|
@@ -641,13 +646,13 @@
|
|
641 |
"This group contains system attributes. Please move system attributes to another group and try again.","Diese Gruppe enthält Systemattribute. Bitte verschieben Sie die Systemattribute in eine andere Gruppe und versuchen Sie es noch einmal."
|
642 |
"This is a required option","Das ist eine benötigte Option/Auswahl"
|
643 |
"This product no longer exists.","Dieser Artikel existiert nicht mehr."
|
644 |
-
"This search no longer exists.","
|
645 |
-
"Thumbnail Image","Vorschaubild"
|
646 |
"Tier Pricing","Staffelpreise"
|
647 |
"Tile","Kachel"
|
648 |
"Time Format","Zeitformat"
|
649 |
"Title","Titel"
|
650 |
-
"To reindex the enabled product(s), the store or product must be specified
|
|
|
651 |
"Top/Left","Oben links"
|
652 |
"Top/Right","Oben rechts"
|
653 |
"Total Qty Base Items","Gesamtanzahl der Artikel bei Google Base"
|
@@ -656,14 +661,14 @@
|
|
656 |
"Total of %d record(s) have been updated.","Insgesamt %d Einträge wurden erfolgreich aktualisiert."
|
657 |
"Type","Typ"
|
658 |
"URL Rewrite Management","URL Rewrite Verwaltung"
|
659 |
-
"Unable to complete this request.","
|
660 |
-
"Unable to find a search term to delete.","
|
661 |
-
"Unable to find an attribute to delete.","
|
662 |
"Unable to get the product ID.","Konnte Artikel-ID nicht ermitteln."
|
663 |
"Unassigned Attributes","Nicht zugewiesene Attribute"
|
664 |
-
"Unknown EAV indexer type "%s".","Unbekannter EAV Indexer Typ "%s"."
|
665 |
-
"Unknown attribute: %s.","
|
666 |
-
"Unsupported product type "%s".","
|
667 |
"Up-sells","Up-Selling"
|
668 |
"Update","Aktualisieren"
|
669 |
"Update Attributes","Attribute aktualisieren"
|
@@ -698,10 +703,10 @@
|
|
698 |
"Use in Layered Navigation","In erweiterter Navigation verwenden"
|
699 |
"Use in Layered Navigation<br/>(Can be used only with catalog input type 'Dropdown')","In Filternavigation verwenden<br/>(Kann nur mit dem Eingabetyp 'Dropdown' verwendet werden)"
|
700 |
"Use in Quick Search","In Schnellsuche verwenden"
|
701 |
-
"Used for Sorting in Product Listing","Als Sortiermöglichkeit in
|
702 |
-
"Used in Product Listing","In
|
703 |
-
"Value for "%s" is invalid.","Wert für "%s" ist ungültig."
|
704 |
-
"Value for "%s" is invalid: %s","Wert für "%s" ist ungültig:
|
705 |
"Varchar","Varchar"
|
706 |
"View as","Darstellung als"
|
707 |
"Virtual Product","Virtueller Artikel"
|
@@ -717,23 +722,20 @@
|
|
717 |
"We Also Recommend","Wir empfehlen auch"
|
718 |
"Website","Website"
|
719 |
"Websites","Websites"
|
720 |
-
"
|
721 |
-
"
|
722 |
-
"Wrong
|
723 |
-
"Wrong configuration item
|
724 |
-
"Wrong option instance
|
|
|
725 |
"Wrong option type to get group instance.","Falscher Options-Typ um die Gruppen-Instanz zu erhalten."
|
726 |
-
"Wrong product instance type in options group.","
|
727 |
"Wrong product type filter specified","Falscher Artikeltyp Filter festgelegt"
|
728 |
-
"Wrong product type to extract configurable options.","
|
729 |
"Year Range","Jahres-Zeitraum"
|
730 |
"Yes","Ja"
|
731 |
-
"You cannot email this product to a friend.","Dieser Artikel kann nicht einem Freund empfohlen werden."
|
732 |
"You cannot remove system attribute from this set.","Dieses Systemattribut kann aus dieser Gruppe nicht entfernt werden."
|
733 |
-
"You cannot send more than %d emails at a time.","Sie können nicht mehr wie %d E-Mails auf einmal senden."
|
734 |
-
"You have exceeded limit of %d sends in an hour.","Sie haben das Limit von %d Sendungen pro Stunde überschritten."
|
735 |
"You have no items to compare.","Es ist kein Artikel zum Vergleichen vorhanden."
|
736 |
-
"You have to specify at least one recipient.","Sie müssen mindestens einen Empfänger anlegen."
|
737 |
"You may also be interested in the following product(s)","Sie könnten auch an folgenden Artikeln interessiert sein"
|
738 |
"Zoom In","Vergrößern"
|
739 |
"Zoom Out","Verkleinern"
|
@@ -742,7 +744,7 @@
|
|
742 |
"categories","Kategorien"
|
743 |
"each","je"
|
744 |
"ex. http://domain.com","bspw. http://domain.de"
|
745 |
-
"leave blank if its not an image","
|
746 |
"per page","pro Seite"
|
747 |
"products","Artikel"
|
748 |
"px.","px."
|
@@ -750,61 +752,3 @@
|
|
750 |
"select all","Alle wählen"
|
751 |
"unselect all","Alle abwählen"
|
752 |
"x","x"
|
753 |
-
"Attribute "%s" is required","Attribute "%s" ist erforderlich"
|
754 |
-
"Cannot create writeable directory '%s'","Schreibbares Verzeichnis / Verzeichnisse kann / können nicht erstellt werden"
|
755 |
-
"Category move operation is not possible: new parent category not found.","Kategorie-verschiebung ist nicht möglich: neue Ober-Kategorie nicht gefunden."
|
756 |
-
"Category must be instance of Mage_Catalog_Model_Category","Kategorie muss eine Instanz von Mage_Catalog_Model_Category sein"
|
757 |
-
"Currently Shopping by","Momentane Filter"
|
758 |
-
"Customers for alert %s was successfuly added to queue","Kundenbenachrichtigung %s wurde erfolgreich zur Warteschlange hinzugefügt."
|
759 |
-
"Email to %s was not sent","E-Mail an %s wurde nicht gesendet"
|
760 |
-
"File options format is not valid","Dateizusatzformat ist nicht gültig"
|
761 |
-
"Filter model name must be declared","Filter-Modell-Name muß angegeben sein"
|
762 |
-
"Filter must be as object. Set correct filter please","Filter muß als Objekt vorliegen. Bitte korrekten Filter setzen"
|
763 |
-
"Invalid attribute %s","Attribut %e ungültig"
|
764 |
-
"Invalid attribute option specified for attribute %s (%s), skipping the record","Ungültige Option für Attribut %s definiert (%s), überspringe den Eintrag"
|
765 |
-
"Invalid attribute set specified, skipping the record","Ungültiges Attributset definiert, überspringe den Eintrag"
|
766 |
-
"Invalid category IDs","Ungültige Kategorie-IDs"
|
767 |
-
"Invalid image file type","Ungültiger Bild-Dateityp"
|
768 |
-
"Invalid option id specified for %s (%s), skipping the record","Ungültige Options-ID angegeben für %s (%s), überspringe den Eintrag"
|
769 |
-
"Invalid product type specified, skipping the record","Ungültiger Artikeltyp definiert, überspringe den Eintrag"
|
770 |
-
"Invalid store specified, skipping the record","Ungültiger Store definiert, überspringe den Eintrag"
|
771 |
-
"Invalid tier prices. Product is not associated to the requested website.","Ungültige Staffelpreise. Artikel ist der angeforderten Website nicht zugeordnet."
|
772 |
-
"Invalid transactional email code","Ungültiger E-Mail Transaktionscode"
|
773 |
-
"Link product not exists.","Verknüpfter Artikel existiert nicht."
|
774 |
-
"Maximum number of characters","Maximale Anzahl Zeichen"
|
775 |
-
"Missing SKU, skipping the record","Artikelnummer fehlt, Eintrag übersprungen."
|
776 |
-
"No product collections found","Keine Artikelzusammenstellungen gefunden"
|
777 |
-
"Number of results<br/>(For last time placed)","Anzahl der Ergebnisse <br/>(beim letzten Mal)"
|
778 |
-
"Option validation failed to add product to cart","Überprüfung von Artikel-Optionen beim hinzufügen zum Warenkorb fehlgeschlagen"
|
779 |
-
"Please click on Close Window button if it won\'t be closed automatically","Bitte klicken Sie auf den Fenster schließen Button, wenn sich das Fenster nicht von alleine schließt."
|
780 |
-
"Please refresh "Catalog Rewrites" and "Layered Navigation Indices" in System -> <a href="%s">Cache Management</a>","Bitte aktualisieren Sie "Katalog Rewrites" und "Filter-Navigation Indizes" in System -> <a href="%s">Cache Verwaltung</a>"
|
781 |
-
"Please select product(s)","Bitte wählen Sie ein oder mehrere Artikel"
|
782 |
-
"Please specify the product option(s)","Bitte wählen Sie die Artikeloptionen"
|
783 |
-
"Position In Layered Navigation","Reihenfolge in Filter-Navigation"
|
784 |
-
"Search Term with such search query already exist.","Suchbegriff mit dieser Suchanfrage existiert bereits."
|
785 |
-
"Set Root Category For Store","Rootkategorie für Store festlegen"
|
786 |
-
"Shop by","Einkaufen nach"
|
787 |
-
"Skip import row, required field "%s" for zhe new customer is not defined","Importzeile übersprungen, Pflichtfeld "%s" für neuen Kunden nicht angegeben"
|
788 |
-
"Skipping import row, required field "%s" for new products is not defined","Importzeile übersprungen, Pflichtfeld "%s" für neue Artikel nicht angegeben"
|
789 |
-
"Skipping import row, required field "%s" is not defined","Importzeile übersprungen, Pflichtfeld "%s" nicht angegeben"
|
790 |
-
"Skipping import row, store "%s" field does not exists.","Importzeile übersprungen, Store "%s" Feld existiert nicht"
|
791 |
-
"Some of the processed products have no SKU value. Please fill it.","Some of the processed products have no SKU value. Please fill it."
|
792 |
-
"Some of the products below don\'t have all the required options. Please remove them and add again with all the required options.","Einige der nachstehenden Artikel besitzen nicht alle erforderlichen Optionen. Bitte löschen Sie diese & legen diese mit den erfoderlichen Optionen neu an."
|
793 |
-
"The base directory to upload image file is not specified.","Das Standardverzeichnis zum Upload von Bildern ist nicht festgelegt."
|
794 |
-
"This search no longer exists","Diese Suche existiert nicht mehr"
|
795 |
-
"Unable to complete this request. Please try again later.","Anfrage konnte nicht ausgeführt werden. Bitte versuchen Sie es später noch einmal."
|
796 |
-
"Unable to find a search term to delete","Es wurde kein Suchbegriff zum Löschen gefunden"
|
797 |
-
"Unable to find an attribute to delete","Es wurde kein Attribut zum Löschen gefunden"
|
798 |
-
"Unknown attribute: %s","Unbekanntes Attribut: %s"
|
799 |
-
"Unsupported product type "%s"","Nicht unterstützter Artikel Typ"%s""
|
800 |
-
"Wrong BuyRequest instance in options group","Falsche Kauf-Anfrage der Instanz in den Options-Gruppe"
|
801 |
-
"Wrong option instance type in options group","Falscher Optionsinstanz-Typ in den Options-Gruppe"
|
802 |
-
"Wrong product instance type in options group","Falsche Artikeloptionsinstanz-Typ in der Options-Gruppe"
|
803 |
-
"Wrong quote item instance in options group","Falsche Anfrage der Artikelinstanz in der Options-Gruppe"
|
804 |
-
"Wrong quote item option instance in options group","Falsche Anfrage der Artikeloptionensinstanz in der Options-Gruppe"
|
805 |
-
"You cannot email this product to a friend","Sie können keinen Freund per E-Mail über diesen Artikel informieren"
|
806 |
-
"You cannot send more than %d emails at a time","Sie können nicht mehr als %d E-Mails zur gleichen Zeit senden"
|
807 |
-
"You have exceeded limit of %d sends in an hour","Sie haben die Begrenzung von %d E-Mail Sendungen pro Stunde überschritten"
|
808 |
-
"You have to specify at least one recipient","Sie müssen mindestens einen Empfänger angeben"
|
809 |
-
"Use Parent Category Settings","Einstellungen der übergeordneten Kategorie übernehmen"
|
810 |
-
"Apply to Products","Auf Artikel anwenden"
|
8 |
"* Required Fields","* Pflichtangaben"
|
9 |
"-- Please Select --","-- Bitte wählen --"
|
10 |
"86400 by default, if not set. To refresh instantly, Clear the Blocks HTML Output Cache.","86400 als Standard, falls nicht gesetzt. Um die Instanz zu aktualisieren, deaktivieren Sie den Cache für die Ausgabe von HTML-Blöcken."
|
11 |
+
"<strong style=""color:red"">Warning!</strong> Applying MAP by default will hide all product prices on the frontend.","<strong style=""color:red"">Warnung:</strong> Die standardmäßige Anwendung der UVP wird alle Artikelpreise im Shop verstecken!"
|
12 |
"A group with the same name already exists.","Eine Gruppe mit dem selben Namen existiert bereits."
|
13 |
"A name is required","Ein Name wird benötigt"
|
14 |
"A product type is not defined for the indexer.","Eine Artikelart ist noch nicht definiert für den Indexer."
|
15 |
"ALL GROUPS","ALLE GRUPPEN"
|
16 |
"AM","AM"
|
17 |
"Action","Aktion"
|
18 |
+
"Actual Price","Tatsächlicher Preis"
|
19 |
"Add Attribute","Attribut hinzufügen"
|
20 |
"Add Design Change","Gestaltungsänderung hinzufügen"
|
21 |
"Add Group","Gruppe hinzufügen"
|
48 |
"Allow HTML Tags on Frontend","HTML-Tags im Frontend erlauben"
|
49 |
"Allowed File Extensions","Erlaubte Dateierweiterungen"
|
50 |
"Allowed file extensions to upload","Erlaubte Dateierweiterungen zum hochladen"
|
51 |
+
"An error occurred while adding products to websites.","Ein Fehler ist beim Zuweisen von Artikeln zu einer Website."
|
52 |
+
"An error occurred while clearing comparison list.","Ein Fehler ist beim Leeren der Vergleichsliste aufgetreten."
|
53 |
+
"An error occurred while removing products from websites.","Ein Fehler ist beim Löschen von Artikeln von einer Website aufgetreten."
|
54 |
+
"An error occurred while saving the URL rewrite","Ein Fehler ist beim Speichern des URL-Rewrites aufgetreten"
|
|
|
55 |
"An error occurred while saving the attribute set.","Beim Speichern des Attribut-Sets ist ein Fehler aufgetreten."
|
|
|
56 |
"An error occurred while saving the product. ","Ein Fehler ist beim Speichern des Artikels aufgetreten. "
|
57 |
"An error occurred while saving the search query.","Beim Speichern der Suchanfrage ist ein Fehler aufgetreten."
|
58 |
"An error occurred while saving this group.","Beim Speichern dieser Gruppe ist ein Fehler aufgetreten."
|
59 |
"An error occurred while trying to delete the category.","Beim Versuch die Kategorie zu löschen ist ein Fehler aufgetreten."
|
60 |
+
"An error occurred while updating the product(s) attributes.","Beim Aktualisieren der Artikel-Attribute ist ein Fehler aufgetreten."
|
61 |
+
"An error occurred while updating the product(s) status.","Beim Aktualisieren des Artikel-Status ist ein Fehler aufgetreten."
|
62 |
+
"An invalid group ID is specified, skipping the record.","Eine ungültige Gruppen-ID ist hinterlegt, Eintrag übersprungen."
|
63 |
"An invalid option ID is specified for %s (%s), skipping the record.","Eine ungültige Options-ID ist festgelegt für %s (%s), Eintrag überspringen."
|
64 |
"An invalid store was specified.","Ein ungültiger Store ist festgelegt."
|
65 |
"Anchor Custom Text","Individueller Anker-Text"
|
66 |
"Anchor Custom Title","Individueller Anker-Titel"
|
67 |
"Applicable to catalog products and categories only. Any media content will be inserted into editor as a static URL. It is not updated if the system configuration base URL changes.","Nur anwendbar auf Katalog Artikel und Kategorien. Jeder Medien-Inhalt wird über den Editor als statische URL eingefügt. Diese wird nicht aktualisiert wenn in der Systemkonfiguration die BasisURL verändert wird."
|
68 |
+
"Apply MAP (Default Value)","UVP anwenden (Standardwert)"
|
69 |
"Apply To","Anwenden auf"
|
70 |
"Approved","Freigegeben"
|
71 |
"Are you sure you want to delete this category?","Sind Sie sicher, dass Sie diese Kategorie wirklich löschen wollen?"
|
79 |
"Assigned Products","Zugewiesene Artikel"
|
80 |
"Associated Products","Verknüpfte Artikel"
|
81 |
"Attrib. Set Name","Attributsetname"
|
82 |
+
"Attribute ""%s"" is invalid.","Attribut ""%s"" ist ungültig."
|
83 |
+
"Attribute ""%s"" is required.","Attribut ""%s"" ist ein Pflichtfeld."
|
84 |
"Attribute Information","Attributinformation"
|
85 |
"Attribute Model","Attributmodell"
|
86 |
"Attribute Name:","Attributname"
|
97 |
"Backend Table Title","Backend Tabellentitel"
|
98 |
"Backorders","Nachbestellungen"
|
99 |
"Based On","Basiert auf"
|
100 |
+
"Before Order Confirmation","Vor der Bestellbestätigung"
|
101 |
"Best Value","Bewertung"
|
102 |
"Block after Info Column","Block nach der Info-Spalte"
|
103 |
"Bottom Block Options Wrapper","Unterer Options-Block Container"
|
105 |
"Bottom/Right","Unten rechts"
|
106 |
"Browse By","Durchsuchen nach"
|
107 |
"Bundle Items","Bündel-Artikel"
|
108 |
+
"Buy %1$s","Kaufe %1$"
|
109 |
+
"Buy %1$s for","Kaufen Sie %1$s zum Preis von "
|
110 |
"Buy %1$s for %2$s","ab %1$s für %2$s"
|
111 |
"Buy %1$s for %2$s (%3$s incl. tax) each","ab %1$s zu je %2$s (%3$s inkl. Steuern)"
|
112 |
"Buy %1$s for %2$s each","ab %1$s zu je %2$s"
|
121 |
"Cannot create writeable directory '%s'.","Verzeichnis '%s' mit Schreibrechten konnte nicht erstellt werden."
|
122 |
"Cart Item Attribute","Warenkorb Artikel Attribut"
|
123 |
"Catalog","Katalog"
|
124 |
+
"Catalog Category (Anchor)","Katalog Kategorie (Anker)"
|
125 |
+
"Catalog Category (Non-Anchor)","Katalog Kategorie (Kein-Anker)"
|
126 |
+
"Catalog Category (Without Subcategories)","Katalog Kategorie (Ohne Unterkategorien)"
|
127 |
"Catalog Category Link","Katalog Kategorie-Link"
|
128 |
+
"Catalog New Products List","Katalog - Liste neuer Artikel"
|
129 |
"Catalog Price Scope","Katalogpreis-Gültigkeit"
|
130 |
"Catalog Product Compare List","Katalog Artikel Vergleichsliste"
|
131 |
"Catalog Product Email to a Friend","Katalog Artikel E-Mail an einen Freund"
|
132 |
+
"Catalog Product Image Gallery Popup","Katalog Artikel Galerie PopUp"
|
133 |
"Catalog Product Link","Katalog Artikel Link"
|
134 |
"Catalog Product View (Any)","Katalog Artikel Ansicht(jede)"
|
135 |
"Catalog Product View (Configurable)","Katalog Artikel Ansicht(Konfigurierbare)"
|
157 |
"Category URL Suffix","Kategorie URL-Suffix"
|
158 |
"Category attributes API","Kategorie Attribut-API"
|
159 |
"Category move error","Fehler beim Verschieben der Kategorie"
|
160 |
+
"Category move operation is not possible: parent category is equal to child category.","Verschieben der Kategorie ist nicht möglich, da die übergeordnete Kategorie der untergeordneten Kategorie gleicht."
|
161 |
+
"Category move operation is not possible: the current category was not found.","Verschieben der Kategorie ist nicht möglich, da die aktuelle Kategorie nicht gefunden wurde."
|
162 |
+
"Category move operation is not possible: the new parent category was not found.","Verschieben der Kategorie ist nicht möglich, da die neue übergeordnete Kategorie nicht gefunden wurde."
|
163 |
+
"Category must be an instance of Mage_Catalog_Model_Category.","Kategorie muss eine Instanz von Mage_Catalog_Model_Category sein."
|
164 |
"Center","Mittig"
|
165 |
"Change","Veränderung"
|
166 |
+
"Change or Retrieve attribute store view","Ändern oder Attribut StoreView abfragen"
|
167 |
"Change status","Status ändern"
|
168 |
"Check items to add to the cart or","Wählen Sie die Artikel aus, die dem Warenkorb hinzugefügt werden sollen oder"
|
169 |
"Choose an Option...","Option wählen..."
|
170 |
"Clear All","Alles entfernen"
|
171 |
+
"Click for price","Klicken Sie hier, um den Preis anzuzeigen"
|
172 |
"Close Window","Fenster schließen"
|
173 |
"Collapse All","Alle einklappen"
|
174 |
"Comma-separated.","Kommma-getrennt."
|
194 |
"Create new category","Neue Kategorie anlegen"
|
195 |
"Create new product","Neuen Artikel anlegen"
|
196 |
"Cross-sells","Cross-Selling"
|
197 |
+
"Currently Shopping by:","Filtern nach:"
|
198 |
"Custom Design","Eigene Gestaltung"
|
199 |
"Custom Options","Individuelle Optionen"
|
200 |
"Customer Group","Kundengruppe"
|
201 |
"Customers Reviews","Kundenmeinungen"
|
202 |
"Customers Tagged Product","Schlagworte von Kunden"
|
203 |
+
"Data Type for Saving in Database","Daten-Typ zum Speichern in der Datenbank"
|
|
|
204 |
"Date & Time Custom Options","Kundenoptionen - abhängig von Datum & Zeit"
|
205 |
"Date Fields Order","Reihenfolge der Datum-Felder"
|
206 |
"Date Subscribed","Anmeldedatum"
|
207 |
"Datetime","Datum/Zeit"
|
208 |
"Decimal","Dezimalzahl"
|
209 |
"Declare attribute value saving scope","Bestimme Speicherbereich der Werte des Attributs"
|
210 |
+
"Default ""What's This"" Text Message","Standard ""Was ist das?"" Text Nachricht"
|
211 |
+
"Default Popup Text Message","Standard Popup Text Nachricht"
|
212 |
"Default Price","Standardpreis"
|
213 |
"Default Price Navigation Step","Standardpreis Navigations Schritt"
|
214 |
"Default Qty","Standardmenge"
|
215 |
"Default Values","Standardwerte"
|
216 |
+
"Defines the base currency scope (""Currency Setup"" > ""Currency Options"" > ""Base Currency"").","Definiert den Standard Gültigkeitsbereich (""Einrichten der Währung"" > ""Währungsoptionen"" > ""Basis Währung"")."
|
217 |
"Delete","Löschen"
|
218 |
"Delete Attribute","Attribut löschen"
|
219 |
"Delete Attribute Set","Attributset löschen"
|
229 |
"Details","Details"
|
230 |
"Disabled","Deaktiviert"
|
231 |
"Disallowed file type.","Nicht erlaubter Datei-Typ."
|
232 |
+
"Display Actual Price","Tatsächlichen Preis anzeigen"
|
233 |
"Display in Suggested Terms","Zeige in vorgeschlagenen Begriffen"
|
|
|
234 |
"Double click on a group to rename it","Klicken Sie doppelt auf eine Gruppe, um diese umzubenennen"
|
235 |
"Double click on above image to view full picture","Klicken Sie doppelt auf das obere Bild, um es im voller Größe zu sehen"
|
236 |
"Downloadable Information","Herunterladbare Informationen"
|
237 |
"Duplicate","Duplizieren"
|
238 |
"Duplicate website tier price customer group and quantity.","Doppelte Website, Staffelpreis, Kundengruppe und Menge."
|
239 |
"Duplicate website, country and state tax found.","Doppelte Website, Bundesland und Land - Steuern gefunden."
|
240 |
+
"E.g. {{media url=""path/to/image.jpg""}} {{skin url=""path/to/picture.gif""}}. Dynamic directives parsing impacts catalog performance.","Z.B. {{media url=""pfad/zum/bild.jpg""}} {{skin url=""pfad/zum/bild.gif""}}. Dynamische Pfade haben negative Auswirkungen auf die Katalog-Performance."
|
241 |
"Edit","Bearbeiten"
|
242 |
"Edit Attribute Set '%s'","Attributset'%s' bearbeiten"
|
243 |
"Edit Product Attribute","Artikelattribute bearbeiten"
|
244 |
+
"Edit Product Attribute ""%s""","Artikelattribut ""%s"" bearbeiten"
|
245 |
"Edit Search","Suche bearbeiten"
|
246 |
"Edit Search '%s'","Suche '%s' bearbeiten"
|
247 |
"Edit Set Name","Set-Namen bearbeiten"
|
248 |
"Email","E-Mail"
|
|
|
249 |
"Email to a Friend","E-Mail an einen Freund"
|
250 |
"Empty","Leer"
|
251 |
+
"Enable MAP","UVP Aktivieren"
|
252 |
"Enable Qty Increments","Aktiviere Mengeneinheiten"
|
253 |
"Enable WYSIWYG","WYSIWYG aktivieren"
|
254 |
"Enabled","Aktiviert"
|
256 |
"Exclude","Nicht in Galerie"
|
257 |
"Expand All","Alle ausklappen"
|
258 |
"Failed","Fehlgeschlagen"
|
259 |
+
"Failed to copy file %s. Please, delete media with non-existing images and try again.","Fehler beim Kopieren der Datei %s. Bitte löschen Sie Medien mit nicht existierenden Bildern und versuchen Sie es erneut."
|
260 |
"Failed to move file: %s","Fehler beim Verschieben der Datei: %s"
|
261 |
"Feature Products","Besonders präsentierte Artikel"
|
262 |
"Field is not complete","Feld ist nicht vollständig"
|
263 |
"File options format is not valid.","Dateioptionen Format ist ungültig."
|
264 |
"File upload failed","Datei Upload fehlgeschlagen"
|
265 |
+
"Filter model name must be declared.","Filter Model Name muss deklariert werden."
|
266 |
"Filter must be an object. Please set correct filter.","Filter muss ein Objekt sein. Bitte setzen Sie den korrekten Filter."
|
267 |
+
"Filterable (no results)","Filterbar (keine Artikelanzahl)"
|
268 |
+
"Filterable (with results)","Filterbar (mit Artikelanzahl)"
|
269 |
"First Name","Vorname"
|
270 |
"Fixed","Festpreis"
|
271 |
"For internal use.","Zur internen Verwendung."
|
292 |
"Image does not exist.","Bild existiert nicht."
|
293 |
"Image file was not found.","Bilddatei wurde nicht gefunden."
|
294 |
"Image type and information need to be specified for each store view.","Bildtyp und -information muß für jede StoreView separat hinterlegt werden."
|
295 |
+
"In Cart","Im Warenkorb"
|
296 |
"In Stock","Auf Lager"
|
297 |
"In stock","Auf Lager"
|
298 |
"Incl. Tax","Inkl. Steuern"
|
300 |
"Index product attributes for layered navigation building","Indexierung von Artikel-Attributen zum Aufbau der Filternavigation"
|
301 |
"Index product prices","Indexierung von Artikel Preisen"
|
302 |
"Indexed category/products association","Indexierung von Kategorie & Artikel Beziehungen / Verknüpfungen"
|
303 |
+
"Info Column Options Wrapper","Optionsbox in Info Spalte"
|
304 |
"Input Type","Eingabetyp"
|
305 |
"Integer","Ganzzahl"
|
306 |
"Invalid Tier Prices","Ungültige Staffelpreise"
|
307 |
+
"Invalid attribute %s","Attribut %e ungültig"
|
308 |
+
"Invalid attribute option specified for attribute %s (%s), skipping the record.","Ungültige Attributoption für Attribut %s (%s) angegeben, Zeile wird übersprungen"
|
309 |
+
"Invalid attribute set specified, skipping the record.","Ungültiges Attribut Set hinterlegt, Eintrag übersprungen."
|
310 |
"Invalid block: %s.","Ungültiger Block: %s."
|
311 |
"Invalid category IDs.","Ungültige Kategorie IDs."
|
312 |
"Invalid category.","Ungültige Kategorie."
|
313 |
"Invalid image file type.","Ungültiger Bild Dateityp."
|
314 |
"Invalid image type.","Ungültiger Bildtyp."
|
315 |
+
"Invalid option ID specified for %s (%s), skipping the record.","Ungültige Option-ID für %s (%s) angegeben, Zeile wird übersprungen."
|
316 |
+
"Invalid product type specified, skipping the record.","Ungültige Artikelart angegeben, Zeile wird übersprungen."
|
317 |
"Invalid store specified","Ungültiger Store angegeben"
|
318 |
+
"Invalid store specified, skipping the record.","Ungültiger Store angegeben, Zeile wird übersprungen."
|
319 |
+
"Invalid tier prices. The product is not associated to the requested website.","Ungültige Staffelpreise. Der Artikel ist der angeforderten Website nicht zugeordnet."
|
|
|
320 |
"Inventory","Lagerverwaltung"
|
321 |
"Is Default","Standard"
|
322 |
"Is Required","Pflichtangabe"
|
328 |
"Last Name","Nachname"
|
329 |
"Last Notification","Letzter Hinweis"
|
330 |
"Layered Navigation","Filternavigation"
|
|
|
331 |
"Learn More","Erfahren Sie mehr"
|
332 |
"Line %d, Email: %s","Zeile %d, E-Mail: %s"
|
333 |
"Line %d, SKU: %s","Zeile %d, Artikelnummer: %s"
|
353 |
"Maximal Depth","Maximale Tiefe"
|
354 |
"Maximum Image Size","Maximale Bildgröße"
|
355 |
"Maximum Qty Allowed in Shopping Cart","Höchstbestellmenge"
|
|
|
356 |
"Maximum image height","Maximale Bildhöhe"
|
357 |
"Maximum image width","Maximale Bildbreite"
|
358 |
"Maximum number of characters:","Maximale Anzahl von Ziffern oder Zeichen:"
|
359 |
"Media Image","Bild"
|
360 |
+
"Minimum Advertised Price","Unverbindliche Preisempfehlung"
|
361 |
"Minimum Lines per Page","Minimale Zeilenanzahl pro Seite"
|
362 |
"Minimum Qty Allowed in Shopping Cart","Mindestbestellmenge"
|
363 |
"Minimum Qty for Item\'s Status to be Out of Stock","Stückzahl für Nicht auf Lager-Status"
|
365 |
"More Views","Mehr Ansichten"
|
366 |
"Move","Verschieben"
|
367 |
"Move category in tree","Verschieben der Kategorie in den Baum"
|
368 |
+
"Must be in the allowed values list.","Muss in der Liste erlaubter Werte enthalten sein."
|
369 |
"N/A","N/A"
|
370 |
"Name","Name"
|
371 |
"Name in %s","Name in %s"
|
390 |
"Notify for Quantity Below","Hinweis bei Lagerbestand unter"
|
391 |
"Number of Products to Display","Anzahl der Artikel die angezeigt werden sollen"
|
392 |
"Number of Uses","Anzahl der Verwendungen"
|
393 |
+
"Number of results<br/>(For the last time placed)","Anzahl der Ergebnisse<br/>(Zum letzten Mal eingegeben)"
|
394 |
"OK","OK"
|
395 |
"OR","ODER"
|
396 |
"Old Price:","Alter Preis:"
|
397 |
+
"On Gesture","Bei Mausaktion"
|
398 |
+
"Option validation failed to add product to cart.","Optionsprüfung fehlgeschlagen beim Hinzufügen zum Warenkorb."
|
399 |
"Option:","Option:"
|
400 |
"Options Control","Optionenkontrolle"
|
401 |
"Options is required","Optionen sind Pflichtangaben"
|
412 |
"Please be careful as once you click on the row it will load package data form the selected file and all unsaved form data will be lost.","ACHTUNG: Bei einem Klick auf die Zeile werden die Paketdaten geladen und überschreiben alle ungespeicherten Formulardaten!"
|
413 |
"Please click on the Close Window button if it is not closed automatically.","Bitte klicken Sie auf den Fenster schließen Button falls es nicht automatisch schließen sollte."
|
414 |
"Please enter a new group name","Bitte geben Sie einen neuen Gruppennamen ein"
|
415 |
+
"Please refresh ""Catalog URL Rewrites"" and ""Product Attributes"" in System -> <a href=""%s"">Index Management</a>","Bitte aktualisieren Sie ""Katalog URL Rewrites"" und ""Artikel Attribute"" in System -> <a href=""%s"">Index-Verwaltung</a>"
|
416 |
"Please select a static block ...","Bitte wählen Sie einen Block ..."
|
417 |
"Please select items.","Bitte wählen Sie Artikel"
|
418 |
"Please select one or more attributes.","Bitte wählen Sie ein oder mehrere Attribut(e)"
|
430 |
"Position in Layered Navigation","Position in Filternavigation"
|
431 |
"Position of attribute in layered navigation block","Position des Attributs in Filter-Navigation"
|
432 |
"Prev","Zurück"
|
|
|
433 |
"Price","Preis"
|
434 |
"Price Navigation Step Calculation","Preis Navigation Schritt Kalkulation"
|
435 |
"Price Type","Preisart"
|
494 |
"Quick Create","Schnellanlegen"
|
495 |
"Quick Overview","Kurzübersicht"
|
496 |
"Quick simple product creation","Schnell einfache Artikel anlegen"
|
497 |
+
"Records for ""","Einträge für """
|
498 |
"Redirect","Weiterleitung"
|
499 |
"Redirect URL","Weiterleitungs-URL"
|
500 |
"Regular Price:","Regulärer Preis:"
|
543 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
544 |
"Saved %d record(s)","Gespeichert %d Einträge"
|
545 |
"Scope","Geltungsbereich"
|
546 |
+
"Scope must not be changed, because the attribute is used in configurable products.","Geltungsbereich darf nicht geändert werden, da das Attribut in konfigurierbaren Artikeln benutzt wird."
|
547 |
"Search","Suche"
|
548 |
"Search Engine Optimizations","Suchmaschinen Optimierung"
|
549 |
"Search Information","Suchinformationen"
|
550 |
"Search Query","Suchanfrage"
|
551 |
"Search Term with such search query already exists.","Suchergebnis mit dieser Suchanfrage existiert bereits."
|
552 |
"Searchable","Suchbar"
|
553 |
+
"See price before order confirmation.","Bitte beachten Sie den Preis vor der Bestellbestätigung."
|
554 |
"Select Category...","Kategorie auswählen..."
|
555 |
"Select Configurable Attributes ","Wählen Sie die konfigurierbaren Attribute"
|
556 |
"Select Product...","Artikel auswählen..."
|
563 |
"Set Descending Direction","In absteigender Reihenfolge"
|
564 |
"Set Name","Setname"
|
565 |
"Set Root Category for Store","Root Kategorie setzen für den Store"
|
566 |
+
"Set root category for this store in the <a href=""%s"">configuration</a>","Rootkategorie für diesen Store in der <a href=""%s"">Konfiguration</a> festlegen"
|
567 |
"Set special price","Sonderpreis festlegen"
|
568 |
"Set/Get current store view","Aktuellen StoreView festlegen/abrufen"
|
569 |
"Settings","Einstellungen"
|
575 |
"Simple Product","Einfacher Artikel"
|
576 |
"Site Map","Site Map"
|
577 |
"Sitemap","Sitemap"
|
578 |
+
"Skip import row, required field ""%s"" for the new customer is not defined.","Importzeile übersprungen, Pflichtfeld ""%s"" für neuen Kunden nicht angegeben"
|
579 |
+
"Skipping import row, required field ""%s"" is not defined.","Importzeile übersprungen, Pflichtfeld ""%s"" nicht angegeben"
|
580 |
+
"Skipping import row, the value ""%s"" is not valid for the ""%s"" field.","Überspringen der Importzeile, der Wert ""%s"" ist nicht gültig für das Feld ""%s""."
|
581 |
+
"Some of the processed products have no SKU value defined. Please fill it prior to performing operations on these products.","Einige der verarbeiteten Artikel besitzen keine SKU. Bitte füllen Sie dieses Feld aus, bevor Sie weitere Aktionen an diesen Artikeln ausführen."
|
582 |
+
"Some of the products below do not have all the required options. Please edit them and configure all the required options.","Einige der unten genannten Artikel besitzen nicht alle erforderlichen Optionen. Bitte bearbeiten Sie diese und konfigurieren Sie alle erforderlichen Optionen."
|
|
|
|
|
|
|
|
|
583 |
"Sort By","Sortieren nach"
|
584 |
"Sort Order","Reihenfolge"
|
585 |
"Source Model","Source-Modell"
|
603 |
"Tax","Steuern"
|
604 |
"Template","Vorlage"
|
605 |
"Text","Text"
|
606 |
+
"The Flat Catalog module has a limit of %2\$d filterable and/or sortable attributes. Currently there are %1\$d of them. Please reduce the number of filterable/sortable attributes in order to use this module","Das Flat Katalog Module hat eine Beschränkung von %2\$d filterbaren/sortierbaren Attributen. Aktuell sind es %1\$d. Bitte reduzieren Sie die Anzahl von filterbaren/sortierbaren Attributen, wenn Sie dieses Modul einsetzen wollen."
|
607 |
"The attribute model is not defined","Das Attribut-Model ist nicht festgelegt"
|
608 |
"The attribute set has been saved.","Das Attribut-Set wurde gespeichert."
|
609 |
"The base directory to upload file is not specified.","Das Standardverzeichnis zum Upload von Dateien ist nicht festgelegt."
|
610 |
"The category has been deleted.","Die Kategorie wurde gelöscht."
|
611 |
"The category has been saved.","Die Kategorie wurde gespeichert."
|
612 |
"The comparison list was cleared.","Die Vergleichsliste wurde geleert."
|
|
|
|
|
|
|
613 |
"The file you uploaded is larger than %s Megabytes allowed by server","Die Datei die Sie hochladen wollen ist größer wie %s Megabyte, die der Server zulässt"
|
614 |
"The filters must be an array.","Die Filter müssen ein Feld sein."
|
615 |
"The image contents is not valid base64 data.","Der Bildinhalt ist keine gültige Base64 Datei."
|
616 |
"The image is not specified.","Das Bild ist nicht festgelegt."
|
617 |
+
"The model collection resource name is not defined.","Der Model-Collections-Rescource-Name ist nicht definiert."
|
618 |
"The product %s has been added to comparison list.","Der Artikel %s wurde der Vergleichsliste hinzugefügt."
|
619 |
"The product %s has been removed from comparison list.","Der Artikel %s wurde von der Vergleichslisté entfernt."
|
620 |
"The product attribute has been deleted.","Das Artikelattribut wurde gelöscht."
|
633 |
"There are no customers for this alert","Es sind keine Kunden für diesen Alarm vorhanden"
|
634 |
"There are no customers for this alert.","Es sind keine Kunden für diesen Alarm vorhanden."
|
635 |
"There are no products matching the selection.","Es stehen keine Artikel entsprechend der Auswahl bereit."
|
636 |
+
"There was an error while request processing.","Während der Verarbeitung der Anfrage ist ein Fehler aufgetreten."
|
637 |
"This Attribute no longer exists","Dieses Attribut existiert nicht mehr"
|
638 |
"This attribute cannot be deleted.","Das Attribut kann nicht gelöscht werden."
|
639 |
"This attribute cannot be edited.","Dieses Attribut kann nicht bearbeitet werden."
|
640 |
"This attribute cannot be updated.","Das Attribut kann nicht aktualisiert werden."
|
641 |
+
"This attribute is used in configurable products.","Dieses Attribut wird von konfigurierbaren Artikeln benutzt."
|
642 |
"This attribute is used in configurable products. You cannot remove it from the attribute set.","Dieses Attribut wird von konfigurierbaren Artikeln verwendet. Sie können es daher nicht aus dem Attributset löschen."
|
643 |
"This attribute no longer exists","Dieses Attribut existiert nicht mehr"
|
644 |
"This attribute set no longer exists.","Dieses Attribut-Set existiert nicht mehr."
|
646 |
"This group contains system attributes. Please move system attributes to another group and try again.","Diese Gruppe enthält Systemattribute. Bitte verschieben Sie die Systemattribute in eine andere Gruppe und versuchen Sie es noch einmal."
|
647 |
"This is a required option","Das ist eine benötigte Option/Auswahl"
|
648 |
"This product no longer exists.","Dieser Artikel existiert nicht mehr."
|
649 |
+
"This search no longer exists.","Diese Suche existiert nicht mehr."
|
|
|
650 |
"Tier Pricing","Staffelpreise"
|
651 |
"Tile","Kachel"
|
652 |
"Time Format","Zeitformat"
|
653 |
"Title","Titel"
|
654 |
+
"To reindex the enabled product(s), the store or product must be specified","Um die ausgewählten Artikel neu zu indizieren, müssen Store oder Artikel festgelegt sein."
|
655 |
+
"To see product price, add this item to your cart. You can always remove it later.","Um den Preis dieses Artikels zu sehen, legen Sie ihn bitte in Ihren Warenkorb. Sie können ihn später jederzeit wieder aus dem Warenkorb entfernen."
|
656 |
"Top/Left","Oben links"
|
657 |
"Top/Right","Oben rechts"
|
658 |
"Total Qty Base Items","Gesamtanzahl der Artikel bei Google Base"
|
661 |
"Total of %d record(s) have been updated.","Insgesamt %d Einträge wurden erfolgreich aktualisiert."
|
662 |
"Type","Typ"
|
663 |
"URL Rewrite Management","URL Rewrite Verwaltung"
|
664 |
+
"Unable to complete this request.","Diese Anfrage konnte nicht verarbeitet werden."
|
665 |
+
"Unable to find a search term to delete.","Es konnte keine Suchanfrage zum Löschen gefunden werden."
|
666 |
+
"Unable to find an attribute to delete.","Es konnte keine Attribut zum Löschen gefunden werden."
|
667 |
"Unable to get the product ID.","Konnte Artikel-ID nicht ermitteln."
|
668 |
"Unassigned Attributes","Nicht zugewiesene Attribute"
|
669 |
+
"Unknown EAV indexer type ""%s"".","Unbekannter EAV Indexer Typ ""%s""."
|
670 |
+
"Unknown attribute: %s.","Unbekanntes Attribut: %s."
|
671 |
+
"Unsupported product type ""%s"".","Nicht unterstützter Artikel Typ ""%s""."
|
672 |
"Up-sells","Up-Selling"
|
673 |
"Update","Aktualisieren"
|
674 |
"Update Attributes","Attribute aktualisieren"
|
703 |
"Use in Layered Navigation","In erweiterter Navigation verwenden"
|
704 |
"Use in Layered Navigation<br/>(Can be used only with catalog input type 'Dropdown')","In Filternavigation verwenden<br/>(Kann nur mit dem Eingabetyp 'Dropdown' verwendet werden)"
|
705 |
"Use in Quick Search","In Schnellsuche verwenden"
|
706 |
+
"Used for Sorting in Product Listing","Als Sortiermöglichkeit in Kategorieansicht verwendbar"
|
707 |
+
"Used in Product Listing","In Kategorieansicht verwenden"
|
708 |
+
"Value for ""%s"" is invalid.","Wert für ""%s"" ist ungültig."
|
709 |
+
"Value for ""%s"" is invalid: %s","Wert für ""%s"" ist ungültig:"
|
710 |
"Varchar","Varchar"
|
711 |
"View as","Darstellung als"
|
712 |
"Virtual Product","Virtueller Artikel"
|
722 |
"We Also Recommend","Wir empfehlen auch"
|
723 |
"Website","Website"
|
724 |
"Websites","Websites"
|
725 |
+
"What's this?","Was ist das?"
|
726 |
+
"Whether to show ""All"" option in the ""Show X Per Page"" dropdown.","Soll die Auswahl ""alle Artikel anzeigen"" in der Auswahlbox ""Zeige x Artikel pro Seite"" erscheinen?"
|
727 |
+
"Wrong BuyRequest instance in options group.","Falsche Kaufanfrage Instanz in der Optionsgruppe."
|
728 |
+
"Wrong configuration item instance in options group.","Falsche Konfigurationsinstanz in der Optionsgruppe."
|
729 |
+
"Wrong configuration item option instance in options group.","Falsche Konfiguration-Optionsinstanz in der Optionsgruppe."
|
730 |
+
"Wrong option instance type in options group.","Falscher Optionsinstanztyp in der Optionsgruppe."
|
731 |
"Wrong option type to get group instance.","Falscher Options-Typ um die Gruppen-Instanz zu erhalten."
|
732 |
+
"Wrong product instance type in options group.","Falscher Artikelinstanztyp in der Optionsgruppe."
|
733 |
"Wrong product type filter specified","Falscher Artikeltyp Filter festgelegt"
|
734 |
+
"Wrong product type to extract configurable options.","Falscher Artikeltyp zur Abfrage der konfigurierbaren Optionen."
|
735 |
"Year Range","Jahres-Zeitraum"
|
736 |
"Yes","Ja"
|
|
|
737 |
"You cannot remove system attribute from this set.","Dieses Systemattribut kann aus dieser Gruppe nicht entfernt werden."
|
|
|
|
|
738 |
"You have no items to compare.","Es ist kein Artikel zum Vergleichen vorhanden."
|
|
|
739 |
"You may also be interested in the following product(s)","Sie könnten auch an folgenden Artikeln interessiert sein"
|
740 |
"Zoom In","Vergrößern"
|
741 |
"Zoom Out","Verkleinern"
|
744 |
"categories","Kategorien"
|
745 |
"each","je"
|
746 |
"ex. http://domain.com","bspw. http://domain.de"
|
747 |
+
"leave blank if its not an image","Bitte leer lassen, falls es sich nicht um ein Bild handelt"
|
748 |
"per page","pro Seite"
|
749 |
"products","Artikel"
|
750 |
"px.","px."
|
752 |
"select all","Alle wählen"
|
753 |
"unselect all","Alle abwählen"
|
754 |
"x","x"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_CatalogInventory.csv
CHANGED
@@ -1,26 +1,25 @@
|
|
1 |
-
"
|
2 |
-
"%s is
|
3 |
-
"%s is not a correct comparsion method.","%s is not a correct comparsion method."
|
4 |
"<strong>Note</strong> that these settings are applicable to cart line items, not the whole cart.","<strong>Bitte beachten Sie</strong>, dass diese Einstellung nur auf bestimme Warenkorb-Elemente Einfluss hat, nicht jedoch auf den gesamten Warenkorb."
|
5 |
-
"Add Minimum Qty","
|
6 |
"Allow Qty Below 0","Lagerbestand unter 0 erlauben"
|
7 |
-
"Allow Qty Below 0 and Notify Customer","Lagerbestand unter 0 und Kunden informieren"
|
8 |
"Automatically Return Credit Memo Item to Stock","Automatische Gutschrift-Info: 'Artikel dem Lagerbestand hinzugefügt'"
|
9 |
"Backorders","Nachbestellungen"
|
10 |
-
"By Fixed value","
|
11 |
-
"By Percentage","
|
12 |
-
"Cannot specify product identifier for the order item.","
|
13 |
-
"Catalog Inventory","
|
14 |
-
"Decrease Stock When Order is Placed","Lagerbestand nach Bestellung
|
15 |
-
"Enable Qty Increments","
|
16 |
"In Stock","Auf Lager"
|
17 |
-
"Index Product Stock Status","
|
18 |
"Inventory","Lagerverwaltung"
|
19 |
"Inventory API","Lagerverwaltung API"
|
20 |
"Inventory Section","Bestand"
|
21 |
-
"Manage Stock","
|
22 |
"Maximum Qty Allowed in Shopping Cart","Höchstbestellmenge"
|
23 |
-
"Minimum Qty","
|
24 |
"Minimum Qty Allowed in Shopping Cart","Mindestbestellmenge"
|
25 |
"No Backorders","Keine Nachbestellungen"
|
26 |
"Not all products are available in the requested quantity","Nicht alle Artikele sind in der benötigten Stückzahl auf Lager"
|
@@ -28,29 +27,21 @@
|
|
28 |
"Only X left Threshold","Nur noch X auf Lager ab"
|
29 |
"Out of Stock","Nicht auf Lager"
|
30 |
"Product Stock Options","Artikel Lagerbestand Optionen"
|
31 |
-
"Qty Increments","
|
32 |
-
"Qty for Items' Status to Become Out of Stock","Menge ab
|
33 |
-
"Retrieve stock data","
|
34 |
-
"Retrieve stock data by product ids","Lagerbestand nach
|
35 |
"Rule price","Regelpreis"
|
36 |
-
"Set Items' Status to be In Stock When Order is Cancelled","Artikelstatus auf verfügbar setzen, wenn Bestellung storniert wird"
|
37 |
-
"Some of the products
|
38 |
-
"Some of the products cannot be ordered in requested quantity.","Einige Artikel können in der gewünschten Menge nicht bestellt werden."
|
39 |
-
"Some of the products cannot be ordered in the requested quantity.","Einige Artikel können in der gewünschten Menge nicht bestellt werden."
|
40 |
"Stock Options","Lageroptionen"
|
41 |
"Stock Status","Lagerbestand"
|
42 |
-
"The
|
43 |
-
"The
|
44 |
-
"
|
45 |
-
"
|
46 |
-
"
|
47 |
-
"
|
48 |
-
"
|
49 |
-
"This product is currently out of stock.","Dieser Artikel ist vorrübergehend nicht auf Lager"
|
50 |
-
"This product is not available in the requested quantity. %s of the items will be backordered.","Dieser Artikel ist in der gewünschten Menge nicht verfügbar. %s von diesem Artikel werden nachbestellt."
|
51 |
-
"To Fixed Value","Auf festen Wert"
|
52 |
-
"To Percentage","Auf Prozent"
|
53 |
-
"Undefined product type.","Undefinierter Artikel Art."
|
54 |
-
"Update","aktualisieren"
|
55 |
"Update product stock data","Lagerbestand für Artikel aktualisieren"
|
56 |
"Update the Product","Artikel aktualisieren"
|
1 |
+
"%s is available for purchase in increments of %s only.","%s ist nur lieferbar in Einheiten von je %s und einem Vielfachen davon."
|
2 |
+
"%s is not a correct comparsion method.","%s ist keine gültige Vergleichsart."
|
|
|
3 |
"<strong>Note</strong> that these settings are applicable to cart line items, not the whole cart.","<strong>Bitte beachten Sie</strong>, dass diese Einstellung nur auf bestimme Warenkorb-Elemente Einfluss hat, nicht jedoch auf den gesamten Warenkorb."
|
4 |
+
"Add Minimum Qty","Neue Mindestmenge"
|
5 |
"Allow Qty Below 0","Lagerbestand unter 0 erlauben"
|
6 |
+
"Allow Qty Below 0 and Notify Customer","Lagerbestand unter 0 erlauben und Kunden darüber informieren"
|
7 |
"Automatically Return Credit Memo Item to Stock","Automatische Gutschrift-Info: 'Artikel dem Lagerbestand hinzugefügt'"
|
8 |
"Backorders","Nachbestellungen"
|
9 |
+
"By Fixed value","Um einen festen Wert"
|
10 |
+
"By Percentage","Um einen Prozentsatz"
|
11 |
+
"Cannot specify product identifier for the order item.","Produktbezeichner für den bestellten Artikel konnte nicht festgelegt werden."
|
12 |
+
"Catalog Inventory","Lagerbestand"
|
13 |
+
"Decrease Stock When Order is Placed","Lagerbestand nach erfolgreicher Bestellung verringern"
|
14 |
+
"Enable Qty Increments","Verpackungseinheiten verwenden"
|
15 |
"In Stock","Auf Lager"
|
16 |
+
"Index Product Stock Status","Indizierung von Artikel-Lagerbeständen"
|
17 |
"Inventory","Lagerverwaltung"
|
18 |
"Inventory API","Lagerverwaltung API"
|
19 |
"Inventory Section","Bestand"
|
20 |
+
"Manage Stock","Lagerbestand verwalten"
|
21 |
"Maximum Qty Allowed in Shopping Cart","Höchstbestellmenge"
|
22 |
+
"Minimum Qty","Mindestmenge"
|
23 |
"Minimum Qty Allowed in Shopping Cart","Mindestbestellmenge"
|
24 |
"No Backorders","Keine Nachbestellungen"
|
25 |
"Not all products are available in the requested quantity","Nicht alle Artikele sind in der benötigten Stückzahl auf Lager"
|
27 |
"Only X left Threshold","Nur noch X auf Lager ab"
|
28 |
"Out of Stock","Nicht auf Lager"
|
29 |
"Product Stock Options","Artikel Lagerbestand Optionen"
|
30 |
+
"Qty Increments","Verpackungseinheiten"
|
31 |
+
"Qty for Items' Status to Become Out of Stock","Menge, ab der ein Artikel den Status 'Nicht auf Lager' besitzt"
|
32 |
+
"Retrieve stock data","Lagerbestand abfragen"
|
33 |
+
"Retrieve stock data by product ids","Lagerbestand nach Artikelnummer abfragen"
|
34 |
"Rule price","Regelpreis"
|
35 |
+
"Set Items' Status to be In Stock When Order is Cancelled","Artikelstatus auf ""verfügbar"" setzen, wenn eine Bestellung storniert wird"
|
36 |
+
"Some of the products cannot be ordered in the requested quantity.","Einige Artikel können nicht in der gewünschten Menge bestellt werden."
|
|
|
|
|
37 |
"Stock Options","Lageroptionen"
|
38 |
"Stock Status","Lagerbestand"
|
39 |
+
"The stock item for Product in option is not valid.","Der Lagerbestand für die ausgewählte Option ist ungültig."
|
40 |
+
"The stock item for Product is not valid.","Der Lagerbestand des Artikels ist ungültig"
|
41 |
+
"This product is available for purchase in increments of %s only.","Dieser Artikel ist nur in bestimmten Verpackungseinheiten von %s erhältlich."
|
42 |
+
"To Fixed Value","Auf einen festen Wert"
|
43 |
+
"To Percentage","Auf einen Prozentsatz"
|
44 |
+
"Undefined product type.","Undefinierte Artikelart."
|
45 |
+
"Update","Aktualisieren"
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
"Update product stock data","Lagerbestand für Artikel aktualisieren"
|
47 |
"Update the Product","Artikel aktualisieren"
|
app/locale/de_DE/Mage_CatalogRule.csv
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
"%d Catalog Price Rules based on "%s" attribute have been disabled.","%d x Katalog Preis Regel basiert auf "%s" Attribut wurde deaktiviert."
|
2 |
"Actions","Aktionen"
|
3 |
"Active","Aktiv"
|
4 |
"Add New Rule","Neue Regel anlegen"
|
5 |
-
"An error occurred while deleting the rule. Please review the log and try again.","Beim
|
6 |
-
"An error occurred while saving the rule data. Please review the log and try again.","Beim
|
7 |
"Apply Rules","Regeln anwenden"
|
8 |
"Attribute Set","Attribut-Set"
|
9 |
"Catalog","Katalog"
|
@@ -49,15 +49,12 @@
|
|
49 |
"The rule has been deleted.","Die Regl wurde gelöscht."
|
50 |
"The rule has been saved.","Die Regel wurde gelöscht."
|
51 |
"The rules have been applied.","Die Regeln wurden angewendet."
|
52 |
-
"There are rules that have been changed but were not applied. Please, click Apply Rules in order to see immediate effect in the catalog.","
|
53 |
"This rule no longer exists.","Diese Regel existiert nicht mehr."
|
54 |
"To Date","Datum bis"
|
55 |
-
"Unable to apply rules.","
|
56 |
-
"Unable to find a rule to delete.","
|
57 |
"Update product's %s %s: %s","Aktualisiere %s %s des Artikels: %s"
|
58 |
"Websites","Websites"
|
59 |
-
"Wrong rule specified.","Falsche Regel
|
60 |
"Yes","Ja"
|
61 |
-
"There are rules that have been changed but not applied. Please, click Apply Rules in order to see immediate effect in catalog.","Achtung: Regeln wurden geändert aber noch nicht gespeichert. Bitte speichern Sie die Regeln, damit diese umgehend im Katalog wirksam werden können."
|
62 |
-
"This rule no longer exists","Diese Regel existiert nicht mehr"
|
63 |
-
"Unable to apply rules","Fehler beim Anwenden der Regeln"
|
1 |
+
"%d Catalog Price Rules based on ""%s"" attribute have been disabled.","%d x Katalog Preis Regel basiert auf ""%s"" Attribut wurde deaktiviert."
|
2 |
"Actions","Aktionen"
|
3 |
"Active","Aktiv"
|
4 |
"Add New Rule","Neue Regel anlegen"
|
5 |
+
"An error occurred while deleting the rule. Please review the log and try again.","Beim Löschen der Regel ist ein Fehler aufgetreten. Bitte sehen Sie in die Log-Aufzeichnung und probieren es erneut."
|
6 |
+
"An error occurred while saving the rule data. Please review the log and try again.","Beim Speichern der Regeldaten ist ein Fehler aufgetreten. Bitte sehen Sie in die Log-Aufzeichnung und probieren es erneut."
|
7 |
"Apply Rules","Regeln anwenden"
|
8 |
"Attribute Set","Attribut-Set"
|
9 |
"Catalog","Katalog"
|
49 |
"The rule has been deleted.","Die Regl wurde gelöscht."
|
50 |
"The rule has been saved.","Die Regel wurde gelöscht."
|
51 |
"The rules have been applied.","Die Regeln wurden angewendet."
|
52 |
+
"There are rules that have been changed but were not applied. Please, click Apply Rules in order to see immediate effect in the catalog.","Es existieren Regeln, die sich verändert haben, aber noch nicht angewendet wurden. Bitte klicken Sie ""Regeln anwenden"" um Veränderungen im Shop zu sehen."
|
53 |
"This rule no longer exists.","Diese Regel existiert nicht mehr."
|
54 |
"To Date","Datum bis"
|
55 |
+
"Unable to apply rules.","Regeln konnten nicht angewendet werden."
|
56 |
+
"Unable to find a rule to delete.","Es wurde keine Regel zum Löschen gefunden."
|
57 |
"Update product's %s %s: %s","Aktualisiere %s %s des Artikels: %s"
|
58 |
"Websites","Websites"
|
59 |
+
"Wrong rule specified.","Falsche Regel angegeben."
|
60 |
"Yes","Ja"
|
|
|
|
|
|
app/locale/de_DE/Mage_CatalogSearch.csv
CHANGED
@@ -2,17 +2,17 @@
|
|
2 |
"<strong>%d item(s)</strong> were found using the following search criteria","<strong>%d Artikel(s)</strong> wurde mit der folgenden Suchkriterien gefunden"
|
3 |
"Advanced Search","Erweiterte Suche"
|
4 |
"Advanced Search Form","Erweitertes Suchformular"
|
5 |
-
"Advanced Search Result","Suchergebnis für
|
6 |
"All","Alle"
|
7 |
-
"Applies for "Like" search type only.","
|
8 |
"Apply Layered Navigation if Search Results are Less Than","Filternavigation nur auf Suchanfragen anwenden mit weniger Egebnissen als"
|
9 |
-
"Attribute setting change related with Search Index. Please run <a href="%s">Rebuild Search Index</a> process.","
|
10 |
"Autogenerated Site Map","Automatisch erzeugte Sitemap"
|
11 |
"Catalog Advanced Search","Erweiterte Katalogsuche"
|
12 |
"Catalog Search","Katalogsuche"
|
13 |
"Catalog Search Index","Katalog Suchindex"
|
14 |
"Don't see what you're looking for?","Nicht gefunden, wonach Sie gesucht haben?"
|
15 |
-
"Enter "0" to enable layered navigation for any number of results.","Geben Sie "0" ein um die
|
16 |
"Go","Los"
|
17 |
"Go to Home Page","Zur Startseite"
|
18 |
"Grid","Gitter"
|
@@ -22,14 +22,14 @@
|
|
22 |
"Maximum Query Words Count","Maximalanzahl der Worte einer Suchanfrage"
|
23 |
"Maximum Search query length is %s. Your query was cut.","Maximallänge der Suchanfrage ist %s. Ihre Anfrage wurde gekürzt."
|
24 |
"Minimal Query Length","Mindestlänge der Suchanfrage"
|
25 |
-
"Minimum Search query length is %s","
|
26 |
"Modify your search","Ändern Sie bitte Ihre Anfrage"
|
27 |
"No","Nein"
|
28 |
"No items were found using the following search criteria.","Mit den folgenden Suchkriterien wurden keine Artikel gefunden."
|
29 |
"Please specify at least one search term.","Bitte verfeinern Sie Ihre Suchanfrage."
|
30 |
"Popular Search Terms","Beliebte Suchanfragen"
|
31 |
"Quick Search Form","Schnellsuche"
|
32 |
-
"Rebuild Catalog product fulltext search index","Neuaufbau der
|
33 |
"Relevance","Relevanz"
|
34 |
"Results","Suchergebnisse"
|
35 |
"Search","Suchen"
|
@@ -40,10 +40,9 @@
|
|
40 |
"Search results for '%s'","Suchergebnisse für '%s'"
|
41 |
"Search results for: '%s'","Suchergebnisse für: '%s'"
|
42 |
"Search:","Suche:"
|
|
|
43 |
"Subscribe to Feed","Feed abonnieren"
|
44 |
"There are no search terms available.","Keine Suchbegriffe verfügbar."
|
45 |
"Yes","Ja"
|
46 |
"Your search returns no results.","Ihre Suche lieferte keine Ergebnisse."
|
47 |
"up to %s","bis zu %s"
|
48 |
-
"Applies for "Like" Search type only","Nur anwendbar auf "Like"-Suchen"
|
49 |
-
"Attribute setting change related with Search Index. Please run <a href="%s">Rebuild Search Index</a> process","Attributänderung mit Suchindex verbunden. Sie müssen den <a href="%s">Suchindex neu aufbauen</a>"
|
2 |
"<strong>%d item(s)</strong> were found using the following search criteria","<strong>%d Artikel(s)</strong> wurde mit der folgenden Suchkriterien gefunden"
|
3 |
"Advanced Search","Erweiterte Suche"
|
4 |
"Advanced Search Form","Erweitertes Suchformular"
|
5 |
+
"Advanced Search Result","Suchergebnis für erweiterte Suche"
|
6 |
"All","Alle"
|
7 |
+
"Applies for ""Like"" search type only.","Nur anwendbar auf ""Like""-Suche"
|
8 |
"Apply Layered Navigation if Search Results are Less Than","Filternavigation nur auf Suchanfragen anwenden mit weniger Egebnissen als"
|
9 |
+
"Attribute setting change related with Search Index. Please run <a href=""%s"">Rebuild Search Index</a> process.","Attributänderung mit Suchindex verbunden. Sie müssen den <a href=""%s"">Suchindex neu aufbauen</a>."
|
10 |
"Autogenerated Site Map","Automatisch erzeugte Sitemap"
|
11 |
"Catalog Advanced Search","Erweiterte Katalogsuche"
|
12 |
"Catalog Search","Katalogsuche"
|
13 |
"Catalog Search Index","Katalog Suchindex"
|
14 |
"Don't see what you're looking for?","Nicht gefunden, wonach Sie gesucht haben?"
|
15 |
+
"Enter ""0"" to enable layered navigation for any number of results.","Geben Sie ""0"" ein um die Filternavigation bei jeder Anzahl von Ergebnissen zu zeigen."
|
16 |
"Go","Los"
|
17 |
"Go to Home Page","Zur Startseite"
|
18 |
"Grid","Gitter"
|
22 |
"Maximum Query Words Count","Maximalanzahl der Worte einer Suchanfrage"
|
23 |
"Maximum Search query length is %s. Your query was cut.","Maximallänge der Suchanfrage ist %s. Ihre Anfrage wurde gekürzt."
|
24 |
"Minimal Query Length","Mindestlänge der Suchanfrage"
|
25 |
+
"Minimum Search query length is %s","Die Mindestlänge einer Suchanfrage beträgt %s Zeichen"
|
26 |
"Modify your search","Ändern Sie bitte Ihre Anfrage"
|
27 |
"No","Nein"
|
28 |
"No items were found using the following search criteria.","Mit den folgenden Suchkriterien wurden keine Artikel gefunden."
|
29 |
"Please specify at least one search term.","Bitte verfeinern Sie Ihre Suchanfrage."
|
30 |
"Popular Search Terms","Beliebte Suchanfragen"
|
31 |
"Quick Search Form","Schnellsuche"
|
32 |
+
"Rebuild Catalog product fulltext search index","Neuaufbau der Artikel Volltextsuche"
|
33 |
"Relevance","Relevanz"
|
34 |
"Results","Suchergebnisse"
|
35 |
"Search","Suchen"
|
40 |
"Search results for '%s'","Suchergebnisse für '%s'"
|
41 |
"Search results for: '%s'","Suchergebnisse für: '%s'"
|
42 |
"Search:","Suche:"
|
43 |
+
"Specified date is invalid.","Angegebenes Datum ist ungültig."
|
44 |
"Subscribe to Feed","Feed abonnieren"
|
45 |
"There are no search terms available.","Keine Suchbegriffe verfügbar."
|
46 |
"Yes","Ja"
|
47 |
"Your search returns no results.","Ihre Suche lieferte keine Ergebnisse."
|
48 |
"up to %s","bis zu %s"
|
|
|
|
app/locale/de_DE/Mage_Centinel.csv
CHANGED
@@ -1,35 +1,34 @@
|
|
1 |
"3D Secure CAVV","3D Secure CAVV"
|
2 |
-
"3D Secure Card Validation","3D Secure
|
3 |
-
"3D Secure Cardholder Validation","3D Secure
|
4 |
"3D Secure Electronic Commerce Indicator","3D Secure Electronic Commerce Indikator"
|
5 |
-
"3D Secure Verification Result","3D Secure
|
6 |
"3D Secure XID","3D Secure XID"
|
7 |
-
"Card Issuer Liability","
|
8 |
-
"Card Verification","
|
9 |
"Enrolled","Eingeschrieben"
|
10 |
"Enrolled but Authentication Unavailable","Eingeschrieben aber Authentifikation nicht verfügbar"
|
11 |
"Failed","fehlgeschlagen"
|
12 |
-
"MasterCard SecureCode","MasterCard
|
13 |
"Merchant Liability","Händler Verbindlichkeit"
|
14 |
"Not Enrolled","Nicht Eingeschrieben"
|
15 |
-
"Order cannot be placed.","Bestellung kann nicht
|
16 |
-
"Payment information error. Please start over.","
|
17 |
-
"Please continue with placing order.","Bitte fahren Sie fort, indem Sie die Bestellung
|
18 |
-
"Please verify the card with the issuer bank before placing the order.","Bitte
|
19 |
-
"Please verify the card with the issuer bank:","Bitte
|
20 |
-
"Start/Reset Validation...","
|
21 |
"Successful","Erfolgreich"
|
22 |
-
"Successful attempt","Versuch
|
23 |
-
"The card has failed verification with the issuer bank.","
|
24 |
"There has been wrong payment information submitted or the time limit has expired. Please, try again.","Falsche Zahlungsinformationen wurden übermittelt oder die Zeit wurde überschritten. Bitte versuchen Sie es erneut."
|
25 |
"There has been wrong payment information submitted or time limit has expired. Please, try again.","Falsche Zahlungsinformationen wurden übermittelt oder die Zeit wurde überschritten. Bitte versuchen Sie es erneut."
|
26 |
-
"This card has failed validation and cannot be used.","Diese Karte
|
27 |
-
"This card has failed validation, but it is possible to place the order.","Diese Karte
|
28 |
"To ensure the security of your transactions","Um die Sicherheit Ihrer Transaktionen zu wahren"
|
29 |
-
"Unable to complete","
|
30 |
-
"Validation failed.","
|
31 |
-
"Verification Failed","
|
32 |
-
"Verification Successful","
|
33 |
-
"Verification cannot be processed","
|
34 |
-
"Verified by Visa","
|
35 |
-
"The card has failed verification with issuer bank.","Die Karte hat die Verifikation mit der ausstellenden Bank nicht bestanden."
|
1 |
"3D Secure CAVV","3D Secure CAVV"
|
2 |
+
"3D Secure Card Validation","3D Secure Kartenprüfung"
|
3 |
+
"3D Secure Cardholder Validation","3D Secure Karteninhaberprüfung"
|
4 |
"3D Secure Electronic Commerce Indicator","3D Secure Electronic Commerce Indikator"
|
5 |
+
"3D Secure Verification Result","3D Secure Prüfungsergebnis"
|
6 |
"3D Secure XID","3D Secure XID"
|
7 |
+
"Card Issuer Liability","Kartenaussteller Verantwortlichkeit"
|
8 |
+
"Card Verification","Kartenprüfung"
|
9 |
"Enrolled","Eingeschrieben"
|
10 |
"Enrolled but Authentication Unavailable","Eingeschrieben aber Authentifikation nicht verfügbar"
|
11 |
"Failed","fehlgeschlagen"
|
12 |
+
"MasterCard SecureCode","MasterCard SecureCode"
|
13 |
"Merchant Liability","Händler Verbindlichkeit"
|
14 |
"Not Enrolled","Nicht Eingeschrieben"
|
15 |
+
"Order cannot be placed.","Bestellung kann nicht aufgegeben werden."
|
16 |
+
"Payment information error. Please start over.","Fehler in den Zahlungsinformationen. Bitte noch einmal versuchen."
|
17 |
+
"Please continue with placing order.","Bitte fahren Sie fort, indem Sie die Bestellung aufgeben."
|
18 |
+
"Please verify the card with the issuer bank before placing the order.","Bitte lassen Sie die Karte bei der ausstellenden Bank überprüfen, bevor Sie die Bestellung aufgeben."
|
19 |
+
"Please verify the card with the issuer bank:","Bitte lassen Sie die Karte bei der ausstellenden Bank überprüfen:"
|
20 |
+
"Start/Reset Validation...","Gültigkeitsprüfung beginnen/zurücksetzen..."
|
21 |
"Successful","Erfolgreich"
|
22 |
+
"Successful attempt","Erfolgreicher Versuch"
|
23 |
+
"The card has failed verification with the issuer bank.","Die Überprüfung der Karte bei der ausstellenden Bank ist fehlgeschlagen."
|
24 |
"There has been wrong payment information submitted or the time limit has expired. Please, try again.","Falsche Zahlungsinformationen wurden übermittelt oder die Zeit wurde überschritten. Bitte versuchen Sie es erneut."
|
25 |
"There has been wrong payment information submitted or time limit has expired. Please, try again.","Falsche Zahlungsinformationen wurden übermittelt oder die Zeit wurde überschritten. Bitte versuchen Sie es erneut."
|
26 |
+
"This card has failed validation and cannot be used.","Diese Karte ist ungültig und kann nicht verwendet werden."
|
27 |
+
"This card has failed validation, but it is possible to place the order.","Diese Karte ist ungültig, aber die Bestellung kann trotzdem fortgesetzt werden."
|
28 |
"To ensure the security of your transactions","Um die Sicherheit Ihrer Transaktionen zu wahren"
|
29 |
+
"Unable to complete","Vorgang konnte nicht abgeschlossen werden"
|
30 |
+
"Validation failed.","Überprüfung fehlgeschlagen."
|
31 |
+
"Verification Failed","Überprüfung fehlgeschlagen"
|
32 |
+
"Verification Successful","Überprüfung erfolgreich"
|
33 |
+
"Verification cannot be processed","Überprüfung kann nicht durchgeführt werden"
|
34 |
+
"Verified by Visa","Von Visa überprüft"
|
|
app/locale/de_DE/Mage_Checkout.csv
CHANGED
@@ -4,6 +4,7 @@
|
|
4 |
"Add New Address","Neue Adresse hinzufügen"
|
5 |
"Add New Condition","Neue Bedingung hinzufügen"
|
6 |
"Add coupon code for shopping cart","Rabattcode für warenkorb"
|
|
|
7 |
"Add product to shopping cart","Artikel in den Warenkorb legen"
|
8 |
"Add product(s) to shopping cart","Artikel in den Warenkorb legen"
|
9 |
"Add to Cart","In den Warenkorb"
|
@@ -11,13 +12,13 @@
|
|
11 |
"Add to Wishlist","Auf den Wunschzettel"
|
12 |
"Additional Product Info","Zusätzliche Artikel Info"
|
13 |
"Address","Straße"
|
14 |
-
"Address %s of %s","Adresse
|
15 |
"After Adding a Product Redirect to Shopping Cart","Nach dem Hinzufügen eines Artikel zum Warenkorb weiterleiten"
|
16 |
"Allow Guest Checkout","Bezahlvorgang als Gast ermöglichen"
|
17 |
"Already registered?","Bereits registriert?"
|
18 |
"An error occurred in the process of payment","Fehler im Bezahlvorgang"
|
19 |
-
"An error occurred while deleting this condition.","Ein Fehler ist beim
|
20 |
-
"An error occurred while saving this condition.","Ein Fehler ist beim
|
21 |
"Apply Coupon","Rabattcode einlösen"
|
22 |
"Are you sure you would like to remove this item from the shopping cart?","Soll dieser Artikel wirklich aus Ihrem Warenkorb entfernt werden?"
|
23 |
"Back","Zurück"
|
@@ -36,12 +37,12 @@
|
|
36 |
"Cannot apply the coupon code.","Der Rabattcode konnte nicht eingelöst werden."
|
37 |
"Cannot configure product.","Artikel konnte nicht konfiguriert werden."
|
38 |
"Cannot open the overview page","Übersichtsseite konnte nicht geöffnet werden."
|
39 |
-
"Cannot process the item.","
|
40 |
"Cannot remove the item.","Artikel konnte nicht entfernt werden."
|
41 |
"Cannot update shopping cart.","Warenkorb konnte nicht aktualisiert werden."
|
42 |
"Cannot update the item.","Artikel konnte nicht aktualisiert werden."
|
43 |
"Card Verification Number Visual Reference","Kartenprüfnummer"
|
44 |
-
"Cart Product
|
45 |
"Cart Subtotal:","Zwischensumme:"
|
46 |
"Change","Ändern"
|
47 |
"Change Billing Address","Rechnungsadresse ändern"
|
@@ -74,8 +75,8 @@
|
|
74 |
"Continue to Review Your Order","Weiter zur Bestellübersicht"
|
75 |
"Continue to Shipping Information","Weiter zu den Versandinformationen"
|
76 |
"Country","Land"
|
77 |
-
"Coupon code "%s" is not valid.","Rabattcode "%s" ist ungültig."
|
78 |
-
"Coupon code "%s" was applied.","Rabattcode "%s" wurde angewendet."
|
79 |
"Coupon code was canceled.","Rabattcode wurde storniert."
|
80 |
"Create Billing Address","Rechnungsadresse anlegen"
|
81 |
"Create Shipping Address","Versandadresse anlegen"
|
@@ -119,11 +120,12 @@
|
|
119 |
"Forgot an Item?","Artikel vergessen?"
|
120 |
"Forgot your password?","Passwort vergessen?"
|
121 |
"Get a Quote","geschätzte Kosten anzeigen"
|
122 |
-
"Get list of available payment methods","Liste von verfügbaren
|
123 |
"Get list of available shipping methods","Liste von verfügbaren Versandarten anzeigen"
|
124 |
"Get list of products in shopping cart","Liste von Artikeln im Warenkorb anzeigen"
|
125 |
"Get terms and conditions","Bestellbedingungen anzeigen"
|
126 |
"Get total prices for shopping cart","Gesamtpreise für Warenkorb erhalten"
|
|
|
127 |
"Grand Total:","Gesamtsumme:"
|
128 |
"Grouped Product Image","Bild für Gruppen Artikel"
|
129 |
"HTML","HTML"
|
@@ -137,39 +139,43 @@
|
|
137 |
"Load customer quote error","Fehler beim Laden des Kundenangebots"
|
138 |
"Loading next step...","Der nächste Schritt wird geladen..."
|
139 |
"Login","Anmelden"
|
140 |
-
"Login/Registration Before","
|
141 |
"Manage Checkout Terms and Conditions","Allgemeine Geschäftsbedingungen"
|
142 |
"Maximum Display Recently Added Item(s)","Höchstzahl Anzeige kürzlich hinzugefügter Artikel"
|
143 |
"Maximum qty allowed for Shipping to multiple addresses is %s","Maximalmenge für den Versand an mehrere Adressen ist: %s"
|
144 |
"Move to Wishlist","Auf den Wunschzettel"
|
145 |
-
"Multishipping Checkout","
|
146 |
-
"Multishipping Checkout Address (Any) Form","
|
147 |
-
"Multishipping Checkout Billing Address Creation","
|
148 |
-
"Multishipping Checkout Billing Address Edit Form","
|
149 |
-
"Multishipping Checkout Billing Address Selection","
|
150 |
-
"Multishipping Checkout Billing Information Step","
|
151 |
-
"Multishipping Checkout Customer Address Edit Form","
|
152 |
-
"Multishipping Checkout Overview","
|
153 |
-
"Multishipping Checkout Shipping Address Creation","
|
154 |
-
"Multishipping Checkout Shipping Address Edit Form","
|
155 |
-
"Multishipping Checkout Shipping Address Selection","
|
156 |
-
"Multishipping Checkout Shipping Information Step","
|
157 |
-
"Multishipping Checkout Success","
|
158 |
"My Cart","Mein Warenkorb"
|
159 |
"My Cart (%s item)","Mein Warenkorb (%s Artikel)"
|
160 |
"My Cart (%s items)","Mein Warenkorb (%s Artikel)"
|
161 |
"My Cart Link","Mein Warekorb Link"
|
162 |
"New Address","Neue Adresse"
|
163 |
"New Condition","Neue Bedingung"
|
|
|
164 |
"One Page Checkout","Einseitigen Bezahlvorgang"
|
165 |
-
"One Page Checkout Failure","
|
166 |
"One Page Checkout Overview","Einseitiger Bezahlvorgang - Übersicht"
|
167 |
-
"One Page Checkout Success","
|
|
|
|
|
168 |
"Order #","Bestellung Nr."
|
169 |
"Order Review","Bestellübersicht"
|
170 |
"Order Success","Bestellung erfolgt"
|
|
|
171 |
"Other Items in Your Order","Andere Artikel in Ihrer Bestellung"
|
172 |
-
"Overview Items After","
|
173 |
"Password","Passwort"
|
174 |
"Payment Failed Email Reciever","E-Mail Empfänger bei fehlgeschlagener Zahlung"
|
175 |
"Payment Failed Email Sender","E-Mail Absender bei fehlgeschlagener Zahlung"
|
@@ -177,12 +183,12 @@
|
|
177 |
"Payment Failed Template","E-Mail Vorlage bei fehlgeschlagener Zahlung"
|
178 |
"Payment Information","Zahlungsinformation"
|
179 |
"Payment Method","Zahlweise"
|
180 |
-
"Payment Methods After Checkout Button","Zahlarten nach dem
|
181 |
-
"Payment Methods Before Checkout Button","Zahlarten vor dem
|
182 |
-
"Payment method information","
|
183 |
"Payment method is not defined","Die Zahlweise ist nicht definiert"
|
184 |
"Payment methods in shopping cart","Zahlarten im Warenkorb"
|
185 |
-
"Payment profile # %s: "%s".","Zahlungs-Profil # %s: "%s"."
|
186 |
"Place Order","Bestellung abschließen"
|
187 |
"Please agree to all Terms and Conditions before placing the order.","Bitte bestätigen Sie unsere Bedingungen bevor Sie die Bestellung abschließen."
|
188 |
"Please agree to all Terms and Conditions before placing the orders.","Bitte bestätigen Sie unsere Bedingungen bevor Sie die Bestellung abschließen."
|
@@ -198,10 +204,10 @@
|
|
198 |
"Products","Artikel"
|
199 |
"Qty","Menge"
|
200 |
"Qty:","Menge"
|
201 |
-
"Quantity was recalculated from %d to %d","
|
202 |
"Quote Lifetime (days)","Lebenszeit (in Tagen) angeben"
|
203 |
-
"Quote item does not exist.","
|
204 |
-
"Quote item is not found.","
|
205 |
"Recently added item(s)","Kürzlich hinzugefügte Artikel"
|
206 |
"Register","Registrieren"
|
207 |
"Register and save time!","Registrieren und Zeit sparen!"
|
@@ -213,12 +219,13 @@
|
|
213 |
"Remove item","Artikel entfernen"
|
214 |
"Remove product from shopping cart","Artikel vom Warenkorb entfernen"
|
215 |
"Remove product(s) from shopping cart","Artikel vom Warenkorb entfernen"
|
216 |
-
"Retrieve information about shopping cart","
|
217 |
"Review Order","Bestellübersicht"
|
218 |
"Review Order - %s","Bestellübersicht - %s"
|
219 |
"Sales","Verkäufe"
|
220 |
"Save Condition","Bedingung speichern"
|
221 |
"Save in address book","Im Adressbuch speichern"
|
|
|
222 |
"Select Address","Adresse auswählen"
|
223 |
"Select Addresses","Adressen auswählen"
|
224 |
"Select Shipping Method","Versandart auswählen"
|
@@ -229,9 +236,9 @@
|
|
229 |
"Send Payment Failed Email Copy To","E-Mail Kopie bei<br />Zahlungsfehler an"
|
230 |
"Send To","Sende an"
|
231 |
"Separate by "","".","Trennen durch "",""."
|
232 |
-
"Set customer for shopping cart","
|
233 |
-
"Set customer's addresses in shopping cart","
|
234 |
-
"Set payment method","
|
235 |
"Set shipping method","Versandart setzen"
|
236 |
"Ship to Multiple Addresses","An mehrere Adressen versenden"
|
237 |
"Ship to different address","An andere Adresse verschicken"
|
@@ -254,8 +261,8 @@
|
|
254 |
"Show Content as","Zeige Inhalt als"
|
255 |
"Some of the requested products are not available in the desired quantity.","Einige der angeforderten Artikel sind in der gewünschten Stückzahl nicht verfügbar."
|
256 |
"Some of the requested products are unavailable.","Einige der angeforderten Artikel sind nicht verfügbar."
|
257 |
-
"Some products quantities were recalculated because of quantity increment mismatch","
|
258 |
-
"Sorry, no quotes are available for this order at this time.","Entschuldigung, momentan
|
259 |
"State/Province","Land/Bundesland"
|
260 |
"Status","Status"
|
261 |
"Store View","StoreView"
|
@@ -280,23 +287,23 @@
|
|
280 |
"This condition no longer exists.","Diese Bedingung existiert nicht mehr."
|
281 |
"Total","Gesamt"
|
282 |
"Total for this address","Gesamtsumme für diese Adresse"
|
283 |
-
"Unable to set Payment Method.","
|
284 |
"Unit Price","Einzelpreis"
|
285 |
"Update Cart","Warenkorb aktualisieren"
|
286 |
"Update Qty & Addresses","Stückzahlen & Adressen aktualisieren"
|
287 |
"Update Shopping Cart","Warenkorb aktualisieren"
|
288 |
"Update Total","Gesamtsumme aktualisieren"
|
289 |
-
"Update product quantities in shopping cart","Artikelanzahl im
|
290 |
-
"Update product(s) quantities in shopping cart","Artikelanzahl im
|
291 |
"Use Billing Address","Rechnungsadresse verwenden"
|
292 |
-
"We are processing your order and you will soon receive an email with details of the order. Once the order has shipped you will receive another email with a link to track its progress.","Zur Zeit bearbeiten wir Ihre Bestellung... Sie werden bald eine E-Mail mit Details zu Ihrer Bestellung erhalten.<br/>Nach erfolgtem Versand
|
|
|
293 |
"You have no items in your shopping cart.","Sie haben keine Artikel im Warenkorb."
|
294 |
"You will receive an order confirmation email with details of your order and a link to track its progress.","Sie werden eine E-Mail mit einer detaillierten Bestell-Bestätigung erhalten sowie einen Link zur Überprüfung des Fortschritts Ihrer Bestellung."
|
295 |
"Your Checkout Progress","Ihr Bestellfortschritt"
|
296 |
-
"Your billing agreement # is: %s.","Ihre
|
297 |
"Your order # is: %s.","Ihre Bestellnummer lautet: %s."
|
298 |
"Your order has been received","Ihre Bestellung wurde übermittelt"
|
299 |
"Your order number is ","Ihre Bestellnummer lautet "
|
300 |
-
"Your recurring payment profiles:","Ihre wiederkehrenden
|
301 |
-
"Zip/Postal Code","Postleitzahl"
|
302 |
-
"osCommerce Orders","osCommerce Bestellungen"
|
4 |
"Add New Address","Neue Adresse hinzufügen"
|
5 |
"Add New Condition","Neue Bedingung hinzufügen"
|
6 |
"Add coupon code for shopping cart","Rabattcode für warenkorb"
|
7 |
+
"Add gift messages to shopping cart","Geschenknachricht zum Warenkorb hinzufügen"
|
8 |
"Add product to shopping cart","Artikel in den Warenkorb legen"
|
9 |
"Add product(s) to shopping cart","Artikel in den Warenkorb legen"
|
10 |
"Add to Cart","In den Warenkorb"
|
12 |
"Add to Wishlist","Auf den Wunschzettel"
|
13 |
"Additional Product Info","Zusätzliche Artikel Info"
|
14 |
"Address","Straße"
|
15 |
+
"Address %s of %s","Adresse %s von %s"
|
16 |
"After Adding a Product Redirect to Shopping Cart","Nach dem Hinzufügen eines Artikel zum Warenkorb weiterleiten"
|
17 |
"Allow Guest Checkout","Bezahlvorgang als Gast ermöglichen"
|
18 |
"Already registered?","Bereits registriert?"
|
19 |
"An error occurred in the process of payment","Fehler im Bezahlvorgang"
|
20 |
+
"An error occurred while deleting this condition.","Ein Fehler ist beim Löschen der Bedingung aufgetreten."
|
21 |
+
"An error occurred while saving this condition.","Ein Fehler ist beim Speichern der Bedingung aufgetreten."
|
22 |
"Apply Coupon","Rabattcode einlösen"
|
23 |
"Are you sure you would like to remove this item from the shopping cart?","Soll dieser Artikel wirklich aus Ihrem Warenkorb entfernt werden?"
|
24 |
"Back","Zurück"
|
37 |
"Cannot apply the coupon code.","Der Rabattcode konnte nicht eingelöst werden."
|
38 |
"Cannot configure product.","Artikel konnte nicht konfiguriert werden."
|
39 |
"Cannot open the overview page","Übersichtsseite konnte nicht geöffnet werden."
|
40 |
+
"Cannot process the item.","Artikel konnte nicht verarbeitet werden."
|
41 |
"Cannot remove the item.","Artikel konnte nicht entfernt werden."
|
42 |
"Cannot update shopping cart.","Warenkorb konnte nicht aktualisiert werden."
|
43 |
"Cannot update the item.","Artikel konnte nicht aktualisiert werden."
|
44 |
"Card Verification Number Visual Reference","Kartenprüfnummer"
|
45 |
+
"Cart Product API","Warenkorb Artikel-API"
|
46 |
"Cart Subtotal:","Zwischensumme:"
|
47 |
"Change","Ändern"
|
48 |
"Change Billing Address","Rechnungsadresse ändern"
|
75 |
"Continue to Review Your Order","Weiter zur Bestellübersicht"
|
76 |
"Continue to Shipping Information","Weiter zu den Versandinformationen"
|
77 |
"Country","Land"
|
78 |
+
"Coupon code ""%s"" is not valid.","Rabattcode ""%s"" ist ungültig."
|
79 |
+
"Coupon code ""%s"" was applied.","Rabattcode ""%s"" wurde angewendet."
|
80 |
"Coupon code was canceled.","Rabattcode wurde storniert."
|
81 |
"Create Billing Address","Rechnungsadresse anlegen"
|
82 |
"Create Shipping Address","Versandadresse anlegen"
|
120 |
"Forgot an Item?","Artikel vergessen?"
|
121 |
"Forgot your password?","Passwort vergessen?"
|
122 |
"Get a Quote","geschätzte Kosten anzeigen"
|
123 |
+
"Get list of available payment methods","Liste von verfügbaren Zahlarten anzeigen"
|
124 |
"Get list of available shipping methods","Liste von verfügbaren Versandarten anzeigen"
|
125 |
"Get list of products in shopping cart","Liste von Artikeln im Warenkorb anzeigen"
|
126 |
"Get terms and conditions","Bestellbedingungen anzeigen"
|
127 |
"Get total prices for shopping cart","Gesamtpreise für Warenkorb erhalten"
|
128 |
+
"Gift Message","Nachricht"
|
129 |
"Grand Total:","Gesamtsumme:"
|
130 |
"Grouped Product Image","Bild für Gruppen Artikel"
|
131 |
"HTML","HTML"
|
139 |
"Load customer quote error","Fehler beim Laden des Kundenangebots"
|
140 |
"Loading next step...","Der nächste Schritt wird geladen..."
|
141 |
"Login","Anmelden"
|
142 |
+
"Login/Registration Before","Bitte melden Sie sich an oder registrieren Sie sich"
|
143 |
"Manage Checkout Terms and Conditions","Allgemeine Geschäftsbedingungen"
|
144 |
"Maximum Display Recently Added Item(s)","Höchstzahl Anzeige kürzlich hinzugefügter Artikel"
|
145 |
"Maximum qty allowed for Shipping to multiple addresses is %s","Maximalmenge für den Versand an mehrere Adressen ist: %s"
|
146 |
"Move to Wishlist","Auf den Wunschzettel"
|
147 |
+
"Multishipping Checkout","Gang zur Kasse mit mehreren Adressen"
|
148 |
+
"Multishipping Checkout Address (Any) Form","Gang zur Kasse mit mehreren Adressen - Anschrift"
|
149 |
+
"Multishipping Checkout Billing Address Creation","Gang zur Kasse mit mehreren Adressen - Rechnungsanschrift erstellen"
|
150 |
+
"Multishipping Checkout Billing Address Edit Form","Gang zur Kasse mit mehreren Adressen - Rechnungsanschrift bearbeiten"
|
151 |
+
"Multishipping Checkout Billing Address Selection","Gang zur Kasse mit mehreren Adressen - Rechnungsanschrift auswählen"
|
152 |
+
"Multishipping Checkout Billing Information Step","Gang zur Kasse mit mehreren Adressen - Rechnungsanschrift anzeigen"
|
153 |
+
"Multishipping Checkout Customer Address Edit Form","Gang zur Kasse mit mehreren Adressen - Kundenanschrift bearbeiten"
|
154 |
+
"Multishipping Checkout Overview","Gang zur Kasse mit mehreren Adressen - Übersicht"
|
155 |
+
"Multishipping Checkout Shipping Address Creation","Gang zur Kasse mit mehreren Adressen - Versandanschrift erstellen"
|
156 |
+
"Multishipping Checkout Shipping Address Edit Form","Gang zur Kasse mit mehreren Adressen - Versandanrschrift bearbeiten"
|
157 |
+
"Multishipping Checkout Shipping Address Selection","Gang zur Kasse mit mehreren Adressen - Versandanschrift auswählen"
|
158 |
+
"Multishipping Checkout Shipping Information Step","Gang zur Kasse mit mehreren Adressen - Versandanschrift anzeigen"
|
159 |
+
"Multishipping Checkout Success","Gang zur Kasse mit mehreren Adressen - Erfolgreich abgeschlossen"
|
160 |
"My Cart","Mein Warenkorb"
|
161 |
"My Cart (%s item)","Mein Warenkorb (%s Artikel)"
|
162 |
"My Cart (%s items)","Mein Warenkorb (%s Artikel)"
|
163 |
"My Cart Link","Mein Warekorb Link"
|
164 |
"New Address","Neue Adresse"
|
165 |
"New Condition","Neue Bedingung"
|
166 |
+
"ORDER TOTAL WILL BE DISPLAYED BEFORE YOU SUBMIT THE ORDER","Der Gesamtbetrag der Bestellung wird Ihnen noch einmal angezeigt, bevor Sie die Bestellung aufgeben."
|
167 |
"One Page Checkout","Einseitigen Bezahlvorgang"
|
168 |
+
"One Page Checkout Failure","Einseitiger Bezahlvorgang - Fehler"
|
169 |
"One Page Checkout Overview","Einseitiger Bezahlvorgang - Übersicht"
|
170 |
+
"One Page Checkout Success","Einseitiger Bezahlvorgang - Erfolgreich abgeschlossen"
|
171 |
+
"One item of products do not have identifier or sku","Ein Artikel besitzt keine SKU"
|
172 |
+
"One item of products is not belong any of quote item","Ein Artikel gehört nicht zu einem Artikel im Warenkorb"
|
173 |
"Order #","Bestellung Nr."
|
174 |
"Order Review","Bestellübersicht"
|
175 |
"Order Success","Bestellung erfolgt"
|
176 |
+
"Order place error.","Die Bestellung konnte nicht aufgegeben werden."
|
177 |
"Other Items in Your Order","Andere Artikel in Ihrer Bestellung"
|
178 |
+
"Overview Items After","Übersicht Artikel nach"
|
179 |
"Password","Passwort"
|
180 |
"Payment Failed Email Reciever","E-Mail Empfänger bei fehlgeschlagener Zahlung"
|
181 |
"Payment Failed Email Sender","E-Mail Absender bei fehlgeschlagener Zahlung"
|
183 |
"Payment Failed Template","E-Mail Vorlage bei fehlgeschlagener Zahlung"
|
184 |
"Payment Information","Zahlungsinformation"
|
185 |
"Payment Method","Zahlweise"
|
186 |
+
"Payment Methods After Checkout Button","Zahlarten nach dem zur Kasse Button"
|
187 |
+
"Payment Methods Before Checkout Button","Zahlarten vor dem zur Kasse Button"
|
188 |
+
"Payment method information","Zahlmethoden Information"
|
189 |
"Payment method is not defined","Die Zahlweise ist nicht definiert"
|
190 |
"Payment methods in shopping cart","Zahlarten im Warenkorb"
|
191 |
+
"Payment profile # %s: ""%s"".","Zahlungs-Profil # %s: ""%s""."
|
192 |
"Place Order","Bestellung abschließen"
|
193 |
"Please agree to all Terms and Conditions before placing the order.","Bitte bestätigen Sie unsere Bedingungen bevor Sie die Bestellung abschließen."
|
194 |
"Please agree to all Terms and Conditions before placing the orders.","Bitte bestätigen Sie unsere Bedingungen bevor Sie die Bestellung abschließen."
|
204 |
"Products","Artikel"
|
205 |
"Qty","Menge"
|
206 |
"Qty:","Menge"
|
207 |
+
"Quantity was recalculated from %d to %d","Menge wurde von %d auf %d geändert"
|
208 |
"Quote Lifetime (days)","Lebenszeit (in Tagen) angeben"
|
209 |
+
"Quote item does not exist.","Warenkorb-Artikel existiert nicht."
|
210 |
+
"Quote item is not found.","Warenkorb-Artikel wurde nicht gefunden."
|
211 |
"Recently added item(s)","Kürzlich hinzugefügte Artikel"
|
212 |
"Register","Registrieren"
|
213 |
"Register and save time!","Registrieren und Zeit sparen!"
|
219 |
"Remove item","Artikel entfernen"
|
220 |
"Remove product from shopping cart","Artikel vom Warenkorb entfernen"
|
221 |
"Remove product(s) from shopping cart","Artikel vom Warenkorb entfernen"
|
222 |
+
"Retrieve information about shopping cart","Informationen über den Warenkorb werden abgefragt"
|
223 |
"Review Order","Bestellübersicht"
|
224 |
"Review Order - %s","Bestellübersicht - %s"
|
225 |
"Sales","Verkäufe"
|
226 |
"Save Condition","Bedingung speichern"
|
227 |
"Save in address book","Im Adressbuch speichern"
|
228 |
+
"See price before order confirmation.","Bitte beachten Sie den Preis vor der Bestellbestätigung."
|
229 |
"Select Address","Adresse auswählen"
|
230 |
"Select Addresses","Adressen auswählen"
|
231 |
"Select Shipping Method","Versandart auswählen"
|
236 |
"Send Payment Failed Email Copy To","E-Mail Kopie bei<br />Zahlungsfehler an"
|
237 |
"Send To","Sende an"
|
238 |
"Separate by "","".","Trennen durch "",""."
|
239 |
+
"Set customer for shopping cart","Kunden für Warenkorb festlegen"
|
240 |
+
"Set customer's addresses in shopping cart","Kundenanschrift für Warenkorb festlegen"
|
241 |
+
"Set payment method","Zahlart setzen"
|
242 |
"Set shipping method","Versandart setzen"
|
243 |
"Ship to Multiple Addresses","An mehrere Adressen versenden"
|
244 |
"Ship to different address","An andere Adresse verschicken"
|
261 |
"Show Content as","Zeige Inhalt als"
|
262 |
"Some of the requested products are not available in the desired quantity.","Einige der angeforderten Artikel sind in der gewünschten Stückzahl nicht verfügbar."
|
263 |
"Some of the requested products are unavailable.","Einige der angeforderten Artikel sind nicht verfügbar."
|
264 |
+
"Some products quantities were recalculated because of quantity increment mismatch","Einige Stückzahlen wurden angepasst, da die Verpackungseinheiten nicht gestimmt hatten."
|
265 |
+
"Sorry, no quotes are available for this order at this time.","Entschuldigung, momentan kann diese Bestellung nicht aufgegeben werden."
|
266 |
"State/Province","Land/Bundesland"
|
267 |
"Status","Status"
|
268 |
"Store View","StoreView"
|
287 |
"This condition no longer exists.","Diese Bedingung existiert nicht mehr."
|
288 |
"Total","Gesamt"
|
289 |
"Total for this address","Gesamtsumme für diese Adresse"
|
290 |
+
"Unable to set Payment Method.","Zahlart konnte nicht gesetzt werden."
|
291 |
"Unit Price","Einzelpreis"
|
292 |
"Update Cart","Warenkorb aktualisieren"
|
293 |
"Update Qty & Addresses","Stückzahlen & Adressen aktualisieren"
|
294 |
"Update Shopping Cart","Warenkorb aktualisieren"
|
295 |
"Update Total","Gesamtsumme aktualisieren"
|
296 |
+
"Update product quantities in shopping cart","Artikelanzahl im Warenkorb aktualisieren"
|
297 |
+
"Update product(s) quantities in shopping cart","Artikelanzahl im Warenkorb aktualisieren"
|
298 |
"Use Billing Address","Rechnungsadresse verwenden"
|
299 |
+
"We are processing your order and you will soon receive an email with details of the order. Once the order has shipped you will receive another email with a link to track its progress.","Zur Zeit bearbeiten wir Ihre Bestellung... Sie werden bald eine E-Mail mit Details zu Ihrer Bestellung erhalten.<br/>Nach erfolgtem Versand erhalten Sie eine weitere E-Mail mit einem Link zur Sendungsverfolgung."
|
300 |
+
"What's this?","Was ist das?"
|
301 |
"You have no items in your shopping cart.","Sie haben keine Artikel im Warenkorb."
|
302 |
"You will receive an order confirmation email with details of your order and a link to track its progress.","Sie werden eine E-Mail mit einer detaillierten Bestell-Bestätigung erhalten sowie einen Link zur Überprüfung des Fortschritts Ihrer Bestellung."
|
303 |
"Your Checkout Progress","Ihr Bestellfortschritt"
|
304 |
+
"Your billing agreement # is: %s.","Ihre Zahlungsvereinbarungsnummer lautet: %s."
|
305 |
"Your order # is: %s.","Ihre Bestellnummer lautet: %s."
|
306 |
"Your order has been received","Ihre Bestellung wurde übermittelt"
|
307 |
"Your order number is ","Ihre Bestellnummer lautet "
|
308 |
+
"Your recurring payment profiles:","Ihre wiederkehrenden Zahlungen:"
|
309 |
+
"Zip/Postal Code","Postleitzahl"
|
|
app/locale/de_DE/Mage_Cms.csv
CHANGED
@@ -1,31 +1,31 @@
|
|
1 |
"A block identifier with the same properties already exists in the selected store.","Ein Blockbezeichner mit den selben Einstellungen existiert für den ausgewählten Store bereits."
|
2 |
-
"A directory with the same name already exists. Please try another folder name.","Ein Verzeichnis mit dem gleichen Namen existiert bereits. Bitte wählen Sie einen anderen
|
3 |
-
"A page URL key for specified store already exists.","Ein Seiten
|
4 |
"Action","Aktion"
|
5 |
-
"Add New Block","
|
6 |
-
"Add New Page","Neue Seite
|
7 |
"All Countries","Alle Länder"
|
8 |
-
"An error occurred while saving the page.","Beim
|
9 |
"Anchor Custom Text","Individueller Anker Text"
|
10 |
"Anchor Custom Title","Individueller Anker Titel"
|
11 |
-
"Are you sure you want to delete current folder?","Sind Sie sicher
|
12 |
-
"Are you sure you want to delete the selected file?","Sind Sie sicher
|
13 |
"Block","Block"
|
14 |
"Block Information","Blockinformation"
|
15 |
"Block Title","Blocktitel"
|
16 |
"CMS","CMS"
|
17 |
"CMS Content Wrapper","CMS Content Wrapper"
|
18 |
-
"CMS Home Page","
|
19 |
-
"CMS No Cookies Page","
|
20 |
-
"CMS No Route Page","
|
21 |
-
"CMS No-Route Page","
|
22 |
"CMS Page","CMS Seite"
|
23 |
-
"CMS Page Link","CMS
|
24 |
-
"CMS Page Link Block Template","CMS
|
25 |
-
"CMS Page Link Inline Template","CMS
|
26 |
"CMS Pages (All)","CMS Seiten (Alle)"
|
27 |
-
"CMS Static Block","
|
28 |
-
"CMS Static Block Default Template","
|
29 |
"Cannot create new directory.","Neues Verzeichnis konnte nicht angelegt werden."
|
30 |
"Cannot delete directory %s.","Verzeichnis konnte nicht gelöscht werden"
|
31 |
"Cannot delete root directory %s.","Root Verzeichnis %s konnte nicht gelöscht werden."
|
@@ -35,7 +35,7 @@
|
|
35 |
"Content Heading","Seiten-Überschrift"
|
36 |
"Content Management","CMS-Editor Optionen"
|
37 |
"Contents of a Static Block","Inhalte eines Statischen Blocks"
|
38 |
-
"Create Folder...","Lege
|
39 |
"Custom Design","Eigene Gestaltung"
|
40 |
"Custom Design From","Eigenes Design vom"
|
41 |
"Custom Design To","Eigenes Design bis zum"
|
@@ -46,7 +46,7 @@
|
|
46 |
"Date Created","Angelegt am"
|
47 |
"Delete Block","Block löschen"
|
48 |
"Delete File","Datei löschen"
|
49 |
-
"Delete Folder","
|
50 |
"Delete Page","Seite löschen"
|
51 |
"Description","Beschreibung"
|
52 |
"Design","Design"
|
@@ -69,25 +69,26 @@
|
|
69 |
"If empty, the Page Title will be used","Falls leer, wird der Seitentitel verwendet."
|
70 |
"Images (%s)","Bilder (%s)"
|
71 |
"Insert File","Datei einfügen"
|
72 |
-
"Invalid folder name. Please, use alphanumeric characters, underscores and dashes.","Ungültiger
|
73 |
"Keywords","Schlüsselwörter"
|
74 |
"Last Modified","Zuletzt geändert"
|
75 |
"Layout","Layout"
|
76 |
"Layout Update XML","XML für Layoutänderung"
|
77 |
"Link to a CMS Page","Link zu einer CMS Seite"
|
78 |
"Manage Pages","Seiten verwalten"
|
79 |
-
"Media
|
|
|
80 |
"Meta Data","Metadaten"
|
81 |
"Meta Description","Meta Beschreibung"
|
82 |
"Meta Keywords","Meta Keywords"
|
83 |
"New Block","Neuer Block"
|
84 |
-
"New Folder Name:","Neuer
|
85 |
"New Page","Neue Seite"
|
86 |
"No files found","Keine Dateien gefunden"
|
87 |
"Page Information","Seiteninformation"
|
88 |
-
"Page Layout","
|
89 |
-
"Page Status","
|
90 |
-
"Page Title","
|
91 |
"Pages","Seiten verwalten"
|
92 |
"Product Tax Class Information","Artikelsteuerklasse Information"
|
93 |
"Redirect to CMS-page if Cookies are Disabled","Umleiten zur CMS-Seite wenn Cookies im Browser deaktiviert sind"
|
@@ -98,32 +99,25 @@
|
|
98 |
"Select Block...","Block auswählen..."
|
99 |
"Select Page...","Seite auswählen..."
|
100 |
"Show Breadcrumbs for CMS Pages","Brotkrumennavigation für CMS-Seiten"
|
101 |
-
"Show Notice if JavaScript is Disabled","Hinweis anzeigen wenn JavaScript im Browser deaktiviert ist"
|
102 |
"Static Blocks","Statische Blöcke"
|
103 |
"Status","Status"
|
104 |
-
"Storage Root","
|
105 |
"Store View","StoreView"
|
106 |
"Template","Vorlage"
|
107 |
"The block has been deleted.","Der Block wurde gelöscht."
|
108 |
"The block has been saved.","der Block wurde gespeichert."
|
109 |
"The directory %s is not writable by server.","Das Verzeichnis %s ist nicht Schreibbar vom Server."
|
110 |
"The page URL key cannot consist only of numbers.","Der Seiten URL-Bezeichner darf nicht nur aus Nummern bestehen."
|
111 |
-
"The page URL key contains capital letters or disallowed symbols.","
|
112 |
"The page has been deleted.","Die Seite wurde gelöscht."
|
113 |
"The page has been saved.","Die Seite wurde gespeichert."
|
|
|
114 |
"This block no longer exists.","Der Block existiert nicht mehr."
|
115 |
"This page no longer exists.","Diese Seite existiert nicht mehr."
|
116 |
"Title","Titel"
|
117 |
-
"URL Key","URL
|
118 |
-
"Unable to find a block to delete.","
|
119 |
-
"Unable to find a page to delete.","
|
120 |
"WYSIWYG Options","WYSIWYG Optionen"
|
121 |
-
"px.","px."
|
122 |
-
"Cannot create new directory","Neues Verzeichnis konnte nicht angelegt werden"
|
123 |
-
"Cannot delete directory %s","Konnte Verzeichnis %s nicht löschen"
|
124 |
-
"Cannot delete root directory %s","Konnte Wurzelverzeichnis %s löschen"
|
125 |
-
"Cannot upload file","Konnte Datei nicht hochladen"
|
126 |
-
"Enable WYSIWYG editor","Aktiviere WYSIWYG Editor"
|
127 |
-
"This page no longer exists","Diese Seite existiert nicht mehr"
|
128 |
-
"Unable to find a block to delete","Der zu löschende Block wurde nicht gefunden"
|
129 |
-
"Unable to find a page to delete","Die zu löschende Seite wurde nicht gefunden"
|
1 |
"A block identifier with the same properties already exists in the selected store.","Ein Blockbezeichner mit den selben Einstellungen existiert für den ausgewählten Store bereits."
|
2 |
+
"A directory with the same name already exists. Please try another folder name.","Ein Verzeichnis mit dem gleichen Namen existiert bereits. Bitte wählen Sie einen anderen Verzeichnisnamen."
|
3 |
+
"A page URL key for specified store already exists.","Ein Seiten-URL-Bezeichner für den ausgewählten Store existiert bereits."
|
4 |
"Action","Aktion"
|
5 |
+
"Add New Block","Neuer Block"
|
6 |
+
"Add New Page","Neue Seite"
|
7 |
"All Countries","Alle Länder"
|
8 |
+
"An error occurred while saving the page.","Beim Speichern der Seite ist ein Fehler aufgetreten."
|
9 |
"Anchor Custom Text","Individueller Anker Text"
|
10 |
"Anchor Custom Title","Individueller Anker Titel"
|
11 |
+
"Are you sure you want to delete current folder?","Sind Sie sicher, dass Sie das ausgewählten Verzeichnis löschen möchten?"
|
12 |
+
"Are you sure you want to delete the selected file?","Sind Sie sicher, dass Sie die ausgewählte Datei löschen möchten?"
|
13 |
"Block","Block"
|
14 |
"Block Information","Blockinformation"
|
15 |
"Block Title","Blocktitel"
|
16 |
"CMS","CMS"
|
17 |
"CMS Content Wrapper","CMS Content Wrapper"
|
18 |
+
"CMS Home Page","Startseite"
|
19 |
+
"CMS No Cookies Page","Seite bei deaktivierten Cookies"
|
20 |
+
"CMS No Route Page","404 Seite"
|
21 |
+
"CMS No-Route Page","404 Seite"
|
22 |
"CMS Page","CMS Seite"
|
23 |
+
"CMS Page Link","CMS Seitenlink"
|
24 |
+
"CMS Page Link Block Template","CMS-Seitenlink Block Vorlage"
|
25 |
+
"CMS Page Link Inline Template","CMS-Seitenlink Inline Vorlage"
|
26 |
"CMS Pages (All)","CMS Seiten (Alle)"
|
27 |
+
"CMS Static Block","Statischer Block"
|
28 |
+
"CMS Static Block Default Template","Statischer Block Standard Vorlage"
|
29 |
"Cannot create new directory.","Neues Verzeichnis konnte nicht angelegt werden."
|
30 |
"Cannot delete directory %s.","Verzeichnis konnte nicht gelöscht werden"
|
31 |
"Cannot delete root directory %s.","Root Verzeichnis %s konnte nicht gelöscht werden."
|
35 |
"Content Heading","Seiten-Überschrift"
|
36 |
"Content Management","CMS-Editor Optionen"
|
37 |
"Contents of a Static Block","Inhalte eines Statischen Blocks"
|
38 |
+
"Create Folder...","Lege Verzeichnis an..."
|
39 |
"Custom Design","Eigene Gestaltung"
|
40 |
"Custom Design From","Eigenes Design vom"
|
41 |
"Custom Design To","Eigenes Design bis zum"
|
46 |
"Date Created","Angelegt am"
|
47 |
"Delete Block","Block löschen"
|
48 |
"Delete File","Datei löschen"
|
49 |
+
"Delete Folder","Verzeichnis löschen"
|
50 |
"Delete Page","Seite löschen"
|
51 |
"Description","Beschreibung"
|
52 |
"Design","Design"
|
69 |
"If empty, the Page Title will be used","Falls leer, wird der Seitentitel verwendet."
|
70 |
"Images (%s)","Bilder (%s)"
|
71 |
"Insert File","Datei einfügen"
|
72 |
+
"Invalid folder name. Please, use alphanumeric characters, underscores and dashes.","Ungültiger Verzeichnisname. Bitte verwenden Sie alphanumerische Zeichen, Unterstriche & Striche."
|
73 |
"Keywords","Schlüsselwörter"
|
74 |
"Last Modified","Zuletzt geändert"
|
75 |
"Layout","Layout"
|
76 |
"Layout Update XML","XML für Layoutänderung"
|
77 |
"Link to a CMS Page","Link zu einer CMS Seite"
|
78 |
"Manage Pages","Seiten verwalten"
|
79 |
+
"Media Gallery","Bilder Galerie"
|
80 |
+
"Media Storage","Medien-Speicher"
|
81 |
"Meta Data","Metadaten"
|
82 |
"Meta Description","Meta Beschreibung"
|
83 |
"Meta Keywords","Meta Keywords"
|
84 |
"New Block","Neuer Block"
|
85 |
+
"New Folder Name:","Neuer Verzeichnisname:"
|
86 |
"New Page","Neue Seite"
|
87 |
"No files found","Keine Dateien gefunden"
|
88 |
"Page Information","Seiteninformation"
|
89 |
+
"Page Layout","Seitenlayout"
|
90 |
+
"Page Status","Seitenstatus"
|
91 |
+
"Page Title","Seitentitel"
|
92 |
"Pages","Seiten verwalten"
|
93 |
"Product Tax Class Information","Artikelsteuerklasse Information"
|
94 |
"Redirect to CMS-page if Cookies are Disabled","Umleiten zur CMS-Seite wenn Cookies im Browser deaktiviert sind"
|
99 |
"Select Block...","Block auswählen..."
|
100 |
"Select Page...","Seite auswählen..."
|
101 |
"Show Breadcrumbs for CMS Pages","Brotkrumennavigation für CMS-Seiten"
|
102 |
+
"Show Notice if JavaScript is Disabled","Hinweis anzeigen, wenn JavaScript im Browser deaktiviert ist"
|
103 |
"Static Blocks","Statische Blöcke"
|
104 |
"Status","Status"
|
105 |
+
"Storage Root","Hauptverzeichnis des Speichers"
|
106 |
"Store View","StoreView"
|
107 |
"Template","Vorlage"
|
108 |
"The block has been deleted.","Der Block wurde gelöscht."
|
109 |
"The block has been saved.","der Block wurde gespeichert."
|
110 |
"The directory %s is not writable by server.","Das Verzeichnis %s ist nicht Schreibbar vom Server."
|
111 |
"The page URL key cannot consist only of numbers.","Der Seiten URL-Bezeichner darf nicht nur aus Nummern bestehen."
|
112 |
+
"The page URL key contains capital letters or disallowed symbols.","Der Seiten-URL-Bezeichner enthält Großbuchstaben oder andere ungültige Zeichen."
|
113 |
"The page has been deleted.","Die Seite wurde gelöscht."
|
114 |
"The page has been saved.","Die Seite wurde gespeichert."
|
115 |
+
"The static block content cannot contain directive with its self.","Der Inhalt des statischen Blocks kann keine Anweisung mit sich selbst enhalten (Rekursion!)."
|
116 |
"This block no longer exists.","Der Block existiert nicht mehr."
|
117 |
"This page no longer exists.","Diese Seite existiert nicht mehr."
|
118 |
"Title","Titel"
|
119 |
+
"URL Key","URL-Bezeichner"
|
120 |
+
"Unable to find a block to delete.","Es wurde kein Block zum Löschen gefunden."
|
121 |
+
"Unable to find a page to delete.","Es wurde keine Seite zum Löschen gefunden."
|
122 |
"WYSIWYG Options","WYSIWYG Optionen"
|
123 |
+
"px.","px."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Compiler.csv
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
"Collected Files Count","Anzahl erfasster Dateien"
|
2 |
"Compilation","Compiler"
|
3 |
-
"Compilation State","
|
4 |
-
"Compilation error","
|
5 |
"Compiled","Kompiliert"
|
6 |
"Compiled Scopes Count","Anzahl erfasster Bereiche"
|
7 |
"Compiler Status","Compiler Status"
|
8 |
"Compiler include path is disabled.","Compiler include Pfad wurde deaktiviert."
|
9 |
"Compiler include path is enabled.","Compiler include Pfad wurde aktiviert."
|
10 |
-
"Directory "%s" must be writeable","Verzeichnis "%s" muss schreibbar sein"
|
11 |
"Disable","Deaktivieren"
|
12 |
"Disabled","Deaktiviert"
|
13 |
"Enable","Aktivieren"
|
14 |
"Enabled","Aktiviert"
|
15 |
-
"File "%s" must be writeable","Datei "%s" muss schreibbar sein"
|
16 |
"Not Compiled","Nicht kompiliert"
|
17 |
"Run Compilation Process","Kompilierungsprozess starten"
|
18 |
"Scopes Compilation Settings","Bereichsbezogene Kompilierung"
|
19 |
"System","System"
|
20 |
"The compilation has completed.","Die Kompilierung wurde abgeschlossen."
|
21 |
-
"Tools","
|
1 |
"Collected Files Count","Anzahl erfasster Dateien"
|
2 |
"Compilation","Compiler"
|
3 |
+
"Compilation State","Kompilierungsstatus"
|
4 |
+
"Compilation error","Kompilierungsfehler"
|
5 |
"Compiled","Kompiliert"
|
6 |
"Compiled Scopes Count","Anzahl erfasster Bereiche"
|
7 |
"Compiler Status","Compiler Status"
|
8 |
"Compiler include path is disabled.","Compiler include Pfad wurde deaktiviert."
|
9 |
"Compiler include path is enabled.","Compiler include Pfad wurde aktiviert."
|
10 |
+
"Directory ""%s"" must be writeable","Verzeichnis ""%s"" muss schreibbar sein"
|
11 |
"Disable","Deaktivieren"
|
12 |
"Disabled","Deaktiviert"
|
13 |
"Enable","Aktivieren"
|
14 |
"Enabled","Aktiviert"
|
15 |
+
"File ""%s"" must be writeable","Datei ""%s"" muss schreibbar sein"
|
16 |
"Not Compiled","Nicht kompiliert"
|
17 |
"Run Compilation Process","Kompilierungsprozess starten"
|
18 |
"Scopes Compilation Settings","Bereichsbezogene Kompilierung"
|
19 |
"System","System"
|
20 |
"The compilation has completed.","Die Kompilierung wurde abgeschlossen."
|
21 |
+
"Tools","Werkzeuge"
|
app/locale/de_DE/Mage_Connect.csv
CHANGED
@@ -17,7 +17,7 @@
|
|
17 |
"Extensions","Erweiterungen"
|
18 |
"Failed to create the package.","Fehler bei der Paketerstellung."
|
19 |
"Failed to load the package data.","Fehler beim Laden des lokalen Pakets."
|
20 |
-
"Failed to save the package.","Fehler beim
|
21 |
"Files","Dateien"
|
22 |
"Folder","Ordner"
|
23 |
"Ignore","Ignoriere"
|
@@ -46,13 +46,13 @@
|
|
46 |
"Remove","Entfernen"
|
47 |
"Save As...","Speichern unter..."
|
48 |
"Save Data and Create Package","Daten speichern und Paket erzeugen"
|
49 |
-
"Save package with custom package file name","Paket unter
|
50 |
"Summary","Kurzbeschreibung"
|
51 |
"Supported releases","Unterstützte Versionen"
|
52 |
"System","System"
|
53 |
"Target","Ziel"
|
54 |
"The package %s data has been loaded.","Die Paket %s Daten wurden geladen."
|
55 |
"The package data has been saved.","Die Paket Daten wurden gespeichert."
|
56 |
-
"There was a problem saving package data","Es gibt ein Problem beim
|
57 |
"Type","Art"
|
58 |
"User","Benutzer"
|
17 |
"Extensions","Erweiterungen"
|
18 |
"Failed to create the package.","Fehler bei der Paketerstellung."
|
19 |
"Failed to load the package data.","Fehler beim Laden des lokalen Pakets."
|
20 |
+
"Failed to save the package.","Fehler beim Speichern des Pakets."
|
21 |
"Files","Dateien"
|
22 |
"Folder","Ordner"
|
23 |
"Ignore","Ignoriere"
|
46 |
"Remove","Entfernen"
|
47 |
"Save As...","Speichern unter..."
|
48 |
"Save Data and Create Package","Daten speichern und Paket erzeugen"
|
49 |
+
"Save package with custom package file name","Paket unter individuellem Namen speichern"
|
50 |
"Summary","Kurzbeschreibung"
|
51 |
"Supported releases","Unterstützte Versionen"
|
52 |
"System","System"
|
53 |
"Target","Ziel"
|
54 |
"The package %s data has been loaded.","Die Paket %s Daten wurden geladen."
|
55 |
"The package data has been saved.","Die Paket Daten wurden gespeichert."
|
56 |
+
"There was a problem saving package data","Es gibt ein Problem beim Speichern der Paket Daten"
|
57 |
"Type","Art"
|
58 |
"User","Benutzer"
|
app/locale/de_DE/Mage_Core.csv
CHANGED
@@ -2,47 +2,53 @@
|
|
2 |
"%s already exist.","%s existiert bereits"
|
3 |
"%s already exists.","%s existiert bereits"
|
4 |
"-- Please Select --","-- Bitte wählen --"
|
5 |
-
"<strong style="color:red">Warning!</strong> When using CDN, in some cases JavaScript may not run properly if CDN is not in your subdomain",
|
|
|
6 |
"A category object is required for determining the product request path.","Kategorieobjekt wird zur Bestimmung des Artikelpfades benötigt"
|
7 |
"Add Block Names to Hints","Blocknamen zu Hinweisen hinzufügen"
|
8 |
-
"Add Secret Key to URLs","Secret-Key zu URLs hinzufügen:<br />z.B.
|
9 |
"Add Store Code to Urls","StoreCode zu URLs hinzufügen"
|
10 |
"Admin","Admin"
|
11 |
"Admin Base URL","Admin Basis-URL"
|
12 |
"Admin User Emails","Admin Benutzer E-Mails"
|
13 |
"Advanced","Erweitert"
|
|
|
|
|
|
|
14 |
"Allow Countries","Erlaubte Länder"
|
|
|
15 |
"Allowed IPs (comma separated)","Erlaubte IPs (Kommagetrennt)"
|
16 |
"Allowed file types: ICO, PNG, GIF, JPEG, APNG, SVG. Not all browsers support all these formats!","Erlaubte Formate: ICO, PNG, GIF, JPEG, APNG, SVG. Nicht alle Browser unterstützen alle diese Formate!"
|
17 |
"Allows customers to stay logged in when switching between different stores.","Kunden erlauben eingeloggt zu bleiben wenn Sie zwischen den Stores wechseln."
|
18 |
"Alternative text for next link in pagination menu. If empty, default arrow image will used.","Alternativer Text für den 'Nächste Seite' Link in der Aufzählungsleiste. Wenn leer, wird eine Pfeil-Grafik verwendet."
|
19 |
"Alternative text for previous link in pagination menu. If empty, default arrow image will used.","Alternativer Text für den 'Letzte Seite' Link in der Aufzählungsleiste. Wenn leer, wird eine Pfeil-Grafik verwendet."
|
20 |
-
"An error occurred while saving. Please review the error log.","Beim
|
21 |
"Anchor Text for Next","Anker-Text für einen<br /> Seitensprung <i>vor</i>"
|
22 |
"Anchor Text for Previous","Anker-Text für einen<br /> Seitensprung <i>zurück</i>"
|
23 |
-
"Anchor symbol (#) is not supported in request path","
|
24 |
-
"Anchor symbol (#) is not supported in url rewrite suffix","
|
25 |
"Are you sure?","Sind Sie sicher?"
|
26 |
-
"Auto-redirect to Base URL","
|
27 |
"Back","Zurück"
|
28 |
-
"Backup Options","
|
29 |
"Base JavaScript URL","Basis JavaScript URL"
|
30 |
"Base Link URL","Basis Link URL"
|
31 |
"Base Media URL","Basis Media URL"
|
32 |
"Base Skin URL","Basis Skin URL"
|
33 |
"Base URL","Basis-URL"
|
34 |
-
"Before modifying the store view code please make sure that it is not used in index.php.","
|
35 |
-
"Before modifying the website code please make sure that it is not used in index.php.","
|
36 |
-
"Block with name "%s" already exists","Der Block mit dem Namen "%s" existiert bereits"
|
37 |
"Browser Capabilities Detection","Feststellung der Browser Fähigkeiten"
|
38 |
"CSS Settings","CSS Einstellungen"
|
39 |
"Cache Storage Management","Cache-Verwaltung"
|
40 |
-
"Cache storage may contain additional data. Are you sure that you want flush it?","Cache
|
|
|
41 |
"Can't retrieve request object","Kann Anfrageobjekt nicht ermitteln"
|
|
|
42 |
"Cancel","Abbrechen"
|
43 |
"Cannot complete this operation from non-admin area.","Diese Aktion von einem nicht administrativen Bereich nicht abgeschlossen werden."
|
44 |
-
"
|
45 |
-
"Card type does not match credit card number.","Card type does not match credit card number."
|
46 |
"Code","Code"
|
47 |
"Controller file was loaded but class does not exist","Controller Datei wurde geladen, aber Klasse existiert nicht"
|
48 |
"Cookie Domain","Cookie Domain"
|
@@ -53,9 +59,9 @@
|
|
53 |
"Create Store","Store anlegen"
|
54 |
"Create Store View","StoreView anlegen"
|
55 |
"Create Website","Website anlegen"
|
56 |
-
"Credit card number does not match credit card type.","
|
57 |
"Current Package Name","Aktueller Paketname"
|
58 |
-
"Custom Admin
|
59 |
"Custom Design","Eigene Gestaltung"
|
60 |
"Custom Email 1","Eigene E-Mail 1"
|
61 |
"Custom Email 2","Eigene E-Mail 2"
|
@@ -64,7 +70,7 @@
|
|
64 |
"Dashboard","Übersicht"
|
65 |
"Date From","Datum von"
|
66 |
"Date To","Datum bis"
|
67 |
-
"Date/time format "%s" is not supported.","
|
68 |
"Debug","Debug"
|
69 |
"Default","Standard"
|
70 |
"Default Country","Standard land"
|
@@ -89,7 +95,7 @@
|
|
89 |
"Disable Email Communications","E-Mail-Funktionen abschalten"
|
90 |
"Disable Modules Output","Modulausgaben deaktivieren"
|
91 |
"Display Demo Store Notice","Demostore-Hinweis anzeigen"
|
92 |
-
"Duplicate Of Template Name","
|
93 |
"Edit Design Change","Gestaltungsänderung bearbeiten"
|
94 |
"Edit Store","Store bearbeiten"
|
95 |
"Edit Store View","StoreView bearbeiten"
|
@@ -97,11 +103,11 @@
|
|
97 |
"Empty identifier field name","Leerer Bezeichner-Feldname"
|
98 |
"Empty main table name","Leerer Name der Haupttabelle"
|
99 |
"Enable Charts","Charts aktivieren"
|
100 |
-
"Enable Prototype Deprecation Log","Prototype Deprecation-Log aktivieren"
|
101 |
"Enabled","Aktiviert"
|
102 |
"Enabled for Admin","Aktiviert für Admin"
|
103 |
"Enabled for Frontend","Aktiviert für Shop"
|
104 |
-
"
|
|
|
105 |
"Error: Passwords do not match","Fehler: Passwörter stimmen nicht überein"
|
106 |
"Exceptions Log File Name","Log-Dateiname für Exceptions"
|
107 |
"Favicon Icon","Favicon Grafik"
|
@@ -125,12 +131,15 @@
|
|
125 |
"ID Path for Specified Store","ID-Pfad für angegebenen Store"
|
126 |
"If the current frame position does not cover utmost pages, will render link to current position plus/minus this value.","Wenn der aktuelle Rahmen nicht die Höchstanzahl an Seiten aufnehmen kann, wird der Link zur aktuellen Postion Plus/Minus diesen Wert dargestellt"
|
127 |
"Incorrect credit card expiration date.","Falsches Kreditkarten Ablaufdatum."
|
|
|
128 |
"Invalid base url type","Ungültiger Basis-URL Typ"
|
129 |
"Invalid block name to set child %s: %s","Ungültiger Blockname um Kindelement %s zu setzen: %s"
|
130 |
"Invalid block type: %s","Ungültiger Blocktyp: %s"
|
131 |
"Invalid block: %s","Ungültiger Block: %s"
|
|
|
132 |
"Invalid layout update handle","Ungültiges Layout-Update Handle"
|
133 |
-
"Invalid messages storage "%s" for layout messages initialization","Ungültiger Nachrichtenspeicher "%s" für die Initialisierung der Nachrichtenvorlage"
|
|
|
134 |
"Invalid transactional email code: ","Ungültiger E-Mail-Transaktionscode"
|
135 |
"Invalid website\'s configuration path: %s","Ungültiger Website Konfigurationspfad: %s"
|
136 |
"JavaScript Settings","JavaScript Einstellungen"
|
@@ -154,21 +163,24 @@
|
|
154 |
"Merge JavaScript Files","JavaScript Dateien verbinden"
|
155 |
"Miscellaneous HTML","Verschiedenes HTML<br />z.B. für die Einbindung<br />von Statistik-Trackern"
|
156 |
"Miscellaneous Scripts","Diverse Skripte & Skriptverknüpfungen"
|
157 |
-
"Model class does not exist: %s.","Model
|
158 |
-
"Model collection resource name is not defined.","Model
|
159 |
-
"Module "%1$s"
|
160 |
-
"Module "%1$s" requires module "%2$s".","Modul "%1$s" benötigt Modul "%2$s"."
|
161 |
"Name","Name"
|
162 |
"New Design Change","Neue Gestaltungsänderung"
|
163 |
"New Store","Neuer Store"
|
164 |
"New Store View","Neue StoreView"
|
165 |
"New Website","Neue Website"
|
166 |
"No","Nein"
|
|
|
167 |
"Package","Paket"
|
168 |
"Pagination","Seiten-Nummerierung"
|
169 |
"Pagination Frame","Anzahl der Auflistung"
|
170 |
"Pagination Frame Skip","Seiten Umbruch / Sprung"
|
171 |
-
"Parent directory does not exist: %s","
|
|
|
|
|
|
|
172 |
"Please choose to register or to checkout as a guest","Bitte registrieren Sie sich, oder gehen Sie als Gast zur Kasse"
|
173 |
"Please define flag code.","Bitte Markierungscode festlegen"
|
174 |
"Please enter 6 or more characters.","Bitte geben Sie 6 oder mehr Zeichen ein."
|
@@ -178,41 +190,45 @@
|
|
178 |
"Please enter a number greater than 0 in this field.","Bitte geben Sie eine Zahl größer 0 in dieses Feld ein."
|
179 |
"Please enter a number lower than 100.","Bitte tragen Sie eine Zahl ein die niedriger wie 100 ist."
|
180 |
"Please enter a valid $ amount. For example $100.00.","Bitte geben Sie einen gültigen Betrag ein. Zum Beispiel 100,00 €."
|
181 |
-
"Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page".","Bitte geben Sie einen gültigen URL
|
182 |
"Please enter a valid URL. For example http://www.example.com or www.example.com","Bitte geben Sie eine gültige URL ein. Zum Beispiel http://www.beispiel.de oder www.beispiel.de"
|
183 |
"Please enter a valid URL. Protocol is required (http://, https:// or ftp://)","Bitte geben Sie eine gültige URL ein. Mögliche Protokolle (http://, https:// or ftp://)"
|
184 |
"Please enter a valid XML-identifier. For example something_1, block5, id-4.","Bitte geben Sie einen gültigen XML-Identifizierer an. Zum Beispiel irgendetwas_1, block5, id-4."
|
185 |
"Please enter a valid credit card number.","Bitte geben Sie eine gültige Kreditkartennummer ein."
|
186 |
"Please enter a valid credit card verification number.","Bitte tragen Sie eine gültige Kreditkarten-Prüfnummer ein."
|
|
|
|
|
|
|
187 |
"Please enter a valid date.","Bitte geben Sie ein gültiges Datum ein."
|
188 |
-
"Please enter a valid day (1-%d).","
|
189 |
"Please enter a valid email address. For example johndoe@domain.com.","Bitte geben Sie eine gültige E-Mail Adresse ein. Zum Beispiel johndoe@domain.de."
|
190 |
"Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.","Bitte tragen Sie eine gültige Faxnummer ein. Zum Beispiel (123) 456-7890 oder 123-456-7890."
|
191 |
-
"Please enter a valid full date","
|
192 |
-
"Please enter a valid month (1-12).","
|
193 |
"Please enter a valid number in this field.","Bitte geben Sie eine gültige Nummer in dieses Feld ein."
|
194 |
"Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.","Bitte geben Sie eine gültige Telefonnummer ein. Zum Beispiel (123) 456-7890 oder 123-456-7890."
|
195 |
"Please enter a valid social security number. For example 123-45-6789.","Bitte geben Sie eine gültige Sozialversicherungsnummer ein. Zum Beispiel 123-45-6789."
|
196 |
-
"Please enter a valid year (1900-%d).","
|
197 |
"Please enter a valid zip code.","Bitte geben Sie eine gültige Postleitzahl ein."
|
198 |
"Please enter a valid zip code. For example 90602 or 90602-1234.","Bitte geben Sie eine gültige Postleitzahl ein. Zum Beispiel 21335."
|
199 |
-
"Please enter issue number or start date for switch/solo card type.","
|
200 |
"Please enter valid password.","Bitte geben Sie ein gültiges Passwort ein."
|
201 |
-
"Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%.","
|
202 |
"Please make sure your passwords match.","Bitte stellen Sie sicher, dass Ihre Passwörter übereinstimmen."
|
203 |
"Please select State/Province.","Bitte Land/Bundesland wählen."
|
204 |
"Please select an option.","Bitte wählen Sie eine Option."
|
205 |
"Please select one of the above options.","Bitte wählen Sie eine der oberen Optionen."
|
206 |
"Please select one of the options.","Bitte wählen Sie eine der Optionen."
|
207 |
-
"Please
|
|
|
208 |
"Please specify payment method.","Bitte bestimmen Sie die Bezahlmethode."
|
209 |
"Please specify shipping method.","Bitte bestimmen Sie die Versandart."
|
210 |
-
"Please use letters only (a-z or A-Z) in this field.","Bitte
|
211 |
-
"Please use letters only (a-z) in this field.","Bitte nur Buchstaben (a-z) in
|
212 |
-
"Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.","
|
213 |
"Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte tragen Sie nur Buchstaben (a-z oder A-Z), bzw. Zahlen (0-9) in dieses Feld ein. Keine Freizeichen oder andere Zeichen sind erlaubt."
|
214 |
"Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.","Bitte verwenden Sie nur Buchstaben (a-z oder A-Z), Zahlen (0-9) und Freizeichen oder # für dieses Feld verwenden."
|
215 |
-
"Please use only letters (a-z or A-Z), numbers (0-9) or underscores (_) in this field, first character must be a letter.","
|
216 |
"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte nur Buchstaben (a-z) oder Zahlen (0-9) in diesem Feld verwenden. Es sind keine Leerzeichen oder andere Zeichen erlaubt."
|
217 |
"Please use only letters (a-z) or numbers (0-9) or spaces and # only in this field.","Bitte nur Buchstaben (a-z), Zahlen (0-9) oder Leerzeichen und # in diesem Feld verwenden."
|
218 |
"Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.","Bitte benutzen Sie nur Buchstaben (a-z), Ziffern (0-9) oder Unterstriche (_) in diesem Feld, das erste Zeichen sollte ein Buchstabe sein."
|
@@ -223,8 +239,9 @@
|
|
223 |
"Port (25)","Port (25)"
|
224 |
"Profiler","Profiler"
|
225 |
"Request Path for Specified Store","Anfragepfad für angegebenen Store"
|
226 |
-
"Requested
|
227 |
-
"
|
|
|
228 |
"Return-Path Email","Rückkehr-Pfad E-Mail"
|
229 |
"Root Category","Root-Kategorie"
|
230 |
"Sales Representative","Verkaufsvertreter"
|
@@ -238,7 +255,7 @@
|
|
238 |
"Select Date","Datum auswählen"
|
239 |
"Select Media Database","Medien Datenbank auswählen"
|
240 |
"Sender Email","Sender E-Mail"
|
241 |
-
"Sender Name","
|
242 |
"Services","Services"
|
243 |
"Session Cookie Management","Sitzungscookie Verwaltung"
|
244 |
"Session Lifetime (seconds)","Lebenszeit für Sitzungen in Sekunden"
|
@@ -247,7 +264,7 @@
|
|
247 |
"Set as Default","Als Standard festlegen"
|
248 |
"Skin (Images / CSS)","Skin (Bilder / CSS)"
|
249 |
"Sort Order","Reihenfolge"
|
250 |
-
"Specified date/time "%1$s" do not match format "%2$s".","Angegebene(s) Datum/Zeit "%1$s" entspricht nicht dem Format "%2$s"."
|
251 |
"Start date cannot be greater than end date.","Startdatum darf nicht später als Enddatum liegen"
|
252 |
"Startup Page","Startseite"
|
253 |
"Status","Status"
|
@@ -267,11 +284,11 @@
|
|
267 |
"System","System"
|
268 |
"System Log File Name","Dateiname System LogF"
|
269 |
"Template Path Hints","Vorlagen Pfadhinweise"
|
|
|
270 |
"Template Variables","Vorlagen-Variablen"
|
271 |
"Templates","Vorlagen"
|
272 |
"Text length does not satisfy specified text range.","Text Länge entspricht nicht der gesetzten Bereichs."
|
273 |
-
"The %s you entered is invalid. Please make sure that it follows "http://domain.com/" format.","%s ist ungültig. Bitte beachten Sie das Eingabeformat "http://domain.com/"."
|
274 |
-
"The model collection resource name is not defined.","Der Modelkollektions-Rescourcen Name ist nicht definiert."
|
275 |
"The store code may contain only letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter","Der Storecode darf nur Bischstaben (a-z), Zahlen (0-9) oder Unterstriche(_) enthalten, wobei das Erste Zeichen ein Buchstabe sein muss"
|
276 |
"The store does not exist","der Store existiert nicht"
|
277 |
"The store has been deleted.","Der Store wurde gelöscht."
|
@@ -301,20 +318,21 @@
|
|
301 |
"Translate Inline","Inline übersetzen"
|
302 |
"Translate, blocks and other output caches should be disabled for both frontend and admin inline translations.","Bei Nutzung sollten Block- und Übersetzungscaches deaktiviert sein!"
|
303 |
"Translations","Übersetzungen"
|
304 |
-
"Two and more slashes together are not permitted in request path","
|
305 |
-
"Two and more slashes together are not permitted in url rewrite suffix","
|
306 |
"Unable to create directory: %s","Nicht möglich Verzeichnis: %s anzulegen"
|
307 |
"Unable to delete store view. Please, try again later.","Diese StoreView kann nicht gelöscht werden. Versuchen Sie es später noch einmal."
|
308 |
"Unable to delete store. Please, try again later.","Dieser Store kann nicht gelöscht werden. Versuchen Sie es später noch einmal."
|
309 |
"Unable to delete website. Please, try again later.","Website konnte nicht gelöscht werden. Bitte versuchen Sie es später noch einmal."
|
310 |
"Unable to proceed. Please, try again","Vorgang konnte nicht ausgeführt werden. Bitte versuchen Sie es später noch einmal."
|
311 |
"Unable to proceed. Please, try again.","Nicht möglich fortzusetzen. Bitte noch einmal versuchen."
|
312 |
-
"Unable to save file "%s" at "%s"","
|
313 |
-
"Unable to save file: %s","
|
314 |
-
"Unknown
|
|
|
315 |
"Unsecure","Ungesichert"
|
316 |
"Url Options","URL Optionen"
|
317 |
-
"Use Custom Admin
|
318 |
"Use HTTP Only","Verwende nur HTTP"
|
319 |
"Use SID on Frontend","Verwende SID im Shop-Frontend"
|
320 |
"Use Secure URLs in Admin","Verwende sichere URL im Administrationsbereich"
|
@@ -327,49 +345,22 @@
|
|
327 |
"Validation has failed.","Überprüfung fehlgeschlagen."
|
328 |
"Values less than 60 are ignored. Note that changes will apply after logout.","Werte die kleiner wie 60 sind, werden ignoriert. Veränderungen werden erst nach dem ausloggen übernommen."
|
329 |
"Variable Code must be unique.","Variablen-Code muss einmalig sein."
|
|
|
330 |
"Web","Web"
|
331 |
"Website","Website"
|
332 |
"Website Information","Website Information"
|
333 |
"Website Name","Website Name"
|
334 |
-
"Website code may only contain letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter","Website
|
335 |
"Website with the same code","Website mit identischem Identifikationscode"
|
336 |
"Weekend Days","Wochenende"
|
337 |
"Welcome Text","Begrüßungstext"
|
338 |
-
"When changing media storage or selecting another media database,
|
339 |
-
use the Synchronize function to transfer media to the selected
|
340 |
-
storage. After synchronization is completed, all new media will be
|
341 |
-
automatically placed to the selected media storage.","Wenn der Medienspeicher gewechselt wird oder eine weitere Medien Datenbank hinzugefügt wird,
|
342 |
-
verwenden Sie bitte die Synchronisierungsfunktion um Medien zu den gewünschten Speicher zu transferieren. Nachdem die Synchronisierung abgeschlossen ist, werden alle Medien automatisch dem neuen Speicher hinzugefügt."
|
343 |
"Wrong file info format","Falsches Datei Info Format"
|
344 |
"Wrong number of arguments for %s","Falsche Anzahl an Parametern für %s"
|
|
|
345 |
"Yes","Ja"
|
346 |
-
"
|
|
|
347 |
"Your order cannot be completed at this time as there is no payment methods available for it.","Ihre Bestellung kann momentan nicht abgeschlossen werden, da keine Bezahlmethoden dafür verfügbar sind."
|
348 |
-
"Your order cannot be completed at this time as there is no shipping methods available for it. Please make necessary changes in your shipping address.","
|
349 |
"Your session has been expired, you will be relogged in now.","Ihre Sitzung ist abgelaufen, Sie werden nun wieder neu eingeloggt."
|
350 |
-
"database "%s"","Datenbank "%s""
|
351 |
-
"Before modifying the store view code please make sure that it is not used in index.php","Bevor Sie Änderungen an der StoreView vornehmen, stellen Sie sicher, dass diese nicht in der index.php verwendet wird."
|
352 |
-
"Before modifying the website code please make sure that it is not used in index.php","Bevor Sie Änderungen am Website Code vornehmen, stellen Sie sicher, dass dieser nicht in der index.php verwendet wird."
|
353 |
-
"Cache storage may contain another data. Are you sure that you want flush it?","Cache-Verwaltung kann auch andere wie hier aufgeführte Daten enthalten. Sind Sie sicher das sie die Caches komplett leeren wollen?"
|
354 |
-
"Card type does not match credit card number","Kartentyp konnte der Kreditkarten-Nummer nicht zugeordnet werden."
|
355 |
-
"Credit card number doesn\'t match credit card type","Kreditkartennummer kann dem Kreditkarten-Typ nicht zugeordnet werden."
|
356 |
-
"Duplicate Of Template Code","Doppeltes Vorkommen des Vorlagencodes"
|
357 |
-
"Incorrect credit card expiration date","Ungültiges Verfallsdatum der Kreditkarte"
|
358 |
-
"Invalid websites configuration path: %s","Falscher Webseiten-Konfigurationspfad: %s"
|
359 |
-
"Logging from Mage::log(). File is located in {{base_dir}}/var/log","Logging durch Mage::log(). Datei befindet sich in {{base_dir}}/var/log"
|
360 |
-
"Logging from Mage::logException(). File is located in {{base_dir}}/var/log","Logging durch Mage::logException(). Datei befindet sich in {{base_dir}}/var/log"
|
361 |
-
"Model class does not exist: %s","Modellklasse existiert nicht: %s"
|
362 |
-
"Model collection resource name is not defined","Quellenname der Modellzusammenstellung ist nicht definiert"
|
363 |
-
"Module "%1$s" can not be depended from "%2$s"","Modul "%1$s" kann nicht von "%2$s" abhängig sein"
|
364 |
-
"Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%","Bitte tragen Sie eine gültige CSS-Höhe ein wie z.B. 100px, 77pt, 20em, .5ex oder auch 50%"
|
365 |
-
"Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.","Bitte verwenden Sie in diesem Feld nur Zahlen. Vermeiden Sie Leerzeichen oder andere Sonderzeichen wie Kommas etc."
|
366 |
-
"Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.","Bitte nur Buchstaben (a-z or A-Z), Zahlen (0-9) oder Unterstriche(_) in diesem Feld verwenden, das erste Zeichen sollte ein Buchstabe sein."
|
367 |
-
"Resource is not set","Ressource ist nicht gesetzt"
|
368 |
-
"Sender email","E-Mail Absender"
|
369 |
-
"Sender name","Absendername"
|
370 |
-
"Sort order","Reihenfolge"
|
371 |
-
"Translate cache should be disabled for both frontend and admin inline translations.","Übersetzungscache sollte <u>vorher</u> für Front- und Backend gleichermaßen deaktiviert werden."
|
372 |
-
"Unknown scope "%s"","Unbekannter Gültigkeitsbereich "%s""
|
373 |
-
"Website code should contain only letters (a-z), numbers (0-9) or underscore(_), first character should be a letter","WebsiteCode sollte nur aus Buchstaben (a-z), Ziffern (0-9) oder Unterstrich (_) bestehen. Das erste Zeichen muß ein Buchstabe sein."
|
374 |
-
"Your design change for the specified store intersects with another one, please specify another date range","Ihre Design-Veränderung für den ausgewählten Store kreutzen sich mit einen anderen, bitte wählen Sie einen anderen Zeitraum"
|
375 |
-
"Your order cannot be completed at this time as there is no shipping methods available for it. Please make neccessary changes in your shipping address.","Ihre Bestellung kann momentan nicht abgeschlossen werden, da keine Versandarten dafür verfügbar sind. Bitte machen Sie die nötigen Änderungen an Ihrer Versandadresse."
|
2 |
"%s already exist.","%s existiert bereits"
|
3 |
"%s already exists.","%s existiert bereits"
|
4 |
"-- Please Select --","-- Bitte wählen --"
|
5 |
+
"<strong style=""color:red"">Warning!</strong> When using CDN, in some cases JavaScript may not run properly if CDN is not in your subdomain",
|
6 |
+
"<strong style=""color:red"">Achtung!</strong> Wenn Sie ein CDN einsetzen, kann es zu Problemen beim Einsatz von Javascript kommen, welches nicht auf einer Subdomain läuft"
|
7 |
"A category object is required for determining the product request path.","Kategorieobjekt wird zur Bestimmung des Artikelpfades benötigt"
|
8 |
"Add Block Names to Hints","Blocknamen zu Hinweisen hinzufügen"
|
9 |
+
"Add Secret Key to URLs","Secret-Key zu URLs hinzufügen:<br />z.B.http://www.....de/index.php/admin/dashboard/<span style="color:red;">eeacf3e75</span>"
|
10 |
"Add Store Code to Urls","StoreCode zu URLs hinzufügen"
|
11 |
"Admin","Admin"
|
12 |
"Admin Base URL","Admin Basis-URL"
|
13 |
"Admin User Emails","Admin Benutzer E-Mails"
|
14 |
"Advanced","Erweitert"
|
15 |
+
"After selecting a new media storage location, press the Synchronize button
|
16 |
+
to transfer all media to that location. Media will not be available in the new
|
17 |
+
location until the synchronization process is complete.","Nachdem Sie einen neuen Speicherort für die Medienspeicherung festgelegt haben, klicken Sie bitte auf den ""Synchronisieren""-Button um alle Medien zum neuen Speicherort zu kopieren. Ihre Medien sind solange am neuen Speicherort verfügbar, bis der Synchronisationsvorgang abgeschlossen ist."
|
18 |
"Allow Countries","Erlaubte Länder"
|
19 |
+
"Allow Symlinks","Symlinks erlauben"
|
20 |
"Allowed IPs (comma separated)","Erlaubte IPs (Kommagetrennt)"
|
21 |
"Allowed file types: ICO, PNG, GIF, JPEG, APNG, SVG. Not all browsers support all these formats!","Erlaubte Formate: ICO, PNG, GIF, JPEG, APNG, SVG. Nicht alle Browser unterstützen alle diese Formate!"
|
22 |
"Allows customers to stay logged in when switching between different stores.","Kunden erlauben eingeloggt zu bleiben wenn Sie zwischen den Stores wechseln."
|
23 |
"Alternative text for next link in pagination menu. If empty, default arrow image will used.","Alternativer Text für den 'Nächste Seite' Link in der Aufzählungsleiste. Wenn leer, wird eine Pfeil-Grafik verwendet."
|
24 |
"Alternative text for previous link in pagination menu. If empty, default arrow image will used.","Alternativer Text für den 'Letzte Seite' Link in der Aufzählungsleiste. Wenn leer, wird eine Pfeil-Grafik verwendet."
|
25 |
+
"An error occurred while saving. Please review the error log.","Beim Speichern ist ein Fehler aufgetreten, bitte schauen Sie für weitere Informationen in die Log-Aufzeichnung."
|
26 |
"Anchor Text for Next","Anker-Text für einen<br /> Seitensprung <i>vor</i>"
|
27 |
"Anchor Text for Previous","Anker-Text für einen<br /> Seitensprung <i>zurück</i>"
|
28 |
+
"Anchor symbol (#) is not supported in request path","Das Ankerlink Zeichen (#) wird in URLs nicht unterstützt"
|
29 |
+
"Anchor symbol (#) is not supported in url rewrite suffix","Das Ankerlink Zeichen (#) wird in URL Rewrites nicht unterstützt"
|
30 |
"Are you sure?","Sind Sie sicher?"
|
31 |
+
"Auto-redirect to Base URL","Automatische Umleitung zur Starseite"
|
32 |
"Back","Zurück"
|
33 |
+
"Backup Options","Sicherungsoptionen"
|
34 |
"Base JavaScript URL","Basis JavaScript URL"
|
35 |
"Base Link URL","Basis Link URL"
|
36 |
"Base Media URL","Basis Media URL"
|
37 |
"Base Skin URL","Basis Skin URL"
|
38 |
"Base URL","Basis-URL"
|
39 |
+
"Before modifying the store view code please make sure that it is not used in index.php.","Bevor Sie den StoreView-Code verändern, stellen Sie unbedingt sicher, dass dieser weder in der index.php, noch in der Apache-Konfiguration verwendet wird!"
|
40 |
+
"Before modifying the website code please make sure that it is not used in index.php.","Bevor Sie den Website-Code verändern, stellen Sie unbedingt sicher, dass dieser weder in der index.php, noch in der Apache-Konfiguration verwendet wird!"
|
41 |
+
"Block with name ""%s"" already exists","Der Block mit dem Namen ""%s"" existiert bereits"
|
42 |
"Browser Capabilities Detection","Feststellung der Browser Fähigkeiten"
|
43 |
"CSS Settings","CSS Einstellungen"
|
44 |
"Cache Storage Management","Cache-Verwaltung"
|
45 |
+
"Cache storage may contain additional data. Are you sure that you want flush it?","Cache-Speicher enthält möglicherweise zusätzliche Daten. Möchten Sie ihn wirklich leeren?"
|
46 |
+
"Can not create invoice. Order was not found.","Rechnung konnte nicht erstellt werden, da die Bestellung nicht gefunden wurde."
|
47 |
"Can't retrieve request object","Kann Anfrageobjekt nicht ermitteln"
|
48 |
+
"Can\'t retrieve entity config: %s","Kann Entity-Konfiguration nicht ermitteln: %s"
|
49 |
"Cancel","Abbrechen"
|
50 |
"Cannot complete this operation from non-admin area.","Diese Aktion von einem nicht administrativen Bereich nicht abgeschlossen werden."
|
51 |
+
"Card type does not match credit card number.","Kreditkartenart entspricht nicht der angegeben Kreditkartennummer."
|
|
|
52 |
"Code","Code"
|
53 |
"Controller file was loaded but class does not exist","Controller Datei wurde geladen, aber Klasse existiert nicht"
|
54 |
"Cookie Domain","Cookie Domain"
|
59 |
"Create Store","Store anlegen"
|
60 |
"Create Store View","StoreView anlegen"
|
61 |
"Create Website","Website anlegen"
|
62 |
+
"Credit card number does not match credit card type.","Kreditkartennummer entspricht nicht der angegeben Kreditkartenart."
|
63 |
"Current Package Name","Aktueller Paketname"
|
64 |
+
"Custom Admin Path","Eigene Admin-URL"
|
65 |
"Custom Design","Eigene Gestaltung"
|
66 |
"Custom Email 1","Eigene E-Mail 1"
|
67 |
"Custom Email 2","Eigene E-Mail 2"
|
70 |
"Dashboard","Übersicht"
|
71 |
"Date From","Datum von"
|
72 |
"Date To","Datum bis"
|
73 |
+
"Date/time format ""%s"" is not supported.","Datum-/Zeitformat ""%s"" wird nicht unterstützt."
|
74 |
"Debug","Debug"
|
75 |
"Default","Standard"
|
76 |
"Default Country","Standard land"
|
95 |
"Disable Email Communications","E-Mail-Funktionen abschalten"
|
96 |
"Disable Modules Output","Modulausgaben deaktivieren"
|
97 |
"Display Demo Store Notice","Demostore-Hinweis anzeigen"
|
98 |
+
"Duplicate Of Template Name","Duplikat des Vorlagen-Namens"
|
99 |
"Edit Design Change","Gestaltungsänderung bearbeiten"
|
100 |
"Edit Store","Store bearbeiten"
|
101 |
"Edit Store View","StoreView bearbeiten"
|
103 |
"Empty identifier field name","Leerer Bezeichner-Feldname"
|
104 |
"Empty main table name","Leerer Name der Haupttabelle"
|
105 |
"Enable Charts","Charts aktivieren"
|
|
|
106 |
"Enabled","Aktiviert"
|
107 |
"Enabled for Admin","Aktiviert für Admin"
|
108 |
"Enabled for Frontend","Aktiviert für Shop"
|
109 |
+
"Environment Update Time","Aktualisierungsintervall"
|
110 |
+
"Error in file: ""%s"" - %s","Fehler in Datei: ""%s"" - %s"
|
111 |
"Error: Passwords do not match","Fehler: Passwörter stimmen nicht überein"
|
112 |
"Exceptions Log File Name","Log-Dateiname für Exceptions"
|
113 |
"Favicon Icon","Favicon Grafik"
|
131 |
"ID Path for Specified Store","ID-Pfad für angegebenen Store"
|
132 |
"If the current frame position does not cover utmost pages, will render link to current position plus/minus this value.","Wenn der aktuelle Rahmen nicht die Höchstanzahl an Seiten aufnehmen kann, wird der Link zur aktuellen Postion Plus/Minus diesen Wert dargestellt"
|
133 |
"Incorrect credit card expiration date.","Falsches Kreditkarten Ablaufdatum."
|
134 |
+
"Input type ""%value%"" not found in the input types list.","Eingabetyp ""%s"" wurde in der Eingabetyp-Liste nicht gefunden."
|
135 |
"Invalid base url type","Ungültiger Basis-URL Typ"
|
136 |
"Invalid block name to set child %s: %s","Ungültiger Blockname um Kindelement %s zu setzen: %s"
|
137 |
"Invalid block type: %s","Ungültiger Blocktyp: %s"
|
138 |
"Invalid block: %s","Ungültiger Block: %s"
|
139 |
+
"Invalid connection","Ungültige Verbindung"
|
140 |
"Invalid layout update handle","Ungültiges Layout-Update Handle"
|
141 |
+
"Invalid messages storage ""%s"" for layout messages initialization","Ungültiger Nachrichtenspeicher ""%s"" für die Initialisierung der Nachrichtenvorlage"
|
142 |
+
"Invalid query","Ungültige Anfrage"
|
143 |
"Invalid transactional email code: ","Ungültiger E-Mail-Transaktionscode"
|
144 |
"Invalid website\'s configuration path: %s","Ungültiger Website Konfigurationspfad: %s"
|
145 |
"JavaScript Settings","JavaScript Einstellungen"
|
163 |
"Merge JavaScript Files","JavaScript Dateien verbinden"
|
164 |
"Miscellaneous HTML","Verschiedenes HTML<br />z.B. für die Einbindung<br />von Statistik-Trackern"
|
165 |
"Miscellaneous Scripts","Diverse Skripte & Skriptverknüpfungen"
|
166 |
+
"Model class does not exist: %s.","Model Klasse existiert nicht: %s."
|
167 |
+
"Model collection resource name is not defined.","Model Collection Resource Name wurde nicht definiert."
|
168 |
+
"Module ""%1$s"" requires module ""%2$s"".","Modul ""%1$s"" benötigt Modul ""%2$s""."
|
|
|
169 |
"Name","Name"
|
170 |
"New Design Change","Neue Gestaltungsänderung"
|
171 |
"New Store","Neuer Store"
|
172 |
"New Store View","Neue StoreView"
|
173 |
"New Website","Neue Website"
|
174 |
"No","Nein"
|
175 |
+
"Offloader header","SSL-Offloading Header"
|
176 |
"Package","Paket"
|
177 |
"Pagination","Seiten-Nummerierung"
|
178 |
"Pagination Frame","Anzahl der Auflistung"
|
179 |
"Pagination Frame Skip","Seiten Umbruch / Sprung"
|
180 |
+
"Parent directory does not exist: %s","Übergeordnetes Verzeichnis existiert nicht: %s"
|
181 |
+
"Path ""%value%"" is not available and cannot be used.","Pfad ""%value%"" ist nicht verfügbar und kann nicht verwendet werden."
|
182 |
+
"Path ""%value%"" is protected and cannot be used.","Pfad ""%value%"" ist geschützt und kann nicht verwendet werden."
|
183 |
+
"Path ""%value%"" may not include parent directory traversal (""../"", ""..\\).""","Pfad ""%value%"" darf keine Verzeichnis-Sonderzeichen enthalten (""../"", ""..\\"")."
|
184 |
"Please choose to register or to checkout as a guest","Bitte registrieren Sie sich, oder gehen Sie als Gast zur Kasse"
|
185 |
"Please define flag code.","Bitte Markierungscode festlegen"
|
186 |
"Please enter 6 or more characters.","Bitte geben Sie 6 oder mehr Zeichen ein."
|
190 |
"Please enter a number greater than 0 in this field.","Bitte geben Sie eine Zahl größer 0 in dieses Feld ein."
|
191 |
"Please enter a number lower than 100.","Bitte tragen Sie eine Zahl ein die niedriger wie 100 ist."
|
192 |
"Please enter a valid $ amount. For example $100.00.","Bitte geben Sie einen gültigen Betrag ein. Zum Beispiel 100,00 €."
|
193 |
+
"Please enter a valid URL Key. For example ""example-page"", ""example-page.html"" or ""anotherlevel/example-page"".","Bitte geben Sie einen gültigen URL-Bezeichner ein. Zum Beispiel ""beispiel-seite"", ""beispiel-seite.html"" or ""unterverzeichnis/beispiel-seite""."
|
194 |
"Please enter a valid URL. For example http://www.example.com or www.example.com","Bitte geben Sie eine gültige URL ein. Zum Beispiel http://www.beispiel.de oder www.beispiel.de"
|
195 |
"Please enter a valid URL. Protocol is required (http://, https:// or ftp://)","Bitte geben Sie eine gültige URL ein. Mögliche Protokolle (http://, https:// or ftp://)"
|
196 |
"Please enter a valid XML-identifier. For example something_1, block5, id-4.","Bitte geben Sie einen gültigen XML-Identifizierer an. Zum Beispiel irgendetwas_1, block5, id-4."
|
197 |
"Please enter a valid credit card number.","Bitte geben Sie eine gültige Kreditkartennummer ein."
|
198 |
"Please enter a valid credit card verification number.","Bitte tragen Sie eine gültige Kreditkarten-Prüfnummer ein."
|
199 |
+
"Please enter a valid date between %s and %s","Bitte geben Sie ein gültiges Datum zwischen dem %s und %s an"
|
200 |
+
"Please enter a valid date equal to or greater than %s","Bitte geben Sie ein gültiges Datum am oder nach dem %s an"
|
201 |
+
"Please enter a valid date less than or equal to %s","Bitte geben Sie ein gültiges Datum am oder vor dem %s an"
|
202 |
"Please enter a valid date.","Bitte geben Sie ein gültiges Datum ein."
|
203 |
+
"Please enter a valid day (1-%d).","Bitte geben Sie einen gültigen Tag (1-%d) an."
|
204 |
"Please enter a valid email address. For example johndoe@domain.com.","Bitte geben Sie eine gültige E-Mail Adresse ein. Zum Beispiel johndoe@domain.de."
|
205 |
"Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.","Bitte tragen Sie eine gültige Faxnummer ein. Zum Beispiel (123) 456-7890 oder 123-456-7890."
|
206 |
+
"Please enter a valid full date","Bitte geben Sie eine vollständiges, gültiges Datum an"
|
207 |
+
"Please enter a valid month (1-12).","Bitte geben Sie einen gültigen Monat (1-12) an."
|
208 |
"Please enter a valid number in this field.","Bitte geben Sie eine gültige Nummer in dieses Feld ein."
|
209 |
"Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.","Bitte geben Sie eine gültige Telefonnummer ein. Zum Beispiel (123) 456-7890 oder 123-456-7890."
|
210 |
"Please enter a valid social security number. For example 123-45-6789.","Bitte geben Sie eine gültige Sozialversicherungsnummer ein. Zum Beispiel 123-45-6789."
|
211 |
+
"Please enter a valid year (1900-%d).","Bitte geben Sie ein gültiges Jahr (1900-%d) an."
|
212 |
"Please enter a valid zip code.","Bitte geben Sie eine gültige Postleitzahl ein."
|
213 |
"Please enter a valid zip code. For example 90602 or 90602-1234.","Bitte geben Sie eine gültige Postleitzahl ein. Zum Beispiel 21335."
|
214 |
+
"Please enter issue number or start date for switch/solo card type.","Bitte geben Sie die Ausstellungsnummer oder das Anfangsdatum für Switch/Solo Karten an."
|
215 |
"Please enter valid password.","Bitte geben Sie ein gültiges Passwort ein."
|
216 |
+
"Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%.","Bitte geben Sie eine gültige CSS-Länge an. Beispielsweise 100px, 77pt, 20em, .5ex oder 50%."
|
217 |
"Please make sure your passwords match.","Bitte stellen Sie sicher, dass Ihre Passwörter übereinstimmen."
|
218 |
"Please select State/Province.","Bitte Land/Bundesland wählen."
|
219 |
"Please select an option.","Bitte wählen Sie eine Option."
|
220 |
"Please select one of the above options.","Bitte wählen Sie eine der oberen Optionen."
|
221 |
"Please select one of the options.","Bitte wählen Sie eine der Optionen."
|
222 |
+
"Please set available and/or protected paths list(s) before validation.","Bitte geben Sie eine List der verfügbaren und/oder geschützten Pfade an, bevor Sie die Prüfung durchführen."
|
223 |
+
"Please specify either a category or a product, or both.","Bitte geben Sie entweder eine Kategorie oder einen Artikel oder beides an."
|
224 |
"Please specify payment method.","Bitte bestimmen Sie die Bezahlmethode."
|
225 |
"Please specify shipping method.","Bitte bestimmen Sie die Versandart."
|
226 |
+
"Please use letters only (a-z or A-Z) in this field.","Bitte tragen Sie nur die Zeichen (a-z oder A-Z) in dieses Feld ein."
|
227 |
+
"Please use letters only (a-z) in this field.","Bitte tragen Sie nur Buchstaben (a-z) in dieses Feld ein."
|
228 |
+
"Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.","Bitte tragen Sie nur Ziffern in dieses Feld ein, vermeiden Sie Leerzeichen oder andere Zeichen außer Punkten oder Kommas."
|
229 |
"Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte tragen Sie nur Buchstaben (a-z oder A-Z), bzw. Zahlen (0-9) in dieses Feld ein. Keine Freizeichen oder andere Zeichen sind erlaubt."
|
230 |
"Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.","Bitte verwenden Sie nur Buchstaben (a-z oder A-Z), Zahlen (0-9) und Freizeichen oder # für dieses Feld verwenden."
|
231 |
+
"Please use only letters (a-z or A-Z), numbers (0-9) or underscores (_) in this field, first character must be a letter.","Bitte benutzen Sie nur Buchstaben (a-z oder A-Z), Ziffern (0-9) oder Unterstriche (_) in diesem Feld, das erste Zeichen muss ein Buchstabe sein."
|
232 |
"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.","Bitte nur Buchstaben (a-z) oder Zahlen (0-9) in diesem Feld verwenden. Es sind keine Leerzeichen oder andere Zeichen erlaubt."
|
233 |
"Please use only letters (a-z) or numbers (0-9) or spaces and # only in this field.","Bitte nur Buchstaben (a-z), Zahlen (0-9) oder Leerzeichen und # in diesem Feld verwenden."
|
234 |
"Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.","Bitte benutzen Sie nur Buchstaben (a-z), Ziffern (0-9) oder Unterstriche (_) in diesem Feld, das erste Zeichen sollte ein Buchstabe sein."
|
239 |
"Port (25)","Port (25)"
|
240 |
"Profiler","Profiler"
|
241 |
"Request Path for Specified Store","Anfragepfad für angegebenen Store"
|
242 |
+
"Requested file may not include parent directory traversal (""../"", ""..\\ notation)""","Die angeforderte Datei darf keine Verzeichnis-Sonderzeichen (""../"", ""..\\"") enthalten"
|
243 |
+
"Requested invalid store ""%s""","Ungültiger Store angefragt ""%s"""
|
244 |
+
"Resource is not set.","Resource ist nicht gesetzt."
|
245 |
"Return-Path Email","Rückkehr-Pfad E-Mail"
|
246 |
"Root Category","Root-Kategorie"
|
247 |
"Sales Representative","Verkaufsvertreter"
|
255 |
"Select Date","Datum auswählen"
|
256 |
"Select Media Database","Medien Datenbank auswählen"
|
257 |
"Sender Email","Sender E-Mail"
|
258 |
+
"Sender Name","Name des Senders"
|
259 |
"Services","Services"
|
260 |
"Session Cookie Management","Sitzungscookie Verwaltung"
|
261 |
"Session Lifetime (seconds)","Lebenszeit für Sitzungen in Sekunden"
|
264 |
"Set as Default","Als Standard festlegen"
|
265 |
"Skin (Images / CSS)","Skin (Bilder / CSS)"
|
266 |
"Sort Order","Reihenfolge"
|
267 |
+
"Specified date/time ""%1$s"" do not match format ""%2$s"".","Angegebene(s) Datum/Zeit ""%1$s"" entspricht nicht dem Format ""%2$s""."
|
268 |
"Start date cannot be greater than end date.","Startdatum darf nicht später als Enddatum liegen"
|
269 |
"Startup Page","Startseite"
|
270 |
"Status","Status"
|
284 |
"System","System"
|
285 |
"System Log File Name","Dateiname System LogF"
|
286 |
"Template Path Hints","Vorlagen Pfadhinweise"
|
287 |
+
"Template Settings","Vorlagen-Einstellungen"
|
288 |
"Template Variables","Vorlagen-Variablen"
|
289 |
"Templates","Vorlagen"
|
290 |
"Text length does not satisfy specified text range.","Text Länge entspricht nicht der gesetzten Bereichs."
|
291 |
+
"The %s you entered is invalid. Please make sure that it follows ""http://domain.com/"" format.","Die Eingabe %s ist ungültig. Bitte beachten Sie das Eingabeformat ""http://domain.com/""."
|
|
|
292 |
"The store code may contain only letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter","Der Storecode darf nur Bischstaben (a-z), Zahlen (0-9) oder Unterstriche(_) enthalten, wobei das Erste Zeichen ein Buchstabe sein muss"
|
293 |
"The store does not exist","der Store existiert nicht"
|
294 |
"The store has been deleted.","Der Store wurde gelöscht."
|
318 |
"Translate Inline","Inline übersetzen"
|
319 |
"Translate, blocks and other output caches should be disabled for both frontend and admin inline translations.","Bei Nutzung sollten Block- und Übersetzungscaches deaktiviert sein!"
|
320 |
"Translations","Übersetzungen"
|
321 |
+
"Two and more slashes together are not permitted in request path","Zwei oder mehr Schrägstriche sind im Anfragepfad nicht erlaubt."
|
322 |
+
"Two and more slashes together are not permitted in url rewrite suffix","Zwei oder mehr Schrägstriche sind im URL Rewrite nicht erlaubt."
|
323 |
"Unable to create directory: %s","Nicht möglich Verzeichnis: %s anzulegen"
|
324 |
"Unable to delete store view. Please, try again later.","Diese StoreView kann nicht gelöscht werden. Versuchen Sie es später noch einmal."
|
325 |
"Unable to delete store. Please, try again later.","Dieser Store kann nicht gelöscht werden. Versuchen Sie es später noch einmal."
|
326 |
"Unable to delete website. Please, try again later.","Website konnte nicht gelöscht werden. Bitte versuchen Sie es später noch einmal."
|
327 |
"Unable to proceed. Please, try again","Vorgang konnte nicht ausgeführt werden. Bitte versuchen Sie es später noch einmal."
|
328 |
"Unable to proceed. Please, try again.","Nicht möglich fortzusetzen. Bitte noch einmal versuchen."
|
329 |
+
"Unable to save file ""%s"" at ""%s""","Datei ""%s"" konnte nicht in ""%s"" gespeichert werden"
|
330 |
+
"Unable to save file: %s","Datei %s konnte nicht gespeichert werden"
|
331 |
+
"Unknown old style column type definition: {$definition}.","Unbekannte, alte Spaltentyp-Definition: {$definition}"
|
332 |
+
"Unknown scope ""%s"".","Unbekannter Gültigkeitsbereich ""%s""."
|
333 |
"Unsecure","Ungesichert"
|
334 |
"Url Options","URL Optionen"
|
335 |
+
"Use Custom Admin Path","Verwende eigene Admin-URL"
|
336 |
"Use HTTP Only","Verwende nur HTTP"
|
337 |
"Use SID on Frontend","Verwende SID im Shop-Frontend"
|
338 |
"Use Secure URLs in Admin","Verwende sichere URL im Administrationsbereich"
|
345 |
"Validation has failed.","Überprüfung fehlgeschlagen."
|
346 |
"Values less than 60 are ignored. Note that changes will apply after logout.","Werte die kleiner wie 60 sind, werden ignoriert. Veränderungen werden erst nach dem ausloggen übernommen."
|
347 |
"Variable Code must be unique.","Variablen-Code muss einmalig sein."
|
348 |
+
"Warning! Enabling this feature is not recommended on production environments because it represents a potential security risk.","Warnung! Das Aktivieren dieser Funktion wird in Produktivsystemen nicht empfohlen, da es ein Sicherheitsrisiko darstellen könnte."
|
349 |
"Web","Web"
|
350 |
"Website","Website"
|
351 |
"Website Information","Website Information"
|
352 |
"Website Name","Website Name"
|
353 |
+
"Website code may only contain letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter","Website-Code darf nur aus Buchstaben (a-z), Ziffern (0-9) und dem Unterstricht (_) bestehen. Das erste Zeichen muss ein Buchstabe sein."
|
354 |
"Website with the same code","Website mit identischem Identifikationscode"
|
355 |
"Weekend Days","Wochenende"
|
356 |
"Welcome Text","Begrüßungstext"
|
|
|
|
|
|
|
|
|
|
|
357 |
"Wrong file info format","Falsches Datei Info Format"
|
358 |
"Wrong number of arguments for %s","Falsche Anzahl an Parametern für %s"
|
359 |
+
"Wrong old style column type definition: {$definition}.","Falsche, alte Spaltentyp-Definition: {$definition}"
|
360 |
"Yes","Ja"
|
361 |
+
"You will have to log in after you save your custom admin path.","Nachdem Sie den neuen Admin-Pfad gespeichert haben, müssen Sie sich neu anmelden."
|
362 |
+
"Your design change for the specified store intersects with another one, please specify another date range.","Ihre Designänderung für den angegebenen Store überschneidet sich mit einer anderen Änderung, bitte ändern Sie den Datenbereich."
|
363 |
"Your order cannot be completed at this time as there is no payment methods available for it.","Ihre Bestellung kann momentan nicht abgeschlossen werden, da keine Bezahlmethoden dafür verfügbar sind."
|
364 |
+
"Your order cannot be completed at this time as there is no shipping methods available for it. Please make necessary changes in your shipping address.","Ihre Bestellung kann momentan nicht abgeschlossen werden, da keine Versandarten dafür verfügbar sind."
|
365 |
"Your session has been expired, you will be relogged in now.","Ihre Sitzung ist abgelaufen, Sie werden nun wieder neu eingeloggt."
|
366 |
+
"database ""%s""","Datenbank ""%s"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Cron.csv
CHANGED
@@ -1,20 +1,17 @@
|
|
1 |
"Cron (Scheduled Tasks) - all the times are in minutes","Cron (Geplante Ausführung) - Alle Angaben in Minuten"
|
2 |
-
"Daily","
|
3 |
"Failure History Lifetime","Fehlerprotokoll Zeitraum"
|
4 |
"For correct URLs generated during cron runs please make sure that Web > Secure and Unsecure Base URLs are explicitly set.","Für das Erzeugen korrekter URLs während der zeitgesteuerten Ausführung stellen Sie bitte sicher, dass Web > Sichere und Unsichere Base URLs einen expliziten Wert enthalten."
|
5 |
"Generate Schedules Every","Erzeuge Terminplan jede(n)"
|
6 |
"History Cleanup Every","Bereinigen des Log-Verlaufs jede(n)"
|
7 |
"Invalid callback: %s::%s does not exist","Ungültiges Callback: %s::%s existiert nicht"
|
8 |
-
"Invalid model/method definition, expecting "model/class::method".","Ungültige Modell-/Methoden-Definition, erwarte "model/class::method"."
|
9 |
"Missed if Not Run Within","Verfällt, wenn nicht ausgeführt binnen"
|
10 |
-
"Monthly","
|
11 |
"No callbacks found","Keine Callbacks gefunden"
|
12 |
-
"Schedule Ahead for","
|
13 |
-
"Success History Lifetime","
|
14 |
-
"Too late for the schedule.","
|
15 |
"Unable to save the cron expression.","Cron-Werte konnten nicht gespeichert werden."
|
16 |
"Unknown error.","Unbekannter Fehler."
|
17 |
-
"Weekly","
|
18 |
-
"Schedule ahead for","Geplant für"
|
19 |
-
"Too late for the schedule","Zu spät für Terminplan"
|
20 |
-
"Unknown error","Unbekannter Fehler"
|
1 |
"Cron (Scheduled Tasks) - all the times are in minutes","Cron (Geplante Ausführung) - Alle Angaben in Minuten"
|
2 |
+
"Daily","Täglich"
|
3 |
"Failure History Lifetime","Fehlerprotokoll Zeitraum"
|
4 |
"For correct URLs generated during cron runs please make sure that Web > Secure and Unsecure Base URLs are explicitly set.","Für das Erzeugen korrekter URLs während der zeitgesteuerten Ausführung stellen Sie bitte sicher, dass Web > Sichere und Unsichere Base URLs einen expliziten Wert enthalten."
|
5 |
"Generate Schedules Every","Erzeuge Terminplan jede(n)"
|
6 |
"History Cleanup Every","Bereinigen des Log-Verlaufs jede(n)"
|
7 |
"Invalid callback: %s::%s does not exist","Ungültiges Callback: %s::%s existiert nicht"
|
8 |
+
"Invalid model/method definition, expecting ""model/class::method"".","Ungültige Modell-/Methoden-Definition, erwarte ""model/class::method""."
|
9 |
"Missed if Not Run Within","Verfällt, wenn nicht ausgeführt binnen"
|
10 |
+
"Monthly","Monatlich"
|
11 |
"No callbacks found","Keine Callbacks gefunden"
|
12 |
+
"Schedule Ahead for","Vormerken für"
|
13 |
+
"Success History Lifetime","Erfolgsverlaufsprotokoll Zeitraum"
|
14 |
+
"Too late for the schedule.","Zu spät zum Vormerken."
|
15 |
"Unable to save the cron expression.","Cron-Werte konnten nicht gespeichert werden."
|
16 |
"Unknown error.","Unbekannter Fehler."
|
17 |
+
"Weekly","Wöchentlich"
|
|
|
|
|
|
app/locale/de_DE/Mage_Customer.csv
CHANGED
@@ -1,36 +1,23 @@
|
|
1 |
-
"
|
2 |
-
"
|
3 |
-
"
|
4 |
-
"
|
5 |
-
"
|
6 |
-
"
|
7 |
-
"
|
8 |
-
"
|
9 |
-
""%s" is a required value.",""%s" ist ein Pflichtfeld."
|
10 |
-
""%s" is an empty string.",""%s" ist ein leerer String."
|
11 |
-
""%s" is not a valid URL.",""%s" ist keine gültige URL."
|
12 |
-
""%s" is not a valid date.",""%s" ist kein gültiges Datum."
|
13 |
-
""%s" is not a valid email address.",""%s" ist keine gültige E-Mail Adresse."
|
14 |
-
""%s" is not a valid file",""%s" ist keine gültige Datei"
|
15 |
-
""%s" is not a valid file extension.",""%s" ist kein gültiges Dateiformat."
|
16 |
-
""%s" is not a valid file.",""%s" ist keine gültige Datei."
|
17 |
-
""%s" is not a valid hostname.",""%s" ist kein gültiger Hostname."
|
18 |
-
""%s" is not a valid image format",""%s" ist kein gültiges Bildformat"
|
19 |
-
""%s" length must be equal to or greater than %s characters.",""%s" length must be equal to or greater than %s characters."
|
20 |
-
""%s" length must be less than or equal to %s characters.",""%s" length must be less than or equal to %s characters."
|
21 |
-
""%s" width exceeds allowed value of %s px.",""%s" Breite überschreitet den erlaubten Wert von %s px."
|
22 |
"* Required Fields","* Pflichtfelder"
|
23 |
"A new password has been sent.","Ein neues Passwort wurde versendet."
|
24 |
"ALL GROUPS","Alle Kundengruppen"
|
25 |
"Account Dashboard","Benutzerkonto Übersicht"
|
26 |
"Account Information","Benutzerkonto Information"
|
27 |
"Account Sharing Options","Benutzerkonto Verteilungsoptionen"
|
28 |
-
"Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.","
|
29 |
-
"Account confirmation is required. Please, check your email for the confirmation link. To resend the confirmation email please <a href="%s">click here</a>.","
|
30 |
"Action","Aktion"
|
31 |
-
"Add New Address","Neue Adresse
|
32 |
-
"Add New Customer","Neuen Kunden
|
33 |
-
"Add New Customer Group","Neue Kundengruppe
|
34 |
"Added From","Hinzugefügt von"
|
35 |
"Additional Address Entries","Zusätzliche Adresseinträge"
|
36 |
"Address","Adresse"
|
@@ -45,18 +32,17 @@
|
|
45 |
"All countries","Alle Länder"
|
46 |
"Always optional.","Immer optional."
|
47 |
"Amount","Betrag"
|
48 |
-
"An error occurred while deleting the address.","
|
49 |
-
"An error occurred while retrieving the option value: %s.","
|
50 |
-
"An error occurred while saving the collection, aborting. Error: %s","
|
51 |
-
"An invalid option ID is specified for %s (%s), skipping the record.","
|
52 |
"Approved","Bestätigt"
|
53 |
"Are you sure that you want to remove this item?","Sind Sie sicher, dass Sie diesen Artikel entfernen wollen?"
|
54 |
"Are you sure you want to cancel adding of this address?","Sind Sie sicher, dass Sie die Adresseingabe abbrechen wollen?"
|
55 |
"Are you sure you want to delete this address?","Soll diese Adresse wirklich gelöscht werden?"
|
56 |
"Are you sure?","Sind Sie sicher?"
|
57 |
-
"Array of Entity collections is expected.","Array
|
58 |
"Assign a Customer Group","Einer Kundengruppe zuweisen"
|
59 |
-
"Attribute object is undefined","Attribut Objekt ist undefiniert"
|
60 |
"Average Sale","Durchschnittlicher Verkauf"
|
61 |
"Back","Zurück"
|
62 |
"Back - link to the previously viewed page","Zurück - Link zur zuletzt angesehenen Seite"
|
@@ -69,7 +55,7 @@
|
|
69 |
"Cancel","Abbrechen"
|
70 |
"Cannot save address.","Adresse kann nicht gespeichert werden."
|
71 |
"Cannot save the customer.","Kunde kann nicht gespeichert werden."
|
72 |
-
"Cannot share customer accounts globally because some customer accounts with the same emails exist on multiple websites and cannot be merged.","
|
73 |
"Change Account Password","Passwort für Benutzerkonto ändern"
|
74 |
"Change Billing Address","Rechnungsadresse ändern"
|
75 |
"Change Password","Passwort ändern"
|
@@ -94,12 +80,12 @@
|
|
94 |
"Create customer address","Kundenadresse anlegen"
|
95 |
"Current Password","Aktuelles Passwort"
|
96 |
"Customer","Kunde"
|
|
|
97 |
"Customer Account Edit Form","Benutzerkonto Bearbeitungs-Formular"
|
98 |
"Customer Account Login Form","Benutzerkonto Anmelde-Formular"
|
99 |
"Customer Account Logout Success","Benutzerkonto Abmeldung erfolgreich"
|
100 |
"Customer Account Registration Form","Benutzerkonto Registrierungs-Formular"
|
101 |
"Customer Addresses","Kundenanschrift"
|
102 |
-
"Customer Api","Kunden API"
|
103 |
"Customer Configuration","Kundenkonfiguration"
|
104 |
"Customer Forgot Password Form","Kunde - Passwort vergessen Formular"
|
105 |
"Customer Group","Kundengruppe"
|
@@ -112,10 +98,10 @@
|
|
112 |
"Customer My Account Dashboard","Kunde Mein Benutzerkonto Übersicht"
|
113 |
"Customer Since","Kunde seit"
|
114 |
"Customer View","Kundenansicht"
|
115 |
-
"Customer collection expected.","
|
116 |
-
"Customer email is required
|
117 |
-
"Customer website ID must be specified when using the website scope
|
118 |
-
"Customer will stay on the current page if "No" is selected.","Der Kunde wird auf der aktuellen Seite bleiben wenn "Nein" ausgewählt ist - z.B. auf der Startseite."
|
119 |
"Customers","Kunden"
|
120 |
"Customers Only","Ausschließlich Kunden"
|
121 |
"Customers Section","Kunde"
|
@@ -145,7 +131,7 @@
|
|
145 |
"Edit Account Information","Benutzerkonto bearbeiten"
|
146 |
"Edit Address","Adresse bearbeiten"
|
147 |
"Edit Address Entry","Adresseintrag bearbeiten"
|
148 |
-
"Edit Customer Group "%s"","Bearbeite Kundengruppe "%s""
|
149 |
"Edit Customer Groups","Kundengruppen bearbeiten"
|
150 |
"Edit Customer's Address","Kundenanschrift bearbeiten"
|
151 |
"Edit Group","Gruppe bearbeiten"
|
@@ -154,18 +140,16 @@
|
|
154 |
"Email Address","E-Mail Adresse"
|
155 |
"Email Sender","E-Mail Absender"
|
156 |
"Email:","E-Mail:"
|
157 |
-
"Entity collection is expected.","
|
158 |
-
"Entity instance is not defined","Entity instance is not defined"
|
159 |
-
"Entity object is undefined","Entity object is undefined"
|
160 |
"Excel XML","Excel XML"
|
161 |
"Failed to confirm customer account.","Bestätigen des Benutzerkontos fehlgeschlagen."
|
162 |
"Fax","Fax"
|
163 |
"First Name","Vorname"
|
164 |
"Forgot Email Sender","E-Mail Absender vergessen"
|
165 |
"Forgot Email Template","E-Mail Vorlage vergessen"
|
|
|
166 |
"Forgot Your Password?","Passwort vergessen?"
|
167 |
-
"Form Fields Before","
|
168 |
-
"Form code is not defined","Form code is not defined"
|
169 |
"From your My Account Dashboard you have the ability to view a snapshot of your recent account activity and update your account information. Select a link below to view or edit information.","Von Ihrer Benutzerkonto-Übersicht aus haben Sie die Möglichkeit, Ihre letzten Vorgänge einzusehen und Ihre Benutzerkonto-Daten zu bearbeiten. Wählen Sie dazu einen der untenstehenden Links, um Informationen anzusehen oder zu bearbeiten."
|
170 |
"Gender","Geschlecht"
|
171 |
"General Subscription","Allgemeines Abonnement"
|
@@ -181,13 +165,13 @@
|
|
181 |
"ID","ID"
|
182 |
"IP Address","IP Adresse"
|
183 |
"If you have an account with us, please log in.","Wenn Sie bei uns ein Benutzerkonto besitzen, melden Sie sich bitte an."
|
184 |
-
"Invalid attribute option specified for attribute %s (%s), skipping the record.","
|
185 |
-
"Invalid attribute set specified, skipping the
|
186 |
-
"Invalid current password","
|
187 |
"Invalid customer data","Ungültige Kundendaten"
|
188 |
"Invalid email address.","Ungültige E-Mail Adresse."
|
189 |
"Invalid login or password.","Fehlerhafter Anmeldename oder Passwort"
|
190 |
-
"Invalid store specified, skipping the record.","
|
191 |
"Last Activity","Letzte Aktivität"
|
192 |
"Last Date Subscribed","Zuletzt abonniert"
|
193 |
"Last Date Unsubscribed","Zuletzt abbestellt"
|
@@ -201,15 +185,14 @@
|
|
201 |
"Login","Anmelden"
|
202 |
"Login Information","Anmeldeinformation"
|
203 |
"Login Options","Login / Anmelde Optionen"
|
204 |
-
"Login and password are required.","Login
|
205 |
"Login or Create an Account","Anmelden oder Benutzerkonto erstellen"
|
206 |
-
"M.I.","M.I."
|
207 |
"MM","MM"
|
208 |
"Manage Addresses","Adressen verwalten"
|
209 |
"Manage Customers","Kunden verwalten"
|
210 |
-
"Missing email, skipping the record.","
|
211 |
-
"Missing firstname, skipping the record.","
|
212 |
-
"Missing lastname, skipping the record.","
|
213 |
"Month","Monat"
|
214 |
"My Account","Mein Benutzerkonto"
|
215 |
"My Account Wrapper","Mein Benutzerkonto Umschlag"
|
@@ -239,7 +222,6 @@
|
|
239 |
"Newsletter Start","Newsletter Start"
|
240 |
"Newsletter Subscription","Newsletter Abonnement"
|
241 |
"Newsletters","Newsletter"
|
242 |
-
"No","Nein"
|
243 |
"No Items Found","Keine Artikel gefunden"
|
244 |
"No Newsletter Found","Kein Newsletter gefunden"
|
245 |
"No customer collections found","Keine Kunden-Zusammenstellung gefunden"
|
@@ -272,7 +254,6 @@
|
|
272 |
"Please select","Bitte auswählen"
|
273 |
"Please select region, state or province","Bitte wählen Sie Region, Land oder Bundesland"
|
274 |
"Please, check your email for confirmation key.","Bitte überprüfen Sie Ihr E-Mail Konto bezüglich des bestätigungscodes."
|
275 |
-
"Prefix","Präfix"
|
276 |
"Prefix Dropdown Options","Präfix Auswahl Optionen"
|
277 |
"Price","Preis"
|
278 |
"Product","Artikel"
|
@@ -284,7 +265,7 @@
|
|
284 |
"Purchased At","Bestellt in"
|
285 |
"Qty","Menge"
|
286 |
"Recent Orders","Letzte Bestellungen"
|
287 |
-
"Records for %s store found.","
|
288 |
"Redirect Customer to Account Dashboard after Logging in","Nach Login den Kunden zur Benutzerkonto Übersicht umleiten"
|
289 |
"Refunded","Erstattet"
|
290 |
"Registered Customers","Registrierte Kunden"
|
@@ -294,9 +275,9 @@
|
|
294 |
"Retrieve address info","Adressinformationen abfragen"
|
295 |
"Retrieve customer addresses","Kundenadressen abfragen"
|
296 |
"Retrieve customer data","Kundendaten abfragen"
|
297 |
-
"Retrieve customer groups","
|
298 |
"Retrieve customer info","Kundeninformation abfragen"
|
299 |
-
"Retrieve customers","
|
300 |
"Retrieve your confirmation link here","Fordern Sie Ihren Bestätigungslink hier an"
|
301 |
"Retrieve your password here","Ihr Passwort hier abrufen"
|
302 |
"SKU","Artikelnummer"
|
@@ -332,8 +313,8 @@
|
|
332 |
"Show Suffix","Suffix abfragen"
|
333 |
"Show Tax/VAT Number","Steuernummer / Ust.-ID abfragen"
|
334 |
"Sign Up for Newsletter","In den Newsletter eintragen"
|
335 |
-
"Skipping import row, required field "%s" is not defined.","
|
336 |
-
"Skipping import row, website "%s" field does not exist.","
|
337 |
"State/Province","Bundesland/Kanton"
|
338 |
"Status","Status"
|
339 |
"Store","Store"
|
@@ -345,7 +326,6 @@
|
|
345 |
"Submit","Absenden"
|
346 |
"Subscribe to Newsletter","Zum Newsletter anmelden"
|
347 |
"Subscribed to Newsletter?","Für Newsletter angemeldet?"
|
348 |
-
"Suffix","Suffix"
|
349 |
"Suffix Dropdown Options","Suffix Auswahl Optionen"
|
350 |
"Tag Name","Schlagwortname"
|
351 |
"Tax Class","Steuerklasse"
|
@@ -355,24 +335,24 @@
|
|
355 |
"Text One Line","Text einzeilig"
|
356 |
"Thank you for registering with %s.","Vielen Dank für Ihre Registrierung bei %s."
|
357 |
"The account information has been saved.","Die Benutzerkonto Information wurde gespeichert."
|
358 |
-
"The address does not belong to this customer.","
|
359 |
-
"The address has been deleted.","
|
360 |
"The address has been saved.","Die Adresse wurde gespeichert."
|
361 |
"The customer does not have default billing address.","Der Kunde hat keine Standard-Rechnungsanschrift."
|
362 |
"The customer group has been deleted.","Die Kundengruppe wurde gelöscht."
|
363 |
"The customer group has been saved.","Die Kundengruppe wurde gespeichert."
|
364 |
-
"The group "%s" cannot be deleted
|
365 |
"The password must have at least 6 characters. Leading or trailing spaces will be ignored.","Das Passwort muss mindestens 6 Zeichen haben. Führende und folgende Lehrzeichen werden ignoriert."
|
366 |
"The suffix that goes after name (Jr., Sr., etc.)","Das Suffix nach dem namen (Jr., Sr., usw.)"
|
367 |
"The title that goes before name (Mr., Mrs., etc.)","Die Anrede vor dem Namen (Herr, Frau, usw.)"
|
368 |
"There are no items in customer's wishlist at the moment","Momentan gibt es keine Artikel auf dem Wunschzettel des Kunden."
|
369 |
"There are no items in customer\'s shopping cart at the moment","Es gibt momentan keine Artikel im Kundenwarenkorb"
|
370 |
-
"There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.","Es existiert bereits ein Benutzerkonto mit dieser Mailadresse. Wenn Sie sicher sind das es Ihre Mailadresse ist, dann <a href="%s">klicken Sie hier</a
|
371 |
"This account is not confirmed.","Dieses Benutzerkonto wurde nicht bestätigt."
|
372 |
-
"This account is not confirmed. <a href="%s">Click here</a> to resend confirmation email.","Dieses Benutzerkonto ist nicht bestätigt. <a href="%s">Klicken Sie hier</a> um sich erneut eine Bestätigungs-Mail zusenden zu lassen."
|
373 |
-
"This customer email already exists
|
374 |
"This customer has no saved addresses.","Dieser Kunde besitzt keine gespeicherten Adressen."
|
375 |
-
"This email address was not found in our records.","
|
376 |
"This email does not require confirmation.","Diese E-Mail erfordert keine Bestätigung."
|
377 |
"This email will be sent instead of default welcome email, after account confirmation.","Diese E-mail wird anstelle der normalen Willkommensnachricht nach der Benutzerkonten-Bestätigung versandt."
|
378 |
"This is My Default %s Address","Das ist meine Standardadresse %s"
|
@@ -400,10 +380,9 @@
|
|
400 |
"Wrong confirmation key.","Falscher Bestätigungsschlüssel."
|
401 |
"Wrong customer account specified.","Falsches Benutzerkonto angegeben."
|
402 |
"Wrong email.","Falsche E-Mail."
|
403 |
-
"Wrong transactional account email type
|
404 |
"YYYY","JJJJ"
|
405 |
"Year","Jahr"
|
406 |
-
"Yes","Ja"
|
407 |
"You are currently not subscribed to any newsletter.","Sie sind momentan zu keinem Newsletter angemeldet."
|
408 |
"You are currently not subscribed to our newsletter.","Sie sind aktuell nicht zu unserem Newsletter angemeldet."
|
409 |
"You are currently subscribed to 'General Subscription'.","Sie sind momentan für das Abo 'Allgemeines' eingetragen."
|
@@ -425,40 +404,3 @@
|
|
425 |
"Zip/Postal Code","Postleitzahl"
|
426 |
"n/a","Keine Angabe"
|
427 |
"or","oder"
|
428 |
-
""%s" length must be equal or greater than %s characters.",""%s" Länge muss gleich oder größer als %s Zeichen sein."
|
429 |
-
"A new password was sent.","Ein neues Passwort wurde versandt."
|
430 |
-
"Always optional","Immer optional"
|
431 |
-
"Array of Entity collections is expected","Zusammenstellung von Datensatzsammlungen erwartet"
|
432 |
-
"Cannot share customer accounts globally because some customer accounts with same emails exist on multiple websites and cannot be merged.","Kundenkonten können nicht global benutzt werden, da einige Kundenkonten verschiedener Websites gleiche E-Mail Adressen nutzen und die Zusammenlegung der Konten Fehler verursachen würde."
|
433 |
-
"Customer collection expected","Kundensammlung erwartet"
|
434 |
-
"Customer email is required","Kunden E-Mail ist ein Pflichtfeld"
|
435 |
-
"Customer website id must be specified, when using website scope.","Kundenwebsite-ID mus angegeben werden, wenn der Website-Geltungsbereich verwendet wird."
|
436 |
-
"Entity collection is expected","Datensatz Zusammenstellung wird erwartet"
|
437 |
-
"Invalid attribute option specified for attribute %s (%s), skipping the record","Ungültige Option für Attribut %s definiert (%s), überspringe den Eintrag"
|
438 |
-
"Invalid attribute set specified, skipping the record","Ungültiges Attributset definiert, überspringe den Eintrag"
|
439 |
-
"Invalid store specified, skipping the record","Ungültiger Store definiert, überspringe den Eintrag"
|
440 |
-
"Last Url","Letzte URL"
|
441 |
-
"Login and password are required","Benutzername und Passwort sind erforderlich"
|
442 |
-
"Missing email, skipping the record","E-Mail fehlt, Eintrag wird übersprungen"
|
443 |
-
"Missing firstname, skipping the record","Vorname fehlt, Eintrag wird übersprungen"
|
444 |
-
"Missing lastname, skipping the record","Nachname fehlt, Eintrag wird übersprungen"
|
445 |
-
"Please, check your e-mail for confirmation key.","Bitte prüfen Sie Ihr E-Mail Postfach auf die E-Mail mit dem Bestätigungslink. Bitte überprüfen Sie gegebenenfalls auch den Spam-Ordner!"
|
446 |
-
"Product name","Artikelname"
|
447 |
-
"Purchased at","Eingekauft bei"
|
448 |
-
"Records for for %s store found.","Einträge für Store %s gefunden."
|
449 |
-
"Retrieve customer's groups","Kundengruppen abfragen"
|
450 |
-
"Retrieve customers info","Kundeninformationen abfragen"
|
451 |
-
"Save And Continue Edit","Speichern und weiter bearbeiten"
|
452 |
-
"Skip import row, required field "%s" not defined","Importzeile übersprungen, Pflichtfeld "%s" nicht angegeben"
|
453 |
-
"Skipping import row, website "%s" field not exists.","Importzeile übersprungen, Website "%s" Feld existiert nicht"
|
454 |
-
"Subscribe to newsletter","Für Newsletter anmelden"
|
455 |
-
"The address does not belong to this customer","Diese Adresse gehört nicht zu diesem Kunden"
|
456 |
-
"There is already an account with this emails address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.","Es existiert schon ein Benutzerkonto mit dieser E-Mail Adresse. Wenn Sie sich sicher sind, dass es Ihre Mail-Adresse ist, <a href="%s">klicken Sie hier</a> um Ihr Passwort und Zugang zu Ihrem Benutzerkonto zu erhalten."
|
457 |
-
"This email address was not found in our records","Diese E-Mail-Adresse wurde in unserem System nicht gefunden"
|
458 |
-
"Unsubscribe from newsletter","Vom Newsletter abmelden"
|
459 |
-
"Use as My Primary %s Address","Als meine primäre %s Adresse verwenden"
|
460 |
-
"User description","Benutzerbeschreibung"
|
461 |
-
"Visible In","Sichtbar in"
|
462 |
-
"XML","XML"
|
463 |
-
"You are currently not subscribed to our newsletter","Zur Zeit sind Sie nicht für unseren Newsletter eingetragen"
|
464 |
-
"ZIP/Postal Code","Postleitzahl"
|
1 |
+
"'%value%' appears to be a DNS hostname but cannot extract TLD part","'%value%' scheint ein DNS-Hostname zu sein, aber TLD-Teil konnte nicht ausgelesen werden"
|
2 |
+
"'%value%' appears to be a DNS hostname but cannot match TLD against known list","'%value%' scheint ein DNS-Hostname zu sein, aber der TLD-Teil scheint nicht gültig zu sein"
|
3 |
+
"'%value%' appears to be a DNS hostname but cannot match against hostname schema for TLD '%tld%'","'%value%' scheint ein DNS-Hostname zu sein, aber der TLD-Teil '%tld%' konnte nicht gegen das Schema validiert werden"
|
4 |
+
"'%value%' appears to be a DNS hostname but contains a dash in an invalid position","'%value%' scheint ein DNS-Hostname zu sein, enthält aber einen Bindestrich an einer ungültigten Position"
|
5 |
+
"'%value%' appears to be a DNS hostname but the given punycode notation cannot be decoded","'%value%' scheint ein DNS-Hostname zu sein, aber die verwendete PunyCode-Notation konnte nicht entschlüsselt werden"
|
6 |
+
"'%value%' appears to be a local network name but local network names are not allowed","'%value%' scheint ein lokaler Netzwerkname zu sein. Lokale Netzwerknamen sind jedoch nicht erlaubt"
|
7 |
+
"'%value%' appears to be an IP address, but IP addresses are not allowed","'%value%' scheint eine IP-Adresse zu sein. IP-Adressen sind aber nicht erlaubt"
|
8 |
+
"'%value%' does not appear to be a valid local network name","'%value%' scheint kein gültiger lokaler Netzwerkname zu sein"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
"* Required Fields","* Pflichtfelder"
|
10 |
"A new password has been sent.","Ein neues Passwort wurde versendet."
|
11 |
"ALL GROUPS","Alle Kundengruppen"
|
12 |
"Account Dashboard","Benutzerkonto Übersicht"
|
13 |
"Account Information","Benutzerkonto Information"
|
14 |
"Account Sharing Options","Benutzerkonto Verteilungsoptionen"
|
15 |
+
"Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href=""%s"">click here</a>.","Kontobestätigung ist erforderlich. Bitte beachten Sie dazu den Bestätigungslink in der E-Mail. Um Ihre Bestätigung noch einmal versenden zu lassen, <a href=""%s"">klicken Sie hier</a>."
|
16 |
+
"Account confirmation is required. Please, check your email for the confirmation link. To resend the confirmation email please <a href=""%s"">click here</a>.","Kontobestätigung ist erforderlich. Bitte beachten Sie dazu den Bestätigungslink in der E-Mail. Um Ihre Bestätigung noch einmal versenden zu lassen, <a href=""%s"">klicken Sie hier</a>."
|
17 |
"Action","Aktion"
|
18 |
+
"Add New Address","Neue Adresse"
|
19 |
+
"Add New Customer","Neuen Kunden"
|
20 |
+
"Add New Customer Group","Neue Kundengruppe"
|
21 |
"Added From","Hinzugefügt von"
|
22 |
"Additional Address Entries","Zusätzliche Adresseinträge"
|
23 |
"Address","Adresse"
|
32 |
"All countries","Alle Länder"
|
33 |
"Always optional.","Immer optional."
|
34 |
"Amount","Betrag"
|
35 |
+
"An error occurred while deleting the address.","Beim Löschen der Adresse ist ein Fehler aufgetreten."
|
36 |
+
"An error occurred while retrieving the option value: %s.","Fehler beim Abfragen des Optionswertes: %s"
|
37 |
+
"An error occurred while saving the collection, aborting. Error: %s","Fehler beim Speichern der Collection: %s"
|
38 |
+
"An invalid option ID is specified for %s (%s), skipping the record.","Eine ungültige Option-ID wurde für %s (%s) angegeben. Eintrag wird übersprungen."
|
39 |
"Approved","Bestätigt"
|
40 |
"Are you sure that you want to remove this item?","Sind Sie sicher, dass Sie diesen Artikel entfernen wollen?"
|
41 |
"Are you sure you want to cancel adding of this address?","Sind Sie sicher, dass Sie die Adresseingabe abbrechen wollen?"
|
42 |
"Are you sure you want to delete this address?","Soll diese Adresse wirklich gelöscht werden?"
|
43 |
"Are you sure?","Sind Sie sicher?"
|
44 |
+
"Array of Entity collections is expected.","Array von Entitäten-Collections erwartet."
|
45 |
"Assign a Customer Group","Einer Kundengruppe zuweisen"
|
|
|
46 |
"Average Sale","Durchschnittlicher Verkauf"
|
47 |
"Back","Zurück"
|
48 |
"Back - link to the previously viewed page","Zurück - Link zur zuletzt angesehenen Seite"
|
55 |
"Cancel","Abbrechen"
|
56 |
"Cannot save address.","Adresse kann nicht gespeichert werden."
|
57 |
"Cannot save the customer.","Kunde kann nicht gespeichert werden."
|
58 |
+
"Cannot share customer accounts globally because some customer accounts with the same emails exist on multiple websites and cannot be merged.","Kundenkonten können nicht global genutzt werden, da einige Accountemailadressen bereits mehrmals verwendet werden und nicht zusammengefasst werden können."
|
59 |
"Change Account Password","Passwort für Benutzerkonto ändern"
|
60 |
"Change Billing Address","Rechnungsadresse ändern"
|
61 |
"Change Password","Passwort ändern"
|
80 |
"Create customer address","Kundenadresse anlegen"
|
81 |
"Current Password","Aktuelles Passwort"
|
82 |
"Customer","Kunde"
|
83 |
+
"Customer API","Kunden API"
|
84 |
"Customer Account Edit Form","Benutzerkonto Bearbeitungs-Formular"
|
85 |
"Customer Account Login Form","Benutzerkonto Anmelde-Formular"
|
86 |
"Customer Account Logout Success","Benutzerkonto Abmeldung erfolgreich"
|
87 |
"Customer Account Registration Form","Benutzerkonto Registrierungs-Formular"
|
88 |
"Customer Addresses","Kundenanschrift"
|
|
|
89 |
"Customer Configuration","Kundenkonfiguration"
|
90 |
"Customer Forgot Password Form","Kunde - Passwort vergessen Formular"
|
91 |
"Customer Group","Kundengruppe"
|
98 |
"Customer My Account Dashboard","Kunde Mein Benutzerkonto Übersicht"
|
99 |
"Customer Since","Kunde seit"
|
100 |
"Customer View","Kundenansicht"
|
101 |
+
"Customer collection expected.","Kunden-Collection erwartet"
|
102 |
+
"Customer email is required","Kunden E-Mail ist ein Pflichtfeld"
|
103 |
+
"Customer website ID must be specified when using the website scope","Kunden-Website-ID muss bei Verwendung des Website-Gültigkeitsbereichs verwendet werden."
|
104 |
+
"Customer will stay on the current page if ""No"" is selected.","Der Kunde wird auf der aktuellen Seite bleiben wenn ""Nein"" ausgewählt ist - z.B. auf der Startseite."
|
105 |
"Customers","Kunden"
|
106 |
"Customers Only","Ausschließlich Kunden"
|
107 |
"Customers Section","Kunde"
|
131 |
"Edit Account Information","Benutzerkonto bearbeiten"
|
132 |
"Edit Address","Adresse bearbeiten"
|
133 |
"Edit Address Entry","Adresseintrag bearbeiten"
|
134 |
+
"Edit Customer Group ""%s""","Bearbeite Kundengruppe ""%s"""
|
135 |
"Edit Customer Groups","Kundengruppen bearbeiten"
|
136 |
"Edit Customer's Address","Kundenanschrift bearbeiten"
|
137 |
"Edit Group","Gruppe bearbeiten"
|
140 |
"Email Address","E-Mail Adresse"
|
141 |
"Email Sender","E-Mail Absender"
|
142 |
"Email:","E-Mail:"
|
143 |
+
"Entity collection is expected.","Entitäten Collection erwartet."
|
|
|
|
|
144 |
"Excel XML","Excel XML"
|
145 |
"Failed to confirm customer account.","Bestätigen des Benutzerkontos fehlgeschlagen."
|
146 |
"Fax","Fax"
|
147 |
"First Name","Vorname"
|
148 |
"Forgot Email Sender","E-Mail Absender vergessen"
|
149 |
"Forgot Email Template","E-Mail Vorlage vergessen"
|
150 |
+
"Forgot Your Password","Passwort vergessen?"
|
151 |
"Forgot Your Password?","Passwort vergessen?"
|
152 |
+
"Form Fields Before","Formularfelder davor"
|
|
|
153 |
"From your My Account Dashboard you have the ability to view a snapshot of your recent account activity and update your account information. Select a link below to view or edit information.","Von Ihrer Benutzerkonto-Übersicht aus haben Sie die Möglichkeit, Ihre letzten Vorgänge einzusehen und Ihre Benutzerkonto-Daten zu bearbeiten. Wählen Sie dazu einen der untenstehenden Links, um Informationen anzusehen oder zu bearbeiten."
|
154 |
"Gender","Geschlecht"
|
155 |
"General Subscription","Allgemeines Abonnement"
|
165 |
"ID","ID"
|
166 |
"IP Address","IP Adresse"
|
167 |
"If you have an account with us, please log in.","Wenn Sie bei uns ein Benutzerkonto besitzen, melden Sie sich bitte an."
|
168 |
+
"Invalid attribute option specified for attribute %s (%s), skipping the record.","Ungültige Attributoption für Attribut %s (%s) angegeben, Zeile wird übersprungen"
|
169 |
+
"Invalid attribute set specified, skipping the record.","Ungültiges Attributset angegeben, Eintrag wird übersprungen."
|
170 |
+
"Invalid current password","Aktuelles Passwort ungültig"
|
171 |
"Invalid customer data","Ungültige Kundendaten"
|
172 |
"Invalid email address.","Ungültige E-Mail Adresse."
|
173 |
"Invalid login or password.","Fehlerhafter Anmeldename oder Passwort"
|
174 |
+
"Invalid store specified, skipping the record.","Ungültiger Store angegeben, Eintrag wird übersprungen."
|
175 |
"Last Activity","Letzte Aktivität"
|
176 |
"Last Date Subscribed","Zuletzt abonniert"
|
177 |
"Last Date Unsubscribed","Zuletzt abbestellt"
|
185 |
"Login","Anmelden"
|
186 |
"Login Information","Anmeldeinformation"
|
187 |
"Login Options","Login / Anmelde Optionen"
|
188 |
+
"Login and password are required.","Login und Passwort notwendig!""
|
189 |
"Login or Create an Account","Anmelden oder Benutzerkonto erstellen"
|
|
|
190 |
"MM","MM"
|
191 |
"Manage Addresses","Adressen verwalten"
|
192 |
"Manage Customers","Kunden verwalten"
|
193 |
+
"Missing email, skipping the record.","E-Mail fehlt, Eintrag wird übersprungen."
|
194 |
+
"Missing firstname, skipping the record.","Vorname fehlt, Eintrag wird übersprungen."
|
195 |
+
"Missing lastname, skipping the record.","Nachname fehlt, Eintrag wird übersprungen."
|
196 |
"Month","Monat"
|
197 |
"My Account","Mein Benutzerkonto"
|
198 |
"My Account Wrapper","Mein Benutzerkonto Umschlag"
|
222 |
"Newsletter Start","Newsletter Start"
|
223 |
"Newsletter Subscription","Newsletter Abonnement"
|
224 |
"Newsletters","Newsletter"
|
|
|
225 |
"No Items Found","Keine Artikel gefunden"
|
226 |
"No Newsletter Found","Kein Newsletter gefunden"
|
227 |
"No customer collections found","Keine Kunden-Zusammenstellung gefunden"
|
254 |
"Please select","Bitte auswählen"
|
255 |
"Please select region, state or province","Bitte wählen Sie Region, Land oder Bundesland"
|
256 |
"Please, check your email for confirmation key.","Bitte überprüfen Sie Ihr E-Mail Konto bezüglich des bestätigungscodes."
|
|
|
257 |
"Prefix Dropdown Options","Präfix Auswahl Optionen"
|
258 |
"Price","Preis"
|
259 |
"Product","Artikel"
|
265 |
"Purchased At","Bestellt in"
|
266 |
"Qty","Menge"
|
267 |
"Recent Orders","Letzte Bestellungen"
|
268 |
+
"Records for %s store found.","Einträge für Store %s gefunden."
|
269 |
"Redirect Customer to Account Dashboard after Logging in","Nach Login den Kunden zur Benutzerkonto Übersicht umleiten"
|
270 |
"Refunded","Erstattet"
|
271 |
"Registered Customers","Registrierte Kunden"
|
275 |
"Retrieve address info","Adressinformationen abfragen"
|
276 |
"Retrieve customer addresses","Kundenadressen abfragen"
|
277 |
"Retrieve customer data","Kundendaten abfragen"
|
278 |
+
"Retrieve customer groups","Kundengruppen abfragen"
|
279 |
"Retrieve customer info","Kundeninformation abfragen"
|
280 |
+
"Retrieve customers","Kunden abfragen"
|
281 |
"Retrieve your confirmation link here","Fordern Sie Ihren Bestätigungslink hier an"
|
282 |
"Retrieve your password here","Ihr Passwort hier abrufen"
|
283 |
"SKU","Artikelnummer"
|
313 |
"Show Suffix","Suffix abfragen"
|
314 |
"Show Tax/VAT Number","Steuernummer / Ust.-ID abfragen"
|
315 |
"Sign Up for Newsletter","In den Newsletter eintragen"
|
316 |
+
"Skipping import row, required field ""%s"" is not defined.","Importzeile übersprungen, Pflichtfeld ""%s"" nicht angegeben."
|
317 |
+
"Skipping import row, website ""%s"" field does not exist.","Importzeile übersprungen, Website ""%s"" feld gibt es nicht."
|
318 |
"State/Province","Bundesland/Kanton"
|
319 |
"Status","Status"
|
320 |
"Store","Store"
|
326 |
"Submit","Absenden"
|
327 |
"Subscribe to Newsletter","Zum Newsletter anmelden"
|
328 |
"Subscribed to Newsletter?","Für Newsletter angemeldet?"
|
|
|
329 |
"Suffix Dropdown Options","Suffix Auswahl Optionen"
|
330 |
"Tag Name","Schlagwortname"
|
331 |
"Tax Class","Steuerklasse"
|
335 |
"Text One Line","Text einzeilig"
|
336 |
"Thank you for registering with %s.","Vielen Dank für Ihre Registrierung bei %s."
|
337 |
"The account information has been saved.","Die Benutzerkonto Information wurde gespeichert."
|
338 |
+
"The address does not belong to this customer.","Diese Adresse gehört nicht zu diesem Benutzerkonto."
|
339 |
+
"The address has been deleted.","Die Adresse wurde gelöscht."
|
340 |
"The address has been saved.","Die Adresse wurde gespeichert."
|
341 |
"The customer does not have default billing address.","Der Kunde hat keine Standard-Rechnungsanschrift."
|
342 |
"The customer group has been deleted.","Die Kundengruppe wurde gelöscht."
|
343 |
"The customer group has been saved.","Die Kundengruppe wurde gespeichert."
|
344 |
+
"The group ""%s"" cannot be deleted","Die Kundengruppe ""%s"" kann nicht gelöscht werden."
|
345 |
"The password must have at least 6 characters. Leading or trailing spaces will be ignored.","Das Passwort muss mindestens 6 Zeichen haben. Führende und folgende Lehrzeichen werden ignoriert."
|
346 |
"The suffix that goes after name (Jr., Sr., etc.)","Das Suffix nach dem namen (Jr., Sr., usw.)"
|
347 |
"The title that goes before name (Mr., Mrs., etc.)","Die Anrede vor dem Namen (Herr, Frau, usw.)"
|
348 |
"There are no items in customer's wishlist at the moment","Momentan gibt es keine Artikel auf dem Wunschzettel des Kunden."
|
349 |
"There are no items in customer\'s shopping cart at the moment","Es gibt momentan keine Artikel im Kundenwarenkorb"
|
350 |
+
"There is already an account with this email address. If you are sure that it is your email address, <a href=""%s"">click here</a> to get your password and access your account.","Es existiert bereits ein Benutzerkonto mit dieser Mailadresse. Wenn Sie sicher sind das es Ihre Mailadresse ist, dann <a href=""%s"">klicken Sie hier</a>, um ein neues Passwort anzufordern und wieder Zugriff zu bekommen."
|
351 |
"This account is not confirmed.","Dieses Benutzerkonto wurde nicht bestätigt."
|
352 |
+
"This account is not confirmed. <a href=""%s"">Click here</a> to resend confirmation email.","Dieses Benutzerkonto ist nicht bestätigt. <a href=""%s"">Klicken Sie hier</a> um sich erneut eine Bestätigungs-Mail zusenden zu lassen."
|
353 |
+
"This customer email already exists","Diese Kunden-Mailadresse existiert bereits"
|
354 |
"This customer has no saved addresses.","Dieser Kunde besitzt keine gespeicherten Adressen."
|
355 |
+
"This email address was not found in our records.","Diese E-Mailadresse existiert leider nicht."
|
356 |
"This email does not require confirmation.","Diese E-Mail erfordert keine Bestätigung."
|
357 |
"This email will be sent instead of default welcome email, after account confirmation.","Diese E-mail wird anstelle der normalen Willkommensnachricht nach der Benutzerkonten-Bestätigung versandt."
|
358 |
"This is My Default %s Address","Das ist meine Standardadresse %s"
|
380 |
"Wrong confirmation key.","Falscher Bestätigungsschlüssel."
|
381 |
"Wrong customer account specified.","Falsches Benutzerkonto angegeben."
|
382 |
"Wrong email.","Falsche E-Mail."
|
383 |
+
"Wrong transactional account email type","Falscher Transaktionskonto E-Mail Typ"
|
384 |
"YYYY","JJJJ"
|
385 |
"Year","Jahr"
|
|
|
386 |
"You are currently not subscribed to any newsletter.","Sie sind momentan zu keinem Newsletter angemeldet."
|
387 |
"You are currently not subscribed to our newsletter.","Sie sind aktuell nicht zu unserem Newsletter angemeldet."
|
388 |
"You are currently subscribed to 'General Subscription'.","Sie sind momentan für das Abo 'Allgemeines' eingetragen."
|
404 |
"Zip/Postal Code","Postleitzahl"
|
405 |
"n/a","Keine Angabe"
|
406 |
"or","oder"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Dataflow.csv
CHANGED
@@ -1,47 +1,30 @@
|
|
1 |
-
"<a href="%s" target="_blank">Link</a>","<a href=""%s"" target=""_blank"">Link</a>"
|
2 |
-
"
|
3 |
-
"
|
4 |
-
"Could not
|
5 |
-
"
|
6 |
-
"
|
7 |
-
"Destination folder "%s"
|
8 |
-
"Destination folder "%s" is not a directory.","Destination folder "%s" is not a directory."
|
9 |
-
"Destination folder "%s" is not writable.","Destination folder "%s" is not writable."
|
10 |
"Done","Fertig"
|
11 |
-
"Dry run set, stopping execution.","
|
12 |
"ETA: %s","Geschätzte Zeit: %s"
|
13 |
-
"Error in field mapping: field list for mapping is not defined.","
|
14 |
-
"File "%s" does not exist.","
|
15 |
-
"Found %d rows.","
|
16 |
"Less than a minute","Weniger als eine Minute"
|
17 |
-
"Loaded successfully: "%s".",
|
18 |
"Memory Used: %s","Speicherverbrauch: %s"
|
19 |
-
"Method "%s" not defined in adapter %s.","
|
20 |
-
"Method "%s" was not defined in adapter %s.","Methode "%s" wurde im Adapter nicht definiert %s."
|
21 |
-
"Please declare "adapter" and "method" nodes first.","
|
22 |
"Processed records: %s","Verarbeitete Einträge: %s"
|
23 |
-
"Saved successfully: "%s" [%d byte(s)].","
|
24 |
"Sheet 1","Arbeitsblatt 1"
|
25 |
-
"Skip undefined row.","
|
26 |
"Starting %s :: %s","Starte %s :: %s"
|
27 |
-
"The destination folder "%s" does not exist or there is no access to create it.","Das Bestimmungsverzeichnis "%s" existiert nicht oder es besteht kein Zugriff um es zu erstellen."
|
28 |
"Total records: %s","Gesamtanzahl Einträge: %s"
|
29 |
"hour","Stunde"
|
30 |
"hours","Stunden"
|
31 |
"minute","Minute"
|
32 |
"minutes","Minuten"
|
33 |
-
"Access denied to destination folder "%s"","Zugriff auf Ordner "%s" verweigert"
|
34 |
-
"Could not load file: "%s"","Konnte Datei "%s" nicht laden"
|
35 |
-
"Could not save file: %s","Konnte Datei nicht speichern: %s"
|
36 |
-
"Declared adapter %s not found","Angegebener Adapter %s nicht gefunden"
|
37 |
-
"Destination folder "%s" is not a directory","Zielordner "%s" ist kein Ordner"
|
38 |
-
"Destination folder "%s" is not a writeable","In Zielordner "%s" kann nicht geschrieben werden"
|
39 |
-
"Dry run set, stopping execution","Probelauf fertig, Ausführung beendet"
|
40 |
-
"Error field mapping! Fields list for mapping is not defined","Fehler bei der Feldzuordnung! Feldliste für das Mapping ist nicht definiert"
|
41 |
-
"File "%s" don\'t exist","Datei "%s" existiert nicht"
|
42 |
-
"Found %d rows","%d Zeilen gefunden"
|
43 |
-
"Loaded successfully: "%s"",""%s" erfolgreich geladen"
|
44 |
-
"Method "%s" not defined in adapter %s","Methode "%s" Ist für Adapter %s nicht definiert"
|
45 |
-
"Please declare "adapter" and "method" node first.","Bitte bestimmen Sie zuerst "Adapter-" und "Methode"."
|
46 |
-
"Saved successfully: "%s" [%d byte(s)]","Erfolgreich gespeichert: "%s" [%d Byte(s)]"
|
47 |
-
"Skip undefined row","Undefinierte Zeile überspringen"
|
1 |
+
"<a href=""%s"" target=""_blank"">Link</a>","<a href=""%s"" target=""_blank"">Link</a>"
|
2 |
+
"An error occurred while opening file: ""%s"".","Fehler beim Öffnen der Datei aufgetreten: ""%s""."
|
3 |
+
"Could not load file: ""%s"".","Datei konnte nicht geladen werden: ""%s""."
|
4 |
+
"Could not save file: %s.","Datei konnte nicht gespeichert werden: ""%s""."
|
5 |
+
"Declared adapter %s was not found.","Adapter %s nicht gefunden."
|
6 |
+
"Destination folder ""%s"" is not a directory.","Zielordner ""%s"" ist kein Verzeichnis."
|
7 |
+
"Destination folder ""%s"" is not writable.","In Zielordner ""%s"" kann nicht geschrieben werden."
|
|
|
|
|
8 |
"Done","Fertig"
|
9 |
+
"Dry run set, stopping execution.","Testlauf gesetzt, Ausführung wird beendet."
|
10 |
"ETA: %s","Geschätzte Zeit: %s"
|
11 |
+
"Error in field mapping: field list for mapping is not defined.","Fehler bei der Feldzuweisung: Zuordnungsliste ist nicht definiert."
|
12 |
+
"File ""%s"" does not exist.","Datei ""%s"" existiert nicht"
|
13 |
+
"Found %d rows.","%d Zeilen gefunden."
|
14 |
"Less than a minute","Weniger als eine Minute"
|
15 |
+
"Loaded successfully: ""%s"".",Erfolgreich geladen: ""%s""."
|
16 |
"Memory Used: %s","Speicherverbrauch: %s"
|
17 |
+
"Method ""%s"" not defined in adapter %s.","Methode ""%s"" Ist für Adapter %s nicht definiert."
|
18 |
+
"Method ""%s"" was not defined in adapter %s.","Methode ""%s"" wurde im Adapter nicht definiert %s."
|
19 |
+
"Please declare ""adapter"" and ""method"" nodes first.","Bitte bestimmen Sie zuerst ""Adapter-"" und ""Methode""."
|
20 |
"Processed records: %s","Verarbeitete Einträge: %s"
|
21 |
+
"Saved successfully: ""%s"" [%d byte(s)].","Erfolgreich gespeichert: ""%s"" [%d Byte(s)]."
|
22 |
"Sheet 1","Arbeitsblatt 1"
|
23 |
+
"Skip undefined row.","Nicht definierte Zeile übersprungen."
|
24 |
"Starting %s :: %s","Starte %s :: %s"
|
25 |
+
"The destination folder ""%s"" does not exist or there is no access to create it.","Das Bestimmungsverzeichnis ""%s"" existiert nicht oder es besteht kein Zugriff um es zu erstellen."
|
26 |
"Total records: %s","Gesamtanzahl Einträge: %s"
|
27 |
"hour","Stunde"
|
28 |
"hours","Stunden"
|
29 |
"minute","Minute"
|
30 |
"minutes","Minuten"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Directory.csv
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
"-- Please select --","-- Bitte wählen --"
|
2 |
"Allowed Currencies","Erlaubte Währungen"
|
3 |
"Base Currency","Basis Währung"
|
4 |
-
"Base currency is used for all online payment transactions. Scope is defined by the catalog price scope ("Catalog" > "Price" > "Catalog Price Scope").","Basiswährung wird für alle
|
5 |
"Cannot retrieve rate from %s.","Umrechnungskurs konnte nicht von %s abgerufen werden"
|
6 |
"Connection Timeout in Seconds","Verbindungs-Timeout in Sekunden"
|
7 |
"Continue »","Weiter »"
|
8 |
"Country","Land"
|
9 |
-
"Country
|
10 |
"Country and Format Type combination should be unique","Land- und Formatkombination sollte einmalig sein."
|
11 |
"Currency","Währung"
|
12 |
"Currency Options","Währungsoptionen"
|
@@ -24,23 +24,20 @@
|
|
24 |
"Invalid Import Service specified.","Ungültiger Importdienst angegeben."
|
25 |
"Invalid country code: %s","Ungültiger Ländercode: %s"
|
26 |
"Invalid rates received","Ungültige Kurse empfangen"
|
27 |
-
"Invalid target currency.","Ungültige Zielwährung"
|
28 |
"List of countries","Länderliste"
|
29 |
-
"List of regions in specified country","Regionenliste des
|
30 |
-
"Postal Code is Optional for the following countries","Postleitzahl ist
|
31 |
"Region","Region"
|
32 |
-
"Region
|
33 |
"Scheduled Import Settings","Einstellungen für terminierten Import"
|
34 |
"Select Your Currency","Währung wählen"
|
35 |
"Service","Service"
|
36 |
"Start Time","Startzeit"
|
37 |
"State/Province","Land/Bundesland"
|
38 |
"Strikeiron Email Update Warnings","Strikeiron Email Update Warnungen"
|
39 |
-
"Unable to initialize the import model.","
|
40 |
-
"Undefined rate from "%s-%s".","
|
41 |
"WARNING:","WARNUNG:"
|
42 |
"Webservicex","Webservicex"
|
43 |
"Your current currency is: %s","Ihre aktuelle Währung ist: %s"
|
44 |
-
"Invalid target currency","Ungültige Zielwährung"
|
45 |
-
"Unable to initialize import model","Konnte Importmodell nicht initialisieren"
|
46 |
-
"Undefined rate from "%s-%s"","Unbestimmter Kurs von "%s-%s""
|
1 |
"-- Please select --","-- Bitte wählen --"
|
2 |
"Allowed Currencies","Erlaubte Währungen"
|
3 |
"Base Currency","Basis Währung"
|
4 |
+
"Base currency is used for all online payment transactions. Scope is defined by the catalog price scope (""Catalog"" > ""Price"" > ""Catalog Price Scope"").","Basiswährung wird für alle Onlinezahlungen verwendet. Die Gültigkeit bezieht sich auf die Katalogpreis-Gültigkeit (""Katalog"" > ""Preis"" > ""Katalogpreis-Gültigkeit"")."
|
5 |
"Cannot retrieve rate from %s.","Umrechnungskurs konnte nicht von %s abgerufen werden"
|
6 |
"Connection Timeout in Seconds","Verbindungs-Timeout in Sekunden"
|
7 |
"Continue »","Weiter »"
|
8 |
"Country","Land"
|
9 |
+
"Country API","Land API"
|
10 |
"Country and Format Type combination should be unique","Land- und Formatkombination sollte einmalig sein."
|
11 |
"Currency","Währung"
|
12 |
"Currency Options","Währungsoptionen"
|
24 |
"Invalid Import Service specified.","Ungültiger Importdienst angegeben."
|
25 |
"Invalid country code: %s","Ungültiger Ländercode: %s"
|
26 |
"Invalid rates received","Ungültige Kurse empfangen"
|
27 |
+
"Invalid target currency.","Ungültige Zielwährung."
|
28 |
"List of countries","Länderliste"
|
29 |
+
"List of regions in specified country","Regionenliste des entsprechenden Landes"
|
30 |
+
"Postal Code is Optional for the following countries","Die Angabe einer Postleitzahl ist für die folgenden Länder nicht erforderlich"
|
31 |
"Region","Region"
|
32 |
+
"Region API","Region API"
|
33 |
"Scheduled Import Settings","Einstellungen für terminierten Import"
|
34 |
"Select Your Currency","Währung wählen"
|
35 |
"Service","Service"
|
36 |
"Start Time","Startzeit"
|
37 |
"State/Province","Land/Bundesland"
|
38 |
"Strikeiron Email Update Warnings","Strikeiron Email Update Warnungen"
|
39 |
+
"Unable to initialize the import model.","Importmodel konnte nicht gestartet werden."
|
40 |
+
"Undefined rate from ""%s-%s"".","Unbestimmter Kurs von ""%s-%s""."
|
41 |
"WARNING:","WARNUNG:"
|
42 |
"Webservicex","Webservicex"
|
43 |
"Your current currency is: %s","Ihre aktuelle Währung ist: %s"
|
|
|
|
|
|
app/locale/de_DE/Mage_Downloadable.csv
CHANGED
@@ -1,19 +1,20 @@
|
|
1 |
"Add New Row","Neue Zeile hinzufügen"
|
2 |
"Alphanumeric, dash and underscore characters are recommended for filenames. Improper characters are replaced with \'_\'.","Empfohlen werden alphanumerische, per Bindestrich & Unterstrich (_) getrennte Zeichen als Dateinamen. Ungeeignete Zeichen werden mit \'_\' ersetzt."
|
3 |
-
"An error occurred while getting requested content. Please contact the store owner.","Fehler beim
|
4 |
-
"An error occurred while getting the requested content.","Fehler beim
|
5 |
-
"An error occurred while getting the requested content. Please contact the store owner.","Fehler beim
|
6 |
"An error occurred while saving the file(s).","Beim Speichern der Datei(en) trat ein Fehler auf."
|
7 |
"Availability:","Verfügbarkeit:"
|
8 |
"Back","Zurück"
|
9 |
"Canceled","storniert"
|
10 |
-
"Cannot connect to remote host, error: %s.","
|
11 |
"Catalog Product View (Downloadable)","Katalog Artikelansicht (Downloadartikel)"
|
12 |
"Customer My Account Downloadable Items","Kunde Mein Benutzerkonto Downloadartikel"
|
13 |
"Date","Datum"
|
14 |
"Default Link Title","Standard Linktitel"
|
15 |
"Default Maximum Number of Downloads","Standard Maximalanzahl an Downloads"
|
16 |
"Default Sample Title","Standard Beispieltitel"
|
|
|
17 |
"Disable Guest Checkout if Cart Contains Downloadable Items","Bezahlvorgang als Gast deaktivieren, wenn Downloadartikel im<br />Warenkorb liegen"
|
18 |
"Downloadable Information","Downloadinformation"
|
19 |
"Downloadable Product","Downloadartikel"
|
@@ -25,37 +26,40 @@
|
|
25 |
"File","Datei"
|
26 |
"From:","Von:"
|
27 |
"Gift Message","Geschenknachricht"
|
28 |
-
"Go to <a href="%s">My Downloadable Products</a>","Gehen Sie zu <a href="%s">Meine Downloadartikel</a>"
|
29 |
-
"Guest checkout will only work with shareable.","
|
30 |
"In stock","Auf Lager"
|
31 |
"Incl. Tax","inkl. Steuern"
|
32 |
-
"Invalid download URL host.","
|
33 |
-
"Invalid download URL scheme.","
|
34 |
-
"Invalid download link type.","
|
35 |
"Invoiced","In Rechnung gestellt."
|
36 |
"Links can be purchased separately","Links können einzeln erworben werden."
|
37 |
"Max. Downloads","Max. Downloads"
|
38 |
"Message:","Nachricht:"
|
39 |
"Move to Wishlist","Auf den Wunschzettel"
|
40 |
-
"My Downloadable Products","Meine
|
41 |
"Open Links in New Window","Links in neuem Fenster öffnen"
|
42 |
"Order #","Bestellung Nr. "
|
43 |
"Order Item Status to Enable Downloads","Bestellstatus, um Downloads zu aktivieren"
|
|
|
|
|
44 |
"Ordered","Bestellt"
|
45 |
"Out of stock","Nicht auf Lager"
|
46 |
"Pending","In Arbeit"
|
47 |
"Please log in to download your product.","Bitte melden Sie sich an, um Ihre(n) Downloadartikel herunterzuladen."
|
48 |
-
"Please set resource file and link type.","
|
49 |
-
"Please specify product link(s).","Bitte
|
50 |
"Price","Preis"
|
51 |
"Qty","Menge"
|
52 |
"Refunded","Erstattet"
|
53 |
"Remaining Downloads","Verbleibende Downloads"
|
54 |
"Remove Item","Artikel entfernen"
|
55 |
-
"Requested link does not exist.","
|
56 |
"Sample","Beispiel"
|
|
|
57 |
"Shareable","Gemeinsam benutzbar"
|
58 |
-
"Shipped","
|
59 |
"Sort Order","Reihenfolge"
|
60 |
"Start Download","Download starten"
|
61 |
"Status","Status"
|
@@ -66,17 +70,12 @@
|
|
66 |
"To:","An:"
|
67 |
"U","U"
|
68 |
"Unlimited","Unbegrenzt"
|
69 |
-
"Use Content-Disposition","
|
|
|
70 |
"View Order","Bestellung ansehen"
|
71 |
-
"
|
|
|
72 |
"attachment","Anhang"
|
73 |
"download","Download"
|
74 |
"inline","Inline"
|
75 |
"sample","Beispiel"
|
76 |
-
"Cannot connect to remote host, error: %s","Verbindung kann nicht hergestellt werden, Fehler: %s"
|
77 |
-
"Guest checkout will only work with shareable","Bezahlvorgang als Gast funktioniert nur mit gemeinsam benutzbaren Dateien"
|
78 |
-
"Invalid download URL host","Ungültiger Download-URL-Server"
|
79 |
-
"Invalid download URL scheme","Ungültiges Download-URL-Schema"
|
80 |
-
"Invalid download link type","Ungültiger Downloadlink-Typ"
|
81 |
-
"Please set resource file and link type","Bitte Ressourcen-Datei und Linktyp festlegen"
|
82 |
-
"Requested link doesn't exist.","Der gewünschte Link existiert nicht."
|
1 |
"Add New Row","Neue Zeile hinzufügen"
|
2 |
"Alphanumeric, dash and underscore characters are recommended for filenames. Improper characters are replaced with \'_\'.","Empfohlen werden alphanumerische, per Bindestrich & Unterstrich (_) getrennte Zeichen als Dateinamen. Ungeeignete Zeichen werden mit \'_\' ersetzt."
|
3 |
+
"An error occurred while getting requested content. Please contact the store owner.","Fehler beim Anfordern des Inhalts aufgetreten. Bitte den Shopbetreiber kontaktieren."
|
4 |
+
"An error occurred while getting the requested content.","Fehler beim Anfordern des Inhalts aufgetreten."
|
5 |
+
"An error occurred while getting the requested content. Please contact the store owner.","Fehler beim Anfordern des Inhalts aufgetreten. Bitte den Shopbetreiber kontaktieren."
|
6 |
"An error occurred while saving the file(s).","Beim Speichern der Datei(en) trat ein Fehler auf."
|
7 |
"Availability:","Verfügbarkeit:"
|
8 |
"Back","Zurück"
|
9 |
"Canceled","storniert"
|
10 |
+
"Cannot connect to remote host, error: %s.","Fehler beim Verbinden zu entferntem Server: %s."
|
11 |
"Catalog Product View (Downloadable)","Katalog Artikelansicht (Downloadartikel)"
|
12 |
"Customer My Account Downloadable Items","Kunde Mein Benutzerkonto Downloadartikel"
|
13 |
"Date","Datum"
|
14 |
"Default Link Title","Standard Linktitel"
|
15 |
"Default Maximum Number of Downloads","Standard Maximalanzahl an Downloads"
|
16 |
"Default Sample Title","Standard Beispieltitel"
|
17 |
+
"Delete","Löschen"
|
18 |
"Disable Guest Checkout if Cart Contains Downloadable Items","Bezahlvorgang als Gast deaktivieren, wenn Downloadartikel im<br />Warenkorb liegen"
|
19 |
"Downloadable Information","Downloadinformation"
|
20 |
"Downloadable Product","Downloadartikel"
|
26 |
"File","Datei"
|
27 |
"From:","Von:"
|
28 |
"Gift Message","Geschenknachricht"
|
29 |
+
"Go to <a href=""%s"">My Downloadable Products</a>","Gehen Sie zu <a href=""%s"">Meine Downloadartikel</a>"
|
30 |
+
"Guest checkout will only work with shareable.","Der Gang zur Kasse mit gemeinsam verwendbaren Dateien ist leider als Gast nicht möglich."
|
31 |
"In stock","Auf Lager"
|
32 |
"Incl. Tax","inkl. Steuern"
|
33 |
+
"Invalid download URL host.","Ungültiger Download URL-Host."
|
34 |
+
"Invalid download URL scheme.","Ungültiges Download URL-Schema."
|
35 |
+
"Invalid download link type.","Ungültige Download Linkart."
|
36 |
"Invoiced","In Rechnung gestellt."
|
37 |
"Links can be purchased separately","Links können einzeln erworben werden."
|
38 |
"Max. Downloads","Max. Downloads"
|
39 |
"Message:","Nachricht:"
|
40 |
"Move to Wishlist","Auf den Wunschzettel"
|
41 |
+
"My Downloadable Products","Meine Downloadartikel"
|
42 |
"Open Links in New Window","Links in neuem Fenster öffnen"
|
43 |
"Order #","Bestellung Nr. "
|
44 |
"Order Item Status to Enable Downloads","Bestellstatus, um Downloads zu aktivieren"
|
45 |
+
"Order id cannot be null","Bestellnummer darf nicht 0 sein"
|
46 |
+
"Order item id cannot be null","Artikelnummer darf nicht 0 sein"
|
47 |
"Ordered","Bestellt"
|
48 |
"Out of stock","Nicht auf Lager"
|
49 |
"Pending","In Arbeit"
|
50 |
"Please log in to download your product.","Bitte melden Sie sich an, um Ihre(n) Downloadartikel herunterzuladen."
|
51 |
+
"Please set resource file and link type.","Bitte legen Sie die Datei und Linkart fest."
|
52 |
+
"Please specify product link(s).","Bitte Link(s) festlegen."
|
53 |
"Price","Preis"
|
54 |
"Qty","Menge"
|
55 |
"Refunded","Erstattet"
|
56 |
"Remaining Downloads","Verbleibende Downloads"
|
57 |
"Remove Item","Artikel entfernen"
|
58 |
+
"Requested link does not exist.","Angeforderter Link existiert nicht."
|
59 |
"Sample","Beispiel"
|
60 |
+
"See price before order confirmation.","Bitte achten Sie vor der Bestellbestätigung auf den Preis."
|
61 |
"Shareable","Gemeinsam benutzbar"
|
62 |
+
"Shipped","Versendet"
|
63 |
"Sort Order","Reihenfolge"
|
64 |
"Start Download","Download starten"
|
65 |
"Status","Status"
|
70 |
"To:","An:"
|
71 |
"U","U"
|
72 |
"Unlimited","Unbegrenzt"
|
73 |
+
"Use Content-Disposition","""Content-Disposition"" verwenden"
|
74 |
+
"Use Default Value","Standardwerte verwenden"
|
75 |
"View Order","Bestellung ansehen"
|
76 |
+
"What's this?","Was ist das?"
|
77 |
+
"You have not purchased any downloadable products yet.","Sie haben noch keine Downloadartikel gekauft."
|
78 |
"attachment","Anhang"
|
79 |
"download","Download"
|
80 |
"inline","Inline"
|
81 |
"sample","Beispiel"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Eav.csv
CHANGED
@@ -1,57 +1,99 @@
|
|
1 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
"Add Option","Option hinzufügen"
|
3 |
-
"An error occurred while loading a record, aborting. Error: %s","
|
4 |
-
"An error occurred while loading the collection, aborting. Error: %s","
|
5 |
-
"An error occurred while saving a record, aborting. Error: ","
|
6 |
-
"Attempt to add an invalid object
|
7 |
-
"Attribute '%s' used in configurable products
|
8 |
"Attribute Code","Attribut Code"
|
9 |
"Attribute Label","Attribut Label"
|
10 |
"Attribute Properties","Attribute Eigenschaften"
|
11 |
-
"Attribute
|
|
|
12 |
"Attribute with the same code","Attribut mit dem gleichen Code"
|
13 |
-
"
|
14 |
-
"
|
|
|
|
|
|
|
15 |
"Date","Datum"
|
16 |
"Decimal Number","Dezimalzahl"
|
17 |
-
"Default Product Listing Sort by not exists on Available Product Listing Sort By","
|
18 |
"Default Value","Standardwert"
|
19 |
-
"Default option value is not defined
|
20 |
"Delete","Löschen"
|
21 |
"Dropdown","Drop-Down"
|
22 |
"Email","eMail"
|
23 |
-
"Entity collection expected.","
|
24 |
-
"Entity collections expected.","
|
25 |
-
"Entity is not
|
26 |
-
"
|
27 |
-
"
|
|
|
28 |
"Form Element with the same attribute","Formular-Element mit dem selben Attribut"
|
29 |
"Form Fieldset with the same code","Formular-Feldgruppe mit dem selben Code"
|
30 |
"Form Type with the same code","Formular-Typ mit dem selben Code"
|
31 |
-
"
|
|
|
32 |
"Input Validation for Store Owner","Eingabeüberprüfung für den Shop-Betreiber"
|
33 |
"Integer Number","Ganzzahl"
|
34 |
"Invalid EAV attribute.","Ungültiges EAV Attribut."
|
35 |
-
"Invalid alias, already exists in joint attributes
|
36 |
-
"Invalid attribute name: %s
|
37 |
"Invalid attribute requested: %s","Ungültiges Attribut angefragt: %s"
|
38 |
-
"Invalid attribute type
|
39 |
"Invalid character encountered in increment ID: %s","Ungültiges Zeichen in hochgezählter ID gefunden: %s"
|
|
|
|
|
|
|
40 |
"Invalid entity specified","Ungültiger Datensatz angegeben"
|
41 |
-
"Invalid entity supplied.","
|
42 |
-
"Invalid entity supplied: %s
|
43 |
-
"Invalid entity type
|
44 |
-
"Invalid entity_id, skipping the record.","
|
45 |
"Invalid entity_type specified: %s","Ungültiger Datensatztyp angegeben: %s"
|
46 |
-
"Invalid foreign key
|
47 |
-
"Invalid form type.","
|
48 |
-
"Invalid joint fields
|
49 |
"Invalid store specified","Ungültiger Store angegeben"
|
50 |
-
"
|
51 |
-
"
|
|
|
52 |
"Letters","Buchstaben"
|
53 |
"Letters (a-z, A-Z) or Numbers (0-9)","Buchstaben (a-z, A-Z) oder Ziffern (0-9)"
|
54 |
"Loaded %d records","%d Einträge geladen"
|
|
|
55 |
"Multiple Select","Mehrfach Auswahl"
|
56 |
"No","Nein"
|
57 |
"No options found in config node %s","Keine Optionen in Konfigurationsknoten %s gefunden"
|
@@ -61,50 +103,22 @@
|
|
61 |
"Problem saving the collection, aborting. Error: %s","Problem beim Speichern der Zusammenstellung, breche ab. Fehler: %s"
|
62 |
"Required","Pflichtfeld"
|
63 |
"Saved %d record(s).","%d Einträge gespeichert."
|
64 |
-
"
|
65 |
"System","System"
|
66 |
"Text Area","Mehrzeiliger Textbereich"
|
67 |
"Text Field","Einzeiliges Textfeld"
|
68 |
-
"The attribute code \'%s\' is reserved by system. Please try another attribute code
|
69 |
-
"The value of attribute "%s" must be unique
|
70 |
-
"
|
|
|
71 |
"URL","URL"
|
72 |
"Unique Value","Einmaliger Wert"
|
73 |
"Unique Value (not shared with other products)","Einmaliger Wert (nicht geteilt mit anderen Artikeln)"
|
74 |
-
"Unknown parameter.","Unknown parameter."
|
75 |
-
"Valid store_id is expected.","Valid store_id is expected."
|
76 |
-
"Values Required","Werte erforderlich"
|
77 |
-
"Wrong attribute ID.","Falsche Attribut-ID."
|
78 |
-
"Wrong attribute group ID.","Falsche Attribut-Gruppen ID."
|
79 |
-
"Wrong attribute set ID.","Falsche Attribut-Set ID."
|
80 |
-
"Wrong entity ID.","Falsche Entity ID."
|
81 |
-
"Yes","Ja"
|
82 |
-
"Yes/No","Ja/Nein"
|
83 |
-
"Attempt to add an invalid object","Versuch ein ungültiges Objekt anzulegen"
|
84 |
-
"Attribute set with the "%s" name already exists","Attribut mit dem Namen "%s" existiert bereits"
|
85 |
-
"Data integrity: No header row found for attribute","Datenintegrität: Keine Kopfzeile für Attribut gefunden"
|
86 |
-
"Default Product Listing Sort by not exists on Available Product Listing Sort by","Standard Artikelliste Sortierung, wenn keine verfügbaren Sortierungen für Artikel definiert sind"
|
87 |
-
"Entity collection expected","Datensatz Zusammenstellung erwartet"
|
88 |
-
"Entity collections expected","Datensatz Zusammenstellungen erwartet"
|
89 |
-
"Entity is not initialized","Datensatz ist nicht initialisiert"
|
90 |
-
"Frontend label is not defined","Oberflächenbezeichner ist nicht definiert"
|
91 |
-
"Invalid EAV attribute","Ungültiges EAV Attribut"
|
92 |
-
"Invalid alias, already exists in joined attributes","Ungültiger Alias, besteht bereits in zusammengeführten Attributen"
|
93 |
-
"Invalid attribute name: %s","Ungültiger Attributname: %s"
|
94 |
-
"Invalid attribute type","Ungültiger Attributtyp"
|
95 |
-
"Invalid entity supplied","Ungültigen Datensatz angegeben"
|
96 |
-
"Invalid entity supplied: %s","Ungültigen Datensatz angegeben: %s"
|
97 |
-
"Invalid entity type","Ungültiger Datensatztyp"
|
98 |
-
"Invalid entity_id, skipping the record","Ungültige Datensatz ID, überspringe den Eintrag"
|
99 |
-
"Invalid foreign key","Ungültiger Fremdschlüssel"
|
100 |
-
"Invalid form type","Ungültiger Formular-Typ"
|
101 |
-
"Invalid joind fields.","Ungültige gemeinsame Felder."
|
102 |
-
"Joined field or attribute expression with this alias is already declared","Zusammengeführtes Feld oder Attributausdruck mit diesem Alias ist bereits deklariert"
|
103 |
-
"Letters(a-zA-Z) or Numbers(0-9)","Buchstaben(a-z A-Z) oder Zahlen(0-9)"
|
104 |
-
"The attribute code \'%s\' is reserved by system. Please, try another attribute code.","Der Attributcode \'%s\' ist für das system reserviert. Bitte benutzten Sie einen anderen Attributcode."
|
105 |
"Unknown parameter","Unbekannter Parameter"
|
106 |
-
"
|
107 |
-
"Wrong attribute ID","Falsche Attribut ID"
|
108 |
"Wrong attribute group ID","Falsche Attributgruppen ID"
|
109 |
"Wrong attribute set ID","Falsche Attributset ID"
|
110 |
"Wrong entity ID","Falsche Datensatz ID"
|
|
|
|
|
|
1 |
+
"""%s"" contains not only digit characters.","""%s"" enthält nicht nur Zahlen."
|
2 |
+
"""%s"" does not fit the entered date format.","""%s"" erfüllt nicht das festgelegte Datumsformat."
|
3 |
+
"""%s"" exceeds the allowed file size.","""%s"" überschreitet die erlaubte Dateigröße."
|
4 |
+
"""%s"" exceeds the allowed length.","""%s"" überschreitet die erlaubte Länge."
|
5 |
+
"""%s"" has not only alphabetic and digit characters.","""%s"" enthält nicht nur alphabetische oder nummerische Zeichen."
|
6 |
+
"""%s"" has not only alphabetic characters.","""%s"" enthält nicht nur alphabetische Zeichen."
|
7 |
+
"""%s"" height exceeds allowed value of %s px.","""%s"" Höhe überschreitet den erlaubten Wert von %s px."
|
8 |
+
"""%s"" invalid type entered.","""%s"" Ungültiger Typ eingegeben."
|
9 |
+
"""%s"" is a required value.","""%s"" ist ein Pflichtfeld."
|
10 |
+
"""%s"" is an empty string.","""%s"" ist ein leerer String."
|
11 |
+
"""%s"" is not a valid URL.","""%s"" ist keine gültige URL."
|
12 |
+
"""%s"" is not a valid date.","""%s"" ist kein gültiges Datum."
|
13 |
+
"""%s"" is not a valid email address.","""%s"" ist keine gültige E-Mail Adresse."
|
14 |
+
"""%s"" is not a valid file","""%s"" ist keine gültige Datei"
|
15 |
+
"""%s"" is not a valid file extension.","""%s"" ist kein gültiges Dateiformat."
|
16 |
+
"""%s"" is not a valid file.","""%s"" ist kein gültiges Datum."
|
17 |
+
"""%s"" is not a valid hostname.","""%s"" ist kein gültiger Hostname."
|
18 |
+
"""%s"" is not a valid image format","""%s"" ist kein gültiges Bildformat"
|
19 |
+
"""%s"" length must be equal or greater than %s characters.","""%s"" Länge muss gleich oder größer als %s Zeichen sein."
|
20 |
+
"""%s"" length must be equal or less than %s characters.","""%s"" Länge muss kleiner oder gleich %s Zeichen sein."
|
21 |
+
"""%s"" width exceeds allowed value of %s px.","""%s"" Breite überschreitet den erlaubten Wert von %s px."
|
22 |
+
"'%value%' appears to be a DNS hostname but cannot extract TLD part","'%value%' scheint ein DNS-Hostname zu sein, aber TLD-Teil konnte nicht ausgelesen werden"
|
23 |
+
"'%value%' appears to be a DNS hostname but cannot match TLD against known list","'%value%' scheint ein DNS-Hostname zu sein, aber der TLD-Teil scheint nicht gültig zu sein"
|
24 |
+
"'%value%' appears to be a DNS hostname but cannot match against hostname schema for TLD '%tld%'","'%value%' scheint ein DNS-Hostname zu sein, aber der TLD-Teil '%tld%' konnte nicht gegen das Schema validiert werden"
|
25 |
+
"'%value%' appears to be a DNS hostname but contains a dash in an invalid position","'%value%' scheint ein DNS-Hostname zu sein, enthält aber einen Bindestrich an einer ungültigten Position"
|
26 |
+
"'%value%' appears to be a DNS hostname but the given punycode notation cannot be decoded","'%value%' scheint ein DNS-Hostname zu sein, aber die verwendete PunyCode-Notation konnte nicht entschlüsselt werden"
|
27 |
+
"'%value%' appears to be a local network name but local network names are not allowed","'%value%' scheint ein lokaler Netzwerkname zu sein. Lokale Netzwerknamen sind jedoch nicht erlaubt"
|
28 |
+
"'%value%' appears to be an IP address, but IP addresses are not allowed","'%value%' scheint eine IP-Adresse zu sein. IP-Adressen sind aber nicht erlaubt"
|
29 |
+
"'%value%' does not appear to be a valid URI hostname","'%value%' scheint kein gültiger URI-Hostname zu sein"
|
30 |
+
"'%value%' does not appear to be a valid local network name","'%value%' scheint kein gültiger lokaler Netzwerkname zu sein"
|
31 |
+
"'%value%' does not match the expected structure for a DNS hostname","'%value%' entspricht nicht der erwarteten Struktur eines DNS-Hostnamens"
|
32 |
+
"A joint field with this alias (%s) is already declared","Ein Joint-Feld mit diesem Alias (%s) wurde bereits angelegt"
|
33 |
"Add Option","Option hinzufügen"
|
34 |
+
"An error occurred while loading a record, aborting. Error: %s","Beim Laden eines Datensatzes ist folgender Fehler aufgetreten: %s"
|
35 |
+
"An error occurred while loading the collection, aborting. Error: %s","Beim Laden einer Collection ist folgender Fehler aufgetreten: %s"
|
36 |
+
"An error occurred while saving a record, aborting. Error: ","Beim Speichern eines Datensatzes ist folgender Fehler aufgetreten: %s"
|
37 |
+
"Attempt to add an invalid object","Versuch ein ungültiges Objekt anzulegen"
|
38 |
+
"Attribute '%s' used in configurable products","Attribut '%s' wird in konfigurierbaren Artikeln verwendet."
|
39 |
"Attribute Code","Attribut Code"
|
40 |
"Attribute Label","Attribut Label"
|
41 |
"Attribute Properties","Attribute Eigenschaften"
|
42 |
+
"Attribute object is undefined","Attribut Objekt ist nicht definiert"
|
43 |
+
"Attribute set with the ""%s"" name already exists.","Attribut-Set mit dem Namen ""%s"" existiert bereits."
|
44 |
"Attribute with the same code","Attribut mit dem gleichen Code"
|
45 |
+
"Can\'t create table: %s","Tabelle %s kann nicht angelegt werden"
|
46 |
+
"Catalog Input Type for Store Owner","Katalog Eingabe-Typ für den Shopbetreiber"
|
47 |
+
"Current module EAV entity is undefined","Aktuelle EAV-Entität des Moduls ist nicht definiert"
|
48 |
+
"Current module pathname is undefined","Aktueller Pfadname des Moduls ist nicht definiert"
|
49 |
+
"Data integrity: No header row found for attribute","Datenintegrität: Keine Kopfzeile für Attribut gefunden"
|
50 |
"Date","Datum"
|
51 |
"Decimal Number","Dezimalzahl"
|
52 |
+
"Default Product Listing Sort by not exists on Available Product Listing Sort By","Standard Artikel-Sortierkriterium ist in den verfügbaren Kriterien nicht enthalten"
|
53 |
"Default Value","Standardwert"
|
54 |
+
"Default option value is not defined","Standard Optionswert ist nicht definiert"
|
55 |
"Delete","Löschen"
|
56 |
"Dropdown","Drop-Down"
|
57 |
"Email","eMail"
|
58 |
+
"Entity collection expected.","Entitäten Collection erwartet."
|
59 |
+
"Entity collections expected.","Entitäten Collections erwartet."
|
60 |
+
"Entity instance is not defined","Entitäten-Instanz ist nicht definiert"
|
61 |
+
"Entity is not initialized","Datensatz ist nicht initialisiert"
|
62 |
+
"Entity object is undefined","Entitäten-Objekt ist nicht definiert"
|
63 |
+
"Failed to load node %s from config","Knoten %s konnte nicht aus der Konfiguration geladen werden."
|
64 |
"Form Element with the same attribute","Formular-Element mit dem selben Attribut"
|
65 |
"Form Fieldset with the same code","Formular-Feldgruppe mit dem selben Code"
|
66 |
"Form Type with the same code","Formular-Typ mit dem selben Code"
|
67 |
+
"Form code is not defined","Formular-Code ist nicht definiert"
|
68 |
+
"Frontend label is not defined","Oberflächenbezeichner ist nicht definiert"
|
69 |
"Input Validation for Store Owner","Eingabeüberprüfung für den Shop-Betreiber"
|
70 |
"Integer Number","Ganzzahl"
|
71 |
"Invalid EAV attribute.","Ungültiges EAV Attribut."
|
72 |
+
"Invalid alias, already exists in joint attributes","Ungültiger Alias, besteht bereits in zusammengeführten Attributen"
|
73 |
+
"Invalid attribute name: %s","Ungültiger Attributname: %s"
|
74 |
"Invalid attribute requested: %s","Ungültiges Attribut angefragt: %s"
|
75 |
+
"Invalid attribute type","Ungültiger Attributtyp"
|
76 |
"Invalid character encountered in increment ID: %s","Ungültiges Zeichen in hochgezählter ID gefunden: %s"
|
77 |
+
"Invalid date","Ungültiges Datum"
|
78 |
+
"Invalid default date","Ungültiges Standard Datum"
|
79 |
+
"Invalid default decimal value","Ungültiger Standard Dezimalwert"
|
80 |
"Invalid entity specified","Ungültiger Datensatz angegeben"
|
81 |
+
"Invalid entity supplied.","Ungültige Entity angegeben."
|
82 |
+
"Invalid entity supplied: %s","Ungültigen Datensatz angegeben: %s"
|
83 |
+
"Invalid entity type","Ungültiger Datensatztyp"
|
84 |
+
"Invalid entity_id, skipping the record.","Ungültige Entity_id, Datensatz wird übersprungen."
|
85 |
"Invalid entity_type specified: %s","Ungültiger Datensatztyp angegeben: %s"
|
86 |
+
"Invalid foreign key","Ungültiger Fremdschlüssel"
|
87 |
+
"Invalid form type.","Ungültige Formuarart."
|
88 |
+
"Invalid joint fields","Ungültige gemeinsame Felder"
|
89 |
"Invalid store specified","Ungültiger Store angegeben"
|
90 |
+
"Invalid type given. String expected","Ungültiger Datentyp. Zeichenfolge wird erwartet"
|
91 |
+
"Joined field with this alias is already declared","Zusammengeführtes Feld mit diesem Alias wurde bereits deklariert"
|
92 |
+
"Joint field or attribute expression with this alias is already declared","Zusammengeführtes Feld oder Attributausdruck mit diesem Alias wurde bereits deklariert"
|
93 |
"Letters","Buchstaben"
|
94 |
"Letters (a-z, A-Z) or Numbers (0-9)","Buchstaben (a-z, A-Z) oder Ziffern (0-9)"
|
95 |
"Loaded %d records","%d Einträge geladen"
|
96 |
+
"Maximum length of attribute code must be less then %s symbols","Maximale Länge des Attributcodes darf nicht mehr als %s Zeichen betragen."
|
97 |
"Multiple Select","Mehrfach Auswahl"
|
98 |
"No","Nein"
|
99 |
"No options found in config node %s","Keine Optionen in Konfigurationsknoten %s gefunden"
|
103 |
"Problem saving the collection, aborting. Error: %s","Problem beim Speichern der Zusammenstellung, breche ab. Fehler: %s"
|
104 |
"Required","Pflichtfeld"
|
105 |
"Saved %d record(s).","%d Einträge gespeichert."
|
106 |
+
"Source model ""%s"" not found for attribute ""%s""","Source-Model ""%s"" für das Attribut ""%s"" wurde nicht gefunden."
|
107 |
"System","System"
|
108 |
"Text Area","Mehrzeiliger Textbereich"
|
109 |
"Text Field","Einzeiliges Textfeld"
|
110 |
+
"The attribute code \'%s\' is reserved by system. Please try another attribute code","Der Attribut-Code \'%s\' ist vom System reserviert. Bitte verwenden Sie einen anderen Attribut-Code."
|
111 |
+
"The value of attribute ""%s"" must be unique","Der Wert des Attributs ""%s"" muss einmalig sein."
|
112 |
+
"The value of attribute ""%s"" must be unique.","Der Wert des Attributs ""%s"" muss einmalig sein."
|
113 |
+
"This attribute is used in configurable products","Dieses Attribut wird von konfigurierbaren Artikeln verwendet."
|
114 |
"URL","URL"
|
115 |
"Unique Value","Einmaliger Wert"
|
116 |
"Unique Value (not shared with other products)","Einmaliger Wert (nicht geteilt mit anderen Artikeln)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
"Unknown parameter","Unbekannter Parameter"
|
118 |
+
"Values Required","Werte erforderlich"
|
|
|
119 |
"Wrong attribute group ID","Falsche Attributgruppen ID"
|
120 |
"Wrong attribute set ID","Falsche Attributset ID"
|
121 |
"Wrong entity ID","Falsche Datensatz ID"
|
122 |
+
"Wrong type definition for %s","Falsche Typdefinition für %s"
|
123 |
+
"Yes","Ja"
|
124 |
+
"Yes/No","Ja/Nein"
|
app/locale/de_DE/Mage_GiftMessage.csv
CHANGED
@@ -1,22 +1,26 @@
|
|
1 |
"Add","Hinzufügen"
|
2 |
-
"Add gift
|
3 |
-
"Add gift
|
4 |
-
"Add gift
|
5 |
-
"Add gift options
|
|
|
|
|
|
|
6 |
"Allow Gift Messages for Order Items","Geschenknachricht für bestellte Artikel erlauben"
|
7 |
"Allow Gift Messages on Order Level","Geschenknachricht bei Bestellvorgang erlauben"
|
8 |
-
"An error occurred while saving the gift message.","Fehler
|
9 |
"Are you sure?","Sind Sie sicher?"
|
10 |
-
"Cancel","
|
11 |
-
"Do you have any gift items in your order?","
|
12 |
"Edit","Bearbeiten"
|
13 |
"From","Von"
|
14 |
"Gift Message","Geschenknachricht"
|
15 |
-
"Gift
|
16 |
-
"Gift Options
|
17 |
-
"Gift Options for
|
18 |
-
"Gift Options for
|
19 |
-
"Gift Options for
|
|
|
20 |
"Item %d of %d","Artikel %d von %d"
|
21 |
"Message","Nachricht"
|
22 |
"No","Nein"
|
@@ -24,17 +28,11 @@
|
|
24 |
"Save Gift Message","Geschenknachricht speichern"
|
25 |
"The gift message has been removed","Die Geschenknachricht wurde entfernt"
|
26 |
"The gift message has been saved","Die Geschenknachricht wurde gespeichert"
|
27 |
-
"The gift message has been saved.","Die Geschenknachricht wurde
|
28 |
"To","An"
|
29 |
-
"Unknown entity type","
|
30 |
"Use config","Konfiguration benutzen"
|
31 |
"Yes","Ja"
|
32 |
"You can leave this box blank if you do not wish to add a gift message for the item.","Sie können dieses Feld leer lassen, wenn Sie für diesen Artikel keine Geschenknachricht eingeben möchten."
|
33 |
"You can leave this box blank if you do not wish to add a gift message for this address.","Sie können dieses Feld leer lassen, wenn Sie für diese Adresse keine Geschenknachricht eingeben möchten."
|
34 |
"You can leave this box blank if you do not wish to add a gift message for whole order.","Sie können dieses Feld leer lassen, wenn Sie für diese Bestellung keine Geschenknachricht eingeben möchten."
|
35 |
-
"Check this checkbox if you want to add gift messages to your items.","Setzen Sie hier einen Haken, wenn Sie für Ihre Artikel Geschenknachrichten eingeben möchten."
|
36 |
-
"Check this checkbox if you want to add gift messages.","Setzen Sie hier einen Haken, wenn Sie Geschenknachrichten eingeben möchten."
|
37 |
-
"Enter a gift message for each item in your order.","Geben Sie eine Geschenknachricht für jeden Artikel einzeln ein."
|
38 |
-
"Enter a gift message for entire order.","Geben Sie eine Geschenknachricht für die gesamte Bestellung ein."
|
39 |
-
"Enter a gift message for this address.","Geben Sie eine Geschenknachricht für diese Adresse ein"
|
40 |
-
"Gift Messages","Geschenknachrichten"
|
1 |
"Add","Hinzufügen"
|
2 |
+
"Add gift message for shopping cart","Neue Geschenknachricht für den Warenkorb"
|
3 |
+
"Add gift messages for quote item of shopping cart","Neue Geschenknachricht für Artikel im Warenkorb"
|
4 |
+
"Add gift messages to products of shopping cart","Neue Geschenknachricht für Artikel im Warenkorb"
|
5 |
+
"Add gift options","Neue Geschenknachricht"
|
6 |
+
"Add gift options for Individual Items","Neue Geschenknachricht für einzelne Artikel"
|
7 |
+
"Add gift options for the Entire Order","Neue Geschenknachricht für die gesamte Bestellung"
|
8 |
+
"Add gift options.","Neue Geschenknachricht."
|
9 |
"Allow Gift Messages for Order Items","Geschenknachricht für bestellte Artikel erlauben"
|
10 |
"Allow Gift Messages on Order Level","Geschenknachricht bei Bestellvorgang erlauben"
|
11 |
+
"An error occurred while saving the gift message.","Fehler beim Speichern der Geschenknachricht aufgetreten."
|
12 |
"Are you sure?","Sind Sie sicher?"
|
13 |
+
"Cancel","Abbrechen"
|
14 |
+
"Do you have any gift items in your order?","Sind in Ihrer Bestelung Geschenke enthalten?"
|
15 |
"Edit","Bearbeiten"
|
16 |
"From","Von"
|
17 |
"Gift Message","Geschenknachricht"
|
18 |
+
"Gift Message API","Geschenknachricht API"
|
19 |
+
"Gift Options","Geschenknachrichten"
|
20 |
+
"Gift Options for","Geschenknachricht für"
|
21 |
+
"Gift Options for Individual Items","Geschenknachricht für einzelne Artikel"
|
22 |
+
"Gift Options for the Entire Order.","Geschenknachricht für die gesamte Bestellung."
|
23 |
+
"Gift Options for this address.","Geschenknachricht für diese Adresse."
|
24 |
"Item %d of %d","Artikel %d von %d"
|
25 |
"Message","Nachricht"
|
26 |
"No","Nein"
|
28 |
"Save Gift Message","Geschenknachricht speichern"
|
29 |
"The gift message has been removed","Die Geschenknachricht wurde entfernt"
|
30 |
"The gift message has been saved","Die Geschenknachricht wurde gespeichert"
|
31 |
+
"The gift message has been saved.","Die Geschenknachricht wurde gespeichert."
|
32 |
"To","An"
|
33 |
+
"Unknown entity type","Unbekannter Entitätstyp"
|
34 |
"Use config","Konfiguration benutzen"
|
35 |
"Yes","Ja"
|
36 |
"You can leave this box blank if you do not wish to add a gift message for the item.","Sie können dieses Feld leer lassen, wenn Sie für diesen Artikel keine Geschenknachricht eingeben möchten."
|
37 |
"You can leave this box blank if you do not wish to add a gift message for this address.","Sie können dieses Feld leer lassen, wenn Sie für diese Adresse keine Geschenknachricht eingeben möchten."
|
38 |
"You can leave this box blank if you do not wish to add a gift message for whole order.","Sie können dieses Feld leer lassen, wenn Sie für diese Bestellung keine Geschenknachricht eingeben möchten."
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_GoogleBase.csv
CHANGED
@@ -1,10 +1,7 @@
|
|
1 |
-
"Account Login","Account Login"
|
2 |
-
"Account Password","Account Passwort"
|
3 |
-
"Account Type","Konto-Typ"
|
4 |
"Active","Aktiv"
|
5 |
"Add Attribute Mapping","Attributzuordnung hinzufügen"
|
6 |
"Add New Attribute","Neues Attribut hinzufügen"
|
7 |
-
"Add to Google Base","Zu Google
|
8 |
"Are you sure?","Sind Sie sicher?"
|
9 |
"Attribute","Attribut"
|
10 |
"Attribute Set","Attributset"
|
@@ -14,8 +11,7 @@
|
|
14 |
"Attributes Set","Attributset"
|
15 |
"AuthSub","AuthSub"
|
16 |
"Available Products","Verfügbare Artikel"
|
17 |
-
"
|
18 |
-
"Cannot update Google Base Item for Store '%s'","Google Base Artikel konnte nicht aktualisiert werden für den / die Store '%s'"
|
19 |
"Captcha confirmation error: %s","Captcha Bestätigungsfehler: %s"
|
20 |
"Captcha has been confirmed.","Captcha wurde bestätigt."
|
21 |
"Catalog","Katalog"
|
@@ -27,11 +23,9 @@
|
|
27 |
"Delete","Löschen"
|
28 |
"Delete Mapping","Zuordnung löschen"
|
29 |
"Edit Item Type","Artikeltyp ändern"
|
30 |
-
"Edit Item Type "%s"","Artikeltyp "%s" ändern"
|
31 |
"Error: %s","Fehler: %s"
|
32 |
-
"Euro","Euro"
|
33 |
"Expires","Läuft aus"
|
34 |
-
"Germany","Deutschland"
|
35 |
"Google","Google"
|
36 |
"Google Base","Google Merchant Center (GMC)"
|
37 |
"Google Base Attribute","GMC Attribut"
|
@@ -44,10 +38,10 @@
|
|
44 |
"Hosted","gehostet / verwaltet"
|
45 |
"Hosted or Google","gehostet oder Google"
|
46 |
"Impr.","Impr."
|
47 |
-
"Invalid Product Model for Google Base Item","Ungültiges Artikellmodell für Google
|
48 |
"Item Type was deleted","Artikeltyp wurde gelöscht"
|
49 |
"Item Types","Artikeltypen"
|
50 |
-
"Item model is not specified to delete Google Base entry.","
|
51 |
"Items","Artikel"
|
52 |
"Manage Attribute Mapping","Attributzuordnungen verwalten"
|
53 |
"Manage Attributes","Attribute verwalten"
|
@@ -57,17 +51,16 @@
|
|
57 |
"No","Nein"
|
58 |
"No items were deleted from Google Base","Keine Artikel wurden in Google Merchant Center gelöscht"
|
59 |
"No items were published","Keine Artikel wurden veröffentlicht"
|
60 |
-
"No items were saved as inactive items","
|
61 |
-
"No products were added to Google Base","
|
62 |
-
"Object model is not specified to save Google Base entry.","
|
63 |
-
"Page views","Seitenansichten"
|
64 |
"Please, select Attribute Set and Google Item Type to load attributes","Bitte wählen Sie ein Attributset und einen GMC Artikeltyp zum Laden der Attribute"
|
65 |
"Product Name","Artikelname"
|
66 |
"Publish","Veröffentlichen"
|
67 |
"Published","Veröffentlicht"
|
68 |
"Remove","Entfernen"
|
69 |
"Save Mapping","Zuordnung speichern"
|
70 |
-
"Session expired during export. Please revise exported products and repeat the process if necessary.","
|
71 |
"Synchronize","Synchronisieren"
|
72 |
"Target Country","Zielland"
|
73 |
"The item type has been saved.","Der Artikel wurde gespeichert."
|
@@ -77,19 +70,8 @@
|
|
77 |
"Total of %d items(s) have been removed from Google Base.","Insgesamt wurden %d Artikel von Google Merchant Center entfernt."
|
78 |
"Total of %d items(s) have been saved as inactive items.","Insgesamt wurden %d Artikel als inaktiv gespeichert."
|
79 |
"Total of %d product(s) have been added to Google Base.","%d Artikel wurden erfolgreich zu Google Merchant Center hinzugefügt"
|
80 |
-
"US Dollar","US Dollar"
|
81 |
"Unable to connect to Google Base. Please, check Account settings in configuration.","Fehler bei der Verbindung zu Google Merchant Center. Bitte prüfen Sie die Zugangsdaten in der Systemkonfiguration."
|
82 |
-
"Unable to select a Store View.","
|
83 |
-
"United Kingdom","Vereinigtes Königreich (UK)"
|
84 |
-
"United States","USA"
|
85 |
-
"Update Google Base Item when Product is Updated","Aktualisiere GMC Artikel, wenn Magento Artikel bearbeitet wird"
|
86 |
"View Available Products","Alle verfügbaren Artikel anzeigen"
|
87 |
"View Item in Google Base","Artikel in Google Merchant Center anzeigen"
|
88 |
"Yes","Ja"
|
89 |
-
"Attributes mapping","Attributzuordnung"
|
90 |
-
"Captcha confirmed successfully","Captcha erfolgreich bestätigt"
|
91 |
-
"Item model is not specified to delete Google Base entry","Artikelmodell wurde nicht zum Löschen von Google Merchant Center Einträgen bestimmt"
|
92 |
-
"No items were saved as Inactive items","Keine Artikel wurden als inaktive Artikel gespeichert"
|
93 |
-
"Object model is not specified to save Google Base entry","Objektmodell wurde nicht zum Speichern von Google Merchant Center Einträgen bestimmt"
|
94 |
-
"Session expired during export. Please, revise exported products and repeat a process if necessary","Sitzung des Export-Vorgangs abgelaufen. Bitte überprüfen Sie die exportierten Artikel und wiederholen Sie wenn nötig den Vorgang"
|
95 |
-
"Unable to select a Store View","Auswahl einer StoreView nicht möglich"
|
|
|
|
|
|
|
1 |
"Active","Aktiv"
|
2 |
"Add Attribute Mapping","Attributzuordnung hinzufügen"
|
3 |
"Add New Attribute","Neues Attribut hinzufügen"
|
4 |
+
"Add to Google Base","Zu Google Merchant Center hinzufügen"
|
5 |
"Are you sure?","Sind Sie sicher?"
|
6 |
"Attribute","Attribut"
|
7 |
"Attribute Set","Attributset"
|
11 |
"Attributes Set","Attributset"
|
12 |
"AuthSub","AuthSub"
|
13 |
"Available Products","Verfügbare Artikel"
|
14 |
+
"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","Basis-Währung sollte auf %s für %s in der Systemkonfiguration eingestellt werden."
|
|
|
15 |
"Captcha confirmation error: %s","Captcha Bestätigungsfehler: %s"
|
16 |
"Captcha has been confirmed.","Captcha wurde bestätigt."
|
17 |
"Catalog","Katalog"
|
23 |
"Delete","Löschen"
|
24 |
"Delete Mapping","Zuordnung löschen"
|
25 |
"Edit Item Type","Artikeltyp ändern"
|
26 |
+
"Edit Item Type ""%s""","Artikeltyp ""%s"" ändern"
|
27 |
"Error: %s","Fehler: %s"
|
|
|
28 |
"Expires","Läuft aus"
|
|
|
29 |
"Google","Google"
|
30 |
"Google Base","Google Merchant Center (GMC)"
|
31 |
"Google Base Attribute","GMC Attribut"
|
38 |
"Hosted","gehostet / verwaltet"
|
39 |
"Hosted or Google","gehostet oder Google"
|
40 |
"Impr.","Impr."
|
41 |
+
"Invalid Product Model for Google Base Item","Ungültiges Artikellmodell für Google Merchant Center Artikel"
|
42 |
"Item Type was deleted","Artikeltyp wurde gelöscht"
|
43 |
"Item Types","Artikeltypen"
|
44 |
+
"Item model is not specified to delete Google Base entry.","Artikel-Model kann Google Merchant Center Einträge nicht löschen."
|
45 |
"Items","Artikel"
|
46 |
"Manage Attribute Mapping","Attributzuordnungen verwalten"
|
47 |
"Manage Attributes","Attribute verwalten"
|
51 |
"No","Nein"
|
52 |
"No items were deleted from Google Base","Keine Artikel wurden in Google Merchant Center gelöscht"
|
53 |
"No items were published","Keine Artikel wurden veröffentlicht"
|
54 |
+
"No items were saved as inactive items","Keine Artikel wurden als inaktive Artikel gespeichert"
|
55 |
+
"No products were added to Google Base","Keine Artikel wurden zu Google Merchant Center hinzugefügt"
|
56 |
+
"Object model is not specified to save Google Base entry.","Objekt-Model kann Google Merchant Center Einträge nicht speichern."
|
|
|
57 |
"Please, select Attribute Set and Google Item Type to load attributes","Bitte wählen Sie ein Attributset und einen GMC Artikeltyp zum Laden der Attribute"
|
58 |
"Product Name","Artikelname"
|
59 |
"Publish","Veröffentlichen"
|
60 |
"Published","Veröffentlicht"
|
61 |
"Remove","Entfernen"
|
62 |
"Save Mapping","Zuordnung speichern"
|
63 |
+
"Session expired during export. Please revise exported products and repeat the process if necessary.","Sitzung während des Exports abgelaufen. Bitte prüfen Sie die exportierten Artikel und wiederholen Sie den Vorgang falls nötig."
|
64 |
"Synchronize","Synchronisieren"
|
65 |
"Target Country","Zielland"
|
66 |
"The item type has been saved.","Der Artikel wurde gespeichert."
|
70 |
"Total of %d items(s) have been removed from Google Base.","Insgesamt wurden %d Artikel von Google Merchant Center entfernt."
|
71 |
"Total of %d items(s) have been saved as inactive items.","Insgesamt wurden %d Artikel als inaktiv gespeichert."
|
72 |
"Total of %d product(s) have been added to Google Base.","%d Artikel wurden erfolgreich zu Google Merchant Center hinzugefügt"
|
|
|
73 |
"Unable to connect to Google Base. Please, check Account settings in configuration.","Fehler bei der Verbindung zu Google Merchant Center. Bitte prüfen Sie die Zugangsdaten in der Systemkonfiguration."
|
74 |
+
"Unable to select a Store View.","Store View konnte nicht ausgewählt werden."
|
|
|
|
|
|
|
75 |
"View Available Products","Alle verfügbaren Artikel anzeigen"
|
76 |
"View Item in Google Base","Artikel in Google Merchant Center anzeigen"
|
77 |
"Yes","Ja"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_GoogleCheckout.csv
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
"* Select shipping method","* Wählen Sie eine Versandart"
|
2 |
"<br />Warning: <strong>%s</strong><br />","<br />Warnung: <strong>%s</strong><br />"
|
3 |
-
"<strong style="color:red">Warning!</strong> This option disables the merchant calculated shipping. With this option, Google API ignores any attempt to affect shipping prices.","<strong style="color:red">
|
4 |
-
"A virtual item to reflect the discount total","Ein virtueller Artikel um den Rabatt abzubilden"
|
5 |
-
"A virtual item to reflect the tax total","Ein virtueller Artikel um die Gesamtsteuer abzubilden"
|
6 |
"AVS Status: %s","AVS Status: %s"
|
7 |
"Add","Hinzufügen"
|
8 |
-
"Add Shipping Method","Versandmethode
|
9 |
"Allowed Methods","Gültige Methoden"
|
10 |
"Amount: %s","Menge: %s"
|
11 |
"Auto-generated from GoogleCheckout Charge","Automatisch erzeugter GoogleCheckout-Betrag"
|
@@ -27,37 +27,37 @@
|
|
27 |
"Delivery Schedule","Lieferplanung"
|
28 |
"Disable Default Tax Tables","Standard Steuerntabelle deaktivieren"
|
29 |
"Discount Tax","Rabatt Steuern"
|
30 |
-
"Eligible for Protection: %s","
|
31 |
"Enable","Aktivieren"
|
32 |
"Enable Carrier Calculated","Kalkulation durch Versandunternehmen aktivieren"
|
33 |
"Enable Digital Delivery","Digitale Zustellung aktivieren"
|
34 |
"Enable Flat Rate","Festpreis aktivieren"
|
35 |
"Enable Merchant Calculated","Kalkulation durch Shopbetreiber aktivieren"
|
36 |
-
"Enable this if your checkout request is too big and being cut off.","Aktivieren Sie diese Option, wenn Ihre Anfrage zu lang und abgeschnitten wird."
|
37 |
"Expiration: %s","Verfallsdatum: %s"
|
38 |
"Financial: %s -> %s","Finanzen: %s -> %s"
|
39 |
"Free Shipping","Versandkostenfrei"
|
40 |
"Fulfillment: %s -> %s","Erfüllung: %s -> %s"
|
41 |
"Google API","Google API"
|
42 |
"Google Authorization:","Google Autorisation:"
|
43 |
-
"Google Buyer ID: %s","Google
|
44 |
"Google Charge:","Google Kosten:"
|
45 |
"Google Chargeback:","Google Ausgleichszahlung:"
|
46 |
-
"
|
47 |
-
"
|
48 |
-
"
|
49 |
-
"
|
50 |
-
"
|
51 |
-
"
|
52 |
"Google Order Number: %s","Google Bestellnummer: %s"
|
53 |
"Google Order Status Change:","Google Bestell Stausveränderung:"
|
54 |
"Google Refund:","Google Erstattung:"
|
55 |
"Google Risk Information:","Google Risiko Information:"
|
56 |
"Hide Cart Contents","Inhalt des Warenkorbs ausblenden"
|
57 |
"IP Address: %s","IP Adresse: %s"
|
58 |
-
"If enabled, cart contents will be hidden after clicking on the
|
59 |
-
"Invoice Auto-Created: %s","
|
60 |
-
"Is Buyer Willing to Receive Marketing Emails: %s","
|
61 |
"Large - %s","Groß - %s"
|
62 |
"Latest Charge: %s","Letzter Ausgleich: %s"
|
63 |
"Latest Chargeback: %s","Letzte Ausgleichsbuchung: %s"
|
@@ -83,11 +83,11 @@
|
|
83 |
"Rate 3 Ship to Specific Countries","Rate 3 Versand an bestimmte Länder"
|
84 |
"Rate 3 Title","Rate 3 Titel"
|
85 |
"Remove","Entfernen"
|
86 |
-
"Required for live
|
87 |
"Sandbox","Sandbox"
|
88 |
"Secure Callback URL","Sichere Callback URL"
|
89 |
"Small - %s","Klein - %s"
|
90 |
-
"The tax amount has been applied based on the information received from
|
91 |
"Title","Titel"
|
92 |
"Total Chargeback: %s","Gesamt Ausgleichsbuchung: %s"
|
93 |
"Total Charged: %s","Gesamtbelastung: %s"
|
@@ -96,9 +96,5 @@
|
|
96 |
"United Kingdom","Vereinigtes Königreich (UK)"
|
97 |
"United States","USA"
|
98 |
"White Background","Weißer Hintergrund"
|
99 |
-
"Yes","
|
100 |
"You will be redirected to GoogleCheckout in a few seconds.","Sie werden in wenigen Sekunden zu GoogleCheckout weitergeleitet."
|
101 |
-
"Eligible for protection: %s","Versicherungsberechtigt: %s"
|
102 |
-
"Google Buyer Id: %s","Google Käufer ID: %s"
|
103 |
-
"Invoice auto-created: %s","Rechnung automatisch erstellt: %s"
|
104 |
-
"Is Buyer Willing To Receive Marketing E-Mails: %s","Möchte der Kunde Werbemails erhalten: %s"
|
1 |
"* Select shipping method","* Wählen Sie eine Versandart"
|
2 |
"<br />Warning: <strong>%s</strong><br />","<br />Warnung: <strong>%s</strong><br />"
|
3 |
+
"<strong style=""color:red"">Warning!</strong> This option disables the merchant calculated shipping. With this option, Google API ignores any attempt to affect shipping prices.","<strong style=""color:red"">ACHTUNG!</strong> Diese Option deaktivert die Händler gesteuerte Versandkostenberechnung - Google API wird alle Angaben zu Versandkosten ignorieren."
|
4 |
+
"A virtual item to reflect the discount total","Ein virtueller Artikel, um den Rabatt abzubilden"
|
5 |
+
"A virtual item to reflect the tax total","Ein virtueller Artikel, um die Gesamtsteuer abzubilden"
|
6 |
"AVS Status: %s","AVS Status: %s"
|
7 |
"Add","Hinzufügen"
|
8 |
+
"Add Shipping Method","Neue Versandmethode"
|
9 |
"Allowed Methods","Gültige Methoden"
|
10 |
"Amount: %s","Menge: %s"
|
11 |
"Auto-generated from GoogleCheckout Charge","Automatisch erzeugter GoogleCheckout-Betrag"
|
27 |
"Delivery Schedule","Lieferplanung"
|
28 |
"Disable Default Tax Tables","Standard Steuerntabelle deaktivieren"
|
29 |
"Discount Tax","Rabatt Steuern"
|
30 |
+
"Eligible for Protection: %s","Verwendbar für Käuferschutz: %s"
|
31 |
"Enable","Aktivieren"
|
32 |
"Enable Carrier Calculated","Kalkulation durch Versandunternehmen aktivieren"
|
33 |
"Enable Digital Delivery","Digitale Zustellung aktivieren"
|
34 |
"Enable Flat Rate","Festpreis aktivieren"
|
35 |
"Enable Merchant Calculated","Kalkulation durch Shopbetreiber aktivieren"
|
36 |
+
"Enable this if your checkout request is too big and being cut off.","Aktivieren Sie diese Option, wenn Ihre Anfrage zu lang ist und abgeschnitten wird."
|
37 |
"Expiration: %s","Verfallsdatum: %s"
|
38 |
"Financial: %s -> %s","Finanzen: %s -> %s"
|
39 |
"Free Shipping","Versandkostenfrei"
|
40 |
"Fulfillment: %s -> %s","Erfüllung: %s -> %s"
|
41 |
"Google API","Google API"
|
42 |
"Google Authorization:","Google Autorisation:"
|
43 |
+
"Google Buyer ID: %s","Google Käufer-ID: %s"
|
44 |
"Google Charge:","Google Kosten:"
|
45 |
"Google Chargeback:","Google Ausgleichszahlung:"
|
46 |
+
"GoogleCheckout","GoogleCheckout"
|
47 |
+
"GoogleCheckout Shipping - Carrier Calculated","GoogleCheckout Versand - Vom Versender berechnet"
|
48 |
+
"GoogleCheckout Shipping - Digital Delivery","GoogleCheckout Versand - Digitale Zustellung"
|
49 |
+
"GoogleCheckout Shipping - Flat Rate","GoogleCheckout Versand - Festpreis"
|
50 |
+
"GoogleCheckout Shipping - Merchant Calculated","GoogleCheckout Versand - Vom Verkäufer berechnet"
|
51 |
+
"GoogleCheckout: %s","GoogleCheckout: %s"
|
52 |
"Google Order Number: %s","Google Bestellnummer: %s"
|
53 |
"Google Order Status Change:","Google Bestell Stausveränderung:"
|
54 |
"Google Refund:","Google Erstattung:"
|
55 |
"Google Risk Information:","Google Risiko Information:"
|
56 |
"Hide Cart Contents","Inhalt des Warenkorbs ausblenden"
|
57 |
"IP Address: %s","IP Adresse: %s"
|
58 |
+
"If enabled, cart contents will be hidden after clicking on the GoogleCheckout button in the shopping cart, and restored if ""Edit Cart"" link was activated.","Wenn diese Option aktiviert ist, werden die Warekorbdaten nach dem Klick auf den GoogleCheckout Button versteckt und nur wiederhergestellt, wenn Sie auf Warenkorb bearbeiten"" klicken."""
|
59 |
+
"Invoice Auto-Created: %s","automatisch erzeugte Rechnung: %s"
|
60 |
+
"Is Buyer Willing to Receive Marketing Emails: %s","Möchte der Käufer Werbenachrichten: %s"
|
61 |
"Large - %s","Groß - %s"
|
62 |
"Latest Charge: %s","Letzter Ausgleich: %s"
|
63 |
"Latest Chargeback: %s","Letzte Ausgleichsbuchung: %s"
|
83 |
"Rate 3 Ship to Specific Countries","Rate 3 Versand an bestimmte Länder"
|
84 |
"Rate 3 Title","Rate 3 Titel"
|
85 |
"Remove","Entfernen"
|
86 |
+
"Required for live GoogleCheckout transactions.","Wird für GoogleCheckout Transaktionen benötigt."
|
87 |
"Sandbox","Sandbox"
|
88 |
"Secure Callback URL","Sichere Callback URL"
|
89 |
"Small - %s","Klein - %s"
|
90 |
+
"The tax amount has been applied based on the information received from GoogleCheckout, because tax amount received from GoogleCheckout is different from the calculated tax amount","Steuern wurden basieren auf den Informationen im GoogleCheckout berechnet, da die übermittelte Steuer "
|
91 |
"Title","Titel"
|
92 |
"Total Chargeback: %s","Gesamt Ausgleichsbuchung: %s"
|
93 |
"Total Charged: %s","Gesamtbelastung: %s"
|
96 |
"United Kingdom","Vereinigtes Königreich (UK)"
|
97 |
"United States","USA"
|
98 |
"White Background","Weißer Hintergrund"
|
99 |
+
"Yes","Ja"
|
100 |
"You will be redirected to GoogleCheckout in a few seconds.","Sie werden in wenigen Sekunden zu GoogleCheckout weitergeleitet."
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_GoogleOptimizer.csv
CHANGED
@@ -11,22 +11,22 @@
|
|
11 |
"Google Optimizer Scripts","Google Optimizer Skripte"
|
12 |
"Google Website Optimizer","Google Website Optimizer"
|
13 |
"Install Scripts","Installiere Skripte"
|
14 |
-
"Multi Address Checkout","
|
15 |
-
"One Page Checkout","
|
16 |
-
"Order Success (Multi Address Checkout)","Bestellung abgeschlossen (
|
17 |
-
"Order Success (One Page Checkout)","Bestellung abgeschlossen (
|
18 |
"Original Page","Original Seite"
|
19 |
"Other","Andere"
|
20 |
"Page Type","Seitentyp"
|
21 |
-
"Page View Optimization","Page View
|
22 |
"Please copy and paste this value to experiment edit form","Bitte kopieren Sie diesen Wert in das Formular des Experiments"
|
23 |
-
"Please copy and paste this value to experiment edit form.","
|
24 |
"Please select store view to see the URL","Bitte wählen Sie eine StoreView aus, um die URL zu sehen."
|
25 |
"Please select store view to see the URL.","Bitte wählen Sie eine StoreView aus, um die URL zu sehen."
|
26 |
"Product View Optimization","Artikelansicht Optimierung"
|
27 |
"Scripts Install URL","Skripte Installation-URL"
|
28 |
"Shopping Cart","Warenkorb"
|
29 |
-
"The limit is 8 attributes only.","
|
30 |
"Tracking Script","Tracking Skript"
|
31 |
"Use Default","Standard benutzen"
|
32 |
"Use Default Values","Standardwerte benutzen"
|
11 |
"Google Optimizer Scripts","Google Optimizer Skripte"
|
12 |
"Google Website Optimizer","Google Website Optimizer"
|
13 |
"Install Scripts","Installiere Skripte"
|
14 |
+
"Multi Address Checkout","Zur Kasse mit mehreren Versandadressen"
|
15 |
+
"One Page Checkout","Einseitiger Bezahlvorgang"
|
16 |
+
"Order Success (Multi Address Checkout)","Bestellung abgeschlossen (Zur Kasse mit mehreren Versandadressen)"
|
17 |
+
"Order Success (One Page Checkout)","Bestellung abgeschlossen (Einseitiger Bezahlvorgang)"
|
18 |
"Original Page","Original Seite"
|
19 |
"Other","Andere"
|
20 |
"Page Type","Seitentyp"
|
21 |
+
"Page View Optimization","Page View Optimierung"
|
22 |
"Please copy and paste this value to experiment edit form","Bitte kopieren Sie diesen Wert in das Formular des Experiments"
|
23 |
+
"Please copy and paste this value to experiment edit form.","Bitte kopieren Sie diesen Wert in das Formular des Experiments."
|
24 |
"Please select store view to see the URL","Bitte wählen Sie eine StoreView aus, um die URL zu sehen."
|
25 |
"Please select store view to see the URL.","Bitte wählen Sie eine StoreView aus, um die URL zu sehen."
|
26 |
"Product View Optimization","Artikelansicht Optimierung"
|
27 |
"Scripts Install URL","Skripte Installation-URL"
|
28 |
"Shopping Cart","Warenkorb"
|
29 |
+
"The limit is 8 attributes only.","Maximal 8 Attribute."
|
30 |
"Tracking Script","Tracking Skript"
|
31 |
"Use Default","Standard benutzen"
|
32 |
"Use Default Values","Standardwerte benutzen"
|
app/locale/de_DE/Mage_ImportExport.csv
CHANGED
@@ -1,63 +1,63 @@
|
|
1 |
-
" in rows: "," in
|
2 |
-
"-- Please Select --","--
|
3 |
-
"Adapter must be an instance of Mage_ImportExport_Model_Import_Adapter_Abstract","Adapter
|
4 |
-
"Adapter type must be a non empty string","Adapter
|
5 |
-
"Can not determine attribute filter type","
|
6 |
-
"Can not find required columns: ","
|
7 |
-
"Can not get autoincrement value","
|
8 |
-
"Check Data","
|
9 |
-
"Column names
|
10 |
-
"Column names is empty or is not an array","
|
11 |
-
"Column names: ""%s"" are invalid","
|
12 |
-
"Continue","
|
13 |
-
"Data is invalid or file is not uploaded","
|
14 |
-
"Destination directory is not writable","
|
15 |
-
"Destination file is not writable","
|
16 |
-
"Destination file path must be a string","
|
17 |
-
"Entity Attributes","Entity
|
18 |
-
"Entity adapter object must be an instance of Mage_ImportExport_Model_Import_Entity_Abstract","Entity
|
19 |
-
"Entity is unknown","Entity
|
20 |
-
"Entity type model must be an instance of Mage_ImportExport_Model_Export_Entity_Product_Type_Abstract","Entity
|
21 |
-
"Entity type model must be an instance of Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract","Entity
|
22 |
-
"Error in data structure: behaviors are mixed","
|
23 |
-
"Error in data structure: entity codes are mixed","
|
24 |
"Export","Export"
|
25 |
"Export FAQ","Export FAQ"
|
26 |
"FAQ","FAQ"
|
27 |
-
"File does not contain data. Please upload another one","
|
28 |
-
"File format is unknown","
|
29 |
-
"File is partially valid, but import is not possible","
|
30 |
-
"File is totally invalid. Please fix errors and re-upload file","
|
31 |
-
"File is valid! To start import process press ""Import"" button","
|
32 |
-
"File is valid, but import is not possible","
|
33 |
-
"Header column names already set","
|
34 |
"Import","Import"
|
35 |
"Import / Export FAQ (Frequently Asked Questions)","Import / Export FAQ (Frequently Asked Questions)"
|
36 |
"Import FAQ","Import FAQ"
|
37 |
-
"Import successfully done.","Import
|
38 |
"Import/Export","Import/Export"
|
39 |
"In/Out","In/Out"
|
40 |
-
"Input entity code is not equal to entity adapter code","
|
41 |
-
"Invalid entity","
|
42 |
-
"Invalid file format","
|
43 |
-
"Invalid parameters","
|
44 |
-
"Invalid seek position","
|
45 |
-
"Invalid value for '%s'","
|
46 |
-
"No filter data provided","
|
47 |
-
"No source specified","
|
48 |
-
"No valid data sent","
|
49 |
-
"No writer specified","
|
50 |
-
"Node does not has model token tag","
|
51 |
-
"Not implemented yet","
|
52 |
-
"Please fix errors and re-upload file","
|
53 |
-
"Please fix errors and re-upload file or simply press ""Import"" button to skip rows with errors","
|
54 |
-
"Some other FAQ","
|
55 |
-
"Source file moving failed","
|
56 |
-
"Source file path must be a string","
|
57 |
-
"Source is not set","
|
58 |
"Status","Status"
|
59 |
-
"System busy","System
|
60 |
-
"There are no product types available for export","
|
61 |
-
"Total size of uploadable files must not exceed %s","
|
62 |
-
"Uploaded file has no extension","
|
63 |
-
"Validation Results","
|
1 |
+
-" in rows: "," in Zeilen: "
|
2 |
+
"-- Please Select --","-- Bitte w�hlen --"
|
3 |
+
"Adapter must be an instance of Mage_ImportExport_Model_Import_Adapter_Abstract","Adapter muss eine Instanz von Mage_ImportExport_Model_Import_Adapter_Abstract sein"
|
4 |
+
"Adapter type must be a non empty string","Adapter Art darf keine leere Zeichenfolge"
|
5 |
+
"Can not determine attribute filter type","Attribut-Filtertyp konnte nicht bestimmt werden."
|
6 |
+
"Can not find required columns: ","Erforderliche Spalte konnte nicht gefunden werden: "
|
7 |
+
"Can not get autoincrement value","Automatisch erh�hter Wert nicht erhalten"
|
8 |
+
"Check Data","Daten �berpr�fen"
|
9 |
+
"Column names have duplicates","Spaltennamen beinhalten Dubletten"
|
10 |
+
"Column names is empty or is not an array","Spaltennamen sind leer oder kein Array"
|
11 |
+
"Column names: ""%s"" are invalid","Spaltennamen: ""%s"" sind ung�ltig"
|
12 |
+
"Continue","Fortsetzen"
|
13 |
+
"Data is invalid or file is not uploaded","Daten sind ung�ltig oder Datei wurde nicht korrekt hochgeladen"
|
14 |
+
"Destination directory is not writable","Zielverzeichnis ist nicht beschreibbar"
|
15 |
+
"Destination file is not writable","Zieldatei ist nicht beschreibbar"
|
16 |
+
"Destination file path must be a string","Pfad der Zieldatei muss ein String sein"
|
17 |
+
"Entity Attributes","Entity-Attribute"
|
18 |
+
"Entity adapter object must be an instance of Mage_ImportExport_Model_Import_Entity_Abstract","Entity Adapter Objekt muss eine Instanz von Mage_ImportExport_Model_Import_Entity_Abstract sein"
|
19 |
+
"Entity is unknown","Entity ist unbekannt"
|
20 |
+
"Entity type model must be an instance of Mage_ImportExport_Model_Export_Entity_Product_Type_Abstract","Entity Typ Model muss eine Instanz von Mage_ImportExport_Model_Export_Entity_Product_Type_Abstract sein"
|
21 |
+
"Entity type model must be an instance of Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract","Entity Typ Model muss eine Instnaz von Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract sein"
|
22 |
+
"Error in data structure: behaviors are mixed","Fehler in der Datenstruktur: Verhalten sind nicht einheitlich"
|
23 |
+
"Error in data structure: entity codes are mixed","Fehler in der Datenstruktur: Entity Codes sind nicht einheitlich"
|
24 |
"Export","Export"
|
25 |
"Export FAQ","Export FAQ"
|
26 |
"FAQ","FAQ"
|
27 |
+
"File does not contain data. Please upload another one","Datei enth�lt keine Daten. Bitte laden Sie eine andere Datei hoch"
|
28 |
+
"File format is unknown","Dateiformat ist unbekannt"
|
29 |
+
"File is partially valid, but import is not possible","Datei ist teilweise g�ltig, aber ein Import ist nicht m�glich"
|
30 |
+
"File is totally invalid. Please fix errors and re-upload file","Datei ist komplett ung�ltig. Bitte beheben Sie die Fehler und laden die Datei noch einmal hoch"
|
31 |
+
"File is valid! To start import process press ""Import"" button","Datei ist g�ltig! Um den Import zu starten, klicken Sie auf ""Import"""
|
32 |
+
"File is valid, but import is not possible","Datei ist g�ltig, aber ein Import nicht m�glich"
|
33 |
+
"Header column names already set","Spalten�berschriften wurden bereits angegeben"
|
34 |
"Import","Import"
|
35 |
"Import / Export FAQ (Frequently Asked Questions)","Import / Export FAQ (Frequently Asked Questions)"
|
36 |
"Import FAQ","Import FAQ"
|
37 |
+
"Import successfully done.","Import erfolgreich abgeschlossen."
|
38 |
"Import/Export","Import/Export"
|
39 |
"In/Out","In/Out"
|
40 |
+
"Input entity code is not equal to entity adapter code","Eingabe Entity Code entspricht nicht Entity Adapter Code"
|
41 |
+
"Invalid entity","Ung�ltige Entity"
|
42 |
+
"Invalid file format","Ung�ltiges Dateiformat"
|
43 |
+
"Invalid parameters","Ung�ltige Parameter"
|
44 |
+
"Invalid seek position","Ung�ltige Leseposition"
|
45 |
+
"Invalid value for '%s'","Ung�ltiger Wert f�r '%s'"
|
46 |
+
"No filter data provided","Keine Filterdaten geliefert"
|
47 |
+
"No source specified","Keine Quelle definiert"
|
48 |
+
"No valid data sent","Keine g�ltigen Daten gesendet"
|
49 |
+
"No writer specified","Kein Speicher-Adapter definiert"
|
50 |
+
"Node does not has model token tag","Knoten hat kein Model Token Tag"
|
51 |
+
"Not implemented yet","Noch nicht implementiert"
|
52 |
+
"Please fix errors and re-upload file","Bitte Fehler beheben und Datei erneut hochladen"
|
53 |
+
"Please fix errors and re-upload file or simply press ""Import"" button to skip rows with errors","Bitte beheben Sie die aufgef�hrten Fehler oder klicken Sie auf ""Import"", um den Import ohne die fehlerhaften Datens�tze durchzuf�hren"
|
54 |
+
"Some other FAQ","Noch eine weitere FAQ"
|
55 |
+
"Source file moving failed","Quelldatei konnte nicht verschoben werden"
|
56 |
+
"Source file path must be a string","Quelldatei-Pfad muss eine Zeichenfolge sein"
|
57 |
+
"Source is not set","Quelle noch nicht gesetzt"
|
58 |
"Status","Status"
|
59 |
+
"System busy","System besch�ftigt"
|
60 |
+
"There are no product types available for export","F�r den Export stehen keine Artikelarten zur Verf�gung"
|
61 |
+
"Total size of uploadable files must not exceed %s","Die Gesamtgr��e der hochzuladenden Datei darf %s nicht �berschreiten"
|
62 |
+
"Uploaded file has no extension","Hochgeladene Datei hat keine Dateierweiterung"
|
63 |
+
"Validation Results","Ergebnis der �berpr�fung"
|
app/locale/de_DE/Mage_Index.csv
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
-
"%s Index process is working now. Please try run this process later.","%s
|
2 |
-
"%s index was rebuilt.","%s
|
3 |
-
"'%s' Index Process Information","'%s' Index
|
4 |
"Action","Aktion"
|
5 |
-
"Cannot initialize the indexer process.","Indexer
|
6 |
"Change Index Mode","Index-Modus wechseln"
|
7 |
"Click here to go to <a href=""%s"">Cache Management</a> and refresh cache types.","Klicken Sie hier für <a href=""%s"">Cache-Verwaltung</a> um die verschiedenen Caches zu aktualisieren."
|
8 |
-
"Click here to go to <a href=""%s"">Index Management</a> and rebuild required indexes.","Klicken Sie hier für <a href=""%s"">Index-Verwaltung</a> und bauen Sie benötigte
|
9 |
"Description","Beschreibung"
|
10 |
"Disable","Deaktivieren"
|
11 |
"Enable","Aktivieren"
|
12 |
-
"General","
|
13 |
"Index","Index"
|
14 |
"Index Description","Index-Beschreibung"
|
15 |
"Index Management","Index-Verwaltung"
|
@@ -23,21 +23,21 @@
|
|
23 |
"Manual Update","Manuelles Update"
|
24 |
"Mode","Modus"
|
25 |
"Never","Nie"
|
26 |
-
"One or more of the Indexes are not up to date:","Ein Index bzw. mehrere
|
27 |
"Pending Events","Ausstehende Ereignisse"
|
28 |
-
"Please select Index(es)","Bitte
|
29 |
-
"Please select Indexes","Bitte
|
30 |
-
"Process Information","
|
31 |
"Processing","Verarbeitung"
|
32 |
-
"Ready","
|
33 |
"Refresh","Aktualisieren"
|
34 |
"Reindex Data","Neuaufbau"
|
35 |
-
"Reindex Required","Neuaufbau
|
36 |
"Status","Status"
|
37 |
"System","System"
|
38 |
"The index has been saved.","Der Index wurde gespeichert."
|
39 |
-
"There was a problem with reindexing process.","Fehler beim Neuindizieren
|
40 |
-
"There was a problem with saving process.","Fehler beim
|
41 |
"Total of %d index(es) have changed index mode.","Insgesamt haben %d Indizes den Index-Modus gewechselt."
|
42 |
-
"Total of %d index(es) have reindexed data.","%d
|
43 |
-
"Update on Save","Update beim
|
1 |
+
"%s Index process is working now. Please try run this process later."," Indizierung für %s dauert an. Bitte versuchen Sie diesen Prozess später noch einmal zu starten."
|
2 |
+
"%s index was rebuilt.","Index für %s neu aufgebaut."
|
3 |
+
"'%s' Index Process Information","'%s' Index Prozessinformation"
|
4 |
"Action","Aktion"
|
5 |
+
"Cannot initialize the indexer process.","Indexer kann nicht gestartet werden."
|
6 |
"Change Index Mode","Index-Modus wechseln"
|
7 |
"Click here to go to <a href=""%s"">Cache Management</a> and refresh cache types.","Klicken Sie hier für <a href=""%s"">Cache-Verwaltung</a> um die verschiedenen Caches zu aktualisieren."
|
8 |
+
"Click here to go to <a href=""%s"">Index Management</a> and rebuild required indexes.","Klicken Sie hier für <a href=""%s"">Index-Verwaltung</a> und bauen Sie benötigte Indizes neu auf."
|
9 |
"Description","Beschreibung"
|
10 |
"Disable","Deaktivieren"
|
11 |
"Enable","Aktivieren"
|
12 |
+
"General","Allgemein"
|
13 |
"Index","Index"
|
14 |
"Index Description","Index-Beschreibung"
|
15 |
"Index Management","Index-Verwaltung"
|
23 |
"Manual Update","Manuelles Update"
|
24 |
"Mode","Modus"
|
25 |
"Never","Nie"
|
26 |
+
"One or more of the Indexes are not up to date:","Ein Index bzw. mehrere Indizes sind nicht aktuell:"
|
27 |
"Pending Events","Ausstehende Ereignisse"
|
28 |
+
"Please select Index(es)","Bitte Indizes auswählen"
|
29 |
+
"Please select Indexes","Bitte Indizes auswählen"
|
30 |
+
"Process Information","Prozessinformation"
|
31 |
"Processing","Verarbeitung"
|
32 |
+
"Ready","Aktuell"
|
33 |
"Refresh","Aktualisieren"
|
34 |
"Reindex Data","Neuaufbau"
|
35 |
+
"Reindex Required","Neuaufbau erforderlich"
|
36 |
"Status","Status"
|
37 |
"System","System"
|
38 |
"The index has been saved.","Der Index wurde gespeichert."
|
39 |
+
"There was a problem with reindexing process.","Fehler beim Neuindizieren."
|
40 |
+
"There was a problem with saving process.","Fehler beim Speichern."
|
41 |
"Total of %d index(es) have changed index mode.","Insgesamt haben %d Indizes den Index-Modus gewechselt."
|
42 |
+
"Total of %d index(es) have reindexed data.","%d Indizes neu aufgebaut."
|
43 |
+
"Update on Save","Update beim Speichern"
|
app/locale/de_DE/Mage_Install.csv
CHANGED
@@ -1,16 +1,16 @@
|
|
1 |
"(Make sure you keep it in a safe place.)","(Bewahren Sie ihn an einem sicheren Platz auf.)"
|
2 |
-
"(Optional. Leave blank for no prefix)","(
|
3 |
"(ver. %s)","(Version %s)"
|
4 |
-
"Additional path added after Base URL to access your Administrative Panel (e.g. admin, backend, control etc.).","Zusätzlicher Pfad nach der Basis-URL um auf Ihren Administrationsbereich zuzugreifen (z.B.
|
5 |
"Admin Path","Admin Pfad"
|
6 |
"After successfull installation please click the button below.","Nach erfolgreicher Installation klicken Sie bitte den folgenden Button."
|
7 |
-
"All packages were installed, click 'OK' to continue with installation.","
|
8 |
"Alternatively you could try the 'Manual Downloads and Upgrades' method.","Alternativ können Sie auch die Methode 'Manuelle Downloads und Upgrades' versuchen."
|
9 |
"Base URL","Basis-URL"
|
10 |
-
"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Bevor Sie sich zum Shop begeben, notieren Sie sich bitte
|
11 |
"Check out our","Lesen Sie hierzu unsere"
|
12 |
-
"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","
|
13 |
-
"Check this box only if it is not possible to automatically validate the Base URL.","
|
14 |
"Choose this if you would like to test frontend and backend functionality.","Wählen Sie diese Option, wenn Sie die Shop- und Administrationsoberfläche testen möchten."
|
15 |
"Configuration","Konfiguration"
|
16 |
"Confirm Password","Passwort bestätigen"
|
@@ -24,39 +24,39 @@
|
|
24 |
"Database Connection","Datenbankverbindung"
|
25 |
"Database Name","Datenbankname"
|
26 |
"Database Name cannot be empty.","Datenbankname darf nicht leer sein."
|
27 |
-
"Database
|
|
|
28 |
"Database host","Datenbankserver"
|
29 |
-
"Database server does not support the InnoDB storage engine.","Datenbank Server unterstützt nicht die InnoDB Speicher Engine."
|
30 |
"Database user name","Datenbank-Benutzername"
|
31 |
"Database user password","Datenbank-Benutzerpasswort"
|
32 |
"Default Currency","Standardwährung"
|
33 |
"Download","Herunterladen"
|
34 |
"Download Magento Core Modules and Updates","Herunterladen von Magento Core Modulen und Updates"
|
35 |
-
"Downloading and installing Magento, please wait...","
|
36 |
"Email","E-Mail"
|
37 |
-
"Email Address","E-Mail
|
38 |
-
"Enable Charts","
|
39 |
-
"Enable this option if you want the charts to be displayed on Dashboard.","Aktivieren Sie diese Option wenn Sie
|
40 |
-
"Enable this option only if you have SSL available.","Aktivieren Sie diese Option nur wenn Sie über ein gültiges SSL Zertifikat verfügen."
|
41 |
-
"Encryption Key","
|
42 |
"File System","Dateisystem"
|
43 |
"First Name","Vorname"
|
44 |
-
"Full Download / SVN Installation","Vollständige Installation
|
45 |
-
"Get ready to experience Open-Source eCommerce Evolved.","Machen Sie sich bereit Open-Source eCommerce zu erleben."
|
46 |
-
"Go to Backend","
|
47 |
-
"Go to Frontend","
|
48 |
"Having trouble installing Magento?","Haben Sie Probleme bei der Installation von Magento?"
|
49 |
-
"Help Us to Keep Magento Healthy","Helfen Sie uns, Magento
|
50 |
"Host","Server"
|
51 |
"I agree to the above terms and conditions.","Ich akzeptiere die Bedingungen."
|
52 |
-
"If you are a developer and would like to have the latest public updates, choose this option.","Sind Sie Entwickler und möchten stets die aktuellsten öffentlichen Updates, aktivieren Sie bitte diese Option."
|
53 |
"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Sollten Sie PHP als CGI-Wrapper laufen lassen, ist es möglich, dass Ihre PHP-Skripte mit dem gleichen Benutzer laufen, mit dem Sie auch die Magento-Dateien hochgeladen haben."
|
54 |
-
"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","
|
55 |
"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Wenn Sie nicht möchten, dass die Magento-Ordner durch den Webserver-Prozess beschreibbar sind oder wenn Sie diese Einstellung nicht ändern können, können Sie das ausführbare PEAR im Hauptordner der Magentoinstallation benutzen."
|
56 |
"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","Wenn Sie die vollständigen Pakete heruntergeladen haben oder Magento via SVN installieren, sollten Sie die Paketüberprüfung und -installation überspringen, indem Sie auf den folgenden Button klicken."
|
57 |
-
"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","Wenn Sie die Magentopakete
|
58 |
"If your server is running on MS Windows, most probably you will not need to change anything.","Wenn Ihr Server unter Microsoft Windows läuft, müssen Sie normalerweise keine Änderungen vornehmen."
|
59 |
-
"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","In allen anderen Fällen müssen Sie die Magento-Dateien für den Benutzer beschreibbar machen, unter
|
60 |
"Installation","Installation"
|
61 |
"Installation Guide","Installationsanleitung"
|
62 |
"Last Name","Nachname"
|
@@ -71,21 +71,22 @@
|
|
71 |
"Magento is a trademark of Magento Inc. Copyright © %s Magento Inc.","Magento ist eine Handelsmarke der Magento Inc. Copyright © %s Magento Inc."
|
72 |
"Magento uses this key to encrypt passwords, credit cards and more. If this field is left empty the system will create an encryption key for you and will display it on the next page.","Magento benutzt diesen Schlüssel, um Passwörter, Kreditkartendaten und mehr zu verschlüsseln. Wenn dieses Feld leer bleibt, erstellt das System automatisch eine entsprechende Zeichenfolge und teilt Ihnen diese auf der folgenden Seite mit."
|
73 |
"Manual Downloads and Upgrades","Manuelle Downloads und Upgrades"
|
74 |
-
"
|
|
|
75 |
"PHP Extension '%s' loaded","PHP-Erweiterung '%s' geladen"
|
76 |
-
"PHP extension "%s" must be loaded.","PHP-Erweiterung "%s"
|
77 |
"Package Management through the Web","Paketverwaltung über die Administrationsoberfläche"
|
78 |
"Password","Passwort"
|
79 |
"Password Confirmation","Passwortbestätigung"
|
80 |
-
"Path "%s" must be writable.","Pfad "%s" muss beschreibbar sein."
|
81 |
"Personal Information","Persönliche Information"
|
82 |
"Please correct the user data and try again.","Bitte korrigieren Sie die Nutzerdaten und versuchen es erneut."
|
83 |
"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Bitte stellen Sie sicher, dass <code>mod_rewrite</code> in der Apache-Konfiguration aktiviert wurde."
|
84 |
-
"Please note that it is much less stable than beta.","Bitte beachten Sie, dass dies
|
85 |
-
"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%s' option.","
|
86 |
-
"Please set all required settings before clicking Continue","Bitte stellen Sie sicher, dass Sie alle benötigten Felder ausgefüllt haben bevor Sie fortfahren"
|
87 |
"Preferred stability: %s","Gewünschte Stabilität: %s"
|
88 |
-
"Proceed With Automatic Download (%s)","Mit
|
89 |
"Provide a complete base URL for SSL connection. For example: %s","Bitte geben Sie für eine SSL-Verbindung den vollständigen Basis-URL an (beispielsweise: %s)."
|
90 |
"Report All Bugs","Melden Sie alle Fehler"
|
91 |
"Required Fields","Pflichtfelder"
|
@@ -94,19 +95,17 @@
|
|
94 |
"Run this in your shell from Magento root folder:","Geben Sie folgendes in Ihrem Shellzugang im Hauptverzeichnis von Magento ein:"
|
95 |
"Save Session Data In","Speichern der Sitzungsdaten in"
|
96 |
"Save Session Files In","Speichern der Sitzungsdateien in"
|
97 |
-
"Secure Base URL","Basis-URL für
|
98 |
"Session Storage Options","Optionen für Sitzungsspeicherung"
|
99 |
-
"Setting preferred state to: %s","
|
100 |
-
"Skip Base URL Validation Before the Next Step","
|
101 |
-
"Skip Secure URL validation before next step","Überspringe Überprüfung der
|
102 |
"Tables Prefix","Tabellen-Präfix"
|
103 |
-
"The URL "%s" is invalid.","Die URL "%s" ist ungültig."
|
104 |
-
"The URL "%s" is not accessible.","Die URL "%s" ist nicht zugänglich."
|
105 |
-
"
|
106 |
-
"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_), the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_), the first character should be a letter."
|
107 |
-
"There was a problem installing Magento packages. Please read the log, correct errors and try again.","There was a problem installing Magento packages. Please read the log, correct errors and try again."
|
108 |
"Time Zone","Zeitzone"
|
109 |
-
"Use Secure URLs (SSL)","Verwende
|
110 |
"Use Web Server (Apache) Rewrites","Verwende Web Server (Apache) Rewrites"
|
111 |
"User Name","Benutzername"
|
112 |
"User Password","Benutzerpasswort"
|
@@ -117,16 +116,5 @@
|
|
117 |
"Welcome to Magento's Installation Wizard","Willkommen zum Installationsassistenten für Magento"
|
118 |
"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","Sie können einen Serverport angeben, bspw.: localhost:3307<br />Wenn Sie nicht den Standard UNIX socket verwenden, können Sie dies hier angeben, bspw.: /var/run/mysqld/mysqld.sock"
|
119 |
"You could enable this option to use web server rewrites functionality for improved search engines optimization.","Sie können für eine verbesserte Suchmaschinenunterstützung die folgende Option für serverseitige URL-Rewrites aktivieren."
|
120 |
-
"You're All Set","
|
121 |
"You're All Set!","Das war es schon, alles eingerichtet!"
|
122 |
-
"All packages were installed successfully, click 'Ok' to continue with installation","Alle Pakete wurden erfolgreich installiert, klicken Sie bitte 'OK', um mit der Installation fortzufahren"
|
123 |
-
"Database server does not support InnoDB storage engine","Datenbankserver unterstützt InnoDB-Storage-Engine nicht"
|
124 |
-
"I agree to the above terms and conditions","Ich stimme den oben genannten Bedingungen zu"
|
125 |
-
"If you are running install wizard over previously downloaded and installed Magento installation, proceed with this method.","Wenn Sie den Installationsassistenten verwenden, um über eine bestehende Version zu installieren, fahren Sie bitte mit dieser Methode fort."
|
126 |
-
"Magento is a trademark of Irubin Consulting Inc. DBA Varien. Copyright © %s Irubin Consulting Inc.","Magento ist eine Handelsmarke der Irubin Consulting Inc. DBA Varien. Copyright © %s Irubin Consulting Inc."
|
127 |
-
"Path "%s" must be writable","Verzeichnis "%s" muß beschreibbar sein"
|
128 |
-
"Please correct user data and try again.","Bitte Nutzerdaten korrigieren und erneut versuchen."
|
129 |
-
"Please note that only UNIX, Linux and Mac OSX shells are currently supported. For Windows use the '%s' option.","Bitte beachten Sie, dass ausschließlich Unix, Linux und Mac OS X Shells unterstützt werden. In Windows benutzen Sie bitte die '%s' Option."
|
130 |
-
"Skip Base URL Validation Before Next Step","Überspringe Überprüfung der Basis-URL vor dem nächsten Schritt"
|
131 |
-
"The table prefix should contain only letters (a-z), numbers (0-9) or underscore(_), the first character should be a letter","Das Tabellen-Präfix sollte nur Buchstaben (a-z), Ziffern (0-9) oder den Unterstricht (_) enthalten. Das erste Zeichen sollte eine Buchstabe sein."
|
132 |
-
"There was a problem installing Magento packages. Please read the log, correct errors and retry again.","Bei der Installation der Magentopakete trat ein Fehler auf. Bitte lesen Sie das Protokoll, korrigieren Sie etwaige Fehler und versuchen Sie es erneut."
|
1 |
"(Make sure you keep it in a safe place.)","(Bewahren Sie ihn an einem sicheren Platz auf.)"
|
2 |
+
"(Optional. Leave blank for no prefix)","(Optional - freilassen, um ohne Präfix zu installieren)"
|
3 |
"(ver. %s)","(Version %s)"
|
4 |
+
"Additional path added after Base URL to access your Administrative Panel (e.g. admin, backend, control etc.).","Zusätzlicher Pfad nach der Basis-URL, um auf Ihren Administrationsbereich zuzugreifen (z.B. backend, control etc.)."
|
5 |
"Admin Path","Admin Pfad"
|
6 |
"After successfull installation please click the button below.","Nach erfolgreicher Installation klicken Sie bitte den folgenden Button."
|
7 |
+
"All packages were installed, click 'OK' to continue with installation.","Alle Pakete wurden installiert, klicken Sie auf 'OK', um mit der Installation fortzufahren."
|
8 |
"Alternatively you could try the 'Manual Downloads and Upgrades' method.","Alternativ können Sie auch die Methode 'Manuelle Downloads und Upgrades' versuchen."
|
9 |
"Base URL","Basis-URL"
|
10 |
+
"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Bevor Sie sich zum Shop begeben, notieren Sie sich bitte Ihr Verschlüsselungpasswort (Magento nutzt diesen Schlüssel, um Passwörter, Kreditkartendaten etc. zu verschlüsseln)."
|
11 |
"Check out our","Lesen Sie hierzu unsere"
|
12 |
+
"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Aktivieren Sie diese Option, falls bei der Überprüfung der sicheren Verbindung Probleme auftraten. Zum Beispiel wenn eine HTTP-Authentifikation notwendig sein sollte."
|
13 |
+
"Check this box only if it is not possible to automatically validate the Base URL.","Aktivieren Sie diese Option nur, wenn die Basis-URL nicht automatisch überprüft werden kann."
|
14 |
"Choose this if you would like to test frontend and backend functionality.","Wählen Sie diese Option, wenn Sie die Shop- und Administrationsoberfläche testen möchten."
|
15 |
"Configuration","Konfiguration"
|
16 |
"Confirm Password","Passwort bestätigen"
|
24 |
"Database Connection","Datenbankverbindung"
|
25 |
"Database Name","Datenbankname"
|
26 |
"Database Name cannot be empty.","Datenbankname darf nicht leer sein."
|
27 |
+
"Database Type","Datenbank Art"
|
28 |
+
"Database connection error.","Datenbank Verbindungsfehler."
|
29 |
"Database host","Datenbankserver"
|
|
|
30 |
"Database user name","Datenbank-Benutzername"
|
31 |
"Database user password","Datenbank-Benutzerpasswort"
|
32 |
"Default Currency","Standardwährung"
|
33 |
"Download","Herunterladen"
|
34 |
"Download Magento Core Modules and Updates","Herunterladen von Magento Core Modulen und Updates"
|
35 |
+
"Downloading and installing Magento, please wait...","Magento wird heruntergeladen und installiert, bitte warten..."
|
36 |
"Email","E-Mail"
|
37 |
+
"Email Address","E-Mail-Adresse"
|
38 |
+
"Enable Charts","Grafische Auswertung aktivieren"
|
39 |
+
"Enable this option if you want the charts to be displayed on Dashboard.","Aktivieren Sie diese Option, wenn Sie eine grafische Auswertung der Verkaufszahlen auf Ihrer Übersichtsseite anzeigen möchten."
|
40 |
+
"Enable this option only if you have SSL available.","Aktivieren Sie diese Option nur, wenn Sie über ein gültiges SSL Zertifikat verfügen."
|
41 |
+
"Encryption Key","Verschlüsselungpasswort"
|
42 |
"File System","Dateisystem"
|
43 |
"First Name","Vorname"
|
44 |
+
"Full Download / SVN Installation","Vollständige Installation/SVN Installation"
|
45 |
+
"Get ready to experience Open-Source eCommerce Evolved.","Machen Sie sich bereit, Open-Source eCommerce zu erleben."
|
46 |
+
"Go to Backend","Zum AdminPanel"
|
47 |
+
"Go to Frontend","Zum Shop"
|
48 |
"Having trouble installing Magento?","Haben Sie Probleme bei der Installation von Magento?"
|
49 |
+
"Help Us to Keep Magento Healthy","Helfen Sie uns, Magento besser zu machen"
|
50 |
"Host","Server"
|
51 |
"I agree to the above terms and conditions.","Ich akzeptiere die Bedingungen."
|
52 |
+
"If you are a developer and would like to have the latest public updates, choose this option.","Sind Sie Entwickler und möchten stets die aktuellsten, öffentlichen Updates erhalten, aktivieren Sie bitte diese Option."
|
53 |
"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Sollten Sie PHP als CGI-Wrapper laufen lassen, ist es möglich, dass Ihre PHP-Skripte mit dem gleichen Benutzer laufen, mit dem Sie auch die Magento-Dateien hochgeladen haben."
|
54 |
+
"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","Sollten Sie die Installation über eine bestehende Magento-Instanz bevorzugen, wählen Sie bitte diese Option."
|
55 |
"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Wenn Sie nicht möchten, dass die Magento-Ordner durch den Webserver-Prozess beschreibbar sind oder wenn Sie diese Einstellung nicht ändern können, können Sie das ausführbare PEAR im Hauptordner der Magentoinstallation benutzen."
|
56 |
"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","Wenn Sie die vollständigen Pakete heruntergeladen haben oder Magento via SVN installieren, sollten Sie die Paketüberprüfung und -installation überspringen, indem Sie auf den folgenden Button klicken."
|
57 |
+
"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","Wenn Sie die Magentopakete über die Administrationsoberfläche selbst verwalten möchten, müssen alle Magento-Ordner und -Dateien durch den Webserver-Prozess beschreibbar sein."
|
58 |
"If your server is running on MS Windows, most probably you will not need to change anything.","Wenn Ihr Server unter Microsoft Windows läuft, müssen Sie normalerweise keine Änderungen vornehmen."
|
59 |
+
"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","In allen anderen Fällen müssen Sie die Magento-Dateien für den Benutzer beschreibbar machen, unter welchem der Webserver betrieben wird."
|
60 |
"Installation","Installation"
|
61 |
"Installation Guide","Installationsanleitung"
|
62 |
"Last Name","Nachname"
|
71 |
"Magento is a trademark of Magento Inc. Copyright © %s Magento Inc.","Magento ist eine Handelsmarke der Magento Inc. Copyright © %s Magento Inc."
|
72 |
"Magento uses this key to encrypt passwords, credit cards and more. If this field is left empty the system will create an encryption key for you and will display it on the next page.","Magento benutzt diesen Schlüssel, um Passwörter, Kreditkartendaten und mehr zu verschlüsseln. Wenn dieses Feld leer bleibt, erstellt das System automatisch eine entsprechende Zeichenfolge und teilt Ihnen diese auf der folgenden Seite mit."
|
73 |
"Manual Downloads and Upgrades","Manuelle Downloads und Upgrades"
|
74 |
+
"No resource for %s DB model.","Keine Ressource für %s DB Model."
|
75 |
+
"One of PHP Extensions ""%s"" must be loaded.","Eine dieser PHP-Erweiterungen ""%s"" muss geladen sein."
|
76 |
"PHP Extension '%s' loaded","PHP-Erweiterung '%s' geladen"
|
77 |
+
"PHP extension ""%s"" must be loaded.","PHP-Erweiterung ""%s"" muss geladen sein."
|
78 |
"Package Management through the Web","Paketverwaltung über die Administrationsoberfläche"
|
79 |
"Password","Passwort"
|
80 |
"Password Confirmation","Passwortbestätigung"
|
81 |
+
"Path ""%s"" must be writable.","Pfad ""%s"" muss beschreibbar sein."
|
82 |
"Personal Information","Persönliche Information"
|
83 |
"Please correct the user data and try again.","Bitte korrigieren Sie die Nutzerdaten und versuchen es erneut."
|
84 |
"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Bitte stellen Sie sicher, dass <code>mod_rewrite</code> in der Apache-Konfiguration aktiviert wurde."
|
85 |
+
"Please note that it is much less stable than beta.","Bitte beachten Sie, dass dies noch nicht ausreichend stabil funktioniert."
|
86 |
+
"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%s' option.","Bitte beachten Sie, dass aktuell ausschließlich UNIX, Linux und Mac OS X Shells unterstützt werden. Für Windows verwenden Sie bitte die '%s' Option."
|
87 |
+
"Please set all required settings before clicking Continue","Bitte stellen Sie sicher, dass Sie alle benötigten Felder ausgefüllt haben, bevor Sie fortfahren"
|
88 |
"Preferred stability: %s","Gewünschte Stabilität: %s"
|
89 |
+
"Proceed With Automatic Download (%s)","Mit automatischem Download fortfahren (%s)"
|
90 |
"Provide a complete base URL for SSL connection. For example: %s","Bitte geben Sie für eine SSL-Verbindung den vollständigen Basis-URL an (beispielsweise: %s)."
|
91 |
"Report All Bugs","Melden Sie alle Fehler"
|
92 |
"Required Fields","Pflichtfelder"
|
95 |
"Run this in your shell from Magento root folder:","Geben Sie folgendes in Ihrem Shellzugang im Hauptverzeichnis von Magento ein:"
|
96 |
"Save Session Data In","Speichern der Sitzungsdaten in"
|
97 |
"Save Session Files In","Speichern der Sitzungsdateien in"
|
98 |
+
"Secure Base URL","Basis-URL für verschlüsselte Verbindung"
|
99 |
"Session Storage Options","Optionen für Sitzungsspeicherung"
|
100 |
+
"Setting preferred state to: %s","Gewünschte Stabilität auf %s gesetzt."
|
101 |
+
"Skip Base URL Validation Before the Next Step","Überspringe Überprüfung der Basis-URL"
|
102 |
+
"Skip Secure URL validation before next step","Überspringe Überprüfung der verschlüsselten Verbindung"
|
103 |
"Tables Prefix","Tabellen-Präfix"
|
104 |
+
"The URL ""%s"" is invalid.","Die URL ""%s"" ist ungültig."
|
105 |
+
"The URL ""%s"" is not accessible.","Die URL ""%s"" ist nicht zugänglich."
|
106 |
+
"There was a problem installing Magento packages. Please read the log, correct errors and try again.","Bei der Installation der Magento Pakete traten Fehler auf. Bitte lesen Sie die Log-Einträge, beheben Sie die Fehler und versuchen Sie es erneut."
|
|
|
|
|
107 |
"Time Zone","Zeitzone"
|
108 |
+
"Use Secure URLs (SSL)","Verwende verschlüsselte Verbindung (SSL)"
|
109 |
"Use Web Server (Apache) Rewrites","Verwende Web Server (Apache) Rewrites"
|
110 |
"User Name","Benutzername"
|
111 |
"User Password","Benutzerpasswort"
|
116 |
"Welcome to Magento's Installation Wizard","Willkommen zum Installationsassistenten für Magento"
|
117 |
"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","Sie können einen Serverport angeben, bspw.: localhost:3307<br />Wenn Sie nicht den Standard UNIX socket verwenden, können Sie dies hier angeben, bspw.: /var/run/mysqld/mysqld.sock"
|
118 |
"You could enable this option to use web server rewrites functionality for improved search engines optimization.","Sie können für eine verbesserte Suchmaschinenunterstützung die folgende Option für serverseitige URL-Rewrites aktivieren."
|
119 |
+
"You're All Set","Das war es schon, alles eingerichtet!"
|
120 |
"You're All Set!","Das war es schon, alles eingerichtet!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Media.csv
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
"An error occurred while creating the image.","Fehler beim Erzeugen der Bilddatei."
|
2 |
"The image does not exist or is invalid.","Die Bilddatei existiert nicht oder ist ungültig."
|
3 |
-
"This content requires last version of Adobe Flash Player. <a href="%s">Get Flash</a>","Dieser Inhalt benötigt einen aktuellen Adobe Flash Player <a href="%s">Flash Player installieren</a>"
|
1 |
"An error occurred while creating the image.","Fehler beim Erzeugen der Bilddatei."
|
2 |
"The image does not exist or is invalid.","Die Bilddatei existiert nicht oder ist ungültig."
|
3 |
+
"This content requires last version of Adobe Flash Player. <a href=""%s"">Get Flash</a>","Dieser Inhalt benötigt einen aktuellen Adobe Flash Player. <a href=""%s"">Flash Player installieren</a>"
|
app/locale/de_DE/Mage_Newsletter.csv
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
"Action","Aktion"
|
3 |
"Add New Template","Neue Vorlage"
|
4 |
"Add to Queue","Zur Warteschlange hinzufügen"
|
5 |
-
"Allow Guest Subscription","
|
6 |
-
"An error occurred while saving your subscription.","
|
7 |
"Are you sure that you want to delete this template?","Sind Sie sicher, dass Sie diese Vorlage löschen möchten?"
|
8 |
-
"Are you sure that you want to strip all tags?","Sind Sie sicher, dass Sie alle HTML-Tags aus dem Text entfernen
|
9 |
"Back","Zurück"
|
10 |
"Cancel","Abbrechen"
|
11 |
"Cancelled","Abgebrochen"
|
12 |
-
"Cannot mark as received subscriber.","
|
13 |
"Confirmation Email Sender","E-Mail Absender für Bestätigung"
|
14 |
"Confirmation Email Template","E-Mail Vorlage für Bestätigung"
|
15 |
"Confirmation request has been sent.","Bestätigungsanfrage wurde versendet."
|
@@ -18,7 +18,7 @@
|
|
18 |
"Customer","Kunde"
|
19 |
"Customer First Name","Kunde Vorname"
|
20 |
"Customer Last Name","Kunde Nachname"
|
21 |
-
"Customer My Account Newsletter Subscriptions","Kunde Mein Benutzerkonto Newsletter Abonnements"
|
22 |
"Date Added","Hinzugefügt am"
|
23 |
"Date Updated","Aktualisiert am"
|
24 |
"Delete","Löschen"
|
@@ -34,14 +34,14 @@
|
|
34 |
"Enter your email address","Geben Sie Ihre E-Mail Adresse ein"
|
35 |
"Error Code","Fehlercode"
|
36 |
"Error Text","Fehlertext"
|
37 |
-
"Follow this link to unsubscribe <!-- This tag is for unsubscribe link --><a href="{{var subscriber.getUnsubscriptionLink()}}">{{var subscriber.getUnsubscriptionLink()}}</a>","Klicken Sie auf diesen Link um sich vom Newsletter
|
38 |
"Guest","Gast"
|
39 |
"ID","ID"
|
40 |
-
"Invalid queue selected.","
|
41 |
-
"Invalid subscription ID.","
|
42 |
-
"Invalid subscription confirmation code.","
|
43 |
"Message","Nachricht"
|
44 |
-
"Need to Confirm","Bestätigung
|
45 |
"New Newsletter Template","Neue Newsletter-Vorlage"
|
46 |
"New Template","Neue Vorlage"
|
47 |
"Newsletter","Newsletter"
|
@@ -50,7 +50,7 @@
|
|
50 |
"Newsletter Queue","Newsletter Warteschlange"
|
51 |
"Newsletter Section","Newsletter"
|
52 |
"Newsletter Sign-up:","Newsletter Anmeldung:"
|
53 |
-
"Newsletter Styles","Newsletter
|
54 |
"Newsletter Subscribers","Newsletter Abonnenten"
|
55 |
"Newsletter Subscription","Newsletter Abonnement"
|
56 |
"Newsletter Subscription Form Before","Newsletter Anmelde Formular vorher"
|
@@ -68,6 +68,7 @@
|
|
68 |
"Paused","Pausiert"
|
69 |
"Please enter a valid email address.","Bitte geben Sie eine gültige E-Mail Adresse an."
|
70 |
"Please enter new template name","Bitte neuen Vorlagenname eingeben"
|
|
|
71 |
"Please select subscriber(s)","Bitte Abonnenten auswählen"
|
72 |
"Preview","Vorschau"
|
73 |
"Preview Template","Vorlagenvorschau"
|
@@ -81,13 +82,13 @@
|
|
81 |
"Recipients","Empfänger"
|
82 |
"Reset","Zurücksetzen"
|
83 |
"Resume","Fortsetzen"
|
84 |
-
"Return HTML Version","
|
85 |
"Save As","Speichern unter"
|
86 |
"Save Newsletter","Newsletter speichern"
|
87 |
"Save Template","Vorlage speichern"
|
88 |
"Save and Resume","Speichern und fortsetzen"
|
89 |
-
"Selected problem subscribers have been unsubscribed.","
|
90 |
-
"Selected problems have been deleted.","
|
91 |
"Sender","Absender"
|
92 |
"Sender Email","E-Mail Absender"
|
93 |
"Sender Name","Absendername"
|
@@ -95,7 +96,7 @@
|
|
95 |
"Sent","Gesendet"
|
96 |
"Sign Up for Our Newsletter:","Anmeldung für unseren Newsletter:"
|
97 |
"Sign up for our newsletter","Anmeldung für unseren Newsletter"
|
98 |
-
"Sorry, but administrator denied subscription for guests. Please <a href="%s">register</a>.","
|
99 |
"Start","Starten"
|
100 |
"Status","Status"
|
101 |
"Store","Store"
|
@@ -119,7 +120,7 @@
|
|
119 |
"Thank you for your subscription.","Danke für Ihre Anmeldung."
|
120 |
"The subscription has been removed.","Die Anmeldung wurde gelöscht."
|
121 |
"The subscription has been saved.","Die Anmeldung wurde gespeichert."
|
122 |
-
"There was a problem with the subscription.","
|
123 |
"There was a problem with the subscription: %s","Mit der Anmeldung '%s' gibt es ein Problem"
|
124 |
"There was a problem with the un-subscription.","Bei der Abmeldung trat ein Fehler auf."
|
125 |
"This email address is already assigned to another user.","Diese E-Mail Adresse ist bereits einem anderen Nutzer zugewiesen."
|
@@ -133,20 +134,4 @@
|
|
133 |
"View Newsletter","Newsletter anzeigen"
|
134 |
"Website","Website"
|
135 |
"You have been unsubscribed.","Sie haben sich erfolgreich abgemeldet."
|
136 |
-
"Your subscription has been confirmed.","Ihre Anmeldung wurde bestätigt."
|
137 |
-
"Cannot mark as received subscriber","Abonnent konnte nicht als erhalten markiert werden"
|
138 |
-
"Confirmation request has been sent","Bestätigungsanfrage wurde versandt"
|
139 |
-
"Duplicate of template code","Doppeltes Vorkommen des Vorlagencodes"
|
140 |
-
"Invalid queue selected","Ungültige Warteschlange ausgewählt"
|
141 |
-
"Invalid subscription ID","Ungültige Abonnementkennung"
|
142 |
-
"Invalid subscription confirmation code","Ungültiger Abonnement-Bestätigungsschlüssel"
|
143 |
-
"Newsletter Sign-up","Newsletter Anmeldung"
|
144 |
-
"No problems found","Keine Probleme gefunden"
|
145 |
-
"No subscribers selected","Keine Abonnenten ausgewählt"
|
146 |
-
"Please enter a valid email address","Bitte geben Sie eine gültige E-Mail-Adresse ein"
|
147 |
-
"Queue Newsletter","Warteschlange Newsletter"
|
148 |
-
"Return Html Version","HTML-Version ausgeben"
|
149 |
-
"Selected problem subscribers successfully unsubscribed","Ausgewählte Problem-Abonnenten erfolgreich abgemeldet"
|
150 |
-
"Selected problems have been deleted","Ausgewählte Probleme wurden gelöscht"
|
151 |
-
"Thank you for your subscription","Vielen Dank für Ihre Anmeldung"
|
152 |
-
"There was a problem with the subscription","Bei der Anmeldung trat ein Fehler auf"
|
2 |
"Action","Aktion"
|
3 |
"Add New Template","Neue Vorlage"
|
4 |
"Add to Queue","Zur Warteschlange hinzufügen"
|
5 |
+
"Allow Guest Subscription","Gästen die Anmeldung erlauben"
|
6 |
+
"An error occurred while saving your subscription.","Beim Speichern Ihrer Anmeldung ist ein Fehler aufgetreten."
|
7 |
"Are you sure that you want to delete this template?","Sind Sie sicher, dass Sie diese Vorlage löschen möchten?"
|
8 |
+
"Are you sure that you want to strip all tags?","Sind Sie sicher, dass Sie alle HTML-Tags aus dem Text entfernen möchten?"
|
9 |
"Back","Zurück"
|
10 |
"Cancel","Abbrechen"
|
11 |
"Cancelled","Abgebrochen"
|
12 |
+
"Cannot mark as received subscriber.","Empfänger konnte nicht als 'versendet' markiert werden."
|
13 |
"Confirmation Email Sender","E-Mail Absender für Bestätigung"
|
14 |
"Confirmation Email Template","E-Mail Vorlage für Bestätigung"
|
15 |
"Confirmation request has been sent.","Bestätigungsanfrage wurde versendet."
|
18 |
"Customer","Kunde"
|
19 |
"Customer First Name","Kunde Vorname"
|
20 |
"Customer Last Name","Kunde Nachname"
|
21 |
+
"Customer My Account Newsletter Subscriptions","Kunde 'Mein Benutzerkonto' Newsletter Abonnements"
|
22 |
"Date Added","Hinzugefügt am"
|
23 |
"Date Updated","Aktualisiert am"
|
24 |
"Delete","Löschen"
|
34 |
"Enter your email address","Geben Sie Ihre E-Mail Adresse ein"
|
35 |
"Error Code","Fehlercode"
|
36 |
"Error Text","Fehlertext"
|
37 |
+
"Follow this link to unsubscribe <!-- This tag is for unsubscribe link --><a href=""{{var subscriber.getUnsubscriptionLink()}}"">{{var subscriber.getUnsubscriptionLink()}}</a>","Klicken Sie auf diesen Link um sich vom Newsletter abzumelden <!-- Dieser Tag ist für den Abmelde-Link --><a href=""{{var subscriber.getUnsubscriptionLink()}}"">{{var subscriber.getUnsubscriptionLink()}}</a>"
|
38 |
"Guest","Gast"
|
39 |
"ID","ID"
|
40 |
+
"Invalid queue selected.","Ungültige Warteschlange ausgewählt."
|
41 |
+
"Invalid subscription ID.","Ungültige Abonnenten ID"
|
42 |
+
"Invalid subscription confirmation code.","Ungültiger Abonnenten Bestätigungscode"
|
43 |
"Message","Nachricht"
|
44 |
+
"Need to Confirm","Bestätigung erforderlich"
|
45 |
"New Newsletter Template","Neue Newsletter-Vorlage"
|
46 |
"New Template","Neue Vorlage"
|
47 |
"Newsletter","Newsletter"
|
50 |
"Newsletter Queue","Newsletter Warteschlange"
|
51 |
"Newsletter Section","Newsletter"
|
52 |
"Newsletter Sign-up:","Newsletter Anmeldung:"
|
53 |
+
"Newsletter Styles","Newsletter Stile"
|
54 |
"Newsletter Subscribers","Newsletter Abonnenten"
|
55 |
"Newsletter Subscription","Newsletter Abonnement"
|
56 |
"Newsletter Subscription Form Before","Newsletter Anmelde Formular vorher"
|
68 |
"Paused","Pausiert"
|
69 |
"Please enter a valid email address.","Bitte geben Sie eine gültige E-Mail Adresse an."
|
70 |
"Please enter new template name","Bitte neuen Vorlagenname eingeben"
|
71 |
+
"Please refer to exeption.log","Bitte sehen Sie in der Datei exeption.log nach."
|
72 |
"Please select subscriber(s)","Bitte Abonnenten auswählen"
|
73 |
"Preview","Vorschau"
|
74 |
"Preview Template","Vorlagenvorschau"
|
82 |
"Recipients","Empfänger"
|
83 |
"Reset","Zurücksetzen"
|
84 |
"Resume","Fortsetzen"
|
85 |
+
"Return HTML Version","Zurück zur HTML Version"
|
86 |
"Save As","Speichern unter"
|
87 |
"Save Newsletter","Newsletter speichern"
|
88 |
"Save Template","Vorlage speichern"
|
89 |
"Save and Resume","Speichern und fortsetzen"
|
90 |
+
"Selected problem subscribers have been unsubscribed.","Ausgewählte Empfänger mit Problemen wurden vom Abonnement abgemeldet."
|
91 |
+
"Selected problems have been deleted.","Ausgewählte Probleme wurden gelöscht."
|
92 |
"Sender","Absender"
|
93 |
"Sender Email","E-Mail Absender"
|
94 |
"Sender Name","Absendername"
|
96 |
"Sent","Gesendet"
|
97 |
"Sign Up for Our Newsletter:","Anmeldung für unseren Newsletter:"
|
98 |
"Sign up for our newsletter","Anmeldung für unseren Newsletter"
|
99 |
+
"Sorry, but administrator denied subscription for guests. Please <a href=""%s"">register</a>.","Leider gestattet der Administrator keine Gastanmeldung. Bitte <a href=""%s"">registrieren Sie sich</a>."
|
100 |
"Start","Starten"
|
101 |
"Status","Status"
|
102 |
"Store","Store"
|
120 |
"Thank you for your subscription.","Danke für Ihre Anmeldung."
|
121 |
"The subscription has been removed.","Die Anmeldung wurde gelöscht."
|
122 |
"The subscription has been saved.","Die Anmeldung wurde gespeichert."
|
123 |
+
"There was a problem with the subscription.","Es gab ein Problem bei der Anmeldung."
|
124 |
"There was a problem with the subscription: %s","Mit der Anmeldung '%s' gibt es ein Problem"
|
125 |
"There was a problem with the un-subscription.","Bei der Abmeldung trat ein Fehler auf."
|
126 |
"This email address is already assigned to another user.","Diese E-Mail Adresse ist bereits einem anderen Nutzer zugewiesen."
|
134 |
"View Newsletter","Newsletter anzeigen"
|
135 |
"Website","Website"
|
136 |
"You have been unsubscribed.","Sie haben sich erfolgreich abgemeldet."
|
137 |
+
"Your subscription has been confirmed.","Ihre Anmeldung wurde bestätigt."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Page.csv
CHANGED
@@ -10,49 +10,49 @@
|
|
10 |
"- or click and drag for faster selection.","- oder Mausklick und ziehen für eine schnellere Auswahl."
|
11 |
"-- Please Select --","-- Bitte wählen --"
|
12 |
"1 column","1 spaltig"
|
13 |
-
"2 columns with left bar","2
|
14 |
-
"2 columns with right bar","2
|
15 |
"3 columns","3 spaltig"
|
16 |
"About the calendar","Über den Kalender"
|
17 |
"All Empty Layout Pages","Alle leeren Layout Seiten"
|
18 |
"All One-Column Layout Pages","Alle 1 spaltigen Layout Seiten"
|
19 |
"All Pages","Alle Seiten"
|
20 |
"All Pages (Print Version)","Alle Seiten (Druckversion)"
|
21 |
-
"All Three-Column Layout Pages","Alle 3 spaltigen
|
22 |
-
"All Two-Column Layout Pages (Left Column)","Alle 2 spaltigen
|
23 |
-
"All Two-Column Layout Pages (Right Column)","Alle 2 spaltigen
|
24 |
"Breadcrumbs","Breadcrumbs"
|
25 |
-
"Click <a href="%s">here</a> if nothing has happened","Klicken Sie <a href="%s">hier</a
|
26 |
"Close","Schließen"
|
27 |
"Close Window","Fenster schließen"
|
28 |
"DHTML Date/Time Selector","DHTML Datum/Zeit Wähler"
|
29 |
"Date selection:","Datum Auswahl:"
|
30 |
"Default Description","Standardbeschreibung"
|
31 |
"Default welcome msg!","Standard Willkommensnachricht!"
|
32 |
-
"Display %s first","
|
33 |
-
"Distributed under GNU LGPL. See %s for details.","Veröffentlicht unter der GNU LGPL.
|
34 |
-
"Drag to move","Ziehen um zu bewegen"
|
35 |
"Empty","Leer"
|
36 |
-
"For latest version visit: %s","
|
37 |
"Free Shipping on orders over 50$","Versandkostenfreier Versand auf Bestellungen über 50€"
|
38 |
"Go Today","zu Heute"
|
39 |
-
"Help Us to Keep Magento Healthy","Helfen Sie uns, Magento
|
40 |
"Interface Language","Sprache der Benutzeroberfläche"
|
41 |
"Items %s to %s of %s total","Artikel %s bis %s von %s gesamt"
|
42 |
"JavaScript seem to be disabled in your browser.","JavaScript scheint in Ihrem Browser deaktiviert zu sein."
|
43 |
"Left Column","Linke Spalte"
|
44 |
-
"Main Content Area","
|
45 |
-
"Navigation Bar","
|
46 |
"Next","Vor"
|
47 |
-
"Next month (hold for menu)","Nächster Monat (Für Menü halten)"
|
48 |
-
"Next year (hold for menu)","Nächstes Jahr (Für Menü halten)"
|
49 |
-
"Page Bottom","
|
50 |
-
"Page Footer","Seiten Fußbereich
|
51 |
-
"Page Header","Seiten Kopfbereich
|
52 |
-
"Page Top","
|
53 |
"Page:","Seite:"
|
54 |
-
"Prev. month (hold for menu)","Vorheriger Monat (Für Menü halten)"
|
55 |
-
"Prev. year (hold for menu)","Vorheriger Jahr (Für Menü halten)"
|
56 |
"Previous","Zurück"
|
57 |
"Redirecting...","Weiterleitung..."
|
58 |
"Report All Bugs","Melden Sie alle Fehler"
|
@@ -64,9 +64,8 @@
|
|
64 |
"This is a demo store. Any orders placed through this store will not be honored or fulfilled.","Dies ist eine Demo-Installation. Jegliche Bestellung in diesem Shop wird weder beachtet noch ausgeführt."
|
65 |
"Time selection:","Zeit-Auswahl:"
|
66 |
"Time:","Zeit:"
|
67 |
-
"Welcome, %s!","Willkommen
|
68 |
-
"You must have JavaScript enabled in your browser to utilize the functionality of this website.","Sie müssen JavaScript in Ihrem Browser aktivieren um alle Funktionen in diesem Shop nutzen zu können."
|
69 |
"Your Language","Ihre Sprache"
|
70 |
"Your Language:","Ihre Sprache:"
|
71 |
"per page","pro Seite"
|
72 |
-
"Previous Page","Vorherige Seite"
|
10 |
"- or click and drag for faster selection.","- oder Mausklick und ziehen für eine schnellere Auswahl."
|
11 |
"-- Please Select --","-- Bitte wählen --"
|
12 |
"1 column","1 spaltig"
|
13 |
+
"2 columns with left bar","2 spaltig mit linker Spalte"
|
14 |
+
"2 columns with right bar","2 spaltig mit rechter Spalte"
|
15 |
"3 columns","3 spaltig"
|
16 |
"About the calendar","Über den Kalender"
|
17 |
"All Empty Layout Pages","Alle leeren Layout Seiten"
|
18 |
"All One-Column Layout Pages","Alle 1 spaltigen Layout Seiten"
|
19 |
"All Pages","Alle Seiten"
|
20 |
"All Pages (Print Version)","Alle Seiten (Druckversion)"
|
21 |
+
"All Three-Column Layout Pages","Alle 3 spaltigen Seiten"
|
22 |
+
"All Two-Column Layout Pages (Left Column)","Alle 2 spaltigen Seiten (mit linker Spalte)"
|
23 |
+
"All Two-Column Layout Pages (Right Column)","Alle 2 spaltigen Seiten (mit rechter Spalte)"
|
24 |
"Breadcrumbs","Breadcrumbs"
|
25 |
+
"Click <a href=""%s"">here</a> if nothing has happened","Klicken Sie <a href=""%s"">hier</a>"
|
26 |
"Close","Schließen"
|
27 |
"Close Window","Fenster schließen"
|
28 |
"DHTML Date/Time Selector","DHTML Datum/Zeit Wähler"
|
29 |
"Date selection:","Datum Auswahl:"
|
30 |
"Default Description","Standardbeschreibung"
|
31 |
"Default welcome msg!","Standard Willkommensnachricht!"
|
32 |
+
"Display %s first","%s als erster Tag"
|
33 |
+
"Distributed under GNU LGPL. See %s for details.","Veröffentlicht unter der GNU LGPL. Details erfahren Sie hier: %s."
|
34 |
+
"Drag to move","Ziehen, um zu bewegen"
|
35 |
"Empty","Leer"
|
36 |
+
"For latest version visit: %s","Die aktuellste Version erhalten Sie hier: %s"
|
37 |
"Free Shipping on orders over 50$","Versandkostenfreier Versand auf Bestellungen über 50€"
|
38 |
"Go Today","zu Heute"
|
39 |
+
"Help Us to Keep Magento Healthy","Helfen Sie uns, Magento noch besser zu machen"
|
40 |
"Interface Language","Sprache der Benutzeroberfläche"
|
41 |
"Items %s to %s of %s total","Artikel %s bis %s von %s gesamt"
|
42 |
"JavaScript seem to be disabled in your browser.","JavaScript scheint in Ihrem Browser deaktiviert zu sein."
|
43 |
"Left Column","Linke Spalte"
|
44 |
+
"Main Content Area","Hauptinhaltsbereich"
|
45 |
+
"Navigation Bar","Navigationsleiste"
|
46 |
"Next","Vor"
|
47 |
+
"Next month (hold for menu)","Nächster Monat (Für Menü gedrückt halten)"
|
48 |
+
"Next year (hold for menu)","Nächstes Jahr (Für Menü gedrückt halten)"
|
49 |
+
"Page Bottom","Seitenende"
|
50 |
+
"Page Footer","Seiten Fußbereich"
|
51 |
+
"Page Header","Seiten Kopfbereich"
|
52 |
+
"Page Top","Seitenanfang"
|
53 |
"Page:","Seite:"
|
54 |
+
"Prev. month (hold for menu)","Vorheriger Monat (Für Menü gedrückt halten)"
|
55 |
+
"Prev. year (hold for menu)","Vorheriger Jahr (Für Menü gedrückt halten)"
|
56 |
"Previous","Zurück"
|
57 |
"Redirecting...","Weiterleitung..."
|
58 |
"Report All Bugs","Melden Sie alle Fehler"
|
64 |
"This is a demo store. Any orders placed through this store will not be honored or fulfilled.","Dies ist eine Demo-Installation. Jegliche Bestellung in diesem Shop wird weder beachtet noch ausgeführt."
|
65 |
"Time selection:","Zeit-Auswahl:"
|
66 |
"Time:","Zeit:"
|
67 |
+
"Welcome, %s!","Willkommen %s!"
|
68 |
+
"You must have JavaScript enabled in your browser to utilize the functionality of this website.","Sie müssen JavaScript in Ihrem Browser aktivieren, um alle Funktionen in diesem Shop nutzen zu können."
|
69 |
"Your Language","Ihre Sprache"
|
70 |
"Your Language:","Ihre Sprache:"
|
71 |
"per page","pro Seite"
|
|
app/locale/de_DE/Mage_PageCache.csv
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
"An error occurred while clearing the external full page cache.","
|
2 |
-
"Cookie Lifetime (seconds)","Cookie
|
3 |
"Enable External Cache","Externen Cache aktivieren"
|
4 |
"External Cache Control","Externe Cache Kontrolle"
|
5 |
"External Full Page Cache Settings","Einstellungen - Externer Full Page Cache"
|
6 |
"External full page cache.","Externer Full Page Cache."
|
7 |
-
"Failed to load external cache control","Fehler beim
|
8 |
-
"Flush External Page Cache","Externen
|
9 |
"If empty, default value will be used.","Falls leer, wird Standardwert genutzt."
|
10 |
"The external full page cache has been cleaned.","Der externe 'Full Page Cache' wurde geleert."
|
11 |
"Zend Full Page Cache","Zend Full Page Cache"
|
1 |
+
"An error occurred while clearing the external full page cache.","Ein Fehler ist beim leeren des externen Full Page Caches aufgetreten."
|
2 |
+
"Cookie Lifetime (seconds)","Cookie Gültigkeit in Sekunden"
|
3 |
"Enable External Cache","Externen Cache aktivieren"
|
4 |
"External Cache Control","Externe Cache Kontrolle"
|
5 |
"External Full Page Cache Settings","Einstellungen - Externer Full Page Cache"
|
6 |
"External full page cache.","Externer Full Page Cache."
|
7 |
+
"Failed to load external cache control","Fehler beim Laden der externen Cache Ressource"
|
8 |
+
"Flush External Page Cache","Externen Full Page Cache leeren"
|
9 |
"If empty, default value will be used.","Falls leer, wird Standardwert genutzt."
|
10 |
"The external full page cache has been cleaned.","Der externe 'Full Page Cache' wurde geleert."
|
11 |
"Zend Full Page Cache","Zend Full Page Cache"
|
app/locale/de_DE/Mage_Paygate.csv
CHANGED
@@ -3,14 +3,15 @@
|
|
3 |
"3D Secure Card Validation","3D Secure Kartenüberprüfung"
|
4 |
"API Login ID","API Login ID"
|
5 |
"Accepted Currency","Akzeptierte Währung"
|
6 |
-
"Allow Partial Authorization","
|
7 |
-
"Are you sure you want to cancel your payment? Click OK to cancel your payment and release the amount on hold. Click Cancel to enter another credit card and continue with your payment.",
|
|
|
8 |
"Authorize Only","Nur autorisieren"
|
9 |
"Authorize and Capture","Autorisieren und Erfassen"
|
10 |
-
"Authorize.Net Transaction ID %s","Authorize.Net
|
11 |
"Authorize.net","Authorize.net"
|
12 |
"Cancel","Stornieren"
|
13 |
-
"Centinel
|
14 |
"Credit Card Types","Kreditkartentypen"
|
15 |
"Credit Card Verification","Kreditkartenüberprüfung"
|
16 |
"Credit Card: xxxx-%s","Kreditkarte: xxxx-%s"
|
@@ -18,54 +19,52 @@
|
|
18 |
"Email Customer","Kunden E-Mail Adresse"
|
19 |
"Enabled","Aktiviert"
|
20 |
"Error in payment gateway.","Fehler im Payment Geteway."
|
21 |
-
"Gateway actions are locked because the gateway cannot complete one or more of the transactions. Please log in to your Authorize.Net account to manually resolve the issue(s).",
|
|
|
22 |
"Gateway error: %s","Gateway Fehler: %s"
|
23 |
-
"If empty, a default value will be used. Custom URL may be provided by CardinalCommerce agreement.","
|
24 |
"Invalid amount for authorization.","Ungültiger Betrag für die Autorisation."
|
25 |
-
"Invalid amount for capture.","
|
26 |
-
"Invalid amount for partial authorization.","
|
27 |
-
"Invalid amount for refund.","
|
28 |
-
"Invalid split tenderId ID.","
|
29 |
"Maximum Order Total","Höchstbestellwert"
|
30 |
"Merchant's Email","Verkäufer E-Mail"
|
31 |
"Minimum Order Total","Mindestbestellwert"
|
32 |
"New Order Status","Neuer Bestellstatus"
|
33 |
"Payment Action","Zahlungsaktion"
|
34 |
"Payment authorization error.","Fehler beim Autorisieren der Zahlung."
|
35 |
-
"Payment canceling error.","
|
36 |
-
"Payment capturing error.","
|
37 |
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
38 |
"Payment from Specific Countries","Zahlung aus bestimmten Ländern"
|
39 |
-
"Payment partial authorization error.","
|
40 |
-
"Payment refunding error.","
|
41 |
-
"Payment
|
42 |
-
"
|
43 |
-
"
|
44 |
-
"
|
45 |
-
"Severe
|
46 |
-
"
|
|
|
47 |
"Sort Order","Reihenfolge"
|
48 |
"Test Mode","Test Modus"
|
49 |
-
"The amount on your credit card is insufficient to complete your purchase. The available amount has been put on hold. To complete your purchase click OK and specify additional credit card number. To cancel the purchase and release the amount on hold, click Cancel.","
|
50 |
-
"There was an error canceling transactions. Please contact us or try again later.",
|
|
|
51 |
"Title","Titel"
|
52 |
"Transaction Key","Transaktionsschlüssel"
|
53 |
-
"You have reached the maximum number of credit card allowed to be used for the payment.","
|
54 |
-
"You have reached the maximum number of credit cards that can be used for one payment. The available amounts on all used cards were insufficient to complete payment. The payment has been cancelled and amounts on hold have been released.","
|
55 |
-
"Your credit card has been declined. Click OK to specify another credit card to complete your purchase. Click Cancel to release the amount on hold and select another payment method.","
|
56 |
-
"Your order has not been placed, because contents of the shopping cart and/or address has been changed. Authorized amounts from your previous payment that were left pending are now released. Please go through the checkout process for your recent cart contents.",
|
57 |
-
"
|
58 |
-
"
|
59 |
-
"
|
60 |
-
"authorize
|
61 |
-
"capture","
|
62 |
-
"
|
63 |
-
"
|
64 |
-
"
|
65 |
-
"
|
66 |
-
"
|
67 |
-
"Error in payment gateway","Fehler in der Zahlungsschnittstelle"
|
68 |
-
"Error in refunding the payment.","Fehler beim Erstatten der Zahlung."
|
69 |
-
"Gateway request error: %s","Gateway Anfragefehler: %s"
|
70 |
-
"Invalid transaction ID.","Ungültige Transaktionskennung"
|
71 |
-
"Payment authorization transaction has been declined.","Zahlungsautorisation - Transaktion wurde abgelehnt."
|
3 |
"3D Secure Card Validation","3D Secure Kartenüberprüfung"
|
4 |
"API Login ID","API Login ID"
|
5 |
"Accepted Currency","Akzeptierte Währung"
|
6 |
+
"Allow Partial Authorization","Teilweise Authorisation erlauben"
|
7 |
+
"Are you sure you want to cancel your payment? Click OK to cancel your payment and release the amount on hold. Click Cancel to enter another credit card and continue with your payment.",
|
8 |
+
"Sind Sie sicher, dass Sie die Zahlung abbrechen möchten? Klicken Sie auf ""OK"", um die Zahlung abzubrechen und den Betrag wieder freizugeben. Klicken Sie ""Abbrechen"", um eine andere Kreditkarte anzugeben und die Zahlung fortzusetzen."
|
9 |
"Authorize Only","Nur autorisieren"
|
10 |
"Authorize and Capture","Autorisieren und Erfassen"
|
11 |
+
"Authorize.Net Transaction ID %s","Authorize.Net Transaktionsnummer %s"
|
12 |
"Authorize.net","Authorize.net"
|
13 |
"Cancel","Stornieren"
|
14 |
+
"Centinel API URL","Centinel API Url"
|
15 |
"Credit Card Types","Kreditkartentypen"
|
16 |
"Credit Card Verification","Kreditkartenüberprüfung"
|
17 |
"Credit Card: xxxx-%s","Kreditkarte: xxxx-%s"
|
19 |
"Email Customer","Kunden E-Mail Adresse"
|
20 |
"Enabled","Aktiviert"
|
21 |
"Error in payment gateway.","Fehler im Payment Geteway."
|
22 |
+
"Gateway actions are locked because the gateway cannot complete one or more of the transactions. Please log in to your Authorize.Net account to manually resolve the issue(s).",
|
23 |
+
"Gateway Aktionen sind vorübergehend gesperrt, da das Gateway mindestens eine Transaktion nicht abschließen konnte. Bitte loggen Sie sich bei Ihrem Authorize.Net Kundenkonto ein und beheben Sie diese Probleme manuell."
|
24 |
"Gateway error: %s","Gateway Fehler: %s"
|
25 |
+
"If empty, a default value will be used. Custom URL may be provided by CardinalCommerce agreement.","Wenn dieses Feld leer gelassen wird, wird ein Standardwert verwendet. Die eigene URL ist möglicherweise in Ihrem CardinalCommerce Vertrag enthalten."
|
26 |
"Invalid amount for authorization.","Ungültiger Betrag für die Autorisation."
|
27 |
+
"Invalid amount for capture.","Ungültiger Betrag zur Erfassung."
|
28 |
+
"Invalid amount for partial authorization.","Ungültiger Betrag für die teilweise Autorisation."
|
29 |
+
"Invalid amount for refund.","Ungültiger Erstattungsbetrag."
|
30 |
+
"Invalid split tenderId ID.","Ungültige Split TenderId Kennung."
|
31 |
"Maximum Order Total","Höchstbestellwert"
|
32 |
"Merchant's Email","Verkäufer E-Mail"
|
33 |
"Minimum Order Total","Mindestbestellwert"
|
34 |
"New Order Status","Neuer Bestellstatus"
|
35 |
"Payment Action","Zahlungsaktion"
|
36 |
"Payment authorization error.","Fehler beim Autorisieren der Zahlung."
|
37 |
+
"Payment canceling error.","Fehler beim Abbruch der Zahlung."
|
38 |
+
"Payment capturing error.","Fehler beim Erfassen der Zahlung."
|
39 |
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
40 |
"Payment from Specific Countries","Zahlung aus bestimmten Ländern"
|
41 |
+
"Payment partial authorization error.","Fehler bei der teilweisen Autorisation."
|
42 |
+
"Payment refunding error.","Fehler bei der Erstatttung."
|
43 |
+
"Payment updating error.","Fehler bei der Aktualisierung."
|
44 |
+
"Payment voiding error.","Fehler beim Stornieren der Zahlung."
|
45 |
+
"Processed Amount","Verarbeiteter Betrag"
|
46 |
+
"Remaining Balance","Ausstehendes Guthaben"
|
47 |
+
"Severe 3D Secure Card Validation","Scharfe 3D Secure Kartenprüfung"
|
48 |
+
"Severe Validation Removes Chargeback Liability on Merchant","Scharfe Prüfung enthebt den Verkäufer vom Zahlungsausfall-Risiko."
|
49 |
+
"Shopping cart contents and/or address has been changed.","Warenkorb und/oder Anschrift hat sich geändert."
|
50 |
"Sort Order","Reihenfolge"
|
51 |
"Test Mode","Test Modus"
|
52 |
+
"The amount on your credit card is insufficient to complete your purchase. The available amount has been put on hold. To complete your purchase click OK and specify additional credit card number. To cancel the purchase and release the amount on hold, click Cancel.","Der verfügbare Restbetrag Ihrer Kreditkarte reicht leider nicht aus, um die Zahlung durchzufürhen. Der Betrag wurde vorgemerkt. Um Ihre Bestellung abschließen zu können, klicken Sie bitte auf ""OK"" und geben Sie eine zusätzliche Kreditkarte an. Um den Bestellvorgang abzubrechen und den vorgemerkten Betrag wieder freizugeben, klicken Sie bitte auf ""Abbrechen""."
|
53 |
+
"There was an error canceling transactions. Please contact us or try again later.",
|
54 |
+
"Beim stornieren der Transaktionen ist ein Fehler aufgetreten. Bitte nehmen Sie mit uns Kontakt auf oder versuchen Sie es später noch einmal."
|
55 |
"Title","Titel"
|
56 |
"Transaction Key","Transaktionsschlüssel"
|
57 |
+
"You have reached the maximum number of credit card allowed to be used for the payment.","Sie haben die maximale Anzahl an Kreditkarten erreicht, die pro Bestellung verwendet werden dürfen."
|
58 |
+
"You have reached the maximum number of credit cards that can be used for one payment. The available amounts on all used cards were insufficient to complete payment. The payment has been cancelled and amounts on hold have been released.","Sie haben die maximale Anzahl an Kreditkarten erreicht, die pro Bestellung verwendet werden dürfen. Die Beträge auf allen Karten reicht nicht aus, um die Bestellung abzuschließen. Der Zahlvorgang wurde abgebrochen und alle vorgemerkten Beträge wieder freigegeben."
|
59 |
+
"Your credit card has been declined. Click OK to specify another credit card to complete your purchase. Click Cancel to release the amount on hold and select another payment method.","Ihre Kreditkarte wurde abgelehnt. Um Ihre Bestellung abzuschließen geben Sie bitte eine andere Kreditkarte ein. Klicken Sie auf ""Abbrechen"", um die vorgemerkten Beträge freizugeben und eine andere Zahlart auszuwählen."
|
60 |
+
"Your order has not been placed, because contents of the shopping cart and/or address has been changed. Authorized amounts from your previous payment that were left pending are now released. Please go through the checkout process for your recent cart contents.",
|
61 |
+
"Ihre Bestellung konnte nicht abgeschlossen werden, da sich der Inhalt Ihres Warenkorbs und/oder die Adresse geändert hat. Ausstehende Beträge von vorhergehenden Zahlungen wurden wieder freigegeben. Bitte schließen Sie die Bestellung mit Ihrem aktuellen Warenkorb ab."
|
62 |
+
"Your payment has been cancelled. All authorized amounts have been released.","Ihre Zahlung wurde storniert und alle autorisierten Beträge wurden wieder freigegeben."
|
63 |
+
"amount %s","Betrag %s"
|
64 |
+
"authorize","Autorisieren"
|
65 |
+
"authorize and capture","Autorisieren und erfassen"
|
66 |
+
"capture","Erfassen"
|
67 |
+
"failed","Fehlgeschlagen"
|
68 |
+
"refund","Erstatten"
|
69 |
+
"successful","Erfolgreich"
|
70 |
+
"void","Stornieren"
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Payment.csv
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
"%s %s cycle.","%s %s Zeitraum."
|
2 |
"--Please Select--","--Bitte wählen--"
|
3 |
-
"3D Secure Card Validation","3D
|
4 |
-
"3D Secure Credit Card Validation","3D
|
5 |
"<label>Make Check payable to:</label> %s","<label>Scheck ausstellen auf:</label> %s"
|
6 |
"A value is required for live mode. Refer to your CardinalCommerce agreement.","Ein Wert ist erforderlich für den Live-Modus. Ordnen Sie diesen Ihrer CardinalCommerce Bedingung zu."
|
7 |
"Allow Initial Fee Failure","Erlaube einmalig Gebühren Fehler"
|
8 |
-
"An internal reference ID is required to save the payment profile.","Eine interne
|
9 |
"Auto Bill on Next Cycle","Automatische Bezahlung zum nächsten Zeitraum"
|
10 |
"Automatically Invoice All Items","Automatisch alle Artikel in Rechnung stellen"
|
11 |
"Automatically bill the outstanding balance amount in the next billing cycle (if there were failed payments).","Automatisch alle ausstehenden Posten im nächsten Zahlungs-Zeitraum bezahlen (wenn Zahlung ausstehend)."
|
@@ -15,9 +15,9 @@
|
|
15 |
"Billing Period","Abrechnungs-Periode"
|
16 |
"Billing Period Unit","Abrechnungs-Perioden Einheit"
|
17 |
"Billing period unit is not defined or wrong.","Abrechnungs-Perioden Einheit ist nicht gesetzt oder falsch."
|
18 |
-
"Cannot retrieve payment method instance.","
|
19 |
-
"Cannot retrieve the payment info model object.","
|
20 |
-
"Cannot retrieve the payment method model object.","
|
21 |
"Card Verification Number","Kartenprüfnummer"
|
22 |
"Centinel API URL","Centinel API URL"
|
23 |
"Check / Money Order","Scheck / Zahlungsanweisung"
|
@@ -28,17 +28,17 @@
|
|
28 |
"Credit Card Types","Kreditkartentypen"
|
29 |
"Currency","Währung"
|
30 |
"Currency code is undefined.","Währungscode ist icht definiert."
|
31 |
-
"Customer ID is not set.","
|
32 |
"Day","Tag"
|
33 |
"Debug Mode","Debug Modus"
|
34 |
"Enabled","Aktiviert"
|
35 |
"Expiration Date","Ablaufdatum"
|
36 |
"Expiration Date: %s/%s","Ablaufdatum: %s/%s"
|
37 |
"Full name of the person receiving the product or service paid for by the recurring payment.","Voller Name der Person die den Bezug von wiederkehrenden Artikel- oder Services angemeldet wird."
|
38 |
-
"Initial Fee","
|
39 |
-
"Initial non-recurring payment amount due immediately upon profile creation.","
|
40 |
-
"Internal Reference ID","Interne
|
41 |
-
"Issue Number","
|
42 |
"Make Check Payable to","Scheck ausstellen auf"
|
43 |
"Make Check payable to:","Scheck ausstellen auf:"
|
44 |
"Make Check payable to: %s","Scheck ausstellen auf: %s"
|
@@ -46,7 +46,7 @@
|
|
46 |
"Maximum Order Total","Höchstwert für Gesamtbestellung"
|
47 |
"Maximum Payment Failures","Maximale Zahlungsfehler"
|
48 |
"Maximum Trial Billing Cycles","Maximale Versuche Zahlungszeiträume"
|
49 |
-
"Merchant
|
50 |
"Minimum Order Total","Mindestwert für Gesamtbestellung"
|
51 |
"Month","Monat"
|
52 |
"N/A","Nicht verfügbar"
|
@@ -54,29 +54,29 @@
|
|
54 |
"Name on the Card","Karteninhaber"
|
55 |
"Name on the Card: %s","Name des Karteninhabers: %s"
|
56 |
"New Order Status","Neuer Bestellstatus"
|
57 |
-
"Number of billing periods that make up one billing cycle.","Anzahl der
|
58 |
-
"Overrides API URL that may be specified by a payment method.","
|
59 |
"Password","Passwort"
|
60 |
-
"Payment ID: %s","
|
61 |
-
"Payment Method","
|
62 |
-
"Payment Methods","
|
63 |
-
"Payment Methods Section","Bereich für
|
64 |
-
"Payment Reference ID","
|
65 |
"Payment Services","Zahlungsdienste"
|
66 |
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
67 |
"Payment from Specific Countries","Zahlung aus bestimmten Ländern"
|
68 |
-
"Payment method code is not set.","
|
69 |
-
"Payment method code is undefined.","
|
70 |
"Payment profile is invalid:\n%s","Zahlungsprofil ist ungültig:\n%s"
|
71 |
-
"Period frequency is wrong.","
|
72 |
-
"Processor
|
73 |
"Purchase Order","Abruf aus Auftrag"
|
74 |
"Purchase Order Number","Auftragsnummer"
|
75 |
"Purchase Order Number:","Auftragsnummer"
|
76 |
"Purchase Order Number: %s","Auftragsnummer: %s"
|
77 |
"Recurring Profile Start Date","Startdatum für wiederkehrendes Profil"
|
78 |
"Recurring profile start date has invalid format.","Startdatum für Wiederkehrendes Profil hat ein ungültiges Format."
|
79 |
-
"Reference ID is not set.","
|
80 |
"Repeats %s time(s).","Anzahl Wiederholungen %s."
|
81 |
"Repeats until suspended or canceled.","Wiederholungen verschieben oder stornieren."
|
82 |
"Request Card Security Code","Anfrage Karten-Sicherheitscode"
|
@@ -86,9 +86,10 @@
|
|
86 |
"Send Check to","Scheck senden an"
|
87 |
"Send Check to:","Scheck senden an:"
|
88 |
"Severe 3D Secure Card Validation","3D Secure Karten-Überprüfung"
|
89 |
-
"Severe validation removes chargeback liability on merchant.","
|
90 |
"Shipping Amount","Versand-Betrag"
|
91 |
-
"Short description of the recurring payment. By default equals to the product name.",
|
|
|
92 |
"Sort Order","Reihenfolge"
|
93 |
"Start Date","Start Datum"
|
94 |
"Start date has invalid format.","Start Datum hat ein ungültiges Format."
|
@@ -101,31 +102,26 @@
|
|
101 |
"Test Mode","Test Modus"
|
102 |
"The date when billing for the profile begins.","Das Datum an dem die Zahlung für das Profil beginnt."
|
103 |
"The number of billing cycles for payment period.","Anzahl der Abrechnungshäufigkeit für die Zahlungs-Periode."
|
104 |
-
"The number of scheduled payments that can fail before the profile is automatically suspended.","
|
105 |
-
"The payment review action is unavailable.","
|
106 |
"Title","Titel"
|
107 |
-
"Trial Billing Amount","
|
108 |
-
"Trial Billing Frequency","
|
109 |
-
"Trial Billing Period Unit","
|
110 |
-
"Trial Period","
|
111 |
-
"Trial billing amount is wrong.","
|
112 |
-
"Trial billing period unit is wrong.","
|
113 |
-
"Trial period frequency is wrong.","
|
114 |
-
"Trial period max cycles is wrong.","
|
115 |
"Two Weeks","2 Wochen"
|
116 |
-
"Unable to save Billing Agreement:","
|
117 |
-
"Unit for billing during the subscription period.","
|
118 |
-
"Unsupported currency code: %s.","Nicht
|
119 |
"Week","Woche"
|
120 |
"What is this?","Was ist das?"
|
121 |
-
"Whether to suspend the payment profile if the initial fee fails or add it to the outstanding balance.",
|
122 |
-
"
|
123 |
-
"Wrong
|
|
|
124 |
"Year","Jahr"
|
125 |
-
"Zero Subtotal Checkout","
|
126 |
-
"Cannot load configuration for payment method "%s"","Konfiguration für diese Zahlmethode "%s" kann nicht geladen werden"
|
127 |
-
"Cannot retrieve payment method instance","Zahlungsmethoden Instanz konnte nicht aufgerufen werden"
|
128 |
-
"Cannot retrieve payment info model object.","Modellobjekt der Zahlungsinfo konnte nicht aufgerufen werden."
|
129 |
-
"Cannot retrieve payment method model object.","Zahlungs-Modellobjekt konnte nicht abgerufen werden."
|
130 |
-
"Overrides API URL that may be specified by a Payment Method","Überschreibt API URL die von der Zahlungsart definiert wurde"
|
131 |
-
"Switch/Solo card issue number: %s","Switch/Solo Karten Vorgangsnummer: %s"
|
1 |
"%s %s cycle.","%s %s Zeitraum."
|
2 |
"--Please Select--","--Bitte wählen--"
|
3 |
+
"3D Secure Card Validation","3D-Secure Kartenüberprüfung"
|
4 |
+
"3D Secure Credit Card Validation","3D-Secure Kreditkarten-Überprüfung"
|
5 |
"<label>Make Check payable to:</label> %s","<label>Scheck ausstellen auf:</label> %s"
|
6 |
"A value is required for live mode. Refer to your CardinalCommerce agreement.","Ein Wert ist erforderlich für den Live-Modus. Ordnen Sie diesen Ihrer CardinalCommerce Bedingung zu."
|
7 |
"Allow Initial Fee Failure","Erlaube einmalig Gebühren Fehler"
|
8 |
+
"An internal reference ID is required to save the payment profile.","Eine interne Referenznummer ist nötig um die Zahlung zu speichern."
|
9 |
"Auto Bill on Next Cycle","Automatische Bezahlung zum nächsten Zeitraum"
|
10 |
"Automatically Invoice All Items","Automatisch alle Artikel in Rechnung stellen"
|
11 |
"Automatically bill the outstanding balance amount in the next billing cycle (if there were failed payments).","Automatisch alle ausstehenden Posten im nächsten Zahlungs-Zeitraum bezahlen (wenn Zahlung ausstehend)."
|
15 |
"Billing Period","Abrechnungs-Periode"
|
16 |
"Billing Period Unit","Abrechnungs-Perioden Einheit"
|
17 |
"Billing period unit is not defined or wrong.","Abrechnungs-Perioden Einheit ist nicht gesetzt oder falsch."
|
18 |
+
"Cannot retrieve payment method instance.","Konnte Zahlart Instanz nicht abfragen."
|
19 |
+
"Cannot retrieve the payment info model object.","Konnte Zahlungsinfo-Modelobjekt nicht abfragen."
|
20 |
+
"Cannot retrieve the payment method model object.","Konnte Zahlart-Modelobjekt nicht abfragen.
|
21 |
"Card Verification Number","Kartenprüfnummer"
|
22 |
"Centinel API URL","Centinel API URL"
|
23 |
"Check / Money Order","Scheck / Zahlungsanweisung"
|
28 |
"Credit Card Types","Kreditkartentypen"
|
29 |
"Currency","Währung"
|
30 |
"Currency code is undefined.","Währungscode ist icht definiert."
|
31 |
+
"Customer ID is not set.","Kundennummer ist nicht gesetzt."
|
32 |
"Day","Tag"
|
33 |
"Debug Mode","Debug Modus"
|
34 |
"Enabled","Aktiviert"
|
35 |
"Expiration Date","Ablaufdatum"
|
36 |
"Expiration Date: %s/%s","Ablaufdatum: %s/%s"
|
37 |
"Full name of the person receiving the product or service paid for by the recurring payment.","Voller Name der Person die den Bezug von wiederkehrenden Artikel- oder Services angemeldet wird."
|
38 |
+
"Initial Fee","Einrichtungsgebühr"
|
39 |
+
"Initial non-recurring payment amount due immediately upon profile creation.","Einrichtungsgebühr für sofortige Wertstellung bei Vertragsabschluss."
|
40 |
+
"Internal Reference ID","Interne Referenznummer"
|
41 |
+
"Issue Number","Ausgabenummer"
|
42 |
"Make Check Payable to","Scheck ausstellen auf"
|
43 |
"Make Check payable to:","Scheck ausstellen auf:"
|
44 |
"Make Check payable to: %s","Scheck ausstellen auf: %s"
|
46 |
"Maximum Order Total","Höchstwert für Gesamtbestellung"
|
47 |
"Maximum Payment Failures","Maximale Zahlungsfehler"
|
48 |
"Maximum Trial Billing Cycles","Maximale Versuche Zahlungszeiträume"
|
49 |
+
"Merchant ID","Verkäufer ID"
|
50 |
"Minimum Order Total","Mindestwert für Gesamtbestellung"
|
51 |
"Month","Monat"
|
52 |
"N/A","Nicht verfügbar"
|
54 |
"Name on the Card","Karteninhaber"
|
55 |
"Name on the Card: %s","Name des Karteninhabers: %s"
|
56 |
"New Order Status","Neuer Bestellstatus"
|
57 |
+
"Number of billing periods that make up one billing cycle.","Anzahl der Zahlungszeiträume, die die einen Abrechnungszeitraum bilden."
|
58 |
+
"Overrides API URL that may be specified by a payment method.","Übergeht Zahlart spezifische API URL."
|
59 |
"Password","Passwort"
|
60 |
+
"Payment ID: %s","Zahlungsnummer: %s"
|
61 |
+
"Payment Method","Zahlart"
|
62 |
+
"Payment Methods","Zahlarten"
|
63 |
+
"Payment Methods Section","Bereich für Zahlarten"
|
64 |
+
"Payment Reference ID","Referenznummer für Zahlungen"
|
65 |
"Payment Services","Zahlungsdienste"
|
66 |
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
67 |
"Payment from Specific Countries","Zahlung aus bestimmten Ländern"
|
68 |
+
"Payment method code is not set.","Zahlart Code ist nicht gesetzt."
|
69 |
+
"Payment method code is undefined.","Zahlart Code ist nicht definiert."
|
70 |
"Payment profile is invalid:\n%s","Zahlungsprofil ist ungültig:\n%s"
|
71 |
+
"Period frequency is wrong.","Häufigkeit ist falsch"
|
72 |
+
"Processor ID","Verarbeiter ID"
|
73 |
"Purchase Order","Abruf aus Auftrag"
|
74 |
"Purchase Order Number","Auftragsnummer"
|
75 |
"Purchase Order Number:","Auftragsnummer"
|
76 |
"Purchase Order Number: %s","Auftragsnummer: %s"
|
77 |
"Recurring Profile Start Date","Startdatum für wiederkehrendes Profil"
|
78 |
"Recurring profile start date has invalid format.","Startdatum für Wiederkehrendes Profil hat ein ungültiges Format."
|
79 |
+
"Reference ID is not set.","Referenznummer ist nicht gesetzt."
|
80 |
"Repeats %s time(s).","Anzahl Wiederholungen %s."
|
81 |
"Repeats until suspended or canceled.","Wiederholungen verschieben oder stornieren."
|
82 |
"Request Card Security Code","Anfrage Karten-Sicherheitscode"
|
86 |
"Send Check to","Scheck senden an"
|
87 |
"Send Check to:","Scheck senden an:"
|
88 |
"Severe 3D Secure Card Validation","3D Secure Karten-Überprüfung"
|
89 |
+
"Severe validation removes chargeback liability on merchant.","Scharfe Prüfung enthebt den Verkäufer vom Zahlungsausfall-Risiko."
|
90 |
"Shipping Amount","Versand-Betrag"
|
91 |
+
"Short description of the recurring payment. By default equals to the product name.",
|
92 |
+
"Kurzbeschreibung der wiederkehrenden Zahlung. Entspricht standardmäßig dem Artikelnamen."
|
93 |
"Sort Order","Reihenfolge"
|
94 |
"Start Date","Start Datum"
|
95 |
"Start date has invalid format.","Start Datum hat ein ungültiges Format."
|
102 |
"Test Mode","Test Modus"
|
103 |
"The date when billing for the profile begins.","Das Datum an dem die Zahlung für das Profil beginnt."
|
104 |
"The number of billing cycles for payment period.","Anzahl der Abrechnungshäufigkeit für die Zahlungs-Periode."
|
105 |
+
"The number of scheduled payments that can fail before the profile is automatically suspended.","Die Anzahl fehlgeschlagener Zahlungen, bevor diese Zahlungsvereinbarung automatisch ausgesetzt wird."
|
106 |
+
"The payment review action is unavailable.","Die Zahlungsbewertungsaktion ist nicht verfügbar."
|
107 |
"Title","Titel"
|
108 |
+
"Trial Billing Amount","Rechnungsbetrag des Testkaufs."
|
109 |
+
"Trial Billing Frequency","Häufigkeit des Testkaufs"
|
110 |
+
"Trial Billing Period Unit","Einheit des Abrechnungszeitraums des Testkaufs"
|
111 |
+
"Trial Period","Testzeitraum"
|
112 |
+
"Trial billing amount is wrong.","Rechnungsbetrag des Testkaufs ist falsch."
|
113 |
+
"Trial billing period unit is wrong.","Einheit des Testzeitraums ist falsch."
|
114 |
+
"Trial period frequency is wrong.","Häufigkeit des Testkaufs ist falsch"
|
115 |
+
"Trial period max cycles is wrong.","Angabe der maximale Wiederholungen des Testzeitraums ist falsch."
|
116 |
"Two Weeks","2 Wochen"
|
117 |
+
"Unable to save Billing Agreement:","Zahlungsvereinbarung konnte nicht gespeichert werden:"
|
118 |
+
"Unit for billing during the subscription period.","Einheit der Zahlungen während der Laufzeit."
|
119 |
+
"Unsupported currency code: %s.","Nicht unterstütztes Währungskürzel: %s."
|
120 |
"Week","Woche"
|
121 |
"What is this?","Was ist das?"
|
122 |
+
"Whether to suspend the payment profile if the initial fee fails or add it to the outstanding balance.",
|
123 |
+
"Soll die Zahlungsvereinbarung ausgesetzt werden, wenn die Einrichtungsgebühr nicht bezahlt wurde, oder sollen die ausstehenden Beträge aufsummiert werden."
|
124 |
+
"Wrong %s specified.","%s falsch."
|
125 |
+
"Wrong or empty billing amount specified.","Falscher oder leerer Rechnungsbetrag angegeben."
|
126 |
"Year","Jahr"
|
127 |
+
"Zero Subtotal Checkout","Bezahlvorgang bei Zwischensumme 0,—"
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Paypal.csv
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
"2-pixel perimeter around the header space.","2-Pixel Grenze um den Kopfbereich."
|
3 |
"3D Secure","3D Secure"
|
4 |
"3D Secure Card Validation","3D Secure Kartenüberprüfung"
|
5 |
-
"3D Secure validation is required for Maestro cards. Supporting of American Express cards require additional agreement. Learn more at <a href="http://www.paypal.com/amexupdate">http://www.paypal.com/amexupdate</a>.","3D Secure Validierung ist erforderlich für Maestro Karten. Unterstützung für American Express Karten setzt eine ergänzende Vereinbarung voraus. Erfahren Sie mehr unter <a href="http://www.paypal.com/amexupdate">http://www.paypal.com/amexupdate</a>."
|
6 |
-
"<a href="http://www.magentocommerce.com/paypal">Start accepting payments via PayPal!</a>","<a href="http://www.magentocommerce.com/paypal">Beginnen Sie Zahlungen per PayPal zu akzeptieren!</a>"
|
7 |
-
"A value is required for live mode. Refer to your CardinalCommerce agreement.","
|
8 |
-
"ACH Deposit (Hold for Dispute or Other Investigation)","ACH
|
9 |
-
"ACH Deposit (Reversal)","ACH
|
10 |
-
"ACH Funding for Funds Recovery from Account Balance","ACH
|
11 |
-
"ACH Withdrawal","ACH
|
12 |
"API Authentication Methods","API Authentifizierungs Methoden"
|
13 |
"API Certificate","API Zertifikat"
|
14 |
"API Password","API Passwort"
|
@@ -22,64 +22,69 @@
|
|
22 |
"Accept payments without customers leaving your website. Many popular web-hosting services and shopping carts come with the Payflow payment gateways built in, so they are easy to set up.","Zahlungen akzeptieren ohne das der Besucher Ihre Seite verlässt. Viele bekannte Web-Hosting Dienste und Warenkörbe besitzen bereits eingebaute Payflow Zahlungs-Gateways, da sie leicht zu konfigurieren sind."
|
23 |
"Acceptance Mark","Akzeptanz-Markierung"
|
24 |
"Acceptance Mark Image","Akzeptanz Markierungs-Bild"
|
25 |
-
"Account-to-Account Payment, initiated by PayPal","Account-
|
26 |
"Add an Express Checkout button to your existing shopping cart for quick and easy credit card payments. PayPal handles all payment processing.","Fügt einen Express Checkout Button zu Ihrem bestehenden Warenkorb für schnelle & einfache Kreditkartenzahlung. PayPal wickelt alle Zahlungsprozesse ab."
|
27 |
-
"Additional Options","
|
28 |
"Address Verification System Response","Adress Überprüfungsantwort vom System"
|
29 |
"All the address information matched","Ale Adressinformationen stimmen überein"
|
30 |
-
"Allow in Billing Agreement Wizard","
|
31 |
-
"Allowable values: "paypal", "primary" (default), your_custom_value (a custom payment page style from your merchant account profile).","Erlaubte Werte: "paypal",
|
32 |
"Allowed Credit Card Types","Erlaubte Kreditkarten-Typen"
|
33 |
-
"Also affects mini-shopping cart.","
|
34 |
-
"
|
35 |
-
"Ask Customer","Ask Customer"
|
36 |
"Attempted Authentication, Bad Result","Versuchte Autorisierung mit negativen Ergebnis"
|
37 |
"Attempted Authentication, Good Result","Versuchte Autorisierung mit positiven Ergebnis"
|
38 |
-
"Auction Payment other than through eBay","
|
39 |
-
"Authenticated, Bad Result","
|
40 |
-
"Authenticated, Good Result","
|
41 |
"Authorization","Autorisierung"
|
|
|
42 |
"Authorization transaction is required to void.","Autorisierte Transaktion ist erforderlich um Aufhebung zu veranlassen."
|
|
|
|
|
43 |
"Auto","Auto"
|
44 |
"AutoSweep","AutoSweep"
|
45 |
-
"Available Balance","
|
46 |
-
"Balance Manager Account Bonus","
|
47 |
"Billing Address","Rechnungsadresse"
|
48 |
-
"Billing Agreement Signup ","
|
49 |
"Billing Information","Rechnungsinformation"
|
50 |
-
"Bonus for first ACH Use","Bonus
|
51 |
-
"Buyer Credit Payment","
|
52 |
-
"
|
|
|
|
|
|
|
|
|
53 |
"CVV2 Check Result by PayPal","CVV2 Ergebnisüberprüfung von PayPal"
|
54 |
"Can not send new order email.","E-Mail für neue Bestellung kann nicht gesendet werden."
|
55 |
-
"Cannot create target file for reading reports.","
|
56 |
"Centinel API URL","Centinel API URL"
|
57 |
-
"Centinel
|
58 |
-
"
|
59 |
-
"Change Payment Method","Zahlmethode ändern"
|
60 |
"Change Shipping Address","Versandadresse ändern"
|
61 |
-
"Charge-off","
|
62 |
-
"Chargeback","
|
63 |
-
"Chargeback by customer.","
|
64 |
-
"Checkout with PayPal","
|
65 |
"Completion Date","Abschluss Datum"
|
66 |
-
"Connecting to PayPal SFTP server to fetch new reports. Are you sure you want to proceed?","
|
67 |
-
"Countries Payment Applicable From","
|
68 |
-
"Coupon Redemption","
|
69 |
-
"Credit","
|
70 |
-
"Credit Card Settings","
|
71 |
-
"Currency Conversion required to cover negative balance","
|
72 |
-
"Custom","
|
73 |
-
"Custom Endpoint Hostname or IP-Address","
|
74 |
-
"Custom Path","
|
75 |
"Customer complaint.","complaint."
|
76 |
-
"Customer did not include a confirmed address.","
|
77 |
-
"Customer triggered a money-back guarantee.","
|
78 |
-
"Daily","
|
79 |
-
"Debit","
|
80 |
-
"Debit Card Cash Back","
|
81 |
-
"Debit Card Transaction","
|
82 |
-
"Debit or Credit","
|
83 |
"Debug Mode","Debug Modus"
|
84 |
"Direct Payment API","Direkt Bezahlungs-API"
|
85 |
"Discount","Rabatt"
|
@@ -87,14 +92,14 @@
|
|
87 |
"Don't have a PayPal account? Simply enter your email address.","Noch kein PayPal Konto? Geben Sie einfach eine E-Mail Adresse in das Feld ein."
|
88 |
"Don’t have a PayPal merchant account? You can still accept credit card payments through the Payflow Pro Gateway.","Sie haben kein PayPal Händlerkonto? Sie können Kreditkarten Zahlungen dennoch über das Payflow Pro Gateway anbieten."
|
89 |
"Dynamic","Dynamisch"
|
90 |
-
"EFT Funding (German banking)","
|
91 |
"Edit Shopping Cart","Warenkorb bearbeiten"
|
92 |
"Email Associated with PayPal Merchant Account","E-Mail Adresse Ihres PayPal Händlerkontos"
|
93 |
-
"Enable Automatic Fetching","
|
94 |
"Enable PayPal Guest Checkout","PayPal Gast Checkout aktivieren"
|
95 |
"Enabled","Aktiviert"
|
96 |
-
"Event","
|
97 |
-
"Event Code","
|
98 |
"Every 10 days","Alle 10 Tage"
|
99 |
"Every 14 days","Alle 14 Tage"
|
100 |
"Every 3 days","Alle 3 Tage"
|
@@ -110,67 +115,69 @@
|
|
110 |
"Express Checkout Settings","Express Checkout Einstellungen"
|
111 |
"Express Checkout and Order have been canceled.","Express Checkout und Bestellung wurden storniert."
|
112 |
"Express Checkout has been canceled.","Express Checkout wurde storniert."
|
113 |
-
"Failed to fetch reports from '%s@%s'.","
|
114 |
"Fee Amount","Gebühren"
|
115 |
-
"Fee Debit or Credit","
|
116 |
-
"Fee Reversal","
|
117 |
-
"Fee: Foreign ACH Withdrawal","
|
118 |
-
"Fee: Mass Pay Request","
|
119 |
-
"Fee: Web Site Payments Pro Account Monthly","
|
120 |
-
"Fee: WorldLink Check Withdrawal","
|
121 |
-
"Fetch","
|
122 |
"Fetch Updates","Aktualisierungen holen"
|
123 |
-
"Fetched %s report rows from '%s@%s'.","
|
124 |
-
"Frontend Experience Settings","Individuelle Gestaltung
|
125 |
-
"Funding","
|
126 |
-
"General (Authorization)","
|
127 |
-
"General (Dividend)","
|
128 |
-
"General (Funds Transfer from PayPal Account to Another)","
|
129 |
-
"General (Purchase with a credit card)","
|
130 |
-
"General Adjustment without businessrelated event","
|
131 |
-
"General Currency Conversion","
|
132 |
-
"General Funding of PayPal Account ","
|
133 |
-
"General Redemption","
|
134 |
-
"General Withdrawal from PayPal Account","
|
135 |
-
"General. Product no longer supported","
|
136 |
-
"General: Use of PayPal account for purchasing as well as receiving payments","
|
137 |
-
"General: Withdrawal from PayPal Account","
|
138 |
-
"General: Withdrawal to Non-Bank Entity","
|
139 |
-
"General: adjustment of a type not belonging to the other T12xx categories","
|
140 |
-
"General: bonus of a type not belonging to the other T08xx categories","
|
141 |
-
"General: event not yet categorized","
|
142 |
-
"General: non-payment fee of a type not belonging to the other T01xx categories","
|
143 |
-
"General: received payment of a type not belonging to the other T00xx categories","
|
144 |
-
"General: reversal of a type not belonging to the other T11xx categories","
|
145 |
-
"General: temporary hold of a type not belonging to the other T15xx categories","
|
146 |
-
"Get Credentials from PayPal","
|
147 |
-
"Gift Certificate Payment: purchase of Gift Certificate","
|
148 |
-
"Gift Certificate Redemption","
|
149 |
"Gross Amount","Brutto Betrag"
|
150 |
"Header Background Color","Hintergrundfarbe für den Kopfbereich"
|
151 |
"Header Border Color","Randfarbe für den Kopfbereich"
|
152 |
"Header Image URL","Bild URL für den Kopfbereich"
|
153 |
"Help","Hilfe"
|
154 |
-
"Hidden Virtual PayPal Debit Card Transaction","
|
155 |
-
"Hold for Dispute Investigation","
|
156 |
-
"IPN "%s".","IPN "%s"."
|
157 |
-
"If empty, a default value will be used. Custom URL may be provided by CardinalCommerce agreement.","
|
158 |
"If not specified, Default Country from General Config will be used","Wenn nicht festgelegt, wird das Standardland der Konfiguration verwendet"
|
159 |
-
"If this option is enabled, customer can change shipping address and shipping method on PayPal website. In live mode works via HTTPS protocol only.","
|
160 |
-
"Impossible to issue a refund transaction because the capture transaction does not exist.","
|
161 |
-
"Incentive","
|
162 |
"Initiation Date","Start Datum"
|
|
|
|
|
163 |
"Invoice ID","Rechnungs-ID"
|
164 |
-
"Issuer Liability","
|
165 |
-
"It is recommended to set this value to "Debit or Credit Card" per store views.","
|
166 |
-
"It is recommended to set this value to "PayPal" per store views.","
|
167 |
-
"Items in Your Shopping Cart","
|
168 |
-
"Last Correlation ID","
|
169 |
-
"Last Transaction ID","Letzte
|
170 |
"Learn More","Mehr erfahren"
|
171 |
"Login","Anmelden"
|
172 |
-
"Looking for PayPal? We have our own tab to the left under Sales.","Sie suchen nach PayPal? Wir haben unser eigenes Tab auf der linken Seite im Bereich
|
173 |
-
"Mass Pay Payment","Mass Pay
|
174 |
"Matched (CVV2)","(CVV2) angeglichen"
|
175 |
"Matched (CVV2CSC)","(CVV2CSC) angeglichen"
|
176 |
"Matched Address only (no ZIP)","Nur Adresse angeglichen (keine Postleitzahl)"
|
@@ -182,16 +189,16 @@
|
|
182 |
"Merchant Country","Händler-Land"
|
183 |
"Merchant Liability","Händler Belastung"
|
184 |
"Merchant Protection Eligibility","Händler Schutz-Berechtigung"
|
185 |
-
"Merchant Referral Bonus","
|
186 |
-
"Merchant holds a non-U.S. account and does not have a withdrawal mechanism.","
|
187 |
-
"Merchant reference ID format is not supported.","
|
188 |
-
"Merchants need to apply to PayPal for enabling billing agreements feature. Do not enable this option until PayPal confirms that billing agreements are enabled for your merchant account.","
|
189 |
-
"Mobile Payment (made via a mobile phone)","
|
190 |
"N/A","Nicht verfügbar"
|
191 |
"N/A. Address not checked, or acquirer had no response. Service not available","Nicht verfügbar - Adresse nicht überprüft, oder der Absender gibt keine Antwort. Service nicht verfügbar"
|
192 |
-
"N/A. Global Unavailable","
|
193 |
"N/A. International Unavailable","International - nicht verfügbar"
|
194 |
-
"N/A. Merchant has indicated that CVV2 is not present on card","
|
195 |
"N/A. No response","Nicht verfügbar - keine Antwort"
|
196 |
"N/A. Not allowed for MOTO (Internet/Phone) transactions","Nicht verfügbar - für MOTO (Internet/Telefon) Transaktionen"
|
197 |
"N/A. Not processed","Nicht verfügbar - nicht verarbeitet"
|
@@ -202,7 +209,7 @@
|
|
202 |
"N/A. The merchant did not provide AVS information","Nicht verfügbar - der Händler unterstützt keine AVS Information"
|
203 |
"N/A. The merchant has not implemented CVV2 code handling","Nicht verfügbar - der Händler hat CVV2 Code verarbeitung nicht implementiert"
|
204 |
"N/A. Unavailable","Nicht verfügber / Nicht erreichbar"
|
205 |
-
"Negative Balance","
|
206 |
"Never","Nie"
|
207 |
"No","Nein"
|
208 |
"No Details matched","Keine Details übereinstimmend"
|
@@ -210,33 +217,41 @@
|
|
210 |
"No Liability Shift","Keine Haftungsumkehr"
|
211 |
"No Logo","Kein Logo"
|
212 |
"No match","Keine Anpassung"
|
213 |
-
"None of the address information matched","
|
214 |
"Note: %s","Bemerkung: %s"
|
215 |
-
"Nothing to fetch because of an empty configuration.","
|
216 |
-
"Notice that PayPal can handle up to 10 shipping options. That is why Magento will transfer only first 10 cheapest shipping options if there are more than 10 available.","
|
217 |
"Notified customer about creditmemo #%s.","Kunde über Gutschrift informiert #%s."
|
218 |
"Notified customer about invoice #%s.","Kunde über Rechnung #%s informiert."
|
219 |
"Now accepting PayPal (150 X 40)","Wir akzeptieren PayPal (150 X 40)"
|
220 |
"Now accepting PayPal (150 X 60)","Wir akzeptieren PayPal (150 X 60)"
|
|
|
221 |
"Open Authorization","Offene Authorisierung"
|
222 |
"Order","Bestellung"
|
223 |
"Order ID","Bestell ID"
|
|
|
|
|
|
|
224 |
"Page Background Color","Hintergrundfarbe der Seite"
|
225 |
"Page Style","Seiten Gestaltung"
|
226 |
-
"Part of the address information matched","
|
227 |
"Partner","Partner"
|
|
|
|
|
228 |
"Password","Passwort"
|
229 |
"Pay Now","Jetzt bezahlen"
|
230 |
"PayPal","PayPal"
|
231 |
-
"PayPal Balance Manager function of PayPal account","PayPal
|
232 |
-
"PayPal Buyer Warranty Bonus","PayPal Käufer
|
233 |
-
"PayPal Debit Card Cash Advance","PayPal
|
234 |
-
"PayPal Debit Card Withdrawal from ATM","PayPal
|
235 |
"PayPal Express Checkout Shortcut Wrapper","PayPal Express Checkout Shortcut Wrapper"
|
236 |
"PayPal Express Checkout Token does not exist.","PayPal Express Checkout Merkmal existiert nicht."
|
237 |
"PayPal Express Order Review Form","PayPal Express Bestell Übersichts-Formular"
|
238 |
"PayPal Fee Information","PayPal Gebühren Information"
|
239 |
"PayPal Merchant Pages Style","PayPal Händler Seiten Stil"
|
|
|
|
|
240 |
"PayPal Product Logo","PayPal Artikel Logo"
|
241 |
"PayPal Protection Bonus","PayPal Schutz Bonus"
|
242 |
"PayPal Reference ID","PayPal Referenz-ID"
|
@@ -244,11 +259,11 @@
|
|
244 |
"PayPal Settlement Reports","PayPal Abrechnungen"
|
245 |
"PayPal certificate does not exist.","PayPal Zertifikat existiert nicht."
|
246 |
"PayPal certificate file is empty.","PayPal Zertifikatsdatei ist leer."
|
247 |
-
"PayPal does not support processing orders with zero amount. To complete your purchase, proceed to the standard checkout process.","PayPal
|
248 |
-
"PayPal gateway has rejected request. %s","PayPal
|
249 |
"PayPal processes all of your orders, and you get paid.","PayPal wickelt alle Ihre Bestellungen ab und Sie werden bezahlt."
|
250 |
-
"PayPal response hasn't required fields.","PayPal
|
251 |
-
"PayPal retains reports for 45 days.","PayPal
|
252 |
"PayPal/Centinel Electronic Commerce Indicator","PayPal/Centinel Electronic Commerce Indikator"
|
253 |
"PayPal/Centinel Visa Payer Authentication Service Result","PayPal/Centinel Visa Zahler Authentifizierungs-Dienst Ergebnis"
|
254 |
"Payer Address ID","Bezahler Adress ID"
|
@@ -262,163 +277,155 @@
|
|
262 |
"Payflow Link Settings","Payflow Link Einstellungen"
|
263 |
"Payflow Pro Gateway","Payflow Pro Gateway"
|
264 |
"Payflow Pro Settings","Payflow Pro Einstellungen"
|
265 |
-
"Payment Action","
|
266 |
-
"Payment Applicable From","
|
267 |
-
"Payment Method","
|
268 |
-
"Payment Refund initiated by merchant","
|
269 |
-
"Payment has been declined. Please try again.","
|
270 |
"Payments by PayPal (150 X 40)","Zahlungen per PayPal (150 X 40)"
|
271 |
"Payments by PayPal (150 X 60)","Zahlungen per PayPal (150 X 60)"
|
272 |
-
"Payments by cards + seller protection - <strong style="color:red">Contact PayPal before activating</strong>","
|
273 |
"Paypal Billing Agreement Settings","Einstellungen für Paypal Bestellbedingungen"
|
274 |
"Pending PayPal","PayPal ausstehend"
|
275 |
"Place Order","Bestellung abschließen"
|
|
|
276 |
"Please do not refresh the page until you complete payment.","Bitte nicht die Seite neu laden bevor die Zahlung abgeschlossen wurde."
|
277 |
"Please select a shipping method...","Bitte wählen Sie eine Versandart..."
|
278 |
-
"Points Incentive Redemption","
|
279 |
-
"Postage Payment to either USPS or UPS","
|
280 |
-
"Preapproved Payment (BillUser API), either sent or received","
|
281 |
-
"Preapproved Payment ID","
|
282 |
"Price","Preis"
|
283 |
"Process credit cards directly on your website with PayPal’s all-in-one online payment processing solution.","Wickeln Sie Kreditkartenzahlung direkt auf Ihrer Website mit PayPal's all-in-one Zahlungsverarbeitungs-Lösung."
|
284 |
"Product Name","Artikelname"
|
285 |
"Proxy Host","Proxy Host"
|
286 |
"Proxy Port","Proxy Port"
|
287 |
"Qty","Menge"
|
288 |
-
"Quick set-up service lets your customers securely complete transactions.","
|
289 |
-
"Reauthorization","
|
290 |
-
"Reference Information","
|
291 |
-
"Refund issued by merchant.","
|
292 |
-
"Reimbursement for a chargeback.","
|
293 |
-
"Reimbursement of Chargeback","
|
294 |
"Report Date","Bericht Datum"
|
295 |
-
"Reports","
|
296 |
-
"Require CVV Entry","
|
297 |
-
"Reversal","
|
298 |
-
"Reversal of General Account Hold","
|
299 |
-
"Reversal of Points Usage","
|
300 |
-
"Reversal of an adjustment.","
|
301 |
-
"Reversal of hold for Dispute Investigation","
|
302 |
"Review Order","Bestellübersicht"
|
303 |
-
"Reward Voucher Redemption","
|
304 |
"SFTP Credentials","SFTP Zugangsdaten"
|
305 |
"Sale","Verkauf"
|
306 |
-
"Sales","
|
307 |
-
"Sandbox Credentials","Sandbox
|
308 |
"Sandbox Mode","Sandbox Modus"
|
309 |
-
"Schedule","
|
310 |
-
"Schedule description is too long.","
|
311 |
-
"Scheduled Fetching","
|
312 |
"Select a PayPal Solution","Wählen Sie eine PayPal Lösung"
|
313 |
"Settlement Consolidation","Abwicklungs-Konsolidierung"
|
314 |
"Settlement Report Settings","Abwicklungsbericht Einstellungen"
|
315 |
-
"Settlement of a chargeback.","
|
316 |
"Severe 3D Secure Card Validation","3D Sichere Karten-Überprüfung (Streng)"
|
317 |
-
"Severe Validation Removes Chargeback Liability on Merchant","
|
318 |
-
"Severe validation removes chargeback liability on merchant.","
|
319 |
"Shipping","Versand"
|
320 |
"Shipping Address","Versandadresse"
|
321 |
"Shipping Information","Versandinformation"
|
322 |
"Shipping Method","Versandart"
|
323 |
"Shop now using (150 X 40)","Shop verwendet jetzt (150 X 40)"
|
324 |
"Shop now using (150 X 60)","Shop verwendet jetzt (150 X 60)"
|
325 |
-
"Shortcut","
|
326 |
-
"Shortcut Buttons Flavor","
|
327 |
-
"Shortcut on Product View","
|
328 |
-
"Shortcut on Shopping Cart","
|
329 |
-
"Sign a billing agreement to streamline further purchases with PayPal.","
|
330 |
"Solo","Solo"
|
331 |
"Sorry, no quotes are available for this order at this time.","Entschuldigung, momentan gibt es keine Angebote für diese Bestellung."
|
332 |
"Sort Order","Reihenfolge"
|
|
|
|
|
333 |
"Static","Statisch"
|
334 |
"Submitting order information...","Bestellung wird übermittelt..."
|
335 |
-
"Subscriber name is too long.","
|
336 |
-
"Subscription ID","
|
337 |
-
"Subscription Payment, either payment sent or payment received","
|
338 |
"Subtotal","Zwischensumme"
|
339 |
-
"Summary Text for Aggregated Cart","
|
340 |
-
"Supporting of American Express cards require additional agreement. Learn more at <a href="http://www.paypal.com/amexupdate">http://www.paypal.com/amexupdate</a>.","Unterstützung von American Express Karten erfordert
|
341 |
"Switch/Maestro","Switch/Maestro"
|
342 |
-
"Test Mode","Test
|
343 |
"The background color for the checkout page around the header and payment form.","Die Hintergrundfarbe für die Checkout Seite rund um den Kopfbreich und dem Zahlungsformular."
|
344 |
-
"The background color for the header of the checkout page. Case-insensitive six-character HTML hexadecimal color code in ASCII.","
|
345 |
-
"The
|
|
|
|
|
346 |
"The merchant account is not yet verified.","Das Händlerkonto ist noch nicht verifiziert."
|
347 |
-
"The payment curency does not match any of the merchant\'s balances currency.","
|
348 |
-
"The payment eCheck is not yet cleared.","
|
349 |
-
"The payment is authorized but not settled.","
|
350 |
-
"The payment is pending because it was made to an email address that is not yet registered or confirmed.","
|
351 |
-
"The payment is pending while it is being reviewed by PayPal for risk.","
|
352 |
-
"The payment was made via credit card. In order to receive funds merchant must upgrade account to Business or Premier status.","
|
353 |
"There was an error processing your order. Please contact us or try again later.","Bei der Verarbeitung Ihrer Bestellung ist ein Fehler aufgetreten. Kontaktieren Sie uns oder probieren Sie es bitte später erneut."
|
354 |
"Time of Day","Tageszeit"
|
355 |
-
"Title","
|
356 |
-
"Transaction ID","
|
357 |
"Transaction Information","Transaktions-Information"
|
358 |
-
"Transfer Cart Line Items","
|
359 |
-
"Transfer Shipping Options","
|
360 |
-
"Triggered Fraud Filters","
|
361 |
-
"Unable to cancel Express Checkout.","
|
362 |
-
"Unable to change status. Current status is not correspond to real status.","
|
363 |
-
"Unable to communicate with the PayPal gateway.","
|
364 |
-
"Unable to initialize Express Checkout review.","
|
365 |
-
"Unable to initialize Express Checkout.","
|
366 |
-
"Unable to place the order.","
|
367 |
-
"Unable to process Express Checkout approval.","
|
368 |
-
"Unable to start Express Checkout.","
|
369 |
-
"Unable to update shipping method.","
|
370 |
-
"Unknown reason. Please contact PayPal customer service.","
|
371 |
"Update Shipping Method","Versandmethode aktualisieren"
|
372 |
"Use Proxy","Proxy verwenden"
|
373 |
-
"Use colon to specify port. For example: "test.example.com:5224".","
|
374 |
-
"User","
|
375 |
-
"User-initiated Currency Conversion","
|
376 |
-
"Uses store frontend name by default.","
|
377 |
"Vendor","Kreditor / Lieferant"
|
378 |
"View","Ansicht"
|
379 |
-
"View Demo","Demo
|
380 |
-
"View PayPal solutions.","PayPal-Lösungen
|
381 |
-
"View Transaction","
|
382 |
-
"View Transaction Details","
|
383 |
-
"Virtual PayPal Debit Card Transaction","
|
384 |
-
"Virtual Terminal Payment","
|
385 |
-
"Void","
|
386 |
"We prefer PayPal (150 X 40)","Wir empfehlen PayPal (150 X 40)"
|
387 |
"We prefer PayPal (150 X 60)","Wir empfehlen PayPal (150 X 60)"
|
|
|
|
|
388 |
"Website Payments Pro","Website Payments Pro"
|
389 |
"Website Payments Pro (Payflow Edition) Settings","Website Payments Pro (Payflow Edition) Einstellungen"
|
390 |
-
"Website Payments Pro Hosted Solution
|
391 |
-
"Website Payments Pro Hosted Solution Settings","Website Payments Pro Hosted Solution
|
392 |
"Website Payments Pro Payflow Edition (includes Express Checkout)","Website Payments Pro Payflow Edition (enthällt Express Checkout)"
|
393 |
"Website Payments Pro Settings","Website Payments Pro Einstellungen"
|
394 |
"Website Payments Standard","Website Payments Standard"
|
395 |
-
"Website Payments Standard Payment","Website Payments Standard
|
396 |
"Website Payments Standard Settings","Website Payments Standard Einstellungen"
|
397 |
"What is PayPal?","Was ist PayPal?"
|
398 |
-
"Whether to create a billing agreement, if there are no active billing agreements available.","
|
399 |
-
"Will appear as a payment option only for customers who have at least one active billing agreement.","
|
400 |
-
"WorldLink Withdrawal","WorldLink
|
401 |
-
"Would you like to sign a billing agreement to streamline further purchases with PayPal?","
|
402 |
-
"Wrong PayPal Express Checkout Token specified.","
|
403 |
"Yes","Ja"
|
404 |
-
"Yes. Matched Address and five-didgit ZIP","
|
405 |
"You will be redirected to the PayPal website in a few seconds.","Sie werden in wenigen Sekunden zu PayPal weitergeleitet."
|
406 |
"You will be redirected to the PayPal website when you place an order.","Sie werden zur PayPal Webseite weitergeleitet wenn Sie die Bestellung abschließen."
|
407 |
"You will be redirected to the PayPal website.","Sie werden zur PayPal Webseite umgeleitet."
|
408 |
-
"You will be required to enter your payment details after you place an order.","
|
409 |
"eBay Auction Payment","eBay Auktionszahlung"
|
410 |
-
"Debit or Credit Card","Lastschrift oder Kreditkarte"
|
411 |
-
"Debug Flag","Debug Flagge"
|
412 |
-
"Does not work if there are more than 10 shipping options available.","Does not work if there are more than 10 shipping options available."
|
413 |
-
"Express Checkout and Order have been cancelled.","Express Checkout und Bestellung wurde storniert."
|
414 |
-
"Express Checkout has been cancelled.","Express Checkout wurde storniert."
|
415 |
-
"Merchant has indicated that CVV2 is not present on card","Der Händler hat festgestellt das CVV2 nicht auf der Karte verfügbar ist"
|
416 |
-
"None of the address information matched.","Keine der Adress-Informationen stimmen überein."
|
417 |
-
"Part of the address information matched.","Ein Teil der Adress-Daten stimmt überein."
|
418 |
-
"PayPal IPN postback Validation error: %s","PayPal IPN postback Validation error: %s"
|
419 |
-
"PayPal geteway rejected request. %s","PayPal geteway Ablehnungs Anfrage. %s"
|
420 |
-
"Place an Order","Bestellung abschließen"
|
421 |
-
"Sandbox Flag","Sandbox Flagge"
|
422 |
-
"Sort order","Reihenfolge"
|
423 |
-
"Unable to calculate cart line item totals.","Unable to calculate cart line item totals."
|
424 |
-
"Unable to communicate with PayPal gateway.","Unable to communicate with PayPal gateway."
|
2 |
"2-pixel perimeter around the header space.","2-Pixel Grenze um den Kopfbereich."
|
3 |
"3D Secure","3D Secure"
|
4 |
"3D Secure Card Validation","3D Secure Kartenüberprüfung"
|
5 |
+
"3D Secure validation is required for Maestro cards. Supporting of American Express cards require additional agreement. Learn more at <a href=""http://www.paypal.com/amexupdate"">http://www.paypal.com/amexupdate</a>.","3D Secure Validierung ist erforderlich für Maestro Karten. Unterstützung für American Express Karten setzt eine ergänzende Vereinbarung voraus. Erfahren Sie mehr unter <a href=""http://www.paypal.com/amexupdate"">http://www.paypal.com/amexupdate</a>."
|
6 |
+
"<a href=""http://www.magentocommerce.com/paypal"">Start accepting payments via PayPal!</a>","<a href=""http://www.magentocommerce.com/paypal"">Beginnen Sie Zahlungen per PayPal zu akzeptieren!</a>"
|
7 |
+
"A value is required for live mode. Refer to your CardinalCommerce agreement.","Für den Live-Modus ist ein Wert erforderlich. Sehen Sie dazu bitte in Ihrem CardinalCommerce Vertrag nach."
|
8 |
+
"ACH Deposit (Hold for Dispute or Other Investigation)","ACH Kaution (Reservierter Betrag für Auseinandersetzungen oder andere Prüfungen)"
|
9 |
+
"ACH Deposit (Reversal)","ACH Kaution (Freigabe)"
|
10 |
+
"ACH Funding for Funds Recovery from Account Balance","ACH Finanzierung für Sicherungseinlagen über Kontoausgleich"
|
11 |
+
"ACH Withdrawal","ACH Abbuchung"
|
12 |
"API Authentication Methods","API Authentifizierungs Methoden"
|
13 |
"API Certificate","API Zertifikat"
|
14 |
"API Password","API Passwort"
|
22 |
"Accept payments without customers leaving your website. Many popular web-hosting services and shopping carts come with the Payflow payment gateways built in, so they are easy to set up.","Zahlungen akzeptieren ohne das der Besucher Ihre Seite verlässt. Viele bekannte Web-Hosting Dienste und Warenkörbe besitzen bereits eingebaute Payflow Zahlungs-Gateways, da sie leicht zu konfigurieren sind."
|
23 |
"Acceptance Mark","Akzeptanz-Markierung"
|
24 |
"Acceptance Mark Image","Akzeptanz Markierungs-Bild"
|
25 |
+
"Account-to-Account Payment, initiated by PayPal","Account-zu-Account Zahlung, ausgelöst durch PayPal"
|
26 |
"Add an Express Checkout button to your existing shopping cart for quick and easy credit card payments. PayPal handles all payment processing.","Fügt einen Express Checkout Button zu Ihrem bestehenden Warenkorb für schnelle & einfache Kreditkartenzahlung. PayPal wickelt alle Zahlungsprozesse ab."
|
27 |
+
"Additional Options","Zusätzliche Optionen"
|
28 |
"Address Verification System Response","Adress Überprüfungsantwort vom System"
|
29 |
"All the address information matched","Ale Adressinformationen stimmen überein"
|
30 |
+
"Allow in Billing Agreement Wizard","Im Zahlungsvereinbarungsassistenen erlauben"
|
31 |
+
"Allowable values: ""paypal"", ""primary"" (default), your_custom_value (a custom payment page style from your merchant account profile).","Erlaubte Werte: ""paypal"",""primär"" (Standard), eigener_wert (ein eigener Zahlungsseiten-Stil von Ihrem Händlerkonto-Profil)."
|
32 |
"Allowed Credit Card Types","Erlaubte Kreditkarten-Typen"
|
33 |
+
"Also affects mini-shopping cart.","Dies betrifft ebenso den Mini-Warenkorb."
|
34 |
+
"Ask Customer","Kunde fragen"
|
|
|
35 |
"Attempted Authentication, Bad Result","Versuchte Autorisierung mit negativen Ergebnis"
|
36 |
"Attempted Authentication, Good Result","Versuchte Autorisierung mit positiven Ergebnis"
|
37 |
+
"Auction Payment other than through eBay","Auktion über einen anderen Dienstleister"
|
38 |
+
"Authenticated, Bad Result","Authentifiziert, negatives Ergebnis"
|
39 |
+
"Authenticated, Good Result","Authentifiziert, positives Ergebnis"
|
40 |
"Authorization","Autorisierung"
|
41 |
+
"Authorization Honor Period (days)","Reservierungsdauer in Tagen"
|
42 |
"Authorization transaction is required to void.","Autorisierte Transaktion ist erforderlich um Aufhebung zu veranlassen."
|
43 |
+
"Authorized amount of %s.","Betrag in Höhe von %s authorisiert."
|
44 |
+
"Authorizing amount of %s is pending approval on gateway.","Authorisierung des Betrags %s ausstehend."
|
45 |
"Auto","Auto"
|
46 |
"AutoSweep","AutoSweep"
|
47 |
+
"Available Balance","Verfügbarer Kontostand"
|
48 |
+
"Balance Manager Account Bonus","Kontostand Manager Kontobonus"
|
49 |
"Billing Address","Rechnungsadresse"
|
50 |
+
"Billing Agreement Signup ","Anmeldung zu Zahlungsvereinbarungen "
|
51 |
"Billing Information","Rechnungsinformation"
|
52 |
+
"Bonus for first ACH Use","Bonus für vorranginge Verwendung von ACH"
|
53 |
+
"Buyer Credit Payment","Käufer Kreditkartenzahlung"
|
54 |
+
"Buyer\'s Tax ID","Steuernummer des Käufers"
|
55 |
+
"Buyer\'s Tax ID Type","Steuernummerart des Käufers"
|
56 |
+
"By default it is ""reports.paypal.com"".","Standardmäßig ist es ""reports.paypal.com""."
|
57 |
+
"CNPJ","CNPJ"
|
58 |
+
"CPF","CPF"
|
59 |
"CVV2 Check Result by PayPal","CVV2 Ergebnisüberprüfung von PayPal"
|
60 |
"Can not send new order email.","E-Mail für neue Bestellung kann nicht gesendet werden."
|
61 |
+
"Cannot create target file for reading reports.","Zieldatei zum Lesen der Berichte konnte nicht erstellt werden."
|
62 |
"Centinel API URL","Centinel API URL"
|
63 |
+
"Centinel Custom API URL","Centinel Custom API URL"
|
64 |
+
"Change Payment Method","Zahlart ändern"
|
|
|
65 |
"Change Shipping Address","Versandadresse ändern"
|
66 |
+
"Charge-off","Ausbuchung"
|
67 |
+
"Chargeback","Rückverrechnung"
|
68 |
+
"Chargeback by customer.","Rückverrechnung durch Kunden."
|
69 |
+
"Checkout with PayPal","Mit PayPal bezahlen"
|
70 |
"Completion Date","Abschluss Datum"
|
71 |
+
"Connecting to PayPal SFTP server to fetch new reports. Are you sure you want to proceed?","Verbindung zum PayPal SFTP Server wird hergestellt, um neue Berichte abzuholen. Wirklich fortfahren?"
|
72 |
+
"Countries Payment Applicable From","Für Zahlungen zugelassene Länder"
|
73 |
+
"Coupon Redemption","Gutscheineinlösung"
|
74 |
+
"Credit","Guthaben"
|
75 |
+
"Credit Card Settings","Kreditkarten Einstellungen"
|
76 |
+
"Currency Conversion required to cover negative balance","Währungsumrechnung erforderlich, um negativen Kontostand zu decken"
|
77 |
+
"Custom","Benutzerdefiniert"
|
78 |
+
"Custom Endpoint Hostname or IP-Address","Benutzerdefinierter Endpunkt-Hostname oderr IP-Adresse"
|
79 |
+
"Custom Path","Benutzerdefinierter Pfad"
|
80 |
"Customer complaint.","complaint."
|
81 |
+
"Customer did not include a confirmed address.","Kunde hat keine bestätigte Anschrift angegeben."
|
82 |
+
"Customer triggered a money-back guarantee.","Kunde hat ""Geld zurück""-Garantie ausgelöst."
|
83 |
+
"Daily","Täglich"
|
84 |
+
"Debit","Lastschrift"
|
85 |
+
"Debit Card Cash Back","Lastschriftkarte Rückbuchung"
|
86 |
+
"Debit Card Transaction","Lastschriftkarte Transaktion"
|
87 |
+
"Debit or Credit","Lastschrift- oder Kreditkarte"
|
88 |
"Debug Mode","Debug Modus"
|
89 |
"Direct Payment API","Direkt Bezahlungs-API"
|
90 |
"Discount","Rabatt"
|
92 |
"Don't have a PayPal account? Simply enter your email address.","Noch kein PayPal Konto? Geben Sie einfach eine E-Mail Adresse in das Feld ein."
|
93 |
"Don’t have a PayPal merchant account? You can still accept credit card payments through the Payflow Pro Gateway.","Sie haben kein PayPal Händlerkonto? Sie können Kreditkarten Zahlungen dennoch über das Payflow Pro Gateway anbieten."
|
94 |
"Dynamic","Dynamisch"
|
95 |
+
"EFT Funding (German banking)","Elektronischer Zahlungsvorgang (Deutschland)"
|
96 |
"Edit Shopping Cart","Warenkorb bearbeiten"
|
97 |
"Email Associated with PayPal Merchant Account","E-Mail Adresse Ihres PayPal Händlerkontos"
|
98 |
+
"Enable Automatic Fetching","Automatische Abholung aktivieren"
|
99 |
"Enable PayPal Guest Checkout","PayPal Gast Checkout aktivieren"
|
100 |
"Enabled","Aktiviert"
|
101 |
+
"Event","Vorgang"
|
102 |
+
"Event Code","Vorgangscode"
|
103 |
"Every 10 days","Alle 10 Tage"
|
104 |
"Every 14 days","Alle 14 Tage"
|
105 |
"Every 3 days","Alle 3 Tage"
|
115 |
"Express Checkout Settings","Express Checkout Einstellungen"
|
116 |
"Express Checkout and Order have been canceled.","Express Checkout und Bestellung wurden storniert."
|
117 |
"Express Checkout has been canceled.","Express Checkout wurde storniert."
|
118 |
+
"Failed to fetch reports from '%s@%s'.","Fehler beim Abholen der Reporte von '%s@%s'."
|
119 |
"Fee Amount","Gebühren"
|
120 |
+
"Fee Debit or Credit","Debit- oder Kreditkartengebühr"
|
121 |
+
"Fee Reversal","Stornogebühr"
|
122 |
+
"Fee: Foreign ACH Withdrawal","Gebühr: Ausländische ACH Abbuchung"
|
123 |
+
"Fee: Mass Pay Request","Gebühr: Massenzahlungsanforderung"
|
124 |
+
"Fee: Web Site Payments Pro Account Monthly","Gebühr: Web Site Payments Pro Account Monatlich"
|
125 |
+
"Fee: WorldLink Check Withdrawal","Gebühr: WorldLink Scheckabbuchung"
|
126 |
+
"Fetch","Abholen"
|
127 |
"Fetch Updates","Aktualisierungen holen"
|
128 |
+
"Fetched %s report rows from '%s@%s'.","%s Zeilen des Reports von '%s@%s' abgeholt."
|
129 |
+
"Frontend Experience Settings","Individuelle Gestaltung"
|
130 |
+
"Funding","Finanzierung"
|
131 |
+
"General (Authorization)","Allgemein (Autorisation)"
|
132 |
+
"General (Dividend)","Allgemein (Dividende)"
|
133 |
+
"General (Funds Transfer from PayPal Account to Another)","Allgemein (Guthabenübertragung zwischen zwei PayPal-Konten)"
|
134 |
+
"General (Purchase with a credit card)","Allgemein (Kauf per Kreditkarte)"
|
135 |
+
"General Adjustment without businessrelated event","Allgemeine Anpassung ohne Geschäftsvorfall"
|
136 |
+
"General Currency Conversion","Allgemeine Währungsumrechnung"
|
137 |
+
"General Funding of PayPal Account ","Allgemeine Finanzierung des PayPalkontos "
|
138 |
+
"General Redemption","Allgemeine Rückzahlung"
|
139 |
+
"General Withdrawal from PayPal Account","Allgemeine Abbuchung vom PayPalkonto"
|
140 |
+
"General. Product no longer supported","Allgemein: Service wird nicht länger angeboten"
|
141 |
+
"General: Use of PayPal account for purchasing as well as receiving payments","Allgemein: Verwendung des PayPalkontos für Einkäufe und erhaltene Zahlungen"
|
142 |
+
"General: Withdrawal from PayPal Account","Allgemein: Abbuchung vom PayPalkonto"
|
143 |
+
"General: Withdrawal to Non-Bank Entity","Allgemein: Abbuchung auf bankfremdes Unternehmen"
|
144 |
+
"General: adjustment of a type not belonging to the other T12xx categories","Allgemein: Anpassung auf einen Typen, der nicht zu den restlichen T12xx Kategorien gehört"
|
145 |
+
"General: bonus of a type not belonging to the other T08xx categories","Allgemein: Anpassung auf einen Typen, der nicht zu den restlichen T08xx Kategorien gehört"
|
146 |
+
"General: event not yet categorized","Allgemein: Vorgang noch nicht kategorisiert"
|
147 |
+
"General: non-payment fee of a type not belonging to the other T01xx categories","Allgemein: Gebühr für Nichtzahlung eines Typs, der nicht zu den restlichen T01xx Kategorien gehört"
|
148 |
+
"General: received payment of a type not belonging to the other T00xx categories","Allgemein: Zahlung eines Typs erhalten, der nicht zu den restlichen T01xx Kategorien gehört"
|
149 |
+
"General: reversal of a type not belonging to the other T11xx categories","Allgemein: Storno eines Typs, der nicht zu den restlichen T11xx Kategorien gehört"
|
150 |
+
"General: temporary hold of a type not belonging to the other T15xx categories","Allgemein: Vorübergehende Zurückstellung eines Typs, der nicht zu den restlichen T15xx Kategorien gehört"
|
151 |
+
"Get Credentials from PayPal","Zugangsdaten von PayPal erhalten"
|
152 |
+
"Gift Certificate Payment: purchase of Gift Certificate","Zahlung mit Geschenkgutschein: Kauf eines Gutscheins"
|
153 |
+
"Gift Certificate Redemption","Gutschein einlösen"
|
154 |
"Gross Amount","Brutto Betrag"
|
155 |
"Header Background Color","Hintergrundfarbe für den Kopfbereich"
|
156 |
"Header Border Color","Randfarbe für den Kopfbereich"
|
157 |
"Header Image URL","Bild URL für den Kopfbereich"
|
158 |
"Help","Hilfe"
|
159 |
+
"Hidden Virtual PayPal Debit Card Transaction","Versteckte virtuelle Lastschriftkarten-Transaktion"
|
160 |
+
"Hold for Dispute Investigation","Zurückstellung wegen Betrugsuntersuchung"
|
161 |
+
"IPN ""%s"".","IPN ""%s""."
|
162 |
+
"If empty, a default value will be used. Custom URL may be provided by CardinalCommerce agreement.","Wenn dieses Feld leer bleibt, wird ein Standardwert verwendet. Eine individuelle URL kann in Ihrem CardinalCommerce Vertrag enthalten sein."
|
163 |
"If not specified, Default Country from General Config will be used","Wenn nicht festgelegt, wird das Standardland der Konfiguration verwendet"
|
164 |
+
"If this option is enabled, customer can change shipping address and shipping method on PayPal website. In live mode works via HTTPS protocol only.","Wenn diese Option aktiviert ist, können Kunden die Versandart und -anschrift auf der PayPal-Website angeben. In Produktivumgebungen steht diese Option nur über das HTTPS-Protokoll zur Verfügung."
|
165 |
+
"Impossible to issue a refund transaction because the capture transaction does not exist.","Es kann keine Erstattung durchgeführt werden, da keine ""Erfassen""-Transaktion für diesen Betrag existiert."
|
166 |
+
"Incentive","Bonus"
|
167 |
"Initiation Date","Start Datum"
|
168 |
+
"Integral Evolution","Integral Evolution"
|
169 |
+
"Integral Evolution Settings","Integral Evolution Einstellungen"
|
170 |
"Invoice ID","Rechnungs-ID"
|
171 |
+
"Issuer Liability","Ausstellerhaftung"
|
172 |
+
"It is recommended to set this value to ""Debit or Credit Card"" per store views.","Es wird empfohlen, diesen Wert auf ""Lastschrift""- oder ""Kreditkarte"" zu setzen."
|
173 |
+
"It is recommended to set this value to ""PayPal"" per store views.","Es wird empfohlen, für jeden StoreView den Wert ""PayPal"" anzugegeben."
|
174 |
+
"Items in Your Shopping Cart","Artikel in Ihrem Warenkorb"
|
175 |
+
"Last Correlation ID","Letzte Zuordnungs-ID"
|
176 |
+
"Last Transaction ID","Letzte Transaktionsnummer"
|
177 |
"Learn More","Mehr erfahren"
|
178 |
"Login","Anmelden"
|
179 |
+
"Looking for PayPal? We have our own tab to the left under Sales.","Sie suchen nach PayPal? Wir haben unser eigenes Tab auf der linken Seite im Bereich Verkäufe."
|
180 |
+
"Mass Pay Payment","Massenzahlung per ""Mass Pay"""
|
181 |
"Matched (CVV2)","(CVV2) angeglichen"
|
182 |
"Matched (CVV2CSC)","(CVV2CSC) angeglichen"
|
183 |
"Matched Address only (no ZIP)","Nur Adresse angeglichen (keine Postleitzahl)"
|
189 |
"Merchant Country","Händler-Land"
|
190 |
"Merchant Liability","Händler Belastung"
|
191 |
"Merchant Protection Eligibility","Händler Schutz-Berechtigung"
|
192 |
+
"Merchant Referral Bonus","Händler Empfehlungsbonus"
|
193 |
+
"Merchant holds a non-U.S. account and does not have a withdrawal mechanism.","Der Händler verwendet einen Bankkonto außerhalb der Vereinigten Staaten und hat keine Überweisungsinformationen hinterlegt."
|
194 |
+
"Merchant reference ID format is not supported.","Referenz-ID-Format des Händlers wird nicht unterstützt."
|
195 |
+
"Merchants need to apply to PayPal for enabling billing agreements feature. Do not enable this option until PayPal confirms that billing agreements are enabled for your merchant account.","Händler müssen Sie für die Verwendung der ""Zahlungsvereinbarung"" bei PayPal anmelden. Bitte aktivieren Sie diese Option erst, wenn PayPal die Zahlungsvereinbarungen für Ihr Händlerkonto freigeschaltet hat."
|
196 |
+
"Mobile Payment (made via a mobile phone)","Mobiler Zahlungsvorgang (via Handy)"
|
197 |
"N/A","Nicht verfügbar"
|
198 |
"N/A. Address not checked, or acquirer had no response. Service not available","Nicht verfügbar - Adresse nicht überprüft, oder der Absender gibt keine Antwort. Service nicht verfügbar"
|
199 |
+
"N/A. Global Unavailable","Nicht verfügbar"
|
200 |
"N/A. International Unavailable","International - nicht verfügbar"
|
201 |
+
"N/A. Merchant has indicated that CVV2 is not present on card","Nicht verfügbar - Händler hat angegeben, dass die CVV2 auf der Karte nicht vorhanden ist"
|
202 |
"N/A. No response","Nicht verfügbar - keine Antwort"
|
203 |
"N/A. Not allowed for MOTO (Internet/Phone) transactions","Nicht verfügbar - für MOTO (Internet/Telefon) Transaktionen"
|
204 |
"N/A. Not processed","Nicht verfügbar - nicht verarbeitet"
|
209 |
"N/A. The merchant did not provide AVS information","Nicht verfügbar - der Händler unterstützt keine AVS Information"
|
210 |
"N/A. The merchant has not implemented CVV2 code handling","Nicht verfügbar - der Händler hat CVV2 Code verarbeitung nicht implementiert"
|
211 |
"N/A. Unavailable","Nicht verfügber / Nicht erreichbar"
|
212 |
+
"Negative Balance","Negativer Kontostand"
|
213 |
"Never","Nie"
|
214 |
"No","Nein"
|
215 |
"No Details matched","Keine Details übereinstimmend"
|
217 |
"No Liability Shift","Keine Haftungsumkehr"
|
218 |
"No Logo","Kein Logo"
|
219 |
"No match","Keine Anpassung"
|
220 |
+
"None of the address information matched","Keine der Adressinformationen stimmte überein"
|
221 |
"Note: %s","Bemerkung: %s"
|
222 |
+
"Nothing to fetch because of an empty configuration.","Es konnten keine Daten abgeholten werden, da keine Konfiguration vorliegt."
|
223 |
+
"Notice that PayPal can handle up to 10 shipping options. That is why Magento will transfer only first 10 cheapest shipping options if there are more than 10 available.","Bitte beachten Sie, dass PayPal lediglich 10 Versandoptionen unterstützt. Daher wird Magento nur die 10 günstigsten Versandoptionen übermitteln."
|
224 |
"Notified customer about creditmemo #%s.","Kunde über Gutschrift informiert #%s."
|
225 |
"Notified customer about invoice #%s.","Kunde über Rechnung #%s informiert."
|
226 |
"Now accepting PayPal (150 X 40)","Wir akzeptieren PayPal (150 X 40)"
|
227 |
"Now accepting PayPal (150 X 60)","Wir akzeptieren PayPal (150 X 60)"
|
228 |
+
"Number of Child Authorizations","Anzahl der nachfolgenden Autorisationen"
|
229 |
"Open Authorization","Offene Authorisierung"
|
230 |
"Order","Bestellung"
|
231 |
"Order ID","Bestell ID"
|
232 |
+
"Order Valid Period (days)","Geltungsdauer der Bestellung (Tage)"
|
233 |
+
"Ordered amount of %s.","Bestellmenge von %s."
|
234 |
+
"Ordering amount of %s is pending approval on gateway.","Bestellsumme in Höhe von %s ausstehend - warte auf Genehmigung vom Gateway."
|
235 |
"Page Background Color","Hintergrundfarbe der Seite"
|
236 |
"Page Style","Seiten Gestaltung"
|
237 |
+
"Part of the address information matched","Die Adressinformationen stimmen teilweise überein."
|
238 |
"Partner","Partner"
|
239 |
+
"Pasarela integral","Pasarela Integral"
|
240 |
+
"Pasarela integral Settings","Pasarela Integral Einstellungen"
|
241 |
"Password","Passwort"
|
242 |
"Pay Now","Jetzt bezahlen"
|
243 |
"PayPal","PayPal"
|
244 |
+
"PayPal Balance Manager function of PayPal account","PayPal Kontostandsmanager des PayPal Kontos"
|
245 |
+
"PayPal Buyer Warranty Bonus","PayPal Käufer Garantiebonus"
|
246 |
+
"PayPal Debit Card Cash Advance","PayPal Vorkasse per Lastschriftkarte"
|
247 |
+
"PayPal Debit Card Withdrawal from ATM","PayPal Überweisung vom Bankautomaten per Lastschriftkarte"
|
248 |
"PayPal Express Checkout Shortcut Wrapper","PayPal Express Checkout Shortcut Wrapper"
|
249 |
"PayPal Express Checkout Token does not exist.","PayPal Express Checkout Merkmal existiert nicht."
|
250 |
"PayPal Express Order Review Form","PayPal Express Bestell Übersichts-Formular"
|
251 |
"PayPal Fee Information","PayPal Gebühren Information"
|
252 |
"PayPal Merchant Pages Style","PayPal Händler Seiten Stil"
|
253 |
+
"PayPal Pro","PayPal E-Mail"
|
254 |
+
"PayPal Pro Settings","Payflow Pro Einstellungen"
|
255 |
"PayPal Product Logo","PayPal Artikel Logo"
|
256 |
"PayPal Protection Bonus","PayPal Schutz Bonus"
|
257 |
"PayPal Reference ID","PayPal Referenz-ID"
|
259 |
"PayPal Settlement Reports","PayPal Abrechnungen"
|
260 |
"PayPal certificate does not exist.","PayPal Zertifikat existiert nicht."
|
261 |
"PayPal certificate file is empty.","PayPal Zertifikatsdatei ist leer."
|
262 |
+
"PayPal does not support processing orders with zero amount. To complete your purchase, proceed to the standard checkout process.","PayPal unterstützt die Bestellabwicklung nur für Beträge größer Null. Um Ihren Bestellvorgang abzuschließen, fahren Sie bitte mit dem Standard-Checkout fort."
|
263 |
+
"PayPal gateway has rejected request. %s","Das PayPal Gateway hat die Anfrage abgewiesen. %s"
|
264 |
"PayPal processes all of your orders, and you get paid.","PayPal wickelt alle Ihre Bestellungen ab und Sie werden bezahlt."
|
265 |
+
"PayPal response hasn't required fields.","Die PayPal Antwort enthält nicht die benötigten Felder."
|
266 |
+
"PayPal retains reports for 45 days.","PayPal speichert die Aufzeichnungen für Reporte 45 Tage."
|
267 |
"PayPal/Centinel Electronic Commerce Indicator","PayPal/Centinel Electronic Commerce Indikator"
|
268 |
"PayPal/Centinel Visa Payer Authentication Service Result","PayPal/Centinel Visa Zahler Authentifizierungs-Dienst Ergebnis"
|
269 |
"Payer Address ID","Bezahler Adress ID"
|
277 |
"Payflow Link Settings","Payflow Link Einstellungen"
|
278 |
"Payflow Pro Gateway","Payflow Pro Gateway"
|
279 |
"Payflow Pro Settings","Payflow Pro Einstellungen"
|
280 |
+
"Payment Action","Zahlungsvorgang"
|
281 |
+
"Payment Applicable From","Zahlung möglich von"
|
282 |
+
"Payment Method","Zahlart"
|
283 |
+
"Payment Refund initiated by merchant","Erstattung durch Händler veranlasst"
|
284 |
+
"Payment has been declined. Please try again.","Die Zahlung wurde abgelehnt. Bitte versuchen Sie es nochmal."
|
285 |
"Payments by PayPal (150 X 40)","Zahlungen per PayPal (150 X 40)"
|
286 |
"Payments by PayPal (150 X 60)","Zahlungen per PayPal (150 X 60)"
|
287 |
+
"Payments by cards + seller protection - <strong style=""color:red"">Contact PayPal before activating</strong>","Kartenzahlung + Verkäuferschutz - <strong style=""color:red"">Kontaktieren Sie PayPal vor der Aktivierung</strong>"
|
288 |
"Paypal Billing Agreement Settings","Einstellungen für Paypal Bestellbedingungen"
|
289 |
"Pending PayPal","PayPal ausstehend"
|
290 |
"Place Order","Bestellung abschließen"
|
291 |
+
"Please agree to all the terms and conditions before placing the order.","Bitte lesen und akzeptieren Sie alle AGB, bevor Sie Ihre Bestellung aufgeben."
|
292 |
"Please do not refresh the page until you complete payment.","Bitte nicht die Seite neu laden bevor die Zahlung abgeschlossen wurde."
|
293 |
"Please select a shipping method...","Bitte wählen Sie eine Versandart..."
|
294 |
+
"Points Incentive Redemption","Bonuspunkte einlösen"
|
295 |
+
"Postage Payment to either USPS or UPS","Zahlung der Versandkosten entweder an USPS oder UPS"
|
296 |
+
"Preapproved Payment (BillUser API), either sent or received","Vorabgenehmigte Zahlung (BillUser API), entweder gesendet oder erhalten"
|
297 |
+
"Preapproved Payment ID","Vorabgenehmigte Zahlungs-ID"
|
298 |
"Price","Preis"
|
299 |
"Process credit cards directly on your website with PayPal’s all-in-one online payment processing solution.","Wickeln Sie Kreditkartenzahlung direkt auf Ihrer Website mit PayPal's all-in-one Zahlungsverarbeitungs-Lösung."
|
300 |
"Product Name","Artikelname"
|
301 |
"Proxy Host","Proxy Host"
|
302 |
"Proxy Port","Proxy Port"
|
303 |
"Qty","Menge"
|
304 |
+
"Quick set-up service lets your customers securely complete transactions.","Mit dem Schnelleinrichtungsservice können Ihre Kunden Transaktionen sicher durchführen."
|
305 |
+
"Reauthorization","Erneute Authorisation"
|
306 |
+
"Reference Information","Referenzinformation"
|
307 |
+
"Refund issued by merchant.","Ersattung von Händler durchgeführt."
|
308 |
+
"Reimbursement for a chargeback.","Ausgleich-Rückerstattung"
|
309 |
+
"Reimbursement of Chargeback","Ausgleich-Rückerstattung"
|
310 |
"Report Date","Bericht Datum"
|
311 |
+
"Reports","Reporte"
|
312 |
+
"Require CVV Entry","CVV Eintrag erforderlich"
|
313 |
+
"Reversal","Storno"
|
314 |
+
"Reversal of General Account Hold","Rückerstattung des Sicherungsbetrags des Hauptkontos"
|
315 |
+
"Reversal of Points Usage","Zurücksetzen der Punkteverwendung"
|
316 |
+
"Reversal of an adjustment.","Rückerstattung einer Anpassung."
|
317 |
+
"Reversal of hold for Dispute Investigation","Rückerstattung des Sicherungsbetrags für Betrugsuntersuchung"
|
318 |
"Review Order","Bestellübersicht"
|
319 |
+
"Reward Voucher Redemption","Bonus für Gutscheineinlösung"
|
320 |
"SFTP Credentials","SFTP Zugangsdaten"
|
321 |
"Sale","Verkauf"
|
322 |
+
"Sales","Verkäufe"
|
323 |
+
"Sandbox Credentials","Sandbox Zugangsdaten"
|
324 |
"Sandbox Mode","Sandbox Modus"
|
325 |
+
"Schedule","Geplanter Vorgang"
|
326 |
+
"Schedule description is too long.","Beschreibung für geplanten Vorgang ist zu lang."
|
327 |
+
"Scheduled Fetching","zeitgesteuertes Abrufen"
|
328 |
"Select a PayPal Solution","Wählen Sie eine PayPal Lösung"
|
329 |
"Settlement Consolidation","Abwicklungs-Konsolidierung"
|
330 |
"Settlement Report Settings","Abwicklungsbericht Einstellungen"
|
331 |
+
"Settlement of a chargeback.","Rückerstattung"
|
332 |
"Severe 3D Secure Card Validation","3D Sichere Karten-Überprüfung (Streng)"
|
333 |
+
"Severe Validation Removes Chargeback Liability on Merchant","Strenge Prüfung befreit den Händler von seiner Haftung"
|
334 |
+
"Severe validation removes chargeback liability on merchant.","Strenge Prüfung befreit den Händler von seiner Haftung."
|
335 |
"Shipping","Versand"
|
336 |
"Shipping Address","Versandadresse"
|
337 |
"Shipping Information","Versandinformation"
|
338 |
"Shipping Method","Versandart"
|
339 |
"Shop now using (150 X 40)","Shop verwendet jetzt (150 X 40)"
|
340 |
"Shop now using (150 X 60)","Shop verwendet jetzt (150 X 60)"
|
341 |
+
"Shortcut","Expressbutton"
|
342 |
+
"Shortcut Buttons Flavor","Expressbutton Gestaltung"
|
343 |
+
"Shortcut on Product View","Expressbutton auf Artikeldetailseite"
|
344 |
+
"Shortcut on Shopping Cart","Expressbutton im Warenkorb"
|
345 |
+
"Sign a billing agreement to streamline further purchases with PayPal.","Unterzeichnen Sie eine Zahlungsvereinbarung, um künftige Zahlungen mit PayPal zu vereinfachen."
|
346 |
"Solo","Solo"
|
347 |
"Sorry, no quotes are available for this order at this time.","Entschuldigung, momentan gibt es keine Angebote für diese Bestellung."
|
348 |
"Sort Order","Reihenfolge"
|
349 |
+
"Specifies what the Authorization Honor Period is on the merchant’s PayPal account. It must mirror the setting in PayPal.","Diese Wert gibt die Dauer an, die eine Authorisation im PayPal-Konto des Händlers gültig ist. Diese Einstellung muss mit den Einstellungen bei PayPal übereinstimmen."
|
350 |
+
"Specifies what the Order Valid Period is on the merchant’s PayPal account. It must mirror the setting in PayPal.","Diese Wert gibt die Dauer an, die eine Bestellung im PayPal-Konto des Händlers gültig ist. Diese Einstellung muss mit den Einstellungen bei PayPal übereinstimmen."
|
351 |
"Static","Statisch"
|
352 |
"Submitting order information...","Bestellung wird übermittelt..."
|
353 |
+
"Subscriber name is too long.","Abonnentenname ist zu lang."
|
354 |
+
"Subscription ID","Abonnent-ID"
|
355 |
+
"Subscription Payment, either payment sent or payment received","Abonnentenzahlung, entweder gesendet oder erhalten"
|
356 |
"Subtotal","Zwischensumme"
|
357 |
+
"Summary Text for Aggregated Cart","Zusammenfassung des gesamten Warenkorbs"
|
358 |
+
"Supporting of American Express cards require additional agreement. Learn more at <a href=""http://www.paypal.com/amexupdate"">http://www.paypal.com/amexupdate</a>.","Die Unterstützung von American Express Karten erfordert einen Ergänzungsvertrag. Erfahren Sie mehr bei <a href=""http://www.paypal.com/amexupdate"">http://www.paypal.com/amexupdate</a>."
|
359 |
"Switch/Maestro","Switch/Maestro"
|
360 |
+
"Test Mode","Test Modus"
|
361 |
"The background color for the checkout page around the header and payment form.","Die Hintergrundfarbe für die Checkout Seite rund um den Kopfbreich und dem Zahlungsformular."
|
362 |
+
"The background color for the header of the checkout page. Case-insensitive six-character HTML hexadecimal color code in ASCII.","Die Hintergrundfarbe des Kopfbereichs der Bezahlseite. 6-stelliger Hex-Farbcode in ASCII Zeichen."
|
363 |
+
"The default number of child authorizations in your PayPal account is 1. To do multiple authorizations please contact PayPal to request an increase.","Der Standardwert für nachfolgende Authorisationen in Ihrem PayPal-Konto ist 1. Um weitere Authorisationen durchführen zu können, nehmen Sie bitte Kontakt zu PayPal auf und bitten Sie um Erhöhung dieses Wertes."
|
364 |
+
"The image at the top left of the checkout page. Max size is 750x90-pixel. <strong style=""color:red"">https</strong> is highly encouraged.","Das Bild oben links auf der Bezahlseite. Max. 750px x 90px. <strong style=""color:red"">https</strong> wird dringend empfohlen."
|
365 |
+
"The maximum number of child authorizations is reached.","Die maximale Anzahl an nachfolgenden Authorisationen ist erreicht."
|
366 |
"The merchant account is not yet verified.","Das Händlerkonto ist noch nicht verifiziert."
|
367 |
+
"The payment curency does not match any of the merchant\'s balances currency.","Die Währung der Zahlung stimmt mit keiner der Währungen des Händlerkontos überein."
|
368 |
+
"The payment eCheck is not yet cleared.","Die Zahlung per eCheck ist noch nicht abgeschlossen."
|
369 |
+
"The payment is authorized but not settled.","Die Zahlung ist authorisiert aber noch nicht abgeschlossen."
|
370 |
+
"The payment is pending because it was made to an email address that is not yet registered or confirmed.","Die Zahlung steht noch aus, da sie an eine eMailadresse geleistet wurde, die nicht registriert oder bestätigt ist."
|
371 |
+
"The payment is pending while it is being reviewed by PayPal for risk.","Die Zahlung ist auf Grund einer Risikoprüfung durch PayPal noch nicht abgeschlossen."
|
372 |
+
"The payment was made via credit card. In order to receive funds merchant must upgrade account to Business or Premier status.","Da es sich um eine Kreditkartenzahlung handelt, muss das Händlerkonto für den Empfang von Rückerstattungen den ""Business"" oder ""Premier"" nutzen."
|
373 |
"There was an error processing your order. Please contact us or try again later.","Bei der Verarbeitung Ihrer Bestellung ist ein Fehler aufgetreten. Kontaktieren Sie uns oder probieren Sie es bitte später erneut."
|
374 |
"Time of Day","Tageszeit"
|
375 |
+
"Title","Titel"
|
376 |
+
"Transaction ID","Transaktionsnummer"
|
377 |
"Transaction Information","Transaktions-Information"
|
378 |
+
"Transfer Cart Line Items","Artikel des Warenkorbs übertragen"
|
379 |
+
"Transfer Shipping Options","Versandoptionen übertragen"
|
380 |
+
"Triggered Fraud Filters","Betrugsverdacht-Filter ausgelöst"
|
381 |
+
"Unable to cancel Express Checkout.","Express Checkout konnte nicht abgebrochen werden."
|
382 |
+
"Unable to change status. Current status is not correspond to real status.","Status kann nicht geändert werden. Der aktuelle Status entspricht nicht dem tatsächlichen Status."
|
383 |
+
"Unable to communicate with the PayPal gateway.","Verbindung zum PayPal Gateway konnte nicht hergestellt werden."
|
384 |
+
"Unable to initialize Express Checkout review.","Express Checkout-Prüfung konnte nicht gestartet werden."
|
385 |
+
"Unable to initialize Express Checkout.","Express Checkout konnte nicht gestartet werden."
|
386 |
+
"Unable to place the order.","Bestellung konnte nicht aufgegeben werden."
|
387 |
+
"Unable to process Express Checkout approval.","Express Checkout Genehmigung konnte nicht verarbeitet werden."
|
388 |
+
"Unable to start Express Checkout.","Express-Checkout konnte nicht gestartet werden."
|
389 |
+
"Unable to update shipping method.","Versandart konnte nicht aktualisiert werden."
|
390 |
+
"Unknown reason. Please contact PayPal customer service.","Grund nicht bekannt. Bitte kontaktieren Sie den PayPal Kundenservice."
|
391 |
"Update Shipping Method","Versandmethode aktualisieren"
|
392 |
"Use Proxy","Proxy verwenden"
|
393 |
+
"Use colon to specify port. For example: ""test.example.com:5224"".","Verwenden Sie den Doppelpunkt, um einen Port festzulegen. Zum Beispiel: ""test.example.com:5224""."
|
394 |
+
"User","Benutzer"
|
395 |
+
"User-initiated Currency Conversion","Vom Benutzer gestartete Währungsumrechnung"
|
396 |
+
"Uses store frontend name by default.","Verwendet standardmäßig den Shopnamen."
|
397 |
"Vendor","Kreditor / Lieferant"
|
398 |
"View","Ansicht"
|
399 |
+
"View Demo","Demo zeigen"
|
400 |
+
"View PayPal solutions.","PayPal-Lösungen anzeigen."
|
401 |
+
"View Transaction","Transkation anzeigen"
|
402 |
+
"View Transaction Details","Transaktionsdetails anzeigen"
|
403 |
+
"Virtual PayPal Debit Card Transaction","Virtuelle PayPal Lastschriftkarten-Transaktion"
|
404 |
+
"Virtual Terminal Payment","Virtuelle Terminalzahlung"
|
405 |
+
"Void","Leer"
|
406 |
"We prefer PayPal (150 X 40)","Wir empfehlen PayPal (150 X 40)"
|
407 |
"We prefer PayPal (150 X 60)","Wir empfehlen PayPal (150 X 60)"
|
408 |
+
"Website Payments Plus","Website Payments Plus"
|
409 |
+
"Website Payments Plus Settings","Website Payments Pro Einstellungen"
|
410 |
"Website Payments Pro","Website Payments Pro"
|
411 |
"Website Payments Pro (Payflow Edition) Settings","Website Payments Pro (Payflow Edition) Einstellungen"
|
412 |
+
"Website Payments Pro Hosted Solution","Website Payments Pro Hosted Solution"
|
413 |
+
"Website Payments Pro Hosted Solution Settings","Website Payments Pro Hosted Solution Einstellungen"
|
414 |
"Website Payments Pro Payflow Edition (includes Express Checkout)","Website Payments Pro Payflow Edition (enthällt Express Checkout)"
|
415 |
"Website Payments Pro Settings","Website Payments Pro Einstellungen"
|
416 |
"Website Payments Standard","Website Payments Standard"
|
417 |
+
"Website Payments Standard Payment","Website Payments Standard Zahlung"
|
418 |
"Website Payments Standard Settings","Website Payments Standard Einstellungen"
|
419 |
"What is PayPal?","Was ist PayPal?"
|
420 |
+
"Whether to create a billing agreement, if there are no active billing agreements available.","Soll eine Zahlungsvereinbarung getroffen werden, wenn keine aktiven vorliegen?"
|
421 |
+
"Will appear as a payment option only for customers who have at least one active billing agreement.","Dies wird nur dann als Zahlungsoption angezeigt, wenn der Kunde mindestens eine aktive Zahlungsvereinbarung besitzt."
|
422 |
+
"WorldLink Withdrawal","WorldLink Überweisung"
|
423 |
+
"Would you like to sign a billing agreement to streamline further purchases with PayPal?","Möchten Sie eine Zahlungsvereinbarung mit PayPal abschließen, um künftige Zahlungen zu vereinfachen?"
|
424 |
+
"Wrong PayPal Express Checkout Token specified.","Falsches PayPal Express Checkout Token angegeben."
|
425 |
"Yes","Ja"
|
426 |
+
"Yes. Matched Address and five-didgit ZIP","Ja. Übereinstimmende Adresse und fünfstellige Postleitzahl"
|
427 |
"You will be redirected to the PayPal website in a few seconds.","Sie werden in wenigen Sekunden zu PayPal weitergeleitet."
|
428 |
"You will be redirected to the PayPal website when you place an order.","Sie werden zur PayPal Webseite weitergeleitet wenn Sie die Bestellung abschließen."
|
429 |
"You will be redirected to the PayPal website.","Sie werden zur PayPal Webseite umgeleitet."
|
430 |
+
"You will be required to enter your payment details after you place an order.","Sie müssen Ihre Zahlungsdaten angeben, nachdem Sie die Bestellung aufgegeben haben."
|
431 |
"eBay Auction Payment","eBay Auktionszahlung"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_PaypalUk.csv
CHANGED
@@ -1,26 +1,23 @@
|
|
1 |
-
"Express Checkout and Order have been canceled.","Express Checkout
|
2 |
-
"Express Checkout has been canceled.","Express Checkout
|
3 |
-
"Fetch","
|
4 |
"PayPal Express Checkout (Payflow Edition) Shortcut Wrapper","PayPal Express Checkout (Payflow Edition) Shortcut Wrapper"
|
5 |
-
"PayPal Express Checkout Token does not exist.","PayPal Express Checkout Token
|
6 |
"PayPal Express Order Review Form","PayPal Express Bestellübersicht"
|
7 |
-
"PayPal Settlement Reports","PayPal
|
8 |
-
"Payment has been declined. Please try again.","
|
9 |
-
"Pending PayPal","
|
10 |
"Reports","Berichte"
|
11 |
"Sales","Verkäufe"
|
12 |
"Solo","Solo"
|
13 |
"Switch/Maestro","Switch/Maestro"
|
14 |
-
"Unable to cancel Express Checkout.","
|
15 |
-
"Unable to initialize Express Checkout review.","
|
16 |
-
"Unable to place the order.","
|
17 |
-
"Unable to process Express Checkout approval.","
|
18 |
-
"Unable to start Express Checkout.","
|
19 |
-
"Unable to update shipping method.","
|
20 |
-
"View","
|
21 |
"View Transaction","Transaktion ansehen"
|
22 |
-
"Wrong PayPal Express Checkout Token specified.","
|
23 |
-
"You will be redirected to the PayPal website in a few seconds.","
|
24 |
-
"Express Checkout and Order have been cancelled.","Express Checkout und Bestellung wurde storniert."
|
25 |
-
"Express Checkout has been cancelled.","Express Checkout wurde storniert."
|
26 |
-
"PayPal Email","PayPal E-Mail"
|
1 |
+
"Express Checkout and Order have been canceled.","Express Checkout und Bestellung wurden abgebrochen."
|
2 |
+
"Express Checkout has been canceled.","Express Checkout wurde abgebrochen."
|
3 |
+
"Fetch","Abholen"
|
4 |
"PayPal Express Checkout (Payflow Edition) Shortcut Wrapper","PayPal Express Checkout (Payflow Edition) Shortcut Wrapper"
|
5 |
+
"PayPal Express Checkout Token does not exist.","PayPal Express Checkout Token existiert nicht."
|
6 |
"PayPal Express Order Review Form","PayPal Express Bestellübersicht"
|
7 |
+
"PayPal Settlement Reports","PayPal Abrechnung"
|
8 |
+
"Payment has been declined. Please try again.","PayPal-Zahlung wurde abgelehnt, bitte versuchen Sie es nocheinmal."
|
9 |
+
"Pending PayPal","Ausstehende PayPal-Zahlung"
|
10 |
"Reports","Berichte"
|
11 |
"Sales","Verkäufe"
|
12 |
"Solo","Solo"
|
13 |
"Switch/Maestro","Switch/Maestro"
|
14 |
+
"Unable to cancel Express Checkout.","Express Checkout konnte nicht abgebrochen werden."
|
15 |
+
"Unable to initialize Express Checkout review.","Express Checkout Bewertung konnte nicht gestartet werden."
|
16 |
+
"Unable to place the order.","Bestellung konnte nicht aufgegeben werden."
|
17 |
+
"Unable to process Express Checkout approval.","Express Checkout Freigabe konnte nicht verarbeitet werden."
|
18 |
+
"Unable to start Express Checkout.","Express Checkout konnte nicht gestartet werden."
|
19 |
+
"Unable to update shipping method.","Versandart konnte nicht aktualisiert werden."
|
20 |
+
"View","ansehen"
|
21 |
"View Transaction","Transaktion ansehen"
|
22 |
+
"Wrong PayPal Express Checkout Token specified.","Falscher PayPal Express Checkout Token angegeben."
|
23 |
+
"You will be redirected to the PayPal website in a few seconds.","Sie werden in wenigen Sekunden zur PayPal Website weitergeleitet."
|
|
|
|
|
|
app/locale/de_DE/Mage_Persistent.csv
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"""Remember Me"" Default Value","""Angemeldet bleiben"" Standardwert"
|
2 |
+
"(Not %s?)","(Nicht %s?)"
|
3 |
+
"* Required Fields","* Pflichtfelder"
|
4 |
+
"Address","Adresse"
|
5 |
+
"Address Information","Adressinformationen"
|
6 |
+
"Already registered?","Bereits registriert?"
|
7 |
+
"Back","Zurück"
|
8 |
+
"By creating an account with our store, you will be able to move through the checkout process faster, store multiple shipping addresses, view and track your orders in your account and more.","Wenn Sie in unserem Shop ein Benutzerkonto einrichten, werden Sie schneller durch den Bestellvorgang geführt, können mehrere Versandadressen speichern, Ihren bisherigen Bestellablauf verfolgen und vieles mehr."
|
9 |
+
"Cannot load configuration from file %s.","Konnte Konfiguration nicht aus Datei %s laden."
|
10 |
+
"Checkout as Guest","Als Gast zur Kasse gehen"
|
11 |
+
"Checkout as a Guest or Register","Als Gast zur Kasse oder registrieren"
|
12 |
+
"City","Stadt"
|
13 |
+
"Clear Persistence on Log Out","Lösche Sitzungsdaten beim Abmelden"
|
14 |
+
"Close","Schließen"
|
15 |
+
"Company","Firma"
|
16 |
+
"Confirm Password","Passwort bestätigen"
|
17 |
+
"Continue","Weiter"
|
18 |
+
"Country","Land"
|
19 |
+
"Create an Account","Benutzerkonto anlegen"
|
20 |
+
"Easy access to your order history and status","Einfacher Zugriff auf Ihre bisherigen Bestellungen und deren Status"
|
21 |
+
"Email Address","E-Mail-Adresse"
|
22 |
+
"Enable ""Remember Me""","""Angemeldet bleiben"" aktivieren"
|
23 |
+
"Enable Persistence","Sitzungsdatenspeicherung aktivieren"
|
24 |
+
"Fast and easy check out","Schneller und einfacher Bestellvorgang"
|
25 |
+
"Fax","Fax"
|
26 |
+
"Forgot Your Password?","Passwort vergessen?"
|
27 |
+
"Forgot your password?","Passwort vergessen?"
|
28 |
+
"General Options","Allgemeine Einstellungen"
|
29 |
+
"If you have an account with us, please log in.","Wenn Sie bei uns ein Benutzerkonto besitzen, melden Sie sich bitte an."
|
30 |
+
"Loading next step...","Der nächste Schritt wird geladen..."
|
31 |
+
"Login","Anmelden"
|
32 |
+
"Login Information","Anmeldedaten"
|
33 |
+
"Login or Create an Account","Anmelden oder Benutzerkonto erstellen"
|
34 |
+
"New Customers","Neue Kunden"
|
35 |
+
"Password","Passwort"
|
36 |
+
"Persist Shopping Cart","Geräte übergreifender Warenkorb"
|
37 |
+
"Persistence Lifetime (seconds)","Automatisch ausloggen nach (Sekunden)"
|
38 |
+
"Persistent Shopping Cart","Gerät übergreifender Warenkorb"
|
39 |
+
"Personal Information","Persönliche Informationen"
|
40 |
+
"Please log in below:","Bitte melden Sie sich hier an:"
|
41 |
+
"Please select region, state or province","Bitte wählen Sie Region, Land oder Bundesland"
|
42 |
+
"Register","Registrieren"
|
43 |
+
"Register and save time!","Registrieren und Zeit sparen!"
|
44 |
+
"Register to Create an Account","Registrieren Sie sich, um Ihr Benutzerkonto anzulegen"
|
45 |
+
"Register with us for future convenience:","Registrieren Sie sich für mehr Komfort bei Ihrem nächsten Besuch:"
|
46 |
+
"Registered Customers","Registrierte Kunden"
|
47 |
+
"Remember Me","Angemeldet bleiben"
|
48 |
+
"Save in address book","Im Adressbuch speichern"
|
49 |
+
"Select State/Province...","Land/Bundesland auswählen..."
|
50 |
+
"Select a billing address from your address book or enter a new address.","Wählen Sie eine Rechnungsadresse aus Ihrem Adressbuch oder legen Sie eine neue Adresse an."
|
51 |
+
"Ship to different address","An andere Adresse verschicken"
|
52 |
+
"Ship to this address","An diese Adresse verschicken"
|
53 |
+
"Sign Up for Newsletter","In den Newsletter eintragen"
|
54 |
+
"State/Province","Bundesland:"
|
55 |
+
"Street Address","Straße"
|
56 |
+
"Street Address %s","Straße %s"
|
57 |
+
"Submit","Absenden"
|
58 |
+
"Telephone","Telefon"
|
59 |
+
"Welcome, %s!","Herzlich Willkommen, %s!"
|
60 |
+
"What\'s this?","Was ist das?"
|
61 |
+
"Zip/Postal Code","PLZ"
|
app/locale/de_DE/Mage_Poll.csv
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
"Actions","Aktionen"
|
2 |
-
"Add Answer","Antwort
|
3 |
-
"Add New Answer","Neue Antwort
|
4 |
-
"Add New Poll","Neue Umfrage
|
5 |
"Answer Title","Antworttitel"
|
6 |
"Answer Title:","Antworttitel:"
|
7 |
"Answer with the same title in this poll","Gleichlautende Antwort in dieser Umfrage"
|
@@ -19,7 +19,7 @@
|
|
19 |
"Edit Poll '%s'","Bearbeite Umfrage '%s'"
|
20 |
"Edit Poll Answer","Bearbeite Umfrageantwort"
|
21 |
"ID","ID"
|
22 |
-
"Invalid Answer.","
|
23 |
"New Poll","Neue Umfrage"
|
24 |
"Number of Responses","Stimmenanzahl"
|
25 |
"Open","Offen"
|
@@ -28,17 +28,15 @@
|
|
28 |
"Poll Manager","Umfrageverwaltung"
|
29 |
"Poll Question","Umfragethema"
|
30 |
"Poll information","Umfrageinformation"
|
31 |
-
"Poll with the same question","Umfrage mit der
|
32 |
"Polls","Umfragen"
|
33 |
"Save Answer","Antwort speichern"
|
34 |
"Save Poll","Umfrage speichern"
|
35 |
"Status","Status"
|
36 |
"The answer has been saved.","Die Antwort wurde gespeichert."
|
37 |
"The poll does not exist.","Die Umfrage existiert nicht."
|
38 |
-
"Unable to find an answer to delete.","
|
39 |
"Visible In","Sichtbar in"
|
40 |
"Vote","Abstimmen"
|
41 |
"Votes Count","Stimmenanzahl"
|
42 |
"Votes Count:","Stimmenanzahl:"
|
43 |
-
"Invalid Answer","Ungültige Antwort"
|
44 |
-
"Unable to find answer to delete.","Zu löschende Antwort wurde nicht gefunden."
|
1 |
"Actions","Aktionen"
|
2 |
+
"Add Answer","Neue Antwort"
|
3 |
+
"Add New Answer","Neue Antwort"
|
4 |
+
"Add New Poll","Neue Umfrage"
|
5 |
"Answer Title","Antworttitel"
|
6 |
"Answer Title:","Antworttitel:"
|
7 |
"Answer with the same title in this poll","Gleichlautende Antwort in dieser Umfrage"
|
19 |
"Edit Poll '%s'","Bearbeite Umfrage '%s'"
|
20 |
"Edit Poll Answer","Bearbeite Umfrageantwort"
|
21 |
"ID","ID"
|
22 |
+
"Invalid Answer.","Ungültige Antwort"
|
23 |
"New Poll","Neue Umfrage"
|
24 |
"Number of Responses","Stimmenanzahl"
|
25 |
"Open","Offen"
|
28 |
"Poll Manager","Umfrageverwaltung"
|
29 |
"Poll Question","Umfragethema"
|
30 |
"Poll information","Umfrageinformation"
|
31 |
+
"Poll with the same question","Umfrage mit der gleichen Frage"
|
32 |
"Polls","Umfragen"
|
33 |
"Save Answer","Antwort speichern"
|
34 |
"Save Poll","Umfrage speichern"
|
35 |
"Status","Status"
|
36 |
"The answer has been saved.","Die Antwort wurde gespeichert."
|
37 |
"The poll does not exist.","Die Umfrage existiert nicht."
|
38 |
+
"Unable to find an answer to delete.","Es konnte keine Antwort zum Löschen gefunden werden."
|
39 |
"Visible In","Sichtbar in"
|
40 |
"Vote","Abstimmen"
|
41 |
"Votes Count","Stimmenanzahl"
|
42 |
"Votes Count:","Stimmenanzahl:"
|
|
|
|
app/locale/de_DE/Mage_ProductAlert.csv
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
"Alert Email Sender","Benachrichtigung E-Mail Absender"
|
2 |
-
"Alert subscription has been saved.","
|
3 |
"Allow Alert When Product Comes Back in Stock","Erlaube Benachrichtigung wenn ein Artikel wieder zurück in den Lagerbestand geht"
|
4 |
"Allow Alert When Product Price Changes","Benachrichtigung erlauben wenn sich der Artikelpreis verändert"
|
5 |
"Click here not to receive alerts for this product","Klicken Sie hier, um keine weiteren Benachrichtigungen für dieses Artikel zu erhalten"
|
@@ -21,19 +21,15 @@
|
|
21 |
"Special price:","Sonderpreis:"
|
22 |
"Start Time","Startzeit"
|
23 |
"Stock Alert Email Template","Verfügbarkeitsbenachrichtigung E-Mail Vorlage"
|
24 |
-
"The alert subscription has been deleted.","
|
25 |
-
"The alert subscription has been saved.","
|
26 |
-
"The product is not found.","
|
27 |
"The product was not found.","Der Artikel wurde nicht gefunden."
|
28 |
-
"Unable to update the alert subscription.","
|
29 |
"Unsubscribe from all price alerts","Alle Preisbenachrichtigungen deaktivieren"
|
30 |
"Unsubscribe from all stock alerts","Alle Verfügbarkeitsbenachrichtigungen deaktivieren"
|
31 |
"You are receiving this notification because you subscribed to receive alerts when the following products are back in stock:","Sie erhalten diese Nachricht, da Sie die Verfügbarkeitsbenachrichtigung aktiviert haben. Die folgenden Artikel sind nun wieder für Sie verfügbar:"
|
32 |
"You are receiving this notification because you subscribed to receive alerts when the prices for the following products changed:","Sie erhalten diese Nachricht, da Sie die Preisbenachrichtigung aktiviert haben. Die folgenden Artikel haben sich im Preis geändert:"
|
33 |
-
"You will no longer receive price alerts for this product.","
|
34 |
-
"You will no longer receive stock alerts for this product.","
|
35 |
-
"You will no longer receive stock alerts.","
|
36 |
-
"Not enough parameters","Parameter nicht ausreichend"
|
37 |
-
"You will no longer receive price alerts for this product","Sie erhalten nun keine weiteren Preisbenachrichtigungen mehr für diesen Artikel."
|
38 |
-
"You will no longer receive stock alerts for this product","Sie erhalten nun keine weiteren Verfügbarkeitsbenachrichtigungen mehr für diesen Artikel."
|
39 |
-
"You will no longer receive stock alerts","Sie erhalten nun keine weiteren Verfügbarkeitsbenachrichtigungen mehr."
|
1 |
"Alert Email Sender","Benachrichtigung E-Mail Absender"
|
2 |
+
"Alert subscription has been saved.","Benachrichtigungswunsch wurde gespeichert."
|
3 |
"Allow Alert When Product Comes Back in Stock","Erlaube Benachrichtigung wenn ein Artikel wieder zurück in den Lagerbestand geht"
|
4 |
"Allow Alert When Product Price Changes","Benachrichtigung erlauben wenn sich der Artikelpreis verändert"
|
5 |
"Click here not to receive alerts for this product","Klicken Sie hier, um keine weiteren Benachrichtigungen für dieses Artikel zu erhalten"
|
21 |
"Special price:","Sonderpreis:"
|
22 |
"Start Time","Startzeit"
|
23 |
"Stock Alert Email Template","Verfügbarkeitsbenachrichtigung E-Mail Vorlage"
|
24 |
+
"The alert subscription has been deleted.","Benachrichtigungswunsch wurde gelöscht."
|
25 |
+
"The alert subscription has been saved.","Benachrichtigungswunsch wurde gespeichert."
|
26 |
+
"The product is not found.","Artikel wurde nicht gefunden."
|
27 |
"The product was not found.","Der Artikel wurde nicht gefunden."
|
28 |
+
"Unable to update the alert subscription.","Benachrichtigungswunsch konnte nicht aktualisiert werden."
|
29 |
"Unsubscribe from all price alerts","Alle Preisbenachrichtigungen deaktivieren"
|
30 |
"Unsubscribe from all stock alerts","Alle Verfügbarkeitsbenachrichtigungen deaktivieren"
|
31 |
"You are receiving this notification because you subscribed to receive alerts when the following products are back in stock:","Sie erhalten diese Nachricht, da Sie die Verfügbarkeitsbenachrichtigung aktiviert haben. Die folgenden Artikel sind nun wieder für Sie verfügbar:"
|
32 |
"You are receiving this notification because you subscribed to receive alerts when the prices for the following products changed:","Sie erhalten diese Nachricht, da Sie die Preisbenachrichtigung aktiviert haben. Die folgenden Artikel haben sich im Preis geändert:"
|
33 |
+
"You will no longer receive price alerts for this product.","Sie werden keine Preisbenachrichtigungen mehr für diesen Artikel erhalten."
|
34 |
+
"You will no longer receive stock alerts for this product.","Sie werden keine Verfügbarkeitsbenachrichtigungen mehr für diesen Artikel erhalten."
|
35 |
+
"You will no longer receive stock alerts.","Sie werden keine Verfügbarkeitsbenachrichtigungen mehr erhalten."
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Rating.csv
CHANGED
@@ -23,6 +23,6 @@
|
|
23 |
"Rating Title","Bewertungstitel"
|
24 |
"Rating Visibility","Bewertungssichtbarkeit"
|
25 |
"Rating isn't Available","Bewertung ist nicht verfügbar"
|
26 |
-
"Rating with the same title","Bewertung mit dem
|
27 |
"Save Rating","Bewertung speichern"
|
28 |
"Visible In","Sichtbar in"
|
23 |
"Rating Title","Bewertungstitel"
|
24 |
"Rating Visibility","Bewertungssichtbarkeit"
|
25 |
"Rating isn't Available","Bewertung ist nicht verfügbar"
|
26 |
+
"Rating with the same title","Bewertung mit dem gleichen Titel"
|
27 |
"Save Rating","Bewertung speichern"
|
28 |
"Visible In","Sichtbar in"
|
app/locale/de_DE/Mage_Reports.csv
CHANGED
@@ -15,6 +15,7 @@
|
|
15 |
"Bought from wishlists","Von Wunschzetteln gekauft"
|
16 |
"CSV","CSV"
|
17 |
"Carts","Warenkörbe"
|
|
|
18 |
"Compared Products Grid Template","Verglichene Artikel Gitter Vorlage"
|
19 |
"Compared Products List Template","Verglichene Artikel Listen Vorlage"
|
20 |
"Coupons","Rabattcodes"
|
@@ -59,9 +60,9 @@
|
|
59 |
"Link","Link"
|
60 |
"List of Products Recently Compared and Removed from the Compare List by Visitor","Liste von Artikeln die kürzlich vom Besucher verglichen und wieder von der Vergleichsliste entfernt wurden."
|
61 |
"List of Products Recently Viewed by Visitor","Liste von Artikeln die kürzlich vom Besucher angesehen wurden"
|
62 |
-
"Low Stock","
|
63 |
"Low stock","Geringer Lagerbestand"
|
64 |
-
"Match Period To","
|
65 |
"Month","Monat"
|
66 |
"Most Viewed","Am meisten angesehen"
|
67 |
"Name","Name"
|
@@ -77,7 +78,7 @@
|
|
77 |
"Number of New Accounts","Anzahl der neuen Kundenkonten"
|
78 |
"Number of Products to display","Anzahl von Artikeln die angezeigt werden sollen"
|
79 |
"Number of Reviews","Anzahl der Kundenmeinungen"
|
80 |
-
"Number of Times Deleted","
|
81 |
"Number of Total Tags","Gesamtanzahl der Schlagworte"
|
82 |
"Number of Unique Tags","Anzahl der einmaligen Schlagworte"
|
83 |
"Number of Views","Anzahl der Ansichten"
|
@@ -141,7 +142,7 @@
|
|
141 |
"Submitted On","Übermittelt am"
|
142 |
"Subtotal","Zwischensumme"
|
143 |
"Tag","Schlagwort"
|
144 |
-
"Tag "%s" details","Details für Schlagwort "%
|
145 |
"Tag Detail","Schlagwortdetails"
|
146 |
"Tag Name","Schlagwortname"
|
147 |
"Tag Use","Schlagwortverwendung"
|
@@ -170,8 +171,4 @@
|
|
170 |
"Yes","Ja"
|
171 |
"Your Recently Compared","Ihre zuletzt verglichenen Artikel"
|
172 |
"Your Recently Viewed","Ihre zuletzt angesehenen Artikel"
|
173 |
-
"undefined","nicht definiert"
|
174 |
-
"Excel","Excel"
|
175 |
-
"Number of Invoiced Orders","Anzahl von in Rechnung gestellten Bestellungen"
|
176 |
-
"Product Sku","Artikelnummer"
|
177 |
-
"Tag use","Schlagwortverwendung"
|
15 |
"Bought from wishlists","Von Wunschzetteln gekauft"
|
16 |
"CSV","CSV"
|
17 |
"Carts","Warenkörbe"
|
18 |
+
"Catalog Category (Without Subcategories)","Katalog Kategorie(Ohne Unterkategorien)"
|
19 |
"Compared Products Grid Template","Verglichene Artikel Gitter Vorlage"
|
20 |
"Compared Products List Template","Verglichene Artikel Listen Vorlage"
|
21 |
"Coupons","Rabattcodes"
|
60 |
"Link","Link"
|
61 |
"List of Products Recently Compared and Removed from the Compare List by Visitor","Liste von Artikeln die kürzlich vom Besucher verglichen und wieder von der Vergleichsliste entfernt wurden."
|
62 |
"List of Products Recently Viewed by Visitor","Liste von Artikeln die kürzlich vom Besucher angesehen wurden"
|
63 |
+
"Low Stock","Geringer Lagerbestand"
|
64 |
"Low stock","Geringer Lagerbestand"
|
65 |
+
"Match Period To","Vergleiche mit"
|
66 |
"Month","Monat"
|
67 |
"Most Viewed","Am meisten angesehen"
|
68 |
"Name","Name"
|
78 |
"Number of New Accounts","Anzahl der neuen Kundenkonten"
|
79 |
"Number of Products to display","Anzahl von Artikeln die angezeigt werden sollen"
|
80 |
"Number of Reviews","Anzahl der Kundenmeinungen"
|
81 |
+
"Number of Times Deleted","Anzahl der Löschungen"
|
82 |
"Number of Total Tags","Gesamtanzahl der Schlagworte"
|
83 |
"Number of Unique Tags","Anzahl der einmaligen Schlagworte"
|
84 |
"Number of Views","Anzahl der Ansichten"
|
142 |
"Submitted On","Übermittelt am"
|
143 |
"Subtotal","Zwischensumme"
|
144 |
"Tag","Schlagwort"
|
145 |
+
"Tag ""%s"" details","Details für Schlagwort ""%s"" "
|
146 |
"Tag Detail","Schlagwortdetails"
|
147 |
"Tag Name","Schlagwortname"
|
148 |
"Tag Use","Schlagwortverwendung"
|
171 |
"Yes","Ja"
|
172 |
"Your Recently Compared","Ihre zuletzt verglichenen Artikel"
|
173 |
"Your Recently Viewed","Ihre zuletzt angesehenen Artikel"
|
174 |
+
"undefined","nicht definiert"
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Review.csv
CHANGED
@@ -10,9 +10,9 @@
|
|
10 |
"Add Your Review","Kundenmeinung hinzufügen"
|
11 |
"Administrator","Administrator"
|
12 |
"All Reviews","Alle Kundenmeinungen"
|
13 |
-
"All Reviews of Customer `%s`","Alle Kundenmeinungen des Kunden
|
14 |
"Allow Guests to Write Reviews","Erlaube Gästen Kundenmeinungen abzugeben"
|
15 |
-
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das
|
16 |
"Are you sure?","Sind Sie sicher?"
|
17 |
"Average Customer Rating","Durchschnittliche Kundenbewertung"
|
18 |
"Average Customer Rating:","Durchschnittliche Kundenbewertung:"
|
@@ -25,9 +25,10 @@
|
|
25 |
"Catalog Product Reviews List","Katalog Artikelauflistung von Kundenmeinungen"
|
26 |
"Created On","Geschrieben am"
|
27 |
"Customer","Kunde"
|
28 |
-
"Customer My Account Product Reviews","Kunde Mein
|
29 |
-
"Customer My Account Review Details","Kunde Mein
|
30 |
"Customer Reviews","Kundenmeinungen"
|
|
|
31 |
"Delete","Löschen"
|
32 |
"Delete Review","Kundenmeinung löschen"
|
33 |
"Detailed Rating","Genauere Bewertung"
|
@@ -42,9 +43,9 @@
|
|
42 |
"Name in Store","Name im Store"
|
43 |
"New Review","Neue Kundenmeinungen"
|
44 |
"Nickname","Spitzname"
|
45 |
-
"Only registered users can write reviews. Please, <a href="%s">log in</a> or <a href="%s">register</a>","Nur registrierte
|
46 |
"Pending Reviews","Ausstehende Kundenmeinungen"
|
47 |
-
"Pending Reviews of Customer `%s`","Ausstehende Kundenmeinungen des Kunden
|
48 |
"Please select a product","Bitte einen Artikel auswählen"
|
49 |
"Please select one of each of the ratings above","Bitte wählen Sie eine der obenstehenden Bewertungen"
|
50 |
"Posted By","Veröffentlicht von"
|
@@ -56,6 +57,7 @@
|
|
56 |
"Product Review (submitted on %s):","Kundenmeinung (erstellt am %s):"
|
57 |
"Product Reviews","Kundenmeinungen"
|
58 |
"Product SKU","Artikelnummer"
|
|
|
59 |
"Qty","Menge"
|
60 |
"Rating:","Bewertung:"
|
61 |
"Review","Kundenmeinung"
|
@@ -73,7 +75,7 @@
|
|
73 |
"Summary of Your Review","Zusammenfassung Ihrer Kundenmeinung"
|
74 |
"Title","Titel"
|
75 |
"Type","Typ"
|
76 |
-
"Unable to post the review.","
|
77 |
"Update Status","Status aktualisieren"
|
78 |
"View All Reviews","Alle Kundenmeinungen anzeigen"
|
79 |
"View Details","Details anzeigen"
|
@@ -84,7 +86,4 @@
|
|
84 |
"You're reviewing:","Sie bewerten den Artikel:"
|
85 |
"Your Rating:","Ihre Bewertung:"
|
86 |
"Your Review (submitted on %s):","Ihre Kundenmeinung (vom %s):"
|
87 |
-
"Your review has been accepted for moderation.","
|
88 |
-
"Name In Store","Name im Store"
|
89 |
-
"Unable to post review. Please, try again later.","Fehler beim übertragen der Kundenmeinung. Bitte versuchen es später noch einmal."
|
90 |
-
"Your review has been accepted for moderation","Ihre Kundenmeinung wurde zur internen Prüfung angenommen"
|
10 |
"Add Your Review","Kundenmeinung hinzufügen"
|
11 |
"Administrator","Administrator"
|
12 |
"All Reviews","Alle Kundenmeinungen"
|
13 |
+
"All Reviews of Customer `%s`","Alle Kundenmeinungen des Kunden '%s'"
|
14 |
"Allow Guests to Write Reviews","Erlaube Gästen Kundenmeinungen abzugeben"
|
15 |
+
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das tun möchten?"
|
16 |
"Are you sure?","Sind Sie sicher?"
|
17 |
"Average Customer Rating","Durchschnittliche Kundenbewertung"
|
18 |
"Average Customer Rating:","Durchschnittliche Kundenbewertung:"
|
25 |
"Catalog Product Reviews List","Katalog Artikelauflistung von Kundenmeinungen"
|
26 |
"Created On","Geschrieben am"
|
27 |
"Customer","Kunde"
|
28 |
+
"Customer My Account Product Reviews","Kunde Mein Kundenkonto Artikelbewertungen"
|
29 |
+
"Customer My Account Review Details","Kunde Mein Kundenkonto Bewertungsdetails"
|
30 |
"Customer Reviews","Kundenmeinungen"
|
31 |
+
"Customers Reviews","Kundenmeinungen"
|
32 |
"Delete","Löschen"
|
33 |
"Delete Review","Kundenmeinung löschen"
|
34 |
"Detailed Rating","Genauere Bewertung"
|
43 |
"Name in Store","Name im Store"
|
44 |
"New Review","Neue Kundenmeinungen"
|
45 |
"Nickname","Spitzname"
|
46 |
+
"Only registered users can write reviews. Please, <a href=""%s"">log in</a> or <a href=""%s"">register</a>","Nur registrierte Kunden können Bewertungen abgeben. Bitte <a href=""%s"">melden Sie sich an</a> oder <a href=""%s"">registrieren Sie sich</a>"
|
47 |
"Pending Reviews","Ausstehende Kundenmeinungen"
|
48 |
+
"Pending Reviews of Customer `%s`","Ausstehende Kundenmeinungen des Kunden '%s'"
|
49 |
"Please select a product","Bitte einen Artikel auswählen"
|
50 |
"Please select one of each of the ratings above","Bitte wählen Sie eine der obenstehenden Bewertungen"
|
51 |
"Posted By","Veröffentlicht von"
|
57 |
"Product Review (submitted on %s):","Kundenmeinung (erstellt am %s):"
|
58 |
"Product Reviews","Kundenmeinungen"
|
59 |
"Product SKU","Artikelnummer"
|
60 |
+
"Products Reviews","Kundenmeinungen zu Artikeln"
|
61 |
"Qty","Menge"
|
62 |
"Rating:","Bewertung:"
|
63 |
"Review","Kundenmeinung"
|
75 |
"Summary of Your Review","Zusammenfassung Ihrer Kundenmeinung"
|
76 |
"Title","Titel"
|
77 |
"Type","Typ"
|
78 |
+
"Unable to post the review.","Es ist nicht möglich die Kundenmeinung zu veröffentlichen."
|
79 |
"Update Status","Status aktualisieren"
|
80 |
"View All Reviews","Alle Kundenmeinungen anzeigen"
|
81 |
"View Details","Details anzeigen"
|
86 |
"You're reviewing:","Sie bewerten den Artikel:"
|
87 |
"Your Rating:","Ihre Bewertung:"
|
88 |
"Your Review (submitted on %s):","Ihre Kundenmeinung (vom %s):"
|
89 |
+
"Your review has been accepted for moderation.","Ihre Kundenmeinung wurde für die Moderation akzeptiert."
|
|
|
|
|
|
app/locale/de_DE/Mage_Rss.csv
CHANGED
@@ -6,6 +6,7 @@
|
|
6 |
"Cannot retrieve the wishlist","Wunschzettel konnte nicht abgefragt werden"
|
7 |
"Catalog","Katalog"
|
8 |
"Category Feeds","Kategorie Feeds"
|
|
|
9 |
"Comment: %s<br/>","Kommentar: %s<br/>"
|
10 |
"Coupons/Discounts","Rabattcodes"
|
11 |
"Current Status: %s<br/>","Aktueller Status: %s<br/>"
|
@@ -30,16 +31,16 @@
|
|
30 |
"Order # %s Notification(s)","Bestellung Nr. %s Benachrichtigung(en)"
|
31 |
"Order #%s created at %s","Bestellung Nr. %s aufgegeben am %s"
|
32 |
"Pending product review(s)","Ausstehende Kundenmeinung(en)"
|
33 |
-
"Product: "%s" review By: %s","Artikel: "%s" Kundenmeinung von: %s"
|
34 |
-
"Product: <a href="%s">%s</a> <br/>","Artikel: <a href="%s">%s</a> <br/>"
|
35 |
"Products tagged with %s","Artikel, die mit %s verschlagwortet sind"
|
36 |
"Purchased From: %s","Gekauft von: %s"
|
37 |
"RSS","RSS"
|
38 |
"RSS Feeds","RSS-Feeds"
|
39 |
-
"RSS Feeds List","RSS
|
40 |
"Review: %s <br/>","Kundenmeinung: %s <br/>"
|
41 |
"Rss Config","RSS Konfiguration"
|
42 |
-
"Rss Feeds Section","
|
43 |
"Shipping & Handling","Versand & Bearbeitung"
|
44 |
"Special Products","Sonderartikel"
|
45 |
"Store: %s <br/>","Store: %s <br/>"
|
@@ -49,9 +50,7 @@
|
|
49 |
"Tax","Steuern"
|
50 |
"There are no Rss Feeds","Es sind keine RSS-Feeds vorhanden"
|
51 |
"To:","An:"
|
52 |
-
"Top Level Category","
|
53 |
"Total: %s<br/>","Gesamt: %s<br/>"
|
54 |
"Wishlist","Wunschzettel"
|
55 |
-
"click <a href="%s">here</a> to view the review","Klicken Sie <a href="%s">hier</a>, um die Kundenmeinung
|
56 |
-
"Discount ","Rabatt"
|
57 |
-
"Shipping & Handling","Versand & Bearbeitung"
|
6 |
"Cannot retrieve the wishlist","Wunschzettel konnte nicht abgefragt werden"
|
7 |
"Catalog","Katalog"
|
8 |
"Category Feeds","Kategorie Feeds"
|
9 |
+
"Click for price","Klicken für Preis"
|
10 |
"Comment: %s<br/>","Kommentar: %s<br/>"
|
11 |
"Coupons/Discounts","Rabattcodes"
|
12 |
"Current Status: %s<br/>","Aktueller Status: %s<br/>"
|
31 |
"Order # %s Notification(s)","Bestellung Nr. %s Benachrichtigung(en)"
|
32 |
"Order #%s created at %s","Bestellung Nr. %s aufgegeben am %s"
|
33 |
"Pending product review(s)","Ausstehende Kundenmeinung(en)"
|
34 |
+
"Product: ""%s"" review By: %s","Artikel: ""%s"" Kundenmeinung von: %s"
|
35 |
+
"Product: <a href=""%s"">%s</a> <br/>","Artikel: <a href=""%s"">%s</a> <br/>"
|
36 |
"Products tagged with %s","Artikel, die mit %s verschlagwortet sind"
|
37 |
"Purchased From: %s","Gekauft von: %s"
|
38 |
"RSS","RSS"
|
39 |
"RSS Feeds","RSS-Feeds"
|
40 |
+
"RSS Feeds List","RSS-Feeds Liste"
|
41 |
"Review: %s <br/>","Kundenmeinung: %s <br/>"
|
42 |
"Rss Config","RSS Konfiguration"
|
43 |
+
"Rss Feeds Section","RSS Feeds"
|
44 |
"Shipping & Handling","Versand & Bearbeitung"
|
45 |
"Special Products","Sonderartikel"
|
46 |
"Store: %s <br/>","Store: %s <br/>"
|
50 |
"Tax","Steuern"
|
51 |
"There are no Rss Feeds","Es sind keine RSS-Feeds vorhanden"
|
52 |
"To:","An:"
|
53 |
+
"Top Level Category","Hauptkategorie"
|
54 |
"Total: %s<br/>","Gesamt: %s<br/>"
|
55 |
"Wishlist","Wunschzettel"
|
56 |
+
"click <a href=""%s"">here</a> to view the review","Klicken Sie <a href=""%s"">hier</a>, um die Kundenmeinung anzusehen"
|
|
|
|
app/locale/de_DE/Mage_Rule.csv
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
"ALL","ALLE"
|
2 |
-
"ANY","
|
3 |
"Add","Hinzufügen"
|
4 |
"Apply","Anwenden"
|
5 |
"Conditions Combination","Bedingungs-Kombination"
|
@@ -10,14 +10,14 @@
|
|
10 |
"If %s of these conditions are %s:","Wenn %s dieser Bedingungen %s sind:"
|
11 |
"Invalid discount amount.","Ungültige Rabatthöhe."
|
12 |
"MATCHING ALL","ENTSPRICHT ALLEN"
|
13 |
-
"MATCHING ANY","ENTSPRICHT
|
14 |
"NOT MATCHING ALL","ENTSPRICHT NICHT ALLEN"
|
15 |
-
"NOT MATCHING ANY","ENTSPRICHT NICHT
|
16 |
"Name: %s","Name: %s"
|
17 |
"Open Chooser","Öffne Auswahlmöglichkeit"
|
18 |
"Perform following actions","Folgende Aktionen ausführen"
|
19 |
-
"Please choose a condition to add...","Bitte eine Bedingung auswählen
|
20 |
-
"Please choose an action to add...","Bitte eine Aktion auswählen
|
21 |
"Remove","Entfernen"
|
22 |
"Start at: %s","Starte bei: %s"
|
23 |
"TRUE","WAHR"
|
1 |
"ALL","ALLE"
|
2 |
+
"ANY","IRGENDEINE"
|
3 |
"Add","Hinzufügen"
|
4 |
"Apply","Anwenden"
|
5 |
"Conditions Combination","Bedingungs-Kombination"
|
10 |
"If %s of these conditions are %s:","Wenn %s dieser Bedingungen %s sind:"
|
11 |
"Invalid discount amount.","Ungültige Rabatthöhe."
|
12 |
"MATCHING ALL","ENTSPRICHT ALLEN"
|
13 |
+
"MATCHING ANY","ENTSPRICHT IRGENDEINER"
|
14 |
"NOT MATCHING ALL","ENTSPRICHT NICHT ALLEN"
|
15 |
+
"NOT MATCHING ANY","ENTSPRICHT NICHT IRGENDEINER"
|
16 |
"Name: %s","Name: %s"
|
17 |
"Open Chooser","Öffne Auswahlmöglichkeit"
|
18 |
"Perform following actions","Folgende Aktionen ausführen"
|
19 |
+
"Please choose a condition to add...","Bitte eine Bedingung auswählen"
|
20 |
+
"Please choose an action to add...","Bitte eine Aktion auswählen"
|
21 |
"Remove","Entfernen"
|
22 |
"Start at: %s","Starte bei: %s"
|
23 |
"TRUE","WAHR"
|
app/locale/de_DE/Mage_Sales.csv
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
-
""%s" coupon code is not valid.","Rabattcode "%s" ist ungültig."
|
2 |
"%s","%s"
|
3 |
-
"%s / %s rate:","%s
|
4 |
"%s for %s","%s für %s"
|
5 |
"%s order(s) cannot be canceled","%s Bestellung(en) kann / können nicht storniert werden"
|
6 |
"%s order(s) have been canceled.","%s Bestellung(en) wurden storniert."
|
7 |
"%s order(s) have been put on hold.","%s Bestellung(en) wurden zurückgestellt."
|
8 |
"%s order(s) have been released from holding status.","%s Bestellung(en) nicht für haltenden Status freigegeben."
|
9 |
"%s order(s) were not put on hold.","%s Bestellung(en) die nicht zurückgestellt sind."
|
10 |
-
"%s order(s) were not released from holding status.","%s
|
11 |
"* - Enter custom price excluding tax","* - Bitte individuellen Preis ohne Steuern eingeben"
|
12 |
"* - Enter custom price including tax","* - Bitte individuellen Preis inklusive Steuern eingeben"
|
13 |
"-- Please Select --","-- Bitte Wählen --"
|
14 |
-
"-- Please Select Billing Agreement--","-- Bitte
|
15 |
"About This Order:","Über diese Bestellung:"
|
16 |
"About This Profile:","Über dieses Profil:"
|
17 |
"About Your Invoice","Über Ihre Rechnung"
|
@@ -28,9 +28,11 @@
|
|
28 |
"Add","Hinzufügen"
|
29 |
"Add New Address","Neue Adresse hinzufügen"
|
30 |
"Add Order Comments","Kommentar zur Bestellung hinzufügen"
|
|
|
31 |
"Add Products","Artikel hinzufügen"
|
32 |
"Add Selected Product(s) to Option","Gewählte Artikel zur Option hinzufügen"
|
33 |
-
"Add Selected Product(s) to Order","
|
|
|
34 |
"Add To Order","Zur Bestellung hinzufügen"
|
35 |
"Add Tracking Number","Trackingnummer hinzufügen"
|
36 |
"Add comment to order","Kommentar zur Bestellung hinzufügen"
|
@@ -39,21 +41,23 @@
|
|
39 |
"Add to Cart","In den Warenkorb"
|
40 |
"Additional Product Info","Zusätzliche Artikelinfo"
|
41 |
"Address","Adresse"
|
42 |
-
"Address model is not defined.","Address
|
43 |
"Adjustment Fee","Berichtigungszuschlag"
|
44 |
"Adjustment Refund","Berichtigungserstattung"
|
45 |
"Agreement Information","Bedingungs-Information"
|
46 |
"Allow Reorder","Nachbestellung erlauben"
|
47 |
"Amount","Betrag"
|
48 |
"Amount: %s.","Betrag: %s."
|
49 |
-
"An error occurred while assigning order status. Status has not been assigned.","
|
50 |
-
"An error occurred while
|
51 |
-
"An error occurred while
|
52 |
-
"An error occurred while
|
|
|
53 |
"An item option with code %s already exists.","Eine Artikeloption mit dem Code %s existiert bereits."
|
|
|
54 |
"Append Comments","Kommentar anfügen"
|
55 |
"Apply","Anwenden"
|
56 |
-
"Apply Coupon Code","Rabattcode
|
57 |
"Approved the payment online.","Genehmigte Online Zahlung."
|
58 |
"Are you sure you want to accept this payment?","Sind Sie sicher das Sie diese Zahlung akzeptieren wollen?"
|
59 |
"Are you sure you want to cancel this order?","Sind Sie sicher das Sie diese Bestellung stornieren wollen?"
|
@@ -74,19 +78,21 @@
|
|
74 |
"Authorized amount of %s.","Authorisierungsbetrag in Höhe von %s."
|
75 |
"Authorizing amount of %s is pending approval on gateway.","Authorisierung des Betrags %s ausstehend - warte auf Genehmigung vom Gateway."
|
76 |
"Back","Zurück"
|
77 |
-
"Back to Billing Agreements","Zurück zu den
|
78 |
"Back to My Orders","Zurück zu meinen Bestellungen"
|
79 |
-
"Back to Recurring Profiles","Zurück zu den wiederkehrenden
|
80 |
"Backordered","Nachbestellt"
|
81 |
"Bestsellers","Bestseller"
|
82 |
"Bill to Name","Rechnung an"
|
83 |
-
"Billing","
|
84 |
"Billing Address","Rechnungsadresse"
|
85 |
-
"Billing Agreement","
|
86 |
-
"Billing Agreement # %s","
|
87 |
-
"Billing Agreement #%s","
|
88 |
-
"Billing Agreement View","
|
89 |
-
"Billing Agreements","
|
|
|
|
|
90 |
"Buy %s for price %s","Kaufe %s für den Preis %s"
|
91 |
"CSV","CSV"
|
92 |
"Cancel","Stornieren"
|
@@ -100,11 +106,11 @@
|
|
100 |
"Cannot determine the field name.","Feldname kann nicht bestimmt werden."
|
101 |
"Cannot do invoice for order.","Eine Rechnung kann für diese Bestellung nicht erstellt werden."
|
102 |
"Cannot do shipment for order.","Der Versand kann für diese Bestellung nicht erstellt werden."
|
103 |
-
"Cannot get order instance","
|
104 |
-
"Cannot get the order instance.","
|
105 |
"Cannot register an existing credit memo.","Existierende Gutschrift konnte nicht registriert werden."
|
106 |
"Cannot register existing invoice","Existierende Rechnung konnte nicht registriert werden"
|
107 |
-
"Cannot register existing shipment","
|
108 |
"Capture","Erfassen"
|
109 |
"Capture Amount","Betrag erfassen"
|
110 |
"Capture Offline","Offline erfassen"
|
@@ -115,7 +121,7 @@
|
|
115 |
"Carrier","Versender"
|
116 |
"Carrier/Method","Versender/Versandmethode"
|
117 |
"Change status, add comments","Status ändern, Kommentare hinzufügen"
|
118 |
-
"Changing address information will not recalculate shipping, tax or other order amount.","
|
119 |
"Checkout Totals Sort Order","Reihenfolge der Gesamtbeträge des Bezahlvorgangs"
|
120 |
"City","Ort"
|
121 |
"Click to change shipping method","Ändern der Versandart"
|
@@ -130,6 +136,8 @@
|
|
130 |
"Complete","Vollständig"
|
131 |
"Configure","Konfigurieren"
|
132 |
"Configure and Add to Order","Konfiguriere und füge der Bestellung hinzu"
|
|
|
|
|
133 |
"Country","Land"
|
134 |
"Coupons","Rabattcodes"
|
135 |
"Create","Anlegen"
|
@@ -141,12 +149,15 @@
|
|
141 |
"Create New Order for New Customer","Neue Bestellung für Neukunden anlegen"
|
142 |
"Create New Order for New Customer in %s","Neue Bestellung für Neukunden anlegen in %s"
|
143 |
"Create New Status","Neuen Status erstellen"
|
|
|
144 |
"Create Shipment","Versand starten"
|
|
|
|
|
145 |
"Create new invoice for order","Neue Rechnung für Bestellung anlegen"
|
146 |
"Create new shipment for order","Neuen Versand für Bestellung anlegen"
|
147 |
"Create...","Erstelle..."
|
148 |
"Created At","Angelegt am"
|
149 |
-
"Created billing agreement #%s.","
|
150 |
"Created:","Erstellt:"
|
151 |
"Credit Memo","Gutschrift"
|
152 |
"Credit Memo #","Gutschrift Nr."
|
@@ -178,11 +189,14 @@
|
|
178 |
"Customer My Account Order View","Kunde Mein Benutzerkonto Bestellübersicht"
|
179 |
"Customer Name","Vorname"
|
180 |
"Customer\'s Current Activities","Aktuelle Aktionen des Kunden"
|
|
|
181 |
"Date","Datum"
|
182 |
"Date Shipped","Versanddatum"
|
183 |
"Default Status","Standard Status"
|
|
|
184 |
"Default logo, will be used in PDF and HTML documents.<br />(jpeg, tiff, png)","Standardlogo wird in PDF und HTML Dokumenten verwendet.<br />(jpeg, tiff, png)"
|
185 |
"Delete","Löschen"
|
|
|
186 |
"Denied the payment online.","Online Zahlung verweigert."
|
187 |
"Deny Payment","Zahlung verweigern"
|
188 |
"Description Message","Beschreibung"
|
@@ -196,33 +210,39 @@
|
|
196 |
"Edit Order %s %s Address","Bearbeite Bestellung %s %s Adresse"
|
197 |
"Edit Order Status","Bestell-Status bearbeiten"
|
198 |
"Email","E-Mail"
|
|
|
199 |
"Email Copy of Credit Memo","E-Mail-Kopie der Gutschrift"
|
200 |
"Email Copy of Invoice","E-Mail-Kopie der Rechnung"
|
201 |
"Email Copy of Shipment","E-Mail-Kopie der Versandinformationen"
|
202 |
"Email Order Confirmation","E-Mail-Kopie der Bestellbestätigung"
|
203 |
"Enable","Aktivieren"
|
204 |
"Enabled","Aktiviert"
|
|
|
|
|
205 |
"Error to Show in Shopping Cart","Fehler beim Anzeigen im Warenkorb"
|
206 |
"Excel XML","Excel XML"
|
207 |
"Excl. Tax","zzgl. Steuern"
|
208 |
"Expired","Abgelaufen"
|
209 |
-
"
|
210 |
-
"Failed to
|
211 |
-
"Failed to
|
212 |
-
"Failed to
|
213 |
-
"Failed to
|
|
|
214 |
"Failed to update the payment.","Fehler beim Aktualisieren der Zahlung."
|
215 |
-
"Failed to update the profile.","Fehler beim
|
216 |
"Failed to void the payment.","Zahlung stornieren fehlgeschlagen."
|
217 |
"Fetch","Abruf"
|
|
|
|
|
218 |
"First Name","Vorname"
|
219 |
"From","Von"
|
220 |
"From Name","Von Name"
|
221 |
"From:","Von:"
|
222 |
-
"G.T. (Base)","
|
223 |
-
"G.T. (Purchased)","
|
224 |
"General Information","Allgemeine Information"
|
225 |
-
"Get Payment Update","Aktualisierung der Zahlung holen
|
226 |
"Get Update","Aktualisierung holen"
|
227 |
"Get shipping methods and rates","Versandarten und -kosten abrufen"
|
228 |
"Gift Message","Geschenk Nachricht"
|
@@ -230,32 +250,36 @@
|
|
230 |
"Gift Message for the Entire Order","Geschenknachricht für die gesamte Bestellung"
|
231 |
"Gift Message for this Order","Geschenknachricht für diese Bestellung"
|
232 |
"Gift Options","Geschenkoptionen"
|
|
|
233 |
"Grand Total","Gesamtsumme"
|
234 |
-
"Grand Total to be Charged","
|
235 |
"Guest","Gast"
|
|
|
236 |
"Hold","Zurückstellen"
|
237 |
-
"Hold action is not available.","
|
238 |
"Hold order","Bestellung zurückstellen"
|
239 |
"ID","ID"
|
240 |
"ID #","ID #"
|
241 |
-
"
|
242 |
-
"If empty, the default
|
|
|
243 |
"If the invoice was created offline, try creating an offline creditmemo.","Wenn die Rechnungsstellung offline erfolgt ist, versuchen Sie bitte auch offline eine Gutschrift zu erstellen."
|
244 |
"Incl. Tax","inkl. Steuern"
|
245 |
"Information","Information"
|
246 |
"Initial Fee","Einführungs Gebühr"
|
247 |
"Initial Fees","Einführungsgebühren"
|
248 |
-
"Initial period payment","
|
249 |
-
"
|
|
|
250 |
"Invalid carrier specified.","Ungültigen Versender angegeben"
|
251 |
-
"Invalid draw line data. Please define "lines" array.","
|
252 |
"Invalid entity model","Ungültiges Entity Model"
|
253 |
-
"Invalid item option format.","
|
254 |
-
"Invalid qty to invoice item "%s"","Ungültige Anzahl für Rechnung bei Artikel "%s""
|
255 |
-
"Invalid qty to refund item "%s"","Ungültige Anzahl für Erstattung bei Artikel "%s""
|
256 |
-
"Invalid qty to ship for item "%s"","Ungültige Anzahl für Versand bei Artikel "%s""
|
257 |
-
"Invalid renderer model","Ungültiges Renderer-
|
258 |
-
"Invalid request for adding product to quote.","
|
259 |
"Invoice","Rechnung"
|
260 |
"Invoice #","Rechnung Nr."
|
261 |
"Invoice # ","Rechnung Nr. "
|
@@ -273,7 +297,7 @@
|
|
273 |
"Invoice Update for Guest","Rechnungsaktualisierung für Gäste"
|
274 |
"Invoice and Packing Slip Design","Rechnungs- und Lieferscheingestaltung"
|
275 |
"Invoice and Ship","Rechnung und Versand"
|
276 |
-
"Invoice canceling problem.","Problem beim
|
277 |
"Invoice cannot be canceled.","Rechnung kann nicht storniert werden."
|
278 |
"Invoice cannot be captured.","Rechnung kann nicht erfasst werden."
|
279 |
"Invoice cannot be voided.","Rechnung kann nicht aufgehoben werden."
|
@@ -285,8 +309,8 @@
|
|
285 |
"Is Closed","geschlossen"
|
286 |
"Item","Artikel"
|
287 |
"Item Status","Artikelstatus"
|
288 |
-
"Item object is not specified.","
|
289 |
-
"Item options declaration error.","
|
290 |
"Item ordered qty","bestellte Stückzahl"
|
291 |
"Item qty declaration error.","Fehler beim Bestimmen der Artikelmenge."
|
292 |
"Items","Artikel"
|
@@ -294,36 +318,39 @@
|
|
294 |
"Items Ordered","Bestellte Artikel"
|
295 |
"Items Refunded","Erstattete Artikel"
|
296 |
"Items Shipped","Versandte Artikel"
|
|
|
297 |
"Items maximum quantity or price do not allow checkout.","Maximale Bestell-Anzahl für diesen Artikel überschritten oder die Bestellsumme ist zu hoch für den Warenkorb."
|
298 |
-
"Items options declaration error.","
|
299 |
"Items to Refund","Zu erstattende Artikel"
|
300 |
"Items to Ship","Zu versendende Artikel"
|
301 |
-
"Key","
|
302 |
"Last Name","Nachname"
|
303 |
"Last Ordered Items","Zuletzt bestellte Artikel"
|
304 |
-
"Last status can\'t be unassigned from state.","
|
|
|
305 |
"Link to the New Order","Link zur neuen Bestellung"
|
306 |
"Link to the Previous Order","Link zu vorherigen Bestellung"
|
307 |
"Logo for HTML Print View","Logo für HTML Druckansicht<br />(auch für E-Mail Vorlagen)"
|
308 |
"Logo for HTML documents only. If empty, default will be used.<br />(jpeg, gif, png)","Logo ausschließlich für HTML Dokumente. Wenn leer, wird das Standardlogo verwendet.<br />(jpeg, gif, png)"
|
309 |
"Logo for PDF Print-outs (200x50)","Logo für PDF-Ausdrucke (200x50)"
|
|
|
310 |
"Manage","Verwalten"
|
311 |
-
"Maximum shipping amount allowed to refund is: %s","
|
312 |
"Message","Nachricht"
|
313 |
"Message:","Nachricht:"
|
314 |
"Minimum Amount","Mindestbetrag"
|
315 |
-
"Minimum Order Amount","
|
316 |
"Mixed","Gemischt"
|
317 |
"Move to Shopping Cart","In den Warenkorb verschieben"
|
318 |
"Move to Wishlist","Auf den Wunschzettel verschieben"
|
319 |
-
"Multi-address Description Message","
|
320 |
-
"Multi-address Error to Show in Shopping Cart","
|
321 |
"My Orders","Meine Bestellungen"
|
322 |
"My Orders - Details","Meine Bestellungen - Details"
|
323 |
"N/A","Nicht verfügbar"
|
324 |
"Name","Name"
|
325 |
"New","Neu"
|
326 |
-
"New Billing Agreement","Neue
|
327 |
"New Credit Memo","Neue Gutschrift"
|
328 |
"New Credit Memo for Guest","Neue Gutschrift für Gäste"
|
329 |
"New Invoice","Neue Rechnung"
|
@@ -333,7 +360,7 @@
|
|
333 |
"New Order","Neue Bestellung"
|
334 |
"New Order Confirmation Email Sender","E-Mail Absender für eine<br />neue Bestellbestätiging"
|
335 |
"New Order Confirmation Template","Vorlage für eine neue Bestellbestätigung"
|
336 |
-
"New Order Confirmation Template for Guest","Vorlage für eine neue Bestellbestätigung
|
337 |
"New Order RSS","RSS für neue Bestellungen"
|
338 |
"New Order Status","Neuer Bestell-Status"
|
339 |
"New Order for Guest","Neue Bestellung für Gäste"
|
@@ -345,21 +372,20 @@
|
|
345 |
"No Items","Keine Artikel"
|
346 |
"No Items To Refund","Keine Artikel zur Erstattung vorhanden"
|
347 |
"No Payment Methods","Keine Bezahlarten"
|
348 |
-
"No detail for number "%s"","Keine Details für Nummer "%s""
|
349 |
"No information available.","Keine Informationen verfügbar."
|
350 |
"No items","Keine Artikel"
|
351 |
-
"No order(s) were put on hold.","
|
352 |
-
"No order(s) were released from holding status.","
|
353 |
"No ordered items","Keine bestellten Artikel"
|
354 |
"No shipping information available","Keine Versandinformationen verfügbar"
|
355 |
-
"No valid transaction found for this payment review.","No valid transaction found for this payment review."
|
356 |
"Nominal Items","Nominale Artikel"
|
357 |
"Nominal item can be purchased standalone only. To proceed please remove other items from the quote.","Nominaler Artikel kann nur einzeln bestellt werden. Um fortzusetzen, entfernen Sie bitte andere Artikel der Bestellung."
|
358 |
-
"Nominal order registered.","
|
359 |
"Not Capture","Nicht erfasst"
|
360 |
"Not Initialized","Nicht initialisiert"
|
361 |
"Not Notified","Nicht benachrichtigt"
|
362 |
-
"Not enough valid data to save the parent transaction ID.","
|
363 |
"Notification Not Applicable","Hinweis nicht verfügbar"
|
364 |
"Notified","Benachrichtigt"
|
365 |
"Notify Customer by Email","Kunden per E-Mail informieren"
|
@@ -367,6 +393,7 @@
|
|
367 |
"Number of Invoiced Orders","Anzahl der in Rechnung gestellten Bestellungen"
|
368 |
"Number of Orders","Anzahl der Bestellungen"
|
369 |
"Number of Refunded Orders","Anzahl erstatteter Bestellungen"
|
|
|
370 |
"Offline Refunded","Offline Erstattet"
|
371 |
"On Hold","Zurückgestellt"
|
372 |
"Online Refunded","Online Erstattet"
|
@@ -411,53 +438,57 @@
|
|
411 |
"Order View","Bestellansicht"
|
412 |
"Order does not allow to be canceled.","Es ist nicht gestattet diese Bestellung zu stornieren."
|
413 |
"Order invoice","Bestellung Rechnung"
|
414 |
-
"Order is suspended as its capture amount %s is suspected to be fraudulent.","
|
415 |
"Order object is not specified.","Bestellobjekt ist nicht näher bestimmt."
|
416 |
"Order saving error: %s","Fehler beim Speichern der Bestellung: %s"
|
417 |
"Order shipments","Bestellung Versand"
|
418 |
"Order status does not exist.","Bestell-Status existiert nicht."
|
419 |
"Order status with the same status code already exist.","Bestell-Status mit dem selben Status Code existiert bereits."
|
420 |
-
"Order was placed using %s","Bestellung wurde
|
421 |
"Ordered","Bestellt"
|
422 |
-
"Ordered amount of %s.","
|
423 |
-
"Ordering amount of %s is pending approval on gateway.","
|
424 |
"Orders","Bestellungen"
|
|
|
|
|
425 |
"Original Price","Originalpreis"
|
426 |
-
"Original order item that recurring payment profile correspondss to.","
|
427 |
"PDF Credit Memos","PDF Gutschriften"
|
428 |
"PDF Invoices","PDF Rechnungen"
|
429 |
"PDF Packingslips","PDF Packzettel"
|
430 |
"PDF Print-outs","PDF Ausdrucke"
|
431 |
"PDF object is not specified.","PDF-Objekt ist nicht näher bestimmt."
|
432 |
"PDF page object is not specified.","PDF-Seitenobjekt ist nicht näher bestimmt."
|
433 |
-
"PDF total model should extend Mage_Sales_Model_Order_Pdf_Total_Default","PDF
|
|
|
|
|
434 |
"Packingslip # ","Packzettel Nr."
|
435 |
"Paid","Bezahlt"
|
436 |
"Paid Amount","Einzahlungsbetrag"
|
437 |
-
"Parent Transaction ID","
|
438 |
-
"Parent transaction ID must have a transaction ID.","
|
439 |
"Partial","teilweise"
|
440 |
"Payment Failed","Zahlung fehlgeschlagen"
|
441 |
"Payment Information","Zahlungsinformation"
|
442 |
"Payment Method","Zahlart"
|
443 |
"Payment Method Name","Name der Zahlart"
|
444 |
"Payment Method:","Zahlart:"
|
445 |
-
"Payment Review","
|
446 |
"Payment disallow storing objects.","Zahlung erlaubt nicht Objekte zu speichern."
|
447 |
"Payment transactions disallow storing objects.","Zahlungs-Transaktionen erlauben nicht die Speicherung von Objekten."
|
448 |
-
"Payment type","
|
449 |
"Payment update has been made.","Zahlungs-Aktualisierung wurde vollzogen."
|
450 |
"Pending","Ausstehend"
|
451 |
"Pending Payment","Ausstehende Zahlung"
|
452 |
"Period","Zeitraum"
|
453 |
-
"Place Order Using Billing Agreements","Bestellung abschließen
|
454 |
"Placed from IP","von IP"
|
455 |
"Please Select Products to Add","Bitte wählen Sie Artikel zum hinzufügen"
|
456 |
"Please Select a Customer","Bitte wählen Sie einen Kunden"
|
457 |
"Please Select a Store","Bitte wählen Sie einen Store"
|
458 |
-
"Please define PDF object before using.","
|
459 |
"Please enter positive number in this field.","Bitte geben Sie hier eine positive Zahl ein."
|
460 |
-
"Please specify a valid grid column alias name that exists in grid table.","
|
461 |
"Price","Preis"
|
462 |
"Print","Drucken"
|
463 |
"Print All","Alle drucken"
|
@@ -472,18 +503,22 @@
|
|
472 |
"Print Packingslips","Packzettel drucken"
|
473 |
"Print Refund","Erstattung drucken"
|
474 |
"Print Shipment","Versandinformationen drucken"
|
|
|
|
|
475 |
"Processing","Verarbeitung"
|
476 |
"Product","Artikel"
|
477 |
"Product Name","Artikelname"
|
478 |
"Products","Artikel"
|
479 |
"Products Bestsellers Report","Artikel Bestseller Bericht"
|
480 |
"Products in Comparison List","Artikel in Vergleichsliste"
|
|
|
481 |
"Profile #%s","Profil #%s"
|
482 |
"Profile Information","Profil Information"
|
483 |
"Profile State","Profil Zustand"
|
484 |
"Profit","Gewinn"
|
485 |
"Promotion Coupons Usage Report","Verwendungsbericht - Rabattcodes"
|
486 |
-
"Proper payment object must be set.","
|
|
|
487 |
"Purchased From","Bestellt in"
|
488 |
"Purchased From (Store)","Bestellt in (Store)"
|
489 |
"Purchased Item","Bestellte Artikel"
|
@@ -498,8 +533,8 @@
|
|
498 |
"Qty to Refund","Menge zur Erstattung"
|
499 |
"Qty to Ship","Menge zum Versand"
|
500 |
"Quantity Ordered","Menge bestellt"
|
501 |
-
"Quote item id is not received.","
|
502 |
-
"Quote item is not loaded.","
|
503 |
"Rate","Einstufen"
|
504 |
"Recent Orders","Letzte Bestellungen"
|
505 |
"Recently Compared Products","Zuletzt verglichene Artikel"
|
@@ -525,14 +560,13 @@
|
|
525 |
"Refunded amount of %s offline.","Erstatteter Betrag von %s offline."
|
526 |
"Refunded amount of %s online.","Erstatteter Betrag von %s online."
|
527 |
"Refunds","Erstattungen"
|
528 |
-
"Registered a Void notification.","
|
529 |
-
"Registered notification about approved payment.","
|
530 |
-
"Registered notification about
|
531 |
-
"Registered notification about
|
532 |
-
"Registered notification about
|
533 |
-
"Registered
|
534 |
-
"Registered update about
|
535 |
-
"Registered update about denied payment.","Registered update about denied payment."
|
536 |
"Regular Payment","Reguläre Zahlung"
|
537 |
"Related Orders","Ähnliche Bestellungen"
|
538 |
"Remove","Entfernen"
|
@@ -550,6 +584,7 @@
|
|
550 |
"Retrieve shipment information","Versandinformationen abfragen"
|
551 |
"Return to Stock","Zurück ins Lager"
|
552 |
"Returned","Zurückgeschickt"
|
|
|
553 |
"Revenue","Ertrag / Einnahme"
|
554 |
"Row Subtotal","Zeilen-Zwischensumme"
|
555 |
"Row Total","Zeilensumme"
|
@@ -574,21 +609,30 @@
|
|
574 |
"Save Status Assignment","Status Zuordnung speichern"
|
575 |
"Save in address book","Im Adressbuch speichern"
|
576 |
"Schedule","planen"
|
|
|
|
|
577 |
"Select from existing customer addresses:","Aus bestehenden Kundenadressen:"
|
578 |
"Send Credit Memo Comment Email Copy To","Sende Gutschriftenkommentar in Kopie an E-Mail"
|
|
|
|
|
579 |
"Send Credit Memo Email Copy To","Sende Gutschrift in Kopie an E-Mail"
|
580 |
"Send Email","Sende E-Mail"
|
581 |
"Send Invoice Comment Email Copy To","Sende Rechnungskommentar in Kopie an E-Mail"
|
|
|
|
|
582 |
"Send Invoice Email Copy To","Sende Rechnung in Kopie an E-Mail"
|
583 |
"Send Order Comment Email Copy To","Sende Bestellkommentar in Kopie an E-Mail"
|
|
|
584 |
"Send Order Email","Bestell E-Mail versenden"
|
585 |
-
"Send Order Email Copy Method","Sende Bestellung
|
586 |
-
"Send Order Email Copy To","Sende Bestellung
|
587 |
"Send Sales Emails","Sende Verkaufs E-Mails"
|
588 |
"Send Shipment Comment Email Copy To","Sende Versandkommentar in Kopie an E-Mail"
|
|
|
|
|
589 |
"Send Shipment Email Copy To","Sende Versandinformationen in Kopie an E-Mail"
|
590 |
"Send Tracking Information","Trackinginformationen senden"
|
591 |
-
"Set order for existing transactions not allowed","
|
592 |
"Ship","Senden"
|
593 |
"Ship To","Senden an"
|
594 |
"Ship to Name","Versand - Name"
|
@@ -620,9 +664,12 @@
|
|
620 |
"Shipping Refund","Versanderstattung"
|
621 |
"Shipping and Tracking Information","Versand- und Trackinginformationen"
|
622 |
"Shopping Cart","Warenkorb"
|
|
|
|
|
623 |
"Signed Up From","Anmeldung in"
|
|
|
624 |
"Sku","Artikelnummer"
|
625 |
-
"Some of the products below do not have all the required options. Please edit them and configure all the required options.","
|
626 |
"Sorry, no quotes are available for this order at this time.","Entschuldigung, momentan gibt es keine Angebote für diese Bestellung."
|
627 |
"Source object is not specified.","Quellobjekt ist nicht näher bestimmt."
|
628 |
"Specified profile does not exist.","Festgelegtes Profil existiert nicht."
|
@@ -653,11 +700,11 @@
|
|
653 |
"Tax Amount","Steuerbetrag"
|
654 |
"Tax Percent","Prozentsatz Steuern"
|
655 |
"Telephone","Telefon"
|
656 |
-
"The Order State "%s" must not be set manually.","Der Bestellzustand "%s"
|
657 |
-
"The address total model should be extended from Mage_Sales_Model_Quote_Address_Total_Abstract.","
|
658 |
-
"The billing agreement "%s" has been canceled.","Die
|
659 |
-
"The billing agreement "%s" has been created.","Die
|
660 |
-
"The coupon code has been accepted.","Der
|
661 |
"The message has been sent.","The Nachricht wurde versendet."
|
662 |
"The message was sent.","Die Nachricht wurde versendet."
|
663 |
"The order address has been updated.","Die Bestelladresse wurde aktualisiert."
|
@@ -680,21 +727,24 @@
|
|
680 |
"The profile has been updated.","Das Profil wurde aktualisiert."
|
681 |
"The profile has no changes.","Das Profil hat keine Veränderungen."
|
682 |
"The profile state has been updated.","Der Pofil-Zustand wurde aktualisiert."
|
683 |
-
"The
|
684 |
-
"The
|
685 |
-
"The
|
686 |
-
"
|
687 |
-
"
|
|
|
|
|
|
|
|
|
688 |
"There is no need to approve this payment.","Es gibt keinen Grund die Zahlung zu akzeptieren."
|
689 |
"There is no need to deny this payment.","Es gibt keinen Grund die Zahlung zu verweigern."
|
690 |
"There is no update for the payment.","Es liegt keine Aktualisierung der Zahlung vor."
|
691 |
"This message will be shown in shopping cart when subtotal after discount less than minimum amount.","Diese Mitteilung wird im Warenkorb angezeigt, wenn die Zwischensumme nach Rabatten geringer als der Mindestbetrag ist"
|
692 |
"This operation requires an existing transaction object.","Dieser Vorgang erfordert einen gültigen Transaktions-Objekt."
|
693 |
-
"This order contains (%s) items and therefore cannot be edited through the admin interface at this time, if you wish to continue editing the (%s) items will be removed, the order will be canceled and a new order will be placed.","
|
694 |
"This order no longer exists.","Diese Bestellung existiert nicht mehr."
|
695 |
-
"This product does not have any configurable options
|
696 |
-
"This
|
697 |
-
"This profile state cannot be changed to "%s".","Dieser Profilzustand konnte nicht zu "%s" abgeändert werden."
|
698 |
"This will create an offline refund. To create an online refund, open an invoice and create credit memo for it. Do you wish to proceed?","Es wird eine online Erstattung erstellt. Um eine online Erstattung durchzuführen, öffnen Sie bitte eine Rechnung und Erstellen Sie eine Gutschrift. Möchten Sie das tun / fortsetzen?"
|
699 |
"Tier Pricing","Staffelpreise"
|
700 |
"Title","Titel"
|
@@ -703,8 +753,8 @@
|
|
703 |
"To:","An:"
|
704 |
"Total","Gesamt"
|
705 |
"Total %d product(s)","Gesamt %d Artikel"
|
706 |
-
"Total (ex)","
|
707 |
-
"Total (inc)","
|
708 |
"Total Due","Gesamtbetrag fällig"
|
709 |
"Total Invoiced","Insgesamt in Rechnung gestellt"
|
710 |
"Total Invoiced Paid","Insgesamt in Rechnung gestellt bezahlt"
|
@@ -716,11 +766,12 @@
|
|
716 |
"Total Refund","Gesamterstattung"
|
717 |
"Total Refunded","Gesamterstattung"
|
718 |
"Total Refunded Report","Gesamterstattungs-Bericht"
|
719 |
-
"Total Sales Shipping","
|
720 |
"Total Shipped Report","Bericht-Gesamtsumme Versand"
|
721 |
"Total Shipping","Gesamtsumme Versand"
|
722 |
"Total Shipping Charges","Gesamt Summe Versandkosten"
|
723 |
"Total Tax","Gesamtbetrag Steuern"
|
|
|
724 |
"Track Order","Sendungsverfolgung"
|
725 |
"Track all shipment(s)","Alle Sendungen verfolgen"
|
726 |
"Track all shipments","Alle Sendungen verfolgen"
|
@@ -729,23 +780,24 @@
|
|
729 |
"Tracking","Sendungsverfolgung"
|
730 |
"Tracking Number","Trackingnummer"
|
731 |
"Tracking Number(s):","Tracking Nummer(n):"
|
732 |
-
"Transaction "%s" was already processed.","Transaktion "%s" wurde bereits verarbeitet."
|
733 |
"Transaction ID","Transaktion ID"
|
734 |
-
"Transaction ID must not be empty.","
|
735 |
-
"Transaction ID: "%s".","
|
736 |
"Transaction Type","Transaktions Art"
|
737 |
"Transactions","Transaktionen"
|
738 |
"Trial ","Test "
|
739 |
"Trial Payment","Test Zahlung"
|
740 |
"Trial Period","Test Zeitraum"
|
741 |
"Trial period payment","Test periodische Zahlung"
|
|
|
742 |
"Unassign","Lösen"
|
743 |
"Unhold","Wiederaufnehmen"
|
744 |
"Unhold action is not available.","Zurückstellen ist nicht verfügbar."
|
745 |
"Unhold order","Bestellung wiederaufnehmen"
|
746 |
"Unknown State","Zustand unbekannt"
|
747 |
"Unknown Status","Status unbekannt"
|
748 |
-
"Unsupported transaction type "%s".","Nicht unterstützte Transaktions-Art "%s"."
|
749 |
"Update Changes","Änderungen anwenden"
|
750 |
"Update Items and Qty\'s","Artikel und Stk. aktualisieren"
|
751 |
"Update Qty\'s","Stk. aktualisieren"
|
@@ -757,24 +809,32 @@
|
|
757 |
"Value","Betrag"
|
758 |
"View","Ansehen"
|
759 |
"View All","Alle ansehen"
|
|
|
760 |
"View Order","Bestellung ansehen"
|
761 |
"Visible on Frontend","Sichtbar im Frontend"
|
762 |
"Void","Aufheben"
|
763 |
"Void invoice","Rechnung aufheben"
|
764 |
"Voided authorization.","Authorisierung aufgehoben."
|
765 |
"Website","Website"
|
|
|
766 |
"Whether buyer can define the date when billing for the profile begins.","Unabhängig davon ob der Käufer definieren kann wann das Zahlungsprofil beginnt."
|
|
|
767 |
"Wishlist","Wunschzettel"
|
768 |
-
"Wrong billing agreement ID specified.","Falsche
|
769 |
-
"Wrong quote item id to update configuration.","
|
770 |
-
"Wrong state: "%s".","Falscher Zustand: "%s"."
|
771 |
"Yes","Ja"
|
772 |
-
"You can leave a box blank if you don\'t wish to add a gift message for whole order",
|
|
|
773 |
"You have placed no orders.","Sie haben keine Bestellungen getätigt."
|
774 |
"You will be redirected to the payment system website.","Sie werden zur Zahlungsabwicklungs-Webseite weiergeleitet."
|
775 |
"Your credit card will be charged for","Ihre Kreditkarte wird belastet für"
|
776 |
"ZIP/Post Code","Postleitzahl"
|
777 |
"Zip/Postal Code","Postleitzahl"
|
|
|
|
|
|
|
|
|
778 |
"the credit memo email is not sent","Die Gutschrift E-Mail wurde nicht vergesendet"
|
779 |
"the credit memo email was sent","Die Gutschrift E-Mail wurde versandt"
|
780 |
"the invoice email is not sent","Die Rechnung wurde per E-Mail versandt"
|
@@ -783,35 +843,3 @@
|
|
783 |
"the order confirmation email was sent","Die Bestellbestätigung wurde versandt"
|
784 |
"the shipment email is not sent","Die Versand E-Mail wurde nicht gesendet"
|
785 |
"the shipment email was sent","Die Versand E-Mail wurde versandt"
|
786 |
-
"%s order(s) successfully released from holding status","%s Bestellung(en) erfolgreich wiederhergestellt"
|
787 |
-
"Add Gift Messsage","Geschenknachricht hinzufügen"
|
788 |
-
"Add a gift message for <strong>each gift item</strong>","Geschenknachricht für <strong>jedes Geschenk</strong> hinzufügen"
|
789 |
-
"Add a gift message for the <strong>entire order</strong>","Geschenknachricht für <strong>gesamte Bestellung</strong> hinzufügen"
|
790 |
-
"Address model is not defined","Address-Model ist nicht definiert"
|
791 |
-
"Are you sure? This order will be cancelled and a new one will be created instead","Sind Sie sicher? Die Bestellung wird storniert und eine neue dafür angelegt"
|
792 |
-
"Cannot register existing creditmemo","Existierende Gutschrift konnte nicht registriert werden"
|
793 |
-
"Custom Options","Individuelle Optionen"
|
794 |
-
"Edit Gift Messsage","Geschenknachricht bearbeiten"
|
795 |
-
"Excel","Excel"
|
796 |
-
"Failed to send order email.","Senden der Bestellbestätigung fehlgeschlagen."
|
797 |
-
"Gift","Geschenk"
|
798 |
-
"Grand Total to be charged","Gesamtsumme die belastet werden soll"
|
799 |
-
"Hold action is not available","Zurückstellen nicht verfügbar"
|
800 |
-
"If empty, the default description above will be used","Wenn leer wird die Standardbeschreibung oben verwendet"
|
801 |
-
"If empty, the default error above will be used","Wenn leer wird der Standardfehler oben ausgegeben"
|
802 |
-
"Invalid block: %s","Ungültiger Block: %s"
|
803 |
-
"Invalid draw line data. Please define "lines" array","Ungültige Beziehungsdaten. Bitte "lines" array/Feld festlegen"
|
804 |
-
"Invalid item option format","Ungültiges Elementoptionen Format"
|
805 |
-
"Invalid request for adding product to quote","Ungültige Anfrage, den Artikel zum Angebot hinzuzufügen"
|
806 |
-
"Invoice and Ship...","Rechnung und Versand..."
|
807 |
-
"Link to the new order","Link zur neuen Bestellung"
|
808 |
-
"Maximum shipping amount allowed to refound is: %s","Der Maximale zu erstattende Versandbetrag ist: %s"
|
809 |
-
"No order(s) put on hold","Keine Bestellung(en) sind auf zurückhalten gesetzt"
|
810 |
-
"No order(s) released from holding status","Keine Bestellung(en) mit dem Status zurückhalten"
|
811 |
-
"Not enough valid data to save parent transaction ID.","Nicht genügend gültige Daten um die aktuelle Transaktion zu speichern."
|
812 |
-
"Please define PDF object before using","Bitte vor Verwendung ein PDF Objekt festlegen"
|
813 |
-
"Save and Close Message","Nachricht speichern und schließen"
|
814 |
-
"Some of the products below don\'t have all the required options. Please remove them and add again with all the required options.","Bei einigen der unten genannten Artikel wurden nicht alle erforderlichen Optionen angegeben. Bitten entfernen Sie diese Artikel und fügen Sie sie mit allen erforderlichen Optionen erneut hinzu."
|
815 |
-
"There are no printable documents related to selected orders","Es gibt für die ausgewählten Bestellungen keinen zu druckenden Dokumente"
|
816 |
-
"This order contains (%s) items and therefore cannot be edited through the admin interface at this time, if you wish to continue editing the (%s) items will be removed, the order will be cancelled and a new order will be placed","Diese Bestellung enthällt (%s) Artikel und daher können Sie zu diesem Zeitpunkt nicht über die Administration bearbeitet werden, wenn Sie wünschen die Bearbeitung fortzusetzen (%s) Artikel werden entfernt, die Bestellung wird storniert und eine neue erstellt"
|
817 |
-
"Tracking Number(s)","Trackingnummer(n)"
|
1 |
+
"""%s"" coupon code is not valid.","Rabattcode ""%s"" ist ungültig."
|
2 |
"%s","%s"
|
3 |
+
"%s / %s rate:","%s/%s Kurs:"
|
4 |
"%s for %s","%s für %s"
|
5 |
"%s order(s) cannot be canceled","%s Bestellung(en) kann / können nicht storniert werden"
|
6 |
"%s order(s) have been canceled.","%s Bestellung(en) wurden storniert."
|
7 |
"%s order(s) have been put on hold.","%s Bestellung(en) wurden zurückgestellt."
|
8 |
"%s order(s) have been released from holding status.","%s Bestellung(en) nicht für haltenden Status freigegeben."
|
9 |
"%s order(s) were not put on hold.","%s Bestellung(en) die nicht zurückgestellt sind."
|
10 |
+
"%s order(s) were not released from holding status.","%s Bestellung(en) wurde nicht wiederaufgenommen."
|
11 |
"* - Enter custom price excluding tax","* - Bitte individuellen Preis ohne Steuern eingeben"
|
12 |
"* - Enter custom price including tax","* - Bitte individuellen Preis inklusive Steuern eingeben"
|
13 |
"-- Please Select --","-- Bitte Wählen --"
|
14 |
+
"-- Please Select Billing Agreement--","-- Bitte Zahlungsvereinbarung auswählen--"
|
15 |
"About This Order:","Über diese Bestellung:"
|
16 |
"About This Profile:","Über dieses Profil:"
|
17 |
"About Your Invoice","Über Ihre Rechnung"
|
28 |
"Add","Hinzufügen"
|
29 |
"Add New Address","Neue Adresse hinzufügen"
|
30 |
"Add Order Comments","Kommentar zur Bestellung hinzufügen"
|
31 |
+
"Add Package","Paket hinzufügen"
|
32 |
"Add Products","Artikel hinzufügen"
|
33 |
"Add Selected Product(s) to Option","Gewählte Artikel zur Option hinzufügen"
|
34 |
+
"Add Selected Product(s) to Order","Gewählte Artikel der Bestellung hinzufügen"
|
35 |
+
"Add Selected Product(s) to Package","Gewählte Artikel zum Paket hinzufügen"
|
36 |
"Add To Order","Zur Bestellung hinzufügen"
|
37 |
"Add Tracking Number","Trackingnummer hinzufügen"
|
38 |
"Add comment to order","Kommentar zur Bestellung hinzufügen"
|
41 |
"Add to Cart","In den Warenkorb"
|
42 |
"Additional Product Info","Zusätzliche Artikelinfo"
|
43 |
"Address","Adresse"
|
44 |
+
"Address model is not defined.","Address-Model ist nicht definiert."
|
45 |
"Adjustment Fee","Berichtigungszuschlag"
|
46 |
"Adjustment Refund","Berichtigungserstattung"
|
47 |
"Agreement Information","Bedingungs-Information"
|
48 |
"Allow Reorder","Nachbestellung erlauben"
|
49 |
"Amount","Betrag"
|
50 |
"Amount: %s.","Betrag: %s."
|
51 |
+
"An error occurred while assigning order status. Status has not been assigned.","Bei der Zuweisung des Bestellstatus ist ein Fehler aufgetreten. Der Status wurde nicht zugewiesen."
|
52 |
+
"An error occurred while creating shipping label.","Beim Erstellen des Paketaufklebers ist ein Fehler aufgetreten."
|
53 |
+
"An error occurred while saving order status. The status has not been added.","Bei der Zuweisung des Bestellstatus ist ein Fehler aufgetreten. Der Status wurde nicht hinzugefügt."
|
54 |
+
"An error occurred while unassigning order status.","Beim Auflösen der Zuweisung des Bestellstatus ist ein Fehler aufgetreten."
|
55 |
+
"An error occurred while updating the order address. The address has not been changed.","Beim Aktualisieren der Bestelladresse ist ein Fehler aufgetreten. Die Adresse wurde nicht geändert."
|
56 |
"An item option with code %s already exists.","Eine Artikeloption mit dem Code %s existiert bereits."
|
57 |
+
"Anchor Custom Title","Individueller Link-Text"
|
58 |
"Append Comments","Kommentar anfügen"
|
59 |
"Apply","Anwenden"
|
60 |
+
"Apply Coupon Code","Rabattcode einlösen"
|
61 |
"Approved the payment online.","Genehmigte Online Zahlung."
|
62 |
"Are you sure you want to accept this payment?","Sind Sie sicher das Sie diese Zahlung akzeptieren wollen?"
|
63 |
"Are you sure you want to cancel this order?","Sind Sie sicher das Sie diese Bestellung stornieren wollen?"
|
78 |
"Authorized amount of %s.","Authorisierungsbetrag in Höhe von %s."
|
79 |
"Authorizing amount of %s is pending approval on gateway.","Authorisierung des Betrags %s ausstehend - warte auf Genehmigung vom Gateway."
|
80 |
"Back","Zurück"
|
81 |
+
"Back to Billing Agreements","Zurück zu den Zahlungsvereinbarungen"
|
82 |
"Back to My Orders","Zurück zu meinen Bestellungen"
|
83 |
+
"Back to Recurring Profiles","Zurück zu den wiederkehrenden Leistungen"
|
84 |
"Backordered","Nachbestellt"
|
85 |
"Bestsellers","Bestseller"
|
86 |
"Bill to Name","Rechnung an"
|
87 |
+
"Billing","Rechnungstellung"
|
88 |
"Billing Address","Rechnungsadresse"
|
89 |
+
"Billing Agreement","Zahlunsgfreigabe"
|
90 |
+
"Billing Agreement # %s","Zahlunsgfreigabe # %s"
|
91 |
+
"Billing Agreement #%s","Zahlunsgfreigabe #%s"
|
92 |
+
"Billing Agreement View","Ansicht der Zahlunsgfreigaben"
|
93 |
+
"Billing Agreements","Zahlunsgfreigaben"
|
94 |
+
"Billing Last Name","Rechung Nachname"
|
95 |
+
"Billing ZIP Code","Rechnung PLZ"
|
96 |
"Buy %s for price %s","Kaufe %s für den Preis %s"
|
97 |
"CSV","CSV"
|
98 |
"Cancel","Stornieren"
|
106 |
"Cannot determine the field name.","Feldname kann nicht bestimmt werden."
|
107 |
"Cannot do invoice for order.","Eine Rechnung kann für diese Bestellung nicht erstellt werden."
|
108 |
"Cannot do shipment for order.","Der Versand kann für diese Bestellung nicht erstellt werden."
|
109 |
+
"Cannot get order instance","Bestellinstanz kann nicht aufgerufen werden"
|
110 |
+
"Cannot get the order instance.","Bestellinstanz kann nicht aufgerufen werden."
|
111 |
"Cannot register an existing credit memo.","Existierende Gutschrift konnte nicht registriert werden."
|
112 |
"Cannot register existing invoice","Existierende Rechnung konnte nicht registriert werden"
|
113 |
+
"Cannot register existing shipment","Bestehender Versand kann nicht erfasst werden"
|
114 |
"Capture","Erfassen"
|
115 |
"Capture Amount","Betrag erfassen"
|
116 |
"Capture Offline","Offline erfassen"
|
121 |
"Carrier","Versender"
|
122 |
"Carrier/Method","Versender/Versandmethode"
|
123 |
"Change status, add comments","Status ändern, Kommentare hinzufügen"
|
124 |
+
"Changing address information will not recalculate shipping, tax or other order amount.","Das Ändern der Adressdaten löst keine Neuberechnung von Versandkosten, Steuern oder anderen Bestellbeträgen aus."
|
125 |
"Checkout Totals Sort Order","Reihenfolge der Gesamtbeträge des Bezahlvorgangs"
|
126 |
"City","Ort"
|
127 |
"Click to change shipping method","Ändern der Versandart"
|
136 |
"Complete","Vollständig"
|
137 |
"Configure","Konfigurieren"
|
138 |
"Configure and Add to Order","Konfiguriere und füge der Bestellung hinzu"
|
139 |
+
"Contents","Inhalte"
|
140 |
+
"Continue","Weiter"
|
141 |
"Country","Land"
|
142 |
"Coupons","Rabattcodes"
|
143 |
"Create","Anlegen"
|
149 |
"Create New Order for New Customer","Neue Bestellung für Neukunden anlegen"
|
150 |
"Create New Order for New Customer in %s","Neue Bestellung für Neukunden anlegen in %s"
|
151 |
"Create New Status","Neuen Status erstellen"
|
152 |
+
"Create Packages","Paket erstellen"
|
153 |
"Create Shipment","Versand starten"
|
154 |
+
"Create Shipping Label","Paketaufkleber erstellen"
|
155 |
+
"Create Shipping Label...","Paketaufkleber erstellen..."
|
156 |
"Create new invoice for order","Neue Rechnung für Bestellung anlegen"
|
157 |
"Create new shipment for order","Neuen Versand für Bestellung anlegen"
|
158 |
"Create...","Erstelle..."
|
159 |
"Created At","Angelegt am"
|
160 |
+
"Created billing agreement #%s.","Zahlungsvereinbarung #%s erstellt."
|
161 |
"Created:","Erstellt:"
|
162 |
"Credit Memo","Gutschrift"
|
163 |
"Credit Memo #","Gutschrift Nr."
|
189 |
"Customer My Account Order View","Kunde Mein Benutzerkonto Bestellübersicht"
|
190 |
"Customer Name","Vorname"
|
191 |
"Customer\'s Current Activities","Aktuelle Aktionen des Kunden"
|
192 |
+
"Customs Value","Zollwert"
|
193 |
"Date","Datum"
|
194 |
"Date Shipped","Versanddatum"
|
195 |
"Default Status","Standard Status"
|
196 |
+
"Default Template",Standard Vorlage"
|
197 |
"Default logo, will be used in PDF and HTML documents.<br />(jpeg, tiff, png)","Standardlogo wird in PDF und HTML Dokumenten verwendet.<br />(jpeg, tiff, png)"
|
198 |
"Delete","Löschen"
|
199 |
+
"Delete Package","Paket löschen"
|
200 |
"Denied the payment online.","Online Zahlung verweigert."
|
201 |
"Deny Payment","Zahlung verweigern"
|
202 |
"Description Message","Beschreibung"
|
210 |
"Edit Order %s %s Address","Bearbeite Bestellung %s %s Adresse"
|
211 |
"Edit Order Status","Bestell-Status bearbeiten"
|
212 |
"Email","E-Mail"
|
213 |
+
"Email Address","E-Mail-Adresse"
|
214 |
"Email Copy of Credit Memo","E-Mail-Kopie der Gutschrift"
|
215 |
"Email Copy of Invoice","E-Mail-Kopie der Rechnung"
|
216 |
"Email Copy of Shipment","E-Mail-Kopie der Versandinformationen"
|
217 |
"Email Order Confirmation","E-Mail-Kopie der Bestellbestätigung"
|
218 |
"Enable","Aktivieren"
|
219 |
"Enabled","Aktiviert"
|
220 |
+
"Enter the billing last name and email/ZIP as in the order billing address","Geben Sie bitte den Nachnamen, die E-Mail-Adresse und PLZ der Rechnungsanschrift ein."
|
221 |
+
"Entered data is incorrect. Please try again.","Die eigegebenen Daten sind ungültig. Bitte versuchen Sie es nocheinmal."
|
222 |
"Error to Show in Shopping Cart","Fehler beim Anzeigen im Warenkorb"
|
223 |
"Excel XML","Excel XML"
|
224 |
"Excl. Tax","zzgl. Steuern"
|
225 |
"Expired","Abgelaufen"
|
226 |
+
"Explanation","Erklärung"
|
227 |
+
"Failed to cancel the billing agreement.","Fehler beim Löschen der Zahlungsvereinbarung."
|
228 |
+
"Failed to create billing agreement for this order.","Fehler beim Erstellen der Zahlungsvereinbarung für diese Bestellung."
|
229 |
+
"Failed to finish billing agreement wizard.","Fehler beim Abschließen des Zahlungsvereinbarungs-Assistenten."
|
230 |
+
"Failed to send the order email.","Fehler beim Senden der Bestell E-Mail."
|
231 |
+
"Failed to start billing agreement wizard.","Fehler beim Starten des Zahlungsvereinbarungs-Assistenten."
|
232 |
"Failed to update the payment.","Fehler beim Aktualisieren der Zahlung."
|
233 |
+
"Failed to update the profile.","Fehler beim Aktualisieren des Profils."
|
234 |
"Failed to void the payment.","Zahlung stornieren fehlgeschlagen."
|
235 |
"Fetch","Abruf"
|
236 |
+
"File extension not known or unsupported type in the following shipment: %s","Dateiendung unbekannt oder nicht unterstützter Typ in der folgenden Sendung: %s"
|
237 |
+
"Find Order By:","Bestellung suchen:"
|
238 |
"First Name","Vorname"
|
239 |
"From","Von"
|
240 |
"From Name","Von Name"
|
241 |
"From:","Von:"
|
242 |
+
"G.T. (Base)","Gesamt (Basiswährung)"
|
243 |
+
"G.T. (Purchased)","Gesamt (Fremdwährung)"
|
244 |
"General Information","Allgemeine Information"
|
245 |
+
"Get Payment Update","Aktualisierung der Zahlung holen/starten"
|
246 |
"Get Update","Aktualisierung holen"
|
247 |
"Get shipping methods and rates","Versandarten und -kosten abrufen"
|
248 |
"Gift Message","Geschenk Nachricht"
|
250 |
"Gift Message for the Entire Order","Geschenknachricht für die gesamte Bestellung"
|
251 |
"Gift Message for this Order","Geschenknachricht für diese Bestellung"
|
252 |
"Gift Options","Geschenkoptionen"
|
253 |
+
"Girth","Umfang"
|
254 |
"Grand Total","Gesamtsumme"
|
255 |
+
"Grand Total to be Charged","In Rechnung gestellte Gesamtsumme"
|
256 |
"Guest","Gast"
|
257 |
+
"Height","Höhe"
|
258 |
"Hold","Zurückstellen"
|
259 |
+
"Hold action is not available.","Zurückstellen ist leider nicht möglich."
|
260 |
"Hold order","Bestellung zurückstellen"
|
261 |
"ID","ID"
|
262 |
"ID #","ID #"
|
263 |
+
"IPN ""Refunded"". Refund issued by merchant. Registered notification about refunded amount of %s. Transaction ID: ""%s""","IPN ""Erstattet"". Erstattungsbetrag vom Verkäufer herausgegeben. Erfasste Benachrichtigung über gutgeschriebenen Betrag von %s. Transaktionsnummer: ""%s"""
|
264 |
+
"If empty, the default description above will be used.","Wenn leer, wird die Standardbeschreibung (siehe oben) verwendet."
|
265 |
+
"If empty, the default error above will be used.","Wenn leer, wird die Standard-Fehlernachricht (siehe oben) verwendet."
|
266 |
"If the invoice was created offline, try creating an offline creditmemo.","Wenn die Rechnungsstellung offline erfolgt ist, versuchen Sie bitte auch offline eine Gutschrift zu erstellen."
|
267 |
"Incl. Tax","inkl. Steuern"
|
268 |
"Information","Information"
|
269 |
"Initial Fee","Einführungs Gebühr"
|
270 |
"Initial Fees","Einführungsgebühren"
|
271 |
+
"Initial period payment","Zahlung für ersten Abrechnungszeitraum"
|
272 |
+
"Insufficient information to create shipping label(s). Please verify your Store Information and Shipping Settings.","Unzureichende Informationen für die Erstellung eines Paketaufklebers. Bitte überprüfen Sie Ihre Shopinformationen und Versandeinstellungen."
|
273 |
+
"Invalid block: %s.","Ungültiger Block: %s."
|
274 |
"Invalid carrier specified.","Ungültigen Versender angegeben"
|
275 |
+
"Invalid draw line data. Please define ""lines"" array.","Ungültige Zeilendaten. Bitte ""lines"" Array korrekt füllen."
|
276 |
"Invalid entity model","Ungültiges Entity Model"
|
277 |
+
"Invalid item option format.","Ungültiges Format für Artikeloption."
|
278 |
+
"Invalid qty to invoice item ""%s""","Ungültige Anzahl für Rechnung bei Artikel ""%s"""
|
279 |
+
"Invalid qty to refund item ""%s""","Ungültige Anzahl für Erstattung bei Artikel ""%s"""
|
280 |
+
"Invalid qty to ship for item ""%s""","Ungültige Anzahl für Versand bei Artikel ""%s"""
|
281 |
+
"Invalid renderer model","Ungültiges Renderer-Model"
|
282 |
+
"Invalid request for adding product to quote.","Ungültige Anfrage, den Artikel zum Angebot hinzuzufügen."
|
283 |
"Invoice","Rechnung"
|
284 |
"Invoice #","Rechnung Nr."
|
285 |
"Invoice # ","Rechnung Nr. "
|
297 |
"Invoice Update for Guest","Rechnungsaktualisierung für Gäste"
|
298 |
"Invoice and Packing Slip Design","Rechnungs- und Lieferscheingestaltung"
|
299 |
"Invoice and Ship","Rechnung und Versand"
|
300 |
+
"Invoice canceling problem.","Problem beim Stornieren einer Rechnung."
|
301 |
"Invoice cannot be canceled.","Rechnung kann nicht storniert werden."
|
302 |
"Invoice cannot be captured.","Rechnung kann nicht erfasst werden."
|
303 |
"Invoice cannot be voided.","Rechnung kann nicht aufgehoben werden."
|
309 |
"Is Closed","geschlossen"
|
310 |
"Item","Artikel"
|
311 |
"Item Status","Artikelstatus"
|
312 |
+
"Item object is not specified.","Artikelobjekt ist nicht näher bestimmt."
|
313 |
+
"Item options declaration error.","Fehler bei der Deklaration der Artikeloption."
|
314 |
"Item ordered qty","bestellte Stückzahl"
|
315 |
"Item qty declaration error.","Fehler beim Bestimmen der Artikelmenge."
|
316 |
"Items","Artikel"
|
318 |
"Items Ordered","Bestellte Artikel"
|
319 |
"Items Refunded","Erstattete Artikel"
|
320 |
"Items Shipped","Versandte Artikel"
|
321 |
+
"Items in the Package","Artikel im Paket"
|
322 |
"Items maximum quantity or price do not allow checkout.","Maximale Bestell-Anzahl für diesen Artikel überschritten oder die Bestellsumme ist zu hoch für den Warenkorb."
|
323 |
+
"Items options declaration error.","Fehler bei der Deklaration der Artikeloptionen"
|
324 |
"Items to Refund","Zu erstattende Artikel"
|
325 |
"Items to Ship","Zu versendende Artikel"
|
326 |
+
"Key","Schlüssel"
|
327 |
"Last Name","Nachname"
|
328 |
"Last Ordered Items","Zuletzt bestellte Artikel"
|
329 |
+
"Last status can\'t be unassigned from state.","Zuweisung des letzten Status zum Zustand kann nicht aufgehoben werden."
|
330 |
+
"Length","Länge"
|
331 |
"Link to the New Order","Link zur neuen Bestellung"
|
332 |
"Link to the Previous Order","Link zu vorherigen Bestellung"
|
333 |
"Logo for HTML Print View","Logo für HTML Druckansicht<br />(auch für E-Mail Vorlagen)"
|
334 |
"Logo for HTML documents only. If empty, default will be used.<br />(jpeg, gif, png)","Logo ausschließlich für HTML Dokumente. Wenn leer, wird das Standardlogo verwendet.<br />(jpeg, gif, png)"
|
335 |
"Logo for PDF Print-outs (200x50)","Logo für PDF-Ausdrucke (200x50)"
|
336 |
+
"Make Check payable to:","Scheck ausstellen auf:"
|
337 |
"Manage","Verwalten"
|
338 |
+
"Maximum shipping amount allowed to refund is: %s","Maximaler, erstattungsfähiger Versandbetrag ist: %s"
|
339 |
"Message","Nachricht"
|
340 |
"Message:","Nachricht:"
|
341 |
"Minimum Amount","Mindestbetrag"
|
342 |
+
"Minimum Order Amount","Mindestbestellbetrag"
|
343 |
"Mixed","Gemischt"
|
344 |
"Move to Shopping Cart","In den Warenkorb verschieben"
|
345 |
"Move to Wishlist","Auf den Wunschzettel verschieben"
|
346 |
+
"Multi-address Description Message","Mehrfach-Adressen Beschreibung"
|
347 |
+
"Multi-address Error to Show in Shopping Cart","Mehrfach-Adressen Fehler im Warenkorb"
|
348 |
"My Orders","Meine Bestellungen"
|
349 |
"My Orders - Details","Meine Bestellungen - Details"
|
350 |
"N/A","Nicht verfügbar"
|
351 |
"Name","Name"
|
352 |
"New","Neu"
|
353 |
+
"New Billing Agreement","Neue Zahlungsvereinbarung"
|
354 |
"New Credit Memo","Neue Gutschrift"
|
355 |
"New Credit Memo for Guest","Neue Gutschrift für Gäste"
|
356 |
"New Invoice","Neue Rechnung"
|
360 |
"New Order","Neue Bestellung"
|
361 |
"New Order Confirmation Email Sender","E-Mail Absender für eine<br />neue Bestellbestätiging"
|
362 |
"New Order Confirmation Template","Vorlage für eine neue Bestellbestätigung"
|
363 |
+
"New Order Confirmation Template for Guest","Vorlage für eine neue Bestellbestätigung als Gast"
|
364 |
"New Order RSS","RSS für neue Bestellungen"
|
365 |
"New Order Status","Neuer Bestell-Status"
|
366 |
"New Order for Guest","Neue Bestellung für Gäste"
|
372 |
"No Items","Keine Artikel"
|
373 |
"No Items To Refund","Keine Artikel zur Erstattung vorhanden"
|
374 |
"No Payment Methods","Keine Bezahlarten"
|
375 |
+
"No detail for number ""%s""","Keine Details für Nummer ""%s"""
|
376 |
"No information available.","Keine Informationen verfügbar."
|
377 |
"No items","Keine Artikel"
|
378 |
+
"No order(s) were put on hold.","Es wurden keine Bestellungen zurückgestellt."
|
379 |
+
"No order(s) were released from holding status.","Es wurden keine Bestellungen wiederaufgenommen."
|
380 |
"No ordered items","Keine bestellten Artikel"
|
381 |
"No shipping information available","Keine Versandinformationen verfügbar"
|
|
|
382 |
"Nominal Items","Nominale Artikel"
|
383 |
"Nominal item can be purchased standalone only. To proceed please remove other items from the quote.","Nominaler Artikel kann nur einzeln bestellt werden. Um fortzusetzen, entfernen Sie bitte andere Artikel der Bestellung."
|
384 |
+
"Nominal order registered.",""
|
385 |
"Not Capture","Nicht erfasst"
|
386 |
"Not Initialized","Nicht initialisiert"
|
387 |
"Not Notified","Nicht benachrichtigt"
|
388 |
+
"Not enough valid data to save the parent transaction ID.","Nicht ausreichend gültige Daten zum Speichern der übergeordneten Transaktionsnummer."
|
389 |
"Notification Not Applicable","Hinweis nicht verfügbar"
|
390 |
"Notified","Benachrichtigt"
|
391 |
"Notify Customer by Email","Kunden per E-Mail informieren"
|
393 |
"Number of Invoiced Orders","Anzahl der in Rechnung gestellten Bestellungen"
|
394 |
"Number of Orders","Anzahl der Bestellungen"
|
395 |
"Number of Refunded Orders","Anzahl erstatteter Bestellungen"
|
396 |
+
"OK","OK"
|
397 |
"Offline Refunded","Offline Erstattet"
|
398 |
"On Hold","Zurückgestellt"
|
399 |
"Online Refunded","Online Erstattet"
|
438 |
"Order View","Bestellansicht"
|
439 |
"Order does not allow to be canceled.","Es ist nicht gestattet diese Bestellung zu stornieren."
|
440 |
"Order invoice","Bestellung Rechnung"
|
441 |
+
"Order is suspended as its capture amount %s is suspected to be fraudulent.","Bestellung wurde zurückgestellt, da der erfasste Betrag %s unter Umständen durch unbefugten Zugriff manipuliert wurde."
|
442 |
"Order object is not specified.","Bestellobjekt ist nicht näher bestimmt."
|
443 |
"Order saving error: %s","Fehler beim Speichern der Bestellung: %s"
|
444 |
"Order shipments","Bestellung Versand"
|
445 |
"Order status does not exist.","Bestell-Status existiert nicht."
|
446 |
"Order status with the same status code already exist.","Bestell-Status mit dem selben Status Code existiert bereits."
|
447 |
+
"Order was placed using %s","Bestellung wurde in %s aufgegeben."
|
448 |
"Ordered","Bestellt"
|
449 |
+
"Ordered amount of %s.","Bestellte Anzahl von %s."
|
450 |
+
"Ordering amount of %s is pending approval on gateway.","Bestellwert von %s steht noch zur Freigabe aus."
|
451 |
"Orders","Bestellungen"
|
452 |
+
"Orders and Returns","Bestellungen und Rücksendungen"
|
453 |
+
"Orders and Returns Search Form","Suchformular für Bestellungen und Rücksendungen"
|
454 |
"Original Price","Originalpreis"
|
455 |
+
"Original order item that recurring payment profile correspondss to.","Ursprünglich bestellter Artikel, der der wiederkehrenden Leistung entspricht."
|
456 |
"PDF Credit Memos","PDF Gutschriften"
|
457 |
"PDF Invoices","PDF Rechnungen"
|
458 |
"PDF Packingslips","PDF Packzettel"
|
459 |
"PDF Print-outs","PDF Ausdrucke"
|
460 |
"PDF object is not specified.","PDF-Objekt ist nicht näher bestimmt."
|
461 |
"PDF page object is not specified.","PDF-Seitenobjekt ist nicht näher bestimmt."
|
462 |
+
"PDF total model should extend Mage_Sales_Model_Order_Pdf_Total_Default","PDF Gesamtbetrag Model sollte Mage_Sales_Model_Order_Pdf_Total_Default extenden"
|
463 |
+
"Package","Paket"
|
464 |
+
"Packages","Pakete"
|
465 |
"Packingslip # ","Packzettel Nr."
|
466 |
"Paid","Bezahlt"
|
467 |
"Paid Amount","Einzahlungsbetrag"
|
468 |
+
"Parent Transaction ID","Übergeordnete Transaktionsnummer"
|
469 |
+
"Parent transaction ID must have a transaction ID.","Übergeordnete Transaktionsnummer muss eine Transaktionsnummer besitzen."
|
470 |
"Partial","teilweise"
|
471 |
"Payment Failed","Zahlung fehlgeschlagen"
|
472 |
"Payment Information","Zahlungsinformation"
|
473 |
"Payment Method","Zahlart"
|
474 |
"Payment Method Name","Name der Zahlart"
|
475 |
"Payment Method:","Zahlart:"
|
476 |
+
"Payment Review","Zahlungsprüfung"
|
477 |
"Payment disallow storing objects.","Zahlung erlaubt nicht Objekte zu speichern."
|
478 |
"Payment transactions disallow storing objects.","Zahlungs-Transaktionen erlauben nicht die Speicherung von Objekten."
|
479 |
+
"Payment type","Zahlart"
|
480 |
"Payment update has been made.","Zahlungs-Aktualisierung wurde vollzogen."
|
481 |
"Pending","Ausstehend"
|
482 |
"Pending Payment","Ausstehende Zahlung"
|
483 |
"Period","Zeitraum"
|
484 |
+
"Place Order Using Billing Agreements","Bestellung abschließen und Zahlungsvereinbarungen verwenden"
|
485 |
"Placed from IP","von IP"
|
486 |
"Please Select Products to Add","Bitte wählen Sie Artikel zum hinzufügen"
|
487 |
"Please Select a Customer","Bitte wählen Sie einen Kunden"
|
488 |
"Please Select a Store","Bitte wählen Sie einen Store"
|
489 |
+
"Please define PDF object before using.","Bitte definieren Sie ein PDF Objekt vor der Verwendung."
|
490 |
"Please enter positive number in this field.","Bitte geben Sie hier eine positive Zahl ein."
|
491 |
+
"Please specify a valid grid column alias name that exists in grid table.","Bitte geben Sie einen gültigen Gitter-Spaltennamen an, der in der Gitter-Tabelle existiert."
|
492 |
"Price","Preis"
|
493 |
"Print","Drucken"
|
494 |
"Print All","Alle drucken"
|
503 |
"Print Packingslips","Packzettel drucken"
|
504 |
"Print Refund","Erstattung drucken"
|
505 |
"Print Shipment","Versandinformationen drucken"
|
506 |
+
"Print Shipping Label","Paketaufkleber drucken"
|
507 |
+
"Print Shipping Labels","Paketaufkleber drucken"
|
508 |
"Processing","Verarbeitung"
|
509 |
"Product","Artikel"
|
510 |
"Product Name","Artikelname"
|
511 |
"Products","Artikel"
|
512 |
"Products Bestsellers Report","Artikel Bestseller Bericht"
|
513 |
"Products in Comparison List","Artikel in Vergleichsliste"
|
514 |
+
"Products should be added to package(s)","Artikel sollten zu Paketen hinzugefügt werden"
|
515 |
"Profile #%s","Profil #%s"
|
516 |
"Profile Information","Profil Information"
|
517 |
"Profile State","Profil Zustand"
|
518 |
"Profit","Gewinn"
|
519 |
"Promotion Coupons Usage Report","Verwendungsbericht - Rabattcodes"
|
520 |
+
"Proper payment object must be set.","Passendes Zahlungsobjekt muss gesetzt sein."
|
521 |
+
"Purchase Order Number:","Auftragsnummer"
|
522 |
"Purchased From","Bestellt in"
|
523 |
"Purchased From (Store)","Bestellt in (Store)"
|
524 |
"Purchased Item","Bestellte Artikel"
|
533 |
"Qty to Refund","Menge zur Erstattung"
|
534 |
"Qty to Ship","Menge zum Versand"
|
535 |
"Quantity Ordered","Menge bestellt"
|
536 |
+
"Quote item id is not received.","Warenkorbartikel-ID nicht erhalten."
|
537 |
+
"Quote item is not loaded.","Warenkorbartikel nicht geladen."
|
538 |
"Rate","Einstufen"
|
539 |
"Recent Orders","Letzte Bestellungen"
|
540 |
"Recently Compared Products","Zuletzt verglichene Artikel"
|
560 |
"Refunded amount of %s offline.","Erstatteter Betrag von %s offline."
|
561 |
"Refunded amount of %s online.","Erstatteter Betrag von %s online."
|
562 |
"Refunds","Erstattungen"
|
563 |
+
"Registered a Void notification.","Leere Nachricht erhalten."
|
564 |
+
"Registered notification about approved payment.","Nachricht über bestätigte Zahlung erhalten."
|
565 |
+
"Registered notification about captured amount of %s.","Nachricht über erfassten Betrag von %s erhalten."
|
566 |
+
"Registered notification about denied payment.","Nachricht über abgelehnte Zahlung erhalten."
|
567 |
+
"Registered notification about refunded amount of %s.","Nachricht über einen erstatteten Betrag von %s erhalten."
|
568 |
+
"Registered update about approved payment.","Nachricht über Aktualisierung einer bestätigten Zahlung erhalten."
|
569 |
+
"Registered update about denied payment.","Nachricht über Aktualisierung einer abgelehnten Zahlung erhalten."
|
|
|
570 |
"Regular Payment","Reguläre Zahlung"
|
571 |
"Related Orders","Ähnliche Bestellungen"
|
572 |
"Remove","Entfernen"
|
584 |
"Retrieve shipment information","Versandinformationen abfragen"
|
585 |
"Return to Stock","Zurück ins Lager"
|
586 |
"Returned","Zurückgeschickt"
|
587 |
+
"Returns","Rückläufer"
|
588 |
"Revenue","Ertrag / Einnahme"
|
589 |
"Row Subtotal","Zeilen-Zwischensumme"
|
590 |
"Row Total","Zeilensumme"
|
609 |
"Save Status Assignment","Status Zuordnung speichern"
|
610 |
"Save in address book","Im Adressbuch speichern"
|
611 |
"Schedule","planen"
|
612 |
+
"Select","Auswählen"
|
613 |
+
"Select All","Alle auswählen"
|
614 |
"Select from existing customer addresses:","Aus bestehenden Kundenadressen:"
|
615 |
"Send Credit Memo Comment Email Copy To","Sende Gutschriftenkommentar in Kopie an E-Mail"
|
616 |
+
"Send Credit Memo Comments Email Copy Method","Sende Gutschriftenkommentar in Kopie (Methode)"
|
617 |
+
"Send Credit Memo Email Copy Method","Sende Gutschrift in Kopie (Methode)"
|
618 |
"Send Credit Memo Email Copy To","Sende Gutschrift in Kopie an E-Mail"
|
619 |
"Send Email","Sende E-Mail"
|
620 |
"Send Invoice Comment Email Copy To","Sende Rechnungskommentar in Kopie an E-Mail"
|
621 |
+
"Send Invoice Comments Email Copy Method","Sende Rechnungskommentar in Kopie (Methode)"
|
622 |
+
"Send Invoice Email Copy Method","Sende Rechnung in Kopie (Methode)"
|
623 |
"Send Invoice Email Copy To","Sende Rechnung in Kopie an E-Mail"
|
624 |
"Send Order Comment Email Copy To","Sende Bestellkommentar in Kopie an E-Mail"
|
625 |
+
"Send Order Comments Email Copy Method","Sende Bestellkommentar in Kopie (Methode)"
|
626 |
"Send Order Email","Bestell E-Mail versenden"
|
627 |
+
"Send Order Email Copy Method","Sende Bestellung in Kopie (Methode)"
|
628 |
+
"Send Order Email Copy To","Sende Bestellung in Kopie an E-Mail"
|
629 |
"Send Sales Emails","Sende Verkaufs E-Mails"
|
630 |
"Send Shipment Comment Email Copy To","Sende Versandkommentar in Kopie an E-Mail"
|
631 |
+
"Send Shipment Comments Email Copy Method","Sende Versandkommentar in Kopie (Methode)"
|
632 |
+
"Send Shipment Email Copy Method","Sende Versandinformationen in Kopie (Methode)"
|
633 |
"Send Shipment Email Copy To","Sende Versandinformationen in Kopie an E-Mail"
|
634 |
"Send Tracking Information","Trackinginformationen senden"
|
635 |
+
"Set order for existing transactions not allowed","Es ist nicht erlaubt, für die bestehende Transaktion eine Bestellung festzulegen."
|
636 |
"Ship","Senden"
|
637 |
"Ship To","Senden an"
|
638 |
"Ship to Name","Versand - Name"
|
664 |
"Shipping Refund","Versanderstattung"
|
665 |
"Shipping and Tracking Information","Versand- und Trackinginformationen"
|
666 |
"Shopping Cart","Warenkorb"
|
667 |
+
"Show Packages","Pakete anzeigen"
|
668 |
+
"Signature Confirmation","Zustellbestätigung"
|
669 |
"Signed Up From","Anmeldung in"
|
670 |
+
"Size","Größe"
|
671 |
"Sku","Artikelnummer"
|
672 |
+
"Some of the products below do not have all the required options. Please edit them and configure all the required options.","Einige der unten stehenden Artikel sind nicht mit den Pflichtoptionen konfiguriert. Bitte bearbeiten Sie sie und konfigurieren Sie die erforderlichen Optionen."
|
673 |
"Sorry, no quotes are available for this order at this time.","Entschuldigung, momentan gibt es keine Angebote für diese Bestellung."
|
674 |
"Source object is not specified.","Quellobjekt ist nicht näher bestimmt."
|
675 |
"Specified profile does not exist.","Festgelegtes Profil existiert nicht."
|
700 |
"Tax Amount","Steuerbetrag"
|
701 |
"Tax Percent","Prozentsatz Steuern"
|
702 |
"Telephone","Telefon"
|
703 |
+
"The Order State ""%s"" must not be set manually.","Der Bestellzustand ""%s"" darf nicht manuell gesetzt werden."
|
704 |
+
"The address total model should be extended from Mage_Sales_Model_Quote_Address_Total_Abstract.","Das Adress-Gesamtsummen Model sollte die Klasse Mage_Sales_Model_Quote_Address_Total_Abstract erweitern."
|
705 |
+
"The billing agreement ""%s"" has been canceled.","Die Zahlungsvereinbarung wurde gelöscht."
|
706 |
+
"The billing agreement ""%s"" has been created.","Die Zahlungsvereinbarung ""%s"" wurde eingerichtet."
|
707 |
+
"The coupon code has been accepted.","Der Rabattcode wurde akzeptiert."
|
708 |
"The message has been sent.","The Nachricht wurde versendet."
|
709 |
"The message was sent.","Die Nachricht wurde versendet."
|
710 |
"The order address has been updated.","Die Bestelladresse wurde aktualisiert."
|
727 |
"The profile has been updated.","Das Profil wurde aktualisiert."
|
728 |
"The profile has no changes.","Das Profil hat keine Veränderungen."
|
729 |
"The profile state has been updated.","Der Pofil-Zustand wurde aktualisiert."
|
730 |
+
"The quantity you want to add exceeds the total shipped quantity for some of selected Product(s)","Die von Ihnen hinzugefügte Menge überschreitet die zum Versand zugelassene Gesamtmenge einiger Artikel"
|
731 |
+
"The requested Payment Method is not available.","Die angeforderte Zahlart ist nicht verfügbar."
|
732 |
+
"The shipping label has been created.","Paketaufkleber wurde erstellt."
|
733 |
+
"The transaction ""%s"" (%s) is already closed.","Die Transaktion ""%s"" (%s) ist bereits geschlossen."
|
734 |
+
"The transaction ""%s"" cannot be captured yet.","Die Transaktion ""%s"" konnte noch nicht zugewiesen werden."
|
735 |
+
"The value that you entered is not valid.","Der von Ihnen eingegebene Wert ist ungültig."
|
736 |
+
"There are no billing agreements yet.","Es liegen noch keine Zahlungsvereinbarungen vor."
|
737 |
+
"There are no printable documents related to selected orders.","Es liegen zu diesen Bestellungen keinen zu druckenden Dokumente vor."
|
738 |
+
"There are no shipping labels related to selected %s.","Zu den gewählten %s liegen keine zu druckenden Paketaufkleber vor."
|
739 |
"There is no need to approve this payment.","Es gibt keinen Grund die Zahlung zu akzeptieren."
|
740 |
"There is no need to deny this payment.","Es gibt keinen Grund die Zahlung zu verweigern."
|
741 |
"There is no update for the payment.","Es liegt keine Aktualisierung der Zahlung vor."
|
742 |
"This message will be shown in shopping cart when subtotal after discount less than minimum amount.","Diese Mitteilung wird im Warenkorb angezeigt, wenn die Zwischensumme nach Rabatten geringer als der Mindestbetrag ist"
|
743 |
"This operation requires an existing transaction object.","Dieser Vorgang erfordert einen gültigen Transaktions-Objekt."
|
744 |
+
"This order contains (%s) items and therefore cannot be edited through the admin interface at this time, if you wish to continue editing the (%s) items will be removed, the order will be canceled and a new order will be placed.","Die Bestellung enthält (%s) Artikel. Sie kann daher zur Zeit nicht über das AdminPanel bearbeitet werden. Wenn Sie Sie die Bestellung dennoch bearbeiten möchten, werden die (%s) Artikel entfernt, die Bestellung wird stoniert und eine neue Bestellung erstellt."
|
745 |
"This order no longer exists.","Diese Bestellung existiert nicht mehr."
|
746 |
+
"This product does not have any configurable options","Dieser Artikel besitzt keine konfigurierbaren Optionen"
|
747 |
+
"This profile state cannot be changed to ""%s"".","Dieser Profilzustand konnte nicht zu ""%s"" abgeändert werden."
|
|
|
748 |
"This will create an offline refund. To create an online refund, open an invoice and create credit memo for it. Do you wish to proceed?","Es wird eine online Erstattung erstellt. Um eine online Erstattung durchzuführen, öffnen Sie bitte eine Rechnung und Erstellen Sie eine Gutschrift. Möchten Sie das tun / fortsetzen?"
|
749 |
"Tier Pricing","Staffelpreise"
|
750 |
"Title","Titel"
|
753 |
"To:","An:"
|
754 |
"Total","Gesamt"
|
755 |
"Total %d product(s)","Gesamt %d Artikel"
|
756 |
+
"Total (ex)","Gesamt (zzgl.)"
|
757 |
+
"Total (inc)","Gesamt (inkl.)"
|
758 |
"Total Due","Gesamtbetrag fällig"
|
759 |
"Total Invoiced","Insgesamt in Rechnung gestellt"
|
760 |
"Total Invoiced Paid","Insgesamt in Rechnung gestellt bezahlt"
|
766 |
"Total Refund","Gesamterstattung"
|
767 |
"Total Refunded","Gesamterstattung"
|
768 |
"Total Refunded Report","Gesamterstattungs-Bericht"
|
769 |
+
"Total Sales Shipping","Gesamtsumme Versand"
|
770 |
"Total Shipped Report","Bericht-Gesamtsumme Versand"
|
771 |
"Total Shipping","Gesamtsumme Versand"
|
772 |
"Total Shipping Charges","Gesamt Summe Versandkosten"
|
773 |
"Total Tax","Gesamtbetrag Steuern"
|
774 |
+
"Total Weight","Gesamtgewicht"
|
775 |
"Track Order","Sendungsverfolgung"
|
776 |
"Track all shipment(s)","Alle Sendungen verfolgen"
|
777 |
"Track all shipments","Alle Sendungen verfolgen"
|
780 |
"Tracking","Sendungsverfolgung"
|
781 |
"Tracking Number","Trackingnummer"
|
782 |
"Tracking Number(s):","Tracking Nummer(n):"
|
783 |
+
"Transaction ""%s"" was already processed.","Transaktion ""%s"" wurde bereits verarbeitet."
|
784 |
"Transaction ID","Transaktion ID"
|
785 |
+
"Transaction ID must not be empty.","Transaktionsnummer darf nicht leer sein."
|
786 |
+
"Transaction ID: ""%s"".","Transaktionsnummer: ""%s""."
|
787 |
"Transaction Type","Transaktions Art"
|
788 |
"Transactions","Transaktionen"
|
789 |
"Trial ","Test "
|
790 |
"Trial Payment","Test Zahlung"
|
791 |
"Trial Period","Test Zeitraum"
|
792 |
"Trial period payment","Test periodische Zahlung"
|
793 |
+
"Type","Typ"
|
794 |
"Unassign","Lösen"
|
795 |
"Unhold","Wiederaufnehmen"
|
796 |
"Unhold action is not available.","Zurückstellen ist nicht verfügbar."
|
797 |
"Unhold order","Bestellung wiederaufnehmen"
|
798 |
"Unknown State","Zustand unbekannt"
|
799 |
"Unknown Status","Status unbekannt"
|
800 |
+
"Unsupported transaction type ""%s"".","Nicht unterstützte Transaktions-Art ""%s""."
|
801 |
"Update Changes","Änderungen anwenden"
|
802 |
"Update Items and Qty\'s","Artikel und Stk. aktualisieren"
|
803 |
"Update Qty\'s","Stk. aktualisieren"
|
809 |
"Value","Betrag"
|
810 |
"View","Ansehen"
|
811 |
"View All","Alle ansehen"
|
812 |
+
"View Another Order","Andere Bestellung ansehen"
|
813 |
"View Order","Bestellung ansehen"
|
814 |
"Visible on Frontend","Sichtbar im Frontend"
|
815 |
"Void","Aufheben"
|
816 |
"Void invoice","Rechnung aufheben"
|
817 |
"Voided authorization.","Authorisierung aufgehoben."
|
818 |
"Website","Website"
|
819 |
+
"Weight","Gewicht"
|
820 |
"Whether buyer can define the date when billing for the profile begins.","Unabhängig davon ob der Käufer definieren kann wann das Zahlungsprofil beginnt."
|
821 |
+
"Width","Breite"
|
822 |
"Wishlist","Wunschzettel"
|
823 |
+
"Wrong billing agreement ID specified.","Falsche Zahlungsvereinbarungs-ID festgelegt."
|
824 |
+
"Wrong quote item id to update configuration.","Falsche Warenkorb-Artikelnummer zur Aktualisierung der Konfiguration."
|
825 |
+
"Wrong state: ""%s"".","Falscher Zustand: ""%s""."
|
826 |
"Yes","Ja"
|
827 |
+
"You can leave a box blank if you don\'t wish to add a gift message for whole order",
|
828 |
+
"Sie können Eingabeboxen leer lassen, wenn Sie für die Bestellung keine Geschenknachrichten hinterlegen wollen"
|
829 |
"You have placed no orders.","Sie haben keine Bestellungen getätigt."
|
830 |
"You will be redirected to the payment system website.","Sie werden zur Zahlungsabwicklungs-Webseite weiergeleitet."
|
831 |
"Your credit card will be charged for","Ihre Kreditkarte wird belastet für"
|
832 |
"ZIP/Post Code","Postleitzahl"
|
833 |
"Zip/Postal Code","Postleitzahl"
|
834 |
+
"cm","cm"
|
835 |
+
"in","in"
|
836 |
+
"kg","kg"
|
837 |
+
"lb","lb"
|
838 |
"the credit memo email is not sent","Die Gutschrift E-Mail wurde nicht vergesendet"
|
839 |
"the credit memo email was sent","Die Gutschrift E-Mail wurde versandt"
|
840 |
"the invoice email is not sent","Die Rechnung wurde per E-Mail versandt"
|
843 |
"the order confirmation email was sent","Die Bestellbestätigung wurde versandt"
|
844 |
"the shipment email is not sent","Die Versand E-Mail wurde nicht gesendet"
|
845 |
"the shipment email was sent","Die Versand E-Mail wurde versandt"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_SalesRule.csv
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
"%d Shopping Cart Price Rules based on "%s" attribute have been disabled.","%d Warenkorb Preisregeln basieren auf "%s" Attribut wurde deaktiviert."
|
2 |
"Actions","Aktionen"
|
3 |
"Active","Aktiv"
|
4 |
"Add New Rule","Neue Regel anlegen"
|
@@ -36,6 +36,7 @@
|
|
36 |
"Edit Rule","Regel bearbeiten"
|
37 |
"Edit Rule '%s'","Regel '%s' bearbeiten"
|
38 |
"Expire at: %s","Endet am: %s"
|
|
|
39 |
"Fixed amount discount","Fester Rabattbetrag je Artikel"
|
40 |
"Fixed amount discount for whole cart","Fester Rabattbetrag für gesamten Warenkorb"
|
41 |
"For matching items only","Nur für passende Artikel"
|
@@ -46,15 +47,16 @@
|
|
46 |
"ID","ID"
|
47 |
"Inactive","Inaktiv"
|
48 |
"Item totals are not set for rule.","Artikelsummen sind nicht für Regel gesetzt.´"
|
49 |
-
"Labels","
|
50 |
"Maximum Qty Discount is Applied To","Maximaler Rabattbetrag"
|
51 |
-
"NOT
|
|
|
52 |
"Name: %s","Name: %s"
|
53 |
"New Rule","Neue Regel"
|
54 |
"No","Nein"
|
55 |
"No Coupon","Ohne Rabattcode"
|
56 |
"Number of Uses","Anzahl an Verwendungen"
|
57 |
-
"Payment Method","
|
58 |
"Percent of product price discount","Prozentualer Rabatt je Artikel"
|
59 |
"Period","Zeitraum"
|
60 |
"Price in cart","Preis im Warenkorb"
|
@@ -62,7 +64,7 @@
|
|
62 |
"Product attribute combination","Artikelattribut-Kombination"
|
63 |
"Products subselection","Artikel-Unterauswahl"
|
64 |
"Promotions","Preisregeln"
|
65 |
-
"Public In RSS Feed","
|
66 |
"Quantity in cart","Menge im Warenkorb"
|
67 |
"Row total in cart","Zeilen gesamt im Warenkorb"
|
68 |
"Rule Information","Regelinformation"
|
@@ -108,5 +110,3 @@
|
|
108 |
"Uses per Customer","Verwendungen pro Kunde"
|
109 |
"Wrong rule specified.","Falsche Regel festgelegt."
|
110 |
"Yes","Ja"
|
111 |
-
"This rule no longer exists","Diese Regel existiert nicht mehr"
|
112 |
-
"Uses per coupon","Verwendungen pro Rabattcode"
|
1 |
+
"%d Shopping Cart Price Rules based on ""%s"" attribute have been disabled.","%d Warenkorb Preisregeln basieren auf ""%s"" Attribut wurde deaktiviert."
|
2 |
"Actions","Aktionen"
|
3 |
"Active","Aktiv"
|
4 |
"Add New Rule","Neue Regel anlegen"
|
36 |
"Edit Rule","Regel bearbeiten"
|
37 |
"Edit Rule '%s'","Regel '%s' bearbeiten"
|
38 |
"Expire at: %s","Endet am: %s"
|
39 |
+
"FOUND","GEFUNDEN"
|
40 |
"Fixed amount discount","Fester Rabattbetrag je Artikel"
|
41 |
"Fixed amount discount for whole cart","Fester Rabattbetrag für gesamten Warenkorb"
|
42 |
"For matching items only","Nur für passende Artikel"
|
47 |
"ID","ID"
|
48 |
"Inactive","Inaktiv"
|
49 |
"Item totals are not set for rule.","Artikelsummen sind nicht für Regel gesetzt.´"
|
50 |
+
"Labels","Bezeichnungen"
|
51 |
"Maximum Qty Discount is Applied To","Maximaler Rabattbetrag"
|
52 |
+
"NOT FOUND","NICHT GEFUNDEN"
|
53 |
+
"NOT LOGGED IN","NICHT ANGEMELDET"
|
54 |
"Name: %s","Name: %s"
|
55 |
"New Rule","Neue Regel"
|
56 |
"No","Nein"
|
57 |
"No Coupon","Ohne Rabattcode"
|
58 |
"Number of Uses","Anzahl an Verwendungen"
|
59 |
+
"Payment Method","Zahlart"
|
60 |
"Percent of product price discount","Prozentualer Rabatt je Artikel"
|
61 |
"Period","Zeitraum"
|
62 |
"Price in cart","Preis im Warenkorb"
|
64 |
"Product attribute combination","Artikelattribut-Kombination"
|
65 |
"Products subselection","Artikel-Unterauswahl"
|
66 |
"Promotions","Preisregeln"
|
67 |
+
"Public In RSS Feed","Im öffentlichen Rabatte-RSS-Feed anzeigen"
|
68 |
"Quantity in cart","Menge im Warenkorb"
|
69 |
"Row total in cart","Zeilen gesamt im Warenkorb"
|
70 |
"Rule Information","Regelinformation"
|
110 |
"Uses per Customer","Verwendungen pro Kunde"
|
111 |
"Wrong rule specified.","Falsche Regel festgelegt."
|
112 |
"Yes","Ja"
|
|
|
|
app/locale/de_DE/Mage_Sendfriend.csv
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
"Add Recipient","Empfänger hinzufügen"
|
2 |
-
"Allow for Guests","Für Gäste
|
3 |
-
"An invalid email address for recipient was entered.","
|
4 |
-
"At least one recipient must be specified.","
|
5 |
"Back","Zurück"
|
6 |
-
"Catalog Product Email to a Friend","
|
7 |
"Email Address","E-Mail Adresse"
|
8 |
"Email Address:","E-Mail Adresse:"
|
9 |
"Email Templates","E-Mail Vorlagen:"
|
@@ -11,18 +11,18 @@
|
|
11 |
"Email:","E-Mail:"
|
12 |
"Enabled","Aktiviert"
|
13 |
"Invalid Sender Information","Ungültige Absender Information"
|
14 |
-
"Invalid sender email.","Ungültige
|
15 |
"Limit Sending By","Begrenze E-Mail Versand durch:"
|
16 |
-
"Max Products Sent in 1 Hour","Maximale
|
17 |
"Max Recipients","Maximale Anzahl an gleichzeitigen Empfänger"
|
18 |
"Maximum %d email addresses allowed.","Höchstens %d E-Mail Adressen erlaubt."
|
19 |
"Message:","Nachricht:"
|
20 |
"Name","Name"
|
21 |
"Name:","Name:"
|
22 |
"No more than %d emails can be sent at a time.","Nicht mehr wie %d E-Mails können zur selben Zeit versendet werden."
|
23 |
-
"Please define a correct Cookie instance.","
|
24 |
-
"Please define a correct Product instance.","
|
25 |
-
"Please define the correct Sender information.","
|
26 |
"Recipient:","Empfänger:"
|
27 |
"Remove Email","E-Mail entfernen"
|
28 |
"Select Email Template","E-Mail Vorlage auswählen"
|
@@ -32,10 +32,7 @@
|
|
32 |
"Some emails were not sent.","Einige Nachrichten wurden nicht versendet."
|
33 |
"The link to a friend was sent.","Der Link wurde an einen Freund versendet."
|
34 |
"The message cannot be empty.","Die Nachricht darf nicht leer sein."
|
35 |
-
"The messages cannot be sent more than %d times in an hour","Die Nachricht kann nicht mehr
|
36 |
"The sender name cannot be empty.","Der Absender darf nicht leer sein."
|
37 |
"There were some problems with the data.","Es sind einige Probleme mit den Daten aufgetreten."
|
38 |
-
"You have exceeded limit of %d sends in an hour","Sie haben die Maximalanzahl von %d E-
|
39 |
-
"Please define correct Cookie instance","Bitte definieren Sie die korrekte Cookie-Instanz"
|
40 |
-
"Please define correct Product instance","Bitte definieren Sie die korrekte Artikel-Instanz"
|
41 |
-
"Please define correct Sender information","Bitte definieren Sie die korrekte Sender Information"
|
1 |
"Add Recipient","Empfänger hinzufügen"
|
2 |
+
"Allow for Guests","Für Gäste erlaubt"
|
3 |
+
"An invalid email address for recipient was entered.","Es wurde eine ungültige E-Mail-Adresse für den Empfänger eingetragen."
|
4 |
+
"At least one recipient must be specified.","Es muss mindestens 1 Empfänger eingetragen werden."
|
5 |
"Back","Zurück"
|
6 |
+
"Catalog Product Email to a Friend","Artikel per E-Mail an einen Freund"
|
7 |
"Email Address","E-Mail Adresse"
|
8 |
"Email Address:","E-Mail Adresse:"
|
9 |
"Email Templates","E-Mail Vorlagen:"
|
11 |
"Email:","E-Mail:"
|
12 |
"Enabled","Aktiviert"
|
13 |
"Invalid Sender Information","Ungültige Absender Information"
|
14 |
+
"Invalid sender email.","Ungültige Absender E-Mail-Adresse"
|
15 |
"Limit Sending By","Begrenze E-Mail Versand durch:"
|
16 |
+
"Max Products Sent in 1 Hour","Maximale Versandhäufigkeit je Artikel binnen 1 Stunde"
|
17 |
"Max Recipients","Maximale Anzahl an gleichzeitigen Empfänger"
|
18 |
"Maximum %d email addresses allowed.","Höchstens %d E-Mail Adressen erlaubt."
|
19 |
"Message:","Nachricht:"
|
20 |
"Name","Name"
|
21 |
"Name:","Name:"
|
22 |
"No more than %d emails can be sent at a time.","Nicht mehr wie %d E-Mails können zur selben Zeit versendet werden."
|
23 |
+
"Please define a correct Cookie instance.","Bitte definieren Sie eine korrekte Cookie-Instanz."
|
24 |
+
"Please define a correct Product instance.","Bitte definieren Sie eine korrekte Artikel-Instanz"
|
25 |
+
"Please define the correct Sender information.","Bitte definieren Sie eine korrekte Absender-Information."
|
26 |
"Recipient:","Empfänger:"
|
27 |
"Remove Email","E-Mail entfernen"
|
28 |
"Select Email Template","E-Mail Vorlage auswählen"
|
32 |
"Some emails were not sent.","Einige Nachrichten wurden nicht versendet."
|
33 |
"The link to a friend was sent.","Der Link wurde an einen Freund versendet."
|
34 |
"The message cannot be empty.","Die Nachricht darf nicht leer sein."
|
35 |
+
"The messages cannot be sent more than %d times in an hour","Die Nachricht kann nicht mehr als %d mal pro Stunde versendet werden"
|
36 |
"The sender name cannot be empty.","Der Absender darf nicht leer sein."
|
37 |
"There were some problems with the data.","Es sind einige Probleme mit den Daten aufgetreten."
|
38 |
+
"You have exceeded limit of %d sends in an hour","Sie haben die Maximalanzahl von %d E-Mails in einer Stunde überschritten"
|
|
|
|
|
|
app/locale/de_DE/Mage_Shipping.csv
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
"# of Items (and above)","Anzahl der Artikel (und darüber)"
|
3 |
"# of Items vs. Destination","Anzahl der Artikel gg. Ziel"
|
4 |
"Allow Shipping to Multiple Addresses","Versand an mehrere Adressen erlauben"
|
5 |
-
"An error occurred while import table rates.","
|
6 |
"Calculate Handling Fee","Bearbeitungsgebühr berechnen"
|
7 |
"Carrier:","Versender:"
|
8 |
"City","Ort"
|
@@ -27,7 +27,7 @@
|
|
27 |
"Info:","Info:"
|
28 |
"Invalid Table Rate code for type %s: %s","Ungültiger Table Rate Code für Typ %s: %s"
|
29 |
"Invalid Table Rate code type: %s","Ungültiger Table Rate Code: %s"
|
30 |
-
"Invalid Table Rates File Format","Ungültiges Dateiformat für
|
31 |
"Local Time","Lokalzeit"
|
32 |
"Location","Ort"
|
33 |
"Maximum Qty Allowed for Shipping to Multiple Addresses","Höchstbestellmenge für den Versand an mehrere Adressen"
|
@@ -48,35 +48,36 @@
|
|
48 |
"Ship to Applicable Countries","Versand in erlaubte Länder"
|
49 |
"Ship to Specific Countries","Versand in bestimmte Länder"
|
50 |
"Shipment #","Versand Nr."
|
51 |
-
"Shipment Tracking Popup","
|
52 |
"Shipped or billed on:","Versandt oder berechnet an:"
|
53 |
"Shipping Methods","Versandarten"
|
54 |
"Shipping Methods Section","Versandarten"
|
55 |
"Shipping Settings","Versandeinstellungen"
|
56 |
"Shipping Settings Section","Versandeinstellungen"
|
57 |
-
"Show Method if Not Applicable","Versandart zeigen, falls nicht
|
58 |
"Signed by:","Unterschrieben von:"
|
59 |
"Sort Order","Reihenfolge"
|
60 |
"Status:","Status:"
|
61 |
"Store Pickup","Selbstabholung"
|
62 |
-
"
|
63 |
-
"
|
64 |
-
"
|
|
|
|
|
65 |
"There is no tracking available for this shipment.","Für diesen Versand ist keine Sendungsverfolgung möglich."
|
66 |
"There is no tracking available.","Für diesen Versand ist keine Sendungsverfolgung möglich."
|
67 |
"This shipping method is currently unavailable. If you would like to ship using this shipping method, please contact us.","Diese Versandart ist momentan nicht verfügbar. Wenn Sie dennoch diese Versandart wünschen, wenden Sie sich bitte direkt an uns."
|
68 |
"This shipping method is not available, please specify ZIP-code","Diese Versandart ist nicht verfügbar, bitte geben Sie eine Postleitzahl an"
|
69 |
"Title","Titel"
|
70 |
"Track:","Verfolgung:"
|
71 |
-
"Tracking Information","
|
72 |
-
"Tracking Number:","
|
73 |
"Tracking information is currently not available. Please ","Für diesen Versand ist momentan keine Sendungsverfolgung möglich."
|
74 |
-
"Tracking information is currently unavailable.","
|
75 |
"Type","Typ"
|
76 |
"Weight (and above)","Gewicht (und darüber)"
|
77 |
"Weight vs. Destination","Gewicht gg. Ziel"
|
78 |
"Weight:","Gewicht"
|
79 |
"ZIP/Postal Code","Postleitzahl"
|
80 |
"contact us","Kontaktieren Sie uns"
|
81 |
-
"email us at ","Schicken Sie uns eine E-Mail an "
|
82 |
-
"The shipping module is not available for selected delivery country","Das Versandmodul ist für den gewählten Bestimmungsort nicht verfügbar"
|
2 |
"# of Items (and above)","Anzahl der Artikel (und darüber)"
|
3 |
"# of Items vs. Destination","Anzahl der Artikel gg. Ziel"
|
4 |
"Allow Shipping to Multiple Addresses","Versand an mehrere Adressen erlauben"
|
5 |
+
"An error occurred while import table rates.","Beim Importieren der tabellenbasierten Versandkosten ist ein Fehler aufgetreten."
|
6 |
"Calculate Handling Fee","Bearbeitungsgebühr berechnen"
|
7 |
"Carrier:","Versender:"
|
8 |
"City","Ort"
|
27 |
"Info:","Info:"
|
28 |
"Invalid Table Rate code for type %s: %s","Ungültiger Table Rate Code für Typ %s: %s"
|
29 |
"Invalid Table Rate code type: %s","Ungültiger Table Rate Code: %s"
|
30 |
+
"Invalid Table Rates File Format","Ungültiges Dateiformat für tabellenbasierte Versandkosten"
|
31 |
"Local Time","Lokalzeit"
|
32 |
"Location","Ort"
|
33 |
"Maximum Qty Allowed for Shipping to Multiple Addresses","Höchstbestellmenge für den Versand an mehrere Adressen"
|
48 |
"Ship to Applicable Countries","Versand in erlaubte Länder"
|
49 |
"Ship to Specific Countries","Versand in bestimmte Länder"
|
50 |
"Shipment #","Versand Nr."
|
51 |
+
"Shipment Tracking Popup","Sendungsverfolgung Popup"
|
52 |
"Shipped or billed on:","Versandt oder berechnet an:"
|
53 |
"Shipping Methods","Versandarten"
|
54 |
"Shipping Methods Section","Versandarten"
|
55 |
"Shipping Settings","Versandeinstellungen"
|
56 |
"Shipping Settings Section","Versandeinstellungen"
|
57 |
+
"Show Method if Not Applicable","Versandart zeigen, falls nicht verwendbar"
|
58 |
"Signed by:","Unterschrieben von:"
|
59 |
"Sort Order","Reihenfolge"
|
60 |
"Status:","Status:"
|
61 |
"Store Pickup","Selbstabholung"
|
62 |
+
"Street Address","Adresse bearbeiten"
|
63 |
+
"Street Address Line 2","Straße 2. Zeile"
|
64 |
+
"Table Rates","Tabellenbasierte Versandkosten"
|
65 |
+
"The shipping module is not available for selected delivery country.","Diese Versandart ist für das ausgewählte Zustellland nicht verfügbar."
|
66 |
+
"The shipping module is not available.","Diese Versandart ist nicht verfügbar."
|
67 |
"There is no tracking available for this shipment.","Für diesen Versand ist keine Sendungsverfolgung möglich."
|
68 |
"There is no tracking available.","Für diesen Versand ist keine Sendungsverfolgung möglich."
|
69 |
"This shipping method is currently unavailable. If you would like to ship using this shipping method, please contact us.","Diese Versandart ist momentan nicht verfügbar. Wenn Sie dennoch diese Versandart wünschen, wenden Sie sich bitte direkt an uns."
|
70 |
"This shipping method is not available, please specify ZIP-code","Diese Versandart ist nicht verfügbar, bitte geben Sie eine Postleitzahl an"
|
71 |
"Title","Titel"
|
72 |
"Track:","Verfolgung:"
|
73 |
+
"Tracking Information","Sendungsverfolgung"
|
74 |
+
"Tracking Number:","Nummer:"
|
75 |
"Tracking information is currently not available. Please ","Für diesen Versand ist momentan keine Sendungsverfolgung möglich."
|
76 |
+
"Tracking information is currently unavailable.","Sendungsverfolgung ist momentan nicht verfügbar."
|
77 |
"Type","Typ"
|
78 |
"Weight (and above)","Gewicht (und darüber)"
|
79 |
"Weight vs. Destination","Gewicht gg. Ziel"
|
80 |
"Weight:","Gewicht"
|
81 |
"ZIP/Postal Code","Postleitzahl"
|
82 |
"contact us","Kontaktieren Sie uns"
|
83 |
+
"email us at ","Schicken Sie uns eine E-Mail an "
|
|
app/locale/de_DE/Mage_Sitemap.csv
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
"Always","Immer"
|
4 |
"CMS Pages Options","CMS Seitenoptionen"
|
5 |
"Categories Options","Kategorieoptionen"
|
6 |
-
"Daily","
|
7 |
"Edit Sitemap","Sitemap bearbeiten"
|
8 |
"Enabled","Aktiviert"
|
9 |
"Error Email Recipient","Fehler E-Mail Empfänger"
|
10 |
"Error Email Sender","Fehler E-Mail Absender"
|
11 |
"Error Email Template","Fehler E-Mail Vorlage"
|
12 |
-
"File "%s" cannot be saved. Please, make sure the directory "%s" is writeable by web server.","
|
13 |
"Filename","Dateiname"
|
14 |
"Frequency","Häufigkeit"
|
15 |
"Generate","Erstellen"
|
@@ -23,9 +23,9 @@
|
|
23 |
"Never","Niemals"
|
24 |
"New Sitemap","Neue Sitemap"
|
25 |
"Path","Pfad"
|
26 |
-
"Please create the specified folder "%s" before saving the sitemap.","Bitte legen Sie den Ordner "%s" an, bevor Sie die Sitemap speichern."
|
27 |
-
"Please define correct path","Bitte
|
28 |
-
"Please make sure that "%s" is writable by web-server.","Bitte stellen Sie sicher, dass "%s" vom Webserver geschrieben werden kann."
|
29 |
"Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in the filename. No spaces or other characters are allowed.","Bitte verwenden Sie nur die Zeichen (a-z oder A-Z), Ziffern (0-9) oder den Unterstrich (_) in Dateinamen. Andere Zeichen (auch Leerzeichen) sind nicht erlaubt."
|
30 |
"Priority","Priorität"
|
31 |
"Products Options","Artikeloptionen"
|
@@ -33,14 +33,14 @@
|
|
33 |
"Sitemap generate Warnings","Warnungen bei der Sitemaperstellung"
|
34 |
"Start Time","Startzeit"
|
35 |
"Store View","StoreView"
|
36 |
-
"The priority must be between 0 and 1.","Die Priorität muss zwischen 0
|
37 |
-
"The sitemap "%s" has been generated.","Die Sitemap "%s" wurde erstellt."
|
38 |
"The sitemap has been deleted.","Die Sitemap wurde gelöscht."
|
39 |
"The sitemap has been saved.","Die Sitemap wurde gespeichert."
|
40 |
"This sitemap no longer exists.","Die Sitemap existiert nicht mehr."
|
41 |
"Unable to find a sitemap to delete.","Es wurde keine Sitemap zum Löschen gefunden."
|
42 |
-
"Unable to find a sitemap to generate.","
|
43 |
"Unable to generate the sitemap.","Fehler beim Anlegen der Sitemap."
|
44 |
"Valid values range: from 0.0 to 1.0.","Gültige Werte: von 0.0 bis 1.0."
|
45 |
-
"Weekly","
|
46 |
-
"Yearly","
|
3 |
"Always","Immer"
|
4 |
"CMS Pages Options","CMS Seitenoptionen"
|
5 |
"Categories Options","Kategorieoptionen"
|
6 |
+
"Daily","täglich"
|
7 |
"Edit Sitemap","Sitemap bearbeiten"
|
8 |
"Enabled","Aktiviert"
|
9 |
"Error Email Recipient","Fehler E-Mail Empfänger"
|
10 |
"Error Email Sender","Fehler E-Mail Absender"
|
11 |
"Error Email Template","Fehler E-Mail Vorlage"
|
12 |
+
"File ""%s"" cannot be saved. Please, make sure the directory ""%s"" is writeable by web server.","Datei ""%s"" kann nicht gespeichert werden. Bitte stellen Sie sicher, dass das Verzeichnis ""%s"" vom Webserver beschreibbar ist."
|
13 |
"Filename","Dateiname"
|
14 |
"Frequency","Häufigkeit"
|
15 |
"Generate","Erstellen"
|
23 |
"Never","Niemals"
|
24 |
"New Sitemap","Neue Sitemap"
|
25 |
"Path","Pfad"
|
26 |
+
"Please create the specified folder ""%s"" before saving the sitemap.","Bitte legen Sie den Ordner ""%s"" an, bevor Sie die Sitemap speichern."
|
27 |
+
"Please define correct path","Bitte geben Sie den korrekten Pfad an"
|
28 |
+
"Please make sure that ""%s"" is writable by web-server.","Bitte stellen Sie sicher, dass ""%s"" vom Webserver geschrieben werden kann."
|
29 |
"Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in the filename. No spaces or other characters are allowed.","Bitte verwenden Sie nur die Zeichen (a-z oder A-Z), Ziffern (0-9) oder den Unterstrich (_) in Dateinamen. Andere Zeichen (auch Leerzeichen) sind nicht erlaubt."
|
30 |
"Priority","Priorität"
|
31 |
"Products Options","Artikeloptionen"
|
33 |
"Sitemap generate Warnings","Warnungen bei der Sitemaperstellung"
|
34 |
"Start Time","Startzeit"
|
35 |
"Store View","StoreView"
|
36 |
+
"The priority must be between 0 and 1.","Die Priorität muss zwischen 0 und 1 liegen."
|
37 |
+
"The sitemap ""%s"" has been generated.","Die Sitemap ""%s"" wurde erstellt."
|
38 |
"The sitemap has been deleted.","Die Sitemap wurde gelöscht."
|
39 |
"The sitemap has been saved.","Die Sitemap wurde gespeichert."
|
40 |
"This sitemap no longer exists.","Die Sitemap existiert nicht mehr."
|
41 |
"Unable to find a sitemap to delete.","Es wurde keine Sitemap zum Löschen gefunden."
|
42 |
+
"Unable to find a sitemap to generate.","Es wurde keine Sitemap zum Erstellen gefunden."
|
43 |
"Unable to generate the sitemap.","Fehler beim Anlegen der Sitemap."
|
44 |
"Valid values range: from 0.0 to 1.0.","Gültige Werte: von 0.0 bis 1.0."
|
45 |
+
"Weekly","wöchentlich"
|
46 |
+
"Yearly","jährlich"
|
app/locale/de_DE/Mage_Tag.csv
CHANGED
@@ -1,5 +1,4 @@
|
|
1 |
"# of Uses","# an Verwendungen"
|
2 |
-
"%s tag(s) have been accepted for moderation.","%s tag(s) have been accepted for moderation."
|
3 |
"<strong>Tag Name:</strong> %s","<strong>Schlagwort Name:</strong> %s"
|
4 |
"Action","Aktion"
|
5 |
"Add New Tag","Neues Schlagwort hinzufügen"
|
@@ -9,7 +8,7 @@
|
|
9 |
"Add to Wishlist","Auf den Wunschzettel"
|
10 |
"All Tags","Alle Schlagworte"
|
11 |
"Approved","Bestätigt"
|
12 |
-
"Are you sure you want to delete this tag?","
|
13 |
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das machen wollen?"
|
14 |
"Are you sure?","Sind Sie sicher?"
|
15 |
"Back","Zurück"
|
@@ -21,8 +20,8 @@
|
|
21 |
"Change status","Status ändern"
|
22 |
"Click on a tag to view your corresponding products.","Klicken Sie auf ein Schlagwort, um übereinstimmende Artikel zu finden."
|
23 |
"Country","Land"
|
24 |
-
"Customer My Account My Tags List","
|
25 |
-
"Customer My Account Tag View","
|
26 |
"Customer Since","Kunde seit"
|
27 |
"Customers","Kunden"
|
28 |
"Customers Submitted this Tag","Kunden übermittelten dieses Schlagwort"
|
@@ -44,7 +43,7 @@
|
|
44 |
"Name","Name"
|
45 |
"New Tag","Neues Schlagwort"
|
46 |
"No matches found.","Keine Übereinstimmungen gefunden."
|
47 |
-
"Other people marked this product with these tags:","Andere haben diesen Artikel mit folgenden Schlagworten markiert:"
|
48 |
"Pending","Ausstehend"
|
49 |
"Pending Tags","Ausstehende Schlagworte"
|
50 |
"Popular","Beliebt"
|
@@ -65,9 +64,9 @@
|
|
65 |
"Status","Status"
|
66 |
"Store View","StoreView"
|
67 |
"Tag","Schlagwort"
|
68 |
-
"Tag "%s" has already been added to the product.","
|
69 |
-
"Tag "%s" has been added to the product.","
|
70 |
-
"Tag "%s" has been rejected by administrator.","Schlagwort "%s" wurde vom Administrator abgelehnt."
|
71 |
"Tag Aggregation Data","Schlagwort Gruppierung"
|
72 |
"Tag Name","Schlagwortname"
|
73 |
"Tagged Products List","Artikelliste mit Schlagworten"
|
@@ -77,10 +76,10 @@
|
|
77 |
"Tags:","Schlagworte:"
|
78 |
"Telephone","Telefon"
|
79 |
"The tag has been deleted.","Dieses Schlagwort wurde gelöscht"
|
80 |
-
"There are no tags available.","
|
81 |
"Unable to find any products tagged with '%s' in the current store","Konnte keine Artikel mit den Schlagwort(en) '%s' im Shop finden"
|
82 |
"Unable to remove tag. Please, try again later.","Entfernen des Schlagwortes nicht möglich. Bitte versuchen Sie es später noch einmal."
|
83 |
-
"Unable to save tag(s).","
|
84 |
"Use spaces to separate tags. Use single quotes (') for phrases.","Benutzen Sie Leerzeichen um Schlagworte zu trennen. Benutzen Sie (') für Phrasen."
|
85 |
"View All Tags","Alle Schlagworte ansehen"
|
86 |
"View Customers","Kunden ansehen"
|
@@ -88,9 +87,3 @@
|
|
88 |
"XML","XML"
|
89 |
"You have not tagged any products yet.","Sie haben bisher noch keine Artikel mit Schlagworten versehen."
|
90 |
"ZIP/Post Code","Postleitzahl"
|
91 |
-
"%s tag(s) have been accepted for moderation","%s Schlagwort(e) wurden für die Überprüfung angenommen"
|
92 |
-
"Are you sure that you want to delete this tag?","Möchten Sie dieses Schlagwort wirklich löschen?"
|
93 |
-
"Save And Continue Edit","Speichern und weiter bearbeiten"
|
94 |
-
"Tag "%s" has already been added to the product","Schlagwort "%s" wurde dem Artikel bereits hinzugefügt"
|
95 |
-
"Tag "%s" has been added to the product","Tag "%s" has been added to the product"
|
96 |
-
"Unable to save tag(s)","Speichern von Schlagwort(en) nicht möglich"
|
1 |
"# of Uses","# an Verwendungen"
|
|
|
2 |
"<strong>Tag Name:</strong> %s","<strong>Schlagwort Name:</strong> %s"
|
3 |
"Action","Aktion"
|
4 |
"Add New Tag","Neues Schlagwort hinzufügen"
|
8 |
"Add to Wishlist","Auf den Wunschzettel"
|
9 |
"All Tags","Alle Schlagworte"
|
10 |
"Approved","Bestätigt"
|
11 |
+
"Are you sure you want to delete this tag?","Sind Sie sicher das Sie dieses Schlagwort löschen wollen?"
|
12 |
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das machen wollen?"
|
13 |
"Are you sure?","Sind Sie sicher?"
|
14 |
"Back","Zurück"
|
20 |
"Change status","Status ändern"
|
21 |
"Click on a tag to view your corresponding products.","Klicken Sie auf ein Schlagwort, um übereinstimmende Artikel zu finden."
|
22 |
"Country","Land"
|
23 |
+
"Customer My Account My Tags List","Mein Kundenkonto - Meine Schlagwort-Liste"
|
24 |
+
"Customer My Account Tag View","Mein Kundenkonto - Schlagwortansicht"
|
25 |
"Customer Since","Kunde seit"
|
26 |
"Customers","Kunden"
|
27 |
"Customers Submitted this Tag","Kunden übermittelten dieses Schlagwort"
|
43 |
"Name","Name"
|
44 |
"New Tag","Neues Schlagwort"
|
45 |
"No matches found.","Keine Übereinstimmungen gefunden."
|
46 |
+
"Other people marked this product with these tags:","Andere Kunden haben diesen Artikel mit folgenden Schlagworten markiert:"
|
47 |
"Pending","Ausstehend"
|
48 |
"Pending Tags","Ausstehende Schlagworte"
|
49 |
"Popular","Beliebt"
|
64 |
"Status","Status"
|
65 |
"Store View","StoreView"
|
66 |
"Tag","Schlagwort"
|
67 |
+
"Tag ""%s"" has already been added to the product.","Schlagwort ""%s"" wurde dem Artikel bereits hinzugefügt"
|
68 |
+
"Tag ""%s"" has been added to the product.","Schlagwort ""%s"" wurde zum Artikel hinzugefügt."
|
69 |
+
"Tag ""%s"" has been rejected by administrator.","Schlagwort ""%s"" wurde vom Administrator abgelehnt."
|
70 |
"Tag Aggregation Data","Schlagwort Gruppierung"
|
71 |
"Tag Name","Schlagwortname"
|
72 |
"Tagged Products List","Artikelliste mit Schlagworten"
|
76 |
"Tags:","Schlagworte:"
|
77 |
"Telephone","Telefon"
|
78 |
"The tag has been deleted.","Dieses Schlagwort wurde gelöscht"
|
79 |
+
"There are no tags available.","Es sind keine Schlagworte verfügbar."
|
80 |
"Unable to find any products tagged with '%s' in the current store","Konnte keine Artikel mit den Schlagwort(en) '%s' im Shop finden"
|
81 |
"Unable to remove tag. Please, try again later.","Entfernen des Schlagwortes nicht möglich. Bitte versuchen Sie es später noch einmal."
|
82 |
+
"Unable to save tag(s).","Es ist nicht möglich Schlagwort(e) zu speichern."
|
83 |
"Use spaces to separate tags. Use single quotes (') for phrases.","Benutzen Sie Leerzeichen um Schlagworte zu trennen. Benutzen Sie (') für Phrasen."
|
84 |
"View All Tags","Alle Schlagworte ansehen"
|
85 |
"View Customers","Kunden ansehen"
|
87 |
"XML","XML"
|
88 |
"You have not tagged any products yet.","Sie haben bisher noch keine Artikel mit Schlagworten versehen."
|
89 |
"ZIP/Post Code","Postleitzahl"
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Tax.csv
CHANGED
@@ -4,18 +4,18 @@
|
|
4 |
"Add New Tax Rate","Neuen Steuersatz anlegen"
|
5 |
"Add New Tax Rule","Neue Steuerregel anlegen"
|
6 |
"After Discount","Nach Rabatt"
|
7 |
-
"An error occurred while deleting this rate.","Ein Fehler ist beim
|
8 |
-
"An error occurred while deleting this rate. Incorrect rate ID.","Ein Fehler ist beim
|
9 |
-
"An error occurred while deleting this tax class.","Ein Fehler ist beim
|
10 |
-
"An error occurred while deleting this tax rule.","Ein Fehler ist beim
|
11 |
-
"An error occurred while saving this rate.","Ein Fehler ist beim
|
12 |
-
"An error occurred while saving this tax class.","Ein Fehler ist beim
|
13 |
-
"An error occurred while saving this tax class. A class with the same name already exists.","Ein Fehler ist beim
|
14 |
-
"An error occurred while saving this tax rule.","Ein Fehler ist beim
|
15 |
"Apply Customer Tax","Verwende Kundensteuerklasse"
|
16 |
"Apply Discount On Prices","Wende Rabatt auf Preise an"
|
17 |
"Apply Tax On","Steuer anwenden auf"
|
18 |
-
"Apply discount on price including tax is calculated based on store tax, if "Apply Tax after Discount" is selected.","
|
19 |
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das machen wollen?"
|
20 |
"Back","Zurück"
|
21 |
"Before Discount","Vor Rabatt"
|
@@ -56,7 +56,7 @@
|
|
56 |
"Grand Total (Excl. Tax)","Gesamtsumme (Zzgl. Steuern)"
|
57 |
"Grand Total (Excl.Tax)","Gesamtsumme (Zzgl. Steuern)"
|
58 |
"Grand Total (Incl. Tax)","Gesamtsumme (Inkl. Steuern)"
|
59 |
-
"Grand Total (Incl.Tax)","Gesamtsumme (
|
60 |
"Grand Total Excl. Tax","Gesamtsumme Zzgl. Steuern"
|
61 |
"Grand Total Incl. Tax","Gesamtsumme Inkl. Steuern"
|
62 |
"Import / Export Tax Rates","Steuersätze exportieren"
|
@@ -88,8 +88,8 @@
|
|
88 |
"Product Tax Class","Artikelsteuerklasse"
|
89 |
"Product Tax Class Information","Artikelsteuerklasse Information"
|
90 |
"Product Tax Classes","Artikelsteuerklassen"
|
91 |
-
"Range From","
|
92 |
-
"Range To","
|
93 |
"Rate","Satz"
|
94 |
"Rate Percent","Satz in Prozent"
|
95 |
"Reset","Zurücksetzen"
|
@@ -113,7 +113,7 @@
|
|
113 |
"Subtotal (Excl. Tax)","Zwischensumme (Zzgl. Steuer)"
|
114 |
"Subtotal (Excl.Tax)","Zwischensumme (Exkl.Steuer)"
|
115 |
"Subtotal (Incl. Tax)","Zwischensumme (Inkl. Steuer)"
|
116 |
-
"Subtotal (Incl.Tax)","
|
117 |
"Tax","Steuer"
|
118 |
"Tax Calculation Based On","Steuerberechnung basiert auf"
|
119 |
"Tax Calculation Method Based On","Steuerberechnungs Methode basiert auf"
|
@@ -126,7 +126,7 @@
|
|
126 |
"Tax Rules","Steuerregeln"
|
127 |
"Tax Section","Steuern"
|
128 |
"Tax Titles","Steuerbezeichnungen"
|
129 |
-
"Tax rate cannot be removed. It exists in tax rule","
|
130 |
"Tax rates at the same priority are added, others are compounded.","Steuersätze mit der gleichen Priorität wurden angelegt, andere werden zusammengezogen."
|
131 |
"The tax class has been deleted.","Die Steuerklasse wurde gelöscht."
|
132 |
"The tax class has been saved.","Die Steuerklasse wurde gespeichert."
|
@@ -148,6 +148,3 @@
|
|
148 |
"You cannot delete this tax class as it is used in Tax Rules. You have to delete the rules it is used in first.","Sie können diese Steuerklasse nicht löschen, da sie noch in einer Regel verwendet wird. Bitte löschen Sie diese Regeln zuerst."
|
149 |
"Zip/Post Code","Postleitzahl"
|
150 |
"Zip/Post is Range","Nur für bestimmte Postleitzahlen"
|
151 |
-
"Range from","Range from"
|
152 |
-
"Range to","Range to"
|
153 |
-
"XML","XML"
|
4 |
"Add New Tax Rate","Neuen Steuersatz anlegen"
|
5 |
"Add New Tax Rule","Neue Steuerregel anlegen"
|
6 |
"After Discount","Nach Rabatt"
|
7 |
+
"An error occurred while deleting this rate.","Ein Fehler ist beim Löschen des Steuersatzes aufgetreten."
|
8 |
+
"An error occurred while deleting this rate. Incorrect rate ID.","Ein Fehler ist beim Löschen des Steuersatzes aufgetreten. Falsche Satz ID."
|
9 |
+
"An error occurred while deleting this tax class.","Ein Fehler ist beim Löschen der Steuerklasse aufgetreten."
|
10 |
+
"An error occurred while deleting this tax rule.","Ein Fehler ist beim Löschen der Steuerregel aufgetreten."
|
11 |
+
"An error occurred while saving this rate.","Ein Fehler ist beim Speichern des Steuersatzes aufgetreten."
|
12 |
+
"An error occurred while saving this tax class.","Ein Fehler ist beim Speichern der Steuerklasse aufgetreten."
|
13 |
+
"An error occurred while saving this tax class. A class with the same name already exists.","Ein Fehler ist beim Speichern der Steuerklasse aufgetreten. Eine Klasse mit dem selben Namen existiert bereits."
|
14 |
+
"An error occurred while saving this tax rule.","Ein Fehler ist beim Speichern der Steuerregel aufgetreten."
|
15 |
"Apply Customer Tax","Verwende Kundensteuerklasse"
|
16 |
"Apply Discount On Prices","Wende Rabatt auf Preise an"
|
17 |
"Apply Tax On","Steuer anwenden auf"
|
18 |
+
"Apply discount on price including tax is calculated based on store tax, if ""Apply Tax after Discount"" is selected.","'Wende Rabatt auf Preise inklusive Steuern an' basiert auf der eingestellten Store-Steuer, wenn 'Wende Steuern nach Rabatt an' ausgewählt ist."
|
19 |
"Are you sure you want to do this?","Sind Sie sicher, dass Sie das machen wollen?"
|
20 |
"Back","Zurück"
|
21 |
"Before Discount","Vor Rabatt"
|
56 |
"Grand Total (Excl. Tax)","Gesamtsumme (Zzgl. Steuern)"
|
57 |
"Grand Total (Excl.Tax)","Gesamtsumme (Zzgl. Steuern)"
|
58 |
"Grand Total (Incl. Tax)","Gesamtsumme (Inkl. Steuern)"
|
59 |
+
"Grand Total (Incl.Tax)","Gesamtsumme (Inkl. Steuern)"
|
60 |
"Grand Total Excl. Tax","Gesamtsumme Zzgl. Steuern"
|
61 |
"Grand Total Incl. Tax","Gesamtsumme Inkl. Steuern"
|
62 |
"Import / Export Tax Rates","Steuersätze exportieren"
|
88 |
"Product Tax Class","Artikelsteuerklasse"
|
89 |
"Product Tax Class Information","Artikelsteuerklasse Information"
|
90 |
"Product Tax Classes","Artikelsteuerklassen"
|
91 |
+
"Range From","Bereich von"
|
92 |
+
"Range To","Bereich bis"
|
93 |
"Rate","Satz"
|
94 |
"Rate Percent","Satz in Prozent"
|
95 |
"Reset","Zurücksetzen"
|
113 |
"Subtotal (Excl. Tax)","Zwischensumme (Zzgl. Steuer)"
|
114 |
"Subtotal (Excl.Tax)","Zwischensumme (Exkl.Steuer)"
|
115 |
"Subtotal (Incl. Tax)","Zwischensumme (Inkl. Steuer)"
|
116 |
+
"Subtotal (Incl.Tax)","Zwischensumme (Inkl. Steuer)"
|
117 |
"Tax","Steuer"
|
118 |
"Tax Calculation Based On","Steuerberechnung basiert auf"
|
119 |
"Tax Calculation Method Based On","Steuerberechnungs Methode basiert auf"
|
126 |
"Tax Rules","Steuerregeln"
|
127 |
"Tax Section","Steuern"
|
128 |
"Tax Titles","Steuerbezeichnungen"
|
129 |
+
"Tax rate cannot be removed. It exists in tax rule","Steuersatz kann nicht entfernt werden, da er in einer Steuerregel verwendet wird."
|
130 |
"Tax rates at the same priority are added, others are compounded.","Steuersätze mit der gleichen Priorität wurden angelegt, andere werden zusammengezogen."
|
131 |
"The tax class has been deleted.","Die Steuerklasse wurde gelöscht."
|
132 |
"The tax class has been saved.","Die Steuerklasse wurde gespeichert."
|
148 |
"You cannot delete this tax class as it is used in Tax Rules. You have to delete the rules it is used in first.","Sie können diese Steuerklasse nicht löschen, da sie noch in einer Regel verwendet wird. Bitte löschen Sie diese Regeln zuerst."
|
149 |
"Zip/Post Code","Postleitzahl"
|
150 |
"Zip/Post is Range","Nur für bestimmte Postleitzahlen"
|
|
|
|
|
|
app/locale/de_DE/Mage_Usa.csv
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
" was not delivered nor scanned","wurde weder zugestellt noch eingescannt"
|
2 |
"1 Day Freight","1 Tag Fracht"
|
|
|
3 |
"2 Day Freight","2 Tage Fracht"
|
4 |
"2Day","2 Tage"
|
5 |
"2nd Day Air","2. Tag Luftpost"
|
@@ -15,9 +16,10 @@
|
|
15 |
"Additional Protection Configuration Value","Zusätzliche Absicherung Konfigurationswert"
|
16 |
"Additional Protection Enabled","Zusätzliche Absicherung aktiviert"
|
17 |
"Additional Protection Min Subtotal","Zusätzliche Absicherung Mindestzwischensumme"
|
18 |
-
"Additional Protection Value","
|
19 |
-
"Additional Protection Value Rounding Method","
|
20 |
-
"
|
|
|
21 |
"Allowed Methods","Erlaubte Methoden"
|
22 |
"Bound Printed Matter","Gebundene Drucksache"
|
23 |
"Business Service Center","Geschäftskundenservicezentrum"
|
@@ -28,22 +30,26 @@
|
|
28 |
"Configuration","Konfiguration"
|
29 |
"Container","Verpackungsart"
|
30 |
"Customer Packaging","Kundenverpackung"
|
|
|
31 |
"DHL","DHL"
|
32 |
"Debug","Debug"
|
33 |
"Default Package Height","Standard Verpackungshöhe"
|
34 |
"Default Package Length","Standard Verpackungslänge"
|
35 |
"Default Package Width","Standard Verpackungsbreite"
|
36 |
"Delivered","Zugestellt"
|
|
|
37 |
"Destination Type","Anlieferung / Zustellung"
|
38 |
"Development","Entwicklung"
|
|
|
39 |
"Displayed Error Message","Angezeigte Fehlermeldung"
|
|
|
40 |
"Domestic Shipment Days","National Versandtage"
|
41 |
"Drop Box","Briefkasten"
|
42 |
"Dropoff","Einwurf"
|
43 |
"Empty response","Leere Rückmeldung"
|
44 |
"Enable Negotiated Rates","Vereinbarte Kosten aktivierten"
|
45 |
-
"Enabled","
|
46 |
-
"Enables/Disables SSL verification of Magento server by UPS.","
|
47 |
"Error #%s : %s (%s)","Fehler #%s : %s (%s)"
|
48 |
"Error #%s: %s","Fehler #%s: %s"
|
49 |
"Europe First Priority","Europa höchste Priorität"
|
@@ -67,38 +73,45 @@
|
|
67 |
"Flat-Rate Envelope","Festkosten Umschlag"
|
68 |
"Free Method","Freie Art"
|
69 |
"Free Shipping with Minimum Order Amount","Versandkostenfrei ab"
|
|
|
70 |
"Gateway URL","Gateway URL"
|
71 |
"Gateway XML URL","Gateway XML URL"
|
|
|
|
|
72 |
"Ground","Erdgeschoss"
|
73 |
"Ground Commercial","Erdgeschoss Geschäftlich"
|
74 |
"Ground Residential","Erdgeschoss Privatanschrift"
|
75 |
"Handling Applied","Bearbeitungsgebühr hinzugefügt"
|
76 |
"Handling Fee","Bearbeitungsgebühr"
|
|
|
77 |
"Home Delivery","Lieferung frei Haus"
|
|
|
78 |
"International Economy","International Economy"
|
79 |
"International Express","International Express"
|
80 |
-
"International First","International
|
|
|
81 |
"International Priority","International Priorität"
|
82 |
"International Shipment Days","International Versandtage"
|
83 |
"Intl Economy Freight","International Economy Fracht"
|
84 |
"Intl Priority Freight","International Priority Fracht"
|
85 |
-
"
|
86 |
-
"Invalid DHL XML code type: %s.","Invalid DHL XML code type: %s.""
|
87 |
-
"Invalid FedEx XML code for type %s: %s","Ungültiger FedEx XML Code für Typ %s: %s"
|
88 |
-
"Invalid FedEx XML code type: %s","Ungültiger FedEx XML Codetyp: %s"
|
89 |
-
"Invalid UPS CGI code for type %s: %s","Ungültiger UPS CGI Code für Typ %s: %s"
|
90 |
-
"Invalid UPS CGI code type: %s","Ungültiger UPS CGI Codetyp : %s"
|
91 |
"Kilograms","Kilogramm"
|
92 |
"Large","Groß"
|
|
|
|
|
93 |
"Letter","Brief"
|
94 |
"Library","Sammlung"
|
95 |
"Live","Live"
|
96 |
"Machinable","Maschinenverarbeitbar"
|
97 |
"Maximum Package Weight (Please consult your shipping carrier for maximum supported shipping weight)","Höchstgewicht pro Sendung (Bitte erfragen Sie diese Angabe bei Ihrem Versanddienstleister)"
|
98 |
"Media Mail","Media Mail"
|
|
|
|
|
|
|
99 |
"Minimum Order Amount for Free Shipping","Mindestbestellwert für versandkostenfreie Lieferung"
|
100 |
"Minimum Package Weight (Please consult your shipping carrier for minimum supported shipping weight)","Minimales Verpackungs-Gewicht (Bitte fragen Sie bei Ihrem Versandpartner nach dem kleinsmöglichen Gewicht für eine Sendung)"
|
101 |
"Mode","Modus"
|
|
|
102 |
"Next Afternoon","Nächsten Nachmittag"
|
103 |
"Next Day Air","Nächster Tag Luftpost"
|
104 |
"Next Day Air Early AM","Nächster Tag Luftpost früher Vormittag"
|
@@ -108,18 +121,21 @@
|
|
108 |
"Next Day Air Saver","Nächster Tag Luftpost Saver"
|
109 |
"Next Day Air Saver Letter","Nächster Tag Luftpost Saver Breifsendung"
|
110 |
"No","Nein"
|
|
|
111 |
"Non-rectangular","Nicht rechteckig"
|
|
|
112 |
"Order","Bestellung"
|
113 |
"Origin of the Shipment","Ursprung der Sendung"
|
114 |
-
"
|
|
|
115 |
"Package","Paket"
|
116 |
"Package Description","Paketbeschreibung"
|
117 |
"Packaging","Verpackung"
|
|
|
118 |
"Parcel","Parcel"
|
119 |
"Parcel Post","Parcel Post"
|
120 |
"Password","Passwort"
|
121 |
"Pickup Method","Abholart"
|
122 |
-
"Please enter the package weight","Bitte Paketgewicht angeben"
|
123 |
"Please make sure to use only digits here. No dashes are allowed.","Bitte achten Sie darauf, hier nur Ziffern zu verwenden. Bindstriche oder Leerzeichen sind nicht erlaubt"
|
124 |
"Pounds","Pfund"
|
125 |
"Priority Mail","Priority Mail"
|
@@ -129,12 +145,19 @@
|
|
129 |
"Regular","Standard"
|
130 |
"Regular Pickup","Standardabholung"
|
131 |
"Request Courier","Kurier anfordern"
|
|
|
|
|
132 |
"Residential","Privatanschrift"
|
133 |
"Residential Delivery","Lieferung an Privatanschrift"
|
134 |
"Response is in the wrong format","Antwort liegt im falschen Format vor"
|
135 |
-
"
|
|
|
|
|
|
|
136 |
"Second Day Service","Zustellung am zweiten Tag"
|
|
|
137 |
"Sender","Absender"
|
|
|
138 |
"Ship to Applicable Countries","Versand in mögliche Länder"
|
139 |
"Ship to Specific Countries","Versand in bestimmte Länder"
|
140 |
"Shipment Contains Hazardous Materials","Sendung enthält gefährliche Stoffe"
|
@@ -144,10 +167,13 @@
|
|
144 |
"Shipment is not available.","Versand steht nicht zur Verfügung."
|
145 |
"Shipment picked up","Sendung abgeholt"
|
146 |
"Shipper Number","Versendernummer"
|
147 |
-
"Shipping Key","
|
148 |
-
"Shipping Key (International)","
|
149 |
"Show Method if Not Applicable","Versandart zeigen, auch wenn nicht möglich"
|
|
|
150 |
"Size","Größe"
|
|
|
|
|
151 |
"Sort Order","Reihenfolge"
|
152 |
"Standard Overnight","Standard Overnight"
|
153 |
"Station","Station"
|
@@ -157,8 +183,8 @@
|
|
157 |
"There is no available method for selected shipping address.","Für diese Lieferanschrift gibt es keine zulässige Versandart."
|
158 |
"Third Party","Drittanbieter"
|
159 |
"Title","Titel"
|
160 |
-
"To Lower","
|
161 |
-
"To Upper","
|
162 |
"Tracking XML URL","Tracking XML URL"
|
163 |
"UPS","UPS"
|
164 |
"UPS Expedited","UPS Expedited"
|
@@ -183,22 +209,24 @@
|
|
183 |
"UPS Today Standard","UPS Today Standard"
|
184 |
"UPS Tube","UPS Tube"
|
185 |
"UPS Type","UPS Art"
|
186 |
-
"UPS Worldwide 10 kilo","UPS Worldwide 10
|
187 |
-
"UPS Worldwide 25 kilo","UPS Worldwide 25
|
188 |
"UPS Worldwide Expedited","UPS Worldwide Expedited"
|
189 |
"UPS Worldwide Express","UPS Worldwide Express"
|
190 |
"UPS Worldwide Express Plus","UPS Worldwide Express Plus"
|
191 |
"UPS Worldwide Express PlusSM","UPS Worldwide Express PlusSM"
|
|
|
192 |
"USPS","USPS"
|
193 |
"Unable to retrieve tracking","Fehler beim Abfragen des Trackings"
|
194 |
"United Parcel Service","United Parcel Service"
|
195 |
"United Parcel Service XML","United Parcel Service XML"
|
196 |
"Unknown error","Unbekannter Fehler"
|
197 |
-
"Used only when "Additional Protection Value" is set to "Configuration". Can contain only numeric amount.","
|
198 |
"User ID","Benutzer ID"
|
199 |
"UserId","Benutzer ID"
|
200 |
"Variable","Variable"
|
201 |
"Weight Unit","Gewichtseinheit"
|
|
|
202 |
"Worldwide Expedited","Worldwide Expedited"
|
203 |
"Worldwide Express","Worldwide Express"
|
204 |
"Worldwide Express Letter","Worldwide Express Letter"
|
@@ -207,15 +235,3 @@
|
|
207 |
"Worldwide Express Saver","Worldwide Express Saver"
|
208 |
"Yes","Ja"
|
209 |
"Your Packaging","Ihre Verpackung"
|
210 |
-
"Account number","Kundenkontonummer"
|
211 |
-
"Allowed methods","Erlaubte Arten"
|
212 |
-
"Enables/Disables SSL verification of Magento server by UPS","Aktiviere/Deaktiviere SSL Überprüfung des Magento Servers bei UPS"
|
213 |
-
"Handling fee","Bearbeitungsgebühr"
|
214 |
-
"Invalid DHL XML code for type %s: %s","Ungültiger DHL XML Code für Typ %s: %s"
|
215 |
-
"Invalid DHL XML code type: %s","Ungültiger DHL XML Codetyp : %s"
|
216 |
-
"Invalid USPS XML code for type %s: %s","Ungültiger USPS XML Code für Typ %s: %s"
|
217 |
-
"Invalid USPS XML code type: %s","Ungültiger USPS XML Codetyp : %s"
|
218 |
-
"Shipping key","Versandkennung"
|
219 |
-
"Shipping key (International)","Versandkennung (international)"
|
220 |
-
"Sort order","Reihenfolge"
|
221 |
-
"Used only when 'Additional Protection Value' is set to 'Configuration'. Can contain only numeric amount.","Wird nur benutzt, wenn 'Zusätzliche Absicherung Wert' auf 'Konfiguration' gesetzt ist. Darf nur Zahlenwerte enthalten."
|
1 |
" was not delivered nor scanned","wurde weder zugestellt noch eingescannt"
|
2 |
"1 Day Freight","1 Tag Fracht"
|
3 |
+
"2 Day","2 Tage"
|
4 |
"2 Day Freight","2 Tage Fracht"
|
5 |
"2Day","2 Tage"
|
6 |
"2nd Day Air","2. Tag Luftpost"
|
16 |
"Additional Protection Configuration Value","Zusätzliche Absicherung Konfigurationswert"
|
17 |
"Additional Protection Enabled","Zusätzliche Absicherung aktiviert"
|
18 |
"Additional Protection Min Subtotal","Zusätzliche Absicherung Mindestzwischensumme"
|
19 |
+
"Additional Protection Value","Zusätzlicher Absicherungswert"
|
20 |
+
"Additional Protection Value Rounding Method","Rundungsmethode für zusätzlichen Absicherungswert"
|
21 |
+
"Adult","Erwachsener"
|
22 |
+
"Adult Signature Required","Unterschrift eines Erwachsenen erforderlich"
|
23 |
"Allowed Methods","Erlaubte Methoden"
|
24 |
"Bound Printed Matter","Gebundene Drucksache"
|
25 |
"Business Service Center","Geschäftskundenservicezentrum"
|
30 |
"Configuration","Konfiguration"
|
31 |
"Container","Verpackungsart"
|
32 |
"Customer Packaging","Kundenverpackung"
|
33 |
+
"Customer Supplied Package","Vom Kunden gelieferte Verpackung"
|
34 |
"DHL","DHL"
|
35 |
"Debug","Debug"
|
36 |
"Default Package Height","Standard Verpackungshöhe"
|
37 |
"Default Package Length","Standard Verpackungslänge"
|
38 |
"Default Package Width","Standard Verpackungsbreite"
|
39 |
"Delivered","Zugestellt"
|
40 |
+
"Delivery Confirmation","Zustellbestätigung"
|
41 |
"Destination Type","Anlieferung / Zustellung"
|
42 |
"Development","Entwicklung"
|
43 |
+
"Direct","Direkt"
|
44 |
"Displayed Error Message","Angezeigte Fehlermeldung"
|
45 |
+
"Documents","Dokumente"
|
46 |
"Domestic Shipment Days","National Versandtage"
|
47 |
"Drop Box","Briefkasten"
|
48 |
"Dropoff","Einwurf"
|
49 |
"Empty response","Leere Rückmeldung"
|
50 |
"Enable Negotiated Rates","Vereinbarte Kosten aktivierten"
|
51 |
+
"Enabled for Checkout","Für Checkout zugelassen"
|
52 |
+
"Enables/Disables SSL verification of Magento server by UPS.","Aktiviert/Deaktiviert SSL-Prüfung des Magento Servers via UPS."
|
53 |
"Error #%s : %s (%s)","Fehler #%s : %s (%s)"
|
54 |
"Error #%s: %s","Fehler #%s: %s"
|
55 |
"Europe First Priority","Europa höchste Priorität"
|
73 |
"Flat-Rate Envelope","Festkosten Umschlag"
|
74 |
"Free Method","Freie Art"
|
75 |
"Free Shipping with Minimum Order Amount","Versandkostenfrei ab"
|
76 |
+
"Freight","Fracht"
|
77 |
"Gateway URL","Gateway URL"
|
78 |
"Gateway XML URL","Gateway XML URL"
|
79 |
+
"Gift","Geschenk"
|
80 |
+
"Girth","Umfang"
|
81 |
"Ground","Erdgeschoss"
|
82 |
"Ground Commercial","Erdgeschoss Geschäftlich"
|
83 |
"Ground Residential","Erdgeschoss Privatanschrift"
|
84 |
"Handling Applied","Bearbeitungsgebühr hinzugefügt"
|
85 |
"Handling Fee","Bearbeitungsgebühr"
|
86 |
+
"Height","Höhe"
|
87 |
"Home Delivery","Lieferung frei Haus"
|
88 |
+
"Indirect","Indirekt"
|
89 |
"International Economy","International Economy"
|
90 |
"International Express","International Express"
|
91 |
+
"International First","International First"
|
92 |
+
"International Ground","International Ground"
|
93 |
"International Priority","International Priorität"
|
94 |
"International Shipment Days","International Versandtage"
|
95 |
"Intl Economy Freight","International Economy Fracht"
|
96 |
"Intl Priority Freight","International Priority Fracht"
|
97 |
+
"Key","Schlüssel"
|
|
|
|
|
|
|
|
|
|
|
98 |
"Kilograms","Kilogramm"
|
99 |
"Large","Groß"
|
100 |
+
"Large Express Box","Große Express Box"
|
101 |
+
"Length","Länge"
|
102 |
"Letter","Brief"
|
103 |
"Library","Sammlung"
|
104 |
"Live","Live"
|
105 |
"Machinable","Maschinenverarbeitbar"
|
106 |
"Maximum Package Weight (Please consult your shipping carrier for maximum supported shipping weight)","Höchstgewicht pro Sendung (Bitte erfragen Sie diese Angabe bei Ihrem Versanddienstleister)"
|
107 |
"Media Mail","Media Mail"
|
108 |
+
"Medium Express Box","Mittlere Express Box"
|
109 |
+
"Merchandise","Waren"
|
110 |
+
"Meter Number","Kennnummer"
|
111 |
"Minimum Order Amount for Free Shipping","Mindestbestellwert für versandkostenfreie Lieferung"
|
112 |
"Minimum Package Weight (Please consult your shipping carrier for minimum supported shipping weight)","Minimales Verpackungs-Gewicht (Bitte fragen Sie bei Ihrem Versandpartner nach dem kleinsmöglichen Gewicht für eine Sendung)"
|
113 |
"Mode","Modus"
|
114 |
+
"National Freight","Nationale Fracht"
|
115 |
"Next Afternoon","Nächsten Nachmittag"
|
116 |
"Next Day Air","Nächster Tag Luftpost"
|
117 |
"Next Day Air Early AM","Nächster Tag Luftpost früher Vormittag"
|
121 |
"Next Day Air Saver","Nächster Tag Luftpost Saver"
|
122 |
"Next Day Air Saver Letter","Nächster Tag Luftpost Saver Breifsendung"
|
123 |
"No","Nein"
|
124 |
+
"No packages for request","Keine Pakete für Anfrage"
|
125 |
"Non-rectangular","Nicht rechteckig"
|
126 |
+
"Not Required","Nicht erforderlich"
|
127 |
"Order","Bestellung"
|
128 |
"Origin of the Shipment","Ursprung der Sendung"
|
129 |
+
"Other","Andere"
|
130 |
+
"PAK","PAK"
|
131 |
"Package","Paket"
|
132 |
"Package Description","Paketbeschreibung"
|
133 |
"Packaging","Verpackung"
|
134 |
+
"Pallet","Pallet"
|
135 |
"Parcel","Parcel"
|
136 |
"Parcel Post","Parcel Post"
|
137 |
"Password","Passwort"
|
138 |
"Pickup Method","Abholart"
|
|
|
139 |
"Please make sure to use only digits here. No dashes are allowed.","Bitte achten Sie darauf, hier nur Ziffern zu verwenden. Bindstriche oder Leerzeichen sind nicht erlaubt"
|
140 |
"Pounds","Pfund"
|
141 |
"Priority Mail","Priority Mail"
|
145 |
"Regular","Standard"
|
146 |
"Regular Pickup","Standardabholung"
|
147 |
"Request Courier","Kurier anfordern"
|
148 |
+
"Required","Erforderlich"
|
149 |
+
"Required for negotiated rates; 6-character UPS.","Erforderlich für vereinbarte Versandkosten; 6 Zeichen UPS."
|
150 |
"Residential","Privatanschrift"
|
151 |
"Residential Delivery","Lieferung an Privatanschrift"
|
152 |
"Response is in the wrong format","Antwort liegt im falschen Format vor"
|
153 |
+
"Return","Zurück"
|
154 |
+
"Round","Runden"
|
155 |
+
"Sample","Beispiel"
|
156 |
+
"Sandbox Mode","Sandbox Modus"
|
157 |
"Second Day Service","Zustellung am zweiten Tag"
|
158 |
+
"Secure Gateway URL","Sichere Gateway URL"
|
159 |
"Sender","Absender"
|
160 |
+
"Service type does not match","Servicetyp stimmt nicht"
|
161 |
"Ship to Applicable Countries","Versand in mögliche Länder"
|
162 |
"Ship to Specific Countries","Versand in bestimmte Länder"
|
163 |
"Shipment Contains Hazardous Materials","Sendung enthält gefährliche Stoffe"
|
167 |
"Shipment is not available.","Versand steht nicht zur Verfügung."
|
168 |
"Shipment picked up","Sendung abgeholt"
|
169 |
"Shipper Number","Versendernummer"
|
170 |
+
"Shipping Key","Versandschlüssel"
|
171 |
+
"Shipping Key (International)","Versandschlüssel (International)"
|
172 |
"Show Method if Not Applicable","Versandart zeigen, auch wenn nicht möglich"
|
173 |
+
"Signature Required","Unterschrift erforderlich"
|
174 |
"Size","Größe"
|
175 |
+
"Small Express Box","Kleine Express Box"
|
176 |
+
"Smart Post","Smart Post"
|
177 |
"Sort Order","Reihenfolge"
|
178 |
"Standard Overnight","Standard Overnight"
|
179 |
"Station","Station"
|
183 |
"There is no available method for selected shipping address.","Für diese Lieferanschrift gibt es keine zulässige Versandart."
|
184 |
"Third Party","Drittanbieter"
|
185 |
"Title","Titel"
|
186 |
+
"To Lower","Abrunden"
|
187 |
+
"To Upper","Aufrunden"
|
188 |
"Tracking XML URL","Tracking XML URL"
|
189 |
"UPS","UPS"
|
190 |
"UPS Expedited","UPS Expedited"
|
209 |
"UPS Today Standard","UPS Today Standard"
|
210 |
"UPS Tube","UPS Tube"
|
211 |
"UPS Type","UPS Art"
|
212 |
+
"UPS Worldwide 10 kilo","UPS Worldwide 10 Kilo"
|
213 |
+
"UPS Worldwide 25 kilo","UPS Worldwide 25 Kilo"
|
214 |
"UPS Worldwide Expedited","UPS Worldwide Expedited"
|
215 |
"UPS Worldwide Express","UPS Worldwide Express"
|
216 |
"UPS Worldwide Express Plus","UPS Worldwide Express Plus"
|
217 |
"UPS Worldwide Express PlusSM","UPS Worldwide Express PlusSM"
|
218 |
+
"UPS Worldwide Saver","UPS Worldwide Saver"
|
219 |
"USPS","USPS"
|
220 |
"Unable to retrieve tracking","Fehler beim Abfragen des Trackings"
|
221 |
"United Parcel Service","United Parcel Service"
|
222 |
"United Parcel Service XML","United Parcel Service XML"
|
223 |
"Unknown error","Unbekannter Fehler"
|
224 |
+
"Used only when ""Additional Protection Value"" is set to ""Configuration"". Can contain only numeric amount.","Wird nur benutzt, wenn 'Zusätzlicher Absicherungswert' auf 'Konfiguration' gesetzt ist. Darf nur Zahlenwerte enthalten."
|
225 |
"User ID","Benutzer ID"
|
226 |
"UserId","Benutzer ID"
|
227 |
"Variable","Variable"
|
228 |
"Weight Unit","Gewichtseinheit"
|
229 |
+
"Width","Breite"
|
230 |
"Worldwide Expedited","Worldwide Expedited"
|
231 |
"Worldwide Express","Worldwide Express"
|
232 |
"Worldwide Express Letter","Worldwide Express Letter"
|
235 |
"Worldwide Express Saver","Worldwide Express Saver"
|
236 |
"Yes","Ja"
|
237 |
"Your Packaging","Ihre Verpackung"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Mage_Weee.csv
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
-
"All Websites","
|
2 |
-
"Apply Discounts To FPT","Prozentuale Rabatte auf
|
3 |
-
"Apply Tax To FPT","Steuern auf
|
4 |
"Display Prices In Emails","Preise in E-Mails anzeigen"
|
5 |
-
"Display Prices In Product Lists","Preise in
|
6 |
"Display Prices In Sales Modules","Preise in Verkaufsmodulen anzeigen"
|
7 |
-
"Display Prices On Product View Page","Preise auf
|
8 |
-
"Enable FPT","
|
9 |
-
"Excluding FPT","zzgl.
|
10 |
-
"Excluding FPT, FPT description, final price","zzgl.
|
11 |
-
"Fixed Product Tax","
|
12 |
-
"Fixed Product Taxes","
|
13 |
-
"Include FPT In Subtotal","
|
14 |
-
"Including FPT and FPT description","
|
15 |
-
"Including FPT and FPT description [incl. FPT VAT]","inkl.
|
16 |
-
"Including FPT only","nur Inkl.
|
17 |
"Total","Gesamt"
|
18 |
"Total Incl. Tax","Gesamt inkl. Steuern"
|
19 |
"Total incl. tax","Gesamt inkl. Steuern"
|
1 |
+
"All Websites","Alle Websites"
|
2 |
+
"Apply Discounts To FPT","Prozentuale Rabatte auf Verbrauchssteuern"
|
3 |
+
"Apply Tax To FPT","Steuern auf Verbrauchssteuern anwenden"
|
4 |
"Display Prices In Emails","Preise in E-Mails anzeigen"
|
5 |
+
"Display Prices In Product Lists","Preise in Kategorien anzeigen"
|
6 |
"Display Prices In Sales Modules","Preise in Verkaufsmodulen anzeigen"
|
7 |
+
"Display Prices On Product View Page","Preise auf Artikeldetailseiten anzeigen"
|
8 |
+
"Enable FPT","Verbrauchssteuern aktivieren"
|
9 |
+
"Excluding FPT","zzgl. Verbrauchssteuern"
|
10 |
+
"Excluding FPT, FPT description, final price","zzgl. Verbrauchssteuern, Verbrauchssteuern Beschreibung, Endpreis"
|
11 |
+
"Fixed Product Tax","Verbrauchssteuern"
|
12 |
+
"Fixed Product Taxes","Verbrauchssteuern"
|
13 |
+
"Include FPT In Subtotal","Verbrauchssteuern in Zwischensumme hineinrechnen"
|
14 |
+
"Including FPT and FPT description","inkl. Verbrauchssteuern und Verbrauchssteuern Beschreibung"
|
15 |
+
"Including FPT and FPT description [incl. FPT VAT]","inkl. Verbrauchssteuern und Verbrauchssteuern Beschreibung (inkl. Verbrauchssteuern-Umsatzsteuer)"
|
16 |
+
"Including FPT only","nur Inkl. Verbrauchssteuern"
|
17 |
"Total","Gesamt"
|
18 |
"Total Incl. Tax","Gesamt inkl. Steuern"
|
19 |
"Total incl. tax","Gesamt inkl. Steuern"
|
app/locale/de_DE/Mage_Widget.csv
CHANGED
@@ -6,17 +6,17 @@
|
|
6 |
"All","Alle"
|
7 |
"All Pages","Alle Seiten"
|
8 |
"All Product Types","Alle Artikelarten"
|
9 |
-
"Anchor Categories","
|
10 |
"Assign to Store Views","Zuweisen zu StoreViews"
|
11 |
"Big Image","Großes Bild"
|
12 |
"Block Reference","Block Referenz"
|
13 |
"CMS","CMS"
|
14 |
"Categories","Kategorien"
|
15 |
-
"Choose...","
|
16 |
-
"Close","
|
17 |
-
"Continue","
|
18 |
-
"Default Template","
|
19 |
-
"Delete","
|
20 |
"Design Package/Theme","Design Paket/Theme"
|
21 |
"Export to:","Export nach:"
|
22 |
"Frontend Properties","Frontend Eigenschaften"
|
@@ -28,11 +28,11 @@
|
|
28 |
"New Instance","Neue Instanz"
|
29 |
"New Widget Instance","Neue Widget Instanz"
|
30 |
"Next page","Nächste Seite"
|
31 |
-
"Non-Anchor Categories","Keine-
|
32 |
"Not Selected","Nicht ausgewählt"
|
33 |
"Page","Seite"
|
34 |
"Please Select Block Reference First","Bitte zuerst Block Referenz wählen"
|
35 |
-
"Previous page","
|
36 |
"Products","Artikel"
|
37 |
"Remove Layout Update","Layout Update entfernen"
|
38 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
@@ -44,27 +44,27 @@
|
|
44 |
"Specific %s","Bestimmte %s"
|
45 |
"Specified Page","Bestimmte Seite"
|
46 |
"Template","Vorlage"
|
47 |
-
"The information in this tab has been changed.","Die Information in diesem Tab
|
48 |
-
"The widget instance has been deleted.","Die
|
49 |
"The widget instance has been saved.","Die Widget Instanz wurde gespeichert."
|
50 |
"This tab contains invalid data. Please solve the problem before saving.","Dieses Tab enthält ungültige Daten. Bitte beheben Sie dieses Problem bevor Sie speichern."
|
51 |
-
"Thumbnail","
|
52 |
"Total %d records found","Insgesamt %d Einträge gefunden"
|
53 |
"Type","Art"
|
54 |
"Unselect All","Alle abwählen"
|
55 |
"Unselect Visible","Sichtbare abwählen"
|
56 |
"View","Ansicht"
|
57 |
"Widget","Widget"
|
58 |
-
"Widget "%s"","Widget "%s""
|
59 |
"Widget ID","Widget ID"
|
60 |
"Widget Instance","Widget Instanz"
|
61 |
"Widget Instance Title","Widget Instanz Titel"
|
62 |
"Widget Options","Widget Optionen"
|
63 |
"Widget Type","Widget Art"
|
64 |
-
"Widget Type is not specified","Widget Typ ist nicht
|
65 |
-
"Widget instance is not full complete to create.","Widget Instanz ist nicht komplett um angelegt zu werden."
|
66 |
"Widgets","Widgets"
|
67 |
-
"Wrong wigdet instance specified.","Falsche Widget-Instanz
|
68 |
"items selected","Artikel ausgewählt"
|
69 |
"of %s pages","von %s Seiten"
|
70 |
"per page","pro Seite"
|
6 |
"All","Alle"
|
7 |
"All Pages","Alle Seiten"
|
8 |
"All Product Types","Alle Artikelarten"
|
9 |
+
"Anchor Categories","Ankerkategorien"
|
10 |
"Assign to Store Views","Zuweisen zu StoreViews"
|
11 |
"Big Image","Großes Bild"
|
12 |
"Block Reference","Block Referenz"
|
13 |
"CMS","CMS"
|
14 |
"Categories","Kategorien"
|
15 |
+
"Choose...","Bitte wählen"
|
16 |
+
"Close","Schließen"
|
17 |
+
"Continue","Fortsetzen"
|
18 |
+
"Default Template","Standardvorlage"
|
19 |
+
"Delete","Löschen"
|
20 |
"Design Package/Theme","Design Paket/Theme"
|
21 |
"Export to:","Export nach:"
|
22 |
"Frontend Properties","Frontend Eigenschaften"
|
28 |
"New Instance","Neue Instanz"
|
29 |
"New Widget Instance","Neue Widget Instanz"
|
30 |
"Next page","Nächste Seite"
|
31 |
+
"Non-Anchor Categories","Keine Anker-Kategorien"
|
32 |
"Not Selected","Nicht ausgewählt"
|
33 |
"Page","Seite"
|
34 |
"Please Select Block Reference First","Bitte zuerst Block Referenz wählen"
|
35 |
+
"Previous page","Letzte Seite"
|
36 |
"Products","Artikel"
|
37 |
"Remove Layout Update","Layout Update entfernen"
|
38 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
44 |
"Specific %s","Bestimmte %s"
|
45 |
"Specified Page","Bestimmte Seite"
|
46 |
"Template","Vorlage"
|
47 |
+
"The information in this tab has been changed.","Die Information in diesem Tab wurde geändert."
|
48 |
+
"The widget instance has been deleted.","Die Widget Instanz wurde gelöscht."
|
49 |
"The widget instance has been saved.","Die Widget Instanz wurde gespeichert."
|
50 |
"This tab contains invalid data. Please solve the problem before saving.","Dieses Tab enthält ungültige Daten. Bitte beheben Sie dieses Problem bevor Sie speichern."
|
51 |
+
"Thumbnail","Miniaturbild"
|
52 |
"Total %d records found","Insgesamt %d Einträge gefunden"
|
53 |
"Type","Art"
|
54 |
"Unselect All","Alle abwählen"
|
55 |
"Unselect Visible","Sichtbare abwählen"
|
56 |
"View","Ansicht"
|
57 |
"Widget","Widget"
|
58 |
+
"Widget ""%s""","Widget ""%s"""
|
59 |
"Widget ID","Widget ID"
|
60 |
"Widget Instance","Widget Instanz"
|
61 |
"Widget Instance Title","Widget Instanz Titel"
|
62 |
"Widget Options","Widget Optionen"
|
63 |
"Widget Type","Widget Art"
|
64 |
+
"Widget Type is not specified","Widget Typ ist nicht angegeben"
|
65 |
+
"Widget instance is not full complete to create.","Widget Instanz ist nicht komplett, um angelegt zu werden."
|
66 |
"Widgets","Widgets"
|
67 |
+
"Wrong wigdet instance specified.","Falsche Widget-Instanz angegeben."
|
68 |
"items selected","Artikel ausgewählt"
|
69 |
"of %s pages","von %s Seiten"
|
70 |
"per page","pro Seite"
|
app/locale/de_DE/Mage_Wishlist.csv
CHANGED
@@ -1,36 +1,37 @@
|
|
1 |
-
"%1$s has been added to your wishlist. Click <a href="%2$s">here</a> to continue shopping","%1$s wurde erfolgreich zu Ihrem Wunschzettel hinzugefügt. Klicken Sie <a href="%2$s">hier</a
|
2 |
"%1$s has been updated in your wishlist.","%1$s wurde aktualisiert in Ihrem Wunschzettel."
|
3 |
"%d product(s) have been added to shopping cart: %s.","%d Artikel wurden dem Warenkorb hinzugefügt: %s."
|
4 |
-
"%s for "%s".","%s für "%s"
|
5 |
"%s's Wishlist","Wunschzettel von %s"
|
6 |
"* Required Fields","* Pflichtfelder"
|
7 |
"Add All to Cart","Alles in den Warenkorb"
|
8 |
"Add to Cart","In den Warenkorb"
|
9 |
"Add to Compare","Auf die Vergleichsliste"
|
10 |
"Add to Wishlist","Auf den Wunschzettel"
|
11 |
-
"Added From","
|
12 |
"Added On","Hinzugefügt am"
|
13 |
-
"An error occurred while adding item to wishlist.","Ein Fehler ist aufgetreten beim
|
14 |
-
"An error occurred while adding item to wishlist: %s","Ein Fehler ist aufgetreten beim
|
15 |
-
"An error occurred while deleting the item from wishlist.","Ein Fehler ist aufgetreten beim
|
16 |
-
"An error occurred while deleting the item from wishlist: %s","Ein Fehler ist aufgetreten beim
|
17 |
-
"An error occurred while updating wishlist.","
|
18 |
"Are you sure you want to remove this product from your wishlist?","Sind Sie sicher, dass Sie diesen Artikels von Ihrem Wunschzettel entfernen wollen?"
|
19 |
"Are you sure you would like to remove this item from the wishlist?","Sind Sie sicher, dass Sie diesen Artikel von Ihrem Wunschzettel entfernen wollen?"
|
20 |
"Back","Zurück"
|
21 |
"Can\'t delete item from wishlist","Artikel kann nicht vom Wunschzettel gelöscht werden."
|
22 |
"Can\'t save description %s","Beschreibung konnte nicht gespeichert werden %s"
|
23 |
-
"Can\'t update wishlist","
|
24 |
"Cannot add item to shopping cart","Artikel kann nicht zum Warenkorb hinzugefügt werden"
|
25 |
"Cannot add the item to shopping cart.","Artikel kann nicht zum Warenkorb hinzugefügt werden."
|
26 |
"Cannot configure product","Artikel kann nicht konfiguriert werden"
|
27 |
"Cannot create wishlist.","Wunschzettel konnte nicht erstellt werden."
|
28 |
"Cannot load wishlist item","Wunschzettel Artikel kann nicht geladen werden"
|
29 |
"Cannot specify product.","Artikel kann nicht bestimmt werden."
|
30 |
-
"Cannot specify wishlist item.","
|
31 |
-
"Cannot specify wishlist.","
|
32 |
-
"Cannot update wishlist","
|
33 |
"Check this checkbox if you want to add a link to an rss feed to your wishlist.","Aktivieren Sie dieses Kästchen, wenn Sie einen Link zu einem RSS-Feed Ihres Wunschzettels hinzufügen möchten."
|
|
|
34 |
"Comment","Kommentar"
|
35 |
"Comment:","Kommentar:"
|
36 |
"Configure Wishlist Item","Wunschzettel Artikel konfigurieren"
|
@@ -49,7 +50,7 @@
|
|
49 |
"Enabled","Aktiviert"
|
50 |
"General Options","Allgemeine Optionen"
|
51 |
"Go to Wishlist","Zum Wunschzettel"
|
52 |
-
"Helper for wishlist options rendering doesn't implement required interface.","Helper
|
53 |
"Last Added Items","Zuletzt hinzugefügte Artikel"
|
54 |
"Message","Nachricht"
|
55 |
"My Wishlist","Mein Wunschzettel"
|
@@ -63,7 +64,7 @@
|
|
63 |
"Please input a valid email address.","Bitte geben Sie eine gültige E-Mail-Adresse ein."
|
64 |
"Please, enter your comments...","Bitte geben Sie Ihre Kommentare ein..."
|
65 |
"Product","Artikel"
|
66 |
-
"Product(s) %s have required options. Each of them can be added to cart separately only.","Artikel %s hat
|
67 |
"RSS Feed","RSS-Feed"
|
68 |
"RSS link to %s's wishlist","RSS-Link zu Wunschzettel von %s"
|
69 |
"Remove Item","Artikel entfernen"
|
@@ -79,11 +80,10 @@
|
|
79 |
"User description","Benutzerbeschreibung"
|
80 |
"View Details","Details ansehen"
|
81 |
"View Product","Artikel ansehen"
|
|
|
82 |
"Wishlist","Wunschzettel"
|
83 |
"Wishlist Section","Wunschzettel"
|
84 |
"Wishlist Sharing","Wunschzettel verteilen"
|
85 |
"Wishlist is empty now.","Der Wunschzettel ist nun leer."
|
86 |
"You have no items in your wishlist.","Sie haben keine Artikel auf Ihrem Wunschzettel."
|
87 |
"Your Wishlist has been shared.","Ihr Wunschzettel wurde erfolgreich verteilt."
|
88 |
-
"Cannot create wishlist","Konnte Wunschzettel nicht anlegen"
|
89 |
-
"Product(s) %s grouped. Each of them can be added to cart separately only.","Artikel %s gruppiert. Jeder Einzelartikel kann nur einzeln dem Warenkorb hinzugefügt werden."
|
1 |
+
"%1$s has been added to your wishlist. Click <a href=""%2$s"">here</a> to continue shopping","%1$s wurde erfolgreich zu Ihrem Wunschzettel hinzugefügt. Klicken Sie <a href=""%2$s"">hier</a>"
|
2 |
"%1$s has been updated in your wishlist.","%1$s wurde aktualisiert in Ihrem Wunschzettel."
|
3 |
"%d product(s) have been added to shopping cart: %s.","%d Artikel wurden dem Warenkorb hinzugefügt: %s."
|
4 |
+
"%s for ""%s"".","%s für ""%s"""
|
5 |
"%s's Wishlist","Wunschzettel von %s"
|
6 |
"* Required Fields","* Pflichtfelder"
|
7 |
"Add All to Cart","Alles in den Warenkorb"
|
8 |
"Add to Cart","In den Warenkorb"
|
9 |
"Add to Compare","Auf die Vergleichsliste"
|
10 |
"Add to Wishlist","Auf den Wunschzettel"
|
11 |
+
"Added From","Hinzugefügt über"
|
12 |
"Added On","Hinzugefügt am"
|
13 |
+
"An error occurred while adding item to wishlist.","Ein Fehler ist aufgetreten beim Hinzufügen zur Wunschzettel."
|
14 |
+
"An error occurred while adding item to wishlist: %s","Ein Fehler ist aufgetreten beim Hinzufügen zur Wunschzettel: %s"
|
15 |
+
"An error occurred while deleting the item from wishlist.","Ein Fehler ist aufgetreten beim Löschen von der Wunschzettel."
|
16 |
+
"An error occurred while deleting the item from wishlist: %s","Ein Fehler ist aufgetreten beim Löschen von der Wunschzettel: %s"
|
17 |
+
"An error occurred while updating wishlist.","Ein Fehler ist bei der Aktualisierung des Wunschzettels aufgetreten."
|
18 |
"Are you sure you want to remove this product from your wishlist?","Sind Sie sicher, dass Sie diesen Artikels von Ihrem Wunschzettel entfernen wollen?"
|
19 |
"Are you sure you would like to remove this item from the wishlist?","Sind Sie sicher, dass Sie diesen Artikel von Ihrem Wunschzettel entfernen wollen?"
|
20 |
"Back","Zurück"
|
21 |
"Can\'t delete item from wishlist","Artikel kann nicht vom Wunschzettel gelöscht werden."
|
22 |
"Can\'t save description %s","Beschreibung konnte nicht gespeichert werden %s"
|
23 |
+
"Can\'t update wishlist","Wunschzettel konnte nicht aktualisiert werden"
|
24 |
"Cannot add item to shopping cart","Artikel kann nicht zum Warenkorb hinzugefügt werden"
|
25 |
"Cannot add the item to shopping cart.","Artikel kann nicht zum Warenkorb hinzugefügt werden."
|
26 |
"Cannot configure product","Artikel kann nicht konfiguriert werden"
|
27 |
"Cannot create wishlist.","Wunschzettel konnte nicht erstellt werden."
|
28 |
"Cannot load wishlist item","Wunschzettel Artikel kann nicht geladen werden"
|
29 |
"Cannot specify product.","Artikel kann nicht bestimmt werden."
|
30 |
+
"Cannot specify wishlist item.","Wunschzettel-Artikel kann nicht bestimmt werden."
|
31 |
+
"Cannot specify wishlist.","Wunschzettel kann nicht bestimmt werden."
|
32 |
+
"Cannot update wishlist","Wunschzettel kann nicht aktualisiert werden"
|
33 |
"Check this checkbox if you want to add a link to an rss feed to your wishlist.","Aktivieren Sie dieses Kästchen, wenn Sie einen Link zu einem RSS-Feed Ihres Wunschzettels hinzufügen möchten."
|
34 |
+
"Click for price","Klicken für Preis"
|
35 |
"Comment","Kommentar"
|
36 |
"Comment:","Kommentar:"
|
37 |
"Configure Wishlist Item","Wunschzettel Artikel konfigurieren"
|
50 |
"Enabled","Aktiviert"
|
51 |
"General Options","Allgemeine Optionen"
|
52 |
"Go to Wishlist","Zum Wunschzettel"
|
53 |
+
"Helper for wishlist options rendering doesn't implement required interface.","Helper für Wunschzettel Optionen Rendering implementiert das benötigte Interface nicht."
|
54 |
"Last Added Items","Zuletzt hinzugefügte Artikel"
|
55 |
"Message","Nachricht"
|
56 |
"My Wishlist","Mein Wunschzettel"
|
64 |
"Please input a valid email address.","Bitte geben Sie eine gültige E-Mail-Adresse ein."
|
65 |
"Please, enter your comments...","Bitte geben Sie Ihre Kommentare ein..."
|
66 |
"Product","Artikel"
|
67 |
+
"Product(s) %s have required options. Each of them can be added to cart separately only.","Artikel %s hat Pflicht-Optionen. Jede Option kann nur einzeln zum Warenkorb hinzugefügt werden."
|
68 |
"RSS Feed","RSS-Feed"
|
69 |
"RSS link to %s's wishlist","RSS-Link zu Wunschzettel von %s"
|
70 |
"Remove Item","Artikel entfernen"
|
80 |
"User description","Benutzerbeschreibung"
|
81 |
"View Details","Details ansehen"
|
82 |
"View Product","Artikel ansehen"
|
83 |
+
"What's this?","Was ist das?"
|
84 |
"Wishlist","Wunschzettel"
|
85 |
"Wishlist Section","Wunschzettel"
|
86 |
"Wishlist Sharing","Wunschzettel verteilen"
|
87 |
"Wishlist is empty now.","Der Wunschzettel ist nun leer."
|
88 |
"You have no items in your wishlist.","Sie haben keine Artikel auf Ihrem Wunschzettel."
|
89 |
"Your Wishlist has been shared.","Ihr Wunschzettel wurde erfolgreich verteilt."
|
|
|
|
app/locale/de_DE/Mage_XmlConnect.csv
CHANGED
@@ -1,12 +1,18 @@
|
|
1 |
-
" "," "
|
2 |
-
"
|
3 |
-
""Title" is more than %d characters long",""Titel" ist länger als %d
|
4 |
"%1$s has been added to your wishlist.","%1$s wurde zum Wunschzettel hinzugefügt."
|
5 |
"%1$s incl tax.","%1$s inkl. Steuern."
|
|
|
|
|
|
|
6 |
"%s has been added to your cart.","%s wurde zum Warenkorb hinzugefügt."
|
|
|
|
|
7 |
"10:40 AM","10:40 AM"
|
8 |
"80px x 80px","80px x 80px"
|
9 |
"80x80 px","80x80 px"
|
|
|
10 |
"A Catalog Only App will not support functions such as add to cart, add to wishlist, or login.","Eine App, die ausschließlich den Katalog präsentiert enthält keine Funktionen wie Warenkorb, Wunschzettel oder Login."
|
11 |
"A new password has been sent.","Ein neues Passwort wurde gesendet."
|
12 |
"Account","Account"
|
@@ -15,15 +21,14 @@
|
|
15 |
"Action","Altion"
|
16 |
"Activate","Aktivieren"
|
17 |
"Activate PayPal Checkout","PayPal Checkout aktivieren"
|
18 |
-
"Activation Key","
|
19 |
"Add App","App hinzufügen"
|
20 |
-
"Add More Templates","Mehr Vorlagen hinzufügen"
|
21 |
"Add New Template","Neue Vorlage hinzufügen"
|
22 |
"Add Page","Seite hinzufügen"
|
23 |
"Add to Cart","In den Warenkorb"
|
24 |
"Add to Wishlist","Auf den Wunschzettel"
|
25 |
"Additional Address","Zusätzliche Adressen"
|
26 |
-
"Additional
|
27 |
"Address","Adresse"
|
28 |
"Address 2","Adresse 2. Zeile"
|
29 |
"Address data not specified.","Adressdaten nicht eingegeben."
|
@@ -32,12 +37,14 @@
|
|
32 |
"Address has been saved.","Adresse wurde gespeichert."
|
33 |
"Administrative contact for this app and for app submission issues.","Ansprechpartner für diese App."
|
34 |
"Advanced Settings","Erweitert"
|
35 |
-
"After submitting the App, please contact <a href="mailto:%1$s">%1$s</a> to receive the Application Key, Application Secret and Application Master Secret
|
36 |
"AirMail Message Queue","AirMail Nachrichten Warteschlange"
|
37 |
"AirMail Messages Queue","AirMail Nachrichten Warteschlange"
|
38 |
"AirMail Template Preview","AirMail Vorlagenvorschau"
|
39 |
"AirMail message","AirMail Nachricht"
|
40 |
"AirMail templates","AirMail Vorlagen"
|
|
|
|
|
41 |
"An account with this email address already exists.","Mit dieser Adresse besteht bereits ein Account."
|
42 |
"An error occurred while adding item to wishlist.","Es ist ein Fehler beim Hinzufügen zum Wunschzettel aufgetreten."
|
43 |
"An error occurred while deleting the address.","Es ist ein Fehler beim Löschen der Adresse aufgetreten."
|
@@ -49,11 +56,15 @@
|
|
49 |
"Analytics","Analytics"
|
50 |
"Android","Android"
|
51 |
"App Background","App Hintergrund"
|
52 |
-
"App Background (landscape mode)","App Hintergrund (Quer)"
|
53 |
-
"App Background (portrait mode)","App Hintergrund (Hoch)"
|
|
|
|
|
|
|
54 |
"App Code","App Code"
|
55 |
"App Information","App Information"
|
56 |
"App Name","App Name"
|
|
|
57 |
"App Submission History","App Übertragungsprotokoll"
|
58 |
"App Title","App Titel"
|
59 |
"App code required.","App Code notwendig."
|
@@ -63,50 +74,60 @@
|
|
63 |
"App has been submitted.","App wurde übertragen."
|
64 |
"App model not loaded.","App-Model nicht geladen."
|
65 |
"App with specified code does not exist.","Unter diesem App Code App wurde keine App gefunden."
|
66 |
-
"Appears in the info section of your app (example:
|
67 |
"Application","Anwendung"
|
68 |
-
"Application Key","
|
69 |
-
"Application Master Secret","
|
70 |
-
"Application Name","
|
71 |
-
"Application Secret","
|
72 |
-
"
|
73 |
-
"Apply will automatically resize this image for display in the App Store and on users’ devices. A gloss (i.e. gradient) will also be applied, so you do not need to apply a gradient. Image must be at least 512x512","Durch Klick auf den Anwenden Button wird die Grafikgröße automatisch für den App Store und die Endgeräte angepasst. Ein Glossy-Effekt wird ebenfalls automatisch hinzugefügt, sodass Sie diesen nicht in Ihre Grafik einbauen müssen. Die Grafik muss mindestens 512x512 Pixel groß sein."
|
74 |
"Are you sure you whant to cancel a message?","Sind Sie sicher, dass Sie die Nachricht stornieren möchten?"
|
75 |
"Are you sure you whant to delete a message?","Sind Sie sicher, dass Sie die Nachricht löschen möchten?"
|
76 |
"Are you sure you what to cancel selected records?","Sind Sie sicher, dass Sie die gewählten Einträge stornieren möchten?"
|
77 |
"Are you sure you what to delete selected records?","Sind Sie sicher, dass Sie die gewählten Einträge löschen möchten?"
|
|
|
78 |
"Authentication complete.","Bestätigung komplett."
|
79 |
"Back","Zurück"
|
80 |
"Back to App Edit","Zurück zu App bearbeiten"
|
81 |
"Background Color","Hintergrundfarbe"
|
82 |
"Banner on Home Screen","Banner Home-Bildschirm"
|
|
|
|
|
|
|
|
|
|
|
83 |
"Billing address has been set.","Rechnungsanschrift eingerichtet."
|
84 |
"Buy %1$s for %2$s","Kaufen Sie %1$s zum Preis von %2$s"
|
85 |
"Buy %1$s for %2$s (%3$s incl. tax) each","Kaufen Sie %1$s zum Preis von je %2$s (%3$s inkl. Steuern)"
|
86 |
"Buy %1$s for %2$s each","Kaufen Sie %1$s zum Preis von je %2$s"
|
87 |
-
"
|
88 |
-
"
|
89 |
-
"
|
90 |
-
"Can\'t
|
91 |
-
"Can\'t
|
92 |
-
"Can\'t
|
93 |
-
"Can\'t
|
94 |
-
"Can\'t
|
95 |
-
"Can\'t
|
96 |
-
"Can\'t
|
97 |
-
"Can\'t
|
98 |
-
"Can\'t
|
99 |
-
"Can\'t
|
100 |
-
"Can\'t
|
101 |
-
"Can\'t
|
102 |
-
"Can\'t
|
103 |
-
"Can\'t
|
104 |
-
"Can\t
|
|
|
|
|
|
|
|
|
|
|
105 |
"Cancel","Abbrechen"
|
106 |
"Canceled","Storniert"
|
107 |
"Cancelled","Storniert"
|
108 |
-
"Cannot load theme "%s".","Vorlage "%s" konnte nicht geladen werden."
|
109 |
-
"Cannot save theme "%s". Incorrect data received","Vorlage "%s" konnte nicht gespeichert werden. Ungültige Daten empfangen"
|
110 |
"Card Verification Number","Kartenprüfennummer"
|
111 |
"Card verification number is wrong","Kartenprüfnummer ist nicht korrekt."
|
112 |
"Carrier","Dienstleister"
|
@@ -114,13 +135,13 @@
|
|
114 |
"Cart has been updated.","Warenkorb wurde aktualisiert."
|
115 |
"Cart has some errors.","Warenkorb enthält Fehler."
|
116 |
"Cart is empty.","Warenkorb ist leer."
|
117 |
-
"Cart line items are not eligible for exporting to PayPal API","Artikel im Warenkorb sind nicht für einen Export über die PayPal-Schnittstelle geeignet"
|
118 |
"Catalog Only App?","Reine Katalog-Präsentation?"
|
119 |
"Category Button Color","Kategorie-Button Farbe"
|
120 |
"Category Item Background Color","Kategorie Element Hintergrundfarbe"
|
121 |
"Chairs","Stühle"
|
122 |
"Change Orientation","Ausrichtung ändern"
|
123 |
"Change Password","Passwort ändern"
|
|
|
124 |
"Checkout has been initialized.","Bezahlvorgang wurde eingeleitet."
|
125 |
"City","Stadt"
|
126 |
"Color Themes","Farbvorlagen"
|
@@ -133,21 +154,26 @@
|
|
133 |
"Contact Information","Kontaktinformationen"
|
134 |
"Content","Inhalt"
|
135 |
"Copyright","Urheberrecht"
|
136 |
-
"Copyright Page Logo","Seitenlogo"
|
137 |
-
"Copyright
|
|
|
138 |
"Country","Land"
|
|
|
139 |
"Coupon code %s is not valid.","Rabattcode %s ist ungültig."
|
140 |
"Coupon code %s was applied.","Rabattcode %s wurde angewandt."
|
141 |
"Coupon code is empty.","Rabattcode ist leer."
|
142 |
"Coupon code was canceled.","Rabattcode wurde storniert."
|
143 |
"Creating a Template is allowed only for applications which have device type iPhone.","Das Erstellen einer Vorlage ist nur für iPhone-Apps möglich."
|
|
|
|
|
144 |
"Credit Card Number","Kreditkartennumer"
|
145 |
"Credit Card Type","Kreditkartentyp"
|
146 |
"Credit card number does not match credit card type.","Kreditkartennummer entspricht nicht Kreditkartentyp."
|
147 |
"Current Password","Aktuelles Passwort"
|
|
|
148 |
"Custom App Icon","Eigenes App-Icon"
|
|
|
149 |
"Custom Colors","Eigene Farben"
|
150 |
-
"Custom application icon","Eigenes App-Icon"
|
151 |
"Customer authentication problem.","Kundenbestätigungsproblem."
|
152 |
"Customer email not specified.","Kunden-eMailadresse nicht angegeben."
|
153 |
"Customer logout problem.","Problem beim Ausloggen des Kunden."
|
@@ -155,70 +181,96 @@
|
|
155 |
"Date Created","Erstellt am"
|
156 |
"Date Submitted","Übermittelt am"
|
157 |
"Date Updated","Aktualisiert am"
|
|
|
158 |
"Default Billing Address","Standard Rechnungsanschrift"
|
159 |
"Default Shipping Address","Standard Versandanschrift"
|
160 |
"Default Theme","Standardvorlage"
|
161 |
"Delete","Löschen"
|
|
|
162 |
"Deleted","Gelöscht"
|
163 |
"Description","Beschreibung"
|
164 |
-
"Description that appears in
|
|
|
|
|
165 |
"Design","Design"
|
166 |
"Device","Gerät"
|
167 |
"Device Information","Geräteinformation"
|
168 |
"Device Type","Gerät"
|
169 |
-
"Device doesn\'t recognized. Unable to load a template.","
|
170 |
-
"Device doesn\'t recognized: "%s". Unable to load a helper.","
|
|
|
171 |
"Edit","Bearbeiten"
|
172 |
"Edit AirMail Message","AirMail Nachricht bearbeiten"
|
173 |
"Edit AirMail Message Queue #%s","AirMail Nachrichtenwarteschlange #%s bearbeiten"
|
174 |
-
"Edit App "%s"","App "%s" bearbeiten"
|
175 |
"Edit Filter","Filter bearbeiten"
|
176 |
-
"Edit Template "%s"","Vorlage "%s" bearbeiten"
|
177 |
"Email","eMail"
|
178 |
"Email Address","eMail-Adresse"
|
179 |
"Enable AirMail Message Push notification","AirMail Nachricht - Push Benachrichtigung aktivieren"
|
|
|
180 |
"Enable Flurry Analytics","Flurry Analytics aktivieren"
|
181 |
"Enable Flurry Analytics for the merchant.","Flurry Analytics für den Händler aktivieren."
|
|
|
182 |
"Enable Standard Checkout","Standard Bezahlvorgang aktivieren"
|
183 |
-
"
|
184 |
-
"Error while
|
185 |
-
"Error while
|
|
|
|
|
186 |
"Error.","Fehler."
|
|
|
187 |
"Expiration Date - Month","Gültig bis - Monat"
|
188 |
"Expiration Date - Year","Gültig bis - Jahr"
|
|
|
189 |
"Extensions","Erweiterungen"
|
190 |
"FILTERS APPLIED","FILTER ANGEWENDET"
|
|
|
|
|
191 |
"Fax","Fax"
|
192 |
-
"File
|
|
|
193 |
"First Name","Vorname"
|
|
|
194 |
"Flurry Analytics","Flurry Analytics"
|
195 |
"Flurry Analytics Site","Flurry Analytics Site"
|
196 |
-
"Flurry Api Code","Flurry API Code"
|
197 |
"Fonts","Schriften"
|
198 |
"Free","Kostenlos"
|
199 |
"Funk Leaf","Funk Leaf"
|
200 |
"General","Allgemein"
|
201 |
-
"Get Activation Key","Fordere Activation Key an"
|
202 |
"Get Content from CMS Page","Inhalt von CMS-Seite verlinken"
|
203 |
"Grand Total (Excl. Tax)","Gesamt (zzgl. Steuern)"
|
204 |
"Grand Total (Incl. Tax)","Gesamt (inkl. Steuern)"
|
205 |
"Guest","Gast"
|
206 |
"Header Background Color","Header Hintergrundfarbe"
|
207 |
"Header Font Color","Header Schriftfarbe"
|
|
|
208 |
"Home","Home"
|
209 |
"Hot Red","Hot Red"
|
|
|
|
|
210 |
"ID","ID"
|
|
|
|
|
|
|
211 |
"Icon that will appear on the user’s phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 57px x 57px at 72 dpi.","Icon, das auf dem Mobiltelefon angezeigt wird, nachdem die App heruntergeladen wurde. Sie müssen keinen Verlauf oder runde Ecken hinzufügen, dies erledigt Apple automatisch. Empfohlene Größe: 57px x 57px bei 72 dpi."
|
212 |
"Icons","Icons"
|
213 |
"If leave this field empty, the message will be sent immediately","Wenn Sie dieses Feld leer lassen, wird die Nachricht sofort verschickt"
|
|
|
214 |
"Image file was not found.","Bild wurde nicht gefunden."
|
|
|
|
|
215 |
"Image that appears on first screen while your app is loading. Required size: 320px x 460px.","Dieses Bild wird beim Ladevorgang Ihrer App angezeigt. Benötigte Größe: 320px x 460px."
|
|
|
|
|
216 |
"Images","Bilder"
|
217 |
"In Queue","In Warteschlange"
|
218 |
"In Stock","Auf Lager"
|
219 |
-
"In
|
220 |
-
"In order to
|
|
|
221 |
"Inactive Tabs","Inaktive Tabs"
|
|
|
222 |
"Invalid XML.","Ungültiges XML."
|
223 |
"Invalid current password.","Ungültiges, aktuelles Passwort."
|
224 |
"Invalid customer data.","Ungültige Kundendaten."
|
@@ -228,23 +280,32 @@
|
|
228 |
"Invalid login or password.","Ungültiger Benutzername oder Passwort."
|
229 |
"Invalid shipping method.","Ungültige Versandart."
|
230 |
"Issue Number","Vorgangsnummer"
|
231 |
-
"It\'s not allowed to delete submitted application.","
|
232 |
"Item has been added to cart.","Artikel wurde zum Warenkorb hinzugefügt."
|
233 |
"Item has been deleted from cart.","Artikel wurde aus dem Warenkorb entfernt."
|
234 |
"Item has been removed from wishlist.","Artikel wurde vom Wunschzettel entfernt."
|
235 |
-
"Items were updated. But can\'t update wishlist.","
|
236 |
-
"Key","
|
237 |
"Keywords","Keywords"
|
238 |
"Label","Bezeichnung"
|
239 |
"Large iTunes Icon","Großes iTunes Icon"
|
240 |
"Large icon that appears in the iTunes App Store. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Required size: 512px x 512px.","Großes Icon im iTunes App Store. Sie müssen keinen Verlauf oder runde Ecken hinzufügen, dies erledigt Apple automatisch. Benötigte Größe: 512px x 512px."
|
241 |
"Last Name","Nachname"
|
|
|
|
|
|
|
242 |
"Loader Splash Screen","Ladebildschirm"
|
|
|
|
|
|
|
|
|
|
|
243 |
"Log In","Anmelden"
|
244 |
"Login and password are required.","Benutzername und Passwort notwendig."
|
245 |
"Logo in Header","Logo im Header"
|
|
|
246 |
"Logout complete.","Logout erfolgreich."
|
247 |
-
"MEP is PayPal
|
248 |
"Mailbox title","Postfachtitel"
|
249 |
"Main Tabs","Haupt-Tabs"
|
250 |
"Make Inactive","Deaktivieren"
|
@@ -259,57 +320,70 @@
|
|
259 |
"Message Templates","Nachrichten Vorlagen"
|
260 |
"Message Title","Nachrichtentitel"
|
261 |
"Message Type","Nachrichtentyp"
|
262 |
-
"Message can
|
263 |
"Message content","Inhalt"
|
264 |
"Message title","Titel"
|
265 |
-
"Messages cannot be sent more than %d times in an hour.","Nachrichten können nicht öfter als %d mal pro Stunde gesendet werden."
|
266 |
"Mobile","Mobile"
|
|
|
267 |
"More","Mehr"
|
268 |
"More Info","Weitere Informationen"
|
269 |
"More Tabs","Weitere Tabs"
|
270 |
"Name on Card","Karteninhaber"
|
271 |
-
"Name that appears beneath your app when users install it to their device. We recommend choosing a name that is 10-12 characters and that your customers will recognize.","Name der unter der App erscheint. Wir empfehlen einen Namen
|
272 |
"New AirMail Message","Neue AirMail Nachricht"
|
273 |
"New AirMail Message Queue","Neue AirMail Nachrichtenwarteschlange"
|
274 |
"New App","Neue App"
|
275 |
"New Password","Neues Passwort"
|
276 |
"New Template","Neue Vorlage"
|
|
|
277 |
"No items were specifed to update.","Keine Artikel zur Aktualisierung angegeben."
|
278 |
"No items were updated.","Keine Artikel aktualisiert."
|
279 |
"No product selected.","Keine Artikel ausgewählt."
|
280 |
-
"No such file "%s".","Datei "%s" nicht gefunden."
|
281 |
"Not Submitted","Nicht übermittelt"
|
282 |
-
"
|
|
|
283 |
"Onepage checkout is disabled.","Einseitiger Bezahlvorgang deaktiviert."
|
|
|
|
|
284 |
"Only free apps are allowed in this version.","In dieser Version sind lediglich kostenfreie Apps erlaubt."
|
|
|
285 |
"Options menu items","Optionen Menüpunkte"
|
|
|
|
|
|
|
286 |
"POST data is not valid.","POST-Daten sind ungültig."
|
287 |
"Pages","Seiten"
|
288 |
"Password","Passwort"
|
289 |
"Password fields cannot be empty.","Passwortfeld darf nicht leer sein."
|
|
|
290 |
"PayPal Mobile Embedded Payment (MEP)","PayPal Mobile Embedded Payment (MEP)"
|
|
|
|
|
291 |
"Payment Method has been set.","Zahlart wurde eingerichtet."
|
292 |
"Payment Methods","Zahlarten"
|
293 |
"Payment method was successfully set.","Zahlart wurde erfolgreich eingerichtet."
|
294 |
-
"
|
295 |
-
"Paypal Merchant Account Username.","Paypal Händleraccount Benutzer."
|
296 |
"Please Select Application","Bitte Anwendung auswählen"
|
297 |
"Please Select Device Type","Bitte Gerät auswählen"
|
298 |
"Please agree to all the terms and conditions before placing the order.","Bitte lesen und akzeptieren Sie alle AGB, bevor Sie Ihre Bestellung aufgeben."
|
299 |
-
"Please enter "App Title".","Bitte geben Sie einen "App Titel" an."
|
300 |
"Please enter issue number or start date for switch/solo card type.","Bitte geben Sie eine Vorgangsnummer oder ein Startdatum switch/solo Karten an."
|
301 |
-
"Please enter the Activation Key.","Bitte geben Sie den
|
302 |
"Please enter the Copyright.","Bitte geben Sie das Urheberrecht an."
|
|
|
303 |
"Please enter the Price.","Bitte geben Sie einen Preis ein."
|
304 |
-
"Please enter the Resubmission Key.","Bitte geben Sie den
|
305 |
"Please enter the Title.","Bitte geben Sie einen Titel ein."
|
306 |
"Please make sure your passwords match.","Bitte stellen Sie sicher, dass die beiden Passworte identisch sind."
|
307 |
"Please select at least one country.","Bitte wählen mindestens ein Land aus."
|
308 |
-
"Please upload an image for "App Background (landscape mode)" field from Design Tab.","Bitte laden Sie ein Bild für "App Hintergrund (Quer)" im Design Tab hoch."
|
309 |
-
"Please upload an image for "App Background (portrait mode)" field from Design Tab.","Bitte laden Sie ein Bild für "App Hintergrund (Hoch)" im Design Tab hoch."
|
310 |
-
"Please upload an image for "App Background" field from Design Tab.","Bitte laden Sie ein Bild für "App Hintergrund" im Design Tab hoch."
|
311 |
-
"Please upload an image for "Banner on Home Screen" field from Design Tab.","Bitte laden Sie ein Bild für "Banner Home-
|
312 |
-
"Please upload an image for "
|
|
|
|
|
313 |
"Preset Theme","Farbvorlagen"
|
314 |
"Preview","Vorschau"
|
315 |
"Price","Preis"
|
@@ -325,6 +399,7 @@
|
|
325 |
"Product(s) currently out of stock.","Artikel ist derzeit nicht auf Lager."
|
326 |
"Purchase Order Number","Auftragsnummer"
|
327 |
"Push Notification","Push Benachrichtigung"
|
|
|
328 |
"Push Title","Push Titel"
|
329 |
"Push message","Push Nachricht"
|
330 |
"Push title","Push Titel"
|
@@ -332,25 +407,26 @@
|
|
332 |
"Queue Message","Warteschlangennachricht"
|
333 |
"Queue does not exist.","Warteschlange existiert nicht."
|
334 |
"Quote instance is required.","Angebot-Instanz notwendig."
|
|
|
|
|
335 |
"Recommended size 1024px x 704px. Note: Image size affects the performance of your app.","Empfohlene Größe 1024px x 704px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
336 |
"Recommended size 320px x 230px. Note: Image size affects the performance of your app. Keep your image size below 50 KB for optimal performance.","Empfohlene Größe 320px x 230px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 50 KB for optimal performance."
|
337 |
"Recommended size 320px x 258px. Note: Image size affects the performance of your app. Keep your image size below 50 KB for optimal performance.","Empfohlene Größe 320px x 258px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 50 KB for optimal performance."
|
338 |
"Recommended size 320px x 367px. Note: Image size affects the performance of your app. Keep your image size below 75 KB for optimal performance.","Empfohlene Größe 320px x 367px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 75 KB for optimal performance."
|
339 |
-
"Recommended size 320px x 410px. Note: Image size affects the performance of your app. Keep your image size below 75 KB for optimal performance.","Empfohlene Größe 320px x 410px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 75 KB for optimal performance."
|
340 |
"Recommended size 35px x 35px.","Empfohlene Größe 35px x 35px."
|
341 |
-
"Recommended size 480px x 250px. Note: Image size affects the performance of your app. Keep your image size below 75 KB for optimal performance.","Empfohlene Größe 480px x 250px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 75 KB for optimal performance."
|
342 |
"Recommended size 768px x 294px. Note: Image size affects the performance of your app.","Empfohlene Größe 768px x 294px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
343 |
"Recommended size 768px x 960px. Note: Image size affects the performance of your app.","Empfohlene Größe 768px x 960px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
|
|
344 |
"Regular and confirmation passwords must be equal","Standard- und Bestätigungspasswort müssen übereinstimmen"
|
345 |
"Related Product Background Color","Verknüpftes Produkt Hintergrundfarbe"
|
346 |
-
"Reset","
|
347 |
-
"
|
348 |
-
"Resubmission Key","Resubmission Key"
|
349 |
-
"Resubmit","Erneut Übermitteln"
|
350 |
"Resubmit App","App erneut übermitteln"
|
351 |
-
"
|
|
|
352 |
"SORT BY:","Sortieren nach:"
|
353 |
"Save","Speichern"
|
|
|
354 |
"Save Theme","Vorlage speichern"
|
355 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
356 |
"Save and Submit App","Speichern und App übermitteln"
|
@@ -360,17 +436,21 @@
|
|
360 |
"Search","Suche"
|
361 |
"Secondary Color","Zusatzfarbe"
|
362 |
"Secondary Font Color","Zusatzschriftfarbe"
|
363 |
-
"Select
|
364 |
"Selected product is unavailable.","Ausgewählter Artikel ist nicht verfügbar."
|
|
|
365 |
"Settings","Einstellungen"
|
|
|
366 |
"Shipping address has been set.","Versandadresse wurde gespeichert."
|
367 |
"Shipping method has been set.","Versandart wurde gespeichert."
|
|
|
368 |
"Shop","Shop"
|
369 |
"Shopping cart is empty.","Warenkorb ist leer."
|
370 |
"Sky Blue","Sky Blue"
|
|
|
371 |
"Some emails were not sent.","Einige eMails konnten nicht gesendet werden."
|
372 |
"Sorry, no payment options are available for this order at this time.","Für diese Bestellung stehen aktuell keine Zahlarten zur Verfügung."
|
373 |
-
"
|
374 |
"Specified address does not exist.","Die angegebene Adresse existiert nicht."
|
375 |
"Specified invalid app code.","Ungültiger App Code angegeben."
|
376 |
"Specified invalid data.","Ungültige Daten angegeben."
|
@@ -384,23 +464,23 @@
|
|
384 |
"Status","Status"
|
385 |
"Store View","StoreView"
|
386 |
"Store logo that is displayed on copyright page of app. Preferred size: 100px x 100px.","Store Logo, das auf der Urheber-Seite angezeigt wird. Empfohlene Größe: 100px x 100px."
|
387 |
-
"Store logo that
|
388 |
"Street Address","Straße"
|
389 |
"Street Address 2","Straße 2. Zeile"
|
390 |
"Submission","Übermittlung"
|
391 |
"Submission Fields","Felder für Übermittlung"
|
392 |
"Submission History","Übertragungsprotokoll"
|
393 |
-
"Submit","Senden"
|
394 |
"Submit App","App übermitteln"
|
395 |
-
"Submit App "%s"","App "%s" übermitteln"
|
396 |
"Submit App failure. %s","Fehler beim Übermitteln der App. %s"
|
397 |
-
"Submit App failure. Invalid activation key provided","Fehler beim Übermitteln der App. Ungültiger
|
398 |
-
"Submit Application","App übermitteln"
|
399 |
"Submitted","Übermittelt"
|
400 |
"Subtotal (Excl. Tax)","Zwischensumme (zzg. Steuern)"
|
401 |
"Subtotal (Incl. Tax)","Zwischensumme (inkl. Steuern)"
|
|
|
402 |
"T-Shirts","T-Shirts"
|
403 |
"Tabs","Tabs"
|
|
|
404 |
"Telephone","Telefon"
|
405 |
"Tell a Friend","Einem Freund weiterempfehlen"
|
406 |
"Tell a Friend is disabled.","Weiterempfehlung an Freunde ist deaktivert."
|
@@ -414,19 +494,24 @@
|
|
414 |
"Template has been deleted.","Vorlage wurde gelöscht."
|
415 |
"Thank you for registering!","Vielen Dank für Ihre Registrierung!"
|
416 |
"Thank you for your purchase! ","Vielen Dank für Ihre Bestellung! "
|
417 |
-
"The Mailbox title will be shown in the More Info tab. To understand more about the title, please <a target="_blank" href="http://www.magentocommerce.com/img/product/mobile/helpers/mail_box_title.png">click here</a>",
|
418 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
419 |
"Theme name is not set.","Vorlagenname wurde nicht gespeichert."
|
420 |
"There were some problems with the data.","Mit diesen Daten gab es leider Probleme."
|
421 |
"This email address was not found in our records.","Diese eMailadresse wurde in Ihren Einträgen leider nicht gefunden."
|
422 |
-
"This icon will be used for users’ devices in case if different than AppSore icon needed. ","Diese Icon wird dann für Ihre App benutzt, wenn ein anderes als das AppStore Icon verwendet werden muss. "
|
423 |
-
"This is the description that will appear in the iTunes marketplace. ","Diese Beschreibung wird im iTunes Store erscheinen. "
|
424 |
-
"This is the name that will appear beneath your app when users install it to their device. . We recommend choosing a name that is 10-12 characters in length, and that your customers will recognize.","Dies ist der gleiche Name, der unter Ihrer App erscheint, nachdem Benutzer die App installiert haben. Wir empfehlen einen Namen mit 10-12 Zeichen, den Ihre Kunden schnell erkennen können."
|
425 |
-
"This will appear in the info section of your App (example: Copyright 2010 – Your Company, Inc.)","Dieser Text wird im Infobereich Ihrer App erscheinen (z. B.: Copyright 2011 – Ihr Firmenname)"
|
426 |
"Title","Titel"
|
427 |
"Title bar","Titelzeile"
|
428 |
"To activate PayPal MEP payment method activate Express checkout first. ","Um PayPal MEP Zahlungen zu aktivieren, aktivieren Sie bitte zuerst den Expressbezahlvorgang. "
|
429 |
"Total incl. Tax: %1$s","Gesamt inkl. Steuern: %1$s"
|
|
|
|
|
|
|
430 |
"Unable to cancel queue.","Warteschlange konnte nicht storniert werden."
|
431 |
"Unable to collect cart totals.","Fehler beim Berechnen der Zwischen- und Gesamtsummen."
|
432 |
"Unable to delete queue.","Warteschlange konnte nicht gelöscht werden."
|
@@ -437,7 +522,9 @@
|
|
437 |
"Unable to load application form.","App Formular konnte nicht geladen werden."
|
438 |
"Unable to load product info.","Artikelinformationen konnten nicht geladen werden."
|
439 |
"Unable to place the order.","Bestellung konnte nicht ausgelöst werden."
|
|
|
440 |
"Unable to process preview.","Vorschau konnte nicht vorbereitet werden."
|
|
|
441 |
"Unable to save app.","App konnte nicht gespeichert werden."
|
442 |
"Unable to save message.","Nachricht konnte nicht gespeichert werden."
|
443 |
"Unable to save shipping address.","Versandadresse konnte nicht gespeichert werden."
|
@@ -447,66 +534,31 @@
|
|
447 |
"Undefined","Unbekannt"
|
448 |
"Unknown Error","Unbekannter Fehler"
|
449 |
"Unknown Error.","Unbekannter Fehler."
|
|
|
|
|
450 |
"Update Preview","Vorschau aktualisieren"
|
|
|
451 |
"Urban Airship Push Notification","Urban Airship Push Benachrichtigung"
|
452 |
"Use as my default billing address","Als Standard Rechnungsadresse verwenden"
|
453 |
"Use as my default shipping address","Als Standard Versandadresse verwenden"
|
454 |
-
"Username","Benutzername"
|
455 |
-
"Users will see this image as the first screen while your application is loading. It is a 320x460 image.","Benutzer sehen diese Bild, wenn Ihre App geladen wird. Empfohlene Größe: 320px x 460px."
|
456 |
"View Details","Details"
|
457 |
"View Gallery","Galerie"
|
458 |
"Website is offline.","Website ist offline."
|
459 |
"Wishlist has been cleared.","Wunschzettel wurde geleert."
|
460 |
"Wishlist has been updated.","Wunschzettel wurde aktualisiert."
|
461 |
"Wishlist has been updated. But there are accrued some errors while updating some items.","Wunschzettel wurde geleert, aber beim Aktualisieren einiger Artikel sind Fehler aufgetreten."
|
462 |
-
"Wrong
|
463 |
-
"Wrong Ipad background image orientation has been specified: "%s".","Falsche iPad Hintergrundbild Ausrichtung wurde angegeben: "%s"."
|
464 |
"Wrong device type.","Falsches Gerät."
|
465 |
"Wrong email format","Falsches eMailformat"
|
466 |
"Wrong theme format.","Falsches Vorlagenformat."
|
467 |
"You are already logged in.","Sie sind bereits angemeldet."
|
468 |
-
"You can set any additional countries added by Apple Store.","Sie können beliebe im App Store verfügbare Länder hinzufügen."
|
469 |
-
"You can set any price you want for your app, or you can give it away for free. Most apps range from $0.99 - $4.99","Sie können für Ihre App einen beliebigen Preis festlegen oder Sie kostenlos anbieten. Die meisten Apps werden für 0,99 - 4,99 Euro angeboten."
|
470 |
"You can watch statistics here.","Statistiken können Sie hier ansehen."
|
471 |
"You will receive an order confirmation email with details of your order and a link to track its progress.","Sie erhalten eine Bestellbestätigung per eMail mit weiteren Informationen und einem Link, um die Bestellung weiterverfolgen zu können."
|
472 |
"Your order # is: %s. ","Ihre Bestellnummer lautet: %s. "
|
|
|
473 |
"Zip/Postal Code","PLZ"
|
474 |
"and","und"
|
475 |
"each","je"
|
476 |
"iPad","iPad"
|
477 |
"iPhone","iPhone"
|
478 |
"save","speichern"
|
479 |
-
"d" ""," "
|
480 |
-
"After submitting the App, please contact <a href="mailto:%1$s">%1$s</a> to receive the Application Key, Application Secret and Application Master Secret.<br />Upon receiving these credentials, please fill in the corresponding fields.<br />In addition, please accept Urban Airship's Terms of Service: <a href="%2$s" target="_blank">click here</a>.","Nach Übertragen der App kontaktieren Sie bitte <a href="mailto:%1$s">%1$s</a> um einen Application Key, Secret und Master Secret zu erhalten.<br />Nach Erhalt dieser Daten, füllen Sie bitte die entsprechender Felder aus.<br />Bitte bestätigen Sie zusätzlich die AGB von Urban Airship: <a href="%2$s" target="_blank">AGB hier öffnen</a>."
|
481 |
-
"Are you sure you want to cancel a message?","Sind Sie sicher, dass Sie die Nachricht stornieren möchten?"
|
482 |
-
"Are you sure you want to delete a message?","Sind Sie sicher, dass Sie die Nachricht löschen möchten?"
|
483 |
-
"Are you sure you want to cancel selected records?","Sind Sie sicher, dass Sie die gewählten Einträge stornieren möchten?"
|
484 |
-
"Are you sure you want to delete selected records?","Sind Sie sicher, dass Sie die gewählten Einträge löschen möchten?"
|
485 |
-
"Can't add item to shopping cart.","Artikel konnte nicht zum Warenkorb hinzugefügt werden."
|
486 |
-
"Can't apply the coupon code.","Rabatt konnte nicht eingelöst werden."
|
487 |
-
"Can't create wishlist.","Wunschzettel konnte nicht erstellt werden."
|
488 |
-
"Can't load XML.","XML konnte nicht geladen werden."
|
489 |
-
"Can't load application with code "%s"","Konnte App mit dem Code "%s" nicht laden"
|
490 |
-
"Can't open submission form.","Übermittlungsformular konnte nicht geöffnet werden."
|
491 |
-
"Can't read file "%s".","Datei "%s" konnte nicht gelesen werden."
|
492 |
-
"Can't remove the item.","Artikel konnte nicht entfernt werden."
|
493 |
-
"Can't reset theme.","Vorlage konnte nicht zurückgesetzt werden."
|
494 |
-
"Can't save address.","Adresse konnte nicht gespeichert werden."
|
495 |
-
"Can't save the customer.","Kunde konnte nicht gespeichert werden."
|
496 |
-
"Can't save theme.","Vorlage konnte nicht gespeichert werden."
|
497 |
-
"Can't show configuration.","Konfiguration konnte nicht gezeigt werden."
|
498 |
-
"Can't specify product.","Artikel konnte nicht angegeben werden."
|
499 |
-
"Can't submit application.","App konnte nicht übermittelt werden."
|
500 |
-
"Can't update cart.","Warenkorb konnte nicht aktualisiert werden."
|
501 |
-
"Can't write to file "%s".","Datei "%s" konnte nicht gespeichert werden."
|
502 |
-
"Can't copy file "%s" to "%s".","Datei "%s" konnte nicht nach "%s" kopiert werden."
|
503 |
-
"Device doesn't recognized. Unable to load a template.","Gerät nicht erkannt. Vorlage konnte nicht geladen werden."
|
504 |
-
"Device doesn't recognized: "%s". Unable to load a helper.","Gerät nicht erkannt: "%s". Helper konnte nicht geladen werden."
|
505 |
-
"File doesn't exist "%s".","Datei "%s" existiert nicht."
|
506 |
-
"It's not allowed to delete submitted application.","Es ist nicht erlaubt, bereits übermittelte Apps zu löschen."
|
507 |
-
"Items were updated. But can't update wishlist.","Artikel wurden aktualisiert, aber der Wunschzettel konnte nicht aktualisiert werden."
|
508 |
-
"Message can not be edited when it's status NOT is "IN QUEUE".","Nachrichten können nicht bearbeitet werden, solange deren Status NICHT "IN WARTESCHLANGE" ist."
|
509 |
-
"Product Name ","Artikel Name "
|
510 |
-
"Product Name","Artikel Name"
|
511 |
-
"Product Name 1","Artikel Name 1"
|
512 |
-
"Product Name 2","Artikel Name 2"
|
1 |
+
" But cart has some errors."," Aber der Warenkorb enthält Fehler."
|
2 |
+
"""Description"" is more than %d characters long","""Beschreibung"" ist länger als %d Zeichen"
|
3 |
+
"""Title"" is more than %d characters long","""Titel"" ist länger als %d Zeichen"
|
4 |
"%1$s has been added to your wishlist.","%1$s wurde zum Wunschzettel hinzugefügt."
|
5 |
"%1$s incl tax.","%1$s inkl. Steuern."
|
6 |
+
"%s API Key required.","%s API Schlüssel erforderlich"
|
7 |
+
"%s Application ID required.","%s API Application ID erforderlich"
|
8 |
+
"%s Secret Key required.","%s Geheimschlüssel erforderlich"
|
9 |
"%s has been added to your cart.","%s wurde zum Warenkorb hinzugefügt."
|
10 |
+
"(Includes more countries than those listed below. As the application owner, you are responsible for complying with country-specific laws related to the distribution or sale of your application into that country, including your home country.)","(Enthält mehr Länder als unten aufgeführt. Als Inhaber der Applikation sind Sie verpflichtet, die Einhaltung der länderspezifischen Gesetze zu Verteilung und Verkauf Ihrer Anwendung in diesen Ländern sicherzustellen, inklusive Ihres Heimatlandes.)"
|
11 |
+
"*Subject to change","* Änderungen vorbehalten"
|
12 |
"10:40 AM","10:40 AM"
|
13 |
"80px x 80px","80px x 80px"
|
14 |
"80x80 px","80x80 px"
|
15 |
+
"<a href=""%s"" target=""_blank"">Login</a> to Urabn Airship.","<a href=""%s"" target=""_blank"">Anmelden</a> bei Urban Airship."
|
16 |
"A Catalog Only App will not support functions such as add to cart, add to wishlist, or login.","Eine App, die ausschließlich den Katalog präsentiert enthält keine Funktionen wie Warenkorb, Wunschzettel oder Login."
|
17 |
"A new password has been sent.","Ein neues Passwort wurde gesendet."
|
18 |
"Account","Account"
|
21 |
"Action","Altion"
|
22 |
"Activate","Aktivieren"
|
23 |
"Activate PayPal Checkout","PayPal Checkout aktivieren"
|
24 |
+
"Activation Key","Aktivierungsschlüssel"
|
25 |
"Add App","App hinzufügen"
|
|
|
26 |
"Add New Template","Neue Vorlage hinzufügen"
|
27 |
"Add Page","Seite hinzufügen"
|
28 |
"Add to Cart","In den Warenkorb"
|
29 |
"Add to Wishlist","Auf den Wunschzettel"
|
30 |
"Additional Address","Zusätzliche Adressen"
|
31 |
+
"Additional Product Info","Zusätzliche Artikelinfo"
|
32 |
"Address","Adresse"
|
33 |
"Address 2","Adresse 2. Zeile"
|
34 |
"Address data not specified.","Adressdaten nicht eingegeben."
|
37 |
"Address has been saved.","Adresse wurde gespeichert."
|
38 |
"Administrative contact for this app and for app submission issues.","Ansprechpartner für diese App."
|
39 |
"Advanced Settings","Erweitert"
|
40 |
+
"After submitting the App to Magento, please contact <a href=""mailto:%1$s"">%1$s</a> to receive the Application Key, Application Secret and Application Master Secret.","Nachdem die App an Magento übermittelt wurde, nehmen Sie bitte mit <a href=""mailto:%1$s"">%1$s</a> Kontakt auf, um den Anwendungsschlüssel und den Anwendungshauptkennwort zu erhalten."
|
41 |
"AirMail Message Queue","AirMail Nachrichten Warteschlange"
|
42 |
"AirMail Messages Queue","AirMail Nachrichten Warteschlange"
|
43 |
"AirMail Template Preview","AirMail Vorlagenvorschau"
|
44 |
"AirMail message","AirMail Nachricht"
|
45 |
"AirMail templates","AirMail Vorlagen"
|
46 |
+
"All Allowed Countries","Alle erlaubten Länder"
|
47 |
+
"All locations","Alle Orte"
|
48 |
"An account with this email address already exists.","Mit dieser Adresse besteht bereits ein Account."
|
49 |
"An error occurred while adding item to wishlist.","Es ist ein Fehler beim Hinzufügen zum Wunschzettel aufgetreten."
|
50 |
"An error occurred while deleting the address.","Es ist ein Fehler beim Löschen der Adresse aufgetreten."
|
56 |
"Analytics","Analytics"
|
57 |
"Android","Android"
|
58 |
"App Background","App Hintergrund"
|
59 |
+
"App Background (landscape mode).","App Hintergrund (Quer)"
|
60 |
+
"App Background (portrait mode).","App Hintergrund (Hoch)"
|
61 |
+
"App Background <br />(landscape mode)","App Hintergrund<br />(Quer)"
|
62 |
+
"App Background <br />(portrait mode)","App Hintergrund<br />(Hoch)"
|
63 |
+
"App Background image missing.","App Hintergrund fehlt."
|
64 |
"App Code","App Code"
|
65 |
"App Information","App Information"
|
66 |
"App Name","App Name"
|
67 |
+
"App Stores","App Stores"
|
68 |
"App Submission History","App Übertragungsprotokoll"
|
69 |
"App Title","App Titel"
|
70 |
"App code required.","App Code notwendig."
|
74 |
"App has been submitted.","App wurde übertragen."
|
75 |
"App model not loaded.","App-Model nicht geladen."
|
76 |
"App with specified code does not exist.","Unter diesem App Code App wurde keine App gefunden."
|
77 |
+
"Appears in the info section of your app (example: Copyright 2010 – Your Company, Inc.)","Ist im Infobereich Ihrer App sichtbar (Beispiel: Copyright 2011 – Ihr Firmenname)"
|
78 |
"Application","Anwendung"
|
79 |
+
"Application Key","Anwendungsschlüssel"
|
80 |
+
"Application Master Secret","Anwendungshauptpasswort"
|
81 |
+
"Application Name","Anwendungsame"
|
82 |
+
"Application Secret","Anwendungspasswort"
|
83 |
+
"Are you sure you want to delete this theme? This change will affect all applications.","Sind Sie sicher, dass Sie diese Vorlage löschen möchten? Dieser Vorgang betrifft alle Apps."
|
|
|
84 |
"Are you sure you whant to cancel a message?","Sind Sie sicher, dass Sie die Nachricht stornieren möchten?"
|
85 |
"Are you sure you whant to delete a message?","Sind Sie sicher, dass Sie die Nachricht löschen möchten?"
|
86 |
"Are you sure you what to cancel selected records?","Sind Sie sicher, dass Sie die gewählten Einträge stornieren möchten?"
|
87 |
"Are you sure you what to delete selected records?","Sind Sie sicher, dass Sie die gewählten Einträge löschen möchten?"
|
88 |
+
"As a Magento customer, Urban Airship is offering you unlimited Push Notifications and Rich Push for $100/year* along with a 60 day free trial.","Als Magento-Kunde bietet Ihnen Urban Airshop unbegrenzte Push-Meldungen und umfangreichere Push Meldungen für 100 USD pro Jahr, sowie eine 60 tägige Testphase an."
|
89 |
"Authentication complete.","Bestätigung komplett."
|
90 |
"Back","Zurück"
|
91 |
"Back to App Edit","Zurück zu App bearbeiten"
|
92 |
"Background Color","Hintergrundfarbe"
|
93 |
"Banner on Home Screen","Banner Home-Bildschirm"
|
94 |
+
"Banner on Home Screen (landscape mode) image missing.","Banner Home-Bildschirm (Quer)"
|
95 |
+
"Banner on Home Screen (portrait mode) image missing.","Banner Home-Bildschirm (Hoch)"
|
96 |
+
"Banner on Home Screen <br />(landscape mode)","Banner Home-Bildschirm <br />(Quer)"
|
97 |
+
"Banner on Home Screen <br />(portrait mode)","Banner Home-Bildschirm <br />(Hoch)"
|
98 |
+
"Banner on Home Screen image missing.","Banner Home-Bildschirm fehlt."
|
99 |
"Billing address has been set.","Rechnungsanschrift eingerichtet."
|
100 |
"Buy %1$s for %2$s","Kaufen Sie %1$s zum Preis von %2$s"
|
101 |
"Buy %1$s for %2$s (%3$s incl. tax) each","Kaufen Sie %1$s zum Preis von je %2$s (%3$s inkl. Steuern)"
|
102 |
"Buy %1$s for %2$s each","Kaufen Sie %1$s zum Preis von je %2$s"
|
103 |
+
"Buyer country is not allowed by store.","Käuferland wird vom Store nicht zugelassen."
|
104 |
+
"Cache Lifetime (seconds)","Lebenszeit der Caches in Sekunden"
|
105 |
+
"Cache Management","Cache-Verwaltung"
|
106 |
+
"Can\'t add item to shopping cart.","Artikel kann nicht in den Warenkorb gelegt werden."
|
107 |
+
"Can\'t apply the coupon code.","Rabattcode konnte nicht eingelöst werden."
|
108 |
+
"Can\'t copy file ""%s"" to ""%s"".","Datei ""%s"" konnte nicht nach ""%s"" kopiert werden."
|
109 |
+
"Can\'t create wishlist.","Wunschzettel konnte nicht erstellt werden."
|
110 |
+
"Can\'t delete ""%s"" theme.","Vorlage ""%s"" konnte nicht gelöscht werden."
|
111 |
+
"Can\'t load XML.","XML konnte nicht geladen werden."
|
112 |
+
"Can\'t load application with code ""%s""","Die App mit dem Code ""%s"" konnte nicht geladen werden"
|
113 |
+
"Can\'t load default themes.","Standardvorlagen konnte nicht geladen werden."
|
114 |
+
"Can\'t open submission form.","Übermittlungsformular konnte nicht geöffnet werden."
|
115 |
+
"Can\'t read file ""%s"".","Datei ""%s"" konnte nicht gelesen werden."
|
116 |
+
"Can\'t remove the item.","Artikel konnte nicht entfernt werden."
|
117 |
+
"Can\'t reset theme.","Vorlage konnte nicht zurückgesetzt werden."
|
118 |
+
"Can\'t save address.","Adresse konnte nicht gespeichert werden."
|
119 |
+
"Can\'t save the customer.","Kunde konnte nicht gespeichert werden."
|
120 |
+
"Can\'t save theme.","Vorlage konnte nicht gespeichert werden."
|
121 |
+
"Can\'t show configuration.","Konfiguration konnte nicht angezeigt werden."
|
122 |
+
"Can\'t specify product.","Artikel konnte nicht bestimmt werden."
|
123 |
+
"Can\'t submit application.","App konnte nicht übermittelt werden."
|
124 |
+
"Can\'t update cart.","Warenkorb konnte nicht aktualisiert werden."
|
125 |
+
"Can\'t write to file ""%s"".","In die Datei ""%s"" konnte nicht geschrieben werden."
|
126 |
"Cancel","Abbrechen"
|
127 |
"Canceled","Storniert"
|
128 |
"Cancelled","Storniert"
|
129 |
+
"Cannot load theme ""%s"".","Vorlage ""%s"" konnte nicht geladen werden."
|
130 |
+
"Cannot save theme ""%s"". Incorrect data received","Vorlage ""%s"" konnte nicht gespeichert werden. Ungültige Daten empfangen"
|
131 |
"Card Verification Number","Kartenprüfennummer"
|
132 |
"Card verification number is wrong","Kartenprüfnummer ist nicht korrekt."
|
133 |
"Carrier","Dienstleister"
|
135 |
"Cart has been updated.","Warenkorb wurde aktualisiert."
|
136 |
"Cart has some errors.","Warenkorb enthält Fehler."
|
137 |
"Cart is empty.","Warenkorb ist leer."
|
|
|
138 |
"Catalog Only App?","Reine Katalog-Präsentation?"
|
139 |
"Category Button Color","Kategorie-Button Farbe"
|
140 |
"Category Item Background Color","Kategorie Element Hintergrundfarbe"
|
141 |
"Chairs","Stühle"
|
142 |
"Change Orientation","Ausrichtung ändern"
|
143 |
"Change Password","Passwort ändern"
|
144 |
+
"Changes have been saved to theme.","Änderungen der Vorlage wurden gespeichert."
|
145 |
"Checkout has been initialized.","Bezahlvorgang wurde eingeleitet."
|
146 |
"City","Stadt"
|
147 |
"Color Themes","Farbvorlagen"
|
154 |
"Contact Information","Kontaktinformationen"
|
155 |
"Content","Inhalt"
|
156 |
"Copyright","Urheberrecht"
|
157 |
+
"Copyright Page Logo","Urheberrecht-Seitenlogo"
|
158 |
+
"Copyright Page Logo <br />(iPhone 4 retina)","Urheberrecht-Seitenlogo <br />(iPhone 4 Retina)"
|
159 |
+
"Countries Payment Applicable From","Für Zahlungen zugelassene Länder"
|
160 |
"Country","Land"
|
161 |
+
"Country options don\'t recognized for ""%s"".","Ländereinstellungen für ""%s"" nicht erkannt."
|
162 |
"Coupon code %s is not valid.","Rabattcode %s ist ungültig."
|
163 |
"Coupon code %s was applied.","Rabattcode %s wurde angewandt."
|
164 |
"Coupon code is empty.","Rabattcode ist leer."
|
165 |
"Coupon code was canceled.","Rabattcode wurde storniert."
|
166 |
"Creating a Template is allowed only for applications which have device type iPhone.","Das Erstellen einer Vorlage ist nur für iPhone-Apps möglich."
|
167 |
+
"Credit Card","Kreditkarte"
|
168 |
+
"Credit Card %s","Kreditkarte %s"
|
169 |
"Credit Card Number","Kreditkartennumer"
|
170 |
"Credit Card Type","Kreditkartentyp"
|
171 |
"Credit card number does not match credit card type.","Kreditkartennummer entspricht nicht Kreditkartentyp."
|
172 |
"Current Password","Aktuelles Passwort"
|
173 |
+
"Currently, PayPal MEP is not available for the Android application","Aktuell ist PayPal MEP für die Andriod Anwendung nicht verfügbar"
|
174 |
"Custom App Icon","Eigenes App-Icon"
|
175 |
+
"Custom App Icon <br />(iPhone 4 retina)","Eigenes App-Icon <br />(iPhone 4 Retina)"
|
176 |
"Custom Colors","Eigene Farben"
|
|
|
177 |
"Customer authentication problem.","Kundenbestätigungsproblem."
|
178 |
"Customer email not specified.","Kunden-eMailadresse nicht angegeben."
|
179 |
"Customer logout problem.","Problem beim Ausloggen des Kunden."
|
181 |
"Date Created","Erstellt am"
|
182 |
"Date Submitted","Übermittelt am"
|
183 |
"Date Updated","Aktualisiert am"
|
184 |
+
"Deeper Messaging and Engagement with Rich Push.","Bessere Kommunikation und Kundenbindung mit RichPush"
|
185 |
"Default Billing Address","Standard Rechnungsanschrift"
|
186 |
"Default Shipping Address","Standard Versandanschrift"
|
187 |
"Default Theme","Standardvorlage"
|
188 |
"Delete","Löschen"
|
189 |
+
"Delete theme","Vorlage löschen"
|
190 |
"Deleted","Gelöscht"
|
191 |
"Description","Beschreibung"
|
192 |
+
"Description that appears in Android Market. %s chars maximum. ","Beschreibung für den Andriod Market. Max. %s Zeichen. "
|
193 |
+
"Description that appears in the iTunes App Store. %s chars maximum. ","Beschreibung für den iTunes App Store. Max. %s Zeichen. "
|
194 |
+
"Deselect All","Alle abwählen"
|
195 |
"Design","Design"
|
196 |
"Device","Gerät"
|
197 |
"Device Information","Geräteinformation"
|
198 |
"Device Type","Gerät"
|
199 |
+
"Device doesn\'t recognized. Unable to load a template.","Gerät nicht erkannt. Vorlage konnte nicht geladen werden."
|
200 |
+
"Device doesn\'t recognized: ""%s"". Unable to load a helper.","Gerät nicht erkannt: ""%s"". Helper konnte nicht geladen werden."
|
201 |
+
"Device doesn\'t recognized: ""%s"". Unable to load preview model.","Gerät nicht erkannt: ""%s"". Vorschau Model konnte nicht geladen werden."
|
202 |
"Edit","Bearbeiten"
|
203 |
"Edit AirMail Message","AirMail Nachricht bearbeiten"
|
204 |
"Edit AirMail Message Queue #%s","AirMail Nachrichtenwarteschlange #%s bearbeiten"
|
205 |
+
"Edit App ""%s""","App ""%s"" bearbeiten"
|
206 |
"Edit Filter","Filter bearbeiten"
|
207 |
+
"Edit Template ""%s""","Vorlage ""%s"" bearbeiten"
|
208 |
"Email","eMail"
|
209 |
"Email Address","eMail-Adresse"
|
210 |
"Enable AirMail Message Push notification","AirMail Nachricht - Push Benachrichtigung aktivieren"
|
211 |
+
"Enable Facebook","Facebook aktivieren"
|
212 |
"Enable Flurry Analytics","Flurry Analytics aktivieren"
|
213 |
"Enable Flurry Analytics for the merchant.","Flurry Analytics für den Händler aktivieren."
|
214 |
+
"Enable LinkedIn","LinkedIn aktivieren"
|
215 |
"Enable Standard Checkout","Standard Bezahlvorgang aktivieren"
|
216 |
+
"Enable Twitter","Twitter aktivieren"
|
217 |
+
"Error while processing file ""%s"".","Fehler beim Verarbeiten der Datei ""%s""."
|
218 |
+
"Error while reading data from Payment Bridge. Please, try again.","Fehler beim Empfang der PaymentBridge Daten. Bitte versuchen Sie es noch einmal."
|
219 |
+
"Error while uploading file ""%s"".","Fehler beim Hochladen der Datei ""%s""."
|
220 |
+
"Error while uploading file ""%s"". Disallowed file type. Only ""jpg"", ""jpeg"", ""gif"", ""png"" are allowed.","Fehler beim Hochladen der Datei ""%s"". Nicht erlaubter Dateityp. Nur ""jpg"", ""jpeg"", ""gif"", ""png"" sind erlaubt."
|
221 |
"Error.","Fehler."
|
222 |
+
"Excl. Tax","Zzgl. Steuern"
|
223 |
"Expiration Date - Month","Gültig bis - Monat"
|
224 |
"Expiration Date - Year","Gültig bis - Jahr"
|
225 |
+
"Extend the life of your app with Urban Airship Push Notifications.","Verbessern Sie die Dauerhaftigkeit Ihrer App mit Urban Airship Pushnachrichten."
|
226 |
"Extensions","Erweiterungen"
|
227 |
"FILTERS APPLIED","FILTER ANGEWENDET"
|
228 |
+
"Facebook API","Facebook-API"
|
229 |
+
"Facebook Application ID","Facebook App-ID"
|
230 |
"Fax","Fax"
|
231 |
+
"File can\'t be uploaded.","Datei konnte nicht hochgeladen werden."
|
232 |
+
"File doesn\'t exist ""%s"".","Datei ""%s"" existiert nicht."
|
233 |
"First Name","Vorname"
|
234 |
+
"Flurry API Code","Flurry API Code"
|
235 |
"Flurry Analytics","Flurry Analytics"
|
236 |
"Flurry Analytics Site","Flurry Analytics Site"
|
|
|
237 |
"Fonts","Schriften"
|
238 |
"Free","Kostenlos"
|
239 |
"Funk Leaf","Funk Leaf"
|
240 |
"General","Allgemein"
|
|
|
241 |
"Get Content from CMS Page","Inhalt von CMS-Seite verlinken"
|
242 |
"Grand Total (Excl. Tax)","Gesamt (zzgl. Steuern)"
|
243 |
"Grand Total (Incl. Tax)","Gesamt (inkl. Steuern)"
|
244 |
"Guest","Gast"
|
245 |
"Header Background Color","Header Hintergrundfarbe"
|
246 |
"Header Font Color","Header Schriftfarbe"
|
247 |
+
"High Resolution Application Icon","Hochauflösendes App-Icon"
|
248 |
"Home","Home"
|
249 |
"Hot Red","Hot Red"
|
250 |
+
"How do you rate this product?","Wie bewerten Sie diesen Artikel?"
|
251 |
+
"How to incorporate Urban Airship within your application:","Wie kann Ihre App mit Urbain Airship zusammenarbeiten:"
|
252 |
"ID","ID"
|
253 |
+
"Icon that will appear on the user\'s device after they download your app. Recommended size: 48px x 48px.","Icon, das auf dem Mobiltelefon angezeigt wird, nachdem die App heruntergeladen wurde. Empfohlene Größe: 48px x 48px."
|
254 |
+
"Icon that will appear on the user\'s device after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 72px x 72px.","Icon, das auf dem Mobiltelefon angezeigt wird, nachdem die App heruntergeladen wurde. Sie müssen keinen Verlauf oder runde Ecken hinzufügen, dies erledigt Apple automatisch. Empfohlene Größe: 72px x 72px."
|
255 |
+
"Icon that will appear on the user\'s phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 114px x 114px.","Icon, das auf dem Mobiltelefon angezeigt wird, nachdem die App heruntergeladen wurde. Sie müssen keinen Verlauf oder runde Ecken hinzufügen, dies erledigt Apple automatisch. Empfohlene Größe: 114px x 114px."
|
256 |
"Icon that will appear on the user’s phone after they download your app. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Recommended size: 57px x 57px at 72 dpi.","Icon, das auf dem Mobiltelefon angezeigt wird, nachdem die App heruntergeladen wurde. Sie müssen keinen Verlauf oder runde Ecken hinzufügen, dies erledigt Apple automatisch. Empfohlene Größe: 57px x 57px bei 72 dpi."
|
257 |
"Icons","Icons"
|
258 |
"If leave this field empty, the message will be sent immediately","Wenn Sie dieses Feld leer lassen, wird die Nachricht sofort verschickt"
|
259 |
+
"If you want to disable the cache on the application side, leave the field empty. Warning! When disabling cache, the application will take time to load each page.","Wenn Sie den Cache auf Anwendungsebene ausschalten möchten, lassen Sie dieses Feld bitte leer. Achtung! Wenn Sie den Cache abschalten, benötigt die Anwendung mehr Zeit, um die einzelnen Seiten zu laden."
|
260 |
"Image file was not found.","Bild wurde nicht gefunden."
|
261 |
+
"Image that appears on first screen while your app is loading. Required size: 1024px x 768px.","Dieses Bild wird beim Ladevorgang Ihrer App angezeigt. Benötigte Größe: 1024px x 768x."
|
262 |
+
"Image that appears on first screen while your app is loading. Required size: 320px x 455px.","Dieses Bild wird beim Ladevorgang Ihrer App angezeigt. Benötigte Größe: 320px x 455px."
|
263 |
"Image that appears on first screen while your app is loading. Required size: 320px x 460px.","Dieses Bild wird beim Ladevorgang Ihrer App angezeigt. Benötigte Größe: 320px x 460px."
|
264 |
+
"Image that appears on first screen while your app is loading. Required size: 640px x 920px.","Dieses Bild wird beim Ladevorgang Ihrer App angezeigt. Benötigte Größe: 640px x 920px."
|
265 |
+
"Image that appears on first screen while your app is loading. Required size: 768px x 1024px.","Dieses Bild wird beim Ladevorgang Ihrer App angezeigt. Benötigte Größe: 768px x 1024px."
|
266 |
"Images","Bilder"
|
267 |
"In Queue","In Warteschlange"
|
268 |
"In Stock","Auf Lager"
|
269 |
+
"In addition, click here to review Urban Airship\'s Terms of Service: <a href=""%s"" target=""_blank"">click here</a>.","Bitte <a href=""%s"" target=""_blank"">klicken Sie hier</a>, um die AGB von Urban Airship zu lesen."
|
270 |
+
"In order to resubmit your app, you need to first purchase a <a href=""%s"" target=""_blank"">%s</a> from MagentoCommerce","Um Ihre App erneut übermitteln zu können, müssen Sie zuerst einen <a href=""%s"" target=""_blank"">%s</a> bei MagentoCommerce kaufen."
|
271 |
+
"In order to submit your app, you need to first purchase a <a href=""%s"" target=""_blank"">%s</a> from MagentoCommerce","Um Ihre App übermitteln zu können, müssen Sie zuerst einen <a href=""%s"" target=""_blank"">%s</a> bei MagentoCommerce kaufen."
|
272 |
"Inactive Tabs","Inaktive Tabs"
|
273 |
+
"Incl. Tax","Inkl. Steuern"
|
274 |
"Invalid XML.","Ungültiges XML."
|
275 |
"Invalid current password.","Ungültiges, aktuelles Passwort."
|
276 |
"Invalid customer data.","Ungültige Kundendaten."
|
280 |
"Invalid login or password.","Ungültiger Benutzername oder Passwort."
|
281 |
"Invalid shipping method.","Ungültige Versandart."
|
282 |
"Issue Number","Vorgangsnummer"
|
283 |
+
"It\'s not allowed to delete submitted application.","Es ist nicht erlaubt, übermittelte Apps zu löschen."
|
284 |
"Item has been added to cart.","Artikel wurde zum Warenkorb hinzugefügt."
|
285 |
"Item has been deleted from cart.","Artikel wurde aus dem Warenkorb entfernt."
|
286 |
"Item has been removed from wishlist.","Artikel wurde vom Wunschzettel entfernt."
|
287 |
+
"Items were updated. But can\'t update wishlist.","Artikel wurden aktualisiert. Der Wunschzettel konnte aber nicht aktualisiert werden."
|
288 |
+
"Key","Schlüssel"
|
289 |
"Keywords","Keywords"
|
290 |
"Label","Bezeichnung"
|
291 |
"Large iTunes Icon","Großes iTunes Icon"
|
292 |
"Large icon that appears in the iTunes App Store. You do not need to apply a gradient or soft edges (this is done automatically by Apple). Required size: 512px x 512px.","Großes Icon im iTunes App Store. Sie müssen keinen Verlauf oder runde Ecken hinzufügen, dies erledigt Apple automatisch. Benötigte Größe: 512px x 512px."
|
293 |
"Last Name","Nachname"
|
294 |
+
"LinkedIn API","LinkedIn API"
|
295 |
+
"LinkedIn API Key","LinkedIn API Schlüssel"
|
296 |
+
"LinkedIn Secret Key","LinkedIn Geheimschlüssel"
|
297 |
"Loader Splash Screen","Ladebildschirm"
|
298 |
+
"Loader Splash Screen <br />(iPhone 4 retina)","Ladebildschirm <br />(iPhone 4 Retina)"
|
299 |
+
"Loader Splash Screen <br />(landscape mode)","Ladebildschirm <br />(Quer)"
|
300 |
+
"Loader Splash Screen <br />(portrait mode)","LadeBildschirm <br />(Hoch)"
|
301 |
+
"Loading Preview...","Vorschau wird geladen..."
|
302 |
+
"Locations","Orte"
|
303 |
"Log In","Anmelden"
|
304 |
"Login and password are required.","Benutzername und Passwort notwendig."
|
305 |
"Logo in Header","Logo im Header"
|
306 |
+
"Logo in Header image missing.","Logo im Header fehlt"
|
307 |
"Logout complete.","Logout erfolgreich."
|
308 |
+
"MEP is PayPal\'s native checkout experience for the iPhone. You can choose to use MEP alongside standard checkout, or use it as your only checkout method for Magento mobile. PayPal MEP requires a <a href=""%s"">PayPal business account</a>","MEP ist PayPals nativer Bezahlvorgang für das iPhone. Sie können MEP neben dem normalen Bezahlvorgang nutzen oder Sie nutzen MEP als Ihre alleinige Bezahlart für Magento mobile. PayPal MEP benötigt einen <a href=""%s"">PayPal Geschäftsaccount</a>"
|
309 |
"Mailbox title","Postfachtitel"
|
310 |
"Main Tabs","Haupt-Tabs"
|
311 |
"Make Inactive","Deaktivieren"
|
320 |
"Message Templates","Nachrichten Vorlagen"
|
321 |
"Message Title","Nachrichtentitel"
|
322 |
"Message Type","Nachrichtentyp"
|
323 |
+
"Message can be edited when status of the message is ""IN QUEUE"" only.","Nachrichten können nur bearbeitet werden, wenn deren Status ""IN WARTESCHLANGE"" ist."
|
324 |
"Message content","Inhalt"
|
325 |
"Message title","Titel"
|
|
|
326 |
"Mobile","Mobile"
|
327 |
+
"Model of order is not loaded.","Model der Bestellung nicht geladen."
|
328 |
"More","Mehr"
|
329 |
"More Info","Weitere Informationen"
|
330 |
"More Tabs","Weitere Tabs"
|
331 |
"Name on Card","Karteninhaber"
|
332 |
+
"Name that appears beneath your app when users install it to their device. We recommend choosing a name that is 10-12 characters and that your customers will recognize. %s chars max.","Name, der unter der App erscheint, nachdem Benutzer diese Installiert haben. Wir empfehlen einen Namen von 10-12 Zeichen Länge, den Kunden leicht wiedererkennen können. Max. %s Zeichen."
|
333 |
"New AirMail Message","Neue AirMail Nachricht"
|
334 |
"New AirMail Message Queue","Neue AirMail Nachrichtenwarteschlange"
|
335 |
"New App","Neue App"
|
336 |
"New Password","Neues Passwort"
|
337 |
"New Template","Neue Vorlage"
|
338 |
+
"Nickname","Nickname:"
|
339 |
"No items were specifed to update.","Keine Artikel zur Aktualisierung angegeben."
|
340 |
"No items were updated.","Keine Artikel aktualisiert."
|
341 |
"No product selected.","Keine Artikel ausgewählt."
|
342 |
+
"No such file ""%s"".","Datei ""%s"" nicht gefunden."
|
343 |
"Not Submitted","Nicht übermittelt"
|
344 |
+
"Notice","Notiz"
|
345 |
+
"One or more keywords that describe your app. Keywords are matched to users\' searches in the App Store and help return accurate search results. Separate multiple keywords with commas. 100 chars is maximum.","Ein oder mehrere Keywords, die Ihre App beschreiben. Keywords werden bei Suchen im App Store gefunden und helfen dabei, verlässliche Suchergebnisse zu liefern. Trennen Sie mehrere Keywords mit einem Komma. Maximal 100 Zeichen."
|
346 |
"Onepage checkout is disabled.","Einseitiger Bezahlvorgang deaktiviert."
|
347 |
+
"Only custom theme can be deleted","Nur eigene Vorlagen können gelöscht werden"
|
348 |
+
"Only default theme can be reset","Nur die Standardvorlage kann zurückgesetzt werden"
|
349 |
"Only free apps are allowed in this version.","In dieser Version sind lediglich kostenfreie Apps erlaubt."
|
350 |
+
"Only registered users can write reviews. Please, log in or register.","Nur angemeldete Benutzer können Kundenmeinungen hinterlassen. Bitte registrieren Sie sich oder loggen Sie sich ein."
|
351 |
"Options menu items","Optionen Menüpunkte"
|
352 |
+
"Order id not specified.","Bestellnummer nicht angegeben."
|
353 |
+
"Order is not available.","Bestellung ist nicht verfügbar."
|
354 |
+
"Ordered","Bestellt"
|
355 |
"POST data is not valid.","POST-Daten sind ungültig."
|
356 |
"Pages","Seiten"
|
357 |
"Password","Passwort"
|
358 |
"Password fields cannot be empty.","Passwortfeld darf nicht leer sein."
|
359 |
+
"PayPal MEP","PayPal MEP"
|
360 |
"PayPal Mobile Embedded Payment (MEP)","PayPal Mobile Embedded Payment (MEP)"
|
361 |
+
"Payment Applicable From","Zahlung möglich von"
|
362 |
+
"Payment Bridge module unavailable.","PaymentBridge Modul nicht verfügbar."
|
363 |
"Payment Method has been set.","Zahlart wurde eingerichtet."
|
364 |
"Payment Methods","Zahlarten"
|
365 |
"Payment method was successfully set.","Zahlart wurde erfolgreich eingerichtet."
|
366 |
+
"Please <a href=""%s"" target=""_blank"">click here</a> to see how to setup and retrieve API credentials.","Bitte <a href=""%s"" target=""_blank"">klicken Sie hier</a>, um mehr darüber zu erfahren, wie Sie die API Zugangsdaten erhalten und die Einrichtung vornehmen müssen."
|
|
|
367 |
"Please Select Application","Bitte Anwendung auswählen"
|
368 |
"Please Select Device Type","Bitte Gerät auswählen"
|
369 |
"Please agree to all the terms and conditions before placing the order.","Bitte lesen und akzeptieren Sie alle AGB, bevor Sie Ihre Bestellung aufgeben."
|
370 |
+
"Please enter ""App Title"".","Bitte geben Sie einen ""App Titel"" an."
|
371 |
"Please enter issue number or start date for switch/solo card type.","Bitte geben Sie eine Vorgangsnummer oder ein Startdatum switch/solo Karten an."
|
372 |
+
"Please enter the Activation Key.","Bitte geben Sie den Aktivierungsschlüssel ein."
|
373 |
"Please enter the Copyright.","Bitte geben Sie das Urheberrecht an."
|
374 |
+
"Please enter the Description.","Bitte geben Sie die Beschreibung ein."
|
375 |
"Please enter the Price.","Bitte geben Sie einen Preis ein."
|
376 |
+
"Please enter the Resubmission Key.","Bitte geben Sie den Wiedervorlageschlüssel ein."
|
377 |
"Please enter the Title.","Bitte geben Sie einen Titel ein."
|
378 |
"Please make sure your passwords match.","Bitte stellen Sie sicher, dass die beiden Passworte identisch sind."
|
379 |
"Please select at least one country.","Bitte wählen mindestens ein Land aus."
|
380 |
+
"Please upload an image for ""App Background (landscape mode)"" field from Design Tab.","Bitte laden Sie ein Bild für ""App Hintergrund (Quer)"" im Design Tab hoch."
|
381 |
+
"Please upload an image for ""App Background (portrait mode)"" field from Design Tab.","Bitte laden Sie ein Bild für ""App Hintergrund (Hoch)"" im Design Tab hoch."
|
382 |
+
"Please upload an image for ""App Background"" field from Design Tab.","Bitte laden Sie ein Bild für ""App Hintergrund"" im Design Tab hoch."
|
383 |
+
"Please upload an image for ""Banner on Home Screen (landscape mode)"" field from Design Tab.","Bitte laden Sie ein Bild für ""Banner Home-Bildschirm (Quer)"" im Design Tab hoch."
|
384 |
+
"Please upload an image for ""Banner on Home Screen (portrait mode)"" field from Design Tab.","Bitte laden Sie ein Bild für ""Banner Home-Bildschirm (Hoch)"" im Design Tab hoch."
|
385 |
+
"Please upload an image for ""Banner on Home Screen"" field from Design Tab.","Bitte laden Sie ein Bild für ""Banner Home-Bildschirm"" im Design Tab hoch."
|
386 |
+
"Please upload an image for ""Logo in Header"" field from Design Tab.","Bitte laden Sie ein Bild für ""Logo im Header"" im Design Tab hoch."
|
387 |
"Preset Theme","Farbvorlagen"
|
388 |
"Preview","Vorschau"
|
389 |
"Price","Preis"
|
399 |
"Product(s) currently out of stock.","Artikel ist derzeit nicht auf Lager."
|
400 |
"Purchase Order Number","Auftragsnummer"
|
401 |
"Push Notification","Push Benachrichtigung"
|
402 |
+
"Push Notifications allow you to send messages directly to the people who have installed your app on their device. Send messages to your full audience even when your app is closed. Push Notifications are one of the best ways to keep your app active by delivering valuable content directly to your customers. Learn more about Push Notifications - <a href=""%1$s"" target=""_blank"">%1$s</a>","Push Benachrichtigungen erlauben es Ihnen, Nachrichten direkt an die Personen zu schicken, die Ihre App installiert haben. Senden Sie Mitteilungen an alle Ihre Kunden, auch wenn die App geschlossen ist. Push Benachrichtigungen sind der beste Weg, Ihre App interessant zu machen, indem Sie regelmäßig interessante Neuigkeiten direkt an Ihre Kunden schicken. Erfahren Sie mehr über Push Benachrichtigungen - <a href=""%1$s"" target=""_blank"">%1$s</a>"
|
403 |
"Push Title","Push Titel"
|
404 |
"Push message","Push Nachricht"
|
405 |
"Push title","Push Titel"
|
407 |
"Queue Message","Warteschlangennachricht"
|
408 |
"Queue does not exist.","Warteschlange existiert nicht."
|
409 |
"Quote instance is required.","Angebot-Instanz notwendig."
|
410 |
+
"Recipient Information","Empfängerinformation"
|
411 |
+
"Recommended size 1024px x 344px. Note: Image size affects the performance of your app.","Empfohlene Größe 1024px x 344px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
412 |
"Recommended size 1024px x 704px. Note: Image size affects the performance of your app.","Empfohlene Größe 1024px x 704px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
413 |
"Recommended size 320px x 230px. Note: Image size affects the performance of your app. Keep your image size below 50 KB for optimal performance.","Empfohlene Größe 320px x 230px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 50 KB for optimal performance."
|
414 |
"Recommended size 320px x 258px. Note: Image size affects the performance of your app. Keep your image size below 50 KB for optimal performance.","Empfohlene Größe 320px x 258px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 50 KB for optimal performance."
|
415 |
"Recommended size 320px x 367px. Note: Image size affects the performance of your app. Keep your image size below 75 KB for optimal performance.","Empfohlene Größe 320px x 367px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen. Keep your image size below 75 KB for optimal performance."
|
|
|
416 |
"Recommended size 35px x 35px.","Empfohlene Größe 35px x 35px."
|
|
|
417 |
"Recommended size 768px x 294px. Note: Image size affects the performance of your app.","Empfohlene Größe 768px x 294px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
418 |
"Recommended size 768px x 960px. Note: Image size affects the performance of your app.","Empfohlene Größe 768px x 960px. Hinweis: Bildgrößen können die Geschwindigkeit Ihrer App beeinflussen."
|
419 |
+
"Refunded","Erstattet"
|
420 |
"Regular and confirmation passwords must be equal","Standard- und Bestätigungspasswort müssen übereinstimmen"
|
421 |
"Related Product Background Color","Verknüpftes Produkt Hintergrundfarbe"
|
422 |
+
"Reset theme to default","Vorlage auf Standardwerte zurücksetzen"
|
423 |
+
"Resubmission Key","Wiedervorlageschlüssel"
|
|
|
|
|
424 |
"Resubmit App","App erneut übermitteln"
|
425 |
+
"Review","Kundenmeinung"
|
426 |
+
"Rich Push allows you to create and send engaging experiences by adding HTML and other rich media components to your push notifications. Moving beyond alerts and badge updates, Rich Push takes users into the app while displaying content in a customizable WebKit view. Create branded messages that engage your users with new content and information, all without having to update your app. Learn more about Rich Push - <a href=""%1$s"" target=""_blank"">%1$s</a>","Mt RichPush können Sie ansprechendere Nachrichten erstellen und senden, indem Sie HTML und andere Medien verwenden. Weiter mehr als Hinweise und Benachrichtigungen sind Rich Push Nachrichten. Sie bringen Ihre Nutzer in Ihre App während Inhalte in einem anpassbaren WebKit Fenster angezeigt werden. Erstellen Sie Ihre eigenen, gestalteten Nachrichten, die Ihre Kunden mit neuem Inhalt versorgen, ohne dass Sie Ihre App aktualisieren müssen. Mehr über RichPush erfahren Sie unter <a href=""%1$s"" target=""_blank"">%1$s</a>"
|
427 |
"SORT BY:","Sortieren nach:"
|
428 |
"Save","Speichern"
|
429 |
+
"Save As","Speichern untern"
|
430 |
"Save Theme","Vorlage speichern"
|
431 |
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
432 |
"Save and Submit App","Speichern und App übermitteln"
|
436 |
"Search","Suche"
|
437 |
"Secondary Color","Zusatzfarbe"
|
438 |
"Secondary Font Color","Zusatzschriftfarbe"
|
439 |
+
"Select All","Alle wählen"
|
440 |
"Selected product is unavailable.","Ausgewählter Artikel ist nicht verfügbar."
|
441 |
+
"Sender Information","Absenderinformationen"
|
442 |
"Settings","Einstellungen"
|
443 |
+
"Shipped","Versendet"
|
444 |
"Shipping address has been set.","Versandadresse wurde gespeichert."
|
445 |
"Shipping method has been set.","Versandart wurde gespeichert."
|
446 |
+
"Shipping to this address is not possible.","Versand an diese Adresse ist nicht möglich."
|
447 |
"Shop","Shop"
|
448 |
"Shopping cart is empty.","Warenkorb ist leer."
|
449 |
"Sky Blue","Sky Blue"
|
450 |
+
"Social Networking","Soziale Netzwerke"
|
451 |
"Some emails were not sent.","Einige eMails konnten nicht gesendet werden."
|
452 |
"Sorry, no payment options are available for this order at this time.","Für diese Bestellung stehen aktuell keine Zahlarten zur Verfügung."
|
453 |
+
"Specific Countries","Bestimmte Länder"
|
454 |
"Specified address does not exist.","Die angegebene Adresse existiert nicht."
|
455 |
"Specified invalid app code.","Ungültiger App Code angegeben."
|
456 |
"Specified invalid data.","Ungültige Daten angegeben."
|
464 |
"Status","Status"
|
465 |
"Store View","StoreView"
|
466 |
"Store logo that is displayed on copyright page of app. Preferred size: 100px x 100px.","Store Logo, das auf der Urheber-Seite angezeigt wird. Empfohlene Größe: 100px x 100px."
|
467 |
+
"Store logo that is displayed on copyright page of app. Preferred size: 200px x 200px.","Store Logo, das auf der Urheber-Seite angezeigt wird. Empfohlene Größe: 200px x 200px."
|
468 |
"Street Address","Straße"
|
469 |
"Street Address 2","Straße 2. Zeile"
|
470 |
"Submission","Übermittlung"
|
471 |
"Submission Fields","Felder für Übermittlung"
|
472 |
"Submission History","Übertragungsprotokoll"
|
|
|
473 |
"Submit App","App übermitteln"
|
474 |
+
"Submit App ""%s""","App ""%s"" übermitteln"
|
475 |
"Submit App failure. %s","Fehler beim Übermitteln der App. %s"
|
476 |
+
"Submit App failure. Invalid activation key provided","Fehler beim Übermitteln der App. Ungültiger Aktivierungsschlüssel."
|
|
|
477 |
"Submitted","Übermittelt"
|
478 |
"Subtotal (Excl. Tax)","Zwischensumme (zzg. Steuern)"
|
479 |
"Subtotal (Incl. Tax)","Zwischensumme (inkl. Steuern)"
|
480 |
+
"Summary of Your Review","Zusammenfassung Ihrer Kundenmeinung"
|
481 |
"T-Shirts","T-Shirts"
|
482 |
"Tabs","Tabs"
|
483 |
+
"Tax","Steuer"
|
484 |
"Telephone","Telefon"
|
485 |
"Tell a Friend","Einem Freund weiterempfehlen"
|
486 |
"Tell a Friend is disabled.","Weiterempfehlung an Freunde ist deaktivert."
|
494 |
"Template has been deleted.","Vorlage wurde gelöscht."
|
495 |
"Thank you for registering!","Vielen Dank für Ihre Registrierung!"
|
496 |
"Thank you for your purchase! ","Vielen Dank für Ihre Bestellung! "
|
497 |
+
"The Mailbox title will be shown in the More Info tab. To understand more about the title, please <a target=""_blank"" href=""http://www.magentocommerce.com/img/product/mobile/helpers/mail_box_title.png"">click here</a>",
|
498 |
+
"Der Mailbox-Titel wird unter dem Tab ""Mehr"" angezeigt. Wenn Sie mehr über den Titel erfahren möchten, <a target=""_blank"" href=""http://www.magentocommerce.com/img/product/mobile/helpers/mail_box_title.png"">klicken Sie bitte hier</a>."
|
499 |
+
"The icon that appears in the Android Market. Recommended size: 512px x 512px. Maximum size: 1024 KB.","Icon für den Android Market. Empfohlene Größe: 512px x 512px. Maximale Dateigröße: 1024 KB"
|
500 |
+
"Theme configurations are successfully reset.","Vorlagenkonfiguration wurde erfolgreich zurückgesetzt."
|
501 |
+
"Theme has been created.","Vorlage wurde gespeichert."
|
502 |
+
"Theme has been delete.","Vorlage wurde gelöscht."
|
503 |
+
"Theme label can\'t be empty","Vorlagenbezeichnung darf nicht leer sein."
|
504 |
+
"Theme label:","Vorlagenbezeichnung"
|
505 |
"Theme name is not set.","Vorlagenname wurde nicht gespeichert."
|
506 |
"There were some problems with the data.","Mit diesen Daten gab es leider Probleme."
|
507 |
"This email address was not found in our records.","Diese eMailadresse wurde in Ihren Einträgen leider nicht gefunden."
|
|
|
|
|
|
|
|
|
508 |
"Title","Titel"
|
509 |
"Title bar","Titelzeile"
|
510 |
"To activate PayPal MEP payment method activate Express checkout first. ","Um PayPal MEP Zahlungen zu aktivieren, aktivieren Sie bitte zuerst den Expressbezahlvorgang. "
|
511 |
"Total incl. Tax: %1$s","Gesamt inkl. Steuern: %1$s"
|
512 |
+
"Twitter API","Twitter API"
|
513 |
+
"Twitter API Key","Twitter API Schlüssel"
|
514 |
+
"Twitter Secret Key","Twitter API Geheimschlüssel"
|
515 |
"Unable to cancel queue.","Warteschlange konnte nicht storniert werden."
|
516 |
"Unable to collect cart totals.","Fehler beim Berechnen der Zwischen- und Gesamtsummen."
|
517 |
"Unable to delete queue.","Warteschlange konnte nicht gelöscht werden."
|
522 |
"Unable to load application form.","App Formular konnte nicht geladen werden."
|
523 |
"Unable to load product info.","Artikelinformationen konnten nicht geladen werden."
|
524 |
"Unable to place the order.","Bestellung konnte nicht ausgelöst werden."
|
525 |
+
"Unable to post the review.","Kundenmeinung konnte nicht übertragen werden."
|
526 |
"Unable to process preview.","Vorschau konnte nicht vorbereitet werden."
|
527 |
+
"Unable to render an order.","Bestellung konnte nicht gerendert werden."
|
528 |
"Unable to save app.","App konnte nicht gespeichert werden."
|
529 |
"Unable to save message.","Nachricht konnte nicht gespeichert werden."
|
530 |
"Unable to save shipping address.","Versandadresse konnte nicht gespeichert werden."
|
534 |
"Undefined","Unbekannt"
|
535 |
"Unknown Error","Unbekannter Fehler"
|
536 |
"Unknown Error.","Unbekannter Fehler."
|
537 |
+
"Unsupported character in path: ""%s""","Ungültiges Zeichen im Pfad: ""%s"""
|
538 |
+
"Unsupported value type received","Ungültigen Wertetyp erhalten"
|
539 |
"Update Preview","Vorschau aktualisieren"
|
540 |
+
"Upon receiving these credentials, please fill in the corresponding fields.","Bis zum Erhalt der Zugangsdaten füllen Sie bitte die folgenden Felder aus."
|
541 |
"Urban Airship Push Notification","Urban Airship Push Benachrichtigung"
|
542 |
"Use as my default billing address","Als Standard Rechnungsadresse verwenden"
|
543 |
"Use as my default shipping address","Als Standard Versandadresse verwenden"
|
|
|
|
|
544 |
"View Details","Details"
|
545 |
"View Gallery","Galerie"
|
546 |
"Website is offline.","Website ist offline."
|
547 |
"Wishlist has been cleared.","Wunschzettel wurde geleert."
|
548 |
"Wishlist has been updated.","Wunschzettel wurde aktualisiert."
|
549 |
"Wishlist has been updated. But there are accrued some errors while updating some items.","Wunschzettel wurde geleert, aber beim Aktualisieren einiger Artikel sind Fehler aufgetreten."
|
550 |
+
"Wrong Ipad background image orientation has been specified: ""%s"".","Falsche iPad Hintergrundbild Ausrichtung wurde angegeben: ""%s""."
|
|
|
551 |
"Wrong device type.","Falsches Gerät."
|
552 |
"Wrong email format","Falsches eMailformat"
|
553 |
"Wrong theme format.","Falsches Vorlagenformat."
|
554 |
"You are already logged in.","Sie sind bereits angemeldet."
|
|
|
|
|
555 |
"You can watch statistics here.","Statistiken können Sie hier ansehen."
|
556 |
"You will receive an order confirmation email with details of your order and a link to track its progress.","Sie erhalten eine Bestellbestätigung per eMail mit weiteren Informationen und einem Link, um die Bestellung weiterverfolgen zu können."
|
557 |
"Your order # is: %s. ","Ihre Bestellnummer lautet: %s. "
|
558 |
+
"Your review has been accepted for moderation.","Ihre Kundenmeinung wurde zur Prüfung angenommen"
|
559 |
"Zip/Postal Code","PLZ"
|
560 |
"and","und"
|
561 |
"each","je"
|
562 |
"iPad","iPad"
|
563 |
"iPhone","iPhone"
|
564 |
"save","speichern"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/de_DE/Phoenix_Moneybookers.csv
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
"All Credit Cards / Visa, Mastercard, AMEX, JCB, Diners (powered by Moneybookers) - International","Alle Kreditkarten / Visa, Mastercard, AMEX, JCB, Diners (powered by Moneybookers) - International"
|
2 |
"CartaSi (powered by Moneybookers) - Italy","CartaSi (powered by Moneybookers) - Italien"
|
3 |
"Carte Bleue (powered by Moneybookers) - France","Carte Bleue (powered by Moneybookers) - Frankreich"
|
4 |
-
"Customer ID","
|
5 |
"Dankort (powered by Moneybookers) - Denmark","Dankort (powered by Moneybookers) - Dänemark"
|
6 |
"EPS Online-Überweisung (powered by Moneybookers) - Austria","EPS Online-Überweisung (powered by Moneybookers) - Österreich"
|
7 |
"Enabled","Aktiviert"
|
8 |
-
"Find out more about Online Bank Transfer","Erfahren Sie mehr zum Thema
|
9 |
"Giropay (powered by Moneybookers) - Germany","Giropay (powered by Moneybookers) - Deutschland"
|
10 |
"Laser (powered by Moneybookers) - Ireland","Laser (powered by Moneybookers) - Irland"
|
11 |
"Lastschrift (ELV) (powered by Moneybookers) - Germany","Lastschrift (ELV) (powered by Moneybookers) - Deutschland"
|
@@ -13,20 +13,20 @@
|
|
13 |
"Maestro (powered by Moneybookers) - United Kingdom, Austria, Spain","Maestro (powered by Moneybookers) - UK, Österreich, Spanien"
|
14 |
"Moneybookers","Moneybookers"
|
15 |
"Moneybookers Settings","Moneybookers Einstellungen"
|
16 |
-
"Moneybookers Transaction ID: %s","Moneybookers
|
17 |
"Moneybookers eWallet","Moneybookers eWallet"
|
18 |
"More information about Moneybookers","Mehr Informationen über Moneybookers"
|
19 |
"Nordea Solo (powered by Moneybookers) - Finland","Nordea Solo (powered by Moneybookers) - Finnland"
|
20 |
"Nordea Solo (powered by Moneybookers) - Sweden","Nordea Solo (powered by Moneybookers) - Schweden"
|
21 |
-
"Online Bank Transfer (powered by Moneybookers)","
|
22 |
-
"Order ID","
|
23 |
"POLi (powered by Moneybookers) - Australia","POLi (powered by Moneybookers) - Australien"
|
24 |
"Payment failed.","Zahlung fehlgeschlagen"
|
25 |
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
26 |
"Payment from Specific Countries","Zahlung von bestimmten Ländern"
|
27 |
"Payment has not been processed yet.","Zahlung wurde noch nicht abgeschlossen."
|
28 |
"Payment was canceled.","Zahlung wurde storniert"
|
29 |
-
"Pending bank transfer created.","
|
30 |
"Please pay your order now","Bitte bezahlen Sie Ihre Bestellung jetzt"
|
31 |
"Postepay (powered by Moneybookers) - Italy","Postepay (powered by Moneybookers) - Italien"
|
32 |
"Powered by Moneybookers","Powered by Moneybookers"
|
@@ -34,12 +34,9 @@
|
|
34 |
"Sofortüberweisung (powered by Moneybookers) - Germany","Sofortüberweisung (powered by Moneybookers) - Deutschland"
|
35 |
"Sort Order","Reihenfolge"
|
36 |
"The amount has been authorized and captured by Moneybookers.","Der Betrag wurde von Moneybookers authorisiert und erfasst."
|
37 |
-
"The customer was redirected to Moneybookers.","
|
38 |
"The order has been canceled.","Die Bestellung wurde storniert."
|
39 |
"Title","Titel"
|
40 |
"You will be redirected to our secure payment page when you place an order.","Sie werden zu unserer sicheren Bezahlseite weitergeleitet wenn Sie die Bestellung abschließen."
|
41 |
"eNETS (powered by Moneybookers) - Singapore","eNETS (powered by Moneybookers) - Singapur"
|
42 |
"iDeal (powered by Moneybookers) - Netherlands","iDeal (powered by Moneybookers) - Niederlande"
|
43 |
-
"Moneybookers Info URL","Moneybookers Info URL"
|
44 |
-
"Payment failed","Zahlung fahlgeschlagen"
|
45 |
-
"Payment was canceled","Zahlung wurde storniert"
|
1 |
"All Credit Cards / Visa, Mastercard, AMEX, JCB, Diners (powered by Moneybookers) - International","Alle Kreditkarten / Visa, Mastercard, AMEX, JCB, Diners (powered by Moneybookers) - International"
|
2 |
"CartaSi (powered by Moneybookers) - Italy","CartaSi (powered by Moneybookers) - Italien"
|
3 |
"Carte Bleue (powered by Moneybookers) - France","Carte Bleue (powered by Moneybookers) - Frankreich"
|
4 |
+
"Customer ID","Kundennummer"
|
5 |
"Dankort (powered by Moneybookers) - Denmark","Dankort (powered by Moneybookers) - Dänemark"
|
6 |
"EPS Online-Überweisung (powered by Moneybookers) - Austria","EPS Online-Überweisung (powered by Moneybookers) - Österreich"
|
7 |
"Enabled","Aktiviert"
|
8 |
+
"Find out more about Online Bank Transfer","Erfahren Sie mehr zum Thema Onlineüberweisung"
|
9 |
"Giropay (powered by Moneybookers) - Germany","Giropay (powered by Moneybookers) - Deutschland"
|
10 |
"Laser (powered by Moneybookers) - Ireland","Laser (powered by Moneybookers) - Irland"
|
11 |
"Lastschrift (ELV) (powered by Moneybookers) - Germany","Lastschrift (ELV) (powered by Moneybookers) - Deutschland"
|
13 |
"Maestro (powered by Moneybookers) - United Kingdom, Austria, Spain","Maestro (powered by Moneybookers) - UK, Österreich, Spanien"
|
14 |
"Moneybookers","Moneybookers"
|
15 |
"Moneybookers Settings","Moneybookers Einstellungen"
|
16 |
+
"Moneybookers Transaction ID: %s","Moneybookers Transaktionsnummer: %s"
|
17 |
"Moneybookers eWallet","Moneybookers eWallet"
|
18 |
"More information about Moneybookers","Mehr Informationen über Moneybookers"
|
19 |
"Nordea Solo (powered by Moneybookers) - Finland","Nordea Solo (powered by Moneybookers) - Finnland"
|
20 |
"Nordea Solo (powered by Moneybookers) - Sweden","Nordea Solo (powered by Moneybookers) - Schweden"
|
21 |
+
"Online Bank Transfer (powered by Moneybookers)","Onlineüberweisung (powered by Moneybookers)"
|
22 |
+
"Order ID","Bestellnummer"
|
23 |
"POLi (powered by Moneybookers) - Australia","POLi (powered by Moneybookers) - Australien"
|
24 |
"Payment failed.","Zahlung fehlgeschlagen"
|
25 |
"Payment from Applicable Countries","Zahlung aus zugelassenen Ländern"
|
26 |
"Payment from Specific Countries","Zahlung von bestimmten Ländern"
|
27 |
"Payment has not been processed yet.","Zahlung wurde noch nicht abgeschlossen."
|
28 |
"Payment was canceled.","Zahlung wurde storniert"
|
29 |
+
"Pending bank transfer created.","Ausstehende Überweisung angelegt."
|
30 |
"Please pay your order now","Bitte bezahlen Sie Ihre Bestellung jetzt"
|
31 |
"Postepay (powered by Moneybookers) - Italy","Postepay (powered by Moneybookers) - Italien"
|
32 |
"Powered by Moneybookers","Powered by Moneybookers"
|
34 |
"Sofortüberweisung (powered by Moneybookers) - Germany","Sofortüberweisung (powered by Moneybookers) - Deutschland"
|
35 |
"Sort Order","Reihenfolge"
|
36 |
"The amount has been authorized and captured by Moneybookers.","Der Betrag wurde von Moneybookers authorisiert und erfasst."
|
37 |
+
"The customer was redirected to Moneybookers.","Der Kunde wurde zu Moneybookers weitergeleitet."
|
38 |
"The order has been canceled.","Die Bestellung wurde storniert."
|
39 |
"Title","Titel"
|
40 |
"You will be redirected to our secure payment page when you place an order.","Sie werden zu unserer sicheren Bezahlseite weitergeleitet wenn Sie die Bestellung abschließen."
|
41 |
"eNETS (powered by Moneybookers) - Singapore","eNETS (powered by Moneybookers) - Singapur"
|
42 |
"iDeal (powered by Moneybookers) - Netherlands","iDeal (powered by Moneybookers) - Niederlande"
|
|
|
|
|
|
app/locale/de_DE/sql_translation/attributes.sql
CHANGED
@@ -120,7 +120,11 @@ UPDATE `eav_attribute` SET `frontend_label` = 'Seiten Layout' WHERE `eav_attribu
|
|
120 |
UPDATE `eav_attribute` SET `frontend_label` = 'Artikeloptionen anzeigen in' WHERE `eav_attribute`.`attribute_code` ='options_container';
|
121 |
UPDATE `eav_attribute` SET `frontend_label` = 'Soll man das Artikel via Google Checkout bestellen können' WHERE `eav_attribute`.`attribute_code` ='enable_googlecheckout';
|
122 |
UPDATE `eav_attribute` SET `frontend_label` = 'Preis Ansicht' WHERE `eav_attribute`.`attribute_code` ='price_view';
|
123 |
-
|
|
|
|
|
|
|
|
|
124 |
/*
|
125 |
UPDATE `eav_attribute` SET `frontend_label` = 'Bild ALT Text' WHERE `eav_attribute`.`attribute_code` ='image_label';
|
126 |
UPDATE `eav_attribute` SET `frontend_label` = 'Kleines Bild ALT Text' WHERE `eav_attribute`.`attribute_code` ='small_image_label';
|
120 |
UPDATE `eav_attribute` SET `frontend_label` = 'Artikeloptionen anzeigen in' WHERE `eav_attribute`.`attribute_code` ='options_container';
|
121 |
UPDATE `eav_attribute` SET `frontend_label` = 'Soll man das Artikel via Google Checkout bestellen können' WHERE `eav_attribute`.`attribute_code` ='enable_googlecheckout';
|
122 |
UPDATE `eav_attribute` SET `frontend_label` = 'Preis Ansicht' WHERE `eav_attribute`.`attribute_code` ='price_view';
|
123 |
+
-- since Magento 1.6.x
|
124 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Herstellungsland' WHERE `eav_attribute`.`attribute_code` ='country_of_manufacture';
|
125 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'UVP' WHERE `eav_attribute`.`attribute_code` ='msrp';
|
126 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Tatsächlicher Preis' WHERE `eav_attribute`.`attribute_code` ='msrp_display_actual_price_type';
|
127 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'UVP anwenden' WHERE `eav_attribute`.`attribute_code` ='msrp_enabled';
|
128 |
/*
|
129 |
UPDATE `eav_attribute` SET `frontend_label` = 'Bild ALT Text' WHERE `eav_attribute`.`attribute_code` ='image_label';
|
130 |
UPDATE `eav_attribute` SET `frontend_label` = 'Kleines Bild ALT Text' WHERE `eav_attribute`.`attribute_code` ='small_image_label';
|
app/locale/de_DE/sql_translation/attributes_default.sql
CHANGED
@@ -56,7 +56,7 @@ UPDATE `eav_attribute` SET `frontend_label` = 'Description' WHERE `eav_attribute
|
|
56 |
-- UPDATE `eav_attribute` SET `frontend_label` = 'Kategorie Bild' WHERE `eav_attribute`.`attribute_code` ='image';
|
57 |
UPDATE `eav_attribute` SET `frontend_label` = 'Display Mode' WHERE `eav_attribute`.`attribute_code` ='display_mode';
|
58 |
UPDATE `eav_attribute` SET `frontend_label` = 'Is Anchor' WHERE `eav_attribute`.`attribute_code` ='is_anchor';
|
59 |
-
UPDATE `eav_attribute` SET `frontend_label` = '
|
60 |
UPDATE `eav_attribute` SET `frontend_label` = 'Position' WHERE `eav_attribute`.`attribute_code` ='position';
|
61 |
UPDATE `eav_attribute` SET `frontend_label` = 'Custom Design' WHERE `eav_attribute`.`attribute_code` ='custom_design';
|
62 |
UPDATE `eav_attribute` SET `frontend_label` = 'Apply To' WHERE `eav_attribute`.`attribute_code` ='custom_design_apply';
|
@@ -80,13 +80,13 @@ UPDATE `eav_attribute` SET `note` = 'Maximum 255 chars' WHERE `eav_attribute`.`a
|
|
80 |
|
81 |
-- Produktattribute (entity_type_id 4 und wenn Sample Daten installiert 10)
|
82 |
UPDATE `eav_attribute` SET `frontend_label` = 'Name' WHERE `eav_attribute`.`attribute_code` ='name';
|
83 |
-
UPDATE `eav_attribute` SET `frontend_label` = '
|
84 |
-
UPDATE `eav_attribute` SET `frontend_label` = '
|
85 |
UPDATE `eav_attribute` SET `frontend_label` = 'SKU' WHERE `eav_attribute`.`attribute_code` ='sku';
|
86 |
UPDATE `eav_attribute` SET `frontend_label` = 'Price' WHERE `eav_attribute`.`attribute_code` ='price';
|
87 |
UPDATE `eav_attribute` SET `frontend_label` = 'Special Price' WHERE `eav_attribute`.`attribute_code` ='special_price';
|
88 |
UPDATE `eav_attribute` SET `frontend_label` = 'Special Price From Date' WHERE `eav_attribute`.`attribute_code` ='special_from_date';
|
89 |
-
UPDATE `eav_attribute` SET `frontend_label` = 'Special
|
90 |
UPDATE `eav_attribute` SET `frontend_label` = 'Cost' WHERE `eav_attribute`.`attribute_code` ='cost';
|
91 |
UPDATE `eav_attribute` SET `frontend_label` = 'Weight' WHERE `eav_attribute`.`attribute_code` ='weight';
|
92 |
UPDATE `eav_attribute` SET `frontend_label` = 'Manufacturer' WHERE `eav_attribute`.`attribute_code` ='manufacturer';
|
@@ -98,8 +98,8 @@ UPDATE `eav_attribute` SET `frontend_label` = 'Set Product as New to Date ' WHER
|
|
98 |
UPDATE `eav_attribute` SET `frontend_label` = 'Image Gallery' WHERE `eav_attribute`.`attribute_code` ='gallery';
|
99 |
UPDATE `eav_attribute` SET `frontend_label` = 'Tax Class' WHERE `eav_attribute`.`attribute_code` ='tax_class_id';
|
100 |
UPDATE `eav_attribute` SET `frontend_label` = 'URL key' WHERE `eav_attribute`.`attribute_code` ='url_key';
|
101 |
-
UPDATE `eav_attribute` SET `frontend_label` = 'Minimal
|
102 |
-
UPDATE `eav_attribute` SET `frontend_label` = '
|
103 |
UPDATE `eav_attribute` SET `frontend_label` = 'Display product options in' WHERE `eav_attribute`.`attribute_code` ='gift_message_available';
|
104 |
UPDATE `eav_attribute` SET `frontend_label` = 'Custom Design' WHERE `eav_attribute`.`attribute_code` ='custom_design';
|
105 |
UPDATE `eav_attribute` SET `frontend_label` = 'Active From' WHERE `eav_attribute`.`attribute_code` ='custom_design_from';
|
@@ -110,6 +110,12 @@ UPDATE `eav_attribute` SET `frontend_label` = 'Display product options in' WHERE
|
|
110 |
UPDATE `eav_attribute` SET `frontend_label` = 'Is product available for purchase with Google Checkout' WHERE `eav_attribute`.`attribute_code` ='enable_googlecheckout';
|
111 |
UPDATE `eav_attribute` SET `frontend_label` = 'Price View' WHERE `eav_attribute`.`attribute_code` ='price_view';
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
/*
|
114 |
UPDATE `eav_attribute` SET `frontend_label` = 'Base Image Label' WHERE `eav_attribute`.`attribute_code` ='image_label';
|
115 |
UPDATE `eav_attribute` SET `frontend_label` = 'Short Image Label' WHERE `eav_attribute`.`attribute_code` ='small_image_label';
|
56 |
-- UPDATE `eav_attribute` SET `frontend_label` = 'Kategorie Bild' WHERE `eav_attribute`.`attribute_code` ='image';
|
57 |
UPDATE `eav_attribute` SET `frontend_label` = 'Display Mode' WHERE `eav_attribute`.`attribute_code` ='display_mode';
|
58 |
UPDATE `eav_attribute` SET `frontend_label` = 'Is Anchor' WHERE `eav_attribute`.`attribute_code` ='is_anchor';
|
59 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Path' WHERE `eav_attribute`.`attribute_code` ='path';
|
60 |
UPDATE `eav_attribute` SET `frontend_label` = 'Position' WHERE `eav_attribute`.`attribute_code` ='position';
|
61 |
UPDATE `eav_attribute` SET `frontend_label` = 'Custom Design' WHERE `eav_attribute`.`attribute_code` ='custom_design';
|
62 |
UPDATE `eav_attribute` SET `frontend_label` = 'Apply To' WHERE `eav_attribute`.`attribute_code` ='custom_design_apply';
|
80 |
|
81 |
-- Produktattribute (entity_type_id 4 und wenn Sample Daten installiert 10)
|
82 |
UPDATE `eav_attribute` SET `frontend_label` = 'Name' WHERE `eav_attribute`.`attribute_code` ='name';
|
83 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Description' WHERE `eav_attribute`.`attribute_code` ='description';
|
84 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Short Description' WHERE `eav_attribute`.`attribute_code` ='short_description';
|
85 |
UPDATE `eav_attribute` SET `frontend_label` = 'SKU' WHERE `eav_attribute`.`attribute_code` ='sku';
|
86 |
UPDATE `eav_attribute` SET `frontend_label` = 'Price' WHERE `eav_attribute`.`attribute_code` ='price';
|
87 |
UPDATE `eav_attribute` SET `frontend_label` = 'Special Price' WHERE `eav_attribute`.`attribute_code` ='special_price';
|
88 |
UPDATE `eav_attribute` SET `frontend_label` = 'Special Price From Date' WHERE `eav_attribute`.`attribute_code` ='special_from_date';
|
89 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Special Price To Date' WHERE `eav_attribute`.`attribute_code` ='special_to_date';
|
90 |
UPDATE `eav_attribute` SET `frontend_label` = 'Cost' WHERE `eav_attribute`.`attribute_code` ='cost';
|
91 |
UPDATE `eav_attribute` SET `frontend_label` = 'Weight' WHERE `eav_attribute`.`attribute_code` ='weight';
|
92 |
UPDATE `eav_attribute` SET `frontend_label` = 'Manufacturer' WHERE `eav_attribute`.`attribute_code` ='manufacturer';
|
98 |
UPDATE `eav_attribute` SET `frontend_label` = 'Image Gallery' WHERE `eav_attribute`.`attribute_code` ='gallery';
|
99 |
UPDATE `eav_attribute` SET `frontend_label` = 'Tax Class' WHERE `eav_attribute`.`attribute_code` ='tax_class_id';
|
100 |
UPDATE `eav_attribute` SET `frontend_label` = 'URL key' WHERE `eav_attribute`.`attribute_code` ='url_key';
|
101 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Minimal Price' WHERE `eav_attribute`.`attribute_code` ='minimal_price';
|
102 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Visibility' WHERE `eav_attribute`.`attribute_code` ='visibility';
|
103 |
UPDATE `eav_attribute` SET `frontend_label` = 'Display product options in' WHERE `eav_attribute`.`attribute_code` ='gift_message_available';
|
104 |
UPDATE `eav_attribute` SET `frontend_label` = 'Custom Design' WHERE `eav_attribute`.`attribute_code` ='custom_design';
|
105 |
UPDATE `eav_attribute` SET `frontend_label` = 'Active From' WHERE `eav_attribute`.`attribute_code` ='custom_design_from';
|
110 |
UPDATE `eav_attribute` SET `frontend_label` = 'Is product available for purchase with Google Checkout' WHERE `eav_attribute`.`attribute_code` ='enable_googlecheckout';
|
111 |
UPDATE `eav_attribute` SET `frontend_label` = 'Price View' WHERE `eav_attribute`.`attribute_code` ='price_view';
|
112 |
|
113 |
+
-- since Magento 1.6.x
|
114 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Country of Manufacture' WHERE `eav_attribute`.`attribute_code` ='country_of_manufacture';
|
115 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Manufacturer''s Suggested Retail Price' WHERE `eav_attribute`.`attribute_code` ='msrp';
|
116 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Display Actual Price' WHERE `eav_attribute`.`attribute_code` ='msrp_display_actual_price_type';
|
117 |
+
UPDATE `eav_attribute` SET `frontend_label` = 'Apply MAP' WHERE `eav_attribute`.`attribute_code` ='msrp_enabled';
|
118 |
+
|
119 |
/*
|
120 |
UPDATE `eav_attribute` SET `frontend_label` = 'Base Image Label' WHERE `eav_attribute`.`attribute_code` ='image_label';
|
121 |
UPDATE `eav_attribute` SET `frontend_label` = 'Short Image Label' WHERE `eav_attribute`.`attribute_code` ='small_image_label';
|
js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentovariable/editor_plugin_de.js
CHANGED
@@ -23,10 +23,10 @@
|
|
23 |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
24 |
*/
|
25 |
|
26 |
-
tinyMCE.addI18n({
|
27 |
magentovariable:
|
28 |
{
|
29 |
-
insert_variable : "Variable
|
30 |
}
|
31 |
}});
|
32 |
|
@@ -45,7 +45,7 @@ tinyMCE.addI18n({de:{
|
|
45 |
|
46 |
// Register Widget plugin button
|
47 |
ed.addButton('magentovariable', {
|
48 |
-
title : '
|
49 |
cmd : 'mceMagentovariable',
|
50 |
image : url + '/img/icon.gif'
|
51 |
});
|
23 |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
24 |
*/
|
25 |
|
26 |
+
tinyMCE.addI18n({en:{
|
27 |
magentovariable:
|
28 |
{
|
29 |
+
insert_variable : "Insert Variable"
|
30 |
}
|
31 |
}});
|
32 |
|
45 |
|
46 |
// Register Widget plugin button
|
47 |
ed.addButton('magentovariable', {
|
48 |
+
title : 'Variable hinzuf\u00fcgen',
|
49 |
cmd : 'mceMagentovariable',
|
50 |
image : url + '/img/icon.gif'
|
51 |
});
|
js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentowidget/editor_plugin_de.js
CHANGED
@@ -22,10 +22,10 @@
|
|
22 |
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
23 |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
24 |
*/
|
25 |
-
tinyMCE.addI18n({
|
26 |
magentowidget:
|
27 |
{
|
28 |
-
insert_widget : "Widget
|
29 |
}
|
30 |
}});
|
31 |
|
@@ -46,8 +46,7 @@ tinyMCE.addI18n({de:{
|
|
46 |
|
47 |
// Register Widget plugin button
|
48 |
ed.addButton('magentowidget', {
|
49 |
-
|
50 |
-
title : 'magentowidget.insert_widget',
|
51 |
cmd : 'mceMagentowidget',
|
52 |
image : url + '/img/icon.gif'
|
53 |
});
|
22 |
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
23 |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
24 |
*/
|
25 |
+
tinyMCE.addI18n({en:{
|
26 |
magentowidget:
|
27 |
{
|
28 |
+
insert_widget : "Insert Widget"
|
29 |
}
|
30 |
}});
|
31 |
|
46 |
|
47 |
// Register Widget plugin button
|
48 |
ed.addButton('magentowidget', {
|
49 |
+
title : 'Widget hinzuf\u00fcgen',
|
|
|
50 |
cmd : 'mceMagentowidget',
|
51 |
image : url + '/img/icon.gif'
|
52 |
});
|
js/tiny_mce_german/classes/AddOnManager.js
CHANGED
@@ -1,109 +1,109 @@
|
|
1 |
-
/**
|
2 |
-
* AddOnManager.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* This class handles the loading of themes/plugins or other add-ons and their language packs.
|
16 |
-
*
|
17 |
-
* @class tinymce.AddOnManager
|
18 |
-
*/
|
19 |
-
tinymce.create('tinymce.AddOnManager', {
|
20 |
-
items : [],
|
21 |
-
urls : {},
|
22 |
-
lookup : {},
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Fires when a item is added.
|
26 |
-
*
|
27 |
-
* @event onAdd
|
28 |
-
*/
|
29 |
-
onAdd : new Dispatcher(this),
|
30 |
-
|
31 |
-
/**
|
32 |
-
* Returns the specified add on by the short name.
|
33 |
-
*
|
34 |
-
* @method get
|
35 |
-
* @param {String} n Add-on to look for.
|
36 |
-
* @return {tinymce.Theme/tinymce.Plugin} Theme or plugin add-on instance or undefined.
|
37 |
-
*/
|
38 |
-
get : function(n) {
|
39 |
-
return this.lookup[n];
|
40 |
-
},
|
41 |
-
|
42 |
-
/**
|
43 |
-
* Loads a language pack for the specified add-on.
|
44 |
-
*
|
45 |
-
* @method requireLangPack
|
46 |
-
* @param {String} n Short name of the add-on.
|
47 |
-
*/
|
48 |
-
requireLangPack : function(n) {
|
49 |
-
var s = tinymce.settings;
|
50 |
-
|
51 |
-
if (s && s.language)
|
52 |
-
tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js');
|
53 |
-
},
|
54 |
-
|
55 |
-
/**
|
56 |
-
* Adds a instance of the add-on by it's short name.
|
57 |
-
*
|
58 |
-
* @method add
|
59 |
-
* @param {String} id Short name/id for the add-on.
|
60 |
-
* @param {tinymce.Theme/tinymce.Plugin} o Theme or plugin to add.
|
61 |
-
* @return {tinymce.Theme/tinymce.Plugin} The same theme or plugin instance that got passed in.
|
62 |
-
*/
|
63 |
-
add : function(id, o) {
|
64 |
-
this.items.push(o);
|
65 |
-
this.lookup[id] = o;
|
66 |
-
this.onAdd.dispatch(this, id, o);
|
67 |
-
|
68 |
-
return o;
|
69 |
-
},
|
70 |
-
|
71 |
-
/**
|
72 |
-
* Loads an add-on from a specific url.
|
73 |
-
*
|
74 |
-
* @method load
|
75 |
-
* @param {String} n Short name of the add-on that gets loaded.
|
76 |
-
* @param {String} u URL to the add-on that will get loaded.
|
77 |
-
* @param {function} cb Optional callback to execute ones the add-on is loaded.
|
78 |
-
* @param {Object} s Optional scope to execute the callback in.
|
79 |
-
*/
|
80 |
-
load : function(n, u, cb, s) {
|
81 |
-
var t = this;
|
82 |
-
|
83 |
-
if (t.urls[n])
|
84 |
-
return;
|
85 |
-
|
86 |
-
if (u.indexOf('/') != 0 && u.indexOf('://') == -1)
|
87 |
-
u = tinymce.baseURL + '/' + u;
|
88 |
-
|
89 |
-
t.urls[n] = u.substring(0, u.lastIndexOf('/'));
|
90 |
-
tinymce.ScriptLoader.add(u, cb, s);
|
91 |
-
}
|
92 |
-
});
|
93 |
-
|
94 |
-
// Create plugin and theme managers
|
95 |
-
tinymce.PluginManager = new tinymce.AddOnManager();
|
96 |
-
tinymce.ThemeManager = new tinymce.AddOnManager();
|
97 |
-
}(tinymce));
|
98 |
-
|
99 |
-
/**
|
100 |
-
* TinyMCE theme class.
|
101 |
-
*
|
102 |
-
* @class tinymce.Theme
|
103 |
-
*/
|
104 |
-
|
105 |
-
/**
|
106 |
-
* TinyMCE plugin class.
|
107 |
-
*
|
108 |
-
* @class tinymce.Plugin
|
109 |
-
*/
|
1 |
+
/**
|
2 |
+
* AddOnManager.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This class handles the loading of themes/plugins or other add-ons and their language packs.
|
16 |
+
*
|
17 |
+
* @class tinymce.AddOnManager
|
18 |
+
*/
|
19 |
+
tinymce.create('tinymce.AddOnManager', {
|
20 |
+
items : [],
|
21 |
+
urls : {},
|
22 |
+
lookup : {},
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Fires when a item is added.
|
26 |
+
*
|
27 |
+
* @event onAdd
|
28 |
+
*/
|
29 |
+
onAdd : new Dispatcher(this),
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Returns the specified add on by the short name.
|
33 |
+
*
|
34 |
+
* @method get
|
35 |
+
* @param {String} n Add-on to look for.
|
36 |
+
* @return {tinymce.Theme/tinymce.Plugin} Theme or plugin add-on instance or undefined.
|
37 |
+
*/
|
38 |
+
get : function(n) {
|
39 |
+
return this.lookup[n];
|
40 |
+
},
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Loads a language pack for the specified add-on.
|
44 |
+
*
|
45 |
+
* @method requireLangPack
|
46 |
+
* @param {String} n Short name of the add-on.
|
47 |
+
*/
|
48 |
+
requireLangPack : function(n) {
|
49 |
+
var s = tinymce.settings;
|
50 |
+
|
51 |
+
if (s && s.language)
|
52 |
+
tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js');
|
53 |
+
},
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Adds a instance of the add-on by it's short name.
|
57 |
+
*
|
58 |
+
* @method add
|
59 |
+
* @param {String} id Short name/id for the add-on.
|
60 |
+
* @param {tinymce.Theme/tinymce.Plugin} o Theme or plugin to add.
|
61 |
+
* @return {tinymce.Theme/tinymce.Plugin} The same theme or plugin instance that got passed in.
|
62 |
+
*/
|
63 |
+
add : function(id, o) {
|
64 |
+
this.items.push(o);
|
65 |
+
this.lookup[id] = o;
|
66 |
+
this.onAdd.dispatch(this, id, o);
|
67 |
+
|
68 |
+
return o;
|
69 |
+
},
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Loads an add-on from a specific url.
|
73 |
+
*
|
74 |
+
* @method load
|
75 |
+
* @param {String} n Short name of the add-on that gets loaded.
|
76 |
+
* @param {String} u URL to the add-on that will get loaded.
|
77 |
+
* @param {function} cb Optional callback to execute ones the add-on is loaded.
|
78 |
+
* @param {Object} s Optional scope to execute the callback in.
|
79 |
+
*/
|
80 |
+
load : function(n, u, cb, s) {
|
81 |
+
var t = this;
|
82 |
+
|
83 |
+
if (t.urls[n])
|
84 |
+
return;
|
85 |
+
|
86 |
+
if (u.indexOf('/') != 0 && u.indexOf('://') == -1)
|
87 |
+
u = tinymce.baseURL + '/' + u;
|
88 |
+
|
89 |
+
t.urls[n] = u.substring(0, u.lastIndexOf('/'));
|
90 |
+
tinymce.ScriptLoader.add(u, cb, s);
|
91 |
+
}
|
92 |
+
});
|
93 |
+
|
94 |
+
// Create plugin and theme managers
|
95 |
+
tinymce.PluginManager = new tinymce.AddOnManager();
|
96 |
+
tinymce.ThemeManager = new tinymce.AddOnManager();
|
97 |
+
}(tinymce));
|
98 |
+
|
99 |
+
/**
|
100 |
+
* TinyMCE theme class.
|
101 |
+
*
|
102 |
+
* @class tinymce.Theme
|
103 |
+
*/
|
104 |
+
|
105 |
+
/**
|
106 |
+
* TinyMCE plugin class.
|
107 |
+
*
|
108 |
+
* @class tinymce.Plugin
|
109 |
+
*/
|
js/tiny_mce_german/classes/CommandManager.js
CHANGED
@@ -1,57 +1,57 @@
|
|
1 |
-
/**
|
2 |
-
* TinyMCE - ContentManager class.
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
function CommandManager() {
|
13 |
-
var execCommands = {}, queryStateCommands = {}, queryValueCommands = {};
|
14 |
-
|
15 |
-
function add(collection, cmd, func, scope) {
|
16 |
-
if (typeof(cmd) == 'string')
|
17 |
-
cmd = [cmd];
|
18 |
-
|
19 |
-
tinymce.each(cmd, function(cmd) {
|
20 |
-
collection[cmd.toLowerCase()] = {func : func, scope : scope};
|
21 |
-
});
|
22 |
-
};
|
23 |
-
|
24 |
-
tinymce.extend(this, {
|
25 |
-
add : function(cmd, func, scope) {
|
26 |
-
add(execCommands, cmd, func, scope);
|
27 |
-
},
|
28 |
-
|
29 |
-
addQueryStateHandler : function(cmd, func, scope) {
|
30 |
-
add(queryStateCommands, cmd, func, scope);
|
31 |
-
},
|
32 |
-
|
33 |
-
addQueryValueHandler : function(cmd, func, scope) {
|
34 |
-
add(queryValueCommands, cmd, func, scope);
|
35 |
-
},
|
36 |
-
|
37 |
-
execCommand : function(scope, cmd, ui, value, args) {
|
38 |
-
if (cmd = execCommands[cmd.toLowerCase()]) {
|
39 |
-
if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false)
|
40 |
-
return true;
|
41 |
-
}
|
42 |
-
},
|
43 |
-
|
44 |
-
queryCommandValue : function() {
|
45 |
-
if (cmd = queryValueCommands[cmd.toLowerCase()])
|
46 |
-
return cmd.func.call(scope || cmd.scope, ui, value, args);
|
47 |
-
},
|
48 |
-
|
49 |
-
queryCommandState : function() {
|
50 |
-
if (cmd = queryStateCommands[cmd.toLowerCase()])
|
51 |
-
return cmd.func.call(scope || cmd.scope, ui, value, args);
|
52 |
-
}
|
53 |
-
});
|
54 |
-
};
|
55 |
-
|
56 |
-
tinymce.GlobalCommands = new CommandManager();
|
57 |
})(tinymce);
|
1 |
+
/**
|
2 |
+
* TinyMCE - ContentManager class.
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
function CommandManager() {
|
13 |
+
var execCommands = {}, queryStateCommands = {}, queryValueCommands = {};
|
14 |
+
|
15 |
+
function add(collection, cmd, func, scope) {
|
16 |
+
if (typeof(cmd) == 'string')
|
17 |
+
cmd = [cmd];
|
18 |
+
|
19 |
+
tinymce.each(cmd, function(cmd) {
|
20 |
+
collection[cmd.toLowerCase()] = {func : func, scope : scope};
|
21 |
+
});
|
22 |
+
};
|
23 |
+
|
24 |
+
tinymce.extend(this, {
|
25 |
+
add : function(cmd, func, scope) {
|
26 |
+
add(execCommands, cmd, func, scope);
|
27 |
+
},
|
28 |
+
|
29 |
+
addQueryStateHandler : function(cmd, func, scope) {
|
30 |
+
add(queryStateCommands, cmd, func, scope);
|
31 |
+
},
|
32 |
+
|
33 |
+
addQueryValueHandler : function(cmd, func, scope) {
|
34 |
+
add(queryValueCommands, cmd, func, scope);
|
35 |
+
},
|
36 |
+
|
37 |
+
execCommand : function(scope, cmd, ui, value, args) {
|
38 |
+
if (cmd = execCommands[cmd.toLowerCase()]) {
|
39 |
+
if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false)
|
40 |
+
return true;
|
41 |
+
}
|
42 |
+
},
|
43 |
+
|
44 |
+
queryCommandValue : function() {
|
45 |
+
if (cmd = queryValueCommands[cmd.toLowerCase()])
|
46 |
+
return cmd.func.call(scope || cmd.scope, ui, value, args);
|
47 |
+
},
|
48 |
+
|
49 |
+
queryCommandState : function() {
|
50 |
+
if (cmd = queryStateCommands[cmd.toLowerCase()])
|
51 |
+
return cmd.func.call(scope || cmd.scope, ui, value, args);
|
52 |
+
}
|
53 |
+
});
|
54 |
+
};
|
55 |
+
|
56 |
+
tinymce.GlobalCommands = new CommandManager();
|
57 |
})(tinymce);
|
js/tiny_mce_german/classes/ControlManager.js
CHANGED
@@ -1,507 +1,507 @@
|
|
1 |
-
/**
|
2 |
-
* ControlManager.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
// Shorten names
|
13 |
-
var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
|
14 |
-
|
15 |
-
/**
|
16 |
-
* This class is responsible for managing UI control instances. It's both a factory and a collection for the controls.
|
17 |
-
* @class tinymce.ControlManager
|
18 |
-
*/
|
19 |
-
tinymce.create('tinymce.ControlManager', {
|
20 |
-
/**
|
21 |
-
* Constructs a new control manager instance.
|
22 |
-
* Consult the Wiki for more details on this class.
|
23 |
-
*
|
24 |
-
* @constructor
|
25 |
-
* @method ControlManager
|
26 |
-
* @param {tinymce.Editor} ed TinyMCE editor instance to add the control to.
|
27 |
-
* @param {Object} s Optional settings object for the control manager.
|
28 |
-
*/
|
29 |
-
ControlManager : function(ed, s) {
|
30 |
-
var t = this, i;
|
31 |
-
|
32 |
-
s = s || {};
|
33 |
-
t.editor = ed;
|
34 |
-
t.controls = {};
|
35 |
-
t.onAdd = new tinymce.util.Dispatcher(t);
|
36 |
-
t.onPostRender = new tinymce.util.Dispatcher(t);
|
37 |
-
t.prefix = s.prefix || ed.id + '_';
|
38 |
-
t._cls = {};
|
39 |
-
|
40 |
-
t.onPostRender.add(function() {
|
41 |
-
each(t.controls, function(c) {
|
42 |
-
c.postRender();
|
43 |
-
});
|
44 |
-
});
|
45 |
-
},
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Returns a control by id or undefined it it wasn't found.
|
49 |
-
*
|
50 |
-
* @method get
|
51 |
-
* @param {String} id Control instance name.
|
52 |
-
* @return {tinymce.ui.Control} Control instance or undefined.
|
53 |
-
*/
|
54 |
-
get : function(id) {
|
55 |
-
return this.controls[this.prefix + id] || this.controls[id];
|
56 |
-
},
|
57 |
-
|
58 |
-
/**
|
59 |
-
* Sets the active state of a control by id.
|
60 |
-
*
|
61 |
-
* @method setActive
|
62 |
-
* @param {String} id Control id to set state on.
|
63 |
-
* @param {Boolean} s Active state true/false.
|
64 |
-
* @return {tinymce.ui.Control} Control instance that got activated or null if it wasn't found.
|
65 |
-
*/
|
66 |
-
setActive : function(id, s) {
|
67 |
-
var c = null;
|
68 |
-
|
69 |
-
if (c = this.get(id))
|
70 |
-
c.setActive(s);
|
71 |
-
|
72 |
-
return c;
|
73 |
-
},
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Sets the dsiabled state of a control by id.
|
77 |
-
*
|
78 |
-
* @method setDisabled
|
79 |
-
* @param {String} id Control id to set state on.
|
80 |
-
* @param {Boolean} s Active state true/false.
|
81 |
-
* @return {tinymce.ui.Control} Control instance that got disabled or null if it wasn't found.
|
82 |
-
*/
|
83 |
-
setDisabled : function(id, s) {
|
84 |
-
var c = null;
|
85 |
-
|
86 |
-
if (c = this.get(id))
|
87 |
-
c.setDisabled(s);
|
88 |
-
|
89 |
-
return c;
|
90 |
-
},
|
91 |
-
|
92 |
-
/**
|
93 |
-
* Adds a control to the control collection inside the manager.
|
94 |
-
*
|
95 |
-
* @method add
|
96 |
-
* @param {tinymce.ui.Control} Control instance to add to collection.
|
97 |
-
* @return {tinymce.ui.Control} Control instance that got passed in.
|
98 |
-
*/
|
99 |
-
add : function(c) {
|
100 |
-
var t = this;
|
101 |
-
|
102 |
-
if (c) {
|
103 |
-
t.controls[c.id] = c;
|
104 |
-
t.onAdd.dispatch(c, t);
|
105 |
-
}
|
106 |
-
|
107 |
-
return c;
|
108 |
-
},
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Creates a control by name, when a control is created it will automatically add it to the control collection.
|
112 |
-
* It first ask all plugins for the specified control if the plugins didn't return a control then the default behavior
|
113 |
-
* will be used.
|
114 |
-
*
|
115 |
-
* @method createControl
|
116 |
-
* @param {String} n Control name to create for example "separator".
|
117 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
118 |
-
*/
|
119 |
-
createControl : function(n) {
|
120 |
-
var c, t = this, ed = t.editor;
|
121 |
-
|
122 |
-
each(ed.plugins, function(p) {
|
123 |
-
if (p.createControl) {
|
124 |
-
c = p.createControl(n, t);
|
125 |
-
|
126 |
-
if (c)
|
127 |
-
return false;
|
128 |
-
}
|
129 |
-
});
|
130 |
-
|
131 |
-
switch (n) {
|
132 |
-
case "|":
|
133 |
-
case "separator":
|
134 |
-
return t.createSeparator();
|
135 |
-
}
|
136 |
-
|
137 |
-
if (!c && ed.buttons && (c = ed.buttons[n]))
|
138 |
-
return t.createButton(n, c);
|
139 |
-
|
140 |
-
return t.add(c);
|
141 |
-
},
|
142 |
-
|
143 |
-
/**
|
144 |
-
* Creates a drop menu control instance by id.
|
145 |
-
*
|
146 |
-
* @method createDropMenu
|
147 |
-
* @param {String} id Unique id for the new dropdown instance. For example "some menu".
|
148 |
-
* @param {Object} s Optional settings object for the control.
|
149 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
150 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
151 |
-
*/
|
152 |
-
createDropMenu : function(id, s, cc) {
|
153 |
-
var t = this, ed = t.editor, c, bm, v, cls;
|
154 |
-
|
155 |
-
s = extend({
|
156 |
-
'class' : 'mceDropDown',
|
157 |
-
constrain : ed.settings.constrain_menus
|
158 |
-
}, s);
|
159 |
-
|
160 |
-
s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
|
161 |
-
if (v = ed.getParam('skin_variant'))
|
162 |
-
s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
|
163 |
-
|
164 |
-
id = t.prefix + id;
|
165 |
-
cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
|
166 |
-
c = t.controls[id] = new cls(id, s);
|
167 |
-
c.onAddItem.add(function(c, o) {
|
168 |
-
var s = o.settings;
|
169 |
-
|
170 |
-
s.title = ed.getLang(s.title, s.title);
|
171 |
-
|
172 |
-
if (!s.onclick) {
|
173 |
-
s.onclick = function(v) {
|
174 |
-
if (s.cmd)
|
175 |
-
ed.execCommand(s.cmd, s.ui || false, s.value);
|
176 |
-
};
|
177 |
-
}
|
178 |
-
});
|
179 |
-
|
180 |
-
ed.onRemove.add(function() {
|
181 |
-
c.destroy();
|
182 |
-
});
|
183 |
-
|
184 |
-
// Fix for bug #1897785, #1898007
|
185 |
-
if (tinymce.isIE) {
|
186 |
-
c.onShowMenu.add(function() {
|
187 |
-
// IE 8 needs focus in order to store away a range with the current collapsed caret location
|
188 |
-
ed.focus();
|
189 |
-
|
190 |
-
bm = ed.selection.getBookmark(1);
|
191 |
-
});
|
192 |
-
|
193 |
-
c.onHideMenu.add(function() {
|
194 |
-
if (bm) {
|
195 |
-
ed.selection.moveToBookmark(bm);
|
196 |
-
bm = 0;
|
197 |
-
}
|
198 |
-
});
|
199 |
-
}
|
200 |
-
|
201 |
-
return t.add(c);
|
202 |
-
},
|
203 |
-
|
204 |
-
/**
|
205 |
-
* Creates a list box control instance by id. A list box is either a native select element or a DOM/JS based list box control. This
|
206 |
-
* depends on the use_native_selects settings state.
|
207 |
-
*
|
208 |
-
* @method createListBox
|
209 |
-
* @param {String} id Unique id for the new listbox instance. For example "styles".
|
210 |
-
* @param {Object} s Optional settings object for the control.
|
211 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
212 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
213 |
-
*/
|
214 |
-
createListBox : function(id, s, cc) {
|
215 |
-
var t = this, ed = t.editor, cmd, c, cls;
|
216 |
-
|
217 |
-
if (t.get(id))
|
218 |
-
return null;
|
219 |
-
|
220 |
-
s.title = ed.translate(s.title);
|
221 |
-
s.scope = s.scope || ed;
|
222 |
-
|
223 |
-
if (!s.onselect) {
|
224 |
-
s.onselect = function(v) {
|
225 |
-
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
226 |
-
};
|
227 |
-
}
|
228 |
-
|
229 |
-
s = extend({
|
230 |
-
title : s.title,
|
231 |
-
'class' : 'mce_' + id,
|
232 |
-
scope : s.scope,
|
233 |
-
control_manager : t
|
234 |
-
}, s);
|
235 |
-
|
236 |
-
id = t.prefix + id;
|
237 |
-
|
238 |
-
if (ed.settings.use_native_selects)
|
239 |
-
c = new tinymce.ui.NativeListBox(id, s);
|
240 |
-
else {
|
241 |
-
cls = cc || t._cls.listbox || tinymce.ui.ListBox;
|
242 |
-
c = new cls(id, s);
|
243 |
-
}
|
244 |
-
|
245 |
-
t.controls[id] = c;
|
246 |
-
|
247 |
-
// Fix focus problem in Safari
|
248 |
-
if (tinymce.isWebKit) {
|
249 |
-
c.onPostRender.add(function(c, n) {
|
250 |
-
// Store bookmark on mousedown
|
251 |
-
Event.add(n, 'mousedown', function() {
|
252 |
-
ed.bookmark = ed.selection.getBookmark(1);
|
253 |
-
});
|
254 |
-
|
255 |
-
// Restore on focus, since it might be lost
|
256 |
-
Event.add(n, 'focus', function() {
|
257 |
-
ed.selection.moveToBookmark(ed.bookmark);
|
258 |
-
ed.bookmark = null;
|
259 |
-
});
|
260 |
-
});
|
261 |
-
}
|
262 |
-
|
263 |
-
if (c.hideMenu)
|
264 |
-
ed.onMouseDown.add(c.hideMenu, c);
|
265 |
-
|
266 |
-
return t.add(c);
|
267 |
-
},
|
268 |
-
|
269 |
-
/**
|
270 |
-
* Creates a button control instance by id.
|
271 |
-
*
|
272 |
-
* @method createButton
|
273 |
-
* @param {String} id Unique id for the new button instance. For example "bold".
|
274 |
-
* @param {Object} s Optional settings object for the control.
|
275 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
276 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
277 |
-
*/
|
278 |
-
createButton : function(id, s, cc) {
|
279 |
-
var t = this, ed = t.editor, o, c, cls;
|
280 |
-
|
281 |
-
if (t.get(id))
|
282 |
-
return null;
|
283 |
-
|
284 |
-
s.title = ed.translate(s.title);
|
285 |
-
s.label = ed.translate(s.label);
|
286 |
-
s.scope = s.scope || ed;
|
287 |
-
|
288 |
-
if (!s.onclick && !s.menu_button) {
|
289 |
-
s.onclick = function() {
|
290 |
-
ed.execCommand(s.cmd, s.ui || false, s.value);
|
291 |
-
};
|
292 |
-
}
|
293 |
-
|
294 |
-
s = extend({
|
295 |
-
title : s.title,
|
296 |
-
'class' : 'mce_' + id,
|
297 |
-
unavailable_prefix : ed.getLang('unavailable', ''),
|
298 |
-
scope : s.scope,
|
299 |
-
control_manager : t
|
300 |
-
}, s);
|
301 |
-
|
302 |
-
id = t.prefix + id;
|
303 |
-
|
304 |
-
if (s.menu_button) {
|
305 |
-
cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
|
306 |
-
c = new cls(id, s);
|
307 |
-
ed.onMouseDown.add(c.hideMenu, c);
|
308 |
-
} else {
|
309 |
-
cls = t._cls.button || tinymce.ui.Button;
|
310 |
-
c = new cls(id, s);
|
311 |
-
}
|
312 |
-
|
313 |
-
return t.add(c);
|
314 |
-
},
|
315 |
-
|
316 |
-
/**
|
317 |
-
* Creates a menu button control instance by id.
|
318 |
-
*
|
319 |
-
* @method createMenuButton
|
320 |
-
* @param {String} id Unique id for the new menu button instance. For example "menu1".
|
321 |
-
* @param {Object} s Optional settings object for the control.
|
322 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
323 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
324 |
-
*/
|
325 |
-
createMenuButton : function(id, s, cc) {
|
326 |
-
s = s || {};
|
327 |
-
s.menu_button = 1;
|
328 |
-
|
329 |
-
return this.createButton(id, s, cc);
|
330 |
-
},
|
331 |
-
|
332 |
-
/**
|
333 |
-
* Creates a split button control instance by id.
|
334 |
-
*
|
335 |
-
* @method createSplitButton
|
336 |
-
* @param {String} id Unique id for the new split button instance. For example "spellchecker".
|
337 |
-
* @param {Object} s Optional settings object for the control.
|
338 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
339 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
340 |
-
*/
|
341 |
-
createSplitButton : function(id, s, cc) {
|
342 |
-
var t = this, ed = t.editor, cmd, c, cls;
|
343 |
-
|
344 |
-
if (t.get(id))
|
345 |
-
return null;
|
346 |
-
|
347 |
-
s.title = ed.translate(s.title);
|
348 |
-
s.scope = s.scope || ed;
|
349 |
-
|
350 |
-
if (!s.onclick) {
|
351 |
-
s.onclick = function(v) {
|
352 |
-
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
353 |
-
};
|
354 |
-
}
|
355 |
-
|
356 |
-
if (!s.onselect) {
|
357 |
-
s.onselect = function(v) {
|
358 |
-
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
359 |
-
};
|
360 |
-
}
|
361 |
-
|
362 |
-
s = extend({
|
363 |
-
title : s.title,
|
364 |
-
'class' : 'mce_' + id,
|
365 |
-
scope : s.scope,
|
366 |
-
control_manager : t
|
367 |
-
}, s);
|
368 |
-
|
369 |
-
id = t.prefix + id;
|
370 |
-
cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
|
371 |
-
c = t.add(new cls(id, s));
|
372 |
-
ed.onMouseDown.add(c.hideMenu, c);
|
373 |
-
|
374 |
-
return c;
|
375 |
-
},
|
376 |
-
|
377 |
-
/**
|
378 |
-
* Creates a color split button control instance by id.
|
379 |
-
*
|
380 |
-
* @method createColorSplitButton
|
381 |
-
* @param {String} id Unique id for the new color split button instance. For example "forecolor".
|
382 |
-
* @param {Object} s Optional settings object for the control.
|
383 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
384 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
385 |
-
*/
|
386 |
-
createColorSplitButton : function(id, s, cc) {
|
387 |
-
var t = this, ed = t.editor, cmd, c, cls, bm;
|
388 |
-
|
389 |
-
if (t.get(id))
|
390 |
-
return null;
|
391 |
-
|
392 |
-
s.title = ed.translate(s.title);
|
393 |
-
s.scope = s.scope || ed;
|
394 |
-
|
395 |
-
if (!s.onclick) {
|
396 |
-
s.onclick = function(v) {
|
397 |
-
if (tinymce.isIE)
|
398 |
-
bm = ed.selection.getBookmark(1);
|
399 |
-
|
400 |
-
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
401 |
-
};
|
402 |
-
}
|
403 |
-
|
404 |
-
if (!s.onselect) {
|
405 |
-
s.onselect = function(v) {
|
406 |
-
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
407 |
-
};
|
408 |
-
}
|
409 |
-
|
410 |
-
s = extend({
|
411 |
-
title : s.title,
|
412 |
-
'class' : 'mce_' + id,
|
413 |
-
'menu_class' : ed.getParam('skin') + 'Skin',
|
414 |
-
scope : s.scope,
|
415 |
-
more_colors_title : ed.getLang('more_colors')
|
416 |
-
}, s);
|
417 |
-
|
418 |
-
id = t.prefix + id;
|
419 |
-
cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
|
420 |
-
c = new cls(id, s);
|
421 |
-
ed.onMouseDown.add(c.hideMenu, c);
|
422 |
-
|
423 |
-
// Remove the menu element when the editor is removed
|
424 |
-
ed.onRemove.add(function() {
|
425 |
-
c.destroy();
|
426 |
-
});
|
427 |
-
|
428 |
-
// Fix for bug #1897785, #1898007
|
429 |
-
if (tinymce.isIE) {
|
430 |
-
c.onShowMenu.add(function() {
|
431 |
-
// IE 8 needs focus in order to store away a range with the current collapsed caret location
|
432 |
-
ed.focus();
|
433 |
-
bm = ed.selection.getBookmark(1);
|
434 |
-
});
|
435 |
-
|
436 |
-
c.onHideMenu.add(function() {
|
437 |
-
if (bm) {
|
438 |
-
ed.selection.moveToBookmark(bm);
|
439 |
-
bm = 0;
|
440 |
-
}
|
441 |
-
});
|
442 |
-
}
|
443 |
-
|
444 |
-
return t.add(c);
|
445 |
-
},
|
446 |
-
|
447 |
-
/**
|
448 |
-
* Creates a toolbar container control instance by id.
|
449 |
-
*
|
450 |
-
* @method createToolbar
|
451 |
-
* @param {String} id Unique id for the new toolbar container control instance. For example "toolbar1".
|
452 |
-
* @param {Object} s Optional settings object for the control.
|
453 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
454 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
455 |
-
*/
|
456 |
-
createToolbar : function(id, s, cc) {
|
457 |
-
var c, t = this, cls;
|
458 |
-
|
459 |
-
id = t.prefix + id;
|
460 |
-
cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
|
461 |
-
c = new cls(id, s);
|
462 |
-
|
463 |
-
if (t.get(id))
|
464 |
-
return null;
|
465 |
-
|
466 |
-
return t.add(c);
|
467 |
-
},
|
468 |
-
|
469 |
-
/**
|
470 |
-
* Creates a separator control instance.
|
471 |
-
*
|
472 |
-
* @method createSeparator
|
473 |
-
* @param {Object} cc Optional control class to use instead of the default one.
|
474 |
-
* @return {tinymce.ui.Control} Control instance that got created and added.
|
475 |
-
*/
|
476 |
-
createSeparator : function(cc) {
|
477 |
-
var cls = cc || this._cls.separator || tinymce.ui.Separator;
|
478 |
-
|
479 |
-
return new cls();
|
480 |
-
},
|
481 |
-
|
482 |
-
/**
|
483 |
-
* Overrides a specific control type with a custom class.
|
484 |
-
*
|
485 |
-
* @method setControlType
|
486 |
-
* @param {string} n Name of the control to override for example button or dropmenu.
|
487 |
-
* @param {function} c Class reference to use instead of the default one.
|
488 |
-
* @return {function} Same as the class reference.
|
489 |
-
*/
|
490 |
-
setControlType : function(n, c) {
|
491 |
-
return this._cls[n.toLowerCase()] = c;
|
492 |
-
},
|
493 |
-
|
494 |
-
/**
|
495 |
-
* Destroy.
|
496 |
-
*
|
497 |
-
* @method destroy
|
498 |
-
*/
|
499 |
-
destroy : function() {
|
500 |
-
each(this.controls, function(c) {
|
501 |
-
c.destroy();
|
502 |
-
});
|
503 |
-
|
504 |
-
this.controls = null;
|
505 |
-
}
|
506 |
-
});
|
507 |
-
})(tinymce);
|
1 |
+
/**
|
2 |
+
* ControlManager.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
// Shorten names
|
13 |
+
var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* This class is responsible for managing UI control instances. It's both a factory and a collection for the controls.
|
17 |
+
* @class tinymce.ControlManager
|
18 |
+
*/
|
19 |
+
tinymce.create('tinymce.ControlManager', {
|
20 |
+
/**
|
21 |
+
* Constructs a new control manager instance.
|
22 |
+
* Consult the Wiki for more details on this class.
|
23 |
+
*
|
24 |
+
* @constructor
|
25 |
+
* @method ControlManager
|
26 |
+
* @param {tinymce.Editor} ed TinyMCE editor instance to add the control to.
|
27 |
+
* @param {Object} s Optional settings object for the control manager.
|
28 |
+
*/
|
29 |
+
ControlManager : function(ed, s) {
|
30 |
+
var t = this, i;
|
31 |
+
|
32 |
+
s = s || {};
|
33 |
+
t.editor = ed;
|
34 |
+
t.controls = {};
|
35 |
+
t.onAdd = new tinymce.util.Dispatcher(t);
|
36 |
+
t.onPostRender = new tinymce.util.Dispatcher(t);
|
37 |
+
t.prefix = s.prefix || ed.id + '_';
|
38 |
+
t._cls = {};
|
39 |
+
|
40 |
+
t.onPostRender.add(function() {
|
41 |
+
each(t.controls, function(c) {
|
42 |
+
c.postRender();
|
43 |
+
});
|
44 |
+
});
|
45 |
+
},
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Returns a control by id or undefined it it wasn't found.
|
49 |
+
*
|
50 |
+
* @method get
|
51 |
+
* @param {String} id Control instance name.
|
52 |
+
* @return {tinymce.ui.Control} Control instance or undefined.
|
53 |
+
*/
|
54 |
+
get : function(id) {
|
55 |
+
return this.controls[this.prefix + id] || this.controls[id];
|
56 |
+
},
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Sets the active state of a control by id.
|
60 |
+
*
|
61 |
+
* @method setActive
|
62 |
+
* @param {String} id Control id to set state on.
|
63 |
+
* @param {Boolean} s Active state true/false.
|
64 |
+
* @return {tinymce.ui.Control} Control instance that got activated or null if it wasn't found.
|
65 |
+
*/
|
66 |
+
setActive : function(id, s) {
|
67 |
+
var c = null;
|
68 |
+
|
69 |
+
if (c = this.get(id))
|
70 |
+
c.setActive(s);
|
71 |
+
|
72 |
+
return c;
|
73 |
+
},
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Sets the dsiabled state of a control by id.
|
77 |
+
*
|
78 |
+
* @method setDisabled
|
79 |
+
* @param {String} id Control id to set state on.
|
80 |
+
* @param {Boolean} s Active state true/false.
|
81 |
+
* @return {tinymce.ui.Control} Control instance that got disabled or null if it wasn't found.
|
82 |
+
*/
|
83 |
+
setDisabled : function(id, s) {
|
84 |
+
var c = null;
|
85 |
+
|
86 |
+
if (c = this.get(id))
|
87 |
+
c.setDisabled(s);
|
88 |
+
|
89 |
+
return c;
|
90 |
+
},
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Adds a control to the control collection inside the manager.
|
94 |
+
*
|
95 |
+
* @method add
|
96 |
+
* @param {tinymce.ui.Control} Control instance to add to collection.
|
97 |
+
* @return {tinymce.ui.Control} Control instance that got passed in.
|
98 |
+
*/
|
99 |
+
add : function(c) {
|
100 |
+
var t = this;
|
101 |
+
|
102 |
+
if (c) {
|
103 |
+
t.controls[c.id] = c;
|
104 |
+
t.onAdd.dispatch(c, t);
|
105 |
+
}
|
106 |
+
|
107 |
+
return c;
|
108 |
+
},
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Creates a control by name, when a control is created it will automatically add it to the control collection.
|
112 |
+
* It first ask all plugins for the specified control if the plugins didn't return a control then the default behavior
|
113 |
+
* will be used.
|
114 |
+
*
|
115 |
+
* @method createControl
|
116 |
+
* @param {String} n Control name to create for example "separator".
|
117 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
118 |
+
*/
|
119 |
+
createControl : function(n) {
|
120 |
+
var c, t = this, ed = t.editor;
|
121 |
+
|
122 |
+
each(ed.plugins, function(p) {
|
123 |
+
if (p.createControl) {
|
124 |
+
c = p.createControl(n, t);
|
125 |
+
|
126 |
+
if (c)
|
127 |
+
return false;
|
128 |
+
}
|
129 |
+
});
|
130 |
+
|
131 |
+
switch (n) {
|
132 |
+
case "|":
|
133 |
+
case "separator":
|
134 |
+
return t.createSeparator();
|
135 |
+
}
|
136 |
+
|
137 |
+
if (!c && ed.buttons && (c = ed.buttons[n]))
|
138 |
+
return t.createButton(n, c);
|
139 |
+
|
140 |
+
return t.add(c);
|
141 |
+
},
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Creates a drop menu control instance by id.
|
145 |
+
*
|
146 |
+
* @method createDropMenu
|
147 |
+
* @param {String} id Unique id for the new dropdown instance. For example "some menu".
|
148 |
+
* @param {Object} s Optional settings object for the control.
|
149 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
150 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
151 |
+
*/
|
152 |
+
createDropMenu : function(id, s, cc) {
|
153 |
+
var t = this, ed = t.editor, c, bm, v, cls;
|
154 |
+
|
155 |
+
s = extend({
|
156 |
+
'class' : 'mceDropDown',
|
157 |
+
constrain : ed.settings.constrain_menus
|
158 |
+
}, s);
|
159 |
+
|
160 |
+
s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
|
161 |
+
if (v = ed.getParam('skin_variant'))
|
162 |
+
s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
|
163 |
+
|
164 |
+
id = t.prefix + id;
|
165 |
+
cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
|
166 |
+
c = t.controls[id] = new cls(id, s);
|
167 |
+
c.onAddItem.add(function(c, o) {
|
168 |
+
var s = o.settings;
|
169 |
+
|
170 |
+
s.title = ed.getLang(s.title, s.title);
|
171 |
+
|
172 |
+
if (!s.onclick) {
|
173 |
+
s.onclick = function(v) {
|
174 |
+
if (s.cmd)
|
175 |
+
ed.execCommand(s.cmd, s.ui || false, s.value);
|
176 |
+
};
|
177 |
+
}
|
178 |
+
});
|
179 |
+
|
180 |
+
ed.onRemove.add(function() {
|
181 |
+
c.destroy();
|
182 |
+
});
|
183 |
+
|
184 |
+
// Fix for bug #1897785, #1898007
|
185 |
+
if (tinymce.isIE) {
|
186 |
+
c.onShowMenu.add(function() {
|
187 |
+
// IE 8 needs focus in order to store away a range with the current collapsed caret location
|
188 |
+
ed.focus();
|
189 |
+
|
190 |
+
bm = ed.selection.getBookmark(1);
|
191 |
+
});
|
192 |
+
|
193 |
+
c.onHideMenu.add(function() {
|
194 |
+
if (bm) {
|
195 |
+
ed.selection.moveToBookmark(bm);
|
196 |
+
bm = 0;
|
197 |
+
}
|
198 |
+
});
|
199 |
+
}
|
200 |
+
|
201 |
+
return t.add(c);
|
202 |
+
},
|
203 |
+
|
204 |
+
/**
|
205 |
+
* Creates a list box control instance by id. A list box is either a native select element or a DOM/JS based list box control. This
|
206 |
+
* depends on the use_native_selects settings state.
|
207 |
+
*
|
208 |
+
* @method createListBox
|
209 |
+
* @param {String} id Unique id for the new listbox instance. For example "styles".
|
210 |
+
* @param {Object} s Optional settings object for the control.
|
211 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
212 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
213 |
+
*/
|
214 |
+
createListBox : function(id, s, cc) {
|
215 |
+
var t = this, ed = t.editor, cmd, c, cls;
|
216 |
+
|
217 |
+
if (t.get(id))
|
218 |
+
return null;
|
219 |
+
|
220 |
+
s.title = ed.translate(s.title);
|
221 |
+
s.scope = s.scope || ed;
|
222 |
+
|
223 |
+
if (!s.onselect) {
|
224 |
+
s.onselect = function(v) {
|
225 |
+
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
226 |
+
};
|
227 |
+
}
|
228 |
+
|
229 |
+
s = extend({
|
230 |
+
title : s.title,
|
231 |
+
'class' : 'mce_' + id,
|
232 |
+
scope : s.scope,
|
233 |
+
control_manager : t
|
234 |
+
}, s);
|
235 |
+
|
236 |
+
id = t.prefix + id;
|
237 |
+
|
238 |
+
if (ed.settings.use_native_selects)
|
239 |
+
c = new tinymce.ui.NativeListBox(id, s);
|
240 |
+
else {
|
241 |
+
cls = cc || t._cls.listbox || tinymce.ui.ListBox;
|
242 |
+
c = new cls(id, s);
|
243 |
+
}
|
244 |
+
|
245 |
+
t.controls[id] = c;
|
246 |
+
|
247 |
+
// Fix focus problem in Safari
|
248 |
+
if (tinymce.isWebKit) {
|
249 |
+
c.onPostRender.add(function(c, n) {
|
250 |
+
// Store bookmark on mousedown
|
251 |
+
Event.add(n, 'mousedown', function() {
|
252 |
+
ed.bookmark = ed.selection.getBookmark(1);
|
253 |
+
});
|
254 |
+
|
255 |
+
// Restore on focus, since it might be lost
|
256 |
+
Event.add(n, 'focus', function() {
|
257 |
+
ed.selection.moveToBookmark(ed.bookmark);
|
258 |
+
ed.bookmark = null;
|
259 |
+
});
|
260 |
+
});
|
261 |
+
}
|
262 |
+
|
263 |
+
if (c.hideMenu)
|
264 |
+
ed.onMouseDown.add(c.hideMenu, c);
|
265 |
+
|
266 |
+
return t.add(c);
|
267 |
+
},
|
268 |
+
|
269 |
+
/**
|
270 |
+
* Creates a button control instance by id.
|
271 |
+
*
|
272 |
+
* @method createButton
|
273 |
+
* @param {String} id Unique id for the new button instance. For example "bold".
|
274 |
+
* @param {Object} s Optional settings object for the control.
|
275 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
276 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
277 |
+
*/
|
278 |
+
createButton : function(id, s, cc) {
|
279 |
+
var t = this, ed = t.editor, o, c, cls;
|
280 |
+
|
281 |
+
if (t.get(id))
|
282 |
+
return null;
|
283 |
+
|
284 |
+
s.title = ed.translate(s.title);
|
285 |
+
s.label = ed.translate(s.label);
|
286 |
+
s.scope = s.scope || ed;
|
287 |
+
|
288 |
+
if (!s.onclick && !s.menu_button) {
|
289 |
+
s.onclick = function() {
|
290 |
+
ed.execCommand(s.cmd, s.ui || false, s.value);
|
291 |
+
};
|
292 |
+
}
|
293 |
+
|
294 |
+
s = extend({
|
295 |
+
title : s.title,
|
296 |
+
'class' : 'mce_' + id,
|
297 |
+
unavailable_prefix : ed.getLang('unavailable', ''),
|
298 |
+
scope : s.scope,
|
299 |
+
control_manager : t
|
300 |
+
}, s);
|
301 |
+
|
302 |
+
id = t.prefix + id;
|
303 |
+
|
304 |
+
if (s.menu_button) {
|
305 |
+
cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
|
306 |
+
c = new cls(id, s);
|
307 |
+
ed.onMouseDown.add(c.hideMenu, c);
|
308 |
+
} else {
|
309 |
+
cls = t._cls.button || tinymce.ui.Button;
|
310 |
+
c = new cls(id, s);
|
311 |
+
}
|
312 |
+
|
313 |
+
return t.add(c);
|
314 |
+
},
|
315 |
+
|
316 |
+
/**
|
317 |
+
* Creates a menu button control instance by id.
|
318 |
+
*
|
319 |
+
* @method createMenuButton
|
320 |
+
* @param {String} id Unique id for the new menu button instance. For example "menu1".
|
321 |
+
* @param {Object} s Optional settings object for the control.
|
322 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
323 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
324 |
+
*/
|
325 |
+
createMenuButton : function(id, s, cc) {
|
326 |
+
s = s || {};
|
327 |
+
s.menu_button = 1;
|
328 |
+
|
329 |
+
return this.createButton(id, s, cc);
|
330 |
+
},
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Creates a split button control instance by id.
|
334 |
+
*
|
335 |
+
* @method createSplitButton
|
336 |
+
* @param {String} id Unique id for the new split button instance. For example "spellchecker".
|
337 |
+
* @param {Object} s Optional settings object for the control.
|
338 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
339 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
340 |
+
*/
|
341 |
+
createSplitButton : function(id, s, cc) {
|
342 |
+
var t = this, ed = t.editor, cmd, c, cls;
|
343 |
+
|
344 |
+
if (t.get(id))
|
345 |
+
return null;
|
346 |
+
|
347 |
+
s.title = ed.translate(s.title);
|
348 |
+
s.scope = s.scope || ed;
|
349 |
+
|
350 |
+
if (!s.onclick) {
|
351 |
+
s.onclick = function(v) {
|
352 |
+
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
353 |
+
};
|
354 |
+
}
|
355 |
+
|
356 |
+
if (!s.onselect) {
|
357 |
+
s.onselect = function(v) {
|
358 |
+
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
359 |
+
};
|
360 |
+
}
|
361 |
+
|
362 |
+
s = extend({
|
363 |
+
title : s.title,
|
364 |
+
'class' : 'mce_' + id,
|
365 |
+
scope : s.scope,
|
366 |
+
control_manager : t
|
367 |
+
}, s);
|
368 |
+
|
369 |
+
id = t.prefix + id;
|
370 |
+
cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
|
371 |
+
c = t.add(new cls(id, s));
|
372 |
+
ed.onMouseDown.add(c.hideMenu, c);
|
373 |
+
|
374 |
+
return c;
|
375 |
+
},
|
376 |
+
|
377 |
+
/**
|
378 |
+
* Creates a color split button control instance by id.
|
379 |
+
*
|
380 |
+
* @method createColorSplitButton
|
381 |
+
* @param {String} id Unique id for the new color split button instance. For example "forecolor".
|
382 |
+
* @param {Object} s Optional settings object for the control.
|
383 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
384 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
385 |
+
*/
|
386 |
+
createColorSplitButton : function(id, s, cc) {
|
387 |
+
var t = this, ed = t.editor, cmd, c, cls, bm;
|
388 |
+
|
389 |
+
if (t.get(id))
|
390 |
+
return null;
|
391 |
+
|
392 |
+
s.title = ed.translate(s.title);
|
393 |
+
s.scope = s.scope || ed;
|
394 |
+
|
395 |
+
if (!s.onclick) {
|
396 |
+
s.onclick = function(v) {
|
397 |
+
if (tinymce.isIE)
|
398 |
+
bm = ed.selection.getBookmark(1);
|
399 |
+
|
400 |
+
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
401 |
+
};
|
402 |
+
}
|
403 |
+
|
404 |
+
if (!s.onselect) {
|
405 |
+
s.onselect = function(v) {
|
406 |
+
ed.execCommand(s.cmd, s.ui || false, v || s.value);
|
407 |
+
};
|
408 |
+
}
|
409 |
+
|
410 |
+
s = extend({
|
411 |
+
title : s.title,
|
412 |
+
'class' : 'mce_' + id,
|
413 |
+
'menu_class' : ed.getParam('skin') + 'Skin',
|
414 |
+
scope : s.scope,
|
415 |
+
more_colors_title : ed.getLang('more_colors')
|
416 |
+
}, s);
|
417 |
+
|
418 |
+
id = t.prefix + id;
|
419 |
+
cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
|
420 |
+
c = new cls(id, s);
|
421 |
+
ed.onMouseDown.add(c.hideMenu, c);
|
422 |
+
|
423 |
+
// Remove the menu element when the editor is removed
|
424 |
+
ed.onRemove.add(function() {
|
425 |
+
c.destroy();
|
426 |
+
});
|
427 |
+
|
428 |
+
// Fix for bug #1897785, #1898007
|
429 |
+
if (tinymce.isIE) {
|
430 |
+
c.onShowMenu.add(function() {
|
431 |
+
// IE 8 needs focus in order to store away a range with the current collapsed caret location
|
432 |
+
ed.focus();
|
433 |
+
bm = ed.selection.getBookmark(1);
|
434 |
+
});
|
435 |
+
|
436 |
+
c.onHideMenu.add(function() {
|
437 |
+
if (bm) {
|
438 |
+
ed.selection.moveToBookmark(bm);
|
439 |
+
bm = 0;
|
440 |
+
}
|
441 |
+
});
|
442 |
+
}
|
443 |
+
|
444 |
+
return t.add(c);
|
445 |
+
},
|
446 |
+
|
447 |
+
/**
|
448 |
+
* Creates a toolbar container control instance by id.
|
449 |
+
*
|
450 |
+
* @method createToolbar
|
451 |
+
* @param {String} id Unique id for the new toolbar container control instance. For example "toolbar1".
|
452 |
+
* @param {Object} s Optional settings object for the control.
|
453 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
454 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
455 |
+
*/
|
456 |
+
createToolbar : function(id, s, cc) {
|
457 |
+
var c, t = this, cls;
|
458 |
+
|
459 |
+
id = t.prefix + id;
|
460 |
+
cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
|
461 |
+
c = new cls(id, s);
|
462 |
+
|
463 |
+
if (t.get(id))
|
464 |
+
return null;
|
465 |
+
|
466 |
+
return t.add(c);
|
467 |
+
},
|
468 |
+
|
469 |
+
/**
|
470 |
+
* Creates a separator control instance.
|
471 |
+
*
|
472 |
+
* @method createSeparator
|
473 |
+
* @param {Object} cc Optional control class to use instead of the default one.
|
474 |
+
* @return {tinymce.ui.Control} Control instance that got created and added.
|
475 |
+
*/
|
476 |
+
createSeparator : function(cc) {
|
477 |
+
var cls = cc || this._cls.separator || tinymce.ui.Separator;
|
478 |
+
|
479 |
+
return new cls();
|
480 |
+
},
|
481 |
+
|
482 |
+
/**
|
483 |
+
* Overrides a specific control type with a custom class.
|
484 |
+
*
|
485 |
+
* @method setControlType
|
486 |
+
* @param {string} n Name of the control to override for example button or dropmenu.
|
487 |
+
* @param {function} c Class reference to use instead of the default one.
|
488 |
+
* @return {function} Same as the class reference.
|
489 |
+
*/
|
490 |
+
setControlType : function(n, c) {
|
491 |
+
return this._cls[n.toLowerCase()] = c;
|
492 |
+
},
|
493 |
+
|
494 |
+
/**
|
495 |
+
* Destroy.
|
496 |
+
*
|
497 |
+
* @method destroy
|
498 |
+
*/
|
499 |
+
destroy : function() {
|
500 |
+
each(this.controls, function(c) {
|
501 |
+
c.destroy();
|
502 |
+
});
|
503 |
+
|
504 |
+
this.controls = null;
|
505 |
+
}
|
506 |
+
});
|
507 |
+
})(tinymce);
|
js/tiny_mce_german/classes/Developer.js
CHANGED
@@ -1,94 +1,94 @@
|
|
1 |
-
/**
|
2 |
-
* Developer.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function() {
|
12 |
-
var EditorManager = tinymce.EditorManager, each = tinymce.each, DOM = tinymce.DOM;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* This class patches in various development features. This class is only available for the dev version of TinyMCE.
|
16 |
-
*/
|
17 |
-
tinymce.create('static tinymce.Developer', {
|
18 |
-
_piggyBack : function() {
|
19 |
-
var t = this, em = tinymce.EditorManager, lo = false;
|
20 |
-
|
21 |
-
// Makes sure that XML language pack is used instead of JS files
|
22 |
-
t._runBefore(em, 'init', function(s) {
|
23 |
-
var par = new tinymce.xml.Parser({async : false}), lng = s.language || "en", i18n = tinymce.EditorManager.i18n, sl = tinymce.ScriptLoader;
|
24 |
-
|
25 |
-
if (!s.translate_mode)
|
26 |
-
return;
|
27 |
-
|
28 |
-
if (lo)
|
29 |
-
return;
|
30 |
-
|
31 |
-
lo = true;
|
32 |
-
|
33 |
-
// Common language loaded
|
34 |
-
sl.markDone(tinymce.baseURL + '/langs/' + lng + '.js');
|
35 |
-
|
36 |
-
// Theme languages loaded
|
37 |
-
sl.markDone(tinymce.baseURL + '/themes/simple/langs/' + lng + '.js');
|
38 |
-
sl.markDone(tinymce.baseURL + '/themes/advanced/langs/' + lng + '.js');
|
39 |
-
|
40 |
-
// All plugin packs loaded
|
41 |
-
each(s.plugins.split(','), function(p) {
|
42 |
-
sl.markDone(tinymce.baseURL + '/plugins/' + p + '/langs/' + lng + '.js');
|
43 |
-
});
|
44 |
-
|
45 |
-
// Load XML language pack
|
46 |
-
par.load(tinymce.baseURL + '/langs/' + lng + '.xml', function(doc, ex) {
|
47 |
-
var c;
|
48 |
-
|
49 |
-
if (!doc) {
|
50 |
-
alert(ex.message);
|
51 |
-
return;
|
52 |
-
}
|
53 |
-
|
54 |
-
if (doc.documentElement.nodeName == 'parsererror') {
|
55 |
-
alert('Parse error!!');
|
56 |
-
return;
|
57 |
-
}
|
58 |
-
|
59 |
-
c = doc.getElementsByTagName('language')[0].getAttribute("code");
|
60 |
-
|
61 |
-
each(doc.getElementsByTagName('group'), function(g) {
|
62 |
-
var gn = g.getAttribute("target"), o = {};
|
63 |
-
|
64 |
-
// Build object from XML items
|
65 |
-
each(g.getElementsByTagName('item'), function(it) {
|
66 |
-
var itn = it.getAttribute("name");
|
67 |
-
|
68 |
-
if (gn == "common")
|
69 |
-
i18n[c + '.' + itn] = par.getText(it);
|
70 |
-
else
|
71 |
-
i18n[c + '.' + gn + "." + itn] = par.getText(it);
|
72 |
-
});
|
73 |
-
});
|
74 |
-
}, {
|
75 |
-
async : false
|
76 |
-
});
|
77 |
-
});
|
78 |
-
},
|
79 |
-
|
80 |
-
_runBefore : function(o, n, f) {
|
81 |
-
var e = o[n];
|
82 |
-
|
83 |
-
o[n] = function() {
|
84 |
-
var s = f.apply(o, arguments);
|
85 |
-
|
86 |
-
if (s !== false)
|
87 |
-
return e.apply(o, arguments);
|
88 |
-
};
|
89 |
-
}
|
90 |
-
});
|
91 |
-
|
92 |
-
tinymce.Developer._piggyBack();
|
93 |
-
})();
|
94 |
-
|
1 |
+
/**
|
2 |
+
* Developer.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function() {
|
12 |
+
var EditorManager = tinymce.EditorManager, each = tinymce.each, DOM = tinymce.DOM;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This class patches in various development features. This class is only available for the dev version of TinyMCE.
|
16 |
+
*/
|
17 |
+
tinymce.create('static tinymce.Developer', {
|
18 |
+
_piggyBack : function() {
|
19 |
+
var t = this, em = tinymce.EditorManager, lo = false;
|
20 |
+
|
21 |
+
// Makes sure that XML language pack is used instead of JS files
|
22 |
+
t._runBefore(em, 'init', function(s) {
|
23 |
+
var par = new tinymce.xml.Parser({async : false}), lng = s.language || "en", i18n = tinymce.EditorManager.i18n, sl = tinymce.ScriptLoader;
|
24 |
+
|
25 |
+
if (!s.translate_mode)
|
26 |
+
return;
|
27 |
+
|
28 |
+
if (lo)
|
29 |
+
return;
|
30 |
+
|
31 |
+
lo = true;
|
32 |
+
|
33 |
+
// Common language loaded
|
34 |
+
sl.markDone(tinymce.baseURL + '/langs/' + lng + '.js');
|
35 |
+
|
36 |
+
// Theme languages loaded
|
37 |
+
sl.markDone(tinymce.baseURL + '/themes/simple/langs/' + lng + '.js');
|
38 |
+
sl.markDone(tinymce.baseURL + '/themes/advanced/langs/' + lng + '.js');
|
39 |
+
|
40 |
+
// All plugin packs loaded
|
41 |
+
each(s.plugins.split(','), function(p) {
|
42 |
+
sl.markDone(tinymce.baseURL + '/plugins/' + p + '/langs/' + lng + '.js');
|
43 |
+
});
|
44 |
+
|
45 |
+
// Load XML language pack
|
46 |
+
par.load(tinymce.baseURL + '/langs/' + lng + '.xml', function(doc, ex) {
|
47 |
+
var c;
|
48 |
+
|
49 |
+
if (!doc) {
|
50 |
+
alert(ex.message);
|
51 |
+
return;
|
52 |
+
}
|
53 |
+
|
54 |
+
if (doc.documentElement.nodeName == 'parsererror') {
|
55 |
+
alert('Parse error!!');
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
c = doc.getElementsByTagName('language')[0].getAttribute("code");
|
60 |
+
|
61 |
+
each(doc.getElementsByTagName('group'), function(g) {
|
62 |
+
var gn = g.getAttribute("target"), o = {};
|
63 |
+
|
64 |
+
// Build object from XML items
|
65 |
+
each(g.getElementsByTagName('item'), function(it) {
|
66 |
+
var itn = it.getAttribute("name");
|
67 |
+
|
68 |
+
if (gn == "common")
|
69 |
+
i18n[c + '.' + itn] = par.getText(it);
|
70 |
+
else
|
71 |
+
i18n[c + '.' + gn + "." + itn] = par.getText(it);
|
72 |
+
});
|
73 |
+
});
|
74 |
+
}, {
|
75 |
+
async : false
|
76 |
+
});
|
77 |
+
});
|
78 |
+
},
|
79 |
+
|
80 |
+
_runBefore : function(o, n, f) {
|
81 |
+
var e = o[n];
|
82 |
+
|
83 |
+
o[n] = function() {
|
84 |
+
var s = f.apply(o, arguments);
|
85 |
+
|
86 |
+
if (s !== false)
|
87 |
+
return e.apply(o, arguments);
|
88 |
+
};
|
89 |
+
}
|
90 |
+
});
|
91 |
+
|
92 |
+
tinymce.Developer._piggyBack();
|
93 |
+
})();
|
94 |
+
|
js/tiny_mce_german/classes/Editor.js
CHANGED
@@ -1,2699 +1,2699 @@
|
|
1 |
-
/**
|
2 |
-
* Editor.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
// Shorten these names
|
13 |
-
var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,
|
14 |
-
Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko,
|
15 |
-
isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,
|
16 |
-
ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
|
17 |
-
inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode;
|
18 |
-
|
19 |
-
/**
|
20 |
-
* This class contains the core logic for a TinyMCE editor.
|
21 |
-
*
|
22 |
-
* @class tinymce.Editor
|
23 |
-
* @author Moxiecode
|
24 |
-
* @example
|
25 |
-
* // Add a class to all paragraphs in the editor.
|
26 |
-
* tinyMCE.activeEditor.dom.addClass(tinyMCE.activeEditor.dom.select('p'), 'someclass');
|
27 |
-
*
|
28 |
-
* // Gets the current editors selection as text
|
29 |
-
* tinyMCE.activeEditor.selection.getContent({format : 'text'});
|
30 |
-
*
|
31 |
-
* // Creates a new editor instance
|
32 |
-
* var ed = new tinymce.Editor('textareaid', {
|
33 |
-
* some_setting : 1
|
34 |
-
* });
|
35 |
-
*
|
36 |
-
* // Select each item the user clicks on
|
37 |
-
* ed.onClick.add(function(ed, e) {
|
38 |
-
* ed.selection.select(e.target);
|
39 |
-
* });
|
40 |
-
*
|
41 |
-
* ed.render();
|
42 |
-
*/
|
43 |
-
tinymce.create('tinymce.Editor', {
|
44 |
-
/**
|
45 |
-
* Constructs a editor instance by id.
|
46 |
-
*
|
47 |
-
* @constructor
|
48 |
-
* @method Editor
|
49 |
-
* @param {String} id Unique id for the editor.
|
50 |
-
* @param {Object} s Optional settings string for the editor.
|
51 |
-
* @author Moxiecode
|
52 |
-
*/
|
53 |
-
Editor : function(id, s) {
|
54 |
-
var t = this;
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Editor instance id, normally the same as the div/textarea that was replaced.
|
58 |
-
*
|
59 |
-
* @property id
|
60 |
-
* @type String
|
61 |
-
*/
|
62 |
-
t.id = t.editorId = id;
|
63 |
-
|
64 |
-
t.execCommands = {};
|
65 |
-
t.queryStateCommands = {};
|
66 |
-
t.queryValueCommands = {};
|
67 |
-
|
68 |
-
/**
|
69 |
-
* State to force the editor to return false on a isDirty call.
|
70 |
-
*
|
71 |
-
* @property isNotDirty
|
72 |
-
* @type Boolean
|
73 |
-
*/
|
74 |
-
t.isNotDirty = false;
|
75 |
-
|
76 |
-
/**
|
77 |
-
* Name/Value object containting plugin instances.
|
78 |
-
*
|
79 |
-
* @property plugins
|
80 |
-
* @type Object
|
81 |
-
*/
|
82 |
-
t.plugins = {};
|
83 |
-
|
84 |
-
// Add events to the editor
|
85 |
-
each([
|
86 |
-
/**
|
87 |
-
* Fires before the initialization of the editor.
|
88 |
-
*
|
89 |
-
* @event onPreInit
|
90 |
-
* @param {tinymce.Editor} sender Editor instance.
|
91 |
-
* @see #onInit
|
92 |
-
*/
|
93 |
-
'onPreInit',
|
94 |
-
|
95 |
-
/**
|
96 |
-
* Fires before the initialization of the editor.
|
97 |
-
*
|
98 |
-
* @event onBeforeRenderUI
|
99 |
-
* @param {tinymce.Editor} sender Editor instance.
|
100 |
-
*/
|
101 |
-
'onBeforeRenderUI',
|
102 |
-
|
103 |
-
/**
|
104 |
-
* Fires after the rendering has completed.
|
105 |
-
*
|
106 |
-
* @event onPostRender
|
107 |
-
* @param {tinymce.Editor} sender Editor instance.
|
108 |
-
*/
|
109 |
-
'onPostRender',
|
110 |
-
|
111 |
-
/**
|
112 |
-
* Fires after the initialization of the editor is done.
|
113 |
-
*
|
114 |
-
* @event onInit
|
115 |
-
* @param {tinymce.Editor} sender Editor instance.
|
116 |
-
* @see #onPreInit
|
117 |
-
*/
|
118 |
-
'onInit',
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Fires when the editor instance is removed from page.
|
122 |
-
*
|
123 |
-
* @event onRemove
|
124 |
-
* @param {tinymce.Editor} sender Editor instance.
|
125 |
-
*/
|
126 |
-
'onRemove',
|
127 |
-
|
128 |
-
/**
|
129 |
-
* Fires when the editor is activated.
|
130 |
-
*
|
131 |
-
* @event onActivate
|
132 |
-
* @param {tinymce.Editor} sender Editor instance.
|
133 |
-
*/
|
134 |
-
'onActivate',
|
135 |
-
|
136 |
-
/**
|
137 |
-
* Fires when the editor is deactivated.
|
138 |
-
*
|
139 |
-
* @event onDeactivate
|
140 |
-
* @param {tinymce.Editor} sender Editor instance.
|
141 |
-
*/
|
142 |
-
'onDeactivate',
|
143 |
-
|
144 |
-
/**
|
145 |
-
* Fires when something in the body of the editor is clicked.
|
146 |
-
*
|
147 |
-
* @event onClick
|
148 |
-
* @param {tinymce.Editor} sender Editor instance.
|
149 |
-
* @param {Event} evt W3C DOM Event instance.
|
150 |
-
*/
|
151 |
-
'onClick',
|
152 |
-
|
153 |
-
/**
|
154 |
-
* Fires when a registered event is intercepted.
|
155 |
-
*
|
156 |
-
* @event onEvent
|
157 |
-
* @param {tinymce.Editor} sender Editor instance.
|
158 |
-
* @param {Event} evt W3C DOM Event instance.
|
159 |
-
*/
|
160 |
-
'onEvent',
|
161 |
-
|
162 |
-
/**
|
163 |
-
* Fires when a mouseup event is intercepted inside the editor.
|
164 |
-
*
|
165 |
-
* @event onMouseUp
|
166 |
-
* @param {tinymce.Editor} sender Editor instance.
|
167 |
-
* @param {Event} evt W3C DOM Event instance.
|
168 |
-
*/
|
169 |
-
'onMouseUp',
|
170 |
-
|
171 |
-
/**
|
172 |
-
* Fires when a mousedown event is intercepted inside the editor.
|
173 |
-
*
|
174 |
-
* @event onMouseDown
|
175 |
-
* @param {tinymce.Editor} sender Editor instance.
|
176 |
-
* @param {Event} evt W3C DOM Event instance.
|
177 |
-
*/
|
178 |
-
'onMouseDown',
|
179 |
-
|
180 |
-
/**
|
181 |
-
* Fires when a dblclick event is intercepted inside the editor.
|
182 |
-
*
|
183 |
-
* @event onDblClick
|
184 |
-
* @param {tinymce.Editor} sender Editor instance.
|
185 |
-
* @param {Event} evt W3C DOM Event instance.
|
186 |
-
*/
|
187 |
-
'onDblClick',
|
188 |
-
|
189 |
-
/**
|
190 |
-
* Fires when a keydown event is intercepted inside the editor.
|
191 |
-
*
|
192 |
-
* @event onKeyDown
|
193 |
-
* @param {tinymce.Editor} sender Editor instance.
|
194 |
-
* @param {Event} evt W3C DOM Event instance.
|
195 |
-
*/
|
196 |
-
'onKeyDown',
|
197 |
-
|
198 |
-
/**
|
199 |
-
* Fires when a keydown event is intercepted inside the editor.
|
200 |
-
*
|
201 |
-
* @event onKeyUp
|
202 |
-
* @param {tinymce.Editor} sender Editor instance.
|
203 |
-
* @param {Event} evt W3C DOM Event instance.
|
204 |
-
*/
|
205 |
-
'onKeyUp',
|
206 |
-
|
207 |
-
/**
|
208 |
-
* Fires when a keypress event is intercepted inside the editor.
|
209 |
-
*
|
210 |
-
* @event onKeyPress
|
211 |
-
* @param {tinymce.Editor} sender Editor instance.
|
212 |
-
* @param {Event} evt W3C DOM Event instance.
|
213 |
-
*/
|
214 |
-
'onKeyPress',
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Fires when a contextmenu event is intercepted inside the editor.
|
218 |
-
*
|
219 |
-
* @event onContextMenu
|
220 |
-
* @param {tinymce.Editor} sender Editor instance.
|
221 |
-
* @param {Event} evt W3C DOM Event instance.
|
222 |
-
*/
|
223 |
-
'onContextMenu',
|
224 |
-
|
225 |
-
/**
|
226 |
-
* Fires when a form submit event is intercepted.
|
227 |
-
*
|
228 |
-
* @event onSubmit
|
229 |
-
* @param {tinymce.Editor} sender Editor instance.
|
230 |
-
* @param {Event} evt W3C DOM Event instance.
|
231 |
-
*/
|
232 |
-
'onSubmit',
|
233 |
-
|
234 |
-
/**
|
235 |
-
* Fires when a form reset event is intercepted.
|
236 |
-
*
|
237 |
-
* @event onReset
|
238 |
-
* @param {tinymce.Editor} sender Editor instance.
|
239 |
-
* @param {Event} evt W3C DOM Event instance.
|
240 |
-
*/
|
241 |
-
'onReset',
|
242 |
-
|
243 |
-
/**
|
244 |
-
* Fires when a paste event is intercepted inside the editor.
|
245 |
-
*
|
246 |
-
* @event onPaste
|
247 |
-
* @param {tinymce.Editor} sender Editor instance.
|
248 |
-
* @param {Event} evt W3C DOM Event instance.
|
249 |
-
*/
|
250 |
-
'onPaste',
|
251 |
-
|
252 |
-
/**
|
253 |
-
* Fires when the Serializer does a preProcess on the contents.
|
254 |
-
*
|
255 |
-
* @event onPreProcess
|
256 |
-
* @param {tinymce.Editor} sender Editor instance.
|
257 |
-
* @param {Object} obj PreProcess object.
|
258 |
-
*/
|
259 |
-
'onPreProcess',
|
260 |
-
|
261 |
-
/**
|
262 |
-
* Fires when the Serializer does a postProcess on the contents.
|
263 |
-
*
|
264 |
-
* @event onPostProcess
|
265 |
-
* @param {tinymce.Editor} sender Editor instance.
|
266 |
-
* @param {Object} obj PreProcess object.
|
267 |
-
*/
|
268 |
-
'onPostProcess',
|
269 |
-
|
270 |
-
/**
|
271 |
-
* Fires before new contents is added to the editor. Using for example setContent.
|
272 |
-
*
|
273 |
-
* @event onBeforeSetContent
|
274 |
-
* @param {tinymce.Editor} sender Editor instance.
|
275 |
-
*/
|
276 |
-
'onBeforeSetContent',
|
277 |
-
|
278 |
-
/**
|
279 |
-
* Fires before contents is extracted from the editor using for example getContent.
|
280 |
-
*
|
281 |
-
* @event onBeforeGetContent
|
282 |
-
* @param {tinymce.Editor} sender Editor instance.
|
283 |
-
* @param {Event} evt W3C DOM Event instance.
|
284 |
-
*/
|
285 |
-
'onBeforeGetContent',
|
286 |
-
|
287 |
-
/**
|
288 |
-
* Fires after the contents has been added to the editor using for example onSetContent.
|
289 |
-
*
|
290 |
-
* @event onSetContent
|
291 |
-
* @param {tinymce.Editor} sender Editor instance.
|
292 |
-
*/
|
293 |
-
'onSetContent',
|
294 |
-
|
295 |
-
/**
|
296 |
-
* Fires after the contents has been extracted from the editor using for example getContent.
|
297 |
-
*
|
298 |
-
* @event onGetContent
|
299 |
-
* @param {tinymce.Editor} sender Editor instance.
|
300 |
-
*/
|
301 |
-
'onGetContent',
|
302 |
-
|
303 |
-
/**
|
304 |
-
* Fires when the editor gets loaded with contents for example when the load method is executed.
|
305 |
-
*
|
306 |
-
* @event onLoadContent
|
307 |
-
* @param {tinymce.Editor} sender Editor instance.
|
308 |
-
*/
|
309 |
-
'onLoadContent',
|
310 |
-
|
311 |
-
/**
|
312 |
-
* Fires when the editor contents gets saved for example when the save method is executed.
|
313 |
-
*
|
314 |
-
* @event onSaveContent
|
315 |
-
* @param {tinymce.Editor} sender Editor instance.
|
316 |
-
*/
|
317 |
-
'onSaveContent',
|
318 |
-
|
319 |
-
/**
|
320 |
-
* Fires when the user changes node location using the mouse or keyboard.
|
321 |
-
*
|
322 |
-
* @event onNodeChange
|
323 |
-
* @param {tinymce.Editor} sender Editor instance.
|
324 |
-
*/
|
325 |
-
'onNodeChange',
|
326 |
-
|
327 |
-
/**
|
328 |
-
* Fires when a new undo level is added to the editor.
|
329 |
-
*
|
330 |
-
* @event onChange
|
331 |
-
* @param {tinymce.Editor} sender Editor instance.
|
332 |
-
*/
|
333 |
-
'onChange',
|
334 |
-
|
335 |
-
/**
|
336 |
-
* Fires before a command gets executed for example "Bold".
|
337 |
-
*
|
338 |
-
* @event onBeforeExecCommand
|
339 |
-
* @param {tinymce.Editor} sender Editor instance.
|
340 |
-
*/
|
341 |
-
'onBeforeExecCommand',
|
342 |
-
|
343 |
-
/**
|
344 |
-
* Fires after a command is executed for example "Bold".
|
345 |
-
*
|
346 |
-
* @event onExecCommand
|
347 |
-
* @param {tinymce.Editor} sender Editor instance.
|
348 |
-
*/
|
349 |
-
'onExecCommand',
|
350 |
-
|
351 |
-
/**
|
352 |
-
* Fires when the contents is undo:ed.
|
353 |
-
*
|
354 |
-
* @event onUndo
|
355 |
-
* @param {tinymce.Editor} sender Editor instance.
|
356 |
-
* @param {Event} evt W3C DOM Event instance.
|
357 |
-
*/
|
358 |
-
'onUndo',
|
359 |
-
|
360 |
-
/**
|
361 |
-
* Fires when the contents is redo:ed.
|
362 |
-
*
|
363 |
-
* @event onRedo
|
364 |
-
* @param {tinymce.Editor} sender Editor instance.
|
365 |
-
* @param {Event} evt W3C DOM Event instance.
|
366 |
-
*/
|
367 |
-
'onRedo',
|
368 |
-
|
369 |
-
/**
|
370 |
-
* Fires when visual aids is enabled/disabled.
|
371 |
-
*
|
372 |
-
* @event onVisualAid
|
373 |
-
* @param {tinymce.Editor} sender Editor instance.
|
374 |
-
*/
|
375 |
-
'onVisualAid',
|
376 |
-
|
377 |
-
/**
|
378 |
-
* Fires when the progress throbber is shown above the editor.
|
379 |
-
*
|
380 |
-
* @event onSetProgressState
|
381 |
-
* @param {tinymce.Editor} sender Editor instance.
|
382 |
-
*/
|
383 |
-
'onSetProgressState'
|
384 |
-
], function(e) {
|
385 |
-
t[e] = new Dispatcher(t);
|
386 |
-
});
|
387 |
-
|
388 |
-
/**
|
389 |
-
* Name/value collection with editor settings.
|
390 |
-
*
|
391 |
-
* @property settings
|
392 |
-
* @type Object
|
393 |
-
*/
|
394 |
-
t.settings = s = extend({
|
395 |
-
id : id,
|
396 |
-
language : 'en',
|
397 |
-
docs_language : 'en',
|
398 |
-
theme : 'simple',
|
399 |
-
skin : 'default',
|
400 |
-
delta_width : 0,
|
401 |
-
delta_height : 0,
|
402 |
-
popup_css : '',
|
403 |
-
plugins : '',
|
404 |
-
document_base_url : tinymce.documentBaseURL,
|
405 |
-
add_form_submit_trigger : 1,
|
406 |
-
submit_patch : 1,
|
407 |
-
add_unload_trigger : 1,
|
408 |
-
convert_urls : 1,
|
409 |
-
relative_urls : 1,
|
410 |
-
remove_script_host : 1,
|
411 |
-
table_inline_editing : 0,
|
412 |
-
object_resizing : 1,
|
413 |
-
cleanup : 1,
|
414 |
-
accessibility_focus : 1,
|
415 |
-
custom_shortcuts : 1,
|
416 |
-
custom_undo_redo_keyboard_shortcuts : 1,
|
417 |
-
custom_undo_redo_restore_selection : 1,
|
418 |
-
custom_undo_redo : 1,
|
419 |
-
doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll
|
420 |
-
visual_table_class : 'mceItemTable',
|
421 |
-
visual : 1,
|
422 |
-
font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
|
423 |
-
apply_source_formatting : 1,
|
424 |
-
directionality : 'ltr',
|
425 |
-
forced_root_block : 'p',
|
426 |
-
valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p,-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',
|
427 |
-
hidden_input : 1,
|
428 |
-
padd_empty_editor : 1,
|
429 |
-
render_ui : 1,
|
430 |
-
init_theme : 1,
|
431 |
-
force_p_newlines : 1,
|
432 |
-
indentation : '30px',
|
433 |
-
keep_styles : 1,
|
434 |
-
fix_table_elements : 1,
|
435 |
-
inline_styles : 1,
|
436 |
-
convert_fonts_to_spans : true
|
437 |
-
}, s);
|
438 |
-
|
439 |
-
/**
|
440 |
-
* URI object to document configured for the TinyMCE instance.
|
441 |
-
*
|
442 |
-
* @property documentBaseURI
|
443 |
-
* @type tinymce.util.URI
|
444 |
-
*/
|
445 |
-
t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {
|
446 |
-
base_uri : tinyMCE.baseURI
|
447 |
-
});
|
448 |
-
|
449 |
-
/**
|
450 |
-
* URI object to current document that holds the TinyMCE editor instance.
|
451 |
-
*
|
452 |
-
* @property baseURI
|
453 |
-
* @type tinymce.util.URI
|
454 |
-
*/
|
455 |
-
t.baseURI = tinymce.baseURI;
|
456 |
-
|
457 |
-
// Call setup
|
458 |
-
t.execCallback('setup', t);
|
459 |
-
},
|
460 |
-
|
461 |
-
/**
|
462 |
-
* Renderes the editor/adds it to the page.
|
463 |
-
*
|
464 |
-
* @method render
|
465 |
-
*/
|
466 |
-
render : function(nst) {
|
467 |
-
var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
|
468 |
-
|
469 |
-
// Page is not loaded yet, wait for it
|
470 |
-
if (!Event.domLoaded) {
|
471 |
-
Event.add(document, 'init', function() {
|
472 |
-
t.render();
|
473 |
-
});
|
474 |
-
return;
|
475 |
-
}
|
476 |
-
|
477 |
-
tinyMCE.settings = s;
|
478 |
-
|
479 |
-
// Element not found, then skip initialization
|
480 |
-
if (!t.getElement())
|
481 |
-
return;
|
482 |
-
|
483 |
-
// Is a iPad/iPhone, then skip initialization. We need to sniff here since the
|
484 |
-
// browser says it has contentEditable support but there is no visible caret
|
485 |
-
// We will remove this check ones Apple implements full contentEditable support
|
486 |
-
if (tinymce.isIDevice)
|
487 |
-
return;
|
488 |
-
|
489 |
-
// Add hidden input for non input elements inside form elements
|
490 |
-
if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
|
491 |
-
DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
|
492 |
-
|
493 |
-
/**
|
494 |
-
* Window manager reference, use this to open new windows and dialogs.
|
495 |
-
*
|
496 |
-
* @property windowManager
|
497 |
-
* @type tinymce.WindowManager
|
498 |
-
*/
|
499 |
-
if (tinymce.WindowManager)
|
500 |
-
t.windowManager = new tinymce.WindowManager(t);
|
501 |
-
|
502 |
-
if (s.encoding == 'xml') {
|
503 |
-
t.onGetContent.add(function(ed, o) {
|
504 |
-
if (o.save)
|
505 |
-
o.content = DOM.encode(o.content);
|
506 |
-
});
|
507 |
-
}
|
508 |
-
|
509 |
-
if (s.add_form_submit_trigger) {
|
510 |
-
t.onSubmit.addToTop(function() {
|
511 |
-
if (t.initialized) {
|
512 |
-
t.save();
|
513 |
-
t.isNotDirty = 1;
|
514 |
-
}
|
515 |
-
});
|
516 |
-
}
|
517 |
-
|
518 |
-
if (s.add_unload_trigger) {
|
519 |
-
t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
|
520 |
-
if (t.initialized && !t.destroyed && !t.isHidden())
|
521 |
-
t.save({format : 'raw', no_events : true});
|
522 |
-
});
|
523 |
-
}
|
524 |
-
|
525 |
-
tinymce.addUnload(t.destroy, t);
|
526 |
-
|
527 |
-
if (s.submit_patch) {
|
528 |
-
t.onBeforeRenderUI.add(function() {
|
529 |
-
var n = t.getElement().form;
|
530 |
-
|
531 |
-
if (!n)
|
532 |
-
return;
|
533 |
-
|
534 |
-
// Already patched
|
535 |
-
if (n._mceOldSubmit)
|
536 |
-
return;
|
537 |
-
|
538 |
-
// Check page uses id="submit" or name="submit" for it's submit button
|
539 |
-
if (!n.submit.nodeType && !n.submit.length) {
|
540 |
-
t.formElement = n;
|
541 |
-
n._mceOldSubmit = n.submit;
|
542 |
-
n.submit = function() {
|
543 |
-
// Save all instances
|
544 |
-
tinymce.triggerSave();
|
545 |
-
t.isNotDirty = 1;
|
546 |
-
|
547 |
-
return t.formElement._mceOldSubmit(t.formElement);
|
548 |
-
};
|
549 |
-
}
|
550 |
-
|
551 |
-
n = null;
|
552 |
-
});
|
553 |
-
}
|
554 |
-
|
555 |
-
// Load scripts
|
556 |
-
function loadScripts() {
|
557 |
-
if (s.language)
|
558 |
-
sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
|
559 |
-
|
560 |
-
if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
|
561 |
-
ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
|
562 |
-
|
563 |
-
each(explode(s.plugins), function(p) {
|
564 |
-
if (p && p.charAt(0) != '-' && !PluginManager.urls[p]) {
|
565 |
-
// Skip safari plugin, since it is removed as of 3.3b1
|
566 |
-
if (p == 'safari')
|
567 |
-
return;
|
568 |
-
|
569 |
-
PluginManager.load(p, 'plugins/' + p + '/editor_plugin' + tinymce.suffix + '.js');
|
570 |
-
}
|
571 |
-
});
|
572 |
-
|
573 |
-
// Init when que is loaded
|
574 |
-
sl.loadQueue(function() {
|
575 |
-
if (!t.removed)
|
576 |
-
t.init();
|
577 |
-
});
|
578 |
-
};
|
579 |
-
|
580 |
-
loadScripts();
|
581 |
-
},
|
582 |
-
|
583 |
-
/**
|
584 |
-
* Initializes the editor this will be called automatically when
|
585 |
-
* all plugins/themes and language packs are loaded by the rendered method.
|
586 |
-
* This method will setup the iframe and create the theme and plugin instances.
|
587 |
-
*
|
588 |
-
* @method init
|
589 |
-
*/
|
590 |
-
init : function() {
|
591 |
-
var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re;
|
592 |
-
|
593 |
-
tinymce.add(t);
|
594 |
-
|
595 |
-
/**
|
596 |
-
* Reference to the theme instance that was used to generate the UI.
|
597 |
-
*
|
598 |
-
* @property theme
|
599 |
-
* @type tinymce.Theme
|
600 |
-
*/
|
601 |
-
if (s.theme) {
|
602 |
-
s.theme = s.theme.replace(/-/, '');
|
603 |
-
o = ThemeManager.get(s.theme);
|
604 |
-
t.theme = new o();
|
605 |
-
|
606 |
-
if (t.theme.init && s.init_theme)
|
607 |
-
t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
|
608 |
-
}
|
609 |
-
|
610 |
-
// Create all plugins
|
611 |
-
each(explode(s.plugins.replace(/\-/g, '')), function(p) {
|
612 |
-
var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
|
613 |
-
|
614 |
-
if (c) {
|
615 |
-
po = new c(t, u);
|
616 |
-
|
617 |
-
t.plugins[p] = po;
|
618 |
-
|
619 |
-
if (po.init)
|
620 |
-
po.init(t, u);
|
621 |
-
}
|
622 |
-
});
|
623 |
-
|
624 |
-
// Setup popup CSS path(s)
|
625 |
-
if (s.popup_css !== false) {
|
626 |
-
if (s.popup_css)
|
627 |
-
s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
|
628 |
-
else
|
629 |
-
s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
|
630 |
-
}
|
631 |
-
|
632 |
-
if (s.popup_css_add)
|
633 |
-
s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
|
634 |
-
|
635 |
-
/**
|
636 |
-
* Control manager instance for the editor. Will enables you to create new UI elements and change their states etc.
|
637 |
-
*
|
638 |
-
* @property controlManager
|
639 |
-
* @type tinymce.ControlManager
|
640 |
-
*/
|
641 |
-
t.controlManager = new tinymce.ControlManager(t);
|
642 |
-
|
643 |
-
if (s.custom_undo_redo) {
|
644 |
-
// Add initial undo level
|
645 |
-
t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) {
|
646 |
-
if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) {
|
647 |
-
if (!t.undoManager.hasUndo())
|
648 |
-
t.undoManager.add();
|
649 |
-
}
|
650 |
-
});
|
651 |
-
|
652 |
-
t.onExecCommand.add(function(ed, cmd, ui, val, a) {
|
653 |
-
if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
|
654 |
-
t.undoManager.add();
|
655 |
-
});
|
656 |
-
}
|
657 |
-
|
658 |
-
t.onExecCommand.add(function(ed, c) {
|
659 |
-
// Don't refresh the select lists until caret move
|
660 |
-
if (!/^(FontName|FontSize)$/.test(c))
|
661 |
-
t.nodeChanged();
|
662 |
-
});
|
663 |
-
|
664 |
-
// Remove ghost selections on images and tables in Gecko
|
665 |
-
if (isGecko) {
|
666 |
-
function repaint(a, o) {
|
667 |
-
if (!o || !o.initial)
|
668 |
-
t.execCommand('mceRepaint');
|
669 |
-
};
|
670 |
-
|
671 |
-
t.onUndo.add(repaint);
|
672 |
-
t.onRedo.add(repaint);
|
673 |
-
t.onSetContent.add(repaint);
|
674 |
-
}
|
675 |
-
|
676 |
-
// Enables users to override the control factory
|
677 |
-
t.onBeforeRenderUI.dispatch(t, t.controlManager);
|
678 |
-
|
679 |
-
// Measure box
|
680 |
-
if (s.render_ui) {
|
681 |
-
w = s.width || e.style.width || e.offsetWidth;
|
682 |
-
h = s.height || e.style.height || e.offsetHeight;
|
683 |
-
t.orgDisplay = e.style.display;
|
684 |
-
re = /^[0-9\.]+(|px)$/i;
|
685 |
-
|
686 |
-
if (re.test('' + w))
|
687 |
-
w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);
|
688 |
-
|
689 |
-
if (re.test('' + h))
|
690 |
-
h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);
|
691 |
-
|
692 |
-
// Render UI
|
693 |
-
o = t.theme.renderUI({
|
694 |
-
targetNode : e,
|
695 |
-
width : w,
|
696 |
-
height : h,
|
697 |
-
deltaWidth : s.delta_width,
|
698 |
-
deltaHeight : s.delta_height
|
699 |
-
});
|
700 |
-
|
701 |
-
t.editorContainer = o.editorContainer;
|
702 |
-
}
|
703 |
-
|
704 |
-
// #ifdef contentEditable
|
705 |
-
|
706 |
-
// Content editable mode ends here
|
707 |
-
if (s.content_editable) {
|
708 |
-
e = n = o = null; // Fix IE leak
|
709 |
-
return t.setupContentEditable();
|
710 |
-
}
|
711 |
-
|
712 |
-
// #endif
|
713 |
-
|
714 |
-
// User specified a document.domain value
|
715 |
-
if (document.domain && location.hostname != document.domain)
|
716 |
-
tinymce.relaxedDomain = document.domain;
|
717 |
-
|
718 |
-
// Resize editor
|
719 |
-
DOM.setStyles(o.sizeContainer || o.editorContainer, {
|
720 |
-
width : w,
|
721 |
-
height : h
|
722 |
-
});
|
723 |
-
|
724 |
-
h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
|
725 |
-
if (h < 100)
|
726 |
-
h = 100;
|
727 |
-
|
728 |
-
t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">';
|
729 |
-
|
730 |
-
// We only need to override paths if we have to
|
731 |
-
// IE has a bug where it remove site absolute urls to relative ones if this is specified
|
732 |
-
if (s.document_base_url != tinymce.documentBaseURL)
|
733 |
-
t.iframeHTML += '<base href="' + t.documentBaseURI.getURI() + '" />';
|
734 |
-
|
735 |
-
t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
|
736 |
-
|
737 |
-
if (tinymce.relaxedDomain)
|
738 |
-
t.iframeHTML += '<script type="text/javascript">document.domain = "' + tinymce.relaxedDomain + '";</script>';
|
739 |
-
|
740 |
-
bi = s.body_id || 'tinymce';
|
741 |
-
if (bi.indexOf('=') != -1) {
|
742 |
-
bi = t.getParam('body_id', '', 'hash');
|
743 |
-
bi = bi[t.id] || bi;
|
744 |
-
}
|
745 |
-
|
746 |
-
bc = s.body_class || '';
|
747 |
-
if (bc.indexOf('=') != -1) {
|
748 |
-
bc = t.getParam('body_class', '', 'hash');
|
749 |
-
bc = bc[t.id] || '';
|
750 |
-
}
|
751 |
-
|
752 |
-
t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '"></body></html>';
|
753 |
-
|
754 |
-
// Domain relaxing enabled, then set document domain
|
755 |
-
if (tinymce.relaxedDomain) {
|
756 |
-
// We need to write the contents here in IE since multiple writes messes up refresh button and back button
|
757 |
-
if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5))
|
758 |
-
u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';
|
759 |
-
else if (tinymce.isOpera)
|
760 |
-
u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()';
|
761 |
-
}
|
762 |
-
|
763 |
-
// Create iframe
|
764 |
-
n = DOM.add(o.iframeContainer, 'iframe', {
|
765 |
-
id : t.id + "_ifr",
|
766 |
-
src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
|
767 |
-
frameBorder : '0',
|
768 |
-
style : {
|
769 |
-
width : '100%',
|
770 |
-
height : h
|
771 |
-
}
|
772 |
-
});
|
773 |
-
|
774 |
-
t.contentAreaContainer = o.iframeContainer;
|
775 |
-
DOM.get(o.editorContainer).style.display = t.orgDisplay;
|
776 |
-
DOM.get(t.id).style.display = 'none';
|
777 |
-
|
778 |
-
if (!isIE || !tinymce.relaxedDomain)
|
779 |
-
t.setupIframe();
|
780 |
-
|
781 |
-
e = n = o = null; // Cleanup
|
782 |
-
},
|
783 |
-
|
784 |
-
/**
|
785 |
-
* This method get called by the init method ones the iframe is loaded.
|
786 |
-
* It will fill the iframe with contents, setups DOM and selection objects for the iframe.
|
787 |
-
* This method should not be called directly.
|
788 |
-
*
|
789 |
-
* @method setupIframe
|
790 |
-
*/
|
791 |
-
setupIframe : function() {
|
792 |
-
var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
|
793 |
-
|
794 |
-
// Setup iframe body
|
795 |
-
if (!isIE || !tinymce.relaxedDomain) {
|
796 |
-
d.open();
|
797 |
-
d.write(t.iframeHTML);
|
798 |
-
d.close();
|
799 |
-
}
|
800 |
-
|
801 |
-
// Design mode needs to be added here Ctrl+A will fail otherwise
|
802 |
-
if (!isIE) {
|
803 |
-
try {
|
804 |
-
if (!s.readonly)
|
805 |
-
d.designMode = 'On';
|
806 |
-
} catch (ex) {
|
807 |
-
// Will fail on Gecko if the editor is placed in an hidden container element
|
808 |
-
// The design mode will be set ones the editor is focused
|
809 |
-
}
|
810 |
-
}
|
811 |
-
|
812 |
-
// IE needs to use contentEditable or it will display non secure items for HTTPS
|
813 |
-
if (isIE) {
|
814 |
-
// It will not steal focus if we hide it while setting contentEditable
|
815 |
-
b = t.getBody();
|
816 |
-
DOM.hide(b);
|
817 |
-
|
818 |
-
if (!s.readonly)
|
819 |
-
b.contentEditable = true;
|
820 |
-
|
821 |
-
DOM.show(b);
|
822 |
-
}
|
823 |
-
|
824 |
-
/**
|
825 |
-
* DOM instance for the editor.
|
826 |
-
*
|
827 |
-
* @property dom
|
828 |
-
* @type tinymce.dom.DOMUtils
|
829 |
-
*/
|
830 |
-
t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {
|
831 |
-
keep_values : true,
|
832 |
-
url_converter : t.convertURL,
|
833 |
-
url_converter_scope : t,
|
834 |
-
hex_colors : s.force_hex_style_colors,
|
835 |
-
class_filter : s.class_filter,
|
836 |
-
update_styles : 1,
|
837 |
-
fix_ie_paragraphs : 1,
|
838 |
-
valid_styles : s.valid_styles
|
839 |
-
});
|
840 |
-
|
841 |
-
/**
|
842 |
-
* Schema instance, enables you to validate elements and it's children.
|
843 |
-
*
|
844 |
-
* @property schema
|
845 |
-
* @type tinymce.dom.Schema
|
846 |
-
*/
|
847 |
-
t.schema = new tinymce.dom.Schema();
|
848 |
-
|
849 |
-
/**
|
850 |
-
* DOM serializer for the editor.
|
851 |
-
*
|
852 |
-
* @property serializer
|
853 |
-
* @type tinymce.dom.Serializer
|
854 |
-
*/
|
855 |
-
t.serializer = new tinymce.dom.Serializer(extend(s, {
|
856 |
-
valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
|
857 |
-
dom : t.dom,
|
858 |
-
schema : t.schema
|
859 |
-
}));
|
860 |
-
|
861 |
-
/**
|
862 |
-
* Selection instance for the editor.
|
863 |
-
*
|
864 |
-
* @property selection
|
865 |
-
* @type tinymce.dom.Selection
|
866 |
-
*/
|
867 |
-
t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
|
868 |
-
|
869 |
-
/**
|
870 |
-
* Formatter instance.
|
871 |
-
*
|
872 |
-
* @property formatter
|
873 |
-
* @type tinymce.Formatter
|
874 |
-
*/
|
875 |
-
t.formatter = new tinymce.Formatter(this);
|
876 |
-
|
877 |
-
// Register default formats
|
878 |
-
t.formatter.register({
|
879 |
-
alignleft : [
|
880 |
-
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}},
|
881 |
-
{selector : 'img,table', styles : {'float' : 'left'}}
|
882 |
-
],
|
883 |
-
|
884 |
-
aligncenter : [
|
885 |
-
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}},
|
886 |
-
{selector : 'img', styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
|
887 |
-
{selector : 'table', styles : {marginLeft : 'auto', marginRight : 'auto'}}
|
888 |
-
],
|
889 |
-
|
890 |
-
alignright : [
|
891 |
-
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}},
|
892 |
-
{selector : 'img,table', styles : {'float' : 'right'}}
|
893 |
-
],
|
894 |
-
|
895 |
-
alignfull : [
|
896 |
-
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}}
|
897 |
-
],
|
898 |
-
|
899 |
-
bold : [
|
900 |
-
{inline : 'strong'},
|
901 |
-
{inline : 'span', styles : {fontWeight : 'bold'}},
|
902 |
-
{inline : 'b'}
|
903 |
-
],
|
904 |
-
|
905 |
-
italic : [
|
906 |
-
{inline : 'em'},
|
907 |
-
{inline : 'span', styles : {fontStyle : 'italic'}},
|
908 |
-
{inline : 'i'}
|
909 |
-
],
|
910 |
-
|
911 |
-
underline : [
|
912 |
-
{inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
|
913 |
-
{inline : 'u'}
|
914 |
-
],
|
915 |
-
|
916 |
-
strikethrough : [
|
917 |
-
{inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
|
918 |
-
{inline : 'u'}
|
919 |
-
],
|
920 |
-
|
921 |
-
forecolor : {inline : 'span', styles : {color : '%value'}},
|
922 |
-
hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}},
|
923 |
-
fontname : {inline : 'span', styles : {fontFamily : '%value'}},
|
924 |
-
fontsize : {inline : 'span', styles : {fontSize : '%value'}},
|
925 |
-
fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
|
926 |
-
blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
|
927 |
-
|
928 |
-
removeformat : [
|
929 |
-
{selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
|
930 |
-
{selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
|
931 |
-
{selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
|
932 |
-
]
|
933 |
-
});
|
934 |
-
|
935 |
-
// Register default block formats
|
936 |
-
each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
|
937 |
-
t.formatter.register(name, {block : name, remove : 'all'});
|
938 |
-
});
|
939 |
-
|
940 |
-
// Register user defined formats
|
941 |
-
t.formatter.register(t.settings.formats);
|
942 |
-
|
943 |
-
/**
|
944 |
-
* Undo manager instance, responsible for handling undo levels.
|
945 |
-
*
|
946 |
-
* @property undoManager
|
947 |
-
* @type tinymce.UndoManager
|
948 |
-
*/
|
949 |
-
t.undoManager = new tinymce.UndoManager(t);
|
950 |
-
|
951 |
-
// Pass through
|
952 |
-
t.undoManager.onAdd.add(function(um, l) {
|
953 |
-
if (!l.initial)
|
954 |
-
return t.onChange.dispatch(t, l, um);
|
955 |
-
});
|
956 |
-
|
957 |
-
t.undoManager.onUndo.add(function(um, l) {
|
958 |
-
return t.onUndo.dispatch(t, l, um);
|
959 |
-
});
|
960 |
-
|
961 |
-
t.undoManager.onRedo.add(function(um, l) {
|
962 |
-
return t.onRedo.dispatch(t, l, um);
|
963 |
-
});
|
964 |
-
|
965 |
-
t.forceBlocks = new tinymce.ForceBlocks(t, {
|
966 |
-
forced_root_block : s.forced_root_block
|
967 |
-
});
|
968 |
-
|
969 |
-
t.editorCommands = new tinymce.EditorCommands(t);
|
970 |
-
|
971 |
-
// Pass through
|
972 |
-
t.serializer.onPreProcess.add(function(se, o) {
|
973 |
-
return t.onPreProcess.dispatch(t, o, se);
|
974 |
-
});
|
975 |
-
|
976 |
-
t.serializer.onPostProcess.add(function(se, o) {
|
977 |
-
return t.onPostProcess.dispatch(t, o, se);
|
978 |
-
});
|
979 |
-
|
980 |
-
t.onPreInit.dispatch(t);
|
981 |
-
|
982 |
-
if (!s.gecko_spellcheck)
|
983 |
-
t.getBody().spellcheck = 0;
|
984 |
-
|
985 |
-
if (!s.readonly)
|
986 |
-
t._addEvents();
|
987 |
-
|
988 |
-
t.controlManager.onPostRender.dispatch(t, t.controlManager);
|
989 |
-
t.onPostRender.dispatch(t);
|
990 |
-
|
991 |
-
if (s.directionality)
|
992 |
-
t.getBody().dir = s.directionality;
|
993 |
-
|
994 |
-
if (s.nowrap)
|
995 |
-
t.getBody().style.whiteSpace = "nowrap";
|
996 |
-
|
997 |
-
if (s.custom_elements) {
|
998 |
-
function handleCustom(ed, o) {
|
999 |
-
each(explode(s.custom_elements), function(v) {
|
1000 |
-
var n;
|
1001 |
-
|
1002 |
-
if (v.indexOf('~') === 0) {
|
1003 |
-
v = v.substring(1);
|
1004 |
-
n = 'span';
|
1005 |
-
} else
|
1006 |
-
n = 'div';
|
1007 |
-
|
1008 |
-
o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' _mce_name="$1"$2>');
|
1009 |
-
o.content = o.content.replace(new RegExp('</(' + v + ')>', 'g'), '</' + n + '>');
|
1010 |
-
});
|
1011 |
-
};
|
1012 |
-
|
1013 |
-
t.onBeforeSetContent.add(handleCustom);
|
1014 |
-
t.onPostProcess.add(function(ed, o) {
|
1015 |
-
if (o.set)
|
1016 |
-
handleCustom(ed, o);
|
1017 |
-
});
|
1018 |
-
}
|
1019 |
-
|
1020 |
-
if (s.handle_node_change_callback) {
|
1021 |
-
t.onNodeChange.add(function(ed, cm, n) {
|
1022 |
-
t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());
|
1023 |
-
});
|
1024 |
-
}
|
1025 |
-
|
1026 |
-
if (s.save_callback) {
|
1027 |
-
t.onSaveContent.add(function(ed, o) {
|
1028 |
-
var h = t.execCallback('save_callback', t.id, o.content, t.getBody());
|
1029 |
-
|
1030 |
-
if (h)
|
1031 |
-
o.content = h;
|
1032 |
-
});
|
1033 |
-
}
|
1034 |
-
|
1035 |
-
if (s.onchange_callback) {
|
1036 |
-
t.onChange.add(function(ed, l) {
|
1037 |
-
t.execCallback('onchange_callback', t, l);
|
1038 |
-
});
|
1039 |
-
}
|
1040 |
-
|
1041 |
-
if (s.convert_newlines_to_brs) {
|
1042 |
-
t.onBeforeSetContent.add(function(ed, o) {
|
1043 |
-
if (o.initial)
|
1044 |
-
o.content = o.content.replace(/\r?\n/g, '<br />');
|
1045 |
-
});
|
1046 |
-
}
|
1047 |
-
|
1048 |
-
if (s.fix_nesting && isIE) {
|
1049 |
-
t.onBeforeSetContent.add(function(ed, o) {
|
1050 |
-
o.content = t._fixNesting(o.content);
|
1051 |
-
});
|
1052 |
-
}
|
1053 |
-
|
1054 |
-
if (s.preformatted) {
|
1055 |
-
t.onPostProcess.add(function(ed, o) {
|
1056 |
-
o.content = o.content.replace(/^\s*<pre.*?>/, '');
|
1057 |
-
o.content = o.content.replace(/<\/pre>\s*$/, '');
|
1058 |
-
|
1059 |
-
if (o.set)
|
1060 |
-
o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';
|
1061 |
-
});
|
1062 |
-
}
|
1063 |
-
|
1064 |
-
if (s.verify_css_classes) {
|
1065 |
-
t.serializer.attribValueFilter = function(n, v) {
|
1066 |
-
var s, cl;
|
1067 |
-
|
1068 |
-
if (n == 'class') {
|
1069 |
-
// Build regexp for classes
|
1070 |
-
if (!t.classesRE) {
|
1071 |
-
cl = t.dom.getClasses();
|
1072 |
-
|
1073 |
-
if (cl.length > 0) {
|
1074 |
-
s = '';
|
1075 |
-
|
1076 |
-
each (cl, function(o) {
|
1077 |
-
s += (s ? '|' : '') + o['class'];
|
1078 |
-
});
|
1079 |
-
|
1080 |
-
t.classesRE = new RegExp('(' + s + ')', 'gi');
|
1081 |
-
}
|
1082 |
-
}
|
1083 |
-
|
1084 |
-
return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';
|
1085 |
-
}
|
1086 |
-
|
1087 |
-
return v;
|
1088 |
-
};
|
1089 |
-
}
|
1090 |
-
|
1091 |
-
if (s.cleanup_callback) {
|
1092 |
-
t.onBeforeSetContent.add(function(ed, o) {
|
1093 |
-
o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
|
1094 |
-
});
|
1095 |
-
|
1096 |
-
t.onPreProcess.add(function(ed, o) {
|
1097 |
-
if (o.set)
|
1098 |
-
t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
|
1099 |
-
|
1100 |
-
if (o.get)
|
1101 |
-
t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
|
1102 |
-
});
|
1103 |
-
|
1104 |
-
t.onPostProcess.add(function(ed, o) {
|
1105 |
-
if (o.set)
|
1106 |
-
o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
|
1107 |
-
|
1108 |
-
if (o.get)
|
1109 |
-
o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
|
1110 |
-
});
|
1111 |
-
}
|
1112 |
-
|
1113 |
-
if (s.save_callback) {
|
1114 |
-
t.onGetContent.add(function(ed, o) {
|
1115 |
-
if (o.save)
|
1116 |
-
o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());
|
1117 |
-
});
|
1118 |
-
}
|
1119 |
-
|
1120 |
-
if (s.handle_event_callback) {
|
1121 |
-
t.onEvent.add(function(ed, e, o) {
|
1122 |
-
if (t.execCallback('handle_event_callback', e, ed, o) === false)
|
1123 |
-
Event.cancel(e);
|
1124 |
-
});
|
1125 |
-
}
|
1126 |
-
|
1127 |
-
// Add visual aids when new contents is added
|
1128 |
-
t.onSetContent.add(function() {
|
1129 |
-
t.addVisual(t.getBody());
|
1130 |
-
});
|
1131 |
-
|
1132 |
-
// Remove empty contents
|
1133 |
-
if (s.padd_empty_editor) {
|
1134 |
-
t.onPostProcess.add(function(ed, o) {
|
1135 |
-
o.content = o.content.replace(/^(<p[^>]*>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
|
1136 |
-
});
|
1137 |
-
}
|
1138 |
-
|
1139 |
-
if (isGecko) {
|
1140 |
-
// Fix gecko link bug, when a link is placed at the end of block elements there is
|
1141 |
-
// no way to move the caret behind the link. This fix adds a bogus br element after the link
|
1142 |
-
function fixLinks(ed, o) {
|
1143 |
-
each(ed.dom.select('a'), function(n) {
|
1144 |
-
var pn = n.parentNode;
|
1145 |
-
|
1146 |
-
if (ed.dom.isBlock(pn) && pn.lastChild === n)
|
1147 |
-
ed.dom.add(pn, 'br', {'_mce_bogus' : 1});
|
1148 |
-
});
|
1149 |
-
};
|
1150 |
-
|
1151 |
-
t.onExecCommand.add(function(ed, cmd) {
|
1152 |
-
if (cmd === 'CreateLink')
|
1153 |
-
fixLinks(ed);
|
1154 |
-
});
|
1155 |
-
|
1156 |
-
t.onSetContent.add(t.selection.onSetContent.add(fixLinks));
|
1157 |
-
|
1158 |
-
if (!s.readonly) {
|
1159 |
-
try {
|
1160 |
-
// Design mode must be set here once again to fix a bug where
|
1161 |
-
// Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again
|
1162 |
-
d.designMode = 'Off';
|
1163 |
-
d.designMode = 'On';
|
1164 |
-
} catch (ex) {
|
1165 |
-
// Will fail on Gecko if the editor is placed in an hidden container element
|
1166 |
-
// The design mode will be set ones the editor is focused
|
1167 |
-
}
|
1168 |
-
}
|
1169 |
-
}
|
1170 |
-
|
1171 |
-
// A small timeout was needed since firefox will remove. Bug: #1838304
|
1172 |
-
setTimeout(function () {
|
1173 |
-
if (t.removed)
|
1174 |
-
return;
|
1175 |
-
|
1176 |
-
t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
|
1177 |
-
t.startContent = t.getContent({format : 'raw'});
|
1178 |
-
t.initialized = true;
|
1179 |
-
|
1180 |
-
t.onInit.dispatch(t);
|
1181 |
-
t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());
|
1182 |
-
t.execCallback('init_instance_callback', t);
|
1183 |
-
t.focus(true);
|
1184 |
-
t.nodeChanged({initial : 1});
|
1185 |
-
|
1186 |
-
// Load specified content CSS last
|
1187 |
-
if (s.content_css) {
|
1188 |
-
tinymce.each(explode(s.content_css), function(u) {
|
1189 |
-
t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
|
1190 |
-
});
|
1191 |
-
}
|
1192 |
-
|
1193 |
-
// Handle auto focus
|
1194 |
-
if (s.auto_focus) {
|
1195 |
-
setTimeout(function () {
|
1196 |
-
var ed = tinymce.get(s.auto_focus);
|
1197 |
-
|
1198 |
-
ed.selection.select(ed.getBody(), 1);
|
1199 |
-
ed.selection.collapse(1);
|
1200 |
-
ed.getWin().focus();
|
1201 |
-
}, 100);
|
1202 |
-
}
|
1203 |
-
}, 1);
|
1204 |
-
|
1205 |
-
e = null;
|
1206 |
-
},
|
1207 |
-
|
1208 |
-
// #ifdef contentEditable
|
1209 |
-
|
1210 |
-
/**
|
1211 |
-
* Sets up the contentEditable mode.
|
1212 |
-
*
|
1213 |
-
* @method setupContentEditable
|
1214 |
-
*/
|
1215 |
-
setupContentEditable : function() {
|
1216 |
-
var t = this, s = t.settings, e = t.getElement();
|
1217 |
-
|
1218 |
-
t.contentDocument = s.content_document || document;
|
1219 |
-
t.contentWindow = s.content_window || window;
|
1220 |
-
t.bodyElement = e;
|
1221 |
-
|
1222 |
-
// Prevent leak in IE
|
1223 |
-
s.content_document = s.content_window = null;
|
1224 |
-
|
1225 |
-
DOM.hide(e);
|
1226 |
-
e.contentEditable = t.getParam('content_editable_state', true);
|
1227 |
-
DOM.show(e);
|
1228 |
-
|
1229 |
-
if (!s.gecko_spellcheck)
|
1230 |
-
t.getDoc().body.spellcheck = 0;
|
1231 |
-
|
1232 |
-
// Setup objects
|
1233 |
-
t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {
|
1234 |
-
keep_values : true,
|
1235 |
-
url_converter : t.convertURL,
|
1236 |
-
url_converter_scope : t,
|
1237 |
-
hex_colors : s.force_hex_style_colors,
|
1238 |
-
class_filter : s.class_filter,
|
1239 |
-
root_element : t.id,
|
1240 |
-
fix_ie_paragraphs : 1,
|
1241 |
-
update_styles : 1,
|
1242 |
-
valid_styles : s.valid_styles
|
1243 |
-
});
|
1244 |
-
|
1245 |
-
t.serializer = new tinymce.dom.Serializer({
|
1246 |
-
entity_encoding : s.entity_encoding,
|
1247 |
-
entities : s.entities,
|
1248 |
-
valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
|
1249 |
-
extended_valid_elements : s.extended_valid_elements,
|
1250 |
-
valid_child_elements : s.valid_child_elements,
|
1251 |
-
invalid_elements : s.invalid_elements,
|
1252 |
-
fix_table_elements : s.fix_table_elements,
|
1253 |
-
fix_list_elements : s.fix_list_elements,
|
1254 |
-
fix_content_duplication : s.fix_content_duplication,
|
1255 |
-
font_size_classes : s.font_size_classes,
|
1256 |
-
apply_source_formatting : s.apply_source_formatting,
|
1257 |
-
dom : t.dom,
|
1258 |
-
schema : schema
|
1259 |
-
});
|
1260 |
-
|
1261 |
-
t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
|
1262 |
-
t.forceBlocks = new tinymce.ForceBlocks(t, {
|
1263 |
-
forced_root_block : s.forced_root_block
|
1264 |
-
});
|
1265 |
-
|
1266 |
-
t.editorCommands = new tinymce.EditorCommands(t);
|
1267 |
-
|
1268 |
-
// Pass through
|
1269 |
-
t.serializer.onPreProcess.add(function(se, o) {
|
1270 |
-
return t.onPreProcess.dispatch(t, o, se);
|
1271 |
-
});
|
1272 |
-
|
1273 |
-
t.serializer.onPostProcess.add(function(se, o) {
|
1274 |
-
return t.onPostProcess.dispatch(t, o, se);
|
1275 |
-
});
|
1276 |
-
|
1277 |
-
t.onPreInit.dispatch(t);
|
1278 |
-
t._addEvents();
|
1279 |
-
|
1280 |
-
t.controlManager.onPostRender.dispatch(t, t.controlManager);
|
1281 |
-
t.onPostRender.dispatch(t);
|
1282 |
-
|
1283 |
-
t.onSetContent.add(function() {
|
1284 |
-
t.addVisual(t.getBody());
|
1285 |
-
});
|
1286 |
-
|
1287 |
-
//t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
|
1288 |
-
t.startContent = t.getContent({format : 'raw'});
|
1289 |
-
t.undoManager.add({initial : true});
|
1290 |
-
t.initialized = true;
|
1291 |
-
|
1292 |
-
t.onInit.dispatch(t);
|
1293 |
-
t.focus(true);
|
1294 |
-
t.nodeChanged({initial : 1});
|
1295 |
-
|
1296 |
-
// Load specified content CSS last
|
1297 |
-
if (s.content_css) {
|
1298 |
-
each(explode(s.content_css), function(u) {
|
1299 |
-
t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
|
1300 |
-
});
|
1301 |
-
}
|
1302 |
-
|
1303 |
-
if (isIE) {
|
1304 |
-
// Store away selection
|
1305 |
-
t.dom.bind(t.getElement(), 'beforedeactivate', function() {
|
1306 |
-
t.lastSelectionBookmark = t.selection.getBookmark(1);
|
1307 |
-
});
|
1308 |
-
|
1309 |
-
t.onBeforeExecCommand.add(function(ed, cmd, ui, val, o) {
|
1310 |
-
if (!DOM.getParent(ed.selection.getStart(), function(n) {return n == ed.getBody();}))
|
1311 |
-
o.terminate = 1;
|
1312 |
-
|
1313 |
-
if (!DOM.getParent(ed.selection.getEnd(), function(n) {return n == ed.getBody();}))
|
1314 |
-
o.terminate = 1;
|
1315 |
-
});
|
1316 |
-
}
|
1317 |
-
|
1318 |
-
e = null; // Cleanup
|
1319 |
-
},
|
1320 |
-
|
1321 |
-
// #endif
|
1322 |
-
|
1323 |
-
/**
|
1324 |
-
* Focuses/activates the editor. This will set this editor as the activeEditor in the tinymce collection
|
1325 |
-
* it will also place DOM focus inside the editor.
|
1326 |
-
*
|
1327 |
-
* @method focus
|
1328 |
-
* @param {Boolean} sf Skip DOM focus. Just set is as the active editor.
|
1329 |
-
*/
|
1330 |
-
focus : function(sf) {
|
1331 |
-
var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc();
|
1332 |
-
|
1333 |
-
if (!sf) {
|
1334 |
-
// Get selected control element
|
1335 |
-
ieRng = t.selection.getRng();
|
1336 |
-
if (ieRng.item) {
|
1337 |
-
controlElm = ieRng.item(0);
|
1338 |
-
}
|
1339 |
-
|
1340 |
-
// Is not content editable
|
1341 |
-
if (!ce)
|
1342 |
-
t.getWin().focus();
|
1343 |
-
|
1344 |
-
// Restore selected control element
|
1345 |
-
// This is needed when for example an image is selected within a
|
1346 |
-
// layer a call to focus will then remove the control selection
|
1347 |
-
if (controlElm && controlElm.ownerDocument == doc) {
|
1348 |
-
ieRng = doc.body.createControlRange();
|
1349 |
-
ieRng.addElement(controlElm);
|
1350 |
-
ieRng.select();
|
1351 |
-
}
|
1352 |
-
|
1353 |
-
// #ifdef contentEditable
|
1354 |
-
|
1355 |
-
// Content editable mode ends here
|
1356 |
-
if (ce) {
|
1357 |
-
if (tinymce.isWebKit)
|
1358 |
-
t.getWin().focus();
|
1359 |
-
else {
|
1360 |
-
if (tinymce.isIE)
|
1361 |
-
t.getElement().setActive();
|
1362 |
-
else
|
1363 |
-
t.getElement().focus();
|
1364 |
-
}
|
1365 |
-
}
|
1366 |
-
|
1367 |
-
// #endif
|
1368 |
-
}
|
1369 |
-
|
1370 |
-
if (tinymce.activeEditor != t) {
|
1371 |
-
if ((oed = tinymce.activeEditor) != null)
|
1372 |
-
oed.onDeactivate.dispatch(oed, t);
|
1373 |
-
|
1374 |
-
t.onActivate.dispatch(t, oed);
|
1375 |
-
}
|
1376 |
-
|
1377 |
-
tinymce._setActive(t);
|
1378 |
-
},
|
1379 |
-
|
1380 |
-
/**
|
1381 |
-
* Executes a legacy callback. This method is useful to call old 2.x option callbacks.
|
1382 |
-
* There new event model is a better way to add callback so this method might be removed in the future.
|
1383 |
-
*
|
1384 |
-
* @method execCallback
|
1385 |
-
* @param {String} n Name of the callback to execute.
|
1386 |
-
* @return {Object} Return value passed from callback function.
|
1387 |
-
*/
|
1388 |
-
execCallback : function(n) {
|
1389 |
-
var t = this, f = t.settings[n], s;
|
1390 |
-
|
1391 |
-
if (!f)
|
1392 |
-
return;
|
1393 |
-
|
1394 |
-
// Look through lookup
|
1395 |
-
if (t.callbackLookup && (s = t.callbackLookup[n])) {
|
1396 |
-
f = s.func;
|
1397 |
-
s = s.scope;
|
1398 |
-
}
|
1399 |
-
|
1400 |
-
if (is(f, 'string')) {
|
1401 |
-
s = f.replace(/\.\w+$/, '');
|
1402 |
-
s = s ? tinymce.resolve(s) : 0;
|
1403 |
-
f = tinymce.resolve(f);
|
1404 |
-
t.callbackLookup = t.callbackLookup || {};
|
1405 |
-
t.callbackLookup[n] = {func : f, scope : s};
|
1406 |
-
}
|
1407 |
-
|
1408 |
-
return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
|
1409 |
-
},
|
1410 |
-
|
1411 |
-
/**
|
1412 |
-
* Translates the specified string by replacing variables with language pack items it will also check if there is
|
1413 |
-
* a key mathcin the input.
|
1414 |
-
*
|
1415 |
-
* @method translate
|
1416 |
-
* @param {String} s String to translate by the language pack data.
|
1417 |
-
* @return {String} Translated string.
|
1418 |
-
*/
|
1419 |
-
translate : function(s) {
|
1420 |
-
var c = this.settings.language || 'en', i18n = tinymce.i18n;
|
1421 |
-
|
1422 |
-
if (!s)
|
1423 |
-
return '';
|
1424 |
-
|
1425 |
-
return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
|
1426 |
-
return i18n[c + '.' + b] || '{#' + b + '}';
|
1427 |
-
});
|
1428 |
-
},
|
1429 |
-
|
1430 |
-
/**
|
1431 |
-
* Returns a language pack item by name/key.
|
1432 |
-
*
|
1433 |
-
* @method getLang
|
1434 |
-
* @param {String} n Name/key to get from the language pack.
|
1435 |
-
* @param {String} dv Optional default value to retrive.
|
1436 |
-
*/
|
1437 |
-
getLang : function(n, dv) {
|
1438 |
-
return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
|
1439 |
-
},
|
1440 |
-
|
1441 |
-
/**
|
1442 |
-
* Returns a configuration parameter by name.
|
1443 |
-
*
|
1444 |
-
* @method getParam
|
1445 |
-
* @param {String} n Configruation parameter to retrive.
|
1446 |
-
* @param {String} dv Optional default value to return.
|
1447 |
-
* @param {String} ty Optional type parameter.
|
1448 |
-
* @return {String} Configuration parameter value or default value.
|
1449 |
-
*/
|
1450 |
-
getParam : function(n, dv, ty) {
|
1451 |
-
var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
|
1452 |
-
|
1453 |
-
if (ty === 'hash') {
|
1454 |
-
o = {};
|
1455 |
-
|
1456 |
-
if (is(v, 'string')) {
|
1457 |
-
each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
|
1458 |
-
v = v.split('=');
|
1459 |
-
|
1460 |
-
if (v.length > 1)
|
1461 |
-
o[tr(v[0])] = tr(v[1]);
|
1462 |
-
else
|
1463 |
-
o[tr(v[0])] = tr(v);
|
1464 |
-
});
|
1465 |
-
} else
|
1466 |
-
o = v;
|
1467 |
-
|
1468 |
-
return o;
|
1469 |
-
}
|
1470 |
-
|
1471 |
-
return v;
|
1472 |
-
},
|
1473 |
-
|
1474 |
-
/**
|
1475 |
-
* Distpaches out a onNodeChange event to all observers. This method should be called when you
|
1476 |
-
* need to update the UI states or element path etc.
|
1477 |
-
*
|
1478 |
-
* @method nodeChanged
|
1479 |
-
* @param {Object} o Optional object to pass along for the node changed event.
|
1480 |
-
*/
|
1481 |
-
nodeChanged : function(o) {
|
1482 |
-
var t = this, s = t.selection, n = (isIE ? s.getNode() : s.getStart()) || t.getBody();
|
1483 |
-
|
1484 |
-
// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
|
1485 |
-
if (t.initialized) {
|
1486 |
-
o = o || {};
|
1487 |
-
n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state
|
1488 |
-
|
1489 |
-
// Get parents and add them to object
|
1490 |
-
o.parents = [];
|
1491 |
-
t.dom.getParent(n, function(node) {
|
1492 |
-
if (node.nodeName == 'BODY')
|
1493 |
-
return true;
|
1494 |
-
|
1495 |
-
o.parents.push(node);
|
1496 |
-
});
|
1497 |
-
|
1498 |
-
t.onNodeChange.dispatch(
|
1499 |
-
t,
|
1500 |
-
o ? o.controlManager || t.controlManager : t.controlManager,
|
1501 |
-
n,
|
1502 |
-
s.isCollapsed(),
|
1503 |
-
o
|
1504 |
-
);
|
1505 |
-
}
|
1506 |
-
},
|
1507 |
-
|
1508 |
-
/**
|
1509 |
-
* Adds a button that later gets created by the ControlManager. This is a shorter and easier method
|
1510 |
-
* of adding buttons without the need to deal with the ControlManager directly. But it's also less
|
1511 |
-
* powerfull if you need more control use the ControlManagers factory methods instead.
|
1512 |
-
*
|
1513 |
-
* @method addButton
|
1514 |
-
* @param {String} n Button name to add.
|
1515 |
-
* @param {Object} s Settings object with title, cmd etc.
|
1516 |
-
*/
|
1517 |
-
addButton : function(n, s) {
|
1518 |
-
var t = this;
|
1519 |
-
|
1520 |
-
t.buttons = t.buttons || {};
|
1521 |
-
t.buttons[n] = s;
|
1522 |
-
},
|
1523 |
-
|
1524 |
-
/**
|
1525 |
-
* Adds a custom command to the editor, you can also override existing commands with this method.
|
1526 |
-
* The command that you add can be executed with execCommand.
|
1527 |
-
*
|
1528 |
-
* @method addCommand
|
1529 |
-
* @param {String} n Command name to add/override.
|
1530 |
-
* @param {function} f Function to execute when the command occurs.
|
1531 |
-
* @param {Object} s Optional scope to execute the function in.
|
1532 |
-
*/
|
1533 |
-
addCommand : function(n, f, s) {
|
1534 |
-
this.execCommands[n] = {func : f, scope : s || this};
|
1535 |
-
},
|
1536 |
-
|
1537 |
-
/**
|
1538 |
-
* Adds a custom query state command to the editor, you can also override existing commands with this method.
|
1539 |
-
* The command that you add can be executed with queryCommandState function.
|
1540 |
-
*
|
1541 |
-
* @method addQueryStateHandler
|
1542 |
-
* @param {String} n Command name to add/override.
|
1543 |
-
* @param {function} f Function to execute when the command state retrival occurs.
|
1544 |
-
* @param {Object} s Optional scope to execute the function in.
|
1545 |
-
*/
|
1546 |
-
addQueryStateHandler : function(n, f, s) {
|
1547 |
-
this.queryStateCommands[n] = {func : f, scope : s || this};
|
1548 |
-
},
|
1549 |
-
|
1550 |
-
/**
|
1551 |
-
* Adds a custom query value command to the editor, you can also override existing commands with this method.
|
1552 |
-
* The command that you add can be executed with queryCommandValue function.
|
1553 |
-
*
|
1554 |
-
* @method addQueryValueHandler
|
1555 |
-
* @param {String} n Command name to add/override.
|
1556 |
-
* @param {function} f Function to execute when the command value retrival occurs.
|
1557 |
-
* @param {Object} s Optional scope to execute the function in.
|
1558 |
-
*/
|
1559 |
-
addQueryValueHandler : function(n, f, s) {
|
1560 |
-
this.queryValueCommands[n] = {func : f, scope : s || this};
|
1561 |
-
},
|
1562 |
-
|
1563 |
-
/**
|
1564 |
-
* Adds a keyboard shortcut for some command or function.
|
1565 |
-
*
|
1566 |
-
* @method addShortcut
|
1567 |
-
* @param {String} pa Shortcut pattern. Like for example: ctrl+alt+o.
|
1568 |
-
* @param {String} desc Text description for the command.
|
1569 |
-
* @param {String/Function} cmd_func Command name string or function to execute when the key is pressed.
|
1570 |
-
* @param {Object} sc Optional scope to execute the function in.
|
1571 |
-
* @return {Boolean} true/false state if the shortcut was added or not.
|
1572 |
-
*/
|
1573 |
-
addShortcut : function(pa, desc, cmd_func, sc) {
|
1574 |
-
var t = this, c;
|
1575 |
-
|
1576 |
-
if (!t.settings.custom_shortcuts)
|
1577 |
-
return false;
|
1578 |
-
|
1579 |
-
t.shortcuts = t.shortcuts || {};
|
1580 |
-
|
1581 |
-
if (is(cmd_func, 'string')) {
|
1582 |
-
c = cmd_func;
|
1583 |
-
|
1584 |
-
cmd_func = function() {
|
1585 |
-
t.execCommand(c, false, null);
|
1586 |
-
};
|
1587 |
-
}
|
1588 |
-
|
1589 |
-
if (is(cmd_func, 'object')) {
|
1590 |
-
c = cmd_func;
|
1591 |
-
|
1592 |
-
cmd_func = function() {
|
1593 |
-
t.execCommand(c[0], c[1], c[2]);
|
1594 |
-
};
|
1595 |
-
}
|
1596 |
-
|
1597 |
-
each(explode(pa), function(pa) {
|
1598 |
-
var o = {
|
1599 |
-
func : cmd_func,
|
1600 |
-
scope : sc || this,
|
1601 |
-
desc : desc,
|
1602 |
-
alt : false,
|
1603 |
-
ctrl : false,
|
1604 |
-
shift : false
|
1605 |
-
};
|
1606 |
-
|
1607 |
-
each(explode(pa, '+'), function(v) {
|
1608 |
-
switch (v) {
|
1609 |
-
case 'alt':
|
1610 |
-
case 'ctrl':
|
1611 |
-
case 'shift':
|
1612 |
-
o[v] = true;
|
1613 |
-
break;
|
1614 |
-
|
1615 |
-
default:
|
1616 |
-
o.charCode = v.charCodeAt(0);
|
1617 |
-
o.keyCode = v.toUpperCase().charCodeAt(0);
|
1618 |
-
}
|
1619 |
-
});
|
1620 |
-
|
1621 |
-
t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
|
1622 |
-
});
|
1623 |
-
|
1624 |
-
return true;
|
1625 |
-
},
|
1626 |
-
|
1627 |
-
/**
|
1628 |
-
* Executes a command on the current instance. These commands can be TinyMCE internal commands prefixed with "mce" or
|
1629 |
-
* they can be build in browser commands such as "Bold". A compleate list of browser commands is available on MSDN or Mozilla.org.
|
1630 |
-
* This function will dispatch the execCommand function on each plugin, theme or the execcommand_callback option if none of these
|
1631 |
-
* return true it will handle the command as a internal browser command.
|
1632 |
-
*
|
1633 |
-
* @method execCommand
|
1634 |
-
* @param {String} cmd Command name to execute, for example mceLink or Bold.
|
1635 |
-
* @param {Boolean} ui True/false state if a UI (dialog) should be presented or not.
|
1636 |
-
* @param {mixed} val Optional command value, this can be anything.
|
1637 |
-
* @param {Object} a Optional arguments object.
|
1638 |
-
* @return {Boolean} True/false if the command was executed or not.
|
1639 |
-
*/
|
1640 |
-
execCommand : function(cmd, ui, val, a) {
|
1641 |
-
var t = this, s = 0, o, st;
|
1642 |
-
|
1643 |
-
if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
|
1644 |
-
t.focus();
|
1645 |
-
|
1646 |
-
o = {};
|
1647 |
-
t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o);
|
1648 |
-
if (o.terminate)
|
1649 |
-
return false;
|
1650 |
-
|
1651 |
-
// Command callback
|
1652 |
-
if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
|
1653 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1654 |
-
return true;
|
1655 |
-
}
|
1656 |
-
|
1657 |
-
// Registred commands
|
1658 |
-
if (o = t.execCommands[cmd]) {
|
1659 |
-
st = o.func.call(o.scope, ui, val);
|
1660 |
-
|
1661 |
-
// Fall through on true
|
1662 |
-
if (st !== true) {
|
1663 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1664 |
-
return st;
|
1665 |
-
}
|
1666 |
-
}
|
1667 |
-
|
1668 |
-
// Plugin commands
|
1669 |
-
each(t.plugins, function(p) {
|
1670 |
-
if (p.execCommand && p.execCommand(cmd, ui, val)) {
|
1671 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1672 |
-
s = 1;
|
1673 |
-
return false;
|
1674 |
-
}
|
1675 |
-
});
|
1676 |
-
|
1677 |
-
if (s)
|
1678 |
-
return true;
|
1679 |
-
|
1680 |
-
// Theme commands
|
1681 |
-
if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
|
1682 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1683 |
-
return true;
|
1684 |
-
}
|
1685 |
-
|
1686 |
-
// Execute global commands
|
1687 |
-
if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) {
|
1688 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1689 |
-
return true;
|
1690 |
-
}
|
1691 |
-
|
1692 |
-
// Editor commands
|
1693 |
-
if (t.editorCommands.execCommand(cmd, ui, val)) {
|
1694 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1695 |
-
return true;
|
1696 |
-
}
|
1697 |
-
|
1698 |
-
// Browser commands
|
1699 |
-
t.getDoc().execCommand(cmd, ui, val);
|
1700 |
-
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1701 |
-
},
|
1702 |
-
|
1703 |
-
/**
|
1704 |
-
* Returns a command specific state, for example if bold is enabled or not.
|
1705 |
-
*
|
1706 |
-
* @method queryCommandState
|
1707 |
-
* @param {string} cmd Command to query state from.
|
1708 |
-
* @return {Boolean} Command specific state, for example if bold is enabled or not.
|
1709 |
-
*/
|
1710 |
-
queryCommandState : function(cmd) {
|
1711 |
-
var t = this, o, s;
|
1712 |
-
|
1713 |
-
// Is hidden then return undefined
|
1714 |
-
if (t._isHidden())
|
1715 |
-
return;
|
1716 |
-
|
1717 |
-
// Registred commands
|
1718 |
-
if (o = t.queryStateCommands[cmd]) {
|
1719 |
-
s = o.func.call(o.scope);
|
1720 |
-
|
1721 |
-
// Fall though on true
|
1722 |
-
if (s !== true)
|
1723 |
-
return s;
|
1724 |
-
}
|
1725 |
-
|
1726 |
-
// Registred commands
|
1727 |
-
o = t.editorCommands.queryCommandState(cmd);
|
1728 |
-
if (o !== -1)
|
1729 |
-
return o;
|
1730 |
-
|
1731 |
-
// Browser commands
|
1732 |
-
try {
|
1733 |
-
return this.getDoc().queryCommandState(cmd);
|
1734 |
-
} catch (ex) {
|
1735 |
-
// Fails sometimes see bug: 1896577
|
1736 |
-
}
|
1737 |
-
},
|
1738 |
-
|
1739 |
-
/**
|
1740 |
-
* Returns a command specific value, for example the current font size.
|
1741 |
-
*
|
1742 |
-
* @method queryCommandValue
|
1743 |
-
* @param {string} c Command to query value from.
|
1744 |
-
* @return {Object} Command specific value, for example the current font size.
|
1745 |
-
*/
|
1746 |
-
queryCommandValue : function(c) {
|
1747 |
-
var t = this, o, s;
|
1748 |
-
|
1749 |
-
// Is hidden then return undefined
|
1750 |
-
if (t._isHidden())
|
1751 |
-
return;
|
1752 |
-
|
1753 |
-
// Registred commands
|
1754 |
-
if (o = t.queryValueCommands[c]) {
|
1755 |
-
s = o.func.call(o.scope);
|
1756 |
-
|
1757 |
-
// Fall though on true
|
1758 |
-
if (s !== true)
|
1759 |
-
return s;
|
1760 |
-
}
|
1761 |
-
|
1762 |
-
// Registred commands
|
1763 |
-
o = t.editorCommands.queryCommandValue(c);
|
1764 |
-
if (is(o))
|
1765 |
-
return o;
|
1766 |
-
|
1767 |
-
// Browser commands
|
1768 |
-
try {
|
1769 |
-
return this.getDoc().queryCommandValue(c);
|
1770 |
-
} catch (ex) {
|
1771 |
-
// Fails sometimes see bug: 1896577
|
1772 |
-
}
|
1773 |
-
},
|
1774 |
-
|
1775 |
-
/**
|
1776 |
-
* Shows the editor and hides any textarea/div that the editor is supposed to replace.
|
1777 |
-
*
|
1778 |
-
* @method show
|
1779 |
-
*/
|
1780 |
-
show : function() {
|
1781 |
-
var t = this;
|
1782 |
-
|
1783 |
-
DOM.show(t.getContainer());
|
1784 |
-
DOM.hide(t.id);
|
1785 |
-
t.load();
|
1786 |
-
},
|
1787 |
-
|
1788 |
-
/**
|
1789 |
-
* Hides the editor and shows any textarea/div that the editor is supposed to replace.
|
1790 |
-
*
|
1791 |
-
* @method hide
|
1792 |
-
*/
|
1793 |
-
hide : function() {
|
1794 |
-
var t = this, d = t.getDoc();
|
1795 |
-
|
1796 |
-
// Fixed bug where IE has a blinking cursor left from the editor
|
1797 |
-
if (isIE && d)
|
1798 |
-
d.execCommand('SelectAll');
|
1799 |
-
|
1800 |
-
// We must save before we hide so Safari doesn't crash
|
1801 |
-
t.save();
|
1802 |
-
DOM.hide(t.getContainer());
|
1803 |
-
DOM.setStyle(t.id, 'display', t.orgDisplay);
|
1804 |
-
},
|
1805 |
-
|
1806 |
-
/**
|
1807 |
-
* Returns true/false if the editor is hidden or not.
|
1808 |
-
*
|
1809 |
-
* @method isHidden
|
1810 |
-
* @return {Boolean} True/false if the editor is hidden or not.
|
1811 |
-
*/
|
1812 |
-
isHidden : function() {
|
1813 |
-
return !DOM.isHidden(this.id);
|
1814 |
-
},
|
1815 |
-
|
1816 |
-
/**
|
1817 |
-
* Sets the progress state, this will display a throbber/progess for the editor.
|
1818 |
-
* This is ideal for asycronous operations like an AJAX save call.
|
1819 |
-
*
|
1820 |
-
* @method setProgressState
|
1821 |
-
* @param {Boolean} b Boolean state if the progress should be shown or hidden.
|
1822 |
-
* @param {Number} ti Optional time to wait before the progress gets shown.
|
1823 |
-
* @param {Object} o Optional object to pass to the progress observers.
|
1824 |
-
* @return {Boolean} Same as the input state.
|
1825 |
-
*/
|
1826 |
-
setProgressState : function(b, ti, o) {
|
1827 |
-
this.onSetProgressState.dispatch(this, b, ti, o);
|
1828 |
-
|
1829 |
-
return b;
|
1830 |
-
},
|
1831 |
-
|
1832 |
-
/**
|
1833 |
-
* Loads contents from the textarea or div element that got converted into an editor instance.
|
1834 |
-
* This method will move the contents from that textarea or div into the editor by using setContent
|
1835 |
-
* so all events etc that method has will get dispatched as well.
|
1836 |
-
*
|
1837 |
-
* @method load
|
1838 |
-
* @param {Object} o Optional content object, this gets passed around through the whole load process.
|
1839 |
-
* @return {String} HTML string that got set into the editor.
|
1840 |
-
*/
|
1841 |
-
load : function(o) {
|
1842 |
-
var t = this, e = t.getElement(), h;
|
1843 |
-
|
1844 |
-
if (e) {
|
1845 |
-
o = o || {};
|
1846 |
-
o.load = true;
|
1847 |
-
|
1848 |
-
// Double encode existing entities in the value
|
1849 |
-
h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
|
1850 |
-
o.element = e;
|
1851 |
-
|
1852 |
-
if (!o.no_events)
|
1853 |
-
t.onLoadContent.dispatch(t, o);
|
1854 |
-
|
1855 |
-
o.element = e = null;
|
1856 |
-
|
1857 |
-
return h;
|
1858 |
-
}
|
1859 |
-
},
|
1860 |
-
|
1861 |
-
/**
|
1862 |
-
* Saves the contents from a editor out to the textarea or div element that got converted into an editor instance.
|
1863 |
-
* This method will move the HTML contents from the editor into that textarea or div by getContent
|
1864 |
-
* so all events etc that method has will get dispatched as well.
|
1865 |
-
*
|
1866 |
-
* @method save
|
1867 |
-
* @param {Object} o Optional content object, this gets passed around through the whole save process.
|
1868 |
-
* @return {String} HTML string that got set into the textarea/div.
|
1869 |
-
*/
|
1870 |
-
save : function(o) {
|
1871 |
-
var t = this, e = t.getElement(), h, f;
|
1872 |
-
|
1873 |
-
if (!e || !t.initialized)
|
1874 |
-
return;
|
1875 |
-
|
1876 |
-
o = o || {};
|
1877 |
-
o.save = true;
|
1878 |
-
|
1879 |
-
// Add undo level will trigger onchange event
|
1880 |
-
if (!o.no_events) {
|
1881 |
-
t.undoManager.typing = 0;
|
1882 |
-
t.undoManager.add();
|
1883 |
-
}
|
1884 |
-
|
1885 |
-
o.element = e;
|
1886 |
-
h = o.content = t.getContent(o);
|
1887 |
-
|
1888 |
-
if (!o.no_events)
|
1889 |
-
t.onSaveContent.dispatch(t, o);
|
1890 |
-
|
1891 |
-
h = o.content;
|
1892 |
-
|
1893 |
-
if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
|
1894 |
-
e.innerHTML = h;
|
1895 |
-
|
1896 |
-
// Update hidden form element
|
1897 |
-
if (f = DOM.getParent(t.id, 'form')) {
|
1898 |
-
each(f.elements, function(e) {
|
1899 |
-
if (e.name == t.id) {
|
1900 |
-
e.value = h;
|
1901 |
-
return false;
|
1902 |
-
}
|
1903 |
-
});
|
1904 |
-
}
|
1905 |
-
} else
|
1906 |
-
e.value = h;
|
1907 |
-
|
1908 |
-
o.element = e = null;
|
1909 |
-
|
1910 |
-
return h;
|
1911 |
-
},
|
1912 |
-
|
1913 |
-
/**
|
1914 |
-
* Sets the specified content to the editor instance, this will cleanup the content before it gets set using
|
1915 |
-
* the different cleanup rules options.
|
1916 |
-
*
|
1917 |
-
* @method setContent
|
1918 |
-
* @param {String} h Content to set to editor, normally HTML contents but can be other formats as well.
|
1919 |
-
* @param {Object} o Optional content object, this gets passed around through the whole set process.
|
1920 |
-
* @return {String} HTML string that got set into the editor.
|
1921 |
-
*/
|
1922 |
-
setContent : function(h, o) {
|
1923 |
-
var t = this;
|
1924 |
-
|
1925 |
-
o = o || {};
|
1926 |
-
o.format = o.format || 'html';
|
1927 |
-
o.set = true;
|
1928 |
-
o.content = h;
|
1929 |
-
|
1930 |
-
if (!o.no_events)
|
1931 |
-
t.onBeforeSetContent.dispatch(t, o);
|
1932 |
-
|
1933 |
-
// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
|
1934 |
-
// It will also be impossible to place the caret in the editor unless there is a BR element present
|
1935 |
-
if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) {
|
1936 |
-
o.content = t.dom.setHTML(t.getBody(), '<br _mce_bogus="1" />');
|
1937 |
-
o.format = 'raw';
|
1938 |
-
}
|
1939 |
-
|
1940 |
-
o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content));
|
1941 |
-
|
1942 |
-
if (o.format != 'raw' && t.settings.cleanup) {
|
1943 |
-
o.getInner = true;
|
1944 |
-
o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o));
|
1945 |
-
}
|
1946 |
-
|
1947 |
-
if (!o.no_events)
|
1948 |
-
t.onSetContent.dispatch(t, o);
|
1949 |
-
|
1950 |
-
return o.content;
|
1951 |
-
},
|
1952 |
-
|
1953 |
-
/**
|
1954 |
-
* Gets the content from the editor instance, this will cleanup the content before it gets returned using
|
1955 |
-
* the different cleanup rules options.
|
1956 |
-
*
|
1957 |
-
* @method getContent
|
1958 |
-
* @param {Object} o Optional content object, this gets passed around through the whole get process.
|
1959 |
-
* @return {String} Cleaned content string, normally HTML contents.
|
1960 |
-
*/
|
1961 |
-
getContent : function(o) {
|
1962 |
-
var t = this, h;
|
1963 |
-
|
1964 |
-
o = o || {};
|
1965 |
-
o.format = o.format || 'html';
|
1966 |
-
o.get = true;
|
1967 |
-
|
1968 |
-
if (!o.no_events)
|
1969 |
-
t.onBeforeGetContent.dispatch(t, o);
|
1970 |
-
|
1971 |
-
if (o.format != 'raw' && t.settings.cleanup) {
|
1972 |
-
o.getInner = true;
|
1973 |
-
h = t.serializer.serialize(t.getBody(), o);
|
1974 |
-
} else
|
1975 |
-
h = t.getBody().innerHTML;
|
1976 |
-
|
1977 |
-
h = h.replace(/^\s*|\s*$/g, '');
|
1978 |
-
o.content = h;
|
1979 |
-
|
1980 |
-
if (!o.no_events)
|
1981 |
-
t.onGetContent.dispatch(t, o);
|
1982 |
-
|
1983 |
-
return o.content;
|
1984 |
-
},
|
1985 |
-
|
1986 |
-
/**
|
1987 |
-
* Returns true/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
|
1988 |
-
*
|
1989 |
-
* @method isDirty
|
1990 |
-
* @return {Boolean} True/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
|
1991 |
-
*/
|
1992 |
-
isDirty : function() {
|
1993 |
-
var t = this;
|
1994 |
-
|
1995 |
-
return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty;
|
1996 |
-
},
|
1997 |
-
|
1998 |
-
/**
|
1999 |
-
* Returns the editors container element. The container element wrappes in
|
2000 |
-
* all the elements added to the page for the editor. Such as UI, iframe etc.
|
2001 |
-
*
|
2002 |
-
* @method getContainer
|
2003 |
-
* @return {Element} HTML DOM element for the editor container.
|
2004 |
-
*/
|
2005 |
-
getContainer : function() {
|
2006 |
-
var t = this;
|
2007 |
-
|
2008 |
-
if (!t.container)
|
2009 |
-
t.container = DOM.get(t.editorContainer || t.id + '_parent');
|
2010 |
-
|
2011 |
-
return t.container;
|
2012 |
-
},
|
2013 |
-
|
2014 |
-
/**
|
2015 |
-
* Returns the editors content area container element. The this element is the one who
|
2016 |
-
* holds the iframe or the editable element.
|
2017 |
-
*
|
2018 |
-
* @method getContentAreaContainer
|
2019 |
-
* @return {Element} HTML DOM element for the editor area container.
|
2020 |
-
*/
|
2021 |
-
getContentAreaContainer : function() {
|
2022 |
-
return this.contentAreaContainer;
|
2023 |
-
},
|
2024 |
-
|
2025 |
-
/**
|
2026 |
-
* Returns the target element/textarea that got replaced with a TinyMCE editor instance.
|
2027 |
-
*
|
2028 |
-
* @method getElement
|
2029 |
-
* @return {Element} HTML DOM element for the replaced element.
|
2030 |
-
*/
|
2031 |
-
getElement : function() {
|
2032 |
-
return DOM.get(this.settings.content_element || this.id);
|
2033 |
-
},
|
2034 |
-
|
2035 |
-
/**
|
2036 |
-
* Returns the iframes window object.
|
2037 |
-
*
|
2038 |
-
* @method getWin
|
2039 |
-
* @return {Window} Iframe DOM window object.
|
2040 |
-
*/
|
2041 |
-
getWin : function() {
|
2042 |
-
var t = this, e;
|
2043 |
-
|
2044 |
-
if (!t.contentWindow) {
|
2045 |
-
e = DOM.get(t.id + "_ifr");
|
2046 |
-
|
2047 |
-
if (e)
|
2048 |
-
t.contentWindow = e.contentWindow;
|
2049 |
-
}
|
2050 |
-
|
2051 |
-
return t.contentWindow;
|
2052 |
-
},
|
2053 |
-
|
2054 |
-
/**
|
2055 |
-
* Returns the iframes document object.
|
2056 |
-
*
|
2057 |
-
* @method getDoc
|
2058 |
-
* @return {Document} Iframe DOM document object.
|
2059 |
-
*/
|
2060 |
-
getDoc : function() {
|
2061 |
-
var t = this, w;
|
2062 |
-
|
2063 |
-
if (!t.contentDocument) {
|
2064 |
-
w = t.getWin();
|
2065 |
-
|
2066 |
-
if (w)
|
2067 |
-
t.contentDocument = w.document;
|
2068 |
-
}
|
2069 |
-
|
2070 |
-
return t.contentDocument;
|
2071 |
-
},
|
2072 |
-
|
2073 |
-
/**
|
2074 |
-
* Returns the iframes body element.
|
2075 |
-
*
|
2076 |
-
* @method getBody
|
2077 |
-
* @return {Element} Iframe body element.
|
2078 |
-
*/
|
2079 |
-
getBody : function() {
|
2080 |
-
return this.bodyElement || this.getDoc().body;
|
2081 |
-
},
|
2082 |
-
|
2083 |
-
/**
|
2084 |
-
* URL converter function this gets executed each time a user adds an img, a or
|
2085 |
-
* any other element that has a URL in it. This will be called both by the DOM and HTML
|
2086 |
-
* manipulation functions.
|
2087 |
-
*
|
2088 |
-
* @method convertURL
|
2089 |
-
* @param {string} u URL to convert.
|
2090 |
-
* @param {string} n Attribute name src, href etc.
|
2091 |
-
* @param {string/HTMLElement} Tag name or HTML DOM element depending on HTML or DOM insert.
|
2092 |
-
* @return {string} Converted URL string.
|
2093 |
-
*/
|
2094 |
-
convertURL : function(u, n, e) {
|
2095 |
-
var t = this, s = t.settings;
|
2096 |
-
|
2097 |
-
// Use callback instead
|
2098 |
-
if (s.urlconverter_callback)
|
2099 |
-
return t.execCallback('urlconverter_callback', u, e, true, n);
|
2100 |
-
|
2101 |
-
// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
|
2102 |
-
if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)
|
2103 |
-
return u;
|
2104 |
-
|
2105 |
-
// Convert to relative
|
2106 |
-
if (s.relative_urls)
|
2107 |
-
return t.documentBaseURI.toRelative(u);
|
2108 |
-
|
2109 |
-
// Convert to absolute
|
2110 |
-
u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);
|
2111 |
-
|
2112 |
-
return u;
|
2113 |
-
},
|
2114 |
-
|
2115 |
-
/**
|
2116 |
-
* Adds visual aid for tables, anchors etc so they can be more easily edited inside the editor.
|
2117 |
-
*
|
2118 |
-
* @method addVisual
|
2119 |
-
* @param {Element} e Optional root element to loop though to find tables etc that needs the visual aid.
|
2120 |
-
*/
|
2121 |
-
addVisual : function(e) {
|
2122 |
-
var t = this, s = t.settings;
|
2123 |
-
|
2124 |
-
e = e || t.getBody();
|
2125 |
-
|
2126 |
-
if (!is(t.hasVisual))
|
2127 |
-
t.hasVisual = s.visual;
|
2128 |
-
|
2129 |
-
each(t.dom.select('table,a', e), function(e) {
|
2130 |
-
var v;
|
2131 |
-
|
2132 |
-
switch (e.nodeName) {
|
2133 |
-
case 'TABLE':
|
2134 |
-
v = t.dom.getAttrib(e, 'border');
|
2135 |
-
|
2136 |
-
if (!v || v == '0') {
|
2137 |
-
if (t.hasVisual)
|
2138 |
-
t.dom.addClass(e, s.visual_table_class);
|
2139 |
-
else
|
2140 |
-
t.dom.removeClass(e, s.visual_table_class);
|
2141 |
-
}
|
2142 |
-
|
2143 |
-
return;
|
2144 |
-
|
2145 |
-
case 'A':
|
2146 |
-
v = t.dom.getAttrib(e, 'name');
|
2147 |
-
|
2148 |
-
if (v) {
|
2149 |
-
if (t.hasVisual)
|
2150 |
-
t.dom.addClass(e, 'mceItemAnchor');
|
2151 |
-
else
|
2152 |
-
t.dom.removeClass(e, 'mceItemAnchor');
|
2153 |
-
}
|
2154 |
-
|
2155 |
-
return;
|
2156 |
-
}
|
2157 |
-
});
|
2158 |
-
|
2159 |
-
t.onVisualAid.dispatch(t, e, t.hasVisual);
|
2160 |
-
},
|
2161 |
-
|
2162 |
-
/**
|
2163 |
-
* Removes the editor from the dom and tinymce collection.
|
2164 |
-
*
|
2165 |
-
* @method remove
|
2166 |
-
*/
|
2167 |
-
remove : function() {
|
2168 |
-
var t = this, e = t.getContainer();
|
2169 |
-
|
2170 |
-
t.removed = 1; // Cancels post remove event execution
|
2171 |
-
t.hide();
|
2172 |
-
|
2173 |
-
t.execCallback('remove_instance_callback', t);
|
2174 |
-
t.onRemove.dispatch(t);
|
2175 |
-
|
2176 |
-
// Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
|
2177 |
-
t.onExecCommand.listeners = [];
|
2178 |
-
|
2179 |
-
tinymce.remove(t);
|
2180 |
-
DOM.remove(e);
|
2181 |
-
},
|
2182 |
-
|
2183 |
-
/**
|
2184 |
-
* Destroys the editor instance by removing all events, element references or other resources
|
2185 |
-
* that could leak memory. This method will be called automatically when the page is unloaded
|
2186 |
-
* but you can also call it directly if you know what you are doing.
|
2187 |
-
*
|
2188 |
-
* @method destroy
|
2189 |
-
* @param {Boolean} s Optional state if the destroy is an automatic destroy or user called one.
|
2190 |
-
*/
|
2191 |
-
destroy : function(s) {
|
2192 |
-
var t = this;
|
2193 |
-
|
2194 |
-
// One time is enough
|
2195 |
-
if (t.destroyed)
|
2196 |
-
return;
|
2197 |
-
|
2198 |
-
if (!s) {
|
2199 |
-
tinymce.removeUnload(t.destroy);
|
2200 |
-
tinyMCE.onBeforeUnload.remove(t._beforeUnload);
|
2201 |
-
|
2202 |
-
// Manual destroy
|
2203 |
-
if (t.theme && t.theme.destroy)
|
2204 |
-
t.theme.destroy();
|
2205 |
-
|
2206 |
-
// Destroy controls, selection and dom
|
2207 |
-
t.controlManager.destroy();
|
2208 |
-
t.selection.destroy();
|
2209 |
-
t.dom.destroy();
|
2210 |
-
|
2211 |
-
// Remove all events
|
2212 |
-
|
2213 |
-
// Don't clear the window or document if content editable
|
2214 |
-
// is enabled since other instances might still be present
|
2215 |
-
if (!t.settings.content_editable) {
|
2216 |
-
Event.clear(t.getWin());
|
2217 |
-
Event.clear(t.getDoc());
|
2218 |
-
}
|
2219 |
-
|
2220 |
-
Event.clear(t.getBody());
|
2221 |
-
Event.clear(t.formElement);
|
2222 |
-
}
|
2223 |
-
|
2224 |
-
if (t.formElement) {
|
2225 |
-
t.formElement.submit = t.formElement._mceOldSubmit;
|
2226 |
-
t.formElement._mceOldSubmit = null;
|
2227 |
-
}
|
2228 |
-
|
2229 |
-
t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
|
2230 |
-
|
2231 |
-
if (t.selection)
|
2232 |
-
t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
|
2233 |
-
|
2234 |
-
t.destroyed = 1;
|
2235 |
-
},
|
2236 |
-
|
2237 |
-
// Internal functions
|
2238 |
-
|
2239 |
-
_addEvents : function() {
|
2240 |
-
// 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
|
2241 |
-
var t = this, i, s = t.settings, lo = {
|
2242 |
-
mouseup : 'onMouseUp',
|
2243 |
-
mousedown : 'onMouseDown',
|
2244 |
-
click : 'onClick',
|
2245 |
-
keyup : 'onKeyUp',
|
2246 |
-
keydown : 'onKeyDown',
|
2247 |
-
keypress : 'onKeyPress',
|
2248 |
-
submit : 'onSubmit',
|
2249 |
-
reset : 'onReset',
|
2250 |
-
contextmenu : 'onContextMenu',
|
2251 |
-
dblclick : 'onDblClick',
|
2252 |
-
paste : 'onPaste' // Doesn't work in all browsers yet
|
2253 |
-
};
|
2254 |
-
|
2255 |
-
function eventHandler(e, o) {
|
2256 |
-
var ty = e.type;
|
2257 |
-
|
2258 |
-
// Don't fire events when it's removed
|
2259 |
-
if (t.removed)
|
2260 |
-
return;
|
2261 |
-
|
2262 |
-
// Generic event handler
|
2263 |
-
if (t.onEvent.dispatch(t, e, o) !== false) {
|
2264 |
-
// Specific event handler
|
2265 |
-
t[lo[e.fakeType || e.type]].dispatch(t, e, o);
|
2266 |
-
}
|
2267 |
-
};
|
2268 |
-
|
2269 |
-
// Add DOM events
|
2270 |
-
each(lo, function(v, k) {
|
2271 |
-
switch (k) {
|
2272 |
-
case 'contextmenu':
|
2273 |
-
if (tinymce.isOpera) {
|
2274 |
-
// Fake contextmenu on Opera
|
2275 |
-
t.dom.bind(t.getBody(), 'mousedown', function(e) {
|
2276 |
-
if (e.ctrlKey) {
|
2277 |
-
e.fakeType = 'contextmenu';
|
2278 |
-
eventHandler(e);
|
2279 |
-
}
|
2280 |
-
});
|
2281 |
-
} else
|
2282 |
-
t.dom.bind(t.getBody(), k, eventHandler);
|
2283 |
-
break;
|
2284 |
-
|
2285 |
-
case 'paste':
|
2286 |
-
t.dom.bind(t.getBody(), k, function(e) {
|
2287 |
-
eventHandler(e);
|
2288 |
-
});
|
2289 |
-
break;
|
2290 |
-
|
2291 |
-
case 'submit':
|
2292 |
-
case 'reset':
|
2293 |
-
t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);
|
2294 |
-
break;
|
2295 |
-
|
2296 |
-
default:
|
2297 |
-
t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);
|
2298 |
-
}
|
2299 |
-
});
|
2300 |
-
|
2301 |
-
t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {
|
2302 |
-
t.focus(true);
|
2303 |
-
});
|
2304 |
-
|
2305 |
-
// #ifdef contentEditable
|
2306 |
-
|
2307 |
-
if (s.content_editable && tinymce.isOpera) {
|
2308 |
-
// Opera doesn't support focus event for contentEditable elements so we need to fake it
|
2309 |
-
function doFocus(e) {
|
2310 |
-
t.focus(true);
|
2311 |
-
};
|
2312 |
-
|
2313 |
-
t.dom.bind(t.getBody(), 'click', doFocus);
|
2314 |
-
t.dom.bind(t.getBody(), 'keydown', doFocus);
|
2315 |
-
}
|
2316 |
-
|
2317 |
-
// #endif
|
2318 |
-
|
2319 |
-
// Fixes bug where a specified document_base_uri could result in broken images
|
2320 |
-
// This will also fix drag drop of images in Gecko
|
2321 |
-
if (tinymce.isGecko) {
|
2322 |
-
// Convert all images to absolute URLs
|
2323 |
-
/* t.onSetContent.add(function(ed, o) {
|
2324 |
-
each(ed.dom.select('img'), function(e) {
|
2325 |
-
var v;
|
2326 |
-
|
2327 |
-
if (v = e.getAttribute('_mce_src'))
|
2328 |
-
e.src = t.documentBaseURI.toAbsolute(v);
|
2329 |
-
})
|
2330 |
-
});*/
|
2331 |
-
|
2332 |
-
t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) {
|
2333 |
-
var v;
|
2334 |
-
|
2335 |
-
e = e.target;
|
2336 |
-
|
2337 |
-
if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('_mce_src')))
|
2338 |
-
e.src = t.documentBaseURI.toAbsolute(v);
|
2339 |
-
});
|
2340 |
-
}
|
2341 |
-
|
2342 |
-
// Set various midas options in Gecko
|
2343 |
-
if (isGecko) {
|
2344 |
-
function setOpts() {
|
2345 |
-
var t = this, d = t.getDoc(), s = t.settings;
|
2346 |
-
|
2347 |
-
if (isGecko && !s.readonly) {
|
2348 |
-
if (t._isHidden()) {
|
2349 |
-
try {
|
2350 |
-
if (!s.content_editable)
|
2351 |
-
d.designMode = 'On';
|
2352 |
-
} catch (ex) {
|
2353 |
-
// Fails if it's hidden
|
2354 |
-
}
|
2355 |
-
}
|
2356 |
-
|
2357 |
-
try {
|
2358 |
-
// Try new Gecko method
|
2359 |
-
d.execCommand("styleWithCSS", 0, false);
|
2360 |
-
} catch (ex) {
|
2361 |
-
// Use old method
|
2362 |
-
if (!t._isHidden())
|
2363 |
-
try {d.execCommand("useCSS", 0, true);} catch (ex) {}
|
2364 |
-
}
|
2365 |
-
|
2366 |
-
if (!s.table_inline_editing)
|
2367 |
-
try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}
|
2368 |
-
|
2369 |
-
if (!s.object_resizing)
|
2370 |
-
try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}
|
2371 |
-
}
|
2372 |
-
};
|
2373 |
-
|
2374 |
-
t.onBeforeExecCommand.add(setOpts);
|
2375 |
-
t.onMouseDown.add(setOpts);
|
2376 |
-
}
|
2377 |
-
|
2378 |
-
// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
|
2379 |
-
// WebKit can't even do simple things like selecting an image
|
2380 |
-
// This also fixes so it's possible to select mceItemAnchors
|
2381 |
-
if (tinymce.isWebKit) {
|
2382 |
-
t.onClick.add(function(ed, e) {
|
2383 |
-
e = e.target;
|
2384 |
-
|
2385 |
-
// Needs tobe the setBaseAndExtend or it will fail to select floated images
|
2386 |
-
if (e.nodeName == 'IMG' || (e.nodeName == 'A' && t.dom.hasClass(e, 'mceItemAnchor')))
|
2387 |
-
t.selection.getSel().setBaseAndExtent(e, 0, e, 1);
|
2388 |
-
});
|
2389 |
-
}
|
2390 |
-
|
2391 |
-
// Add node change handlers
|
2392 |
-
t.onMouseUp.add(t.nodeChanged);
|
2393 |
-
//t.onClick.add(t.nodeChanged);
|
2394 |
-
t.onKeyUp.add(function(ed, e) {
|
2395 |
-
var c = e.keyCode;
|
2396 |
-
|
2397 |
-
if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey)
|
2398 |
-
t.nodeChanged();
|
2399 |
-
});
|
2400 |
-
|
2401 |
-
// Add reset handler
|
2402 |
-
t.onReset.add(function() {
|
2403 |
-
t.setContent(t.startContent, {format : 'raw'});
|
2404 |
-
});
|
2405 |
-
|
2406 |
-
// Add shortcuts
|
2407 |
-
if (s.custom_shortcuts) {
|
2408 |
-
if (s.custom_undo_redo_keyboard_shortcuts) {
|
2409 |
-
t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');
|
2410 |
-
t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');
|
2411 |
-
}
|
2412 |
-
|
2413 |
-
// Add default shortcuts for gecko
|
2414 |
-
t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
|
2415 |
-
t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
|
2416 |
-
t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
|
2417 |
-
|
2418 |
-
// BlockFormat shortcuts keys
|
2419 |
-
for (i=1; i<=6; i++)
|
2420 |
-
t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
|
2421 |
-
|
2422 |
-
t.addShortcut('ctrl+7', '', ['FormatBlock', false, '<p>']);
|
2423 |
-
t.addShortcut('ctrl+8', '', ['FormatBlock', false, '<div>']);
|
2424 |
-
t.addShortcut('ctrl+9', '', ['FormatBlock', false, '<address>']);
|
2425 |
-
|
2426 |
-
function find(e) {
|
2427 |
-
var v = null;
|
2428 |
-
|
2429 |
-
if (!e.altKey && !e.ctrlKey && !e.metaKey)
|
2430 |
-
return v;
|
2431 |
-
|
2432 |
-
each(t.shortcuts, function(o) {
|
2433 |
-
if (tinymce.isMac && o.ctrl != e.metaKey)
|
2434 |
-
return;
|
2435 |
-
else if (!tinymce.isMac && o.ctrl != e.ctrlKey)
|
2436 |
-
return;
|
2437 |
-
|
2438 |
-
if (o.alt != e.altKey)
|
2439 |
-
return;
|
2440 |
-
|
2441 |
-
if (o.shift != e.shiftKey)
|
2442 |
-
return;
|
2443 |
-
|
2444 |
-
if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {
|
2445 |
-
v = o;
|
2446 |
-
return false;
|
2447 |
-
}
|
2448 |
-
});
|
2449 |
-
|
2450 |
-
return v;
|
2451 |
-
};
|
2452 |
-
|
2453 |
-
t.onKeyUp.add(function(ed, e) {
|
2454 |
-
var o = find(e);
|
2455 |
-
|
2456 |
-
if (o)
|
2457 |
-
return Event.cancel(e);
|
2458 |
-
});
|
2459 |
-
|
2460 |
-
t.onKeyPress.add(function(ed, e) {
|
2461 |
-
var o = find(e);
|
2462 |
-
|
2463 |
-
if (o)
|
2464 |
-
return Event.cancel(e);
|
2465 |
-
});
|
2466 |
-
|
2467 |
-
t.onKeyDown.add(function(ed, e) {
|
2468 |
-
var o = find(e);
|
2469 |
-
|
2470 |
-
if (o) {
|
2471 |
-
o.func.call(o.scope);
|
2472 |
-
return Event.cancel(e);
|
2473 |
-
}
|
2474 |
-
});
|
2475 |
-
}
|
2476 |
-
|
2477 |
-
if (tinymce.isIE) {
|
2478 |
-
// Fix so resize will only update the width and height attributes not the styles of an image
|
2479 |
-
// It will also block mceItemNoResize items
|
2480 |
-
t.dom.bind(t.getDoc(), 'controlselect', function(e) {
|
2481 |
-
var re = t.resizeInfo, cb;
|
2482 |
-
|
2483 |
-
e = e.target;
|
2484 |
-
|
2485 |
-
// Don't do this action for non image elements
|
2486 |
-
if (e.nodeName !== 'IMG')
|
2487 |
-
return;
|
2488 |
-
|
2489 |
-
if (re)
|
2490 |
-
t.dom.unbind(re.node, re.ev, re.cb);
|
2491 |
-
|
2492 |
-
if (!t.dom.hasClass(e, 'mceItemNoResize')) {
|
2493 |
-
ev = 'resizeend';
|
2494 |
-
cb = t.dom.bind(e, ev, function(e) {
|
2495 |
-
var v;
|
2496 |
-
|
2497 |
-
e = e.target;
|
2498 |
-
|
2499 |
-
if (v = t.dom.getStyle(e, 'width')) {
|
2500 |
-
t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));
|
2501 |
-
t.dom.setStyle(e, 'width', '');
|
2502 |
-
}
|
2503 |
-
|
2504 |
-
if (v = t.dom.getStyle(e, 'height')) {
|
2505 |
-
t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));
|
2506 |
-
t.dom.setStyle(e, 'height', '');
|
2507 |
-
}
|
2508 |
-
});
|
2509 |
-
} else {
|
2510 |
-
ev = 'resizestart';
|
2511 |
-
cb = t.dom.bind(e, 'resizestart', Event.cancel, Event);
|
2512 |
-
}
|
2513 |
-
|
2514 |
-
re = t.resizeInfo = {
|
2515 |
-
node : e,
|
2516 |
-
ev : ev,
|
2517 |
-
cb : cb
|
2518 |
-
};
|
2519 |
-
});
|
2520 |
-
|
2521 |
-
t.onKeyDown.add(function(ed, e) {
|
2522 |
-
switch (e.keyCode) {
|
2523 |
-
case 8:
|
2524 |
-
// Fix IE control + backspace browser bug
|
2525 |
-
if (t.selection.getRng().item) {
|
2526 |
-
ed.dom.remove(t.selection.getRng().item(0));
|
2527 |
-
return Event.cancel(e);
|
2528 |
-
}
|
2529 |
-
}
|
2530 |
-
});
|
2531 |
-
|
2532 |
-
/*if (t.dom.boxModel) {
|
2533 |
-
t.getBody().style.height = '100%';
|
2534 |
-
|
2535 |
-
Event.add(t.getWin(), 'resize', function(e) {
|
2536 |
-
var docElm = t.getDoc().documentElement;
|
2537 |
-
|
2538 |
-
docElm.style.height = (docElm.offsetHeight - 10) + 'px';
|
2539 |
-
});
|
2540 |
-
}*/
|
2541 |
-
}
|
2542 |
-
|
2543 |
-
if (tinymce.isOpera) {
|
2544 |
-
t.onClick.add(function(ed, e) {
|
2545 |
-
Event.prevent(e);
|
2546 |
-
});
|
2547 |
-
}
|
2548 |
-
|
2549 |
-
// Add custom undo/redo handlers
|
2550 |
-
if (s.custom_undo_redo) {
|
2551 |
-
function addUndo() {
|
2552 |
-
t.undoManager.typing = 0;
|
2553 |
-
t.undoManager.add();
|
2554 |
-
};
|
2555 |
-
|
2556 |
-
t.dom.bind(t.getDoc(), 'focusout', function(e) {
|
2557 |
-
if (!t.removed && t.undoManager.typing)
|
2558 |
-
addUndo();
|
2559 |
-
});
|
2560 |
-
|
2561 |
-
t.onKeyUp.add(function(ed, e) {
|
2562 |
-
if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey)
|
2563 |
-
addUndo();
|
2564 |
-
});
|
2565 |
-
|
2566 |
-
t.onKeyDown.add(function(ed, e) {
|
2567 |
-
var rng, tmpRng, parent, offset;
|
2568 |
-
|
2569 |
-
// IE has a really odd bug where the DOM might include an node that doesn't have
|
2570 |
-
// a proper structure. If you try to access nodeValue it would throw an illegal value exception.
|
2571 |
-
// This seems to only happen when you delete contents and it seems to be avoidable if you refresh the element
|
2572 |
-
// after you delete contents from it. See: #3008923
|
2573 |
-
if (isIE && e.keyCode == 46) {
|
2574 |
-
rng = t.selection.getRng();
|
2575 |
-
|
2576 |
-
if (rng.parentElement) {
|
2577 |
-
parent = rng.parentElement();
|
2578 |
-
|
2579 |
-
// Get the current caret position within the element
|
2580 |
-
tmpRng = rng.duplicate();
|
2581 |
-
tmpRng.moveToElementText(parent);
|
2582 |
-
tmpRng.setEndPoint('EndToEnd', rng);
|
2583 |
-
offset = tmpRng.text.length;
|
2584 |
-
|
2585 |
-
// Select next word when ctrl key is used in combo with delete
|
2586 |
-
if (e.ctrlKey) {
|
2587 |
-
rng.moveEnd('word', 1);
|
2588 |
-
rng.select();
|
2589 |
-
}
|
2590 |
-
|
2591 |
-
// Delete contents
|
2592 |
-
t.selection.getSel().clear();
|
2593 |
-
|
2594 |
-
// Check if we are within the same parent
|
2595 |
-
if (rng.parentElement() == parent) {
|
2596 |
-
try {
|
2597 |
-
// Update the HTML and hopefully it will remove the artifacts
|
2598 |
-
parent.innerHTML = parent.innerHTML;
|
2599 |
-
} catch (ex) {
|
2600 |
-
// And since it's IE it can sometimes produce an unknown runtime error
|
2601 |
-
}
|
2602 |
-
|
2603 |
-
// Restore the caret position
|
2604 |
-
tmpRng.moveToElementText(parent);
|
2605 |
-
tmpRng.collapse();
|
2606 |
-
tmpRng.move('character', offset);
|
2607 |
-
tmpRng.select();
|
2608 |
-
}
|
2609 |
-
|
2610 |
-
// Block the default delete behavior since it might be broken
|
2611 |
-
e.preventDefault();
|
2612 |
-
return;
|
2613 |
-
}
|
2614 |
-
}
|
2615 |
-
|
2616 |
-
// Is caracter positon keys
|
2617 |
-
if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) {
|
2618 |
-
if (t.undoManager.typing)
|
2619 |
-
addUndo();
|
2620 |
-
|
2621 |
-
return;
|
2622 |
-
}
|
2623 |
-
|
2624 |
-
if (!t.undoManager.typing) {
|
2625 |
-
t.undoManager.add();
|
2626 |
-
t.undoManager.typing = 1;
|
2627 |
-
}
|
2628 |
-
});
|
2629 |
-
|
2630 |
-
t.onMouseDown.add(function() {
|
2631 |
-
if (t.undoManager.typing)
|
2632 |
-
addUndo();
|
2633 |
-
});
|
2634 |
-
}
|
2635 |
-
},
|
2636 |
-
|
2637 |
-
_isHidden : function() {
|
2638 |
-
var s;
|
2639 |
-
|
2640 |
-
if (!isGecko)
|
2641 |
-
return 0;
|
2642 |
-
|
2643 |
-
// Weird, wheres that cursor selection?
|
2644 |
-
s = this.selection.getSel();
|
2645 |
-
return (!s || !s.rangeCount || s.rangeCount == 0);
|
2646 |
-
},
|
2647 |
-
|
2648 |
-
// Fix for bug #1867292
|
2649 |
-
_fixNesting : function(s) {
|
2650 |
-
var d = [], i;
|
2651 |
-
|
2652 |
-
s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) {
|
2653 |
-
var e;
|
2654 |
-
|
2655 |
-
// Handle end element
|
2656 |
-
if (b === '/') {
|
2657 |
-
if (!d.length)
|
2658 |
-
return '';
|
2659 |
-
|
2660 |
-
if (c !== d[d.length - 1].tag) {
|
2661 |
-
for (i=d.length - 1; i>=0; i--) {
|
2662 |
-
if (d[i].tag === c) {
|
2663 |
-
d[i].close = 1;
|
2664 |
-
break;
|
2665 |
-
}
|
2666 |
-
}
|
2667 |
-
|
2668 |
-
return '';
|
2669 |
-
} else {
|
2670 |
-
d.pop();
|
2671 |
-
|
2672 |
-
if (d.length && d[d.length - 1].close) {
|
2673 |
-
a = a + '</' + d[d.length - 1].tag + '>';
|
2674 |
-
d.pop();
|
2675 |
-
}
|
2676 |
-
}
|
2677 |
-
} else {
|
2678 |
-
// Ignore these
|
2679 |
-
if (/^(br|hr|input|meta|img|link|param)$/i.test(c))
|
2680 |
-
return a;
|
2681 |
-
|
2682 |
-
// Ignore closed ones
|
2683 |
-
if (/\/>$/.test(a))
|
2684 |
-
return a;
|
2685 |
-
|
2686 |
-
d.push({tag : c}); // Push start element
|
2687 |
-
}
|
2688 |
-
|
2689 |
-
return a;
|
2690 |
-
});
|
2691 |
-
|
2692 |
-
// End all open tags
|
2693 |
-
for (i=d.length - 1; i>=0; i--)
|
2694 |
-
s += '</' + d[i].tag + '>';
|
2695 |
-
|
2696 |
-
return s;
|
2697 |
-
}
|
2698 |
-
});
|
2699 |
-
})(tinymce);
|
1 |
+
/**
|
2 |
+
* Editor.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
// Shorten these names
|
13 |
+
var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,
|
14 |
+
Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko,
|
15 |
+
isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,
|
16 |
+
ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
|
17 |
+
inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* This class contains the core logic for a TinyMCE editor.
|
21 |
+
*
|
22 |
+
* @class tinymce.Editor
|
23 |
+
* @author Moxiecode
|
24 |
+
* @example
|
25 |
+
* // Add a class to all paragraphs in the editor.
|
26 |
+
* tinyMCE.activeEditor.dom.addClass(tinyMCE.activeEditor.dom.select('p'), 'someclass');
|
27 |
+
*
|
28 |
+
* // Gets the current editors selection as text
|
29 |
+
* tinyMCE.activeEditor.selection.getContent({format : 'text'});
|
30 |
+
*
|
31 |
+
* // Creates a new editor instance
|
32 |
+
* var ed = new tinymce.Editor('textareaid', {
|
33 |
+
* some_setting : 1
|
34 |
+
* });
|
35 |
+
*
|
36 |
+
* // Select each item the user clicks on
|
37 |
+
* ed.onClick.add(function(ed, e) {
|
38 |
+
* ed.selection.select(e.target);
|
39 |
+
* });
|
40 |
+
*
|
41 |
+
* ed.render();
|
42 |
+
*/
|
43 |
+
tinymce.create('tinymce.Editor', {
|
44 |
+
/**
|
45 |
+
* Constructs a editor instance by id.
|
46 |
+
*
|
47 |
+
* @constructor
|
48 |
+
* @method Editor
|
49 |
+
* @param {String} id Unique id for the editor.
|
50 |
+
* @param {Object} s Optional settings string for the editor.
|
51 |
+
* @author Moxiecode
|
52 |
+
*/
|
53 |
+
Editor : function(id, s) {
|
54 |
+
var t = this;
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Editor instance id, normally the same as the div/textarea that was replaced.
|
58 |
+
*
|
59 |
+
* @property id
|
60 |
+
* @type String
|
61 |
+
*/
|
62 |
+
t.id = t.editorId = id;
|
63 |
+
|
64 |
+
t.execCommands = {};
|
65 |
+
t.queryStateCommands = {};
|
66 |
+
t.queryValueCommands = {};
|
67 |
+
|
68 |
+
/**
|
69 |
+
* State to force the editor to return false on a isDirty call.
|
70 |
+
*
|
71 |
+
* @property isNotDirty
|
72 |
+
* @type Boolean
|
73 |
+
*/
|
74 |
+
t.isNotDirty = false;
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Name/Value object containting plugin instances.
|
78 |
+
*
|
79 |
+
* @property plugins
|
80 |
+
* @type Object
|
81 |
+
*/
|
82 |
+
t.plugins = {};
|
83 |
+
|
84 |
+
// Add events to the editor
|
85 |
+
each([
|
86 |
+
/**
|
87 |
+
* Fires before the initialization of the editor.
|
88 |
+
*
|
89 |
+
* @event onPreInit
|
90 |
+
* @param {tinymce.Editor} sender Editor instance.
|
91 |
+
* @see #onInit
|
92 |
+
*/
|
93 |
+
'onPreInit',
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Fires before the initialization of the editor.
|
97 |
+
*
|
98 |
+
* @event onBeforeRenderUI
|
99 |
+
* @param {tinymce.Editor} sender Editor instance.
|
100 |
+
*/
|
101 |
+
'onBeforeRenderUI',
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Fires after the rendering has completed.
|
105 |
+
*
|
106 |
+
* @event onPostRender
|
107 |
+
* @param {tinymce.Editor} sender Editor instance.
|
108 |
+
*/
|
109 |
+
'onPostRender',
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Fires after the initialization of the editor is done.
|
113 |
+
*
|
114 |
+
* @event onInit
|
115 |
+
* @param {tinymce.Editor} sender Editor instance.
|
116 |
+
* @see #onPreInit
|
117 |
+
*/
|
118 |
+
'onInit',
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Fires when the editor instance is removed from page.
|
122 |
+
*
|
123 |
+
* @event onRemove
|
124 |
+
* @param {tinymce.Editor} sender Editor instance.
|
125 |
+
*/
|
126 |
+
'onRemove',
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Fires when the editor is activated.
|
130 |
+
*
|
131 |
+
* @event onActivate
|
132 |
+
* @param {tinymce.Editor} sender Editor instance.
|
133 |
+
*/
|
134 |
+
'onActivate',
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Fires when the editor is deactivated.
|
138 |
+
*
|
139 |
+
* @event onDeactivate
|
140 |
+
* @param {tinymce.Editor} sender Editor instance.
|
141 |
+
*/
|
142 |
+
'onDeactivate',
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Fires when something in the body of the editor is clicked.
|
146 |
+
*
|
147 |
+
* @event onClick
|
148 |
+
* @param {tinymce.Editor} sender Editor instance.
|
149 |
+
* @param {Event} evt W3C DOM Event instance.
|
150 |
+
*/
|
151 |
+
'onClick',
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Fires when a registered event is intercepted.
|
155 |
+
*
|
156 |
+
* @event onEvent
|
157 |
+
* @param {tinymce.Editor} sender Editor instance.
|
158 |
+
* @param {Event} evt W3C DOM Event instance.
|
159 |
+
*/
|
160 |
+
'onEvent',
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Fires when a mouseup event is intercepted inside the editor.
|
164 |
+
*
|
165 |
+
* @event onMouseUp
|
166 |
+
* @param {tinymce.Editor} sender Editor instance.
|
167 |
+
* @param {Event} evt W3C DOM Event instance.
|
168 |
+
*/
|
169 |
+
'onMouseUp',
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Fires when a mousedown event is intercepted inside the editor.
|
173 |
+
*
|
174 |
+
* @event onMouseDown
|
175 |
+
* @param {tinymce.Editor} sender Editor instance.
|
176 |
+
* @param {Event} evt W3C DOM Event instance.
|
177 |
+
*/
|
178 |
+
'onMouseDown',
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Fires when a dblclick event is intercepted inside the editor.
|
182 |
+
*
|
183 |
+
* @event onDblClick
|
184 |
+
* @param {tinymce.Editor} sender Editor instance.
|
185 |
+
* @param {Event} evt W3C DOM Event instance.
|
186 |
+
*/
|
187 |
+
'onDblClick',
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Fires when a keydown event is intercepted inside the editor.
|
191 |
+
*
|
192 |
+
* @event onKeyDown
|
193 |
+
* @param {tinymce.Editor} sender Editor instance.
|
194 |
+
* @param {Event} evt W3C DOM Event instance.
|
195 |
+
*/
|
196 |
+
'onKeyDown',
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Fires when a keydown event is intercepted inside the editor.
|
200 |
+
*
|
201 |
+
* @event onKeyUp
|
202 |
+
* @param {tinymce.Editor} sender Editor instance.
|
203 |
+
* @param {Event} evt W3C DOM Event instance.
|
204 |
+
*/
|
205 |
+
'onKeyUp',
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Fires when a keypress event is intercepted inside the editor.
|
209 |
+
*
|
210 |
+
* @event onKeyPress
|
211 |
+
* @param {tinymce.Editor} sender Editor instance.
|
212 |
+
* @param {Event} evt W3C DOM Event instance.
|
213 |
+
*/
|
214 |
+
'onKeyPress',
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Fires when a contextmenu event is intercepted inside the editor.
|
218 |
+
*
|
219 |
+
* @event onContextMenu
|
220 |
+
* @param {tinymce.Editor} sender Editor instance.
|
221 |
+
* @param {Event} evt W3C DOM Event instance.
|
222 |
+
*/
|
223 |
+
'onContextMenu',
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Fires when a form submit event is intercepted.
|
227 |
+
*
|
228 |
+
* @event onSubmit
|
229 |
+
* @param {tinymce.Editor} sender Editor instance.
|
230 |
+
* @param {Event} evt W3C DOM Event instance.
|
231 |
+
*/
|
232 |
+
'onSubmit',
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Fires when a form reset event is intercepted.
|
236 |
+
*
|
237 |
+
* @event onReset
|
238 |
+
* @param {tinymce.Editor} sender Editor instance.
|
239 |
+
* @param {Event} evt W3C DOM Event instance.
|
240 |
+
*/
|
241 |
+
'onReset',
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Fires when a paste event is intercepted inside the editor.
|
245 |
+
*
|
246 |
+
* @event onPaste
|
247 |
+
* @param {tinymce.Editor} sender Editor instance.
|
248 |
+
* @param {Event} evt W3C DOM Event instance.
|
249 |
+
*/
|
250 |
+
'onPaste',
|
251 |
+
|
252 |
+
/**
|
253 |
+
* Fires when the Serializer does a preProcess on the contents.
|
254 |
+
*
|
255 |
+
* @event onPreProcess
|
256 |
+
* @param {tinymce.Editor} sender Editor instance.
|
257 |
+
* @param {Object} obj PreProcess object.
|
258 |
+
*/
|
259 |
+
'onPreProcess',
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Fires when the Serializer does a postProcess on the contents.
|
263 |
+
*
|
264 |
+
* @event onPostProcess
|
265 |
+
* @param {tinymce.Editor} sender Editor instance.
|
266 |
+
* @param {Object} obj PreProcess object.
|
267 |
+
*/
|
268 |
+
'onPostProcess',
|
269 |
+
|
270 |
+
/**
|
271 |
+
* Fires before new contents is added to the editor. Using for example setContent.
|
272 |
+
*
|
273 |
+
* @event onBeforeSetContent
|
274 |
+
* @param {tinymce.Editor} sender Editor instance.
|
275 |
+
*/
|
276 |
+
'onBeforeSetContent',
|
277 |
+
|
278 |
+
/**
|
279 |
+
* Fires before contents is extracted from the editor using for example getContent.
|
280 |
+
*
|
281 |
+
* @event onBeforeGetContent
|
282 |
+
* @param {tinymce.Editor} sender Editor instance.
|
283 |
+
* @param {Event} evt W3C DOM Event instance.
|
284 |
+
*/
|
285 |
+
'onBeforeGetContent',
|
286 |
+
|
287 |
+
/**
|
288 |
+
* Fires after the contents has been added to the editor using for example onSetContent.
|
289 |
+
*
|
290 |
+
* @event onSetContent
|
291 |
+
* @param {tinymce.Editor} sender Editor instance.
|
292 |
+
*/
|
293 |
+
'onSetContent',
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Fires after the contents has been extracted from the editor using for example getContent.
|
297 |
+
*
|
298 |
+
* @event onGetContent
|
299 |
+
* @param {tinymce.Editor} sender Editor instance.
|
300 |
+
*/
|
301 |
+
'onGetContent',
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Fires when the editor gets loaded with contents for example when the load method is executed.
|
305 |
+
*
|
306 |
+
* @event onLoadContent
|
307 |
+
* @param {tinymce.Editor} sender Editor instance.
|
308 |
+
*/
|
309 |
+
'onLoadContent',
|
310 |
+
|
311 |
+
/**
|
312 |
+
* Fires when the editor contents gets saved for example when the save method is executed.
|
313 |
+
*
|
314 |
+
* @event onSaveContent
|
315 |
+
* @param {tinymce.Editor} sender Editor instance.
|
316 |
+
*/
|
317 |
+
'onSaveContent',
|
318 |
+
|
319 |
+
/**
|
320 |
+
* Fires when the user changes node location using the mouse or keyboard.
|
321 |
+
*
|
322 |
+
* @event onNodeChange
|
323 |
+
* @param {tinymce.Editor} sender Editor instance.
|
324 |
+
*/
|
325 |
+
'onNodeChange',
|
326 |
+
|
327 |
+
/**
|
328 |
+
* Fires when a new undo level is added to the editor.
|
329 |
+
*
|
330 |
+
* @event onChange
|
331 |
+
* @param {tinymce.Editor} sender Editor instance.
|
332 |
+
*/
|
333 |
+
'onChange',
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Fires before a command gets executed for example "Bold".
|
337 |
+
*
|
338 |
+
* @event onBeforeExecCommand
|
339 |
+
* @param {tinymce.Editor} sender Editor instance.
|
340 |
+
*/
|
341 |
+
'onBeforeExecCommand',
|
342 |
+
|
343 |
+
/**
|
344 |
+
* Fires after a command is executed for example "Bold".
|
345 |
+
*
|
346 |
+
* @event onExecCommand
|
347 |
+
* @param {tinymce.Editor} sender Editor instance.
|
348 |
+
*/
|
349 |
+
'onExecCommand',
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Fires when the contents is undo:ed.
|
353 |
+
*
|
354 |
+
* @event onUndo
|
355 |
+
* @param {tinymce.Editor} sender Editor instance.
|
356 |
+
* @param {Event} evt W3C DOM Event instance.
|
357 |
+
*/
|
358 |
+
'onUndo',
|
359 |
+
|
360 |
+
/**
|
361 |
+
* Fires when the contents is redo:ed.
|
362 |
+
*
|
363 |
+
* @event onRedo
|
364 |
+
* @param {tinymce.Editor} sender Editor instance.
|
365 |
+
* @param {Event} evt W3C DOM Event instance.
|
366 |
+
*/
|
367 |
+
'onRedo',
|
368 |
+
|
369 |
+
/**
|
370 |
+
* Fires when visual aids is enabled/disabled.
|
371 |
+
*
|
372 |
+
* @event onVisualAid
|
373 |
+
* @param {tinymce.Editor} sender Editor instance.
|
374 |
+
*/
|
375 |
+
'onVisualAid',
|
376 |
+
|
377 |
+
/**
|
378 |
+
* Fires when the progress throbber is shown above the editor.
|
379 |
+
*
|
380 |
+
* @event onSetProgressState
|
381 |
+
* @param {tinymce.Editor} sender Editor instance.
|
382 |
+
*/
|
383 |
+
'onSetProgressState'
|
384 |
+
], function(e) {
|
385 |
+
t[e] = new Dispatcher(t);
|
386 |
+
});
|
387 |
+
|
388 |
+
/**
|
389 |
+
* Name/value collection with editor settings.
|
390 |
+
*
|
391 |
+
* @property settings
|
392 |
+
* @type Object
|
393 |
+
*/
|
394 |
+
t.settings = s = extend({
|
395 |
+
id : id,
|
396 |
+
language : 'en',
|
397 |
+
docs_language : 'en',
|
398 |
+
theme : 'simple',
|
399 |
+
skin : 'default',
|
400 |
+
delta_width : 0,
|
401 |
+
delta_height : 0,
|
402 |
+
popup_css : '',
|
403 |
+
plugins : '',
|
404 |
+
document_base_url : tinymce.documentBaseURL,
|
405 |
+
add_form_submit_trigger : 1,
|
406 |
+
submit_patch : 1,
|
407 |
+
add_unload_trigger : 1,
|
408 |
+
convert_urls : 1,
|
409 |
+
relative_urls : 1,
|
410 |
+
remove_script_host : 1,
|
411 |
+
table_inline_editing : 0,
|
412 |
+
object_resizing : 1,
|
413 |
+
cleanup : 1,
|
414 |
+
accessibility_focus : 1,
|
415 |
+
custom_shortcuts : 1,
|
416 |
+
custom_undo_redo_keyboard_shortcuts : 1,
|
417 |
+
custom_undo_redo_restore_selection : 1,
|
418 |
+
custom_undo_redo : 1,
|
419 |
+
doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll
|
420 |
+
visual_table_class : 'mceItemTable',
|
421 |
+
visual : 1,
|
422 |
+
font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
|
423 |
+
apply_source_formatting : 1,
|
424 |
+
directionality : 'ltr',
|
425 |
+
forced_root_block : 'p',
|
426 |
+
valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p,-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',
|
427 |
+
hidden_input : 1,
|
428 |
+
padd_empty_editor : 1,
|
429 |
+
render_ui : 1,
|
430 |
+
init_theme : 1,
|
431 |
+
force_p_newlines : 1,
|
432 |
+
indentation : '30px',
|
433 |
+
keep_styles : 1,
|
434 |
+
fix_table_elements : 1,
|
435 |
+
inline_styles : 1,
|
436 |
+
convert_fonts_to_spans : true
|
437 |
+
}, s);
|
438 |
+
|
439 |
+
/**
|
440 |
+
* URI object to document configured for the TinyMCE instance.
|
441 |
+
*
|
442 |
+
* @property documentBaseURI
|
443 |
+
* @type tinymce.util.URI
|
444 |
+
*/
|
445 |
+
t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {
|
446 |
+
base_uri : tinyMCE.baseURI
|
447 |
+
});
|
448 |
+
|
449 |
+
/**
|
450 |
+
* URI object to current document that holds the TinyMCE editor instance.
|
451 |
+
*
|
452 |
+
* @property baseURI
|
453 |
+
* @type tinymce.util.URI
|
454 |
+
*/
|
455 |
+
t.baseURI = tinymce.baseURI;
|
456 |
+
|
457 |
+
// Call setup
|
458 |
+
t.execCallback('setup', t);
|
459 |
+
},
|
460 |
+
|
461 |
+
/**
|
462 |
+
* Renderes the editor/adds it to the page.
|
463 |
+
*
|
464 |
+
* @method render
|
465 |
+
*/
|
466 |
+
render : function(nst) {
|
467 |
+
var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
|
468 |
+
|
469 |
+
// Page is not loaded yet, wait for it
|
470 |
+
if (!Event.domLoaded) {
|
471 |
+
Event.add(document, 'init', function() {
|
472 |
+
t.render();
|
473 |
+
});
|
474 |
+
return;
|
475 |
+
}
|
476 |
+
|
477 |
+
tinyMCE.settings = s;
|
478 |
+
|
479 |
+
// Element not found, then skip initialization
|
480 |
+
if (!t.getElement())
|
481 |
+
return;
|
482 |
+
|
483 |
+
// Is a iPad/iPhone, then skip initialization. We need to sniff here since the
|
484 |
+
// browser says it has contentEditable support but there is no visible caret
|
485 |
+
// We will remove this check ones Apple implements full contentEditable support
|
486 |
+
if (tinymce.isIDevice)
|
487 |
+
return;
|
488 |
+
|
489 |
+
// Add hidden input for non input elements inside form elements
|
490 |
+
if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
|
491 |
+
DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
|
492 |
+
|
493 |
+
/**
|
494 |
+
* Window manager reference, use this to open new windows and dialogs.
|
495 |
+
*
|
496 |
+
* @property windowManager
|
497 |
+
* @type tinymce.WindowManager
|
498 |
+
*/
|
499 |
+
if (tinymce.WindowManager)
|
500 |
+
t.windowManager = new tinymce.WindowManager(t);
|
501 |
+
|
502 |
+
if (s.encoding == 'xml') {
|
503 |
+
t.onGetContent.add(function(ed, o) {
|
504 |
+
if (o.save)
|
505 |
+
o.content = DOM.encode(o.content);
|
506 |
+
});
|
507 |
+
}
|
508 |
+
|
509 |
+
if (s.add_form_submit_trigger) {
|
510 |
+
t.onSubmit.addToTop(function() {
|
511 |
+
if (t.initialized) {
|
512 |
+
t.save();
|
513 |
+
t.isNotDirty = 1;
|
514 |
+
}
|
515 |
+
});
|
516 |
+
}
|
517 |
+
|
518 |
+
if (s.add_unload_trigger) {
|
519 |
+
t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
|
520 |
+
if (t.initialized && !t.destroyed && !t.isHidden())
|
521 |
+
t.save({format : 'raw', no_events : true});
|
522 |
+
});
|
523 |
+
}
|
524 |
+
|
525 |
+
tinymce.addUnload(t.destroy, t);
|
526 |
+
|
527 |
+
if (s.submit_patch) {
|
528 |
+
t.onBeforeRenderUI.add(function() {
|
529 |
+
var n = t.getElement().form;
|
530 |
+
|
531 |
+
if (!n)
|
532 |
+
return;
|
533 |
+
|
534 |
+
// Already patched
|
535 |
+
if (n._mceOldSubmit)
|
536 |
+
return;
|
537 |
+
|
538 |
+
// Check page uses id="submit" or name="submit" for it's submit button
|
539 |
+
if (!n.submit.nodeType && !n.submit.length) {
|
540 |
+
t.formElement = n;
|
541 |
+
n._mceOldSubmit = n.submit;
|
542 |
+
n.submit = function() {
|
543 |
+
// Save all instances
|
544 |
+
tinymce.triggerSave();
|
545 |
+
t.isNotDirty = 1;
|
546 |
+
|
547 |
+
return t.formElement._mceOldSubmit(t.formElement);
|
548 |
+
};
|
549 |
+
}
|
550 |
+
|
551 |
+
n = null;
|
552 |
+
});
|
553 |
+
}
|
554 |
+
|
555 |
+
// Load scripts
|
556 |
+
function loadScripts() {
|
557 |
+
if (s.language)
|
558 |
+
sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
|
559 |
+
|
560 |
+
if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
|
561 |
+
ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
|
562 |
+
|
563 |
+
each(explode(s.plugins), function(p) {
|
564 |
+
if (p && p.charAt(0) != '-' && !PluginManager.urls[p]) {
|
565 |
+
// Skip safari plugin, since it is removed as of 3.3b1
|
566 |
+
if (p == 'safari')
|
567 |
+
return;
|
568 |
+
|
569 |
+
PluginManager.load(p, 'plugins/' + p + '/editor_plugin' + tinymce.suffix + '.js');
|
570 |
+
}
|
571 |
+
});
|
572 |
+
|
573 |
+
// Init when que is loaded
|
574 |
+
sl.loadQueue(function() {
|
575 |
+
if (!t.removed)
|
576 |
+
t.init();
|
577 |
+
});
|
578 |
+
};
|
579 |
+
|
580 |
+
loadScripts();
|
581 |
+
},
|
582 |
+
|
583 |
+
/**
|
584 |
+
* Initializes the editor this will be called automatically when
|
585 |
+
* all plugins/themes and language packs are loaded by the rendered method.
|
586 |
+
* This method will setup the iframe and create the theme and plugin instances.
|
587 |
+
*
|
588 |
+
* @method init
|
589 |
+
*/
|
590 |
+
init : function() {
|
591 |
+
var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re;
|
592 |
+
|
593 |
+
tinymce.add(t);
|
594 |
+
|
595 |
+
/**
|
596 |
+
* Reference to the theme instance that was used to generate the UI.
|
597 |
+
*
|
598 |
+
* @property theme
|
599 |
+
* @type tinymce.Theme
|
600 |
+
*/
|
601 |
+
if (s.theme) {
|
602 |
+
s.theme = s.theme.replace(/-/, '');
|
603 |
+
o = ThemeManager.get(s.theme);
|
604 |
+
t.theme = new o();
|
605 |
+
|
606 |
+
if (t.theme.init && s.init_theme)
|
607 |
+
t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
|
608 |
+
}
|
609 |
+
|
610 |
+
// Create all plugins
|
611 |
+
each(explode(s.plugins.replace(/\-/g, '')), function(p) {
|
612 |
+
var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
|
613 |
+
|
614 |
+
if (c) {
|
615 |
+
po = new c(t, u);
|
616 |
+
|
617 |
+
t.plugins[p] = po;
|
618 |
+
|
619 |
+
if (po.init)
|
620 |
+
po.init(t, u);
|
621 |
+
}
|
622 |
+
});
|
623 |
+
|
624 |
+
// Setup popup CSS path(s)
|
625 |
+
if (s.popup_css !== false) {
|
626 |
+
if (s.popup_css)
|
627 |
+
s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
|
628 |
+
else
|
629 |
+
s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
|
630 |
+
}
|
631 |
+
|
632 |
+
if (s.popup_css_add)
|
633 |
+
s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
|
634 |
+
|
635 |
+
/**
|
636 |
+
* Control manager instance for the editor. Will enables you to create new UI elements and change their states etc.
|
637 |
+
*
|
638 |
+
* @property controlManager
|
639 |
+
* @type tinymce.ControlManager
|
640 |
+
*/
|
641 |
+
t.controlManager = new tinymce.ControlManager(t);
|
642 |
+
|
643 |
+
if (s.custom_undo_redo) {
|
644 |
+
// Add initial undo level
|
645 |
+
t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) {
|
646 |
+
if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) {
|
647 |
+
if (!t.undoManager.hasUndo())
|
648 |
+
t.undoManager.add();
|
649 |
+
}
|
650 |
+
});
|
651 |
+
|
652 |
+
t.onExecCommand.add(function(ed, cmd, ui, val, a) {
|
653 |
+
if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
|
654 |
+
t.undoManager.add();
|
655 |
+
});
|
656 |
+
}
|
657 |
+
|
658 |
+
t.onExecCommand.add(function(ed, c) {
|
659 |
+
// Don't refresh the select lists until caret move
|
660 |
+
if (!/^(FontName|FontSize)$/.test(c))
|
661 |
+
t.nodeChanged();
|
662 |
+
});
|
663 |
+
|
664 |
+
// Remove ghost selections on images and tables in Gecko
|
665 |
+
if (isGecko) {
|
666 |
+
function repaint(a, o) {
|
667 |
+
if (!o || !o.initial)
|
668 |
+
t.execCommand('mceRepaint');
|
669 |
+
};
|
670 |
+
|
671 |
+
t.onUndo.add(repaint);
|
672 |
+
t.onRedo.add(repaint);
|
673 |
+
t.onSetContent.add(repaint);
|
674 |
+
}
|
675 |
+
|
676 |
+
// Enables users to override the control factory
|
677 |
+
t.onBeforeRenderUI.dispatch(t, t.controlManager);
|
678 |
+
|
679 |
+
// Measure box
|
680 |
+
if (s.render_ui) {
|
681 |
+
w = s.width || e.style.width || e.offsetWidth;
|
682 |
+
h = s.height || e.style.height || e.offsetHeight;
|
683 |
+
t.orgDisplay = e.style.display;
|
684 |
+
re = /^[0-9\.]+(|px)$/i;
|
685 |
+
|
686 |
+
if (re.test('' + w))
|
687 |
+
w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);
|
688 |
+
|
689 |
+
if (re.test('' + h))
|
690 |
+
h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);
|
691 |
+
|
692 |
+
// Render UI
|
693 |
+
o = t.theme.renderUI({
|
694 |
+
targetNode : e,
|
695 |
+
width : w,
|
696 |
+
height : h,
|
697 |
+
deltaWidth : s.delta_width,
|
698 |
+
deltaHeight : s.delta_height
|
699 |
+
});
|
700 |
+
|
701 |
+
t.editorContainer = o.editorContainer;
|
702 |
+
}
|
703 |
+
|
704 |
+
// #ifdef contentEditable
|
705 |
+
|
706 |
+
// Content editable mode ends here
|
707 |
+
if (s.content_editable) {
|
708 |
+
e = n = o = null; // Fix IE leak
|
709 |
+
return t.setupContentEditable();
|
710 |
+
}
|
711 |
+
|
712 |
+
// #endif
|
713 |
+
|
714 |
+
// User specified a document.domain value
|
715 |
+
if (document.domain && location.hostname != document.domain)
|
716 |
+
tinymce.relaxedDomain = document.domain;
|
717 |
+
|
718 |
+
// Resize editor
|
719 |
+
DOM.setStyles(o.sizeContainer || o.editorContainer, {
|
720 |
+
width : w,
|
721 |
+
height : h
|
722 |
+
});
|
723 |
+
|
724 |
+
h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
|
725 |
+
if (h < 100)
|
726 |
+
h = 100;
|
727 |
+
|
728 |
+
t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">';
|
729 |
+
|
730 |
+
// We only need to override paths if we have to
|
731 |
+
// IE has a bug where it remove site absolute urls to relative ones if this is specified
|
732 |
+
if (s.document_base_url != tinymce.documentBaseURL)
|
733 |
+
t.iframeHTML += '<base href="' + t.documentBaseURI.getURI() + '" />';
|
734 |
+
|
735 |
+
t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
|
736 |
+
|
737 |
+
if (tinymce.relaxedDomain)
|
738 |
+
t.iframeHTML += '<script type="text/javascript">document.domain = "' + tinymce.relaxedDomain + '";</script>';
|
739 |
+
|
740 |
+
bi = s.body_id || 'tinymce';
|
741 |
+
if (bi.indexOf('=') != -1) {
|
742 |
+
bi = t.getParam('body_id', '', 'hash');
|
743 |
+
bi = bi[t.id] || bi;
|
744 |
+
}
|
745 |
+
|
746 |
+
bc = s.body_class || '';
|
747 |
+
if (bc.indexOf('=') != -1) {
|
748 |
+
bc = t.getParam('body_class', '', 'hash');
|
749 |
+
bc = bc[t.id] || '';
|
750 |
+
}
|
751 |
+
|
752 |
+
t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '"></body></html>';
|
753 |
+
|
754 |
+
// Domain relaxing enabled, then set document domain
|
755 |
+
if (tinymce.relaxedDomain) {
|
756 |
+
// We need to write the contents here in IE since multiple writes messes up refresh button and back button
|
757 |
+
if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5))
|
758 |
+
u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';
|
759 |
+
else if (tinymce.isOpera)
|
760 |
+
u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()';
|
761 |
+
}
|
762 |
+
|
763 |
+
// Create iframe
|
764 |
+
n = DOM.add(o.iframeContainer, 'iframe', {
|
765 |
+
id : t.id + "_ifr",
|
766 |
+
src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
|
767 |
+
frameBorder : '0',
|
768 |
+
style : {
|
769 |
+
width : '100%',
|
770 |
+
height : h
|
771 |
+
}
|
772 |
+
});
|
773 |
+
|
774 |
+
t.contentAreaContainer = o.iframeContainer;
|
775 |
+
DOM.get(o.editorContainer).style.display = t.orgDisplay;
|
776 |
+
DOM.get(t.id).style.display = 'none';
|
777 |
+
|
778 |
+
if (!isIE || !tinymce.relaxedDomain)
|
779 |
+
t.setupIframe();
|
780 |
+
|
781 |
+
e = n = o = null; // Cleanup
|
782 |
+
},
|
783 |
+
|
784 |
+
/**
|
785 |
+
* This method get called by the init method ones the iframe is loaded.
|
786 |
+
* It will fill the iframe with contents, setups DOM and selection objects for the iframe.
|
787 |
+
* This method should not be called directly.
|
788 |
+
*
|
789 |
+
* @method setupIframe
|
790 |
+
*/
|
791 |
+
setupIframe : function() {
|
792 |
+
var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
|
793 |
+
|
794 |
+
// Setup iframe body
|
795 |
+
if (!isIE || !tinymce.relaxedDomain) {
|
796 |
+
d.open();
|
797 |
+
d.write(t.iframeHTML);
|
798 |
+
d.close();
|
799 |
+
}
|
800 |
+
|
801 |
+
// Design mode needs to be added here Ctrl+A will fail otherwise
|
802 |
+
if (!isIE) {
|
803 |
+
try {
|
804 |
+
if (!s.readonly)
|
805 |
+
d.designMode = 'On';
|
806 |
+
} catch (ex) {
|
807 |
+
// Will fail on Gecko if the editor is placed in an hidden container element
|
808 |
+
// The design mode will be set ones the editor is focused
|
809 |
+
}
|
810 |
+
}
|
811 |
+
|
812 |
+
// IE needs to use contentEditable or it will display non secure items for HTTPS
|
813 |
+
if (isIE) {
|
814 |
+
// It will not steal focus if we hide it while setting contentEditable
|
815 |
+
b = t.getBody();
|
816 |
+
DOM.hide(b);
|
817 |
+
|
818 |
+
if (!s.readonly)
|
819 |
+
b.contentEditable = true;
|
820 |
+
|
821 |
+
DOM.show(b);
|
822 |
+
}
|
823 |
+
|
824 |
+
/**
|
825 |
+
* DOM instance for the editor.
|
826 |
+
*
|
827 |
+
* @property dom
|
828 |
+
* @type tinymce.dom.DOMUtils
|
829 |
+
*/
|
830 |
+
t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {
|
831 |
+
keep_values : true,
|
832 |
+
url_converter : t.convertURL,
|
833 |
+
url_converter_scope : t,
|
834 |
+
hex_colors : s.force_hex_style_colors,
|
835 |
+
class_filter : s.class_filter,
|
836 |
+
update_styles : 1,
|
837 |
+
fix_ie_paragraphs : 1,
|
838 |
+
valid_styles : s.valid_styles
|
839 |
+
});
|
840 |
+
|
841 |
+
/**
|
842 |
+
* Schema instance, enables you to validate elements and it's children.
|
843 |
+
*
|
844 |
+
* @property schema
|
845 |
+
* @type tinymce.dom.Schema
|
846 |
+
*/
|
847 |
+
t.schema = new tinymce.dom.Schema();
|
848 |
+
|
849 |
+
/**
|
850 |
+
* DOM serializer for the editor.
|
851 |
+
*
|
852 |
+
* @property serializer
|
853 |
+
* @type tinymce.dom.Serializer
|
854 |
+
*/
|
855 |
+
t.serializer = new tinymce.dom.Serializer(extend(s, {
|
856 |
+
valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
|
857 |
+
dom : t.dom,
|
858 |
+
schema : t.schema
|
859 |
+
}));
|
860 |
+
|
861 |
+
/**
|
862 |
+
* Selection instance for the editor.
|
863 |
+
*
|
864 |
+
* @property selection
|
865 |
+
* @type tinymce.dom.Selection
|
866 |
+
*/
|
867 |
+
t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
|
868 |
+
|
869 |
+
/**
|
870 |
+
* Formatter instance.
|
871 |
+
*
|
872 |
+
* @property formatter
|
873 |
+
* @type tinymce.Formatter
|
874 |
+
*/
|
875 |
+
t.formatter = new tinymce.Formatter(this);
|
876 |
+
|
877 |
+
// Register default formats
|
878 |
+
t.formatter.register({
|
879 |
+
alignleft : [
|
880 |
+
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}},
|
881 |
+
{selector : 'img,table', styles : {'float' : 'left'}}
|
882 |
+
],
|
883 |
+
|
884 |
+
aligncenter : [
|
885 |
+
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}},
|
886 |
+
{selector : 'img', styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
|
887 |
+
{selector : 'table', styles : {marginLeft : 'auto', marginRight : 'auto'}}
|
888 |
+
],
|
889 |
+
|
890 |
+
alignright : [
|
891 |
+
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}},
|
892 |
+
{selector : 'img,table', styles : {'float' : 'right'}}
|
893 |
+
],
|
894 |
+
|
895 |
+
alignfull : [
|
896 |
+
{selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}}
|
897 |
+
],
|
898 |
+
|
899 |
+
bold : [
|
900 |
+
{inline : 'strong'},
|
901 |
+
{inline : 'span', styles : {fontWeight : 'bold'}},
|
902 |
+
{inline : 'b'}
|
903 |
+
],
|
904 |
+
|
905 |
+
italic : [
|
906 |
+
{inline : 'em'},
|
907 |
+
{inline : 'span', styles : {fontStyle : 'italic'}},
|
908 |
+
{inline : 'i'}
|
909 |
+
],
|
910 |
+
|
911 |
+
underline : [
|
912 |
+
{inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
|
913 |
+
{inline : 'u'}
|
914 |
+
],
|
915 |
+
|
916 |
+
strikethrough : [
|
917 |
+
{inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
|
918 |
+
{inline : 'u'}
|
919 |
+
],
|
920 |
+
|
921 |
+
forecolor : {inline : 'span', styles : {color : '%value'}},
|
922 |
+
hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}},
|
923 |
+
fontname : {inline : 'span', styles : {fontFamily : '%value'}},
|
924 |
+
fontsize : {inline : 'span', styles : {fontSize : '%value'}},
|
925 |
+
fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
|
926 |
+
blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
|
927 |
+
|
928 |
+
removeformat : [
|
929 |
+
{selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
|
930 |
+
{selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
|
931 |
+
{selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
|
932 |
+
]
|
933 |
+
});
|
934 |
+
|
935 |
+
// Register default block formats
|
936 |
+
each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
|
937 |
+
t.formatter.register(name, {block : name, remove : 'all'});
|
938 |
+
});
|
939 |
+
|
940 |
+
// Register user defined formats
|
941 |
+
t.formatter.register(t.settings.formats);
|
942 |
+
|
943 |
+
/**
|
944 |
+
* Undo manager instance, responsible for handling undo levels.
|
945 |
+
*
|
946 |
+
* @property undoManager
|
947 |
+
* @type tinymce.UndoManager
|
948 |
+
*/
|
949 |
+
t.undoManager = new tinymce.UndoManager(t);
|
950 |
+
|
951 |
+
// Pass through
|
952 |
+
t.undoManager.onAdd.add(function(um, l) {
|
953 |
+
if (!l.initial)
|
954 |
+
return t.onChange.dispatch(t, l, um);
|
955 |
+
});
|
956 |
+
|
957 |
+
t.undoManager.onUndo.add(function(um, l) {
|
958 |
+
return t.onUndo.dispatch(t, l, um);
|
959 |
+
});
|
960 |
+
|
961 |
+
t.undoManager.onRedo.add(function(um, l) {
|
962 |
+
return t.onRedo.dispatch(t, l, um);
|
963 |
+
});
|
964 |
+
|
965 |
+
t.forceBlocks = new tinymce.ForceBlocks(t, {
|
966 |
+
forced_root_block : s.forced_root_block
|
967 |
+
});
|
968 |
+
|
969 |
+
t.editorCommands = new tinymce.EditorCommands(t);
|
970 |
+
|
971 |
+
// Pass through
|
972 |
+
t.serializer.onPreProcess.add(function(se, o) {
|
973 |
+
return t.onPreProcess.dispatch(t, o, se);
|
974 |
+
});
|
975 |
+
|
976 |
+
t.serializer.onPostProcess.add(function(se, o) {
|
977 |
+
return t.onPostProcess.dispatch(t, o, se);
|
978 |
+
});
|
979 |
+
|
980 |
+
t.onPreInit.dispatch(t);
|
981 |
+
|
982 |
+
if (!s.gecko_spellcheck)
|
983 |
+
t.getBody().spellcheck = 0;
|
984 |
+
|
985 |
+
if (!s.readonly)
|
986 |
+
t._addEvents();
|
987 |
+
|
988 |
+
t.controlManager.onPostRender.dispatch(t, t.controlManager);
|
989 |
+
t.onPostRender.dispatch(t);
|
990 |
+
|
991 |
+
if (s.directionality)
|
992 |
+
t.getBody().dir = s.directionality;
|
993 |
+
|
994 |
+
if (s.nowrap)
|
995 |
+
t.getBody().style.whiteSpace = "nowrap";
|
996 |
+
|
997 |
+
if (s.custom_elements) {
|
998 |
+
function handleCustom(ed, o) {
|
999 |
+
each(explode(s.custom_elements), function(v) {
|
1000 |
+
var n;
|
1001 |
+
|
1002 |
+
if (v.indexOf('~') === 0) {
|
1003 |
+
v = v.substring(1);
|
1004 |
+
n = 'span';
|
1005 |
+
} else
|
1006 |
+
n = 'div';
|
1007 |
+
|
1008 |
+
o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' _mce_name="$1"$2>');
|
1009 |
+
o.content = o.content.replace(new RegExp('</(' + v + ')>', 'g'), '</' + n + '>');
|
1010 |
+
});
|
1011 |
+
};
|
1012 |
+
|
1013 |
+
t.onBeforeSetContent.add(handleCustom);
|
1014 |
+
t.onPostProcess.add(function(ed, o) {
|
1015 |
+
if (o.set)
|
1016 |
+
handleCustom(ed, o);
|
1017 |
+
});
|
1018 |
+
}
|
1019 |
+
|
1020 |
+
if (s.handle_node_change_callback) {
|
1021 |
+
t.onNodeChange.add(function(ed, cm, n) {
|
1022 |
+
t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());
|
1023 |
+
});
|
1024 |
+
}
|
1025 |
+
|
1026 |
+
if (s.save_callback) {
|
1027 |
+
t.onSaveContent.add(function(ed, o) {
|
1028 |
+
var h = t.execCallback('save_callback', t.id, o.content, t.getBody());
|
1029 |
+
|
1030 |
+
if (h)
|
1031 |
+
o.content = h;
|
1032 |
+
});
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
if (s.onchange_callback) {
|
1036 |
+
t.onChange.add(function(ed, l) {
|
1037 |
+
t.execCallback('onchange_callback', t, l);
|
1038 |
+
});
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
if (s.convert_newlines_to_brs) {
|
1042 |
+
t.onBeforeSetContent.add(function(ed, o) {
|
1043 |
+
if (o.initial)
|
1044 |
+
o.content = o.content.replace(/\r?\n/g, '<br />');
|
1045 |
+
});
|
1046 |
+
}
|
1047 |
+
|
1048 |
+
if (s.fix_nesting && isIE) {
|
1049 |
+
t.onBeforeSetContent.add(function(ed, o) {
|
1050 |
+
o.content = t._fixNesting(o.content);
|
1051 |
+
});
|
1052 |
+
}
|
1053 |
+
|
1054 |
+
if (s.preformatted) {
|
1055 |
+
t.onPostProcess.add(function(ed, o) {
|
1056 |
+
o.content = o.content.replace(/^\s*<pre.*?>/, '');
|
1057 |
+
o.content = o.content.replace(/<\/pre>\s*$/, '');
|
1058 |
+
|
1059 |
+
if (o.set)
|
1060 |
+
o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';
|
1061 |
+
});
|
1062 |
+
}
|
1063 |
+
|
1064 |
+
if (s.verify_css_classes) {
|
1065 |
+
t.serializer.attribValueFilter = function(n, v) {
|
1066 |
+
var s, cl;
|
1067 |
+
|
1068 |
+
if (n == 'class') {
|
1069 |
+
// Build regexp for classes
|
1070 |
+
if (!t.classesRE) {
|
1071 |
+
cl = t.dom.getClasses();
|
1072 |
+
|
1073 |
+
if (cl.length > 0) {
|
1074 |
+
s = '';
|
1075 |
+
|
1076 |
+
each (cl, function(o) {
|
1077 |
+
s += (s ? '|' : '') + o['class'];
|
1078 |
+
});
|
1079 |
+
|
1080 |
+
t.classesRE = new RegExp('(' + s + ')', 'gi');
|
1081 |
+
}
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';
|
1085 |
+
}
|
1086 |
+
|
1087 |
+
return v;
|
1088 |
+
};
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
if (s.cleanup_callback) {
|
1092 |
+
t.onBeforeSetContent.add(function(ed, o) {
|
1093 |
+
o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
|
1094 |
+
});
|
1095 |
+
|
1096 |
+
t.onPreProcess.add(function(ed, o) {
|
1097 |
+
if (o.set)
|
1098 |
+
t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
|
1099 |
+
|
1100 |
+
if (o.get)
|
1101 |
+
t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
|
1102 |
+
});
|
1103 |
+
|
1104 |
+
t.onPostProcess.add(function(ed, o) {
|
1105 |
+
if (o.set)
|
1106 |
+
o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
|
1107 |
+
|
1108 |
+
if (o.get)
|
1109 |
+
o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
|
1110 |
+
});
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
if (s.save_callback) {
|
1114 |
+
t.onGetContent.add(function(ed, o) {
|
1115 |
+
if (o.save)
|
1116 |
+
o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());
|
1117 |
+
});
|
1118 |
+
}
|
1119 |
+
|
1120 |
+
if (s.handle_event_callback) {
|
1121 |
+
t.onEvent.add(function(ed, e, o) {
|
1122 |
+
if (t.execCallback('handle_event_callback', e, ed, o) === false)
|
1123 |
+
Event.cancel(e);
|
1124 |
+
});
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
// Add visual aids when new contents is added
|
1128 |
+
t.onSetContent.add(function() {
|
1129 |
+
t.addVisual(t.getBody());
|
1130 |
+
});
|
1131 |
+
|
1132 |
+
// Remove empty contents
|
1133 |
+
if (s.padd_empty_editor) {
|
1134 |
+
t.onPostProcess.add(function(ed, o) {
|
1135 |
+
o.content = o.content.replace(/^(<p[^>]*>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
|
1136 |
+
});
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
if (isGecko) {
|
1140 |
+
// Fix gecko link bug, when a link is placed at the end of block elements there is
|
1141 |
+
// no way to move the caret behind the link. This fix adds a bogus br element after the link
|
1142 |
+
function fixLinks(ed, o) {
|
1143 |
+
each(ed.dom.select('a'), function(n) {
|
1144 |
+
var pn = n.parentNode;
|
1145 |
+
|
1146 |
+
if (ed.dom.isBlock(pn) && pn.lastChild === n)
|
1147 |
+
ed.dom.add(pn, 'br', {'_mce_bogus' : 1});
|
1148 |
+
});
|
1149 |
+
};
|
1150 |
+
|
1151 |
+
t.onExecCommand.add(function(ed, cmd) {
|
1152 |
+
if (cmd === 'CreateLink')
|
1153 |
+
fixLinks(ed);
|
1154 |
+
});
|
1155 |
+
|
1156 |
+
t.onSetContent.add(t.selection.onSetContent.add(fixLinks));
|
1157 |
+
|
1158 |
+
if (!s.readonly) {
|
1159 |
+
try {
|
1160 |
+
// Design mode must be set here once again to fix a bug where
|
1161 |
+
// Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again
|
1162 |
+
d.designMode = 'Off';
|
1163 |
+
d.designMode = 'On';
|
1164 |
+
} catch (ex) {
|
1165 |
+
// Will fail on Gecko if the editor is placed in an hidden container element
|
1166 |
+
// The design mode will be set ones the editor is focused
|
1167 |
+
}
|
1168 |
+
}
|
1169 |
+
}
|
1170 |
+
|
1171 |
+
// A small timeout was needed since firefox will remove. Bug: #1838304
|
1172 |
+
setTimeout(function () {
|
1173 |
+
if (t.removed)
|
1174 |
+
return;
|
1175 |
+
|
1176 |
+
t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
|
1177 |
+
t.startContent = t.getContent({format : 'raw'});
|
1178 |
+
t.initialized = true;
|
1179 |
+
|
1180 |
+
t.onInit.dispatch(t);
|
1181 |
+
t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());
|
1182 |
+
t.execCallback('init_instance_callback', t);
|
1183 |
+
t.focus(true);
|
1184 |
+
t.nodeChanged({initial : 1});
|
1185 |
+
|
1186 |
+
// Load specified content CSS last
|
1187 |
+
if (s.content_css) {
|
1188 |
+
tinymce.each(explode(s.content_css), function(u) {
|
1189 |
+
t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
|
1190 |
+
});
|
1191 |
+
}
|
1192 |
+
|
1193 |
+
// Handle auto focus
|
1194 |
+
if (s.auto_focus) {
|
1195 |
+
setTimeout(function () {
|
1196 |
+
var ed = tinymce.get(s.auto_focus);
|
1197 |
+
|
1198 |
+
ed.selection.select(ed.getBody(), 1);
|
1199 |
+
ed.selection.collapse(1);
|
1200 |
+
ed.getWin().focus();
|
1201 |
+
}, 100);
|
1202 |
+
}
|
1203 |
+
}, 1);
|
1204 |
+
|
1205 |
+
e = null;
|
1206 |
+
},
|
1207 |
+
|
1208 |
+
// #ifdef contentEditable
|
1209 |
+
|
1210 |
+
/**
|
1211 |
+
* Sets up the contentEditable mode.
|
1212 |
+
*
|
1213 |
+
* @method setupContentEditable
|
1214 |
+
*/
|
1215 |
+
setupContentEditable : function() {
|
1216 |
+
var t = this, s = t.settings, e = t.getElement();
|
1217 |
+
|
1218 |
+
t.contentDocument = s.content_document || document;
|
1219 |
+
t.contentWindow = s.content_window || window;
|
1220 |
+
t.bodyElement = e;
|
1221 |
+
|
1222 |
+
// Prevent leak in IE
|
1223 |
+
s.content_document = s.content_window = null;
|
1224 |
+
|
1225 |
+
DOM.hide(e);
|
1226 |
+
e.contentEditable = t.getParam('content_editable_state', true);
|
1227 |
+
DOM.show(e);
|
1228 |
+
|
1229 |
+
if (!s.gecko_spellcheck)
|
1230 |
+
t.getDoc().body.spellcheck = 0;
|
1231 |
+
|
1232 |
+
// Setup objects
|
1233 |
+
t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {
|
1234 |
+
keep_values : true,
|
1235 |
+
url_converter : t.convertURL,
|
1236 |
+
url_converter_scope : t,
|
1237 |
+
hex_colors : s.force_hex_style_colors,
|
1238 |
+
class_filter : s.class_filter,
|
1239 |
+
root_element : t.id,
|
1240 |
+
fix_ie_paragraphs : 1,
|
1241 |
+
update_styles : 1,
|
1242 |
+
valid_styles : s.valid_styles
|
1243 |
+
});
|
1244 |
+
|
1245 |
+
t.serializer = new tinymce.dom.Serializer({
|
1246 |
+
entity_encoding : s.entity_encoding,
|
1247 |
+
entities : s.entities,
|
1248 |
+
valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
|
1249 |
+
extended_valid_elements : s.extended_valid_elements,
|
1250 |
+
valid_child_elements : s.valid_child_elements,
|
1251 |
+
invalid_elements : s.invalid_elements,
|
1252 |
+
fix_table_elements : s.fix_table_elements,
|
1253 |
+
fix_list_elements : s.fix_list_elements,
|
1254 |
+
fix_content_duplication : s.fix_content_duplication,
|
1255 |
+
font_size_classes : s.font_size_classes,
|
1256 |
+
apply_source_formatting : s.apply_source_formatting,
|
1257 |
+
dom : t.dom,
|
1258 |
+
schema : schema
|
1259 |
+
});
|
1260 |
+
|
1261 |
+
t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
|
1262 |
+
t.forceBlocks = new tinymce.ForceBlocks(t, {
|
1263 |
+
forced_root_block : s.forced_root_block
|
1264 |
+
});
|
1265 |
+
|
1266 |
+
t.editorCommands = new tinymce.EditorCommands(t);
|
1267 |
+
|
1268 |
+
// Pass through
|
1269 |
+
t.serializer.onPreProcess.add(function(se, o) {
|
1270 |
+
return t.onPreProcess.dispatch(t, o, se);
|
1271 |
+
});
|
1272 |
+
|
1273 |
+
t.serializer.onPostProcess.add(function(se, o) {
|
1274 |
+
return t.onPostProcess.dispatch(t, o, se);
|
1275 |
+
});
|
1276 |
+
|
1277 |
+
t.onPreInit.dispatch(t);
|
1278 |
+
t._addEvents();
|
1279 |
+
|
1280 |
+
t.controlManager.onPostRender.dispatch(t, t.controlManager);
|
1281 |
+
t.onPostRender.dispatch(t);
|
1282 |
+
|
1283 |
+
t.onSetContent.add(function() {
|
1284 |
+
t.addVisual(t.getBody());
|
1285 |
+
});
|
1286 |
+
|
1287 |
+
//t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
|
1288 |
+
t.startContent = t.getContent({format : 'raw'});
|
1289 |
+
t.undoManager.add({initial : true});
|
1290 |
+
t.initialized = true;
|
1291 |
+
|
1292 |
+
t.onInit.dispatch(t);
|
1293 |
+
t.focus(true);
|
1294 |
+
t.nodeChanged({initial : 1});
|
1295 |
+
|
1296 |
+
// Load specified content CSS last
|
1297 |
+
if (s.content_css) {
|
1298 |
+
each(explode(s.content_css), function(u) {
|
1299 |
+
t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
|
1300 |
+
});
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
if (isIE) {
|
1304 |
+
// Store away selection
|
1305 |
+
t.dom.bind(t.getElement(), 'beforedeactivate', function() {
|
1306 |
+
t.lastSelectionBookmark = t.selection.getBookmark(1);
|
1307 |
+
});
|
1308 |
+
|
1309 |
+
t.onBeforeExecCommand.add(function(ed, cmd, ui, val, o) {
|
1310 |
+
if (!DOM.getParent(ed.selection.getStart(), function(n) {return n == ed.getBody();}))
|
1311 |
+
o.terminate = 1;
|
1312 |
+
|
1313 |
+
if (!DOM.getParent(ed.selection.getEnd(), function(n) {return n == ed.getBody();}))
|
1314 |
+
o.terminate = 1;
|
1315 |
+
});
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
e = null; // Cleanup
|
1319 |
+
},
|
1320 |
+
|
1321 |
+
// #endif
|
1322 |
+
|
1323 |
+
/**
|
1324 |
+
* Focuses/activates the editor. This will set this editor as the activeEditor in the tinymce collection
|
1325 |
+
* it will also place DOM focus inside the editor.
|
1326 |
+
*
|
1327 |
+
* @method focus
|
1328 |
+
* @param {Boolean} sf Skip DOM focus. Just set is as the active editor.
|
1329 |
+
*/
|
1330 |
+
focus : function(sf) {
|
1331 |
+
var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc();
|
1332 |
+
|
1333 |
+
if (!sf) {
|
1334 |
+
// Get selected control element
|
1335 |
+
ieRng = t.selection.getRng();
|
1336 |
+
if (ieRng.item) {
|
1337 |
+
controlElm = ieRng.item(0);
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
// Is not content editable
|
1341 |
+
if (!ce)
|
1342 |
+
t.getWin().focus();
|
1343 |
+
|
1344 |
+
// Restore selected control element
|
1345 |
+
// This is needed when for example an image is selected within a
|
1346 |
+
// layer a call to focus will then remove the control selection
|
1347 |
+
if (controlElm && controlElm.ownerDocument == doc) {
|
1348 |
+
ieRng = doc.body.createControlRange();
|
1349 |
+
ieRng.addElement(controlElm);
|
1350 |
+
ieRng.select();
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
// #ifdef contentEditable
|
1354 |
+
|
1355 |
+
// Content editable mode ends here
|
1356 |
+
if (ce) {
|
1357 |
+
if (tinymce.isWebKit)
|
1358 |
+
t.getWin().focus();
|
1359 |
+
else {
|
1360 |
+
if (tinymce.isIE)
|
1361 |
+
t.getElement().setActive();
|
1362 |
+
else
|
1363 |
+
t.getElement().focus();
|
1364 |
+
}
|
1365 |
+
}
|
1366 |
+
|
1367 |
+
// #endif
|
1368 |
+
}
|
1369 |
+
|
1370 |
+
if (tinymce.activeEditor != t) {
|
1371 |
+
if ((oed = tinymce.activeEditor) != null)
|
1372 |
+
oed.onDeactivate.dispatch(oed, t);
|
1373 |
+
|
1374 |
+
t.onActivate.dispatch(t, oed);
|
1375 |
+
}
|
1376 |
+
|
1377 |
+
tinymce._setActive(t);
|
1378 |
+
},
|
1379 |
+
|
1380 |
+
/**
|
1381 |
+
* Executes a legacy callback. This method is useful to call old 2.x option callbacks.
|
1382 |
+
* There new event model is a better way to add callback so this method might be removed in the future.
|
1383 |
+
*
|
1384 |
+
* @method execCallback
|
1385 |
+
* @param {String} n Name of the callback to execute.
|
1386 |
+
* @return {Object} Return value passed from callback function.
|
1387 |
+
*/
|
1388 |
+
execCallback : function(n) {
|
1389 |
+
var t = this, f = t.settings[n], s;
|
1390 |
+
|
1391 |
+
if (!f)
|
1392 |
+
return;
|
1393 |
+
|
1394 |
+
// Look through lookup
|
1395 |
+
if (t.callbackLookup && (s = t.callbackLookup[n])) {
|
1396 |
+
f = s.func;
|
1397 |
+
s = s.scope;
|
1398 |
+
}
|
1399 |
+
|
1400 |
+
if (is(f, 'string')) {
|
1401 |
+
s = f.replace(/\.\w+$/, '');
|
1402 |
+
s = s ? tinymce.resolve(s) : 0;
|
1403 |
+
f = tinymce.resolve(f);
|
1404 |
+
t.callbackLookup = t.callbackLookup || {};
|
1405 |
+
t.callbackLookup[n] = {func : f, scope : s};
|
1406 |
+
}
|
1407 |
+
|
1408 |
+
return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
|
1409 |
+
},
|
1410 |
+
|
1411 |
+
/**
|
1412 |
+
* Translates the specified string by replacing variables with language pack items it will also check if there is
|
1413 |
+
* a key mathcin the input.
|
1414 |
+
*
|
1415 |
+
* @method translate
|
1416 |
+
* @param {String} s String to translate by the language pack data.
|
1417 |
+
* @return {String} Translated string.
|
1418 |
+
*/
|
1419 |
+
translate : function(s) {
|
1420 |
+
var c = this.settings.language || 'en', i18n = tinymce.i18n;
|
1421 |
+
|
1422 |
+
if (!s)
|
1423 |
+
return '';
|
1424 |
+
|
1425 |
+
return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
|
1426 |
+
return i18n[c + '.' + b] || '{#' + b + '}';
|
1427 |
+
});
|
1428 |
+
},
|
1429 |
+
|
1430 |
+
/**
|
1431 |
+
* Returns a language pack item by name/key.
|
1432 |
+
*
|
1433 |
+
* @method getLang
|
1434 |
+
* @param {String} n Name/key to get from the language pack.
|
1435 |
+
* @param {String} dv Optional default value to retrive.
|
1436 |
+
*/
|
1437 |
+
getLang : function(n, dv) {
|
1438 |
+
return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
|
1439 |
+
},
|
1440 |
+
|
1441 |
+
/**
|
1442 |
+
* Returns a configuration parameter by name.
|
1443 |
+
*
|
1444 |
+
* @method getParam
|
1445 |
+
* @param {String} n Configruation parameter to retrive.
|
1446 |
+
* @param {String} dv Optional default value to return.
|
1447 |
+
* @param {String} ty Optional type parameter.
|
1448 |
+
* @return {String} Configuration parameter value or default value.
|
1449 |
+
*/
|
1450 |
+
getParam : function(n, dv, ty) {
|
1451 |
+
var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
|
1452 |
+
|
1453 |
+
if (ty === 'hash') {
|
1454 |
+
o = {};
|
1455 |
+
|
1456 |
+
if (is(v, 'string')) {
|
1457 |
+
each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
|
1458 |
+
v = v.split('=');
|
1459 |
+
|
1460 |
+
if (v.length > 1)
|
1461 |
+
o[tr(v[0])] = tr(v[1]);
|
1462 |
+
else
|
1463 |
+
o[tr(v[0])] = tr(v);
|
1464 |
+
});
|
1465 |
+
} else
|
1466 |
+
o = v;
|
1467 |
+
|
1468 |
+
return o;
|
1469 |
+
}
|
1470 |
+
|
1471 |
+
return v;
|
1472 |
+
},
|
1473 |
+
|
1474 |
+
/**
|
1475 |
+
* Distpaches out a onNodeChange event to all observers. This method should be called when you
|
1476 |
+
* need to update the UI states or element path etc.
|
1477 |
+
*
|
1478 |
+
* @method nodeChanged
|
1479 |
+
* @param {Object} o Optional object to pass along for the node changed event.
|
1480 |
+
*/
|
1481 |
+
nodeChanged : function(o) {
|
1482 |
+
var t = this, s = t.selection, n = (isIE ? s.getNode() : s.getStart()) || t.getBody();
|
1483 |
+
|
1484 |
+
// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
|
1485 |
+
if (t.initialized) {
|
1486 |
+
o = o || {};
|
1487 |
+
n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state
|
1488 |
+
|
1489 |
+
// Get parents and add them to object
|
1490 |
+
o.parents = [];
|
1491 |
+
t.dom.getParent(n, function(node) {
|
1492 |
+
if (node.nodeName == 'BODY')
|
1493 |
+
return true;
|
1494 |
+
|
1495 |
+
o.parents.push(node);
|
1496 |
+
});
|
1497 |
+
|
1498 |
+
t.onNodeChange.dispatch(
|
1499 |
+
t,
|
1500 |
+
o ? o.controlManager || t.controlManager : t.controlManager,
|
1501 |
+
n,
|
1502 |
+
s.isCollapsed(),
|
1503 |
+
o
|
1504 |
+
);
|
1505 |
+
}
|
1506 |
+
},
|
1507 |
+
|
1508 |
+
/**
|
1509 |
+
* Adds a button that later gets created by the ControlManager. This is a shorter and easier method
|
1510 |
+
* of adding buttons without the need to deal with the ControlManager directly. But it's also less
|
1511 |
+
* powerfull if you need more control use the ControlManagers factory methods instead.
|
1512 |
+
*
|
1513 |
+
* @method addButton
|
1514 |
+
* @param {String} n Button name to add.
|
1515 |
+
* @param {Object} s Settings object with title, cmd etc.
|
1516 |
+
*/
|
1517 |
+
addButton : function(n, s) {
|
1518 |
+
var t = this;
|
1519 |
+
|
1520 |
+
t.buttons = t.buttons || {};
|
1521 |
+
t.buttons[n] = s;
|
1522 |
+
},
|
1523 |
+
|
1524 |
+
/**
|
1525 |
+
* Adds a custom command to the editor, you can also override existing commands with this method.
|
1526 |
+
* The command that you add can be executed with execCommand.
|
1527 |
+
*
|
1528 |
+
* @method addCommand
|
1529 |
+
* @param {String} n Command name to add/override.
|
1530 |
+
* @param {function} f Function to execute when the command occurs.
|
1531 |
+
* @param {Object} s Optional scope to execute the function in.
|
1532 |
+
*/
|
1533 |
+
addCommand : function(n, f, s) {
|
1534 |
+
this.execCommands[n] = {func : f, scope : s || this};
|
1535 |
+
},
|
1536 |
+
|
1537 |
+
/**
|
1538 |
+
* Adds a custom query state command to the editor, you can also override existing commands with this method.
|
1539 |
+
* The command that you add can be executed with queryCommandState function.
|
1540 |
+
*
|
1541 |
+
* @method addQueryStateHandler
|
1542 |
+
* @param {String} n Command name to add/override.
|
1543 |
+
* @param {function} f Function to execute when the command state retrival occurs.
|
1544 |
+
* @param {Object} s Optional scope to execute the function in.
|
1545 |
+
*/
|
1546 |
+
addQueryStateHandler : function(n, f, s) {
|
1547 |
+
this.queryStateCommands[n] = {func : f, scope : s || this};
|
1548 |
+
},
|
1549 |
+
|
1550 |
+
/**
|
1551 |
+
* Adds a custom query value command to the editor, you can also override existing commands with this method.
|
1552 |
+
* The command that you add can be executed with queryCommandValue function.
|
1553 |
+
*
|
1554 |
+
* @method addQueryValueHandler
|
1555 |
+
* @param {String} n Command name to add/override.
|
1556 |
+
* @param {function} f Function to execute when the command value retrival occurs.
|
1557 |
+
* @param {Object} s Optional scope to execute the function in.
|
1558 |
+
*/
|
1559 |
+
addQueryValueHandler : function(n, f, s) {
|
1560 |
+
this.queryValueCommands[n] = {func : f, scope : s || this};
|
1561 |
+
},
|
1562 |
+
|
1563 |
+
/**
|
1564 |
+
* Adds a keyboard shortcut for some command or function.
|
1565 |
+
*
|
1566 |
+
* @method addShortcut
|
1567 |
+
* @param {String} pa Shortcut pattern. Like for example: ctrl+alt+o.
|
1568 |
+
* @param {String} desc Text description for the command.
|
1569 |
+
* @param {String/Function} cmd_func Command name string or function to execute when the key is pressed.
|
1570 |
+
* @param {Object} sc Optional scope to execute the function in.
|
1571 |
+
* @return {Boolean} true/false state if the shortcut was added or not.
|
1572 |
+
*/
|
1573 |
+
addShortcut : function(pa, desc, cmd_func, sc) {
|
1574 |
+
var t = this, c;
|
1575 |
+
|
1576 |
+
if (!t.settings.custom_shortcuts)
|
1577 |
+
return false;
|
1578 |
+
|
1579 |
+
t.shortcuts = t.shortcuts || {};
|
1580 |
+
|
1581 |
+
if (is(cmd_func, 'string')) {
|
1582 |
+
c = cmd_func;
|
1583 |
+
|
1584 |
+
cmd_func = function() {
|
1585 |
+
t.execCommand(c, false, null);
|
1586 |
+
};
|
1587 |
+
}
|
1588 |
+
|
1589 |
+
if (is(cmd_func, 'object')) {
|
1590 |
+
c = cmd_func;
|
1591 |
+
|
1592 |
+
cmd_func = function() {
|
1593 |
+
t.execCommand(c[0], c[1], c[2]);
|
1594 |
+
};
|
1595 |
+
}
|
1596 |
+
|
1597 |
+
each(explode(pa), function(pa) {
|
1598 |
+
var o = {
|
1599 |
+
func : cmd_func,
|
1600 |
+
scope : sc || this,
|
1601 |
+
desc : desc,
|
1602 |
+
alt : false,
|
1603 |
+
ctrl : false,
|
1604 |
+
shift : false
|
1605 |
+
};
|
1606 |
+
|
1607 |
+
each(explode(pa, '+'), function(v) {
|
1608 |
+
switch (v) {
|
1609 |
+
case 'alt':
|
1610 |
+
case 'ctrl':
|
1611 |
+
case 'shift':
|
1612 |
+
o[v] = true;
|
1613 |
+
break;
|
1614 |
+
|
1615 |
+
default:
|
1616 |
+
o.charCode = v.charCodeAt(0);
|
1617 |
+
o.keyCode = v.toUpperCase().charCodeAt(0);
|
1618 |
+
}
|
1619 |
+
});
|
1620 |
+
|
1621 |
+
t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
|
1622 |
+
});
|
1623 |
+
|
1624 |
+
return true;
|
1625 |
+
},
|
1626 |
+
|
1627 |
+
/**
|
1628 |
+
* Executes a command on the current instance. These commands can be TinyMCE internal commands prefixed with "mce" or
|
1629 |
+
* they can be build in browser commands such as "Bold". A compleate list of browser commands is available on MSDN or Mozilla.org.
|
1630 |
+
* This function will dispatch the execCommand function on each plugin, theme or the execcommand_callback option if none of these
|
1631 |
+
* return true it will handle the command as a internal browser command.
|
1632 |
+
*
|
1633 |
+
* @method execCommand
|
1634 |
+
* @param {String} cmd Command name to execute, for example mceLink or Bold.
|
1635 |
+
* @param {Boolean} ui True/false state if a UI (dialog) should be presented or not.
|
1636 |
+
* @param {mixed} val Optional command value, this can be anything.
|
1637 |
+
* @param {Object} a Optional arguments object.
|
1638 |
+
* @return {Boolean} True/false if the command was executed or not.
|
1639 |
+
*/
|
1640 |
+
execCommand : function(cmd, ui, val, a) {
|
1641 |
+
var t = this, s = 0, o, st;
|
1642 |
+
|
1643 |
+
if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
|
1644 |
+
t.focus();
|
1645 |
+
|
1646 |
+
o = {};
|
1647 |
+
t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o);
|
1648 |
+
if (o.terminate)
|
1649 |
+
return false;
|
1650 |
+
|
1651 |
+
// Command callback
|
1652 |
+
if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
|
1653 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1654 |
+
return true;
|
1655 |
+
}
|
1656 |
+
|
1657 |
+
// Registred commands
|
1658 |
+
if (o = t.execCommands[cmd]) {
|
1659 |
+
st = o.func.call(o.scope, ui, val);
|
1660 |
+
|
1661 |
+
// Fall through on true
|
1662 |
+
if (st !== true) {
|
1663 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1664 |
+
return st;
|
1665 |
+
}
|
1666 |
+
}
|
1667 |
+
|
1668 |
+
// Plugin commands
|
1669 |
+
each(t.plugins, function(p) {
|
1670 |
+
if (p.execCommand && p.execCommand(cmd, ui, val)) {
|
1671 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1672 |
+
s = 1;
|
1673 |
+
return false;
|
1674 |
+
}
|
1675 |
+
});
|
1676 |
+
|
1677 |
+
if (s)
|
1678 |
+
return true;
|
1679 |
+
|
1680 |
+
// Theme commands
|
1681 |
+
if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
|
1682 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1683 |
+
return true;
|
1684 |
+
}
|
1685 |
+
|
1686 |
+
// Execute global commands
|
1687 |
+
if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) {
|
1688 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1689 |
+
return true;
|
1690 |
+
}
|
1691 |
+
|
1692 |
+
// Editor commands
|
1693 |
+
if (t.editorCommands.execCommand(cmd, ui, val)) {
|
1694 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1695 |
+
return true;
|
1696 |
+
}
|
1697 |
+
|
1698 |
+
// Browser commands
|
1699 |
+
t.getDoc().execCommand(cmd, ui, val);
|
1700 |
+
t.onExecCommand.dispatch(t, cmd, ui, val, a);
|
1701 |
+
},
|
1702 |
+
|
1703 |
+
/**
|
1704 |
+
* Returns a command specific state, for example if bold is enabled or not.
|
1705 |
+
*
|
1706 |
+
* @method queryCommandState
|
1707 |
+
* @param {string} cmd Command to query state from.
|
1708 |
+
* @return {Boolean} Command specific state, for example if bold is enabled or not.
|
1709 |
+
*/
|
1710 |
+
queryCommandState : function(cmd) {
|
1711 |
+
var t = this, o, s;
|
1712 |
+
|
1713 |
+
// Is hidden then return undefined
|
1714 |
+
if (t._isHidden())
|
1715 |
+
return;
|
1716 |
+
|
1717 |
+
// Registred commands
|
1718 |
+
if (o = t.queryStateCommands[cmd]) {
|
1719 |
+
s = o.func.call(o.scope);
|
1720 |
+
|
1721 |
+
// Fall though on true
|
1722 |
+
if (s !== true)
|
1723 |
+
return s;
|
1724 |
+
}
|
1725 |
+
|
1726 |
+
// Registred commands
|
1727 |
+
o = t.editorCommands.queryCommandState(cmd);
|
1728 |
+
if (o !== -1)
|
1729 |
+
return o;
|
1730 |
+
|
1731 |
+
// Browser commands
|
1732 |
+
try {
|
1733 |
+
return this.getDoc().queryCommandState(cmd);
|
1734 |
+
} catch (ex) {
|
1735 |
+
// Fails sometimes see bug: 1896577
|
1736 |
+
}
|
1737 |
+
},
|
1738 |
+
|
1739 |
+
/**
|
1740 |
+
* Returns a command specific value, for example the current font size.
|
1741 |
+
*
|
1742 |
+
* @method queryCommandValue
|
1743 |
+
* @param {string} c Command to query value from.
|
1744 |
+
* @return {Object} Command specific value, for example the current font size.
|
1745 |
+
*/
|
1746 |
+
queryCommandValue : function(c) {
|
1747 |
+
var t = this, o, s;
|
1748 |
+
|
1749 |
+
// Is hidden then return undefined
|
1750 |
+
if (t._isHidden())
|
1751 |
+
return;
|
1752 |
+
|
1753 |
+
// Registred commands
|
1754 |
+
if (o = t.queryValueCommands[c]) {
|
1755 |
+
s = o.func.call(o.scope);
|
1756 |
+
|
1757 |
+
// Fall though on true
|
1758 |
+
if (s !== true)
|
1759 |
+
return s;
|
1760 |
+
}
|
1761 |
+
|
1762 |
+
// Registred commands
|
1763 |
+
o = t.editorCommands.queryCommandValue(c);
|
1764 |
+
if (is(o))
|
1765 |
+
return o;
|
1766 |
+
|
1767 |
+
// Browser commands
|
1768 |
+
try {
|
1769 |
+
return this.getDoc().queryCommandValue(c);
|
1770 |
+
} catch (ex) {
|
1771 |
+
// Fails sometimes see bug: 1896577
|
1772 |
+
}
|
1773 |
+
},
|
1774 |
+
|
1775 |
+
/**
|
1776 |
+
* Shows the editor and hides any textarea/div that the editor is supposed to replace.
|
1777 |
+
*
|
1778 |
+
* @method show
|
1779 |
+
*/
|
1780 |
+
show : function() {
|
1781 |
+
var t = this;
|
1782 |
+
|
1783 |
+
DOM.show(t.getContainer());
|
1784 |
+
DOM.hide(t.id);
|
1785 |
+
t.load();
|
1786 |
+
},
|
1787 |
+
|
1788 |
+
/**
|
1789 |
+
* Hides the editor and shows any textarea/div that the editor is supposed to replace.
|
1790 |
+
*
|
1791 |
+
* @method hide
|
1792 |
+
*/
|
1793 |
+
hide : function() {
|
1794 |
+
var t = this, d = t.getDoc();
|
1795 |
+
|
1796 |
+
// Fixed bug where IE has a blinking cursor left from the editor
|
1797 |
+
if (isIE && d)
|
1798 |
+
d.execCommand('SelectAll');
|
1799 |
+
|
1800 |
+
// We must save before we hide so Safari doesn't crash
|
1801 |
+
t.save();
|
1802 |
+
DOM.hide(t.getContainer());
|
1803 |
+
DOM.setStyle(t.id, 'display', t.orgDisplay);
|
1804 |
+
},
|
1805 |
+
|
1806 |
+
/**
|
1807 |
+
* Returns true/false if the editor is hidden or not.
|
1808 |
+
*
|
1809 |
+
* @method isHidden
|
1810 |
+
* @return {Boolean} True/false if the editor is hidden or not.
|
1811 |
+
*/
|
1812 |
+
isHidden : function() {
|
1813 |
+
return !DOM.isHidden(this.id);
|
1814 |
+
},
|
1815 |
+
|
1816 |
+
/**
|
1817 |
+
* Sets the progress state, this will display a throbber/progess for the editor.
|
1818 |
+
* This is ideal for asycronous operations like an AJAX save call.
|
1819 |
+
*
|
1820 |
+
* @method setProgressState
|
1821 |
+
* @param {Boolean} b Boolean state if the progress should be shown or hidden.
|
1822 |
+
* @param {Number} ti Optional time to wait before the progress gets shown.
|
1823 |
+
* @param {Object} o Optional object to pass to the progress observers.
|
1824 |
+
* @return {Boolean} Same as the input state.
|
1825 |
+
*/
|
1826 |
+
setProgressState : function(b, ti, o) {
|
1827 |
+
this.onSetProgressState.dispatch(this, b, ti, o);
|
1828 |
+
|
1829 |
+
return b;
|
1830 |
+
},
|
1831 |
+
|
1832 |
+
/**
|
1833 |
+
* Loads contents from the textarea or div element that got converted into an editor instance.
|
1834 |
+
* This method will move the contents from that textarea or div into the editor by using setContent
|
1835 |
+
* so all events etc that method has will get dispatched as well.
|
1836 |
+
*
|
1837 |
+
* @method load
|
1838 |
+
* @param {Object} o Optional content object, this gets passed around through the whole load process.
|
1839 |
+
* @return {String} HTML string that got set into the editor.
|
1840 |
+
*/
|
1841 |
+
load : function(o) {
|
1842 |
+
var t = this, e = t.getElement(), h;
|
1843 |
+
|
1844 |
+
if (e) {
|
1845 |
+
o = o || {};
|
1846 |
+
o.load = true;
|
1847 |
+
|
1848 |
+
// Double encode existing entities in the value
|
1849 |
+
h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
|
1850 |
+
o.element = e;
|
1851 |
+
|
1852 |
+
if (!o.no_events)
|
1853 |
+
t.onLoadContent.dispatch(t, o);
|
1854 |
+
|
1855 |
+
o.element = e = null;
|
1856 |
+
|
1857 |
+
return h;
|
1858 |
+
}
|
1859 |
+
},
|
1860 |
+
|
1861 |
+
/**
|
1862 |
+
* Saves the contents from a editor out to the textarea or div element that got converted into an editor instance.
|
1863 |
+
* This method will move the HTML contents from the editor into that textarea or div by getContent
|
1864 |
+
* so all events etc that method has will get dispatched as well.
|
1865 |
+
*
|
1866 |
+
* @method save
|
1867 |
+
* @param {Object} o Optional content object, this gets passed around through the whole save process.
|
1868 |
+
* @return {String} HTML string that got set into the textarea/div.
|
1869 |
+
*/
|
1870 |
+
save : function(o) {
|
1871 |
+
var t = this, e = t.getElement(), h, f;
|
1872 |
+
|
1873 |
+
if (!e || !t.initialized)
|
1874 |
+
return;
|
1875 |
+
|
1876 |
+
o = o || {};
|
1877 |
+
o.save = true;
|
1878 |
+
|
1879 |
+
// Add undo level will trigger onchange event
|
1880 |
+
if (!o.no_events) {
|
1881 |
+
t.undoManager.typing = 0;
|
1882 |
+
t.undoManager.add();
|
1883 |
+
}
|
1884 |
+
|
1885 |
+
o.element = e;
|
1886 |
+
h = o.content = t.getContent(o);
|
1887 |
+
|
1888 |
+
if (!o.no_events)
|
1889 |
+
t.onSaveContent.dispatch(t, o);
|
1890 |
+
|
1891 |
+
h = o.content;
|
1892 |
+
|
1893 |
+
if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
|
1894 |
+
e.innerHTML = h;
|
1895 |
+
|
1896 |
+
// Update hidden form element
|
1897 |
+
if (f = DOM.getParent(t.id, 'form')) {
|
1898 |
+
each(f.elements, function(e) {
|
1899 |
+
if (e.name == t.id) {
|
1900 |
+
e.value = h;
|
1901 |
+
return false;
|
1902 |
+
}
|
1903 |
+
});
|
1904 |
+
}
|
1905 |
+
} else
|
1906 |
+
e.value = h;
|
1907 |
+
|
1908 |
+
o.element = e = null;
|
1909 |
+
|
1910 |
+
return h;
|
1911 |
+
},
|
1912 |
+
|
1913 |
+
/**
|
1914 |
+
* Sets the specified content to the editor instance, this will cleanup the content before it gets set using
|
1915 |
+
* the different cleanup rules options.
|
1916 |
+
*
|
1917 |
+
* @method setContent
|
1918 |
+
* @param {String} h Content to set to editor, normally HTML contents but can be other formats as well.
|
1919 |
+
* @param {Object} o Optional content object, this gets passed around through the whole set process.
|
1920 |
+
* @return {String} HTML string that got set into the editor.
|
1921 |
+
*/
|
1922 |
+
setContent : function(h, o) {
|
1923 |
+
var t = this;
|
1924 |
+
|
1925 |
+
o = o || {};
|
1926 |
+
o.format = o.format || 'html';
|
1927 |
+
o.set = true;
|
1928 |
+
o.content = h;
|
1929 |
+
|
1930 |
+
if (!o.no_events)
|
1931 |
+
t.onBeforeSetContent.dispatch(t, o);
|
1932 |
+
|
1933 |
+
// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
|
1934 |
+
// It will also be impossible to place the caret in the editor unless there is a BR element present
|
1935 |
+
if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) {
|
1936 |
+
o.content = t.dom.setHTML(t.getBody(), '<br _mce_bogus="1" />');
|
1937 |
+
o.format = 'raw';
|
1938 |
+
}
|
1939 |
+
|
1940 |
+
o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content));
|
1941 |
+
|
1942 |
+
if (o.format != 'raw' && t.settings.cleanup) {
|
1943 |
+
o.getInner = true;
|
1944 |
+
o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o));
|
1945 |
+
}
|
1946 |
+
|
1947 |
+
if (!o.no_events)
|
1948 |
+
t.onSetContent.dispatch(t, o);
|
1949 |
+
|
1950 |
+
return o.content;
|
1951 |
+
},
|
1952 |
+
|
1953 |
+
/**
|
1954 |
+
* Gets the content from the editor instance, this will cleanup the content before it gets returned using
|
1955 |
+
* the different cleanup rules options.
|
1956 |
+
*
|
1957 |
+
* @method getContent
|
1958 |
+
* @param {Object} o Optional content object, this gets passed around through the whole get process.
|
1959 |
+
* @return {String} Cleaned content string, normally HTML contents.
|
1960 |
+
*/
|
1961 |
+
getContent : function(o) {
|
1962 |
+
var t = this, h;
|
1963 |
+
|
1964 |
+
o = o || {};
|
1965 |
+
o.format = o.format || 'html';
|
1966 |
+
o.get = true;
|
1967 |
+
|
1968 |
+
if (!o.no_events)
|
1969 |
+
t.onBeforeGetContent.dispatch(t, o);
|
1970 |
+
|
1971 |
+
if (o.format != 'raw' && t.settings.cleanup) {
|
1972 |
+
o.getInner = true;
|
1973 |
+
h = t.serializer.serialize(t.getBody(), o);
|
1974 |
+
} else
|
1975 |
+
h = t.getBody().innerHTML;
|
1976 |
+
|
1977 |
+
h = h.replace(/^\s*|\s*$/g, '');
|
1978 |
+
o.content = h;
|
1979 |
+
|
1980 |
+
if (!o.no_events)
|
1981 |
+
t.onGetContent.dispatch(t, o);
|
1982 |
+
|
1983 |
+
return o.content;
|
1984 |
+
},
|
1985 |
+
|
1986 |
+
/**
|
1987 |
+
* Returns true/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
|
1988 |
+
*
|
1989 |
+
* @method isDirty
|
1990 |
+
* @return {Boolean} True/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
|
1991 |
+
*/
|
1992 |
+
isDirty : function() {
|
1993 |
+
var t = this;
|
1994 |
+
|
1995 |
+
return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty;
|
1996 |
+
},
|
1997 |
+
|
1998 |
+
/**
|
1999 |
+
* Returns the editors container element. The container element wrappes in
|
2000 |
+
* all the elements added to the page for the editor. Such as UI, iframe etc.
|
2001 |
+
*
|
2002 |
+
* @method getContainer
|
2003 |
+
* @return {Element} HTML DOM element for the editor container.
|
2004 |
+
*/
|
2005 |
+
getContainer : function() {
|
2006 |
+
var t = this;
|
2007 |
+
|
2008 |
+
if (!t.container)
|
2009 |
+
t.container = DOM.get(t.editorContainer || t.id + '_parent');
|
2010 |
+
|
2011 |
+
return t.container;
|
2012 |
+
},
|
2013 |
+
|
2014 |
+
/**
|
2015 |
+
* Returns the editors content area container element. The this element is the one who
|
2016 |
+
* holds the iframe or the editable element.
|
2017 |
+
*
|
2018 |
+
* @method getContentAreaContainer
|
2019 |
+
* @return {Element} HTML DOM element for the editor area container.
|
2020 |
+
*/
|
2021 |
+
getContentAreaContainer : function() {
|
2022 |
+
return this.contentAreaContainer;
|
2023 |
+
},
|
2024 |
+
|
2025 |
+
/**
|
2026 |
+
* Returns the target element/textarea that got replaced with a TinyMCE editor instance.
|
2027 |
+
*
|
2028 |
+
* @method getElement
|
2029 |
+
* @return {Element} HTML DOM element for the replaced element.
|
2030 |
+
*/
|
2031 |
+
getElement : function() {
|
2032 |
+
return DOM.get(this.settings.content_element || this.id);
|
2033 |
+
},
|
2034 |
+
|
2035 |
+
/**
|
2036 |
+
* Returns the iframes window object.
|
2037 |
+
*
|
2038 |
+
* @method getWin
|
2039 |
+
* @return {Window} Iframe DOM window object.
|
2040 |
+
*/
|
2041 |
+
getWin : function() {
|
2042 |
+
var t = this, e;
|
2043 |
+
|
2044 |
+
if (!t.contentWindow) {
|
2045 |
+
e = DOM.get(t.id + "_ifr");
|
2046 |
+
|
2047 |
+
if (e)
|
2048 |
+
t.contentWindow = e.contentWindow;
|
2049 |
+
}
|
2050 |
+
|
2051 |
+
return t.contentWindow;
|
2052 |
+
},
|
2053 |
+
|
2054 |
+
/**
|
2055 |
+
* Returns the iframes document object.
|
2056 |
+
*
|
2057 |
+
* @method getDoc
|
2058 |
+
* @return {Document} Iframe DOM document object.
|
2059 |
+
*/
|
2060 |
+
getDoc : function() {
|
2061 |
+
var t = this, w;
|
2062 |
+
|
2063 |
+
if (!t.contentDocument) {
|
2064 |
+
w = t.getWin();
|
2065 |
+
|
2066 |
+
if (w)
|
2067 |
+
t.contentDocument = w.document;
|
2068 |
+
}
|
2069 |
+
|
2070 |
+
return t.contentDocument;
|
2071 |
+
},
|
2072 |
+
|
2073 |
+
/**
|
2074 |
+
* Returns the iframes body element.
|
2075 |
+
*
|
2076 |
+
* @method getBody
|
2077 |
+
* @return {Element} Iframe body element.
|
2078 |
+
*/
|
2079 |
+
getBody : function() {
|
2080 |
+
return this.bodyElement || this.getDoc().body;
|
2081 |
+
},
|
2082 |
+
|
2083 |
+
/**
|
2084 |
+
* URL converter function this gets executed each time a user adds an img, a or
|
2085 |
+
* any other element that has a URL in it. This will be called both by the DOM and HTML
|
2086 |
+
* manipulation functions.
|
2087 |
+
*
|
2088 |
+
* @method convertURL
|
2089 |
+
* @param {string} u URL to convert.
|
2090 |
+
* @param {string} n Attribute name src, href etc.
|
2091 |
+
* @param {string/HTMLElement} Tag name or HTML DOM element depending on HTML or DOM insert.
|
2092 |
+
* @return {string} Converted URL string.
|
2093 |
+
*/
|
2094 |
+
convertURL : function(u, n, e) {
|
2095 |
+
var t = this, s = t.settings;
|
2096 |
+
|
2097 |
+
// Use callback instead
|
2098 |
+
if (s.urlconverter_callback)
|
2099 |
+
return t.execCallback('urlconverter_callback', u, e, true, n);
|
2100 |
+
|
2101 |
+
// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
|
2102 |
+
if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)
|
2103 |
+
return u;
|
2104 |
+
|
2105 |
+
// Convert to relative
|
2106 |
+
if (s.relative_urls)
|
2107 |
+
return t.documentBaseURI.toRelative(u);
|
2108 |
+
|
2109 |
+
// Convert to absolute
|
2110 |
+
u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);
|
2111 |
+
|
2112 |
+
return u;
|
2113 |
+
},
|
2114 |
+
|
2115 |
+
/**
|
2116 |
+
* Adds visual aid for tables, anchors etc so they can be more easily edited inside the editor.
|
2117 |
+
*
|
2118 |
+
* @method addVisual
|
2119 |
+
* @param {Element} e Optional root element to loop though to find tables etc that needs the visual aid.
|
2120 |
+
*/
|
2121 |
+
addVisual : function(e) {
|
2122 |
+
var t = this, s = t.settings;
|
2123 |
+
|
2124 |
+
e = e || t.getBody();
|
2125 |
+
|
2126 |
+
if (!is(t.hasVisual))
|
2127 |
+
t.hasVisual = s.visual;
|
2128 |
+
|
2129 |
+
each(t.dom.select('table,a', e), function(e) {
|
2130 |
+
var v;
|
2131 |
+
|
2132 |
+
switch (e.nodeName) {
|
2133 |
+
case 'TABLE':
|
2134 |
+
v = t.dom.getAttrib(e, 'border');
|
2135 |
+
|
2136 |
+
if (!v || v == '0') {
|
2137 |
+
if (t.hasVisual)
|
2138 |
+
t.dom.addClass(e, s.visual_table_class);
|
2139 |
+
else
|
2140 |
+
t.dom.removeClass(e, s.visual_table_class);
|
2141 |
+
}
|
2142 |
+
|
2143 |
+
return;
|
2144 |
+
|
2145 |
+
case 'A':
|
2146 |
+
v = t.dom.getAttrib(e, 'name');
|
2147 |
+
|
2148 |
+
if (v) {
|
2149 |
+
if (t.hasVisual)
|
2150 |
+
t.dom.addClass(e, 'mceItemAnchor');
|
2151 |
+
else
|
2152 |
+
t.dom.removeClass(e, 'mceItemAnchor');
|
2153 |
+
}
|
2154 |
+
|
2155 |
+
return;
|
2156 |
+
}
|
2157 |
+
});
|
2158 |
+
|
2159 |
+
t.onVisualAid.dispatch(t, e, t.hasVisual);
|
2160 |
+
},
|
2161 |
+
|
2162 |
+
/**
|
2163 |
+
* Removes the editor from the dom and tinymce collection.
|
2164 |
+
*
|
2165 |
+
* @method remove
|
2166 |
+
*/
|
2167 |
+
remove : function() {
|
2168 |
+
var t = this, e = t.getContainer();
|
2169 |
+
|
2170 |
+
t.removed = 1; // Cancels post remove event execution
|
2171 |
+
t.hide();
|
2172 |
+
|
2173 |
+
t.execCallback('remove_instance_callback', t);
|
2174 |
+
t.onRemove.dispatch(t);
|
2175 |
+
|
2176 |
+
// Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
|
2177 |
+
t.onExecCommand.listeners = [];
|
2178 |
+
|
2179 |
+
tinymce.remove(t);
|
2180 |
+
DOM.remove(e);
|
2181 |
+
},
|
2182 |
+
|
2183 |
+
/**
|
2184 |
+
* Destroys the editor instance by removing all events, element references or other resources
|
2185 |
+
* that could leak memory. This method will be called automatically when the page is unloaded
|
2186 |
+
* but you can also call it directly if you know what you are doing.
|
2187 |
+
*
|
2188 |
+
* @method destroy
|
2189 |
+
* @param {Boolean} s Optional state if the destroy is an automatic destroy or user called one.
|
2190 |
+
*/
|
2191 |
+
destroy : function(s) {
|
2192 |
+
var t = this;
|
2193 |
+
|
2194 |
+
// One time is enough
|
2195 |
+
if (t.destroyed)
|
2196 |
+
return;
|
2197 |
+
|
2198 |
+
if (!s) {
|
2199 |
+
tinymce.removeUnload(t.destroy);
|
2200 |
+
tinyMCE.onBeforeUnload.remove(t._beforeUnload);
|
2201 |
+
|
2202 |
+
// Manual destroy
|
2203 |
+
if (t.theme && t.theme.destroy)
|
2204 |
+
t.theme.destroy();
|
2205 |
+
|
2206 |
+
// Destroy controls, selection and dom
|
2207 |
+
t.controlManager.destroy();
|
2208 |
+
t.selection.destroy();
|
2209 |
+
t.dom.destroy();
|
2210 |
+
|
2211 |
+
// Remove all events
|
2212 |
+
|
2213 |
+
// Don't clear the window or document if content editable
|
2214 |
+
// is enabled since other instances might still be present
|
2215 |
+
if (!t.settings.content_editable) {
|
2216 |
+
Event.clear(t.getWin());
|
2217 |
+
Event.clear(t.getDoc());
|
2218 |
+
}
|
2219 |
+
|
2220 |
+
Event.clear(t.getBody());
|
2221 |
+
Event.clear(t.formElement);
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
if (t.formElement) {
|
2225 |
+
t.formElement.submit = t.formElement._mceOldSubmit;
|
2226 |
+
t.formElement._mceOldSubmit = null;
|
2227 |
+
}
|
2228 |
+
|
2229 |
+
t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
|
2230 |
+
|
2231 |
+
if (t.selection)
|
2232 |
+
t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
|
2233 |
+
|
2234 |
+
t.destroyed = 1;
|
2235 |
+
},
|
2236 |
+
|
2237 |
+
// Internal functions
|
2238 |
+
|
2239 |
+
_addEvents : function() {
|
2240 |
+
// 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
|
2241 |
+
var t = this, i, s = t.settings, lo = {
|
2242 |
+
mouseup : 'onMouseUp',
|
2243 |
+
mousedown : 'onMouseDown',
|
2244 |
+
click : 'onClick',
|
2245 |
+
keyup : 'onKeyUp',
|
2246 |
+
keydown : 'onKeyDown',
|
2247 |
+
keypress : 'onKeyPress',
|
2248 |
+
submit : 'onSubmit',
|
2249 |
+
reset : 'onReset',
|
2250 |
+
contextmenu : 'onContextMenu',
|
2251 |
+
dblclick : 'onDblClick',
|
2252 |
+
paste : 'onPaste' // Doesn't work in all browsers yet
|
2253 |
+
};
|
2254 |
+
|
2255 |
+
function eventHandler(e, o) {
|
2256 |
+
var ty = e.type;
|
2257 |
+
|
2258 |
+
// Don't fire events when it's removed
|
2259 |
+
if (t.removed)
|
2260 |
+
return;
|
2261 |
+
|
2262 |
+
// Generic event handler
|
2263 |
+
if (t.onEvent.dispatch(t, e, o) !== false) {
|
2264 |
+
// Specific event handler
|
2265 |
+
t[lo[e.fakeType || e.type]].dispatch(t, e, o);
|
2266 |
+
}
|
2267 |
+
};
|
2268 |
+
|
2269 |
+
// Add DOM events
|
2270 |
+
each(lo, function(v, k) {
|
2271 |
+
switch (k) {
|
2272 |
+
case 'contextmenu':
|
2273 |
+
if (tinymce.isOpera) {
|
2274 |
+
// Fake contextmenu on Opera
|
2275 |
+
t.dom.bind(t.getBody(), 'mousedown', function(e) {
|
2276 |
+
if (e.ctrlKey) {
|
2277 |
+
e.fakeType = 'contextmenu';
|
2278 |
+
eventHandler(e);
|
2279 |
+
}
|
2280 |
+
});
|
2281 |
+
} else
|
2282 |
+
t.dom.bind(t.getBody(), k, eventHandler);
|
2283 |
+
break;
|
2284 |
+
|
2285 |
+
case 'paste':
|
2286 |
+
t.dom.bind(t.getBody(), k, function(e) {
|
2287 |
+
eventHandler(e);
|
2288 |
+
});
|
2289 |
+
break;
|
2290 |
+
|
2291 |
+
case 'submit':
|
2292 |
+
case 'reset':
|
2293 |
+
t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);
|
2294 |
+
break;
|
2295 |
+
|
2296 |
+
default:
|
2297 |
+
t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);
|
2298 |
+
}
|
2299 |
+
});
|
2300 |
+
|
2301 |
+
t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {
|
2302 |
+
t.focus(true);
|
2303 |
+
});
|
2304 |
+
|
2305 |
+
// #ifdef contentEditable
|
2306 |
+
|
2307 |
+
if (s.content_editable && tinymce.isOpera) {
|
2308 |
+
// Opera doesn't support focus event for contentEditable elements so we need to fake it
|
2309 |
+
function doFocus(e) {
|
2310 |
+
t.focus(true);
|
2311 |
+
};
|
2312 |
+
|
2313 |
+
t.dom.bind(t.getBody(), 'click', doFocus);
|
2314 |
+
t.dom.bind(t.getBody(), 'keydown', doFocus);
|
2315 |
+
}
|
2316 |
+
|
2317 |
+
// #endif
|
2318 |
+
|
2319 |
+
// Fixes bug where a specified document_base_uri could result in broken images
|
2320 |
+
// This will also fix drag drop of images in Gecko
|
2321 |
+
if (tinymce.isGecko) {
|
2322 |
+
// Convert all images to absolute URLs
|
2323 |
+
/* t.onSetContent.add(function(ed, o) {
|
2324 |
+
each(ed.dom.select('img'), function(e) {
|
2325 |
+
var v;
|
2326 |
+
|
2327 |
+
if (v = e.getAttribute('_mce_src'))
|
2328 |
+
e.src = t.documentBaseURI.toAbsolute(v);
|
2329 |
+
})
|
2330 |
+
});*/
|
2331 |
+
|
2332 |
+
t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) {
|
2333 |
+
var v;
|
2334 |
+
|
2335 |
+
e = e.target;
|
2336 |
+
|
2337 |
+
if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('_mce_src')))
|
2338 |
+
e.src = t.documentBaseURI.toAbsolute(v);
|
2339 |
+
});
|
2340 |
+
}
|
2341 |
+
|
2342 |
+
// Set various midas options in Gecko
|
2343 |
+
if (isGecko) {
|
2344 |
+
function setOpts() {
|
2345 |
+
var t = this, d = t.getDoc(), s = t.settings;
|
2346 |
+
|
2347 |
+
if (isGecko && !s.readonly) {
|
2348 |
+
if (t._isHidden()) {
|
2349 |
+
try {
|
2350 |
+
if (!s.content_editable)
|
2351 |
+
d.designMode = 'On';
|
2352 |
+
} catch (ex) {
|
2353 |
+
// Fails if it's hidden
|
2354 |
+
}
|
2355 |
+
}
|
2356 |
+
|
2357 |
+
try {
|
2358 |
+
// Try new Gecko method
|
2359 |
+
d.execCommand("styleWithCSS", 0, false);
|
2360 |
+
} catch (ex) {
|
2361 |
+
// Use old method
|
2362 |
+
if (!t._isHidden())
|
2363 |
+
try {d.execCommand("useCSS", 0, true);} catch (ex) {}
|
2364 |
+
}
|
2365 |
+
|
2366 |
+
if (!s.table_inline_editing)
|
2367 |
+
try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}
|
2368 |
+
|
2369 |
+
if (!s.object_resizing)
|
2370 |
+
try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}
|
2371 |
+
}
|
2372 |
+
};
|
2373 |
+
|
2374 |
+
t.onBeforeExecCommand.add(setOpts);
|
2375 |
+
t.onMouseDown.add(setOpts);
|
2376 |
+
}
|
2377 |
+
|
2378 |
+
// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
|
2379 |
+
// WebKit can't even do simple things like selecting an image
|
2380 |
+
// This also fixes so it's possible to select mceItemAnchors
|
2381 |
+
if (tinymce.isWebKit) {
|
2382 |
+
t.onClick.add(function(ed, e) {
|
2383 |
+
e = e.target;
|
2384 |
+
|
2385 |
+
// Needs tobe the setBaseAndExtend or it will fail to select floated images
|
2386 |
+
if (e.nodeName == 'IMG' || (e.nodeName == 'A' && t.dom.hasClass(e, 'mceItemAnchor')))
|
2387 |
+
t.selection.getSel().setBaseAndExtent(e, 0, e, 1);
|
2388 |
+
});
|
2389 |
+
}
|
2390 |
+
|
2391 |
+
// Add node change handlers
|
2392 |
+
t.onMouseUp.add(t.nodeChanged);
|
2393 |
+
//t.onClick.add(t.nodeChanged);
|
2394 |
+
t.onKeyUp.add(function(ed, e) {
|
2395 |
+
var c = e.keyCode;
|
2396 |
+
|
2397 |
+
if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey)
|
2398 |
+
t.nodeChanged();
|
2399 |
+
});
|
2400 |
+
|
2401 |
+
// Add reset handler
|
2402 |
+
t.onReset.add(function() {
|
2403 |
+
t.setContent(t.startContent, {format : 'raw'});
|
2404 |
+
});
|
2405 |
+
|
2406 |
+
// Add shortcuts
|
2407 |
+
if (s.custom_shortcuts) {
|
2408 |
+
if (s.custom_undo_redo_keyboard_shortcuts) {
|
2409 |
+
t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');
|
2410 |
+
t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');
|
2411 |
+
}
|
2412 |
+
|
2413 |
+
// Add default shortcuts for gecko
|
2414 |
+
t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
|
2415 |
+
t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
|
2416 |
+
t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
|
2417 |
+
|
2418 |
+
// BlockFormat shortcuts keys
|
2419 |
+
for (i=1; i<=6; i++)
|
2420 |
+
t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
|
2421 |
+
|
2422 |
+
t.addShortcut('ctrl+7', '', ['FormatBlock', false, '<p>']);
|
2423 |
+
t.addShortcut('ctrl+8', '', ['FormatBlock', false, '<div>']);
|
2424 |
+
t.addShortcut('ctrl+9', '', ['FormatBlock', false, '<address>']);
|
2425 |
+
|
2426 |
+
function find(e) {
|
2427 |
+
var v = null;
|
2428 |
+
|
2429 |
+
if (!e.altKey && !e.ctrlKey && !e.metaKey)
|
2430 |
+
return v;
|
2431 |
+
|
2432 |
+
each(t.shortcuts, function(o) {
|
2433 |
+
if (tinymce.isMac && o.ctrl != e.metaKey)
|
2434 |
+
return;
|
2435 |
+
else if (!tinymce.isMac && o.ctrl != e.ctrlKey)
|
2436 |
+
return;
|
2437 |
+
|
2438 |
+
if (o.alt != e.altKey)
|
2439 |
+
return;
|
2440 |
+
|
2441 |
+
if (o.shift != e.shiftKey)
|
2442 |
+
return;
|
2443 |
+
|
2444 |
+
if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {
|
2445 |
+
v = o;
|
2446 |
+
return false;
|
2447 |
+
}
|
2448 |
+
});
|
2449 |
+
|
2450 |
+
return v;
|
2451 |
+
};
|
2452 |
+
|
2453 |
+
t.onKeyUp.add(function(ed, e) {
|
2454 |
+
var o = find(e);
|
2455 |
+
|
2456 |
+
if (o)
|
2457 |
+
return Event.cancel(e);
|
2458 |
+
});
|
2459 |
+
|
2460 |
+
t.onKeyPress.add(function(ed, e) {
|
2461 |
+
var o = find(e);
|
2462 |
+
|
2463 |
+
if (o)
|
2464 |
+
return Event.cancel(e);
|
2465 |
+
});
|
2466 |
+
|
2467 |
+
t.onKeyDown.add(function(ed, e) {
|
2468 |
+
var o = find(e);
|
2469 |
+
|
2470 |
+
if (o) {
|
2471 |
+
o.func.call(o.scope);
|
2472 |
+
return Event.cancel(e);
|
2473 |
+
}
|
2474 |
+
});
|
2475 |
+
}
|
2476 |
+
|
2477 |
+
if (tinymce.isIE) {
|
2478 |
+
// Fix so resize will only update the width and height attributes not the styles of an image
|
2479 |
+
// It will also block mceItemNoResize items
|
2480 |
+
t.dom.bind(t.getDoc(), 'controlselect', function(e) {
|
2481 |
+
var re = t.resizeInfo, cb;
|
2482 |
+
|
2483 |
+
e = e.target;
|
2484 |
+
|
2485 |
+
// Don't do this action for non image elements
|
2486 |
+
if (e.nodeName !== 'IMG')
|
2487 |
+
return;
|
2488 |
+
|
2489 |
+
if (re)
|
2490 |
+
t.dom.unbind(re.node, re.ev, re.cb);
|
2491 |
+
|
2492 |
+
if (!t.dom.hasClass(e, 'mceItemNoResize')) {
|
2493 |
+
ev = 'resizeend';
|
2494 |
+
cb = t.dom.bind(e, ev, function(e) {
|
2495 |
+
var v;
|
2496 |
+
|
2497 |
+
e = e.target;
|
2498 |
+
|
2499 |
+
if (v = t.dom.getStyle(e, 'width')) {
|
2500 |
+
t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));
|
2501 |
+
t.dom.setStyle(e, 'width', '');
|
2502 |
+
}
|
2503 |
+
|
2504 |
+
if (v = t.dom.getStyle(e, 'height')) {
|
2505 |
+
t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));
|
2506 |
+
t.dom.setStyle(e, 'height', '');
|
2507 |
+
}
|
2508 |
+
});
|
2509 |
+
} else {
|
2510 |
+
ev = 'resizestart';
|
2511 |
+
cb = t.dom.bind(e, 'resizestart', Event.cancel, Event);
|
2512 |
+
}
|
2513 |
+
|
2514 |
+
re = t.resizeInfo = {
|
2515 |
+
node : e,
|
2516 |
+
ev : ev,
|
2517 |
+
cb : cb
|
2518 |
+
};
|
2519 |
+
});
|
2520 |
+
|
2521 |
+
t.onKeyDown.add(function(ed, e) {
|
2522 |
+
switch (e.keyCode) {
|
2523 |
+
case 8:
|
2524 |
+
// Fix IE control + backspace browser bug
|
2525 |
+
if (t.selection.getRng().item) {
|
2526 |
+
ed.dom.remove(t.selection.getRng().item(0));
|
2527 |
+
return Event.cancel(e);
|
2528 |
+
}
|
2529 |
+
}
|
2530 |
+
});
|
2531 |
+
|
2532 |
+
/*if (t.dom.boxModel) {
|
2533 |
+
t.getBody().style.height = '100%';
|
2534 |
+
|
2535 |
+
Event.add(t.getWin(), 'resize', function(e) {
|
2536 |
+
var docElm = t.getDoc().documentElement;
|
2537 |
+
|
2538 |
+
docElm.style.height = (docElm.offsetHeight - 10) + 'px';
|
2539 |
+
});
|
2540 |
+
}*/
|
2541 |
+
}
|
2542 |
+
|
2543 |
+
if (tinymce.isOpera) {
|
2544 |
+
t.onClick.add(function(ed, e) {
|
2545 |
+
Event.prevent(e);
|
2546 |
+
});
|
2547 |
+
}
|
2548 |
+
|
2549 |
+
// Add custom undo/redo handlers
|
2550 |
+
if (s.custom_undo_redo) {
|
2551 |
+
function addUndo() {
|
2552 |
+
t.undoManager.typing = 0;
|
2553 |
+
t.undoManager.add();
|
2554 |
+
};
|
2555 |
+
|
2556 |
+
t.dom.bind(t.getDoc(), 'focusout', function(e) {
|
2557 |
+
if (!t.removed && t.undoManager.typing)
|
2558 |
+
addUndo();
|
2559 |
+
});
|
2560 |
+
|
2561 |
+
t.onKeyUp.add(function(ed, e) {
|
2562 |
+
if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey)
|
2563 |
+
addUndo();
|
2564 |
+
});
|
2565 |
+
|
2566 |
+
t.onKeyDown.add(function(ed, e) {
|
2567 |
+
var rng, tmpRng, parent, offset;
|
2568 |
+
|
2569 |
+
// IE has a really odd bug where the DOM might include an node that doesn't have
|
2570 |
+
// a proper structure. If you try to access nodeValue it would throw an illegal value exception.
|
2571 |
+
// This seems to only happen when you delete contents and it seems to be avoidable if you refresh the element
|
2572 |
+
// after you delete contents from it. See: #3008923
|
2573 |
+
if (isIE && e.keyCode == 46) {
|
2574 |
+
rng = t.selection.getRng();
|
2575 |
+
|
2576 |
+
if (rng.parentElement) {
|
2577 |
+
parent = rng.parentElement();
|
2578 |
+
|
2579 |
+
// Get the current caret position within the element
|
2580 |
+
tmpRng = rng.duplicate();
|
2581 |
+
tmpRng.moveToElementText(parent);
|
2582 |
+
tmpRng.setEndPoint('EndToEnd', rng);
|
2583 |
+
offset = tmpRng.text.length;
|
2584 |
+
|
2585 |
+
// Select next word when ctrl key is used in combo with delete
|
2586 |
+
if (e.ctrlKey) {
|
2587 |
+
rng.moveEnd('word', 1);
|
2588 |
+
rng.select();
|
2589 |
+
}
|
2590 |
+
|
2591 |
+
// Delete contents
|
2592 |
+
t.selection.getSel().clear();
|
2593 |
+
|
2594 |
+
// Check if we are within the same parent
|
2595 |
+
if (rng.parentElement() == parent) {
|
2596 |
+
try {
|
2597 |
+
// Update the HTML and hopefully it will remove the artifacts
|
2598 |
+
parent.innerHTML = parent.innerHTML;
|
2599 |
+
} catch (ex) {
|
2600 |
+
// And since it's IE it can sometimes produce an unknown runtime error
|
2601 |
+
}
|
2602 |
+
|
2603 |
+
// Restore the caret position
|
2604 |
+
tmpRng.moveToElementText(parent);
|
2605 |
+
tmpRng.collapse();
|
2606 |
+
tmpRng.move('character', offset);
|
2607 |
+
tmpRng.select();
|
2608 |
+
}
|
2609 |
+
|
2610 |
+
// Block the default delete behavior since it might be broken
|
2611 |
+
e.preventDefault();
|
2612 |
+
return;
|
2613 |
+
}
|
2614 |
+
}
|
2615 |
+
|
2616 |
+
// Is caracter positon keys
|
2617 |
+
if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) {
|
2618 |
+
if (t.undoManager.typing)
|
2619 |
+
addUndo();
|
2620 |
+
|
2621 |
+
return;
|
2622 |
+
}
|
2623 |
+
|
2624 |
+
if (!t.undoManager.typing) {
|
2625 |
+
t.undoManager.add();
|
2626 |
+
t.undoManager.typing = 1;
|
2627 |
+
}
|
2628 |
+
});
|
2629 |
+
|
2630 |
+
t.onMouseDown.add(function() {
|
2631 |
+
if (t.undoManager.typing)
|
2632 |
+
addUndo();
|
2633 |
+
});
|
2634 |
+
}
|
2635 |
+
},
|
2636 |
+
|
2637 |
+
_isHidden : function() {
|
2638 |
+
var s;
|
2639 |
+
|
2640 |
+
if (!isGecko)
|
2641 |
+
return 0;
|
2642 |
+
|
2643 |
+
// Weird, wheres that cursor selection?
|
2644 |
+
s = this.selection.getSel();
|
2645 |
+
return (!s || !s.rangeCount || s.rangeCount == 0);
|
2646 |
+
},
|
2647 |
+
|
2648 |
+
// Fix for bug #1867292
|
2649 |
+
_fixNesting : function(s) {
|
2650 |
+
var d = [], i;
|
2651 |
+
|
2652 |
+
s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) {
|
2653 |
+
var e;
|
2654 |
+
|
2655 |
+
// Handle end element
|
2656 |
+
if (b === '/') {
|
2657 |
+
if (!d.length)
|
2658 |
+
return '';
|
2659 |
+
|
2660 |
+
if (c !== d[d.length - 1].tag) {
|
2661 |
+
for (i=d.length - 1; i>=0; i--) {
|
2662 |
+
if (d[i].tag === c) {
|
2663 |
+
d[i].close = 1;
|
2664 |
+
break;
|
2665 |
+
}
|
2666 |
+
}
|
2667 |
+
|
2668 |
+
return '';
|
2669 |
+
} else {
|
2670 |
+
d.pop();
|
2671 |
+
|
2672 |
+
if (d.length && d[d.length - 1].close) {
|
2673 |
+
a = a + '</' + d[d.length - 1].tag + '>';
|
2674 |
+
d.pop();
|
2675 |
+
}
|
2676 |
+
}
|
2677 |
+
} else {
|
2678 |
+
// Ignore these
|
2679 |
+
if (/^(br|hr|input|meta|img|link|param)$/i.test(c))
|
2680 |
+
return a;
|
2681 |
+
|
2682 |
+
// Ignore closed ones
|
2683 |
+
if (/\/>$/.test(a))
|
2684 |
+
return a;
|
2685 |
+
|
2686 |
+
d.push({tag : c}); // Push start element
|
2687 |
+
}
|
2688 |
+
|
2689 |
+
return a;
|
2690 |
+
});
|
2691 |
+
|
2692 |
+
// End all open tags
|
2693 |
+
for (i=d.length - 1; i>=0; i--)
|
2694 |
+
s += '</' + d[i].tag + '>';
|
2695 |
+
|
2696 |
+
return s;
|
2697 |
+
}
|
2698 |
+
});
|
2699 |
+
})(tinymce);
|
js/tiny_mce_german/classes/EditorCommands.js
CHANGED
@@ -1,445 +1,445 @@
|
|
1 |
-
/**
|
2 |
-
* EditorCommands.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
// Added for compression purposes
|
13 |
-
var each = tinymce.each, undefined, TRUE = true, FALSE = false;
|
14 |
-
|
15 |
-
/**
|
16 |
-
* This class enables you to add custom editor commands and it contains
|
17 |
-
* overrides for native browser commands to address various bugs and issues.
|
18 |
-
*
|
19 |
-
* @class tinymce.EditorCommands
|
20 |
-
*/
|
21 |
-
tinymce.EditorCommands = function(editor) {
|
22 |
-
var dom = editor.dom,
|
23 |
-
selection = editor.selection,
|
24 |
-
commands = {state: {}, exec : {}, value : {}},
|
25 |
-
settings = editor.settings,
|
26 |
-
bookmark;
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Executes the specified command.
|
30 |
-
*
|
31 |
-
* @method execCommand
|
32 |
-
* @param {String} command Command to execute.
|
33 |
-
* @param {Boolean} ui Optional user interface state.
|
34 |
-
* @param {Object} value Optional value for command.
|
35 |
-
* @return {Boolean} true/false if the command was found or not.
|
36 |
-
*/
|
37 |
-
function execCommand(command, ui, value) {
|
38 |
-
var func;
|
39 |
-
|
40 |
-
command = command.toLowerCase();
|
41 |
-
if (func = commands.exec[command]) {
|
42 |
-
func(command, ui, value);
|
43 |
-
return TRUE;
|
44 |
-
}
|
45 |
-
|
46 |
-
return FALSE;
|
47 |
-
};
|
48 |
-
|
49 |
-
/**
|
50 |
-
* Queries the current state for a command for example if the current selection is "bold".
|
51 |
-
*
|
52 |
-
* @method queryCommandState
|
53 |
-
* @param {String} command Command to check the state of.
|
54 |
-
* @return {Boolean/Number} true/false if the selected contents is bold or not, -1 if it's not found.
|
55 |
-
*/
|
56 |
-
function queryCommandState(command) {
|
57 |
-
var func;
|
58 |
-
|
59 |
-
command = command.toLowerCase();
|
60 |
-
if (func = commands.state[command])
|
61 |
-
return func(command);
|
62 |
-
|
63 |
-
return -1;
|
64 |
-
};
|
65 |
-
|
66 |
-
/**
|
67 |
-
* Queries the command value for example the current fontsize.
|
68 |
-
*
|
69 |
-
* @method queryCommandValue
|
70 |
-
* @param {String} command Command to check the value of.
|
71 |
-
* @return {Object} Command value of false if it's not found.
|
72 |
-
*/
|
73 |
-
function queryCommandValue(command) {
|
74 |
-
var func;
|
75 |
-
|
76 |
-
command = command.toLowerCase();
|
77 |
-
if (func = commands.value[command])
|
78 |
-
return func(command);
|
79 |
-
|
80 |
-
return FALSE;
|
81 |
-
};
|
82 |
-
|
83 |
-
/**
|
84 |
-
* Adds commands to the command collection.
|
85 |
-
*
|
86 |
-
* @method addCommands
|
87 |
-
* @param {Object} command_list Name/value collection with commands to add, the names can also be comma separated.
|
88 |
-
* @param {String} type Optional type to add, defaults to exec. Can be value or state as well.
|
89 |
-
*/
|
90 |
-
function addCommands(command_list, type) {
|
91 |
-
type = type || 'exec';
|
92 |
-
|
93 |
-
each(command_list, function(callback, command) {
|
94 |
-
each(command.toLowerCase().split(','), function(command) {
|
95 |
-
commands[type][command] = callback;
|
96 |
-
});
|
97 |
-
});
|
98 |
-
};
|
99 |
-
|
100 |
-
// Expose public methods
|
101 |
-
tinymce.extend(this, {
|
102 |
-
execCommand : execCommand,
|
103 |
-
queryCommandState : queryCommandState,
|
104 |
-
queryCommandValue : queryCommandValue,
|
105 |
-
addCommands : addCommands
|
106 |
-
});
|
107 |
-
|
108 |
-
// Private methods
|
109 |
-
|
110 |
-
function execNativeCommand(command, ui, value) {
|
111 |
-
if (ui === undefined)
|
112 |
-
ui = FALSE;
|
113 |
-
|
114 |
-
if (value === undefined)
|
115 |
-
value = null;
|
116 |
-
|
117 |
-
return editor.getDoc().execCommand(command, ui, value);
|
118 |
-
};
|
119 |
-
|
120 |
-
function isFormatMatch(name) {
|
121 |
-
return editor.formatter.match(name);
|
122 |
-
};
|
123 |
-
|
124 |
-
function toggleFormat(name, value) {
|
125 |
-
editor.formatter.toggle(name, value ? {value : value} : undefined);
|
126 |
-
};
|
127 |
-
|
128 |
-
function storeSelection(type) {
|
129 |
-
bookmark = selection.getBookmark(type);
|
130 |
-
};
|
131 |
-
|
132 |
-
function restoreSelection() {
|
133 |
-
selection.moveToBookmark(bookmark);
|
134 |
-
};
|
135 |
-
|
136 |
-
// Add execCommand overrides
|
137 |
-
addCommands({
|
138 |
-
// Ignore these, added for compatibility
|
139 |
-
'mceResetDesignMode,mceBeginUndoLevel' : function() {},
|
140 |
-
|
141 |
-
// Add undo manager logic
|
142 |
-
'mceEndUndoLevel,mceAddUndoLevel' : function() {
|
143 |
-
editor.undoManager.add();
|
144 |
-
},
|
145 |
-
|
146 |
-
'Cut,Copy,Paste' : function(command) {
|
147 |
-
var doc = editor.getDoc(), failed;
|
148 |
-
|
149 |
-
// Try executing the native command
|
150 |
-
try {
|
151 |
-
execNativeCommand(command);
|
152 |
-
} catch (ex) {
|
153 |
-
// Command failed
|
154 |
-
failed = TRUE;
|
155 |
-
}
|
156 |
-
|
157 |
-
// Present alert message about clipboard access not being available
|
158 |
-
if (failed || !doc.queryCommandSupported(command)) {
|
159 |
-
if (tinymce.isGecko) {
|
160 |
-
editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) {
|
161 |
-
if (state)
|
162 |
-
open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank');
|
163 |
-
});
|
164 |
-
} else
|
165 |
-
editor.windowManager.alert(editor.getLang('clipboard_no_support'));
|
166 |
-
}
|
167 |
-
},
|
168 |
-
|
169 |
-
// Override unlink command
|
170 |
-
unlink : function(command) {
|
171 |
-
if (selection.isCollapsed())
|
172 |
-
selection.select(selection.getNode());
|
173 |
-
|
174 |
-
execNativeCommand(command);
|
175 |
-
selection.collapse(FALSE);
|
176 |
-
},
|
177 |
-
|
178 |
-
// Override justify commands to use the text formatter engine
|
179 |
-
'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
|
180 |
-
var align = command.substring(7);
|
181 |
-
|
182 |
-
// Remove all other alignments first
|
183 |
-
each('left,center,right,full'.split(','), function(name) {
|
184 |
-
if (align != name)
|
185 |
-
editor.formatter.remove('align' + name);
|
186 |
-
});
|
187 |
-
|
188 |
-
toggleFormat('align' + align);
|
189 |
-
},
|
190 |
-
|
191 |
-
// Override list commands to fix WebKit bug
|
192 |
-
'InsertUnorderedList,InsertOrderedList' : function(command) {
|
193 |
-
var listElm, listParent;
|
194 |
-
|
195 |
-
execNativeCommand(command);
|
196 |
-
|
197 |
-
// WebKit produces lists within block elements so we need to split them
|
198 |
-
// we will replace the native list creation logic to custom logic later on
|
199 |
-
// TODO: Remove this when the list creation logic is removed
|
200 |
-
listElm = dom.getParent(selection.getNode(), 'ol,ul');
|
201 |
-
if (listElm) {
|
202 |
-
listParent = listElm.parentNode;
|
203 |
-
|
204 |
-
// If list is within a text block then split that block
|
205 |
-
if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
|
206 |
-
storeSelection();
|
207 |
-
dom.split(listParent, listElm);
|
208 |
-
restoreSelection();
|
209 |
-
}
|
210 |
-
}
|
211 |
-
},
|
212 |
-
|
213 |
-
// Override commands to use the text formatter engine
|
214 |
-
'Bold,Italic,Underline,Strikethrough' : function(command) {
|
215 |
-
toggleFormat(command);
|
216 |
-
},
|
217 |
-
|
218 |
-
// Override commands to use the text formatter engine
|
219 |
-
'ForeColor,HiliteColor,FontName' : function(command, ui, value) {
|
220 |
-
toggleFormat(command, value);
|
221 |
-
},
|
222 |
-
|
223 |
-
FontSize : function(command, ui, value) {
|
224 |
-
var fontClasses, fontSizes;
|
225 |
-
|
226 |
-
// Convert font size 1-7 to styles
|
227 |
-
if (value >= 1 && value <= 7) {
|
228 |
-
fontSizes = tinymce.explode(settings.font_size_style_values);
|
229 |
-
fontClasses = tinymce.explode(settings.font_size_classes);
|
230 |
-
|
231 |
-
if (fontClasses)
|
232 |
-
value = fontClasses[value - 1] || value;
|
233 |
-
else
|
234 |
-
value = fontSizes[value - 1] || value;
|
235 |
-
}
|
236 |
-
|
237 |
-
toggleFormat(command, value);
|
238 |
-
},
|
239 |
-
|
240 |
-
RemoveFormat : function(command) {
|
241 |
-
editor.formatter.remove(command);
|
242 |
-
},
|
243 |
-
|
244 |
-
mceBlockQuote : function(command) {
|
245 |
-
toggleFormat('blockquote');
|
246 |
-
},
|
247 |
-
|
248 |
-
FormatBlock : function(command, ui, value) {
|
249 |
-
return toggleFormat(value);
|
250 |
-
},
|
251 |
-
|
252 |
-
mceCleanup : function() {
|
253 |
-
var bookmark = selection.getBookmark();
|
254 |
-
|
255 |
-
editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE});
|
256 |
-
|
257 |
-
selection.moveToBookmark(bookmark);
|
258 |
-
},
|
259 |
-
|
260 |
-
mceRemoveNode : function(command, ui, value) {
|
261 |
-
var node = value || selection.getNode();
|
262 |
-
|
263 |
-
// Make sure that the body node isn't removed
|
264 |
-
if (node != editor.getBody()) {
|
265 |
-
storeSelection();
|
266 |
-
editor.dom.remove(node, TRUE);
|
267 |
-
restoreSelection();
|
268 |
-
}
|
269 |
-
},
|
270 |
-
|
271 |
-
mceSelectNodeDepth : function(command, ui, value) {
|
272 |
-
var counter = 0;
|
273 |
-
|
274 |
-
dom.getParent(selection.getNode(), function(node) {
|
275 |
-
if (node.nodeType == 1 && counter++ == value) {
|
276 |
-
selection.select(node);
|
277 |
-
return FALSE;
|
278 |
-
}
|
279 |
-
}, editor.getBody());
|
280 |
-
},
|
281 |
-
|
282 |
-
mceSelectNode : function(command, ui, value) {
|
283 |
-
selection.select(value);
|
284 |
-
},
|
285 |
-
|
286 |
-
mceInsertContent : function(command, ui, value) {
|
287 |
-
selection.setContent(value);
|
288 |
-
},
|
289 |
-
|
290 |
-
mceInsertRawHTML : function(command, ui, value) {
|
291 |
-
selection.setContent('tiny_mce_marker');
|
292 |
-
editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, value));
|
293 |
-
},
|
294 |
-
|
295 |
-
mceSetContent : function(command, ui, value) {
|
296 |
-
editor.setContent(value);
|
297 |
-
},
|
298 |
-
|
299 |
-
'Indent,Outdent' : function(command) {
|
300 |
-
var intentValue, indentUnit, value;
|
301 |
-
|
302 |
-
// Setup indent level
|
303 |
-
intentValue = settings.indentation;
|
304 |
-
indentUnit = /[a-z%]+$/i.exec(intentValue);
|
305 |
-
intentValue = parseInt(intentValue);
|
306 |
-
|
307 |
-
if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
|
308 |
-
each(selection.getSelectedBlocks(), function(element) {
|
309 |
-
if (command == 'outdent') {
|
310 |
-
value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue);
|
311 |
-
dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : '');
|
312 |
-
} else
|
313 |
-
dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit);
|
314 |
-
});
|
315 |
-
} else
|
316 |
-
execNativeCommand(command);
|
317 |
-
},
|
318 |
-
|
319 |
-
mceRepaint : function() {
|
320 |
-
var bookmark;
|
321 |
-
|
322 |
-
if (tinymce.isGecko) {
|
323 |
-
try {
|
324 |
-
storeSelection(TRUE);
|
325 |
-
|
326 |
-
if (selection.getSel())
|
327 |
-
selection.getSel().selectAllChildren(editor.getBody());
|
328 |
-
|
329 |
-
selection.collapse(TRUE);
|
330 |
-
restoreSelection();
|
331 |
-
} catch (ex) {
|
332 |
-
// Ignore
|
333 |
-
}
|
334 |
-
}
|
335 |
-
},
|
336 |
-
|
337 |
-
mceToggleFormat : function(command, ui, value) {
|
338 |
-
editor.formatter.toggle(value);
|
339 |
-
},
|
340 |
-
|
341 |
-
InsertHorizontalRule : function() {
|
342 |
-
selection.setContent('<hr />');
|
343 |
-
},
|
344 |
-
|
345 |
-
mceToggleVisualAid : function() {
|
346 |
-
editor.hasVisual = !editor.hasVisual;
|
347 |
-
editor.addVisual();
|
348 |
-
},
|
349 |
-
|
350 |
-
mceReplaceContent : function(command, ui, value) {
|
351 |
-
selection.setContent(value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'})));
|
352 |
-
},
|
353 |
-
|
354 |
-
mceInsertLink : function(command, ui, value) {
|
355 |
-
var link = dom.getParent(selection.getNode(), 'a');
|
356 |
-
|
357 |
-
if (tinymce.is(value, 'string'))
|
358 |
-
value = {href : value};
|
359 |
-
|
360 |
-
if (!link) {
|
361 |
-
execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);');
|
362 |
-
each(dom.select('a[href=javascript:mctmp(0);]'), function(link) {
|
363 |
-
dom.setAttribs(link, value);
|
364 |
-
});
|
365 |
-
} else {
|
366 |
-
if (value.href)
|
367 |
-
dom.setAttribs(link, value);
|
368 |
-
else
|
369 |
-
editor.dom.remove(link, TRUE);
|
370 |
-
}
|
371 |
-
},
|
372 |
-
|
373 |
-
selectAll : function() {
|
374 |
-
var root = dom.getRoot();
|
375 |
-
var rng = dom.createRng();
|
376 |
-
rng.setStart(root, 0);
|
377 |
-
rng.setEnd(root, root.childNodes.length);
|
378 |
-
editor.selection.setRng(rng);
|
379 |
-
}
|
380 |
-
});
|
381 |
-
|
382 |
-
// Add queryCommandState overrides
|
383 |
-
addCommands({
|
384 |
-
// Override justify commands
|
385 |
-
'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
|
386 |
-
return isFormatMatch('align' + command.substring(7));
|
387 |
-
},
|
388 |
-
|
389 |
-
'Bold,Italic,Underline,Strikethrough' : function(command) {
|
390 |
-
return isFormatMatch(command);
|
391 |
-
},
|
392 |
-
|
393 |
-
mceBlockQuote : function() {
|
394 |
-
return isFormatMatch('blockquote');
|
395 |
-
},
|
396 |
-
|
397 |
-
Outdent : function() {
|
398 |
-
var node;
|
399 |
-
|
400 |
-
if (settings.inline_styles) {
|
401 |
-
if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
|
402 |
-
return TRUE;
|
403 |
-
|
404 |
-
if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
|
405 |
-
return TRUE;
|
406 |
-
}
|
407 |
-
|
408 |
-
return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'));
|
409 |
-
},
|
410 |
-
|
411 |
-
'InsertUnorderedList,InsertOrderedList' : function(command) {
|
412 |
-
return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL');
|
413 |
-
}
|
414 |
-
}, 'state');
|
415 |
-
|
416 |
-
// Add queryCommandValue overrides
|
417 |
-
addCommands({
|
418 |
-
'FontSize,FontName' : function(command) {
|
419 |
-
var value = 0, parent;
|
420 |
-
|
421 |
-
if (parent = dom.getParent(selection.getNode(), 'span')) {
|
422 |
-
if (command == 'fontsize')
|
423 |
-
value = parent.style.fontSize;
|
424 |
-
else
|
425 |
-
value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
|
426 |
-
}
|
427 |
-
|
428 |
-
return value;
|
429 |
-
}
|
430 |
-
}, 'value');
|
431 |
-
|
432 |
-
// Add undo manager logic
|
433 |
-
if (settings.custom_undo_redo) {
|
434 |
-
addCommands({
|
435 |
-
Undo : function() {
|
436 |
-
editor.undoManager.undo();
|
437 |
-
},
|
438 |
-
|
439 |
-
Redo : function() {
|
440 |
-
editor.undoManager.redo();
|
441 |
-
}
|
442 |
-
});
|
443 |
-
}
|
444 |
-
};
|
445 |
})(tinymce);
|
1 |
+
/**
|
2 |
+
* EditorCommands.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
// Added for compression purposes
|
13 |
+
var each = tinymce.each, undefined, TRUE = true, FALSE = false;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* This class enables you to add custom editor commands and it contains
|
17 |
+
* overrides for native browser commands to address various bugs and issues.
|
18 |
+
*
|
19 |
+
* @class tinymce.EditorCommands
|
20 |
+
*/
|
21 |
+
tinymce.EditorCommands = function(editor) {
|
22 |
+
var dom = editor.dom,
|
23 |
+
selection = editor.selection,
|
24 |
+
commands = {state: {}, exec : {}, value : {}},
|
25 |
+
settings = editor.settings,
|
26 |
+
bookmark;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Executes the specified command.
|
30 |
+
*
|
31 |
+
* @method execCommand
|
32 |
+
* @param {String} command Command to execute.
|
33 |
+
* @param {Boolean} ui Optional user interface state.
|
34 |
+
* @param {Object} value Optional value for command.
|
35 |
+
* @return {Boolean} true/false if the command was found or not.
|
36 |
+
*/
|
37 |
+
function execCommand(command, ui, value) {
|
38 |
+
var func;
|
39 |
+
|
40 |
+
command = command.toLowerCase();
|
41 |
+
if (func = commands.exec[command]) {
|
42 |
+
func(command, ui, value);
|
43 |
+
return TRUE;
|
44 |
+
}
|
45 |
+
|
46 |
+
return FALSE;
|
47 |
+
};
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Queries the current state for a command for example if the current selection is "bold".
|
51 |
+
*
|
52 |
+
* @method queryCommandState
|
53 |
+
* @param {String} command Command to check the state of.
|
54 |
+
* @return {Boolean/Number} true/false if the selected contents is bold or not, -1 if it's not found.
|
55 |
+
*/
|
56 |
+
function queryCommandState(command) {
|
57 |
+
var func;
|
58 |
+
|
59 |
+
command = command.toLowerCase();
|
60 |
+
if (func = commands.state[command])
|
61 |
+
return func(command);
|
62 |
+
|
63 |
+
return -1;
|
64 |
+
};
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Queries the command value for example the current fontsize.
|
68 |
+
*
|
69 |
+
* @method queryCommandValue
|
70 |
+
* @param {String} command Command to check the value of.
|
71 |
+
* @return {Object} Command value of false if it's not found.
|
72 |
+
*/
|
73 |
+
function queryCommandValue(command) {
|
74 |
+
var func;
|
75 |
+
|
76 |
+
command = command.toLowerCase();
|
77 |
+
if (func = commands.value[command])
|
78 |
+
return func(command);
|
79 |
+
|
80 |
+
return FALSE;
|
81 |
+
};
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Adds commands to the command collection.
|
85 |
+
*
|
86 |
+
* @method addCommands
|
87 |
+
* @param {Object} command_list Name/value collection with commands to add, the names can also be comma separated.
|
88 |
+
* @param {String} type Optional type to add, defaults to exec. Can be value or state as well.
|
89 |
+
*/
|
90 |
+
function addCommands(command_list, type) {
|
91 |
+
type = type || 'exec';
|
92 |
+
|
93 |
+
each(command_list, function(callback, command) {
|
94 |
+
each(command.toLowerCase().split(','), function(command) {
|
95 |
+
commands[type][command] = callback;
|
96 |
+
});
|
97 |
+
});
|
98 |
+
};
|
99 |
+
|
100 |
+
// Expose public methods
|
101 |
+
tinymce.extend(this, {
|
102 |
+
execCommand : execCommand,
|
103 |
+
queryCommandState : queryCommandState,
|
104 |
+
queryCommandValue : queryCommandValue,
|
105 |
+
addCommands : addCommands
|
106 |
+
});
|
107 |
+
|
108 |
+
// Private methods
|
109 |
+
|
110 |
+
function execNativeCommand(command, ui, value) {
|
111 |
+
if (ui === undefined)
|
112 |
+
ui = FALSE;
|
113 |
+
|
114 |
+
if (value === undefined)
|
115 |
+
value = null;
|
116 |
+
|
117 |
+
return editor.getDoc().execCommand(command, ui, value);
|
118 |
+
};
|
119 |
+
|
120 |
+
function isFormatMatch(name) {
|
121 |
+
return editor.formatter.match(name);
|
122 |
+
};
|
123 |
+
|
124 |
+
function toggleFormat(name, value) {
|
125 |
+
editor.formatter.toggle(name, value ? {value : value} : undefined);
|
126 |
+
};
|
127 |
+
|
128 |
+
function storeSelection(type) {
|
129 |
+
bookmark = selection.getBookmark(type);
|
130 |
+
};
|
131 |
+
|
132 |
+
function restoreSelection() {
|
133 |
+
selection.moveToBookmark(bookmark);
|
134 |
+
};
|
135 |
+
|
136 |
+
// Add execCommand overrides
|
137 |
+
addCommands({
|
138 |
+
// Ignore these, added for compatibility
|
139 |
+
'mceResetDesignMode,mceBeginUndoLevel' : function() {},
|
140 |
+
|
141 |
+
// Add undo manager logic
|
142 |
+
'mceEndUndoLevel,mceAddUndoLevel' : function() {
|
143 |
+
editor.undoManager.add();
|
144 |
+
},
|
145 |
+
|
146 |
+
'Cut,Copy,Paste' : function(command) {
|
147 |
+
var doc = editor.getDoc(), failed;
|
148 |
+
|
149 |
+
// Try executing the native command
|
150 |
+
try {
|
151 |
+
execNativeCommand(command);
|
152 |
+
} catch (ex) {
|
153 |
+
// Command failed
|
154 |
+
failed = TRUE;
|
155 |
+
}
|
156 |
+
|
157 |
+
// Present alert message about clipboard access not being available
|
158 |
+
if (failed || !doc.queryCommandSupported(command)) {
|
159 |
+
if (tinymce.isGecko) {
|
160 |
+
editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) {
|
161 |
+
if (state)
|
162 |
+
open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank');
|
163 |
+
});
|
164 |
+
} else
|
165 |
+
editor.windowManager.alert(editor.getLang('clipboard_no_support'));
|
166 |
+
}
|
167 |
+
},
|
168 |
+
|
169 |
+
// Override unlink command
|
170 |
+
unlink : function(command) {
|
171 |
+
if (selection.isCollapsed())
|
172 |
+
selection.select(selection.getNode());
|
173 |
+
|
174 |
+
execNativeCommand(command);
|
175 |
+
selection.collapse(FALSE);
|
176 |
+
},
|
177 |
+
|
178 |
+
// Override justify commands to use the text formatter engine
|
179 |
+
'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
|
180 |
+
var align = command.substring(7);
|
181 |
+
|
182 |
+
// Remove all other alignments first
|
183 |
+
each('left,center,right,full'.split(','), function(name) {
|
184 |
+
if (align != name)
|
185 |
+
editor.formatter.remove('align' + name);
|
186 |
+
});
|
187 |
+
|
188 |
+
toggleFormat('align' + align);
|
189 |
+
},
|
190 |
+
|
191 |
+
// Override list commands to fix WebKit bug
|
192 |
+
'InsertUnorderedList,InsertOrderedList' : function(command) {
|
193 |
+
var listElm, listParent;
|
194 |
+
|
195 |
+
execNativeCommand(command);
|
196 |
+
|
197 |
+
// WebKit produces lists within block elements so we need to split them
|
198 |
+
// we will replace the native list creation logic to custom logic later on
|
199 |
+
// TODO: Remove this when the list creation logic is removed
|
200 |
+
listElm = dom.getParent(selection.getNode(), 'ol,ul');
|
201 |
+
if (listElm) {
|
202 |
+
listParent = listElm.parentNode;
|
203 |
+
|
204 |
+
// If list is within a text block then split that block
|
205 |
+
if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
|
206 |
+
storeSelection();
|
207 |
+
dom.split(listParent, listElm);
|
208 |
+
restoreSelection();
|
209 |
+
}
|
210 |
+
}
|
211 |
+
},
|
212 |
+
|
213 |
+
// Override commands to use the text formatter engine
|
214 |
+
'Bold,Italic,Underline,Strikethrough' : function(command) {
|
215 |
+
toggleFormat(command);
|
216 |
+
},
|
217 |
+
|
218 |
+
// Override commands to use the text formatter engine
|
219 |
+
'ForeColor,HiliteColor,FontName' : function(command, ui, value) {
|
220 |
+
toggleFormat(command, value);
|
221 |
+
},
|
222 |
+
|
223 |
+
FontSize : function(command, ui, value) {
|
224 |
+
var fontClasses, fontSizes;
|
225 |
+
|
226 |
+
// Convert font size 1-7 to styles
|
227 |
+
if (value >= 1 && value <= 7) {
|
228 |
+
fontSizes = tinymce.explode(settings.font_size_style_values);
|
229 |
+
fontClasses = tinymce.explode(settings.font_size_classes);
|
230 |
+
|
231 |
+
if (fontClasses)
|
232 |
+
value = fontClasses[value - 1] || value;
|
233 |
+
else
|
234 |
+
value = fontSizes[value - 1] || value;
|
235 |
+
}
|
236 |
+
|
237 |
+
toggleFormat(command, value);
|
238 |
+
},
|
239 |
+
|
240 |
+
RemoveFormat : function(command) {
|
241 |
+
editor.formatter.remove(command);
|
242 |
+
},
|
243 |
+
|
244 |
+
mceBlockQuote : function(command) {
|
245 |
+
toggleFormat('blockquote');
|
246 |
+
},
|
247 |
+
|
248 |
+
FormatBlock : function(command, ui, value) {
|
249 |
+
return toggleFormat(value);
|
250 |
+
},
|
251 |
+
|
252 |
+
mceCleanup : function() {
|
253 |
+
var bookmark = selection.getBookmark();
|
254 |
+
|
255 |
+
editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE});
|
256 |
+
|
257 |
+
selection.moveToBookmark(bookmark);
|
258 |
+
},
|
259 |
+
|
260 |
+
mceRemoveNode : function(command, ui, value) {
|
261 |
+
var node = value || selection.getNode();
|
262 |
+
|
263 |
+
// Make sure that the body node isn't removed
|
264 |
+
if (node != editor.getBody()) {
|
265 |
+
storeSelection();
|
266 |
+
editor.dom.remove(node, TRUE);
|
267 |
+
restoreSelection();
|
268 |
+
}
|
269 |
+
},
|
270 |
+
|
271 |
+
mceSelectNodeDepth : function(command, ui, value) {
|
272 |
+
var counter = 0;
|
273 |
+
|
274 |
+
dom.getParent(selection.getNode(), function(node) {
|
275 |
+
if (node.nodeType == 1 && counter++ == value) {
|
276 |
+
selection.select(node);
|
277 |
+
return FALSE;
|
278 |
+
}
|
279 |
+
}, editor.getBody());
|
280 |
+
},
|
281 |
+
|
282 |
+
mceSelectNode : function(command, ui, value) {
|
283 |
+
selection.select(value);
|
284 |
+
},
|
285 |
+
|
286 |
+
mceInsertContent : function(command, ui, value) {
|
287 |
+
selection.setContent(value);
|
288 |
+
},
|
289 |
+
|
290 |
+
mceInsertRawHTML : function(command, ui, value) {
|
291 |
+
selection.setContent('tiny_mce_marker');
|
292 |
+
editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, value));
|
293 |
+
},
|
294 |
+
|
295 |
+
mceSetContent : function(command, ui, value) {
|
296 |
+
editor.setContent(value);
|
297 |
+
},
|
298 |
+
|
299 |
+
'Indent,Outdent' : function(command) {
|
300 |
+
var intentValue, indentUnit, value;
|
301 |
+
|
302 |
+
// Setup indent level
|
303 |
+
intentValue = settings.indentation;
|
304 |
+
indentUnit = /[a-z%]+$/i.exec(intentValue);
|
305 |
+
intentValue = parseInt(intentValue);
|
306 |
+
|
307 |
+
if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
|
308 |
+
each(selection.getSelectedBlocks(), function(element) {
|
309 |
+
if (command == 'outdent') {
|
310 |
+
value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue);
|
311 |
+
dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : '');
|
312 |
+
} else
|
313 |
+
dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit);
|
314 |
+
});
|
315 |
+
} else
|
316 |
+
execNativeCommand(command);
|
317 |
+
},
|
318 |
+
|
319 |
+
mceRepaint : function() {
|
320 |
+
var bookmark;
|
321 |
+
|
322 |
+
if (tinymce.isGecko) {
|
323 |
+
try {
|
324 |
+
storeSelection(TRUE);
|
325 |
+
|
326 |
+
if (selection.getSel())
|
327 |
+
selection.getSel().selectAllChildren(editor.getBody());
|
328 |
+
|
329 |
+
selection.collapse(TRUE);
|
330 |
+
restoreSelection();
|
331 |
+
} catch (ex) {
|
332 |
+
// Ignore
|
333 |
+
}
|
334 |
+
}
|
335 |
+
},
|
336 |
+
|
337 |
+
mceToggleFormat : function(command, ui, value) {
|
338 |
+
editor.formatter.toggle(value);
|
339 |
+
},
|
340 |
+
|
341 |
+
InsertHorizontalRule : function() {
|
342 |
+
selection.setContent('<hr />');
|
343 |
+
},
|
344 |
+
|
345 |
+
mceToggleVisualAid : function() {
|
346 |
+
editor.hasVisual = !editor.hasVisual;
|
347 |
+
editor.addVisual();
|
348 |
+
},
|
349 |
+
|
350 |
+
mceReplaceContent : function(command, ui, value) {
|
351 |
+
selection.setContent(value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'})));
|
352 |
+
},
|
353 |
+
|
354 |
+
mceInsertLink : function(command, ui, value) {
|
355 |
+
var link = dom.getParent(selection.getNode(), 'a');
|
356 |
+
|
357 |
+
if (tinymce.is(value, 'string'))
|
358 |
+
value = {href : value};
|
359 |
+
|
360 |
+
if (!link) {
|
361 |
+
execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);');
|
362 |
+
each(dom.select('a[href=javascript:mctmp(0);]'), function(link) {
|
363 |
+
dom.setAttribs(link, value);
|
364 |
+
});
|
365 |
+
} else {
|
366 |
+
if (value.href)
|
367 |
+
dom.setAttribs(link, value);
|
368 |
+
else
|
369 |
+
editor.dom.remove(link, TRUE);
|
370 |
+
}
|
371 |
+
},
|
372 |
+
|
373 |
+
selectAll : function() {
|
374 |
+
var root = dom.getRoot();
|
375 |
+
var rng = dom.createRng();
|
376 |
+
rng.setStart(root, 0);
|
377 |
+
rng.setEnd(root, root.childNodes.length);
|
378 |
+
editor.selection.setRng(rng);
|
379 |
+
}
|
380 |
+
});
|
381 |
+
|
382 |
+
// Add queryCommandState overrides
|
383 |
+
addCommands({
|
384 |
+
// Override justify commands
|
385 |
+
'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
|
386 |
+
return isFormatMatch('align' + command.substring(7));
|
387 |
+
},
|
388 |
+
|
389 |
+
'Bold,Italic,Underline,Strikethrough' : function(command) {
|
390 |
+
return isFormatMatch(command);
|
391 |
+
},
|
392 |
+
|
393 |
+
mceBlockQuote : function() {
|
394 |
+
return isFormatMatch('blockquote');
|
395 |
+
},
|
396 |
+
|
397 |
+
Outdent : function() {
|
398 |
+
var node;
|
399 |
+
|
400 |
+
if (settings.inline_styles) {
|
401 |
+
if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
|
402 |
+
return TRUE;
|
403 |
+
|
404 |
+
if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
|
405 |
+
return TRUE;
|
406 |
+
}
|
407 |
+
|
408 |
+
return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'));
|
409 |
+
},
|
410 |
+
|
411 |
+
'InsertUnorderedList,InsertOrderedList' : function(command) {
|
412 |
+
return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL');
|
413 |
+
}
|
414 |
+
}, 'state');
|
415 |
+
|
416 |
+
// Add queryCommandValue overrides
|
417 |
+
addCommands({
|
418 |
+
'FontSize,FontName' : function(command) {
|
419 |
+
var value = 0, parent;
|
420 |
+
|
421 |
+
if (parent = dom.getParent(selection.getNode(), 'span')) {
|
422 |
+
if (command == 'fontsize')
|
423 |
+
value = parent.style.fontSize;
|
424 |
+
else
|
425 |
+
value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
|
426 |
+
}
|
427 |
+
|
428 |
+
return value;
|
429 |
+
}
|
430 |
+
}, 'value');
|
431 |
+
|
432 |
+
// Add undo manager logic
|
433 |
+
if (settings.custom_undo_redo) {
|
434 |
+
addCommands({
|
435 |
+
Undo : function() {
|
436 |
+
editor.undoManager.undo();
|
437 |
+
},
|
438 |
+
|
439 |
+
Redo : function() {
|
440 |
+
editor.undoManager.redo();
|
441 |
+
}
|
442 |
+
});
|
443 |
+
}
|
444 |
+
};
|
445 |
})(tinymce);
|
js/tiny_mce_german/classes/EditorManager.js
CHANGED
@@ -1,453 +1,453 @@
|
|
1 |
-
/**
|
2 |
-
* EditorManager.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
/**
|
13 |
-
* @class tinymce
|
14 |
-
*/
|
15 |
-
|
16 |
-
// Shorten names
|
17 |
-
var each = tinymce.each, extend = tinymce.extend,
|
18 |
-
DOM = tinymce.DOM, Event = tinymce.dom.Event,
|
19 |
-
ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
|
20 |
-
explode = tinymce.explode,
|
21 |
-
Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0;
|
22 |
-
|
23 |
-
// Setup some URLs where the editor API is located and where the document is
|
24 |
-
tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
|
25 |
-
if (!/[\/\\]$/.test(tinymce.documentBaseURL))
|
26 |
-
tinymce.documentBaseURL += '/';
|
27 |
-
|
28 |
-
tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Absolute baseURI for the installation path of TinyMCE.
|
32 |
-
*
|
33 |
-
* @property baseURI
|
34 |
-
* @type tinymce.util.URI
|
35 |
-
*/
|
36 |
-
tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL);
|
37 |
-
|
38 |
-
// Add before unload listener
|
39 |
-
// This was required since IE was leaking memory if you added and removed beforeunload listeners
|
40 |
-
// with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
|
41 |
-
tinymce.onBeforeUnload = new Dispatcher(tinymce);
|
42 |
-
|
43 |
-
// Must be on window or IE will leak if the editor is placed in frame or iframe
|
44 |
-
Event.add(window, 'beforeunload', function(e) {
|
45 |
-
tinymce.onBeforeUnload.dispatch(tinymce, e);
|
46 |
-
});
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Fires when a new editor instance is added to the tinymce collection.
|
50 |
-
*
|
51 |
-
* @event onAddEditor
|
52 |
-
* @param {tinymce} sender TinyMCE root class/namespace.
|
53 |
-
* @param {tinymce.Editor} editor Editor instance.
|
54 |
-
*/
|
55 |
-
tinymce.onAddEditor = new Dispatcher(tinymce);
|
56 |
-
|
57 |
-
/**
|
58 |
-
* Fires when an editor instance is removed from the tinymce collection.
|
59 |
-
*
|
60 |
-
* @event onRemoveEditor
|
61 |
-
* @param {tinymce} sender TinyMCE root class/namespace.
|
62 |
-
* @param {tinymce.Editor} editor Editor instance.
|
63 |
-
*/
|
64 |
-
tinymce.onRemoveEditor = new Dispatcher(tinymce);
|
65 |
-
|
66 |
-
tinymce.EditorManager = extend(tinymce, {
|
67 |
-
/**
|
68 |
-
* Collection of editor instances.
|
69 |
-
*
|
70 |
-
* @property editors
|
71 |
-
* @type Object
|
72 |
-
*/
|
73 |
-
editors : [],
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Collection of language pack data.
|
77 |
-
*
|
78 |
-
* @property i18n
|
79 |
-
* @type Object
|
80 |
-
*/
|
81 |
-
i18n : {},
|
82 |
-
|
83 |
-
/**
|
84 |
-
* Currently active editor instance.
|
85 |
-
*
|
86 |
-
* @property activeEditor
|
87 |
-
* @type tinymce.Editor
|
88 |
-
*/
|
89 |
-
activeEditor : null,
|
90 |
-
|
91 |
-
/**
|
92 |
-
* Initializes a set of editors. This method will create a bunch of editors based in the input.
|
93 |
-
*
|
94 |
-
* @method init
|
95 |
-
* @param {Object} s Settings object to be passed to each editor instance.
|
96 |
-
*/
|
97 |
-
init : function(s) {
|
98 |
-
var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed;
|
99 |
-
|
100 |
-
function execCallback(se, n, s) {
|
101 |
-
var f = se[n];
|
102 |
-
|
103 |
-
if (!f)
|
104 |
-
return;
|
105 |
-
|
106 |
-
if (tinymce.is(f, 'string')) {
|
107 |
-
s = f.replace(/\.\w+$/, '');
|
108 |
-
s = s ? tinymce.resolve(s) : 0;
|
109 |
-
f = tinymce.resolve(f);
|
110 |
-
}
|
111 |
-
|
112 |
-
return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
|
113 |
-
};
|
114 |
-
|
115 |
-
s = extend({
|
116 |
-
theme : "simple",
|
117 |
-
language : "en"
|
118 |
-
}, s);
|
119 |
-
|
120 |
-
t.settings = s;
|
121 |
-
|
122 |
-
// Legacy call
|
123 |
-
Event.add(document, 'init', function() {
|
124 |
-
var l, co;
|
125 |
-
|
126 |
-
execCallback(s, 'onpageload');
|
127 |
-
|
128 |
-
switch (s.mode) {
|
129 |
-
case "exact":
|
130 |
-
l = s.elements || '';
|
131 |
-
|
132 |
-
if(l.length > 0) {
|
133 |
-
each(explode(l), function(v) {
|
134 |
-
if (DOM.get(v)) {
|
135 |
-
ed = new tinymce.Editor(v, s);
|
136 |
-
el.push(ed);
|
137 |
-
ed.render(1);
|
138 |
-
} else {
|
139 |
-
each(document.forms, function(f) {
|
140 |
-
each(f.elements, function(e) {
|
141 |
-
if (e.name === v) {
|
142 |
-
v = 'mce_editor_' + instanceCounter++;
|
143 |
-
DOM.setAttrib(e, 'id', v);
|
144 |
-
|
145 |
-
ed = new tinymce.Editor(v, s);
|
146 |
-
el.push(ed);
|
147 |
-
ed.render(1);
|
148 |
-
}
|
149 |
-
});
|
150 |
-
});
|
151 |
-
}
|
152 |
-
});
|
153 |
-
}
|
154 |
-
break;
|
155 |
-
|
156 |
-
case "textareas":
|
157 |
-
case "specific_textareas":
|
158 |
-
function hasClass(n, c) {
|
159 |
-
return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
|
160 |
-
};
|
161 |
-
|
162 |
-
each(DOM.select('textarea'), function(v) {
|
163 |
-
if (s.editor_deselector && hasClass(v, s.editor_deselector))
|
164 |
-
return;
|
165 |
-
|
166 |
-
if (!s.editor_selector || hasClass(v, s.editor_selector)) {
|
167 |
-
// Can we use the name
|
168 |
-
e = DOM.get(v.name);
|
169 |
-
if (!v.id && !e)
|
170 |
-
v.id = v.name;
|
171 |
-
|
172 |
-
// Generate unique name if missing or already exists
|
173 |
-
if (!v.id || t.get(v.id))
|
174 |
-
v.id = DOM.uniqueId();
|
175 |
-
|
176 |
-
ed = new tinymce.Editor(v.id, s);
|
177 |
-
el.push(ed);
|
178 |
-
ed.render(1);
|
179 |
-
}
|
180 |
-
});
|
181 |
-
break;
|
182 |
-
}
|
183 |
-
|
184 |
-
// Call onInit when all editors are initialized
|
185 |
-
if (s.oninit) {
|
186 |
-
l = co = 0;
|
187 |
-
|
188 |
-
each(el, function(ed) {
|
189 |
-
co++;
|
190 |
-
|
191 |
-
if (!ed.initialized) {
|
192 |
-
// Wait for it
|
193 |
-
ed.onInit.add(function() {
|
194 |
-
l++;
|
195 |
-
|
196 |
-
// All done
|
197 |
-
if (l == co)
|
198 |
-
execCallback(s, 'oninit');
|
199 |
-
});
|
200 |
-
} else
|
201 |
-
l++;
|
202 |
-
|
203 |
-
// All done
|
204 |
-
if (l == co)
|
205 |
-
execCallback(s, 'oninit');
|
206 |
-
});
|
207 |
-
}
|
208 |
-
});
|
209 |
-
},
|
210 |
-
|
211 |
-
/**
|
212 |
-
* Returns a editor instance by id.
|
213 |
-
*
|
214 |
-
* @method get
|
215 |
-
* @param {String/Number} id Editor instance id or index to return.
|
216 |
-
* @return {tinymce.Editor} Editor instance to return.
|
217 |
-
*/
|
218 |
-
get : function(id) {
|
219 |
-
if (id === undefined)
|
220 |
-
return this.editors;
|
221 |
-
|
222 |
-
return this.editors[id];
|
223 |
-
},
|
224 |
-
|
225 |
-
/**
|
226 |
-
* Returns a editor instance by id. This method was added for compatibility with the 2.x branch.
|
227 |
-
*
|
228 |
-
* @method getInstanceById
|
229 |
-
* @param {String} id Editor instance id to return.
|
230 |
-
* @return {tinymce.Editor} Editor instance to return.
|
231 |
-
* @deprecated Use get method instead.
|
232 |
-
* @see #get
|
233 |
-
*/
|
234 |
-
getInstanceById : function(id) {
|
235 |
-
return this.get(id);
|
236 |
-
},
|
237 |
-
|
238 |
-
/**
|
239 |
-
* Adds an editor instance to the editor collection. This will also set it as the active editor.
|
240 |
-
*
|
241 |
-
* @method add
|
242 |
-
* @param {tinymce.Editor} editor Editor instance to add to the collection.
|
243 |
-
* @return {tinymce.Editor} The same instance that got passed in.
|
244 |
-
*/
|
245 |
-
add : function(editor) {
|
246 |
-
var self = this, editors = self.editors;
|
247 |
-
|
248 |
-
// Add named and index editor instance
|
249 |
-
editors[editor.id] = editor;
|
250 |
-
editors.push(editor);
|
251 |
-
|
252 |
-
self._setActive(editor);
|
253 |
-
self.onAddEditor.dispatch(self, editor);
|
254 |
-
|
255 |
-
// #ifdef jquery
|
256 |
-
|
257 |
-
// Patch the tinymce.Editor instance with jQuery adapter logic
|
258 |
-
if (tinymce.adapter)
|
259 |
-
tinymce.adapter.patchEditor(editor);
|
260 |
-
|
261 |
-
// #endif
|
262 |
-
|
263 |
-
return editor;
|
264 |
-
},
|
265 |
-
|
266 |
-
/**
|
267 |
-
* Removes a editor instance from the collection.
|
268 |
-
*
|
269 |
-
* @method remove
|
270 |
-
* @param {tinymce.Editor} e Editor instance to remove.
|
271 |
-
* @return {tinymce.Editor} The editor that got passed in will be return if it was found otherwise null.
|
272 |
-
*/
|
273 |
-
remove : function(editor) {
|
274 |
-
var t = this, i, editors = t.editors;
|
275 |
-
|
276 |
-
// Not in the collection
|
277 |
-
if (!editors[editor.id])
|
278 |
-
return null;
|
279 |
-
|
280 |
-
delete editors[editor.id];
|
281 |
-
|
282 |
-
for (i = 0; i < editors.length; i++) {
|
283 |
-
if (editors[i] == editor) {
|
284 |
-
editors.splice(i, 1);
|
285 |
-
break;
|
286 |
-
}
|
287 |
-
}
|
288 |
-
|
289 |
-
// Select another editor since the active one was removed
|
290 |
-
if (t.activeEditor == editor)
|
291 |
-
t._setActive(editors[0]);
|
292 |
-
|
293 |
-
editor.destroy();
|
294 |
-
t.onRemoveEditor.dispatch(t, editor);
|
295 |
-
|
296 |
-
return editor;
|
297 |
-
},
|
298 |
-
|
299 |
-
/**
|
300 |
-
* Executes a specific command on the currently active editor.
|
301 |
-
*
|
302 |
-
* @method execCommand
|
303 |
-
* @param {String} c Command to perform for example Bold.
|
304 |
-
* @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
|
305 |
-
* @param {String} v Optional value parameter like for example an URL to a link.
|
306 |
-
* @return {Boolean} true/false if the command was executed or not.
|
307 |
-
*/
|
308 |
-
execCommand : function(c, u, v) {
|
309 |
-
var t = this, ed = t.get(v), w;
|
310 |
-
|
311 |
-
// Manager commands
|
312 |
-
switch (c) {
|
313 |
-
case "mceFocus":
|
314 |
-
ed.focus();
|
315 |
-
return true;
|
316 |
-
|
317 |
-
case "mceAddEditor":
|
318 |
-
case "mceAddControl":
|
319 |
-
if (!t.get(v))
|
320 |
-
new tinymce.Editor(v, t.settings).render();
|
321 |
-
|
322 |
-
return true;
|
323 |
-
|
324 |
-
case "mceAddFrameControl":
|
325 |
-
w = v.window;
|
326 |
-
|
327 |
-
// Add tinyMCE global instance and tinymce namespace to specified window
|
328 |
-
w.tinyMCE = tinyMCE;
|
329 |
-
w.tinymce = tinymce;
|
330 |
-
|
331 |
-
tinymce.DOM.doc = w.document;
|
332 |
-
tinymce.DOM.win = w;
|
333 |
-
|
334 |
-
ed = new tinymce.Editor(v.element_id, v);
|
335 |
-
ed.render();
|
336 |
-
|
337 |
-
// Fix IE memory leaks
|
338 |
-
if (tinymce.isIE) {
|
339 |
-
function clr() {
|
340 |
-
ed.destroy();
|
341 |
-
w.detachEvent('onunload', clr);
|
342 |
-
w = w.tinyMCE = w.tinymce = null; // IE leak
|
343 |
-
};
|
344 |
-
|
345 |
-
w.attachEvent('onunload', clr);
|
346 |
-
}
|
347 |
-
|
348 |
-
v.page_window = null;
|
349 |
-
|
350 |
-
return true;
|
351 |
-
|
352 |
-
case "mceRemoveEditor":
|
353 |
-
case "mceRemoveControl":
|
354 |
-
if (ed)
|
355 |
-
ed.remove();
|
356 |
-
|
357 |
-
return true;
|
358 |
-
|
359 |
-
case 'mceToggleEditor':
|
360 |
-
if (!ed) {
|
361 |
-
t.execCommand('mceAddControl', 0, v);
|
362 |
-
return true;
|
363 |
-
}
|
364 |
-
|
365 |
-
if (ed.isHidden())
|
366 |
-
ed.show();
|
367 |
-
else
|
368 |
-
ed.hide();
|
369 |
-
|
370 |
-
return true;
|
371 |
-
}
|
372 |
-
|
373 |
-
// Run command on active editor
|
374 |
-
if (t.activeEditor)
|
375 |
-
return t.activeEditor.execCommand(c, u, v);
|
376 |
-
|
377 |
-
return false;
|
378 |
-
},
|
379 |
-
|
380 |
-
/**
|
381 |
-
* Executes a command on a specific editor by id. This method was added for compatibility with the 2.x branch.
|
382 |
-
*
|
383 |
-
* @deprecated Use the execCommand method of a editor instance instead.
|
384 |
-
* @method execInstanceCommand
|
385 |
-
* @param {String} id Editor id to perform the command on.
|
386 |
-
* @param {String} c Command to perform for example Bold.
|
387 |
-
* @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
|
388 |
-
* @param {String} v Optional value parameter like for example an URL to a link.
|
389 |
-
* @return {Boolean} true/false if the command was executed or not.
|
390 |
-
*/
|
391 |
-
execInstanceCommand : function(id, c, u, v) {
|
392 |
-
var ed = this.get(id);
|
393 |
-
|
394 |
-
if (ed)
|
395 |
-
return ed.execCommand(c, u, v);
|
396 |
-
|
397 |
-
return false;
|
398 |
-
},
|
399 |
-
|
400 |
-
/**
|
401 |
-
* Calls the save method on all editor instances in the collection. This can be useful when a form is to be submitted.
|
402 |
-
*
|
403 |
-
* @method triggerSave
|
404 |
-
*/
|
405 |
-
triggerSave : function() {
|
406 |
-
each(this.editors, function(e) {
|
407 |
-
e.save();
|
408 |
-
});
|
409 |
-
},
|
410 |
-
|
411 |
-
/**
|
412 |
-
* Adds a language pack, this gets called by the loaded language files like en.js.
|
413 |
-
*
|
414 |
-
* @method addI18n
|
415 |
-
* @param {String} p Prefix for the language items. For example en.myplugin
|
416 |
-
* @param {Object} o Name/Value collection with items to add to the language group.
|
417 |
-
*/
|
418 |
-
addI18n : function(p, o) {
|
419 |
-
var lo, i18n = this.i18n;
|
420 |
-
|
421 |
-
if (!tinymce.is(p, 'string')) {
|
422 |
-
each(p, function(o, lc) {
|
423 |
-
each(o, function(o, g) {
|
424 |
-
each(o, function(o, k) {
|
425 |
-
if (g === 'common')
|
426 |
-
i18n[lc + '.' + k] = o;
|
427 |
-
else
|
428 |
-
i18n[lc + '.' + g + '.' + k] = o;
|
429 |
-
});
|
430 |
-
});
|
431 |
-
});
|
432 |
-
} else {
|
433 |
-
each(o, function(o, k) {
|
434 |
-
i18n[p + '.' + k] = o;
|
435 |
-
});
|
436 |
-
}
|
437 |
-
},
|
438 |
-
|
439 |
-
// Private methods
|
440 |
-
|
441 |
-
_setActive : function(editor) {
|
442 |
-
this.selectedInstance = this.activeEditor = editor;
|
443 |
-
}
|
444 |
-
});
|
445 |
-
})(tinymce);
|
446 |
-
|
447 |
-
/**
|
448 |
-
* Alternative name for tinymce added for 2.x compatibility.
|
449 |
-
*
|
450 |
-
* @member
|
451 |
-
* @property tinyMCE
|
452 |
-
* @type tinymce
|
453 |
-
*/
|
1 |
+
/**
|
2 |
+
* EditorManager.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
/**
|
13 |
+
* @class tinymce
|
14 |
+
*/
|
15 |
+
|
16 |
+
// Shorten names
|
17 |
+
var each = tinymce.each, extend = tinymce.extend,
|
18 |
+
DOM = tinymce.DOM, Event = tinymce.dom.Event,
|
19 |
+
ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
|
20 |
+
explode = tinymce.explode,
|
21 |
+
Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0;
|
22 |
+
|
23 |
+
// Setup some URLs where the editor API is located and where the document is
|
24 |
+
tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
|
25 |
+
if (!/[\/\\]$/.test(tinymce.documentBaseURL))
|
26 |
+
tinymce.documentBaseURL += '/';
|
27 |
+
|
28 |
+
tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Absolute baseURI for the installation path of TinyMCE.
|
32 |
+
*
|
33 |
+
* @property baseURI
|
34 |
+
* @type tinymce.util.URI
|
35 |
+
*/
|
36 |
+
tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL);
|
37 |
+
|
38 |
+
// Add before unload listener
|
39 |
+
// This was required since IE was leaking memory if you added and removed beforeunload listeners
|
40 |
+
// with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
|
41 |
+
tinymce.onBeforeUnload = new Dispatcher(tinymce);
|
42 |
+
|
43 |
+
// Must be on window or IE will leak if the editor is placed in frame or iframe
|
44 |
+
Event.add(window, 'beforeunload', function(e) {
|
45 |
+
tinymce.onBeforeUnload.dispatch(tinymce, e);
|
46 |
+
});
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Fires when a new editor instance is added to the tinymce collection.
|
50 |
+
*
|
51 |
+
* @event onAddEditor
|
52 |
+
* @param {tinymce} sender TinyMCE root class/namespace.
|
53 |
+
* @param {tinymce.Editor} editor Editor instance.
|
54 |
+
*/
|
55 |
+
tinymce.onAddEditor = new Dispatcher(tinymce);
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Fires when an editor instance is removed from the tinymce collection.
|
59 |
+
*
|
60 |
+
* @event onRemoveEditor
|
61 |
+
* @param {tinymce} sender TinyMCE root class/namespace.
|
62 |
+
* @param {tinymce.Editor} editor Editor instance.
|
63 |
+
*/
|
64 |
+
tinymce.onRemoveEditor = new Dispatcher(tinymce);
|
65 |
+
|
66 |
+
tinymce.EditorManager = extend(tinymce, {
|
67 |
+
/**
|
68 |
+
* Collection of editor instances.
|
69 |
+
*
|
70 |
+
* @property editors
|
71 |
+
* @type Object
|
72 |
+
*/
|
73 |
+
editors : [],
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Collection of language pack data.
|
77 |
+
*
|
78 |
+
* @property i18n
|
79 |
+
* @type Object
|
80 |
+
*/
|
81 |
+
i18n : {},
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Currently active editor instance.
|
85 |
+
*
|
86 |
+
* @property activeEditor
|
87 |
+
* @type tinymce.Editor
|
88 |
+
*/
|
89 |
+
activeEditor : null,
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Initializes a set of editors. This method will create a bunch of editors based in the input.
|
93 |
+
*
|
94 |
+
* @method init
|
95 |
+
* @param {Object} s Settings object to be passed to each editor instance.
|
96 |
+
*/
|
97 |
+
init : function(s) {
|
98 |
+
var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed;
|
99 |
+
|
100 |
+
function execCallback(se, n, s) {
|
101 |
+
var f = se[n];
|
102 |
+
|
103 |
+
if (!f)
|
104 |
+
return;
|
105 |
+
|
106 |
+
if (tinymce.is(f, 'string')) {
|
107 |
+
s = f.replace(/\.\w+$/, '');
|
108 |
+
s = s ? tinymce.resolve(s) : 0;
|
109 |
+
f = tinymce.resolve(f);
|
110 |
+
}
|
111 |
+
|
112 |
+
return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
|
113 |
+
};
|
114 |
+
|
115 |
+
s = extend({
|
116 |
+
theme : "simple",
|
117 |
+
language : "en"
|
118 |
+
}, s);
|
119 |
+
|
120 |
+
t.settings = s;
|
121 |
+
|
122 |
+
// Legacy call
|
123 |
+
Event.add(document, 'init', function() {
|
124 |
+
var l, co;
|
125 |
+
|
126 |
+
execCallback(s, 'onpageload');
|
127 |
+
|
128 |
+
switch (s.mode) {
|
129 |
+
case "exact":
|
130 |
+
l = s.elements || '';
|
131 |
+
|
132 |
+
if(l.length > 0) {
|
133 |
+
each(explode(l), function(v) {
|
134 |
+
if (DOM.get(v)) {
|
135 |
+
ed = new tinymce.Editor(v, s);
|
136 |
+
el.push(ed);
|
137 |
+
ed.render(1);
|
138 |
+
} else {
|
139 |
+
each(document.forms, function(f) {
|
140 |
+
each(f.elements, function(e) {
|
141 |
+
if (e.name === v) {
|
142 |
+
v = 'mce_editor_' + instanceCounter++;
|
143 |
+
DOM.setAttrib(e, 'id', v);
|
144 |
+
|
145 |
+
ed = new tinymce.Editor(v, s);
|
146 |
+
el.push(ed);
|
147 |
+
ed.render(1);
|
148 |
+
}
|
149 |
+
});
|
150 |
+
});
|
151 |
+
}
|
152 |
+
});
|
153 |
+
}
|
154 |
+
break;
|
155 |
+
|
156 |
+
case "textareas":
|
157 |
+
case "specific_textareas":
|
158 |
+
function hasClass(n, c) {
|
159 |
+
return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
|
160 |
+
};
|
161 |
+
|
162 |
+
each(DOM.select('textarea'), function(v) {
|
163 |
+
if (s.editor_deselector && hasClass(v, s.editor_deselector))
|
164 |
+
return;
|
165 |
+
|
166 |
+
if (!s.editor_selector || hasClass(v, s.editor_selector)) {
|
167 |
+
// Can we use the name
|
168 |
+
e = DOM.get(v.name);
|
169 |
+
if (!v.id && !e)
|
170 |
+
v.id = v.name;
|
171 |
+
|
172 |
+
// Generate unique name if missing or already exists
|
173 |
+
if (!v.id || t.get(v.id))
|
174 |
+
v.id = DOM.uniqueId();
|
175 |
+
|
176 |
+
ed = new tinymce.Editor(v.id, s);
|
177 |
+
el.push(ed);
|
178 |
+
ed.render(1);
|
179 |
+
}
|
180 |
+
});
|
181 |
+
break;
|
182 |
+
}
|
183 |
+
|
184 |
+
// Call onInit when all editors are initialized
|
185 |
+
if (s.oninit) {
|
186 |
+
l = co = 0;
|
187 |
+
|
188 |
+
each(el, function(ed) {
|
189 |
+
co++;
|
190 |
+
|
191 |
+
if (!ed.initialized) {
|
192 |
+
// Wait for it
|
193 |
+
ed.onInit.add(function() {
|
194 |
+
l++;
|
195 |
+
|
196 |
+
// All done
|
197 |
+
if (l == co)
|
198 |
+
execCallback(s, 'oninit');
|
199 |
+
});
|
200 |
+
} else
|
201 |
+
l++;
|
202 |
+
|
203 |
+
// All done
|
204 |
+
if (l == co)
|
205 |
+
execCallback(s, 'oninit');
|
206 |
+
});
|
207 |
+
}
|
208 |
+
});
|
209 |
+
},
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Returns a editor instance by id.
|
213 |
+
*
|
214 |
+
* @method get
|
215 |
+
* @param {String/Number} id Editor instance id or index to return.
|
216 |
+
* @return {tinymce.Editor} Editor instance to return.
|
217 |
+
*/
|
218 |
+
get : function(id) {
|
219 |
+
if (id === undefined)
|
220 |
+
return this.editors;
|
221 |
+
|
222 |
+
return this.editors[id];
|
223 |
+
},
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Returns a editor instance by id. This method was added for compatibility with the 2.x branch.
|
227 |
+
*
|
228 |
+
* @method getInstanceById
|
229 |
+
* @param {String} id Editor instance id to return.
|
230 |
+
* @return {tinymce.Editor} Editor instance to return.
|
231 |
+
* @deprecated Use get method instead.
|
232 |
+
* @see #get
|
233 |
+
*/
|
234 |
+
getInstanceById : function(id) {
|
235 |
+
return this.get(id);
|
236 |
+
},
|
237 |
+
|
238 |
+
/**
|
239 |
+
* Adds an editor instance to the editor collection. This will also set it as the active editor.
|
240 |
+
*
|
241 |
+
* @method add
|
242 |
+
* @param {tinymce.Editor} editor Editor instance to add to the collection.
|
243 |
+
* @return {tinymce.Editor} The same instance that got passed in.
|
244 |
+
*/
|
245 |
+
add : function(editor) {
|
246 |
+
var self = this, editors = self.editors;
|
247 |
+
|
248 |
+
// Add named and index editor instance
|
249 |
+
editors[editor.id] = editor;
|
250 |
+
editors.push(editor);
|
251 |
+
|
252 |
+
self._setActive(editor);
|
253 |
+
self.onAddEditor.dispatch(self, editor);
|
254 |
+
|
255 |
+
// #ifdef jquery
|
256 |
+
|
257 |
+
// Patch the tinymce.Editor instance with jQuery adapter logic
|
258 |
+
if (tinymce.adapter)
|
259 |
+
tinymce.adapter.patchEditor(editor);
|
260 |
+
|
261 |
+
// #endif
|
262 |
+
|
263 |
+
return editor;
|
264 |
+
},
|
265 |
+
|
266 |
+
/**
|
267 |
+
* Removes a editor instance from the collection.
|
268 |
+
*
|
269 |
+
* @method remove
|
270 |
+
* @param {tinymce.Editor} e Editor instance to remove.
|
271 |
+
* @return {tinymce.Editor} The editor that got passed in will be return if it was found otherwise null.
|
272 |
+
*/
|
273 |
+
remove : function(editor) {
|
274 |
+
var t = this, i, editors = t.editors;
|
275 |
+
|
276 |
+
// Not in the collection
|
277 |
+
if (!editors[editor.id])
|
278 |
+
return null;
|
279 |
+
|
280 |
+
delete editors[editor.id];
|
281 |
+
|
282 |
+
for (i = 0; i < editors.length; i++) {
|
283 |
+
if (editors[i] == editor) {
|
284 |
+
editors.splice(i, 1);
|
285 |
+
break;
|
286 |
+
}
|
287 |
+
}
|
288 |
+
|
289 |
+
// Select another editor since the active one was removed
|
290 |
+
if (t.activeEditor == editor)
|
291 |
+
t._setActive(editors[0]);
|
292 |
+
|
293 |
+
editor.destroy();
|
294 |
+
t.onRemoveEditor.dispatch(t, editor);
|
295 |
+
|
296 |
+
return editor;
|
297 |
+
},
|
298 |
+
|
299 |
+
/**
|
300 |
+
* Executes a specific command on the currently active editor.
|
301 |
+
*
|
302 |
+
* @method execCommand
|
303 |
+
* @param {String} c Command to perform for example Bold.
|
304 |
+
* @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
|
305 |
+
* @param {String} v Optional value parameter like for example an URL to a link.
|
306 |
+
* @return {Boolean} true/false if the command was executed or not.
|
307 |
+
*/
|
308 |
+
execCommand : function(c, u, v) {
|
309 |
+
var t = this, ed = t.get(v), w;
|
310 |
+
|
311 |
+
// Manager commands
|
312 |
+
switch (c) {
|
313 |
+
case "mceFocus":
|
314 |
+
ed.focus();
|
315 |
+
return true;
|
316 |
+
|
317 |
+
case "mceAddEditor":
|
318 |
+
case "mceAddControl":
|
319 |
+
if (!t.get(v))
|
320 |
+
new tinymce.Editor(v, t.settings).render();
|
321 |
+
|
322 |
+
return true;
|
323 |
+
|
324 |
+
case "mceAddFrameControl":
|
325 |
+
w = v.window;
|
326 |
+
|
327 |
+
// Add tinyMCE global instance and tinymce namespace to specified window
|
328 |
+
w.tinyMCE = tinyMCE;
|
329 |
+
w.tinymce = tinymce;
|
330 |
+
|
331 |
+
tinymce.DOM.doc = w.document;
|
332 |
+
tinymce.DOM.win = w;
|
333 |
+
|
334 |
+
ed = new tinymce.Editor(v.element_id, v);
|
335 |
+
ed.render();
|
336 |
+
|
337 |
+
// Fix IE memory leaks
|
338 |
+
if (tinymce.isIE) {
|
339 |
+
function clr() {
|
340 |
+
ed.destroy();
|
341 |
+
w.detachEvent('onunload', clr);
|
342 |
+
w = w.tinyMCE = w.tinymce = null; // IE leak
|
343 |
+
};
|
344 |
+
|
345 |
+
w.attachEvent('onunload', clr);
|
346 |
+
}
|
347 |
+
|
348 |
+
v.page_window = null;
|
349 |
+
|
350 |
+
return true;
|
351 |
+
|
352 |
+
case "mceRemoveEditor":
|
353 |
+
case "mceRemoveControl":
|
354 |
+
if (ed)
|
355 |
+
ed.remove();
|
356 |
+
|
357 |
+
return true;
|
358 |
+
|
359 |
+
case 'mceToggleEditor':
|
360 |
+
if (!ed) {
|
361 |
+
t.execCommand('mceAddControl', 0, v);
|
362 |
+
return true;
|
363 |
+
}
|
364 |
+
|
365 |
+
if (ed.isHidden())
|
366 |
+
ed.show();
|
367 |
+
else
|
368 |
+
ed.hide();
|
369 |
+
|
370 |
+
return true;
|
371 |
+
}
|
372 |
+
|
373 |
+
// Run command on active editor
|
374 |
+
if (t.activeEditor)
|
375 |
+
return t.activeEditor.execCommand(c, u, v);
|
376 |
+
|
377 |
+
return false;
|
378 |
+
},
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Executes a command on a specific editor by id. This method was added for compatibility with the 2.x branch.
|
382 |
+
*
|
383 |
+
* @deprecated Use the execCommand method of a editor instance instead.
|
384 |
+
* @method execInstanceCommand
|
385 |
+
* @param {String} id Editor id to perform the command on.
|
386 |
+
* @param {String} c Command to perform for example Bold.
|
387 |
+
* @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
|
388 |
+
* @param {String} v Optional value parameter like for example an URL to a link.
|
389 |
+
* @return {Boolean} true/false if the command was executed or not.
|
390 |
+
*/
|
391 |
+
execInstanceCommand : function(id, c, u, v) {
|
392 |
+
var ed = this.get(id);
|
393 |
+
|
394 |
+
if (ed)
|
395 |
+
return ed.execCommand(c, u, v);
|
396 |
+
|
397 |
+
return false;
|
398 |
+
},
|
399 |
+
|
400 |
+
/**
|
401 |
+
* Calls the save method on all editor instances in the collection. This can be useful when a form is to be submitted.
|
402 |
+
*
|
403 |
+
* @method triggerSave
|
404 |
+
*/
|
405 |
+
triggerSave : function() {
|
406 |
+
each(this.editors, function(e) {
|
407 |
+
e.save();
|
408 |
+
});
|
409 |
+
},
|
410 |
+
|
411 |
+
/**
|
412 |
+
* Adds a language pack, this gets called by the loaded language files like en.js.
|
413 |
+
*
|
414 |
+
* @method addI18n
|
415 |
+
* @param {String} p Prefix for the language items. For example en.myplugin
|
416 |
+
* @param {Object} o Name/Value collection with items to add to the language group.
|
417 |
+
*/
|
418 |
+
addI18n : function(p, o) {
|
419 |
+
var lo, i18n = this.i18n;
|
420 |
+
|
421 |
+
if (!tinymce.is(p, 'string')) {
|
422 |
+
each(p, function(o, lc) {
|
423 |
+
each(o, function(o, g) {
|
424 |
+
each(o, function(o, k) {
|
425 |
+
if (g === 'common')
|
426 |
+
i18n[lc + '.' + k] = o;
|
427 |
+
else
|
428 |
+
i18n[lc + '.' + g + '.' + k] = o;
|
429 |
+
});
|
430 |
+
});
|
431 |
+
});
|
432 |
+
} else {
|
433 |
+
each(o, function(o, k) {
|
434 |
+
i18n[p + '.' + k] = o;
|
435 |
+
});
|
436 |
+
}
|
437 |
+
},
|
438 |
+
|
439 |
+
// Private methods
|
440 |
+
|
441 |
+
_setActive : function(editor) {
|
442 |
+
this.selectedInstance = this.activeEditor = editor;
|
443 |
+
}
|
444 |
+
});
|
445 |
+
})(tinymce);
|
446 |
+
|
447 |
+
/**
|
448 |
+
* Alternative name for tinymce added for 2.x compatibility.
|
449 |
+
*
|
450 |
+
* @member
|
451 |
+
* @property tinyMCE
|
452 |
+
* @type tinymce
|
453 |
+
*/
|
js/tiny_mce_german/classes/ForceBlocks.js
CHANGED
@@ -1,751 +1,751 @@
|
|
1 |
-
/**
|
2 |
-
* ForceBlocks.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
// Shorten names
|
13 |
-
var Event = tinymce.dom.Event,
|
14 |
-
isIE = tinymce.isIE,
|
15 |
-
isGecko = tinymce.isGecko,
|
16 |
-
isOpera = tinymce.isOpera,
|
17 |
-
each = tinymce.each,
|
18 |
-
extend = tinymce.extend,
|
19 |
-
TRUE = true,
|
20 |
-
FALSE = false;
|
21 |
-
|
22 |
-
function cloneFormats(node) {
|
23 |
-
var clone, temp, inner;
|
24 |
-
|
25 |
-
do {
|
26 |
-
if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
|
27 |
-
if (clone) {
|
28 |
-
temp = node.cloneNode(false);
|
29 |
-
temp.appendChild(clone);
|
30 |
-
clone = temp;
|
31 |
-
} else {
|
32 |
-
clone = inner = node.cloneNode(false);
|
33 |
-
}
|
34 |
-
|
35 |
-
clone.removeAttribute('id');
|
36 |
-
}
|
37 |
-
} while (node = node.parentNode);
|
38 |
-
|
39 |
-
if (clone)
|
40 |
-
return {wrapper : clone, inner : inner};
|
41 |
-
};
|
42 |
-
|
43 |
-
// Checks if the selection/caret is at the end of the specified block element
|
44 |
-
function isAtEnd(rng, par) {
|
45 |
-
var rng2 = par.ownerDocument.createRange();
|
46 |
-
|
47 |
-
rng2.setStart(rng.endContainer, rng.endOffset);
|
48 |
-
rng2.setEndAfter(par);
|
49 |
-
|
50 |
-
// Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element
|
51 |
-
return rng2.cloneContents().textContent.length == 0;
|
52 |
-
};
|
53 |
-
|
54 |
-
function isEmpty(n) {
|
55 |
-
n = n.innerHTML;
|
56 |
-
|
57 |
-
n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars
|
58 |
-
n = n.replace(/<[^>]+>/g, ''); // Remove all tags
|
59 |
-
|
60 |
-
return n.replace(/[ \u00a0\t\r\n]+/g, '') == '';
|
61 |
-
};
|
62 |
-
|
63 |
-
function splitList(selection, dom, li) {
|
64 |
-
var listBlock, block;
|
65 |
-
|
66 |
-
if (isEmpty(li)) {
|
67 |
-
listBlock = dom.getParent(li, 'ul,ol');
|
68 |
-
|
69 |
-
if (!dom.getParent(listBlock.parentNode, 'ul,ol')) {
|
70 |
-
dom.split(listBlock, li);
|
71 |
-
block = dom.create('p', 0, '<br _mce_bogus="1" />');
|
72 |
-
dom.replace(block, li);
|
73 |
-
selection.select(block, 1);
|
74 |
-
}
|
75 |
-
|
76 |
-
return FALSE;
|
77 |
-
}
|
78 |
-
|
79 |
-
return TRUE;
|
80 |
-
};
|
81 |
-
|
82 |
-
/**
|
83 |
-
* This is a internal class and no method in this class should be called directly form the out side.
|
84 |
-
*/
|
85 |
-
tinymce.create('tinymce.ForceBlocks', {
|
86 |
-
ForceBlocks : function(ed) {
|
87 |
-
var t = this, s = ed.settings, elm;
|
88 |
-
|
89 |
-
t.editor = ed;
|
90 |
-
t.dom = ed.dom;
|
91 |
-
elm = (s.forced_root_block || 'p').toLowerCase();
|
92 |
-
s.element = elm.toUpperCase();
|
93 |
-
|
94 |
-
ed.onPreInit.add(t.setup, t);
|
95 |
-
|
96 |
-
t.reOpera = new RegExp('(\\u00a0| | )<\/' + elm + '>', 'gi');
|
97 |
-
t.rePadd = new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g, elm), 'gi');
|
98 |
-
t.reNbsp2BR1 = new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi');
|
99 |
-
t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%p>'.replace(/%p/g, elm), 'gi');
|
100 |
-
t.reBR2Nbsp = new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');
|
101 |
-
|
102 |
-
function padd(ed, o) {
|
103 |
-
if (isOpera)
|
104 |
-
o.content = o.content.replace(t.reOpera, '</' + elm + '>');
|
105 |
-
|
106 |
-
o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0</' + elm + '>');
|
107 |
-
|
108 |
-
if (!isIE && !isOpera && o.set) {
|
109 |
-
// Use instead of BR in padded paragraphs
|
110 |
-
o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2><br /></' + elm + '>');
|
111 |
-
o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2><br /></' + elm + '>');
|
112 |
-
} else
|
113 |
-
o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0</' + elm + '>');
|
114 |
-
};
|
115 |
-
|
116 |
-
ed.onBeforeSetContent.add(padd);
|
117 |
-
ed.onPostProcess.add(padd);
|
118 |
-
|
119 |
-
if (s.forced_root_block) {
|
120 |
-
ed.onInit.add(t.forceRoots, t);
|
121 |
-
ed.onSetContent.add(t.forceRoots, t);
|
122 |
-
ed.onBeforeGetContent.add(t.forceRoots, t);
|
123 |
-
}
|
124 |
-
},
|
125 |
-
|
126 |
-
setup : function() {
|
127 |
-
var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection;
|
128 |
-
|
129 |
-
// Force root blocks when typing and when getting output
|
130 |
-
if (s.forced_root_block) {
|
131 |
-
ed.onBeforeExecCommand.add(t.forceRoots, t);
|
132 |
-
ed.onKeyUp.add(t.forceRoots, t);
|
133 |
-
ed.onPreProcess.add(t.forceRoots, t);
|
134 |
-
}
|
135 |
-
|
136 |
-
if (s.force_br_newlines) {
|
137 |
-
// Force IE to produce BRs on enter
|
138 |
-
if (isIE) {
|
139 |
-
ed.onKeyPress.add(function(ed, e) {
|
140 |
-
var n;
|
141 |
-
|
142 |
-
if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') {
|
143 |
-
selection.setContent('<br id="__" /> ', {format : 'raw'});
|
144 |
-
n = dom.get('__');
|
145 |
-
n.removeAttribute('id');
|
146 |
-
selection.select(n);
|
147 |
-
selection.collapse();
|
148 |
-
return Event.cancel(e);
|
149 |
-
}
|
150 |
-
});
|
151 |
-
}
|
152 |
-
}
|
153 |
-
|
154 |
-
if (s.force_p_newlines) {
|
155 |
-
if (!isIE) {
|
156 |
-
ed.onKeyPress.add(function(ed, e) {
|
157 |
-
if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e))
|
158 |
-
Event.cancel(e);
|
159 |
-
});
|
160 |
-
} else {
|
161 |
-
// Ungly hack to for IE to preserve the formatting when you press
|
162 |
-
// enter at the end of a block element with formatted contents
|
163 |
-
// This logic overrides the browsers default logic with
|
164 |
-
// custom logic that enables us to control the output
|
165 |
-
tinymce.addUnload(function() {
|
166 |
-
t._previousFormats = 0; // Fix IE leak
|
167 |
-
});
|
168 |
-
|
169 |
-
ed.onKeyPress.add(function(ed, e) {
|
170 |
-
t._previousFormats = 0;
|
171 |
-
|
172 |
-
// Clone the current formats, this will later be applied to the new block contents
|
173 |
-
if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles)
|
174 |
-
t._previousFormats = cloneFormats(ed.selection.getStart());
|
175 |
-
});
|
176 |
-
|
177 |
-
ed.onKeyUp.add(function(ed, e) {
|
178 |
-
// Let IE break the element and the wrap the new caret location in the previous formats
|
179 |
-
if (e.keyCode == 13 && !e.shiftKey) {
|
180 |
-
var parent = ed.selection.getStart(), fmt = t._previousFormats;
|
181 |
-
|
182 |
-
// Parent is an empty block
|
183 |
-
if (!parent.hasChildNodes()) {
|
184 |
-
parent = dom.getParent(parent, dom.isBlock);
|
185 |
-
|
186 |
-
if (parent) {
|
187 |
-
parent.innerHTML = '';
|
188 |
-
|
189 |
-
if (t._previousFormats) {
|
190 |
-
parent.appendChild(fmt.wrapper);
|
191 |
-
fmt.inner.innerHTML = '\uFEFF';
|
192 |
-
} else
|
193 |
-
parent.innerHTML = '\uFEFF';
|
194 |
-
|
195 |
-
selection.select(parent, 1);
|
196 |
-
ed.getDoc().execCommand('Delete', false, null);
|
197 |
-
}
|
198 |
-
}
|
199 |
-
}
|
200 |
-
});
|
201 |
-
}
|
202 |
-
|
203 |
-
if (isGecko) {
|
204 |
-
ed.onKeyDown.add(function(ed, e) {
|
205 |
-
if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey)
|
206 |
-
t.backspaceDelete(e, e.keyCode == 8);
|
207 |
-
});
|
208 |
-
}
|
209 |
-
}
|
210 |
-
|
211 |
-
// Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973
|
212 |
-
if (tinymce.isWebKit) {
|
213 |
-
function insertBr(ed) {
|
214 |
-
var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h;
|
215 |
-
|
216 |
-
// Insert BR element
|
217 |
-
rng.insertNode(br = dom.create('br'));
|
218 |
-
|
219 |
-
// Place caret after BR
|
220 |
-
rng.setStartAfter(br);
|
221 |
-
rng.setEndAfter(br);
|
222 |
-
selection.setRng(rng);
|
223 |
-
|
224 |
-
// Could not place caret after BR then insert an nbsp entity and move the caret
|
225 |
-
if (selection.getSel().focusNode == br.previousSibling) {
|
226 |
-
selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));
|
227 |
-
selection.collapse(TRUE);
|
228 |
-
}
|
229 |
-
|
230 |
-
// Create a temporary DIV after the BR and get the position as it
|
231 |
-
// seems like getPos() returns 0 for text nodes and BR elements.
|
232 |
-
dom.insertAfter(div, br);
|
233 |
-
divYPos = dom.getPos(div).y;
|
234 |
-
dom.remove(div);
|
235 |
-
|
236 |
-
// Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
|
237 |
-
if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port.
|
238 |
-
ed.getWin().scrollTo(0, divYPos);
|
239 |
-
};
|
240 |
-
|
241 |
-
ed.onKeyPress.add(function(ed, e) {
|
242 |
-
if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) {
|
243 |
-
insertBr(ed);
|
244 |
-
Event.cancel(e);
|
245 |
-
}
|
246 |
-
});
|
247 |
-
}
|
248 |
-
|
249 |
-
// Padd empty inline elements within block elements
|
250 |
-
// For example: <p><strong><em></em></strong></p> becomes <p><strong><em> </em></strong></p>
|
251 |
-
ed.onPreProcess.add(function(ed, o) {
|
252 |
-
each(dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) {
|
253 |
-
if (isEmpty(p)) {
|
254 |
-
each(dom.select('span,em,strong,b,i', o.node), function(n) {
|
255 |
-
if (!n.hasChildNodes()) {
|
256 |
-
n.appendChild(ed.getDoc().createTextNode('\u00a0'));
|
257 |
-
return FALSE; // Break the loop one padding is enough
|
258 |
-
}
|
259 |
-
});
|
260 |
-
}
|
261 |
-
});
|
262 |
-
});
|
263 |
-
|
264 |
-
// IE specific fixes
|
265 |
-
if (isIE) {
|
266 |
-
// Replaces IE:s auto generated paragraphs with the specified element name
|
267 |
-
if (s.element != 'P') {
|
268 |
-
ed.onKeyPress.add(function(ed, e) {
|
269 |
-
t.lastElm = selection.getNode().nodeName;
|
270 |
-
});
|
271 |
-
|
272 |
-
ed.onKeyUp.add(function(ed, e) {
|
273 |
-
var bl, n = selection.getNode(), b = ed.getBody();
|
274 |
-
|
275 |
-
if (b.childNodes.length === 1 && n.nodeName == 'P') {
|
276 |
-
n = dom.rename(n, s.element);
|
277 |
-
selection.select(n);
|
278 |
-
selection.collapse();
|
279 |
-
ed.nodeChanged();
|
280 |
-
} else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {
|
281 |
-
bl = dom.getParent(n, 'p');
|
282 |
-
|
283 |
-
if (bl) {
|
284 |
-
dom.rename(bl, s.element);
|
285 |
-
ed.nodeChanged();
|
286 |
-
}
|
287 |
-
}
|
288 |
-
});
|
289 |
-
}
|
290 |
-
}
|
291 |
-
},
|
292 |
-
|
293 |
-
find : function(n, t, s) {
|
294 |
-
var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1;
|
295 |
-
|
296 |
-
while (n = w.nextNode()) {
|
297 |
-
c++;
|
298 |
-
|
299 |
-
// Index by node
|
300 |
-
if (t == 0 && n == s)
|
301 |
-
return c;
|
302 |
-
|
303 |
-
// Node by index
|
304 |
-
if (t == 1 && c == s)
|
305 |
-
return n;
|
306 |
-
}
|
307 |
-
|
308 |
-
return -1;
|
309 |
-
},
|
310 |
-
|
311 |
-
forceRoots : function(ed, e) {
|
312 |
-
var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF;
|
313 |
-
var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid;
|
314 |
-
|
315 |
-
// Fix for bug #1863847
|
316 |
-
//if (e && e.keyCode == 13)
|
317 |
-
// return TRUE;
|
318 |
-
|
319 |
-
// Wrap non blocks into blocks
|
320 |
-
for (i = nl.length - 1; i >= 0; i--) {
|
321 |
-
nx = nl[i];
|
322 |
-
|
323 |
-
// Ignore internal elements
|
324 |
-
if (nx.nodeType === 1 && nx.getAttribute('_mce_type')) {
|
325 |
-
bl = null;
|
326 |
-
continue;
|
327 |
-
}
|
328 |
-
|
329 |
-
// Is text or non block element
|
330 |
-
if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) {
|
331 |
-
if (!bl) {
|
332 |
-
// Create new block but ignore whitespace
|
333 |
-
if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) {
|
334 |
-
// Store selection
|
335 |
-
if (si == -2 && r) {
|
336 |
-
if (!isIE) {
|
337 |
-
// If selection is element then mark it
|
338 |
-
if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) {
|
339 |
-
// Save the id of the selected element
|
340 |
-
eid = n.getAttribute("id");
|
341 |
-
n.setAttribute("id", "__mce");
|
342 |
-
} else {
|
343 |
-
// If element is inside body, might not be the case in contentEdiable mode
|
344 |
-
if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) {
|
345 |
-
so = r.startOffset;
|
346 |
-
eo = r.endOffset;
|
347 |
-
si = t.find(b, 0, r.startContainer);
|
348 |
-
ei = t.find(b, 0, r.endContainer);
|
349 |
-
}
|
350 |
-
}
|
351 |
-
} else {
|
352 |
-
// Force control range into text range
|
353 |
-
if (r.item) {
|
354 |
-
tr = d.body.createTextRange();
|
355 |
-
tr.moveToElementText(r.item(0));
|
356 |
-
r = tr;
|
357 |
-
}
|
358 |
-
|
359 |
-
tr = d.body.createTextRange();
|
360 |
-
tr.moveToElementText(b);
|
361 |
-
tr.collapse(1);
|
362 |
-
bp = tr.move('character', c) * -1;
|
363 |
-
|
364 |
-
tr = r.duplicate();
|
365 |
-
tr.collapse(1);
|
366 |
-
sp = tr.move('character', c) * -1;
|
367 |
-
|
368 |
-
tr = r.duplicate();
|
369 |
-
tr.collapse(0);
|
370 |
-
le = (tr.move('character', c) * -1) - sp;
|
371 |
-
|
372 |
-
si = sp - bp;
|
373 |
-
ei = le;
|
374 |
-
}
|
375 |
-
}
|
376 |
-
|
377 |
-
// Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE
|
378 |
-
// See: http://support.microsoft.com/kb/829907
|
379 |
-
bl = ed.dom.create(ed.settings.forced_root_block);
|
380 |
-
nx.parentNode.replaceChild(bl, nx);
|
381 |
-
bl.appendChild(nx);
|
382 |
-
}
|
383 |
-
} else {
|
384 |
-
if (bl.hasChildNodes())
|
385 |
-
bl.insertBefore(nx, bl.firstChild);
|
386 |
-
else
|
387 |
-
bl.appendChild(nx);
|
388 |
-
}
|
389 |
-
} else
|
390 |
-
bl = null; // Time to create new block
|
391 |
-
}
|
392 |
-
|
393 |
-
// Restore selection
|
394 |
-
if (si != -2) {
|
395 |
-
if (!isIE) {
|
396 |
-
bl = b.getElementsByTagName(ed.settings.element)[0];
|
397 |
-
r = d.createRange();
|
398 |
-
|
399 |
-
// Select last location or generated block
|
400 |
-
if (si != -1)
|
401 |
-
r.setStart(t.find(b, 1, si), so);
|
402 |
-
else
|
403 |
-
r.setStart(bl, 0);
|
404 |
-
|
405 |
-
// Select last location or generated block
|
406 |
-
if (ei != -1)
|
407 |
-
r.setEnd(t.find(b, 1, ei), eo);
|
408 |
-
else
|
409 |
-
r.setEnd(bl, 0);
|
410 |
-
|
411 |
-
if (s) {
|
412 |
-
s.removeAllRanges();
|
413 |
-
s.addRange(r);
|
414 |
-
}
|
415 |
-
} else {
|
416 |
-
try {
|
417 |
-
r = s.createRange();
|
418 |
-
r.moveToElementText(b);
|
419 |
-
r.collapse(1);
|
420 |
-
r.moveStart('character', si);
|
421 |
-
r.moveEnd('character', ei);
|
422 |
-
r.select();
|
423 |
-
} catch (ex) {
|
424 |
-
// Ignore
|
425 |
-
}
|
426 |
-
}
|
427 |
-
} else if (!isIE && (n = ed.dom.get('__mce'))) {
|
428 |
-
// Restore the id of the selected element
|
429 |
-
if (eid)
|
430 |
-
n.setAttribute('id', eid);
|
431 |
-
else
|
432 |
-
n.removeAttribute('id');
|
433 |
-
|
434 |
-
// Move caret before selected element
|
435 |
-
r = d.createRange();
|
436 |
-
r.setStartBefore(n);
|
437 |
-
r.setEndBefore(n);
|
438 |
-
se.setRng(r);
|
439 |
-
}
|
440 |
-
},
|
441 |
-
|
442 |
-
getParentBlock : function(n) {
|
443 |
-
var d = this.dom;
|
444 |
-
|
445 |
-
return d.getParent(n, d.isBlock);
|
446 |
-
},
|
447 |
-
|
448 |
-
insertPara : function(e) {
|
449 |
-
var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body;
|
450 |
-
var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car;
|
451 |
-
|
452 |
-
// If root blocks are forced then use Operas default behavior since it's really good
|
453 |
-
// Removed due to bug: #1853816
|
454 |
-
// if (se.forced_root_block && isOpera)
|
455 |
-
// return TRUE;
|
456 |
-
|
457 |
-
// Setup before range
|
458 |
-
rb = d.createRange();
|
459 |
-
|
460 |
-
// If is before the first block element and in body, then move it into first block element
|
461 |
-
rb.setStart(s.anchorNode, s.anchorOffset);
|
462 |
-
rb.collapse(TRUE);
|
463 |
-
|
464 |
-
// Setup after range
|
465 |
-
ra = d.createRange();
|
466 |
-
|
467 |
-
// If is before the first block element and in body, then move it into first block element
|
468 |
-
ra.setStart(s.focusNode, s.focusOffset);
|
469 |
-
ra.collapse(TRUE);
|
470 |
-
|
471 |
-
// Setup start/end points
|
472 |
-
dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;
|
473 |
-
sn = dir ? s.anchorNode : s.focusNode;
|
474 |
-
so = dir ? s.anchorOffset : s.focusOffset;
|
475 |
-
en = dir ? s.focusNode : s.anchorNode;
|
476 |
-
eo = dir ? s.focusOffset : s.anchorOffset;
|
477 |
-
|
478 |
-
// If selection is in empty table cell
|
479 |
-
if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {
|
480 |
-
if (sn.firstChild.nodeName == 'BR')
|
481 |
-
dom.remove(sn.firstChild); // Remove BR
|
482 |
-
|
483 |
-
// Create two new block elements
|
484 |
-
if (sn.childNodes.length == 0) {
|
485 |
-
ed.dom.add(sn, se.element, null, '<br />');
|
486 |
-
aft = ed.dom.add(sn, se.element, null, '<br />');
|
487 |
-
} else {
|
488 |
-
n = sn.innerHTML;
|
489 |
-
sn.innerHTML = '';
|
490 |
-
ed.dom.add(sn, se.element, null, n);
|
491 |
-
aft = ed.dom.add(sn, se.element, null, '<br />');
|
492 |
-
}
|
493 |
-
|
494 |
-
// Move caret into the last one
|
495 |
-
r = d.createRange();
|
496 |
-
r.selectNodeContents(aft);
|
497 |
-
r.collapse(1);
|
498 |
-
ed.selection.setRng(r);
|
499 |
-
|
500 |
-
return FALSE;
|
501 |
-
}
|
502 |
-
|
503 |
-
// If the caret is in an invalid location in FF we need to move it into the first block
|
504 |
-
if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) {
|
505 |
-
sn = en = sn.firstChild;
|
506 |
-
so = eo = 0;
|
507 |
-
rb = d.createRange();
|
508 |
-
rb.setStart(sn, 0);
|
509 |
-
ra = d.createRange();
|
510 |
-
ra.setStart(en, 0);
|
511 |
-
}
|
512 |
-
|
513 |
-
// Never use body as start or end node
|
514 |
-
sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
|
515 |
-
sn = sn.nodeName == "BODY" ? sn.firstChild : sn;
|
516 |
-
en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
|
517 |
-
en = en.nodeName == "BODY" ? en.firstChild : en;
|
518 |
-
|
519 |
-
// Get start and end blocks
|
520 |
-
sb = t.getParentBlock(sn);
|
521 |
-
eb = t.getParentBlock(en);
|
522 |
-
bn = sb ? sb.nodeName : se.element; // Get block name to create
|
523 |
-
|
524 |
-
// Return inside list use default browser behavior
|
525 |
-
if (n = t.dom.getParent(sb, 'li,pre')) {
|
526 |
-
if (n.nodeName == 'LI')
|
527 |
-
return splitList(ed.selection, t.dom, n);
|
528 |
-
|
529 |
-
return TRUE;
|
530 |
-
}
|
531 |
-
|
532 |
-
// If caption or absolute layers then always generate new blocks within
|
533 |
-
if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
|
534 |
-
bn = se.element;
|
535 |
-
sb = null;
|
536 |
-
}
|
537 |
-
|
538 |
-
// If caption or absolute layers then always generate new blocks within
|
539 |
-
if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
|
540 |
-
bn = se.element;
|
541 |
-
eb = null;
|
542 |
-
}
|
543 |
-
|
544 |
-
// Use P instead
|
545 |
-
if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) {
|
546 |
-
bn = se.element;
|
547 |
-
sb = eb = null;
|
548 |
-
}
|
549 |
-
|
550 |
-
// Setup new before and after blocks
|
551 |
-
bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn);
|
552 |
-
aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn);
|
553 |
-
|
554 |
-
// Remove id from after clone
|
555 |
-
aft.removeAttribute('id');
|
556 |
-
|
557 |
-
// Is header and cursor is at the end, then force paragraph under
|
558 |
-
if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb))
|
559 |
-
aft = ed.dom.create(se.element);
|
560 |
-
|
561 |
-
// Find start chop node
|
562 |
-
n = sc = sn;
|
563 |
-
do {
|
564 |
-
if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
|
565 |
-
break;
|
566 |
-
|
567 |
-
sc = n;
|
568 |
-
} while ((n = n.previousSibling ? n.previousSibling : n.parentNode));
|
569 |
-
|
570 |
-
// Find end chop node
|
571 |
-
n = ec = en;
|
572 |
-
do {
|
573 |
-
if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
|
574 |
-
break;
|
575 |
-
|
576 |
-
ec = n;
|
577 |
-
} while ((n = n.nextSibling ? n.nextSibling : n.parentNode));
|
578 |
-
|
579 |
-
// Place first chop part into before block element
|
580 |
-
if (sc.nodeName == bn)
|
581 |
-
rb.setStart(sc, 0);
|
582 |
-
else
|
583 |
-
rb.setStartBefore(sc);
|
584 |
-
|
585 |
-
rb.setEnd(sn, so);
|
586 |
-
bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
|
587 |
-
|
588 |
-
// Place secnd chop part within new block element
|
589 |
-
try {
|
590 |
-
ra.setEndAfter(ec);
|
591 |
-
} catch(ex) {
|
592 |
-
//console.debug(s.focusNode, s.focusOffset);
|
593 |
-
}
|
594 |
-
|
595 |
-
ra.setStart(en, eo);
|
596 |
-
aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
|
597 |
-
|
598 |
-
// Create range around everything
|
599 |
-
r = d.createRange();
|
600 |
-
if (!sc.previousSibling && sc.parentNode.nodeName == bn) {
|
601 |
-
r.setStartBefore(sc.parentNode);
|
602 |
-
} else {
|
603 |
-
if (rb.startContainer.nodeName == bn && rb.startOffset == 0)
|
604 |
-
r.setStartBefore(rb.startContainer);
|
605 |
-
else
|
606 |
-
r.setStart(rb.startContainer, rb.startOffset);
|
607 |
-
}
|
608 |
-
|
609 |
-
if (!ec.nextSibling && ec.parentNode.nodeName == bn)
|
610 |
-
r.setEndAfter(ec.parentNode);
|
611 |
-
else
|
612 |
-
r.setEnd(ra.endContainer, ra.endOffset);
|
613 |
-
|
614 |
-
// Delete and replace it with new block elements
|
615 |
-
r.deleteContents();
|
616 |
-
|
617 |
-
if (isOpera)
|
618 |
-
ed.getWin().scrollTo(0, vp.y);
|
619 |
-
|
620 |
-
// Never wrap blocks in blocks
|
621 |
-
if (bef.firstChild && bef.firstChild.nodeName == bn)
|
622 |
-
bef.innerHTML = bef.firstChild.innerHTML;
|
623 |
-
|
624 |
-
if (aft.firstChild && aft.firstChild.nodeName == bn)
|
625 |
-
aft.innerHTML = aft.firstChild.innerHTML;
|
626 |
-
|
627 |
-
// Padd empty blocks
|
628 |
-
if (isEmpty(bef))
|
629 |
-
bef.innerHTML = '<br />';
|
630 |
-
|
631 |
-
function appendStyles(e, en) {
|
632 |
-
var nl = [], nn, n, i;
|
633 |
-
|
634 |
-
e.innerHTML = '';
|
635 |
-
|
636 |
-
// Make clones of style elements
|
637 |
-
if (se.keep_styles) {
|
638 |
-
n = en;
|
639 |
-
do {
|
640 |
-
// We only want style specific elements
|
641 |
-
if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) {
|
642 |
-
nn = n.cloneNode(FALSE);
|
643 |
-
dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique
|
644 |
-
nl.push(nn);
|
645 |
-
}
|
646 |
-
} while (n = n.parentNode);
|
647 |
-
}
|
648 |
-
|
649 |
-
// Append style elements to aft
|
650 |
-
if (nl.length > 0) {
|
651 |
-
for (i = nl.length - 1, nn = e; i >= 0; i--)
|
652 |
-
nn = nn.appendChild(nl[i]);
|
653 |
-
|
654 |
-
// Padd most inner style element
|
655 |
-
nl[0].innerHTML = isOpera ? ' ' : '<br />'; // Extra space for Opera so that the caret can move there
|
656 |
-
return nl[0]; // Move caret to most inner element
|
657 |
-
} else
|
658 |
-
e.innerHTML = isOpera ? ' ' : '<br />'; // Extra space for Opera so that the caret can move there
|
659 |
-
};
|
660 |
-
|
661 |
-
// Fill empty afterblook with current style
|
662 |
-
if (isEmpty(aft))
|
663 |
-
car = appendStyles(aft, en);
|
664 |
-
|
665 |
-
// Opera needs this one backwards for older versions
|
666 |
-
if (isOpera && parseFloat(opera.version()) < 9.5) {
|
667 |
-
r.insertNode(bef);
|
668 |
-
r.insertNode(aft);
|
669 |
-
} else {
|
670 |
-
r.insertNode(aft);
|
671 |
-
r.insertNode(bef);
|
672 |
-
}
|
673 |
-
|
674 |
-
// Normalize
|
675 |
-
aft.normalize();
|
676 |
-
bef.normalize();
|
677 |
-
|
678 |
-
function first(n) {
|
679 |
-
return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n;
|
680 |
-
};
|
681 |
-
|
682 |
-
// Move cursor and scroll into view
|
683 |
-
r = d.createRange();
|
684 |
-
r.selectNodeContents(isGecko ? first(car || aft) : car || aft);
|
685 |
-
r.collapse(1);
|
686 |
-
s.removeAllRanges();
|
687 |
-
s.addRange(r);
|
688 |
-
|
689 |
-
// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
|
690 |
-
y = ed.dom.getPos(aft).y;
|
691 |
-
ch = aft.clientHeight;
|
692 |
-
|
693 |
-
// Is element within viewport
|
694 |
-
if (y < vp.y || y + ch > vp.y + vp.h) {
|
695 |
-
ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
|
696 |
-
//console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight));
|
697 |
-
}
|
698 |
-
|
699 |
-
return FALSE;
|
700 |
-
},
|
701 |
-
|
702 |
-
backspaceDelete : function(e, bs) {
|
703 |
-
var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker;
|
704 |
-
|
705 |
-
// Delete when caret is behind a element doesn't work correctly on Gecko see #3011651
|
706 |
-
if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) {
|
707 |
-
walker = new tinymce.dom.TreeWalker(sc.lastChild, sc);
|
708 |
-
|
709 |
-
// Walk the dom backwards until we find a text node
|
710 |
-
for (n = sc.lastChild; n; n = walker.prev()) {
|
711 |
-
if (n.nodeType == 3) {
|
712 |
-
r.setStart(n, n.nodeValue.length);
|
713 |
-
r.collapse(true);
|
714 |
-
se.setRng(r);
|
715 |
-
return;
|
716 |
-
}
|
717 |
-
}
|
718 |
-
}
|
719 |
-
|
720 |
-
// The caret sometimes gets stuck in Gecko if you delete empty paragraphs
|
721 |
-
// This workaround removes the element by hand and moves the caret to the previous element
|
722 |
-
if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) {
|
723 |
-
if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) {
|
724 |
-
// Find previous block element
|
725 |
-
n = sc;
|
726 |
-
while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ;
|
727 |
-
|
728 |
-
if (n) {
|
729 |
-
if (sc != b.firstChild) {
|
730 |
-
// Find last text node
|
731 |
-
w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE);
|
732 |
-
while (tn = w.nextNode())
|
733 |
-
n = tn;
|
734 |
-
|
735 |
-
// Place caret at the end of last text node
|
736 |
-
r = ed.getDoc().createRange();
|
737 |
-
r.setStart(n, n.nodeValue ? n.nodeValue.length : 0);
|
738 |
-
r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0);
|
739 |
-
se.setRng(r);
|
740 |
-
|
741 |
-
// Remove the target container
|
742 |
-
ed.dom.remove(sc);
|
743 |
-
}
|
744 |
-
|
745 |
-
return Event.cancel(e);
|
746 |
-
}
|
747 |
-
}
|
748 |
-
}
|
749 |
-
}
|
750 |
-
});
|
751 |
-
})(tinymce);
|
1 |
+
/**
|
2 |
+
* ForceBlocks.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
// Shorten names
|
13 |
+
var Event = tinymce.dom.Event,
|
14 |
+
isIE = tinymce.isIE,
|
15 |
+
isGecko = tinymce.isGecko,
|
16 |
+
isOpera = tinymce.isOpera,
|
17 |
+
each = tinymce.each,
|
18 |
+
extend = tinymce.extend,
|
19 |
+
TRUE = true,
|
20 |
+
FALSE = false;
|
21 |
+
|
22 |
+
function cloneFormats(node) {
|
23 |
+
var clone, temp, inner;
|
24 |
+
|
25 |
+
do {
|
26 |
+
if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
|
27 |
+
if (clone) {
|
28 |
+
temp = node.cloneNode(false);
|
29 |
+
temp.appendChild(clone);
|
30 |
+
clone = temp;
|
31 |
+
} else {
|
32 |
+
clone = inner = node.cloneNode(false);
|
33 |
+
}
|
34 |
+
|
35 |
+
clone.removeAttribute('id');
|
36 |
+
}
|
37 |
+
} while (node = node.parentNode);
|
38 |
+
|
39 |
+
if (clone)
|
40 |
+
return {wrapper : clone, inner : inner};
|
41 |
+
};
|
42 |
+
|
43 |
+
// Checks if the selection/caret is at the end of the specified block element
|
44 |
+
function isAtEnd(rng, par) {
|
45 |
+
var rng2 = par.ownerDocument.createRange();
|
46 |
+
|
47 |
+
rng2.setStart(rng.endContainer, rng.endOffset);
|
48 |
+
rng2.setEndAfter(par);
|
49 |
+
|
50 |
+
// Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element
|
51 |
+
return rng2.cloneContents().textContent.length == 0;
|
52 |
+
};
|
53 |
+
|
54 |
+
function isEmpty(n) {
|
55 |
+
n = n.innerHTML;
|
56 |
+
|
57 |
+
n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars
|
58 |
+
n = n.replace(/<[^>]+>/g, ''); // Remove all tags
|
59 |
+
|
60 |
+
return n.replace(/[ \u00a0\t\r\n]+/g, '') == '';
|
61 |
+
};
|
62 |
+
|
63 |
+
function splitList(selection, dom, li) {
|
64 |
+
var listBlock, block;
|
65 |
+
|
66 |
+
if (isEmpty(li)) {
|
67 |
+
listBlock = dom.getParent(li, 'ul,ol');
|
68 |
+
|
69 |
+
if (!dom.getParent(listBlock.parentNode, 'ul,ol')) {
|
70 |
+
dom.split(listBlock, li);
|
71 |
+
block = dom.create('p', 0, '<br _mce_bogus="1" />');
|
72 |
+
dom.replace(block, li);
|
73 |
+
selection.select(block, 1);
|
74 |
+
}
|
75 |
+
|
76 |
+
return FALSE;
|
77 |
+
}
|
78 |
+
|
79 |
+
return TRUE;
|
80 |
+
};
|
81 |
+
|
82 |
+
/**
|
83 |
+
* This is a internal class and no method in this class should be called directly form the out side.
|
84 |
+
*/
|
85 |
+
tinymce.create('tinymce.ForceBlocks', {
|
86 |
+
ForceBlocks : function(ed) {
|
87 |
+
var t = this, s = ed.settings, elm;
|
88 |
+
|
89 |
+
t.editor = ed;
|
90 |
+
t.dom = ed.dom;
|
91 |
+
elm = (s.forced_root_block || 'p').toLowerCase();
|
92 |
+
s.element = elm.toUpperCase();
|
93 |
+
|
94 |
+
ed.onPreInit.add(t.setup, t);
|
95 |
+
|
96 |
+
t.reOpera = new RegExp('(\\u00a0| | )<\/' + elm + '>', 'gi');
|
97 |
+
t.rePadd = new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g, elm), 'gi');
|
98 |
+
t.reNbsp2BR1 = new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi');
|
99 |
+
t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%p>'.replace(/%p/g, elm), 'gi');
|
100 |
+
t.reBR2Nbsp = new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');
|
101 |
+
|
102 |
+
function padd(ed, o) {
|
103 |
+
if (isOpera)
|
104 |
+
o.content = o.content.replace(t.reOpera, '</' + elm + '>');
|
105 |
+
|
106 |
+
o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0</' + elm + '>');
|
107 |
+
|
108 |
+
if (!isIE && !isOpera && o.set) {
|
109 |
+
// Use instead of BR in padded paragraphs
|
110 |
+
o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2><br /></' + elm + '>');
|
111 |
+
o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2><br /></' + elm + '>');
|
112 |
+
} else
|
113 |
+
o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0</' + elm + '>');
|
114 |
+
};
|
115 |
+
|
116 |
+
ed.onBeforeSetContent.add(padd);
|
117 |
+
ed.onPostProcess.add(padd);
|
118 |
+
|
119 |
+
if (s.forced_root_block) {
|
120 |
+
ed.onInit.add(t.forceRoots, t);
|
121 |
+
ed.onSetContent.add(t.forceRoots, t);
|
122 |
+
ed.onBeforeGetContent.add(t.forceRoots, t);
|
123 |
+
}
|
124 |
+
},
|
125 |
+
|
126 |
+
setup : function() {
|
127 |
+
var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection;
|
128 |
+
|
129 |
+
// Force root blocks when typing and when getting output
|
130 |
+
if (s.forced_root_block) {
|
131 |
+
ed.onBeforeExecCommand.add(t.forceRoots, t);
|
132 |
+
ed.onKeyUp.add(t.forceRoots, t);
|
133 |
+
ed.onPreProcess.add(t.forceRoots, t);
|
134 |
+
}
|
135 |
+
|
136 |
+
if (s.force_br_newlines) {
|
137 |
+
// Force IE to produce BRs on enter
|
138 |
+
if (isIE) {
|
139 |
+
ed.onKeyPress.add(function(ed, e) {
|
140 |
+
var n;
|
141 |
+
|
142 |
+
if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') {
|
143 |
+
selection.setContent('<br id="__" /> ', {format : 'raw'});
|
144 |
+
n = dom.get('__');
|
145 |
+
n.removeAttribute('id');
|
146 |
+
selection.select(n);
|
147 |
+
selection.collapse();
|
148 |
+
return Event.cancel(e);
|
149 |
+
}
|
150 |
+
});
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
if (s.force_p_newlines) {
|
155 |
+
if (!isIE) {
|
156 |
+
ed.onKeyPress.add(function(ed, e) {
|
157 |
+
if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e))
|
158 |
+
Event.cancel(e);
|
159 |
+
});
|
160 |
+
} else {
|
161 |
+
// Ungly hack to for IE to preserve the formatting when you press
|
162 |
+
// enter at the end of a block element with formatted contents
|
163 |
+
// This logic overrides the browsers default logic with
|
164 |
+
// custom logic that enables us to control the output
|
165 |
+
tinymce.addUnload(function() {
|
166 |
+
t._previousFormats = 0; // Fix IE leak
|
167 |
+
});
|
168 |
+
|
169 |
+
ed.onKeyPress.add(function(ed, e) {
|
170 |
+
t._previousFormats = 0;
|
171 |
+
|
172 |
+
// Clone the current formats, this will later be applied to the new block contents
|
173 |
+
if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles)
|
174 |
+
t._previousFormats = cloneFormats(ed.selection.getStart());
|
175 |
+
});
|
176 |
+
|
177 |
+
ed.onKeyUp.add(function(ed, e) {
|
178 |
+
// Let IE break the element and the wrap the new caret location in the previous formats
|
179 |
+
if (e.keyCode == 13 && !e.shiftKey) {
|
180 |
+
var parent = ed.selection.getStart(), fmt = t._previousFormats;
|
181 |
+
|
182 |
+
// Parent is an empty block
|
183 |
+
if (!parent.hasChildNodes()) {
|
184 |
+
parent = dom.getParent(parent, dom.isBlock);
|
185 |
+
|
186 |
+
if (parent) {
|
187 |
+
parent.innerHTML = '';
|
188 |
+
|
189 |
+
if (t._previousFormats) {
|
190 |
+
parent.appendChild(fmt.wrapper);
|
191 |
+
fmt.inner.innerHTML = '\uFEFF';
|
192 |
+
} else
|
193 |
+
parent.innerHTML = '\uFEFF';
|
194 |
+
|
195 |
+
selection.select(parent, 1);
|
196 |
+
ed.getDoc().execCommand('Delete', false, null);
|
197 |
+
}
|
198 |
+
}
|
199 |
+
}
|
200 |
+
});
|
201 |
+
}
|
202 |
+
|
203 |
+
if (isGecko) {
|
204 |
+
ed.onKeyDown.add(function(ed, e) {
|
205 |
+
if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey)
|
206 |
+
t.backspaceDelete(e, e.keyCode == 8);
|
207 |
+
});
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
// Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973
|
212 |
+
if (tinymce.isWebKit) {
|
213 |
+
function insertBr(ed) {
|
214 |
+
var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h;
|
215 |
+
|
216 |
+
// Insert BR element
|
217 |
+
rng.insertNode(br = dom.create('br'));
|
218 |
+
|
219 |
+
// Place caret after BR
|
220 |
+
rng.setStartAfter(br);
|
221 |
+
rng.setEndAfter(br);
|
222 |
+
selection.setRng(rng);
|
223 |
+
|
224 |
+
// Could not place caret after BR then insert an nbsp entity and move the caret
|
225 |
+
if (selection.getSel().focusNode == br.previousSibling) {
|
226 |
+
selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));
|
227 |
+
selection.collapse(TRUE);
|
228 |
+
}
|
229 |
+
|
230 |
+
// Create a temporary DIV after the BR and get the position as it
|
231 |
+
// seems like getPos() returns 0 for text nodes and BR elements.
|
232 |
+
dom.insertAfter(div, br);
|
233 |
+
divYPos = dom.getPos(div).y;
|
234 |
+
dom.remove(div);
|
235 |
+
|
236 |
+
// Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
|
237 |
+
if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port.
|
238 |
+
ed.getWin().scrollTo(0, divYPos);
|
239 |
+
};
|
240 |
+
|
241 |
+
ed.onKeyPress.add(function(ed, e) {
|
242 |
+
if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) {
|
243 |
+
insertBr(ed);
|
244 |
+
Event.cancel(e);
|
245 |
+
}
|
246 |
+
});
|
247 |
+
}
|
248 |
+
|
249 |
+
// Padd empty inline elements within block elements
|
250 |
+
// For example: <p><strong><em></em></strong></p> becomes <p><strong><em> </em></strong></p>
|
251 |
+
ed.onPreProcess.add(function(ed, o) {
|
252 |
+
each(dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) {
|
253 |
+
if (isEmpty(p)) {
|
254 |
+
each(dom.select('span,em,strong,b,i', o.node), function(n) {
|
255 |
+
if (!n.hasChildNodes()) {
|
256 |
+
n.appendChild(ed.getDoc().createTextNode('\u00a0'));
|
257 |
+
return FALSE; // Break the loop one padding is enough
|
258 |
+
}
|
259 |
+
});
|
260 |
+
}
|
261 |
+
});
|
262 |
+
});
|
263 |
+
|
264 |
+
// IE specific fixes
|
265 |
+
if (isIE) {
|
266 |
+
// Replaces IE:s auto generated paragraphs with the specified element name
|
267 |
+
if (s.element != 'P') {
|
268 |
+
ed.onKeyPress.add(function(ed, e) {
|
269 |
+
t.lastElm = selection.getNode().nodeName;
|
270 |
+
});
|
271 |
+
|
272 |
+
ed.onKeyUp.add(function(ed, e) {
|
273 |
+
var bl, n = selection.getNode(), b = ed.getBody();
|
274 |
+
|
275 |
+
if (b.childNodes.length === 1 && n.nodeName == 'P') {
|
276 |
+
n = dom.rename(n, s.element);
|
277 |
+
selection.select(n);
|
278 |
+
selection.collapse();
|
279 |
+
ed.nodeChanged();
|
280 |
+
} else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {
|
281 |
+
bl = dom.getParent(n, 'p');
|
282 |
+
|
283 |
+
if (bl) {
|
284 |
+
dom.rename(bl, s.element);
|
285 |
+
ed.nodeChanged();
|
286 |
+
}
|
287 |
+
}
|
288 |
+
});
|
289 |
+
}
|
290 |
+
}
|
291 |
+
},
|
292 |
+
|
293 |
+
find : function(n, t, s) {
|
294 |
+
var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1;
|
295 |
+
|
296 |
+
while (n = w.nextNode()) {
|
297 |
+
c++;
|
298 |
+
|
299 |
+
// Index by node
|
300 |
+
if (t == 0 && n == s)
|
301 |
+
return c;
|
302 |
+
|
303 |
+
// Node by index
|
304 |
+
if (t == 1 && c == s)
|
305 |
+
return n;
|
306 |
+
}
|
307 |
+
|
308 |
+
return -1;
|
309 |
+
},
|
310 |
+
|
311 |
+
forceRoots : function(ed, e) {
|
312 |
+
var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF;
|
313 |
+
var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid;
|
314 |
+
|
315 |
+
// Fix for bug #1863847
|
316 |
+
//if (e && e.keyCode == 13)
|
317 |
+
// return TRUE;
|
318 |
+
|
319 |
+
// Wrap non blocks into blocks
|
320 |
+
for (i = nl.length - 1; i >= 0; i--) {
|
321 |
+
nx = nl[i];
|
322 |
+
|
323 |
+
// Ignore internal elements
|
324 |
+
if (nx.nodeType === 1 && nx.getAttribute('_mce_type')) {
|
325 |
+
bl = null;
|
326 |
+
continue;
|
327 |
+
}
|
328 |
+
|
329 |
+
// Is text or non block element
|
330 |
+
if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) {
|
331 |
+
if (!bl) {
|
332 |
+
// Create new block but ignore whitespace
|
333 |
+
if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) {
|
334 |
+
// Store selection
|
335 |
+
if (si == -2 && r) {
|
336 |
+
if (!isIE) {
|
337 |
+
// If selection is element then mark it
|
338 |
+
if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) {
|
339 |
+
// Save the id of the selected element
|
340 |
+
eid = n.getAttribute("id");
|
341 |
+
n.setAttribute("id", "__mce");
|
342 |
+
} else {
|
343 |
+
// If element is inside body, might not be the case in contentEdiable mode
|
344 |
+
if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) {
|
345 |
+
so = r.startOffset;
|
346 |
+
eo = r.endOffset;
|
347 |
+
si = t.find(b, 0, r.startContainer);
|
348 |
+
ei = t.find(b, 0, r.endContainer);
|
349 |
+
}
|
350 |
+
}
|
351 |
+
} else {
|
352 |
+
// Force control range into text range
|
353 |
+
if (r.item) {
|
354 |
+
tr = d.body.createTextRange();
|
355 |
+
tr.moveToElementText(r.item(0));
|
356 |
+
r = tr;
|
357 |
+
}
|
358 |
+
|
359 |
+
tr = d.body.createTextRange();
|
360 |
+
tr.moveToElementText(b);
|
361 |
+
tr.collapse(1);
|
362 |
+
bp = tr.move('character', c) * -1;
|
363 |
+
|
364 |
+
tr = r.duplicate();
|
365 |
+
tr.collapse(1);
|
366 |
+
sp = tr.move('character', c) * -1;
|
367 |
+
|
368 |
+
tr = r.duplicate();
|
369 |
+
tr.collapse(0);
|
370 |
+
le = (tr.move('character', c) * -1) - sp;
|
371 |
+
|
372 |
+
si = sp - bp;
|
373 |
+
ei = le;
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
+
// Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE
|
378 |
+
// See: http://support.microsoft.com/kb/829907
|
379 |
+
bl = ed.dom.create(ed.settings.forced_root_block);
|
380 |
+
nx.parentNode.replaceChild(bl, nx);
|
381 |
+
bl.appendChild(nx);
|
382 |
+
}
|
383 |
+
} else {
|
384 |
+
if (bl.hasChildNodes())
|
385 |
+
bl.insertBefore(nx, bl.firstChild);
|
386 |
+
else
|
387 |
+
bl.appendChild(nx);
|
388 |
+
}
|
389 |
+
} else
|
390 |
+
bl = null; // Time to create new block
|
391 |
+
}
|
392 |
+
|
393 |
+
// Restore selection
|
394 |
+
if (si != -2) {
|
395 |
+
if (!isIE) {
|
396 |
+
bl = b.getElementsByTagName(ed.settings.element)[0];
|
397 |
+
r = d.createRange();
|
398 |
+
|
399 |
+
// Select last location or generated block
|
400 |
+
if (si != -1)
|
401 |
+
r.setStart(t.find(b, 1, si), so);
|
402 |
+
else
|
403 |
+
r.setStart(bl, 0);
|
404 |
+
|
405 |
+
// Select last location or generated block
|
406 |
+
if (ei != -1)
|
407 |
+
r.setEnd(t.find(b, 1, ei), eo);
|
408 |
+
else
|
409 |
+
r.setEnd(bl, 0);
|
410 |
+
|
411 |
+
if (s) {
|
412 |
+
s.removeAllRanges();
|
413 |
+
s.addRange(r);
|
414 |
+
}
|
415 |
+
} else {
|
416 |
+
try {
|
417 |
+
r = s.createRange();
|
418 |
+
r.moveToElementText(b);
|
419 |
+
r.collapse(1);
|
420 |
+
r.moveStart('character', si);
|
421 |
+
r.moveEnd('character', ei);
|
422 |
+
r.select();
|
423 |
+
} catch (ex) {
|
424 |
+
// Ignore
|
425 |
+
}
|
426 |
+
}
|
427 |
+
} else if (!isIE && (n = ed.dom.get('__mce'))) {
|
428 |
+
// Restore the id of the selected element
|
429 |
+
if (eid)
|
430 |
+
n.setAttribute('id', eid);
|
431 |
+
else
|
432 |
+
n.removeAttribute('id');
|
433 |
+
|
434 |
+
// Move caret before selected element
|
435 |
+
r = d.createRange();
|
436 |
+
r.setStartBefore(n);
|
437 |
+
r.setEndBefore(n);
|
438 |
+
se.setRng(r);
|
439 |
+
}
|
440 |
+
},
|
441 |
+
|
442 |
+
getParentBlock : function(n) {
|
443 |
+
var d = this.dom;
|
444 |
+
|
445 |
+
return d.getParent(n, d.isBlock);
|
446 |
+
},
|
447 |
+
|
448 |
+
insertPara : function(e) {
|
449 |
+
var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body;
|
450 |
+
var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car;
|
451 |
+
|
452 |
+
// If root blocks are forced then use Operas default behavior since it's really good
|
453 |
+
// Removed due to bug: #1853816
|
454 |
+
// if (se.forced_root_block && isOpera)
|
455 |
+
// return TRUE;
|
456 |
+
|
457 |
+
// Setup before range
|
458 |
+
rb = d.createRange();
|
459 |
+
|
460 |
+
// If is before the first block element and in body, then move it into first block element
|
461 |
+
rb.setStart(s.anchorNode, s.anchorOffset);
|
462 |
+
rb.collapse(TRUE);
|
463 |
+
|
464 |
+
// Setup after range
|
465 |
+
ra = d.createRange();
|
466 |
+
|
467 |
+
// If is before the first block element and in body, then move it into first block element
|
468 |
+
ra.setStart(s.focusNode, s.focusOffset);
|
469 |
+
ra.collapse(TRUE);
|
470 |
+
|
471 |
+
// Setup start/end points
|
472 |
+
dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;
|
473 |
+
sn = dir ? s.anchorNode : s.focusNode;
|
474 |
+
so = dir ? s.anchorOffset : s.focusOffset;
|
475 |
+
en = dir ? s.focusNode : s.anchorNode;
|
476 |
+
eo = dir ? s.focusOffset : s.anchorOffset;
|
477 |
+
|
478 |
+
// If selection is in empty table cell
|
479 |
+
if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {
|
480 |
+
if (sn.firstChild.nodeName == 'BR')
|
481 |
+
dom.remove(sn.firstChild); // Remove BR
|
482 |
+
|
483 |
+
// Create two new block elements
|
484 |
+
if (sn.childNodes.length == 0) {
|
485 |
+
ed.dom.add(sn, se.element, null, '<br />');
|
486 |
+
aft = ed.dom.add(sn, se.element, null, '<br />');
|
487 |
+
} else {
|
488 |
+
n = sn.innerHTML;
|
489 |
+
sn.innerHTML = '';
|
490 |
+
ed.dom.add(sn, se.element, null, n);
|
491 |
+
aft = ed.dom.add(sn, se.element, null, '<br />');
|
492 |
+
}
|
493 |
+
|
494 |
+
// Move caret into the last one
|
495 |
+
r = d.createRange();
|
496 |
+
r.selectNodeContents(aft);
|
497 |
+
r.collapse(1);
|
498 |
+
ed.selection.setRng(r);
|
499 |
+
|
500 |
+
return FALSE;
|
501 |
+
}
|
502 |
+
|
503 |
+
// If the caret is in an invalid location in FF we need to move it into the first block
|
504 |
+
if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) {
|
505 |
+
sn = en = sn.firstChild;
|
506 |
+
so = eo = 0;
|
507 |
+
rb = d.createRange();
|
508 |
+
rb.setStart(sn, 0);
|
509 |
+
ra = d.createRange();
|
510 |
+
ra.setStart(en, 0);
|
511 |
+
}
|
512 |
+
|
513 |
+
// Never use body as start or end node
|
514 |
+
sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
|
515 |
+
sn = sn.nodeName == "BODY" ? sn.firstChild : sn;
|
516 |
+
en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
|
517 |
+
en = en.nodeName == "BODY" ? en.firstChild : en;
|
518 |
+
|
519 |
+
// Get start and end blocks
|
520 |
+
sb = t.getParentBlock(sn);
|
521 |
+
eb = t.getParentBlock(en);
|
522 |
+
bn = sb ? sb.nodeName : se.element; // Get block name to create
|
523 |
+
|
524 |
+
// Return inside list use default browser behavior
|
525 |
+
if (n = t.dom.getParent(sb, 'li,pre')) {
|
526 |
+
if (n.nodeName == 'LI')
|
527 |
+
return splitList(ed.selection, t.dom, n);
|
528 |
+
|
529 |
+
return TRUE;
|
530 |
+
}
|
531 |
+
|
532 |
+
// If caption or absolute layers then always generate new blocks within
|
533 |
+
if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
|
534 |
+
bn = se.element;
|
535 |
+
sb = null;
|
536 |
+
}
|
537 |
+
|
538 |
+
// If caption or absolute layers then always generate new blocks within
|
539 |
+
if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
|
540 |
+
bn = se.element;
|
541 |
+
eb = null;
|
542 |
+
}
|
543 |
+
|
544 |
+
// Use P instead
|
545 |
+
if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) {
|
546 |
+
bn = se.element;
|
547 |
+
sb = eb = null;
|
548 |
+
}
|
549 |
+
|
550 |
+
// Setup new before and after blocks
|
551 |
+
bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn);
|
552 |
+
aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn);
|
553 |
+
|
554 |
+
// Remove id from after clone
|
555 |
+
aft.removeAttribute('id');
|
556 |
+
|
557 |
+
// Is header and cursor is at the end, then force paragraph under
|
558 |
+
if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb))
|
559 |
+
aft = ed.dom.create(se.element);
|
560 |
+
|
561 |
+
// Find start chop node
|
562 |
+
n = sc = sn;
|
563 |
+
do {
|
564 |
+
if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
|
565 |
+
break;
|
566 |
+
|
567 |
+
sc = n;
|
568 |
+
} while ((n = n.previousSibling ? n.previousSibling : n.parentNode));
|
569 |
+
|
570 |
+
// Find end chop node
|
571 |
+
n = ec = en;
|
572 |
+
do {
|
573 |
+
if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
|
574 |
+
break;
|
575 |
+
|
576 |
+
ec = n;
|
577 |
+
} while ((n = n.nextSibling ? n.nextSibling : n.parentNode));
|
578 |
+
|
579 |
+
// Place first chop part into before block element
|
580 |
+
if (sc.nodeName == bn)
|
581 |
+
rb.setStart(sc, 0);
|
582 |
+
else
|
583 |
+
rb.setStartBefore(sc);
|
584 |
+
|
585 |
+
rb.setEnd(sn, so);
|
586 |
+
bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
|
587 |
+
|
588 |
+
// Place secnd chop part within new block element
|
589 |
+
try {
|
590 |
+
ra.setEndAfter(ec);
|
591 |
+
} catch(ex) {
|
592 |
+
//console.debug(s.focusNode, s.focusOffset);
|
593 |
+
}
|
594 |
+
|
595 |
+
ra.setStart(en, eo);
|
596 |
+
aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
|
597 |
+
|
598 |
+
// Create range around everything
|
599 |
+
r = d.createRange();
|
600 |
+
if (!sc.previousSibling && sc.parentNode.nodeName == bn) {
|
601 |
+
r.setStartBefore(sc.parentNode);
|
602 |
+
} else {
|
603 |
+
if (rb.startContainer.nodeName == bn && rb.startOffset == 0)
|
604 |
+
r.setStartBefore(rb.startContainer);
|
605 |
+
else
|
606 |
+
r.setStart(rb.startContainer, rb.startOffset);
|
607 |
+
}
|
608 |
+
|
609 |
+
if (!ec.nextSibling && ec.parentNode.nodeName == bn)
|
610 |
+
r.setEndAfter(ec.parentNode);
|
611 |
+
else
|
612 |
+
r.setEnd(ra.endContainer, ra.endOffset);
|
613 |
+
|
614 |
+
// Delete and replace it with new block elements
|
615 |
+
r.deleteContents();
|
616 |
+
|
617 |
+
if (isOpera)
|
618 |
+
ed.getWin().scrollTo(0, vp.y);
|
619 |
+
|
620 |
+
// Never wrap blocks in blocks
|
621 |
+
if (bef.firstChild && bef.firstChild.nodeName == bn)
|
622 |
+
bef.innerHTML = bef.firstChild.innerHTML;
|
623 |
+
|
624 |
+
if (aft.firstChild && aft.firstChild.nodeName == bn)
|
625 |
+
aft.innerHTML = aft.firstChild.innerHTML;
|
626 |
+
|
627 |
+
// Padd empty blocks
|
628 |
+
if (isEmpty(bef))
|
629 |
+
bef.innerHTML = '<br />';
|
630 |
+
|
631 |
+
function appendStyles(e, en) {
|
632 |
+
var nl = [], nn, n, i;
|
633 |
+
|
634 |
+
e.innerHTML = '';
|
635 |
+
|
636 |
+
// Make clones of style elements
|
637 |
+
if (se.keep_styles) {
|
638 |
+
n = en;
|
639 |
+
do {
|
640 |
+
// We only want style specific elements
|
641 |
+
if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) {
|
642 |
+
nn = n.cloneNode(FALSE);
|
643 |
+
dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique
|
644 |
+
nl.push(nn);
|
645 |
+
}
|
646 |
+
} while (n = n.parentNode);
|
647 |
+
}
|
648 |
+
|
649 |
+
// Append style elements to aft
|
650 |
+
if (nl.length > 0) {
|
651 |
+
for (i = nl.length - 1, nn = e; i >= 0; i--)
|
652 |
+
nn = nn.appendChild(nl[i]);
|
653 |
+
|
654 |
+
// Padd most inner style element
|
655 |
+
nl[0].innerHTML = isOpera ? ' ' : '<br />'; // Extra space for Opera so that the caret can move there
|
656 |
+
return nl[0]; // Move caret to most inner element
|
657 |
+
} else
|
658 |
+
e.innerHTML = isOpera ? ' ' : '<br />'; // Extra space for Opera so that the caret can move there
|
659 |
+
};
|
660 |
+
|
661 |
+
// Fill empty afterblook with current style
|
662 |
+
if (isEmpty(aft))
|
663 |
+
car = appendStyles(aft, en);
|
664 |
+
|
665 |
+
// Opera needs this one backwards for older versions
|
666 |
+
if (isOpera && parseFloat(opera.version()) < 9.5) {
|
667 |
+
r.insertNode(bef);
|
668 |
+
r.insertNode(aft);
|
669 |
+
} else {
|
670 |
+
r.insertNode(aft);
|
671 |
+
r.insertNode(bef);
|
672 |
+
}
|
673 |
+
|
674 |
+
// Normalize
|
675 |
+
aft.normalize();
|
676 |
+
bef.normalize();
|
677 |
+
|
678 |
+
function first(n) {
|
679 |
+
return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n;
|
680 |
+
};
|
681 |
+
|
682 |
+
// Move cursor and scroll into view
|
683 |
+
r = d.createRange();
|
684 |
+
r.selectNodeContents(isGecko ? first(car || aft) : car || aft);
|
685 |
+
r.collapse(1);
|
686 |
+
s.removeAllRanges();
|
687 |
+
s.addRange(r);
|
688 |
+
|
689 |
+
// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
|
690 |
+
y = ed.dom.getPos(aft).y;
|
691 |
+
ch = aft.clientHeight;
|
692 |
+
|
693 |
+
// Is element within viewport
|
694 |
+
if (y < vp.y || y + ch > vp.y + vp.h) {
|
695 |
+
ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
|
696 |
+
//console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight));
|
697 |
+
}
|
698 |
+
|
699 |
+
return FALSE;
|
700 |
+
},
|
701 |
+
|
702 |
+
backspaceDelete : function(e, bs) {
|
703 |
+
var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker;
|
704 |
+
|
705 |
+
// Delete when caret is behind a element doesn't work correctly on Gecko see #3011651
|
706 |
+
if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) {
|
707 |
+
walker = new tinymce.dom.TreeWalker(sc.lastChild, sc);
|
708 |
+
|
709 |
+
// Walk the dom backwards until we find a text node
|
710 |
+
for (n = sc.lastChild; n; n = walker.prev()) {
|
711 |
+
if (n.nodeType == 3) {
|
712 |
+
r.setStart(n, n.nodeValue.length);
|
713 |
+
r.collapse(true);
|
714 |
+
se.setRng(r);
|
715 |
+
return;
|
716 |
+
}
|
717 |
+
}
|
718 |
+
}
|
719 |
+
|
720 |
+
// The caret sometimes gets stuck in Gecko if you delete empty paragraphs
|
721 |
+
// This workaround removes the element by hand and moves the caret to the previous element
|
722 |
+
if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) {
|
723 |
+
if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) {
|
724 |
+
// Find previous block element
|
725 |
+
n = sc;
|
726 |
+
while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ;
|
727 |
+
|
728 |
+
if (n) {
|
729 |
+
if (sc != b.firstChild) {
|
730 |
+
// Find last text node
|
731 |
+
w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE);
|
732 |
+
while (tn = w.nextNode())
|
733 |
+
n = tn;
|
734 |
+
|
735 |
+
// Place caret at the end of last text node
|
736 |
+
r = ed.getDoc().createRange();
|
737 |
+
r.setStart(n, n.nodeValue ? n.nodeValue.length : 0);
|
738 |
+
r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0);
|
739 |
+
se.setRng(r);
|
740 |
+
|
741 |
+
// Remove the target container
|
742 |
+
ed.dom.remove(sc);
|
743 |
+
}
|
744 |
+
|
745 |
+
return Event.cancel(e);
|
746 |
+
}
|
747 |
+
}
|
748 |
+
}
|
749 |
+
}
|
750 |
+
});
|
751 |
+
})(tinymce);
|
js/tiny_mce_german/classes/Formatter.js
CHANGED
@@ -1,1526 +1,1526 @@
|
|
1 |
-
/**
|
2 |
-
* Formatter.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
/**
|
13 |
-
* Text formatter engine class. This class is used to apply formats like bold, italic, font size
|
14 |
-
* etc to the current selection or specific nodes. This engine was build to replace the browsers
|
15 |
-
* default formatting logic for execCommand due to it's inconsistant and buggy behavior.
|
16 |
-
*
|
17 |
-
* @class tinymce.Formatter
|
18 |
-
* @example
|
19 |
-
* tinymce.activeEditor.formatter.register('mycustomformat', {
|
20 |
-
* inline : 'span',
|
21 |
-
* styles : {color : '#ff0000'}
|
22 |
-
* });
|
23 |
-
*
|
24 |
-
* tinymce.activeEditor.formatter.apply('mycustomformat');
|
25 |
-
*/
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Constructs a new formatter instance.
|
29 |
-
*
|
30 |
-
* @constructor Formatter
|
31 |
-
* @param {tinymce.Editor} ed Editor instance to construct the formatter engine to.
|
32 |
-
*/
|
33 |
-
tinymce.Formatter = function(ed) {
|
34 |
-
var formats = {},
|
35 |
-
each = tinymce.each,
|
36 |
-
dom = ed.dom,
|
37 |
-
selection = ed.selection,
|
38 |
-
TreeWalker = tinymce.dom.TreeWalker,
|
39 |
-
rangeUtils = new tinymce.dom.RangeUtils(dom),
|
40 |
-
isValid = ed.schema.isValid,
|
41 |
-
isBlock = dom.isBlock,
|
42 |
-
forcedRootBlock = ed.settings.forced_root_block,
|
43 |
-
nodeIndex = dom.nodeIndex,
|
44 |
-
INVISIBLE_CHAR = '\uFEFF',
|
45 |
-
MCE_ATTR_RE = /^(src|href|style)$/,
|
46 |
-
FALSE = false,
|
47 |
-
TRUE = true,
|
48 |
-
undefined,
|
49 |
-
pendingFormats = {apply : [], remove : []};
|
50 |
-
|
51 |
-
function isArray(obj) {
|
52 |
-
return obj instanceof Array;
|
53 |
-
};
|
54 |
-
|
55 |
-
function getParents(node, selector) {
|
56 |
-
return dom.getParents(node, selector, dom.getRoot());
|
57 |
-
};
|
58 |
-
|
59 |
-
function isCaretNode(node) {
|
60 |
-
return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline');
|
61 |
-
};
|
62 |
-
|
63 |
-
// Public functions
|
64 |
-
|
65 |
-
/**
|
66 |
-
* Returns the format by name or all formats if no name is specified.
|
67 |
-
*
|
68 |
-
* @method get
|
69 |
-
* @param {String} name Optional name to retrive by.
|
70 |
-
* @return {Array/Object} Array/Object with all registred formats or a specific format.
|
71 |
-
*/
|
72 |
-
function get(name) {
|
73 |
-
return name ? formats[name] : formats;
|
74 |
-
};
|
75 |
-
|
76 |
-
/**
|
77 |
-
* Registers a specific format by name.
|
78 |
-
*
|
79 |
-
* @method register
|
80 |
-
* @param {Object/String} name Name of the format for example "bold".
|
81 |
-
* @param {Object/Array} format Optional format object or array of format variants can only be omitted if the first arg is an object.
|
82 |
-
*/
|
83 |
-
function register(name, format) {
|
84 |
-
if (name) {
|
85 |
-
if (typeof(name) !== 'string') {
|
86 |
-
each(name, function(format, name) {
|
87 |
-
register(name, format);
|
88 |
-
});
|
89 |
-
} else {
|
90 |
-
// Force format into array and add it to internal collection
|
91 |
-
format = format.length ? format : [format];
|
92 |
-
|
93 |
-
each(format, function(format) {
|
94 |
-
// Set deep to false by default on selector formats this to avoid removing
|
95 |
-
// alignment on images inside paragraphs when alignment is changed on paragraphs
|
96 |
-
if (format.deep === undefined)
|
97 |
-
format.deep = !format.selector;
|
98 |
-
|
99 |
-
// Default to true
|
100 |
-
if (format.split === undefined)
|
101 |
-
format.split = !format.selector || format.inline;
|
102 |
-
|
103 |
-
// Default to true
|
104 |
-
if (format.remove === undefined && format.selector && !format.inline)
|
105 |
-
format.remove = 'none';
|
106 |
-
|
107 |
-
// Mark format as a mixed format inline + block level
|
108 |
-
if (format.selector && format.inline) {
|
109 |
-
format.mixed = true;
|
110 |
-
format.block_expand = true;
|
111 |
-
}
|
112 |
-
|
113 |
-
// Split classes if needed
|
114 |
-
if (typeof(format.classes) === 'string')
|
115 |
-
format.classes = format.classes.split(/\s+/);
|
116 |
-
});
|
117 |
-
|
118 |
-
formats[name] = format;
|
119 |
-
}
|
120 |
-
}
|
121 |
-
};
|
122 |
-
|
123 |
-
/**
|
124 |
-
* Applies the specified format to the current selection or specified node.
|
125 |
-
*
|
126 |
-
* @method apply
|
127 |
-
* @param {String} name Name of format to apply.
|
128 |
-
* @param {Object} vars Optional list of variables to replace within format before applying it.
|
129 |
-
* @param {Node} node Optional node to apply the format to defaults to current selection.
|
130 |
-
*/
|
131 |
-
function apply(name, vars, node) {
|
132 |
-
var formatList = get(name), format = formatList[0], bookmark, rng, i;
|
133 |
-
|
134 |
-
/**
|
135 |
-
* Moves the start to the first suitable text node.
|
136 |
-
*/
|
137 |
-
function moveStart(rng) {
|
138 |
-
var container = rng.startContainer,
|
139 |
-
offset = rng.startOffset,
|
140 |
-
walker, node;
|
141 |
-
|
142 |
-
// Move startContainer/startOffset in to a suitable node
|
143 |
-
if (container.nodeType == 1 || container.nodeValue === "") {
|
144 |
-
container = container.nodeType == 1 ? container.childNodes[offset] : container;
|
145 |
-
|
146 |
-
// Might fail if the offset is behind the last element in it's container
|
147 |
-
if (container) {
|
148 |
-
walker = new TreeWalker(container, container.parentNode);
|
149 |
-
for (node = walker.current(); node; node = walker.next()) {
|
150 |
-
if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
|
151 |
-
rng.setStart(node, 0);
|
152 |
-
break;
|
153 |
-
}
|
154 |
-
}
|
155 |
-
}
|
156 |
-
}
|
157 |
-
|
158 |
-
return rng;
|
159 |
-
};
|
160 |
-
|
161 |
-
function setElementFormat(elm, fmt) {
|
162 |
-
fmt = fmt || format;
|
163 |
-
|
164 |
-
if (elm) {
|
165 |
-
each(fmt.styles, function(value, name) {
|
166 |
-
dom.setStyle(elm, name, replaceVars(value, vars));
|
167 |
-
});
|
168 |
-
|
169 |
-
each(fmt.attributes, function(value, name) {
|
170 |
-
dom.setAttrib(elm, name, replaceVars(value, vars));
|
171 |
-
});
|
172 |
-
|
173 |
-
each(fmt.classes, function(value) {
|
174 |
-
value = replaceVars(value, vars);
|
175 |
-
|
176 |
-
if (!dom.hasClass(elm, value))
|
177 |
-
dom.addClass(elm, value);
|
178 |
-
});
|
179 |
-
}
|
180 |
-
};
|
181 |
-
|
182 |
-
function applyRngStyle(rng) {
|
183 |
-
var newWrappers = [], wrapName, wrapElm;
|
184 |
-
|
185 |
-
// Setup wrapper element
|
186 |
-
wrapName = format.inline || format.block;
|
187 |
-
wrapElm = dom.create(wrapName);
|
188 |
-
setElementFormat(wrapElm);
|
189 |
-
|
190 |
-
rangeUtils.walk(rng, function(nodes) {
|
191 |
-
var currentWrapElm;
|
192 |
-
|
193 |
-
/**
|
194 |
-
* Process a list of nodes wrap them.
|
195 |
-
*/
|
196 |
-
function process(node) {
|
197 |
-
var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found;
|
198 |
-
|
199 |
-
// Stop wrapping on br elements
|
200 |
-
if (isEq(nodeName, 'br')) {
|
201 |
-
currentWrapElm = 0;
|
202 |
-
|
203 |
-
// Remove any br elements when we wrap things
|
204 |
-
if (format.block)
|
205 |
-
dom.remove(node);
|
206 |
-
|
207 |
-
return;
|
208 |
-
}
|
209 |
-
|
210 |
-
// If node is wrapper type
|
211 |
-
if (format.wrapper && matchNode(node, name, vars)) {
|
212 |
-
currentWrapElm = 0;
|
213 |
-
return;
|
214 |
-
}
|
215 |
-
|
216 |
-
// Can we rename the block
|
217 |
-
if (format.block && !format.wrapper && isTextBlock(nodeName)) {
|
218 |
-
node = dom.rename(node, wrapName);
|
219 |
-
setElementFormat(node);
|
220 |
-
newWrappers.push(node);
|
221 |
-
currentWrapElm = 0;
|
222 |
-
return;
|
223 |
-
}
|
224 |
-
|
225 |
-
// Handle selector patterns
|
226 |
-
if (format.selector) {
|
227 |
-
// Look for matching formats
|
228 |
-
each(formatList, function(format) {
|
229 |
-
if (dom.is(node, format.selector) && !isCaretNode(node)) {
|
230 |
-
setElementFormat(node, format);
|
231 |
-
found = true;
|
232 |
-
}
|
233 |
-
});
|
234 |
-
|
235 |
-
// Continue processing if a selector match wasn't found and a inline element is defined
|
236 |
-
if (!format.inline || found) {
|
237 |
-
currentWrapElm = 0;
|
238 |
-
return;
|
239 |
-
}
|
240 |
-
}
|
241 |
-
|
242 |
-
// Is it valid to wrap this item
|
243 |
-
if (isValid(wrapName, nodeName) && isValid(parentName, wrapName)) {
|
244 |
-
// Start wrapping
|
245 |
-
if (!currentWrapElm) {
|
246 |
-
// Wrap the node
|
247 |
-
currentWrapElm = wrapElm.cloneNode(FALSE);
|
248 |
-
node.parentNode.insertBefore(currentWrapElm, node);
|
249 |
-
newWrappers.push(currentWrapElm);
|
250 |
-
}
|
251 |
-
|
252 |
-
currentWrapElm.appendChild(node);
|
253 |
-
} else {
|
254 |
-
// Start a new wrapper for possible children
|
255 |
-
currentWrapElm = 0;
|
256 |
-
|
257 |
-
each(tinymce.grep(node.childNodes), process);
|
258 |
-
|
259 |
-
// End the last wrapper
|
260 |
-
currentWrapElm = 0;
|
261 |
-
}
|
262 |
-
};
|
263 |
-
|
264 |
-
// Process siblings from range
|
265 |
-
each(nodes, process);
|
266 |
-
});
|
267 |
-
|
268 |
-
// Cleanup
|
269 |
-
each(newWrappers, function(node) {
|
270 |
-
var childCount;
|
271 |
-
|
272 |
-
function getChildCount(node) {
|
273 |
-
var count = 0;
|
274 |
-
|
275 |
-
each(node.childNodes, function(node) {
|
276 |
-
if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))
|
277 |
-
count++;
|
278 |
-
});
|
279 |
-
|
280 |
-
return count;
|
281 |
-
};
|
282 |
-
|
283 |
-
function mergeStyles(node) {
|
284 |
-
var child, clone;
|
285 |
-
|
286 |
-
each(node.childNodes, function(node) {
|
287 |
-
if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
|
288 |
-
child = node;
|
289 |
-
return FALSE; // break loop
|
290 |
-
}
|
291 |
-
});
|
292 |
-
|
293 |
-
// If child was found and of the same type as the current node
|
294 |
-
if (child && matchName(child, format)) {
|
295 |
-
clone = child.cloneNode(FALSE);
|
296 |
-
setElementFormat(clone);
|
297 |
-
|
298 |
-
dom.replace(clone, node, TRUE);
|
299 |
-
dom.remove(child, 1);
|
300 |
-
}
|
301 |
-
|
302 |
-
return clone || node;
|
303 |
-
};
|
304 |
-
|
305 |
-
childCount = getChildCount(node);
|
306 |
-
|
307 |
-
// Remove empty nodes
|
308 |
-
if (childCount === 0) {
|
309 |
-
dom.remove(node, 1);
|
310 |
-
return;
|
311 |
-
}
|
312 |
-
|
313 |
-
if (format.inline || format.wrapper) {
|
314 |
-
// Merges the current node with it's children of similar type to reduce the number of elements
|
315 |
-
if (!format.exact && childCount === 1)
|
316 |
-
node = mergeStyles(node);
|
317 |
-
|
318 |
-
// Remove/merge children
|
319 |
-
each(formatList, function(format) {
|
320 |
-
// Merge all children of similar type will move styles from child to parent
|
321 |
-
// this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
|
322 |
-
// will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
|
323 |
-
each(dom.select(format.inline, node), function(child) {
|
324 |
-
removeFormat(format, vars, child, format.exact ? child : null);
|
325 |
-
});
|
326 |
-
});
|
327 |
-
|
328 |
-
// Remove child if direct parent is of same type
|
329 |
-
if (matchNode(node.parentNode, name, vars)) {
|
330 |
-
dom.remove(node, 1);
|
331 |
-
node = 0;
|
332 |
-
return TRUE;
|
333 |
-
}
|
334 |
-
|
335 |
-
// Look for parent with similar style format
|
336 |
-
if (format.merge_with_parents) {
|
337 |
-
dom.getParent(node.parentNode, function(parent) {
|
338 |
-
if (matchNode(parent, name, vars)) {
|
339 |
-
dom.remove(node, 1);
|
340 |
-
node = 0;
|
341 |
-
return TRUE;
|
342 |
-
}
|
343 |
-
});
|
344 |
-
}
|
345 |
-
|
346 |
-
// Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
|
347 |
-
if (node) {
|
348 |
-
node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
|
349 |
-
node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
|
350 |
-
}
|
351 |
-
}
|
352 |
-
});
|
353 |
-
};
|
354 |
-
|
355 |
-
if (format) {
|
356 |
-
if (node) {
|
357 |
-
rng = dom.createRng();
|
358 |
-
|
359 |
-
rng.setStartBefore(node);
|
360 |
-
rng.setEndAfter(node);
|
361 |
-
|
362 |
-
applyRngStyle(expandRng(rng, formatList));
|
363 |
-
} else {
|
364 |
-
if (!selection.isCollapsed() || !format.inline) {
|
365 |
-
// Apply formatting to selection
|
366 |
-
bookmark = selection.getBookmark();
|
367 |
-
applyRngStyle(expandRng(selection.getRng(TRUE), formatList));
|
368 |
-
|
369 |
-
selection.moveToBookmark(bookmark);
|
370 |
-
selection.setRng(moveStart(selection.getRng(TRUE)));
|
371 |
-
ed.nodeChanged();
|
372 |
-
} else
|
373 |
-
performCaretAction('apply', name, vars);
|
374 |
-
}
|
375 |
-
}
|
376 |
-
};
|
377 |
-
|
378 |
-
/**
|
379 |
-
* Removes the specified format from the current selection or specified node.
|
380 |
-
*
|
381 |
-
* @method remove
|
382 |
-
* @param {String} name Name of format to remove.
|
383 |
-
* @param {Object} vars Optional list of variables to replace within format before removing it.
|
384 |
-
* @param {Node} node Optional node to remove the format from defaults to current selection.
|
385 |
-
*/
|
386 |
-
function remove(name, vars, node) {
|
387 |
-
var formatList = get(name), format = formatList[0], bookmark, i, rng;
|
388 |
-
|
389 |
-
// Merges the styles for each node
|
390 |
-
function process(node) {
|
391 |
-
var children, i, l;
|
392 |
-
|
393 |
-
// Grab the children first since the nodelist might be changed
|
394 |
-
children = tinymce.grep(node.childNodes);
|
395 |
-
|
396 |
-
// Process current node
|
397 |
-
for (i = 0, l = formatList.length; i < l; i++) {
|
398 |
-
if (removeFormat(formatList[i], vars, node, node))
|
399 |
-
break;
|
400 |
-
}
|
401 |
-
|
402 |
-
// Process the children
|
403 |
-
if (format.deep) {
|
404 |
-
for (i = 0, l = children.length; i < l; i++)
|
405 |
-
process(children[i]);
|
406 |
-
}
|
407 |
-
};
|
408 |
-
|
409 |
-
function findFormatRoot(container) {
|
410 |
-
var formatRoot;
|
411 |
-
|
412 |
-
// Find format root
|
413 |
-
each(getParents(container.parentNode).reverse(), function(parent) {
|
414 |
-
var format;
|
415 |
-
|
416 |
-
// Find format root element
|
417 |
-
if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
|
418 |
-
// Is the node matching the format we are looking for
|
419 |
-
format = matchNode(parent, name, vars);
|
420 |
-
if (format && format.split !== false)
|
421 |
-
formatRoot = parent;
|
422 |
-
}
|
423 |
-
});
|
424 |
-
|
425 |
-
return formatRoot;
|
426 |
-
};
|
427 |
-
|
428 |
-
function wrapAndSplit(format_root, container, target, split) {
|
429 |
-
var parent, clone, lastClone, firstClone, i, formatRootParent;
|
430 |
-
|
431 |
-
// Format root found then clone formats and split it
|
432 |
-
if (format_root) {
|
433 |
-
formatRootParent = format_root.parentNode;
|
434 |
-
|
435 |
-
for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
|
436 |
-
clone = parent.cloneNode(FALSE);
|
437 |
-
|
438 |
-
for (i = 0; i < formatList.length; i++) {
|
439 |
-
if (removeFormat(formatList[i], vars, clone, clone)) {
|
440 |
-
clone = 0;
|
441 |
-
break;
|
442 |
-
}
|
443 |
-
}
|
444 |
-
|
445 |
-
// Build wrapper node
|
446 |
-
if (clone) {
|
447 |
-
if (lastClone)
|
448 |
-
clone.appendChild(lastClone);
|
449 |
-
|
450 |
-
if (!firstClone)
|
451 |
-
firstClone = clone;
|
452 |
-
|
453 |
-
lastClone = clone;
|
454 |
-
}
|
455 |
-
}
|
456 |
-
|
457 |
-
// Never split block elements if the format is mixed
|
458 |
-
if (split && (!format.mixed || !isBlock(format_root)))
|
459 |
-
container = dom.split(format_root, container);
|
460 |
-
|
461 |
-
// Wrap container in cloned formats
|
462 |
-
if (lastClone) {
|
463 |
-
target.parentNode.insertBefore(lastClone, target);
|
464 |
-
firstClone.appendChild(target);
|
465 |
-
}
|
466 |
-
}
|
467 |
-
|
468 |
-
return container;
|
469 |
-
};
|
470 |
-
|
471 |
-
function splitToFormatRoot(container) {
|
472 |
-
return wrapAndSplit(findFormatRoot(container), container, container, true);
|
473 |
-
};
|
474 |
-
|
475 |
-
function unwrap(start) {
|
476 |
-
var node = dom.get(start ? '_start' : '_end'),
|
477 |
-
out = node[start ? 'firstChild' : 'lastChild'];
|
478 |
-
|
479 |
-
// If the end is placed within the start the result will be removed
|
480 |
-
// So this checks if the out node is a bookmark node if it is it
|
481 |
-
// checks for another more suitable node
|
482 |
-
if (isBookmarkNode(out))
|
483 |
-
out = out[start ? 'firstChild' : 'lastChild'];
|
484 |
-
|
485 |
-
dom.remove(node, true);
|
486 |
-
|
487 |
-
return out;
|
488 |
-
};
|
489 |
-
|
490 |
-
function removeRngStyle(rng) {
|
491 |
-
var startContainer, endContainer;
|
492 |
-
|
493 |
-
rng = expandRng(rng, formatList, TRUE);
|
494 |
-
|
495 |
-
if (format.split) {
|
496 |
-
startContainer = getContainer(rng, TRUE);
|
497 |
-
endContainer = getContainer(rng);
|
498 |
-
|
499 |
-
if (startContainer != endContainer) {
|
500 |
-
// Wrap start/end nodes in span element since these might be cloned/moved
|
501 |
-
startContainer = wrap(startContainer, 'span', {id : '_start', _mce_type : 'bookmark'});
|
502 |
-
endContainer = wrap(endContainer, 'span', {id : '_end', _mce_type : 'bookmark'});
|
503 |
-
|
504 |
-
// Split start/end
|
505 |
-
splitToFormatRoot(startContainer);
|
506 |
-
splitToFormatRoot(endContainer);
|
507 |
-
|
508 |
-
// Unwrap start/end to get real elements again
|
509 |
-
startContainer = unwrap(TRUE);
|
510 |
-
endContainer = unwrap();
|
511 |
-
} else
|
512 |
-
startContainer = endContainer = splitToFormatRoot(startContainer);
|
513 |
-
|
514 |
-
// Update range positions since they might have changed after the split operations
|
515 |
-
rng.startContainer = startContainer.parentNode;
|
516 |
-
rng.startOffset = nodeIndex(startContainer);
|
517 |
-
rng.endContainer = endContainer.parentNode;
|
518 |
-
rng.endOffset = nodeIndex(endContainer) + 1;
|
519 |
-
}
|
520 |
-
|
521 |
-
// Remove items between start/end
|
522 |
-
rangeUtils.walk(rng, function(nodes) {
|
523 |
-
each(nodes, function(node) {
|
524 |
-
process(node);
|
525 |
-
});
|
526 |
-
});
|
527 |
-
};
|
528 |
-
|
529 |
-
// Handle node
|
530 |
-
if (node) {
|
531 |
-
rng = dom.createRng();
|
532 |
-
rng.setStartBefore(node);
|
533 |
-
rng.setEndAfter(node);
|
534 |
-
removeRngStyle(rng);
|
535 |
-
return;
|
536 |
-
}
|
537 |
-
|
538 |
-
if (!selection.isCollapsed() || !format.inline) {
|
539 |
-
bookmark = selection.getBookmark();
|
540 |
-
removeRngStyle(selection.getRng(TRUE));
|
541 |
-
selection.moveToBookmark(bookmark);
|
542 |
-
ed.nodeChanged();
|
543 |
-
} else
|
544 |
-
performCaretAction('remove', name, vars);
|
545 |
-
};
|
546 |
-
|
547 |
-
/**
|
548 |
-
* Toggles the specified format on/off.
|
549 |
-
*
|
550 |
-
* @method toggle
|
551 |
-
* @param {String} name Name of format to apply/remove.
|
552 |
-
* @param {Object} vars Optional list of variables to replace within format before applying/removing it.
|
553 |
-
* @param {Node} node Optional node to apply the format to or remove from. Defaults to current selection.
|
554 |
-
*/
|
555 |
-
function toggle(name, vars, node) {
|
556 |
-
if (match(name, vars, node))
|
557 |
-
remove(name, vars, node);
|
558 |
-
else
|
559 |
-
apply(name, vars, node);
|
560 |
-
};
|
561 |
-
|
562 |
-
/**
|
563 |
-
* Return true/false if the specified node has the specified format.
|
564 |
-
*
|
565 |
-
* @method matchNode
|
566 |
-
* @param {Node} node Node to check the format on.
|
567 |
-
* @param {String} name Format name to check.
|
568 |
-
* @param {Object} vars Optional list of variables to replace before checking it.
|
569 |
-
* @param {Boolean} similar Match format that has similar properties.
|
570 |
-
* @return {Object} Returns the format object it matches or undefined if it doesn't match.
|
571 |
-
*/
|
572 |
-
function matchNode(node, name, vars, similar) {
|
573 |
-
var formatList = get(name), format, i, classes;
|
574 |
-
|
575 |
-
function matchItems(node, format, item_name) {
|
576 |
-
var key, value, items = format[item_name], i;
|
577 |
-
|
578 |
-
// Check all items
|
579 |
-
if (items) {
|
580 |
-
// Non indexed object
|
581 |
-
if (items.length === undefined) {
|
582 |
-
for (key in items) {
|
583 |
-
if (items.hasOwnProperty(key)) {
|
584 |
-
if (item_name === 'attributes')
|
585 |
-
value = dom.getAttrib(node, key);
|
586 |
-
else
|
587 |
-
value = getStyle(node, key);
|
588 |
-
|
589 |
-
if (similar && !value && !format.exact)
|
590 |
-
return;
|
591 |
-
|
592 |
-
if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))
|
593 |
-
return;
|
594 |
-
}
|
595 |
-
}
|
596 |
-
} else {
|
597 |
-
// Only one match needed for indexed arrays
|
598 |
-
for (i = 0; i < items.length; i++) {
|
599 |
-
if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))
|
600 |
-
return format;
|
601 |
-
}
|
602 |
-
}
|
603 |
-
}
|
604 |
-
|
605 |
-
return format;
|
606 |
-
};
|
607 |
-
|
608 |
-
if (formatList && node) {
|
609 |
-
// Check each format in list
|
610 |
-
for (i = 0; i < formatList.length; i++) {
|
611 |
-
format = formatList[i];
|
612 |
-
|
613 |
-
// Name name, attributes, styles and classes
|
614 |
-
if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
|
615 |
-
// Match classes
|
616 |
-
if (classes = format.classes) {
|
617 |
-
for (i = 0; i < classes.length; i++) {
|
618 |
-
if (!dom.hasClass(node, classes[i]))
|
619 |
-
return;
|
620 |
-
}
|
621 |
-
}
|
622 |
-
|
623 |
-
return format;
|
624 |
-
}
|
625 |
-
}
|
626 |
-
}
|
627 |
-
};
|
628 |
-
|
629 |
-
/**
|
630 |
-
* Matches the current selection or specified node against the specified format name.
|
631 |
-
*
|
632 |
-
* @method match
|
633 |
-
* @param {String} name Name of format to match.
|
634 |
-
* @param {Object} vars Optional list of variables to replace before checking it.
|
635 |
-
* @param {Node} node Optional node to check.
|
636 |
-
* @return {boolean} true/false if the specified selection/node matches the format.
|
637 |
-
*/
|
638 |
-
function match(name, vars, node) {
|
639 |
-
var startNode, i;
|
640 |
-
|
641 |
-
function matchParents(node) {
|
642 |
-
// Find first node with similar format settings
|
643 |
-
node = dom.getParent(node, function(node) {
|
644 |
-
return !!matchNode(node, name, vars, true);
|
645 |
-
});
|
646 |
-
|
647 |
-
// Do an exact check on the similar format element
|
648 |
-
return matchNode(node, name, vars);
|
649 |
-
};
|
650 |
-
|
651 |
-
// Check specified node
|
652 |
-
if (node)
|
653 |
-
return matchParents(node);
|
654 |
-
|
655 |
-
// Check pending formats
|
656 |
-
if (selection.isCollapsed()) {
|
657 |
-
for (i = pendingFormats.apply.length - 1; i >= 0; i--) {
|
658 |
-
if (pendingFormats.apply[i].name == name)
|
659 |
-
return true;
|
660 |
-
}
|
661 |
-
|
662 |
-
for (i = pendingFormats.remove.length - 1; i >= 0; i--) {
|
663 |
-
if (pendingFormats.remove[i].name == name)
|
664 |
-
return false;
|
665 |
-
}
|
666 |
-
|
667 |
-
return matchParents(selection.getNode());
|
668 |
-
}
|
669 |
-
|
670 |
-
// Check selected node
|
671 |
-
node = selection.getNode();
|
672 |
-
if (matchParents(node))
|
673 |
-
return TRUE;
|
674 |
-
|
675 |
-
// Check start node if it's different
|
676 |
-
startNode = selection.getStart();
|
677 |
-
if (startNode != node) {
|
678 |
-
if (matchParents(startNode))
|
679 |
-
return TRUE;
|
680 |
-
}
|
681 |
-
|
682 |
-
return FALSE;
|
683 |
-
};
|
684 |
-
|
685 |
-
/**
|
686 |
-
* Matches the current selection against the array of formats and returns a new array with matching formats.
|
687 |
-
*
|
688 |
-
* @method matchAll
|
689 |
-
* @param {Array} names Name of format to match.
|
690 |
-
* @param {Object} vars Optional list of variables to replace before checking it.
|
691 |
-
* @return {Array} Array with matched formats.
|
692 |
-
*/
|
693 |
-
function matchAll(names, vars) {
|
694 |
-
var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;
|
695 |
-
|
696 |
-
// If the selection is collapsed then check pending formats
|
697 |
-
if (selection.isCollapsed()) {
|
698 |
-
for (ni = 0; ni < names.length; ni++) {
|
699 |
-
// If the name is to be removed, then stop it from being added
|
700 |
-
for (i = pendingFormats.remove.length - 1; i >= 0; i--) {
|
701 |
-
name = names[ni];
|
702 |
-
|
703 |
-
if (pendingFormats.remove[i].name == name) {
|
704 |
-
checkedMap[name] = true;
|
705 |
-
break;
|
706 |
-
}
|
707 |
-
}
|
708 |
-
}
|
709 |
-
|
710 |
-
// If the format is to be applied
|
711 |
-
for (i = pendingFormats.apply.length - 1; i >= 0; i--) {
|
712 |
-
for (ni = 0; ni < names.length; ni++) {
|
713 |
-
name = names[ni];
|
714 |
-
|
715 |
-
if (!checkedMap[name] && pendingFormats.apply[i].name == name) {
|
716 |
-
checkedMap[name] = true;
|
717 |
-
matchedFormatNames.push(name);
|
718 |
-
}
|
719 |
-
}
|
720 |
-
}
|
721 |
-
}
|
722 |
-
|
723 |
-
// Check start of selection for formats
|
724 |
-
startElement = selection.getStart();
|
725 |
-
dom.getParent(startElement, function(node) {
|
726 |
-
var i, name;
|
727 |
-
|
728 |
-
for (i = 0; i < names.length; i++) {
|
729 |
-
name = names[i];
|
730 |
-
|
731 |
-
if (!checkedMap[name] && matchNode(node, name, vars)) {
|
732 |
-
checkedMap[name] = true;
|
733 |
-
matchedFormatNames.push(name);
|
734 |
-
}
|
735 |
-
}
|
736 |
-
});
|
737 |
-
|
738 |
-
return matchedFormatNames;
|
739 |
-
};
|
740 |
-
|
741 |
-
/**
|
742 |
-
* Returns true/false if the specified format can be applied to the current selection or not. It will currently only check the state for selector formats, it returns true on all other format types.
|
743 |
-
*
|
744 |
-
* @method canApply
|
745 |
-
* @param {String} name Name of format to check.
|
746 |
-
* @return {boolean} true/false if the specified format can be applied to the current selection/node.
|
747 |
-
*/
|
748 |
-
function canApply(name) {
|
749 |
-
var formatList = get(name), startNode, parents, i, x, selector;
|
750 |
-
|
751 |
-
if (formatList) {
|
752 |
-
startNode = selection.getStart();
|
753 |
-
parents = getParents(startNode);
|
754 |
-
|
755 |
-
for (x = formatList.length - 1; x >= 0; x--) {
|
756 |
-
selector = formatList[x].selector;
|
757 |
-
|
758 |
-
// Format is not selector based, then always return TRUE
|
759 |
-
if (!selector)
|
760 |
-
return TRUE;
|
761 |
-
|
762 |
-
for (i = parents.length - 1; i >= 0; i--) {
|
763 |
-
if (dom.is(parents[i], selector))
|
764 |
-
return TRUE;
|
765 |
-
}
|
766 |
-
}
|
767 |
-
}
|
768 |
-
|
769 |
-
return FALSE;
|
770 |
-
};
|
771 |
-
|
772 |
-
// Expose to public
|
773 |
-
tinymce.extend(this, {
|
774 |
-
get : get,
|
775 |
-
register : register,
|
776 |
-
apply : apply,
|
777 |
-
remove : remove,
|
778 |
-
toggle : toggle,
|
779 |
-
match : match,
|
780 |
-
matchAll : matchAll,
|
781 |
-
matchNode : matchNode,
|
782 |
-
canApply : canApply
|
783 |
-
});
|
784 |
-
|
785 |
-
// Private functions
|
786 |
-
|
787 |
-
/**
|
788 |
-
* Checks if the specified nodes name matches the format inline/block or selector.
|
789 |
-
*
|
790 |
-
* @private
|
791 |
-
* @param {Node} node Node to match against the specified format.
|
792 |
-
* @param {Object} format Format object o match with.
|
793 |
-
* @return {boolean} true/false if the format matches.
|
794 |
-
*/
|
795 |
-
function matchName(node, format) {
|
796 |
-
// Check for inline match
|
797 |
-
if (isEq(node, format.inline))
|
798 |
-
return TRUE;
|
799 |
-
|
800 |
-
// Check for block match
|
801 |
-
if (isEq(node, format.block))
|
802 |
-
return TRUE;
|
803 |
-
|
804 |
-
// Check for selector match
|
805 |
-
if (format.selector)
|
806 |
-
return dom.is(node, format.selector);
|
807 |
-
};
|
808 |
-
|
809 |
-
/**
|
810 |
-
* Compares two string/nodes regardless of their case.
|
811 |
-
*
|
812 |
-
* @private
|
813 |
-
* @param {String/Node} Node or string to compare.
|
814 |
-
* @param {String/Node} Node or string to compare.
|
815 |
-
* @return {boolean} True/false if they match.
|
816 |
-
*/
|
817 |
-
function isEq(str1, str2) {
|
818 |
-
str1 = str1 || '';
|
819 |
-
str2 = str2 || '';
|
820 |
-
|
821 |
-
str1 = '' + (str1.nodeName || str1);
|
822 |
-
str2 = '' + (str2.nodeName || str2);
|
823 |
-
|
824 |
-
return str1.toLowerCase() == str2.toLowerCase();
|
825 |
-
};
|
826 |
-
|
827 |
-
/**
|
828 |
-
* Returns the style by name on the specified node. This method modifies the style
|
829 |
-
* contents to make it more easy to match. This will resolve a few browser issues.
|
830 |
-
*
|
831 |
-
* @private
|
832 |
-
* @param {Node} node to get style from.
|
833 |
-
* @param {String} name Style name to get.
|
834 |
-
* @return {String} Style item value.
|
835 |
-
*/
|
836 |
-
function getStyle(node, name) {
|
837 |
-
var styleVal = dom.getStyle(node, name);
|
838 |
-
|
839 |
-
// Force the format to hex
|
840 |
-
if (name == 'color' || name == 'backgroundColor')
|
841 |
-
styleVal = dom.toHex(styleVal);
|
842 |
-
|
843 |
-
// Opera will return bold as 700
|
844 |
-
if (name == 'fontWeight' && styleVal == 700)
|
845 |
-
styleVal = 'bold';
|
846 |
-
|
847 |
-
return '' + styleVal;
|
848 |
-
};
|
849 |
-
|
850 |
-
/**
|
851 |
-
* Replaces variables in the value. The variable format is %var.
|
852 |
-
*
|
853 |
-
* @private
|
854 |
-
* @param {String} value Value to replace variables in.
|
855 |
-
* @param {Object} vars Name/value array with variables to replace.
|
856 |
-
* @return {String} New value with replaced variables.
|
857 |
-
*/
|
858 |
-
function replaceVars(value, vars) {
|
859 |
-
if (typeof(value) != "string")
|
860 |
-
value = value(vars);
|
861 |
-
else if (vars) {
|
862 |
-
value = value.replace(/%(\w+)/g, function(str, name) {
|
863 |
-
return vars[name] || str;
|
864 |
-
});
|
865 |
-
}
|
866 |
-
|
867 |
-
return value;
|
868 |
-
};
|
869 |
-
|
870 |
-
function isWhiteSpaceNode(node) {
|
871 |
-
return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue);
|
872 |
-
};
|
873 |
-
|
874 |
-
function wrap(node, name, attrs) {
|
875 |
-
var wrapper = dom.create(name, attrs);
|
876 |
-
|
877 |
-
node.parentNode.insertBefore(wrapper, node);
|
878 |
-
wrapper.appendChild(node);
|
879 |
-
|
880 |
-
return wrapper;
|
881 |
-
};
|
882 |
-
|
883 |
-
/**
|
884 |
-
* Expands the specified range like object to depending on format.
|
885 |
-
*
|
886 |
-
* For example on block formats it will move the start/end position
|
887 |
-
* to the beginning of the current block.
|
888 |
-
*
|
889 |
-
* @private
|
890 |
-
* @param {Object} rng Range like object.
|
891 |
-
* @param {Array} formats Array with formats to expand by.
|
892 |
-
* @return {Object} Expanded range like object.
|
893 |
-
*/
|
894 |
-
function expandRng(rng, format, remove) {
|
895 |
-
var startContainer = rng.startContainer,
|
896 |
-
startOffset = rng.startOffset,
|
897 |
-
endContainer = rng.endContainer,
|
898 |
-
endOffset = rng.endOffset, sibling, lastIdx;
|
899 |
-
|
900 |
-
// This function walks up the tree if there is no siblings before/after the node
|
901 |
-
function findParentContainer(container, child_name, sibling_name, root) {
|
902 |
-
var parent, child;
|
903 |
-
|
904 |
-
root = root || dom.getRoot();
|
905 |
-
|
906 |
-
for (;;) {
|
907 |
-
// Check if we can move up are we at root level or body level
|
908 |
-
parent = container.parentNode;
|
909 |
-
|
910 |
-
// Stop expanding on block elements or root depending on format
|
911 |
-
if (parent == root || (!format[0].block_expand && isBlock(parent)))
|
912 |
-
return container;
|
913 |
-
|
914 |
-
for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) {
|
915 |
-
if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
|
916 |
-
return container;
|
917 |
-
|
918 |
-
if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))
|
919 |
-
return container;
|
920 |
-
}
|
921 |
-
|
922 |
-
container = container.parentNode;
|
923 |
-
}
|
924 |
-
|
925 |
-
return container;
|
926 |
-
};
|
927 |
-
|
928 |
-
// If index based start position then resolve it
|
929 |
-
if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
|
930 |
-
lastIdx = startContainer.childNodes.length - 1;
|
931 |
-
startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
|
932 |
-
|
933 |
-
if (startContainer.nodeType == 3)
|
934 |
-
startOffset = 0;
|
935 |
-
}
|
936 |
-
|
937 |
-
// If index based end position then resolve it
|
938 |
-
if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
|
939 |
-
lastIdx = endContainer.childNodes.length - 1;
|
940 |
-
endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
|
941 |
-
|
942 |
-
if (endContainer.nodeType == 3)
|
943 |
-
endOffset = endContainer.nodeValue.length;
|
944 |
-
}
|
945 |
-
|
946 |
-
// Exclude bookmark nodes if possible
|
947 |
-
if (isBookmarkNode(startContainer.parentNode))
|
948 |
-
startContainer = startContainer.parentNode;
|
949 |
-
|
950 |
-
if (isBookmarkNode(startContainer))
|
951 |
-
startContainer = startContainer.nextSibling || startContainer;
|
952 |
-
|
953 |
-
if (isBookmarkNode(endContainer.parentNode))
|
954 |
-
endContainer = endContainer.parentNode;
|
955 |
-
|
956 |
-
if (isBookmarkNode(endContainer))
|
957 |
-
endContainer = endContainer.previousSibling || endContainer;
|
958 |
-
|
959 |
-
// Move start/end point up the tree if the leaves are sharp and if we are in different containers
|
960 |
-
// Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
|
961 |
-
// This will reduce the number of wrapper elements that needs to be created
|
962 |
-
// Move start point up the tree
|
963 |
-
if (format[0].inline || format[0].block_expand) {
|
964 |
-
startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');
|
965 |
-
endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');
|
966 |
-
}
|
967 |
-
|
968 |
-
// Expand start/end container to matching selector
|
969 |
-
if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
|
970 |
-
function findSelectorEndPoint(container, sibling_name) {
|
971 |
-
var parents, i, y;
|
972 |
-
|
973 |
-
if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name])
|
974 |
-
container = container[sibling_name];
|
975 |
-
|
976 |
-
parents = getParents(container);
|
977 |
-
for (i = 0; i < parents.length; i++) {
|
978 |
-
for (y = 0; y < format.length; y++) {
|
979 |
-
if (dom.is(parents[i], format[y].selector))
|
980 |
-
return parents[i];
|
981 |
-
}
|
982 |
-
}
|
983 |
-
|
984 |
-
return container;
|
985 |
-
};
|
986 |
-
|
987 |
-
// Find new startContainer/endContainer if there is better one
|
988 |
-
startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
|
989 |
-
endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
|
990 |
-
}
|
991 |
-
|
992 |
-
// Expand start/end container to matching block element or text node
|
993 |
-
if (format[0].block || format[0].selector) {
|
994 |
-
function findBlockEndPoint(container, sibling_name, sibling_name2) {
|
995 |
-
var node;
|
996 |
-
|
997 |
-
// Expand to block of similar type
|
998 |
-
if (!format[0].wrapper)
|
999 |
-
node = dom.getParent(container, format[0].block);
|
1000 |
-
|
1001 |
-
// Expand to first wrappable block element or any block element
|
1002 |
-
if (!node)
|
1003 |
-
node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
|
1004 |
-
|
1005 |
-
// Exclude inner lists from wrapping
|
1006 |
-
if (node && format[0].wrapper)
|
1007 |
-
node = getParents(node, 'ul,ol').reverse()[0] || node;
|
1008 |
-
|
1009 |
-
// Didn't find a block element look for first/last wrappable element
|
1010 |
-
if (!node) {
|
1011 |
-
node = container;
|
1012 |
-
|
1013 |
-
while (node[sibling_name] && !isBlock(node[sibling_name])) {
|
1014 |
-
node = node[sibling_name];
|
1015 |
-
|
1016 |
-
// Break on BR but include it will be removed later on
|
1017 |
-
// we can't remove it now since we need to check if it can be wrapped
|
1018 |
-
if (isEq(node, 'br'))
|
1019 |
-
break;
|
1020 |
-
}
|
1021 |
-
}
|
1022 |
-
|
1023 |
-
return node || container;
|
1024 |
-
};
|
1025 |
-
|
1026 |
-
// Find new startContainer/endContainer if there is better one
|
1027 |
-
startContainer = findBlockEndPoint(startContainer, 'previousSibling');
|
1028 |
-
endContainer = findBlockEndPoint(endContainer, 'nextSibling');
|
1029 |
-
|
1030 |
-
// Non block element then try to expand up the leaf
|
1031 |
-
if (format[0].block) {
|
1032 |
-
if (!isBlock(startContainer))
|
1033 |
-
startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');
|
1034 |
-
|
1035 |
-
if (!isBlock(endContainer))
|
1036 |
-
endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');
|
1037 |
-
}
|
1038 |
-
}
|
1039 |
-
|
1040 |
-
// Setup index for startContainer
|
1041 |
-
if (startContainer.nodeType == 1) {
|
1042 |
-
startOffset = nodeIndex(startContainer);
|
1043 |
-
startContainer = startContainer.parentNode;
|
1044 |
-
}
|
1045 |
-
|
1046 |
-
// Setup index for endContainer
|
1047 |
-
if (endContainer.nodeType == 1) {
|
1048 |
-
endOffset = nodeIndex(endContainer) + 1;
|
1049 |
-
endContainer = endContainer.parentNode;
|
1050 |
-
}
|
1051 |
-
|
1052 |
-
// Return new range like object
|
1053 |
-
return {
|
1054 |
-
startContainer : startContainer,
|
1055 |
-
startOffset : startOffset,
|
1056 |
-
endContainer : endContainer,
|
1057 |
-
endOffset : endOffset
|
1058 |
-
};
|
1059 |
-
}
|
1060 |
-
|
1061 |
-
/**
|
1062 |
-
* Removes the specified format for the specified node. It will also remove the node if it doesn't have
|
1063 |
-
* any attributes if the format specifies it to do so.
|
1064 |
-
*
|
1065 |
-
* @private
|
1066 |
-
* @param {Object} format Format object with items to remove from node.
|
1067 |
-
* @param {Object} vars Name/value object with variables to apply to format.
|
1068 |
-
* @param {Node} node Node to remove the format styles on.
|
1069 |
-
* @param {Node} compare_node Optional compare node, if specified the styles will be compared to that node.
|
1070 |
-
* @return {Boolean} True/false if the node was removed or not.
|
1071 |
-
*/
|
1072 |
-
function removeFormat(format, vars, node, compare_node) {
|
1073 |
-
var i, attrs, stylesModified;
|
1074 |
-
|
1075 |
-
// Check if node matches format
|
1076 |
-
if (!matchName(node, format))
|
1077 |
-
return FALSE;
|
1078 |
-
|
1079 |
-
// Should we compare with format attribs and styles
|
1080 |
-
if (format.remove != 'all') {
|
1081 |
-
// Remove styles
|
1082 |
-
each(format.styles, function(value, name) {
|
1083 |
-
value = replaceVars(value, vars);
|
1084 |
-
|
1085 |
-
// Indexed array
|
1086 |
-
if (typeof(name) === 'number') {
|
1087 |
-
name = value;
|
1088 |
-
compare_node = 0;
|
1089 |
-
}
|
1090 |
-
|
1091 |
-
if (!compare_node || isEq(getStyle(compare_node, name), value))
|
1092 |
-
dom.setStyle(node, name, '');
|
1093 |
-
|
1094 |
-
stylesModified = 1;
|
1095 |
-
});
|
1096 |
-
|
1097 |
-
// Remove style attribute if it's empty
|
1098 |
-
if (stylesModified && dom.getAttrib(node, 'style') == '') {
|
1099 |
-
node.removeAttribute('style');
|
1100 |
-
node.removeAttribute('_mce_style');
|
1101 |
-
}
|
1102 |
-
|
1103 |
-
// Remove attributes
|
1104 |
-
each(format.attributes, function(value, name) {
|
1105 |
-
var valueOut;
|
1106 |
-
|
1107 |
-
value = replaceVars(value, vars);
|
1108 |
-
|
1109 |
-
// Indexed array
|
1110 |
-
if (typeof(name) === 'number') {
|
1111 |
-
name = value;
|
1112 |
-
compare_node = 0;
|
1113 |
-
}
|
1114 |
-
|
1115 |
-
if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
|
1116 |
-
// Keep internal classes
|
1117 |
-
if (name == 'class') {
|
1118 |
-
value = dom.getAttrib(node, name);
|
1119 |
-
if (value) {
|
1120 |
-
// Build new class value where everything is removed except the internal prefixed classes
|
1121 |
-
valueOut = '';
|
1122 |
-
each(value.split(/\s+/), function(cls) {
|
1123 |
-
if (/mce\w+/.test(cls))
|
1124 |
-
valueOut += (valueOut ? ' ' : '') + cls;
|
1125 |
-
});
|
1126 |
-
|
1127 |
-
// We got some internal classes left
|
1128 |
-
if (valueOut) {
|
1129 |
-
dom.setAttrib(node, name, valueOut);
|
1130 |
-
return;
|
1131 |
-
}
|
1132 |
-
}
|
1133 |
-
}
|
1134 |
-
|
1135 |
-
// IE6 has a bug where the attribute doesn't get removed correctly
|
1136 |
-
if (name == "class")
|
1137 |
-
node.removeAttribute('className');
|
1138 |
-
|
1139 |
-
// Remove mce prefixed attributes
|
1140 |
-
if (MCE_ATTR_RE.test(name))
|
1141 |
-
node.removeAttribute('_mce_' + name);
|
1142 |
-
|
1143 |
-
node.removeAttribute(name);
|
1144 |
-
}
|
1145 |
-
});
|
1146 |
-
|
1147 |
-
// Remove classes
|
1148 |
-
each(format.classes, function(value) {
|
1149 |
-
value = replaceVars(value, vars);
|
1150 |
-
|
1151 |
-
if (!compare_node || dom.hasClass(compare_node, value))
|
1152 |
-
dom.removeClass(node, value);
|
1153 |
-
});
|
1154 |
-
|
1155 |
-
// Check for non internal attributes
|
1156 |
-
attrs = dom.getAttribs(node);
|
1157 |
-
for (i = 0; i < attrs.length; i++) {
|
1158 |
-
if (attrs[i].nodeName.indexOf('_') !== 0)
|
1159 |
-
return FALSE;
|
1160 |
-
}
|
1161 |
-
}
|
1162 |
-
|
1163 |
-
// Remove the inline child if it's empty for example <b> or <span>
|
1164 |
-
if (format.remove != 'none') {
|
1165 |
-
removeNode(node, format);
|
1166 |
-
return TRUE;
|
1167 |
-
}
|
1168 |
-
};
|
1169 |
-
|
1170 |
-
/**
|
1171 |
-
* Removes the node and wrap it's children in paragraphs before doing so or
|
1172 |
-
* appends BR elements to the beginning/end of the block element if forcedRootBlocks is disabled.
|
1173 |
-
*
|
1174 |
-
* If the div in the node below gets removed:
|
1175 |
-
* text<div>text</div>text
|
1176 |
-
*
|
1177 |
-
* Output becomes:
|
1178 |
-
* text<div><br />text<br /></div>text
|
1179 |
-
*
|
1180 |
-
* So when the div is removed the result is:
|
1181 |
-
* text<br />text<br />text
|
1182 |
-
*
|
1183 |
-
* @private
|
1184 |
-
* @param {Node} node Node to remove + apply BR/P elements to.
|
1185 |
-
* @param {Object} format Format rule.
|
1186 |
-
* @return {Node} Input node.
|
1187 |
-
*/
|
1188 |
-
function removeNode(node, format) {
|
1189 |
-
var parentNode = node.parentNode, rootBlockElm;
|
1190 |
-
|
1191 |
-
if (format.block) {
|
1192 |
-
if (!forcedRootBlock) {
|
1193 |
-
function find(node, next, inc) {
|
1194 |
-
node = getNonWhiteSpaceSibling(node, next, inc);
|
1195 |
-
|
1196 |
-
return !node || (node.nodeName == 'BR' || isBlock(node));
|
1197 |
-
};
|
1198 |
-
|
1199 |
-
// Append BR elements if needed before we remove the block
|
1200 |
-
if (isBlock(node) && !isBlock(parentNode)) {
|
1201 |
-
if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))
|
1202 |
-
node.insertBefore(dom.create('br'), node.firstChild);
|
1203 |
-
|
1204 |
-
if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))
|
1205 |
-
node.appendChild(dom.create('br'));
|
1206 |
-
}
|
1207 |
-
} else {
|
1208 |
-
// Wrap the block in a forcedRootBlock if we are at the root of document
|
1209 |
-
if (parentNode == dom.getRoot()) {
|
1210 |
-
if (!format.list_block || !isEq(node, format.list_block)) {
|
1211 |
-
each(tinymce.grep(node.childNodes), function(node) {
|
1212 |
-
if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
|
1213 |
-
if (!rootBlockElm)
|
1214 |
-
rootBlockElm = wrap(node, forcedRootBlock);
|
1215 |
-
else
|
1216 |
-
rootBlockElm.appendChild(node);
|
1217 |
-
} else
|
1218 |
-
rootBlockElm = 0;
|
1219 |
-
});
|
1220 |
-
}
|
1221 |
-
}
|
1222 |
-
}
|
1223 |
-
}
|
1224 |
-
|
1225 |
-
// Never remove nodes that isn't the specified inline element if a selector is specified too
|
1226 |
-
if (format.selector && format.inline && !isEq(format.inline, node))
|
1227 |
-
return;
|
1228 |
-
|
1229 |
-
dom.remove(node, 1);
|
1230 |
-
};
|
1231 |
-
|
1232 |
-
/**
|
1233 |
-
* Returns the next/previous non whitespace node.
|
1234 |
-
*
|
1235 |
-
* @private
|
1236 |
-
* @param {Node} node Node to start at.
|
1237 |
-
* @param {boolean} next (Optional) Include next or previous node defaults to previous.
|
1238 |
-
* @param {boolean} inc (Optional) Include the current node in checking. Defaults to false.
|
1239 |
-
* @return {Node} Next or previous node or undefined if it wasn't found.
|
1240 |
-
*/
|
1241 |
-
function getNonWhiteSpaceSibling(node, next, inc) {
|
1242 |
-
if (node) {
|
1243 |
-
next = next ? 'nextSibling' : 'previousSibling';
|
1244 |
-
|
1245 |
-
for (node = inc ? node : node[next]; node; node = node[next]) {
|
1246 |
-
if (node.nodeType == 1 || !isWhiteSpaceNode(node))
|
1247 |
-
return node;
|
1248 |
-
}
|
1249 |
-
}
|
1250 |
-
};
|
1251 |
-
|
1252 |
-
/**
|
1253 |
-
* Checks if the specified node is a bookmark node or not.
|
1254 |
-
*
|
1255 |
-
* @param {Node} node Node to check if it's a bookmark node or not.
|
1256 |
-
* @return {Boolean} true/false if the node is a bookmark node.
|
1257 |
-
*/
|
1258 |
-
function isBookmarkNode(node) {
|
1259 |
-
return node && node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark';
|
1260 |
-
};
|
1261 |
-
|
1262 |
-
/**
|
1263 |
-
* Merges the next/previous sibling element if they match.
|
1264 |
-
*
|
1265 |
-
* @private
|
1266 |
-
* @param {Node} prev Previous node to compare/merge.
|
1267 |
-
* @param {Node} next Next node to compare/merge.
|
1268 |
-
* @return {Node} Next node if we didn't merge and prev node if we did.
|
1269 |
-
*/
|
1270 |
-
function mergeSiblings(prev, next) {
|
1271 |
-
var marker, sibling, tmpSibling;
|
1272 |
-
|
1273 |
-
/**
|
1274 |
-
* Compares two nodes and checks if it's attributes and styles matches.
|
1275 |
-
* This doesn't compare classes as items since their order is significant.
|
1276 |
-
*
|
1277 |
-
* @private
|
1278 |
-
* @param {Node} node1 First node to compare with.
|
1279 |
-
* @param {Node} node2 Second node to compare with.
|
1280 |
-
* @return {boolean} True/false if the nodes are the same or not.
|
1281 |
-
*/
|
1282 |
-
function compareElements(node1, node2) {
|
1283 |
-
// Not the same name
|
1284 |
-
if (node1.nodeName != node2.nodeName)
|
1285 |
-
return FALSE;
|
1286 |
-
|
1287 |
-
/**
|
1288 |
-
* Returns all the nodes attributes excluding internal ones, styles and classes.
|
1289 |
-
*
|
1290 |
-
* @private
|
1291 |
-
* @param {Node} node Node to get attributes from.
|
1292 |
-
* @return {Object} Name/value object with attributes and attribute values.
|
1293 |
-
*/
|
1294 |
-
function getAttribs(node) {
|
1295 |
-
var attribs = {};
|
1296 |
-
|
1297 |
-
each(dom.getAttribs(node), function(attr) {
|
1298 |
-
var name = attr.nodeName.toLowerCase();
|
1299 |
-
|
1300 |
-
// Don't compare internal attributes or style
|
1301 |
-
if (name.indexOf('_') !== 0 && name !== 'style')
|
1302 |
-
attribs[name] = dom.getAttrib(node, name);
|
1303 |
-
});
|
1304 |
-
|
1305 |
-
return attribs;
|
1306 |
-
};
|
1307 |
-
|
1308 |
-
/**
|
1309 |
-
* Compares two objects checks if it's key + value exists in the other one.
|
1310 |
-
*
|
1311 |
-
* @private
|
1312 |
-
* @param {Object} obj1 First object to compare.
|
1313 |
-
* @param {Object} obj2 Second object to compare.
|
1314 |
-
* @return {boolean} True/false if the objects matches or not.
|
1315 |
-
*/
|
1316 |
-
function compareObjects(obj1, obj2) {
|
1317 |
-
var value, name;
|
1318 |
-
|
1319 |
-
for (name in obj1) {
|
1320 |
-
// Obj1 has item obj2 doesn't have
|
1321 |
-
if (obj1.hasOwnProperty(name)) {
|
1322 |
-
value = obj2[name];
|
1323 |
-
|
1324 |
-
// Obj2 doesn't have obj1 item
|
1325 |
-
if (value === undefined)
|
1326 |
-
return FALSE;
|
1327 |
-
|
1328 |
-
// Obj2 item has a different value
|
1329 |
-
if (obj1[name] != value)
|
1330 |
-
return FALSE;
|
1331 |
-
|
1332 |
-
// Delete similar value
|
1333 |
-
delete obj2[name];
|
1334 |
-
}
|
1335 |
-
}
|
1336 |
-
|
1337 |
-
// Check if obj 2 has something obj 1 doesn't have
|
1338 |
-
for (name in obj2) {
|
1339 |
-
// Obj2 has item obj1 doesn't have
|
1340 |
-
if (obj2.hasOwnProperty(name))
|
1341 |
-
return FALSE;
|
1342 |
-
}
|
1343 |
-
|
1344 |
-
return TRUE;
|
1345 |
-
};
|
1346 |
-
|
1347 |
-
// Attribs are not the same
|
1348 |
-
if (!compareObjects(getAttribs(node1), getAttribs(node2)))
|
1349 |
-
return FALSE;
|
1350 |
-
|
1351 |
-
// Styles are not the same
|
1352 |
-
if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))
|
1353 |
-
return FALSE;
|
1354 |
-
|
1355 |
-
return TRUE;
|
1356 |
-
};
|
1357 |
-
|
1358 |
-
// Check if next/prev exists and that they are elements
|
1359 |
-
if (prev && next) {
|
1360 |
-
function findElementSibling(node, sibling_name) {
|
1361 |
-
for (sibling = node; sibling; sibling = sibling[sibling_name]) {
|
1362 |
-
if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))
|
1363 |
-
return node;
|
1364 |
-
|
1365 |
-
if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
|
1366 |
-
return sibling;
|
1367 |
-
}
|
1368 |
-
|
1369 |
-
return node;
|
1370 |
-
};
|
1371 |
-
|
1372 |
-
// If previous sibling is empty then jump over it
|
1373 |
-
prev = findElementSibling(prev, 'previousSibling');
|
1374 |
-
next = findElementSibling(next, 'nextSibling');
|
1375 |
-
|
1376 |
-
// Compare next and previous nodes
|
1377 |
-
if (compareElements(prev, next)) {
|
1378 |
-
// Append nodes between
|
1379 |
-
for (sibling = prev.nextSibling; sibling && sibling != next;) {
|
1380 |
-
tmpSibling = sibling;
|
1381 |
-
sibling = sibling.nextSibling;
|
1382 |
-
prev.appendChild(tmpSibling);
|
1383 |
-
}
|
1384 |
-
|
1385 |
-
// Remove next node
|
1386 |
-
dom.remove(next);
|
1387 |
-
|
1388 |
-
// Move children into prev node
|
1389 |
-
each(tinymce.grep(next.childNodes), function(node) {
|
1390 |
-
prev.appendChild(node);
|
1391 |
-
});
|
1392 |
-
|
1393 |
-
return prev;
|
1394 |
-
}
|
1395 |
-
}
|
1396 |
-
|
1397 |
-
return next;
|
1398 |
-
};
|
1399 |
-
|
1400 |
-
/**
|
1401 |
-
* Returns true/false if the specified node is a text block or not.
|
1402 |
-
*
|
1403 |
-
* @private
|
1404 |
-
* @param {Node} node Node to check.
|
1405 |
-
* @return {boolean} True/false if the node is a text block.
|
1406 |
-
*/
|
1407 |
-
function isTextBlock(name) {
|
1408 |
-
return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);
|
1409 |
-
};
|
1410 |
-
|
1411 |
-
function getContainer(rng, start) {
|
1412 |
-
var container, offset, lastIdx;
|
1413 |
-
|
1414 |
-
container = rng[start ? 'startContainer' : 'endContainer'];
|
1415 |
-
offset = rng[start ? 'startOffset' : 'endOffset'];
|
1416 |
-
|
1417 |
-
if (container.nodeType == 1) {
|
1418 |
-
lastIdx = container.childNodes.length - 1;
|
1419 |
-
|
1420 |
-
if (!start && offset)
|
1421 |
-
offset--;
|
1422 |
-
|
1423 |
-
container = container.childNodes[offset > lastIdx ? lastIdx : offset];
|
1424 |
-
}
|
1425 |
-
|
1426 |
-
return container;
|
1427 |
-
};
|
1428 |
-
|
1429 |
-
function performCaretAction(type, name, vars) {
|
1430 |
-
var i, currentPendingFormats = pendingFormats[type],
|
1431 |
-
otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply'];
|
1432 |
-
|
1433 |
-
function hasPending() {
|
1434 |
-
return pendingFormats.apply.length || pendingFormats.remove.length;
|
1435 |
-
};
|
1436 |
-
|
1437 |
-
function resetPending() {
|
1438 |
-
pendingFormats.apply = [];
|
1439 |
-
pendingFormats.remove = [];
|
1440 |
-
};
|
1441 |
-
|
1442 |
-
function perform(caret_node) {
|
1443 |
-
// Apply pending formats
|
1444 |
-
each(pendingFormats.apply.reverse(), function(item) {
|
1445 |
-
apply(item.name, item.vars, caret_node);
|
1446 |
-
});
|
1447 |
-
|
1448 |
-
// Remove pending formats
|
1449 |
-
each(pendingFormats.remove.reverse(), function(item) {
|
1450 |
-
remove(item.name, item.vars, caret_node);
|
1451 |
-
});
|
1452 |
-
|
1453 |
-
dom.remove(caret_node, 1);
|
1454 |
-
resetPending();
|
1455 |
-
};
|
1456 |
-
|
1457 |
-
// Check if it already exists then ignore it
|
1458 |
-
for (i = currentPendingFormats.length - 1; i >= 0; i--) {
|
1459 |
-
if (currentPendingFormats[i].name == name)
|
1460 |
-
return;
|
1461 |
-
}
|
1462 |
-
|
1463 |
-
currentPendingFormats.push({name : name, vars : vars});
|
1464 |
-
|
1465 |
-
// Check if it's in the other type, then remove it
|
1466 |
-
for (i = otherPendingFormats.length - 1; i >= 0; i--) {
|
1467 |
-
if (otherPendingFormats[i].name == name)
|
1468 |
-
otherPendingFormats.splice(i, 1);
|
1469 |
-
}
|
1470 |
-
|
1471 |
-
// Pending apply or remove formats
|
1472 |
-
if (hasPending()) {
|
1473 |
-
ed.getDoc().execCommand('FontName', false, 'mceinline');
|
1474 |
-
pendingFormats.lastRng = selection.getRng();
|
1475 |
-
|
1476 |
-
// IE will convert the current word
|
1477 |
-
each(dom.select('font,span'), function(node) {
|
1478 |
-
var bookmark;
|
1479 |
-
|
1480 |
-
if (isCaretNode(node)) {
|
1481 |
-
bookmark = selection.getBookmark();
|
1482 |
-
perform(node);
|
1483 |
-
selection.moveToBookmark(bookmark);
|
1484 |
-
ed.nodeChanged();
|
1485 |
-
}
|
1486 |
-
});
|
1487 |
-
|
1488 |
-
// Only register listeners once if we need to
|
1489 |
-
if (!pendingFormats.isListening && hasPending()) {
|
1490 |
-
pendingFormats.isListening = true;
|
1491 |
-
|
1492 |
-
each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) {
|
1493 |
-
ed[event].addToTop(function(ed, e) {
|
1494 |
-
// Do we have pending formats and is the selection moved has moved
|
1495 |
-
if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) {
|
1496 |
-
each(dom.select('font,span'), function(node) {
|
1497 |
-
var textNode, rng;
|
1498 |
-
|
1499 |
-
// Look for marker
|
1500 |
-
if (isCaretNode(node)) {
|
1501 |
-
textNode = node.firstChild;
|
1502 |
-
|
1503 |
-
if (textNode) {
|
1504 |
-
perform(node);
|
1505 |
-
|
1506 |
-
rng = dom.createRng();
|
1507 |
-
rng.setStart(textNode, textNode.nodeValue.length);
|
1508 |
-
rng.setEnd(textNode, textNode.nodeValue.length);
|
1509 |
-
selection.setRng(rng);
|
1510 |
-
ed.nodeChanged();
|
1511 |
-
} else
|
1512 |
-
dom.remove(node);
|
1513 |
-
}
|
1514 |
-
});
|
1515 |
-
|
1516 |
-
// Always unbind and clear pending styles on keyup
|
1517 |
-
if (e.type == 'keyup' || e.type == 'mouseup')
|
1518 |
-
resetPending();
|
1519 |
-
}
|
1520 |
-
});
|
1521 |
-
});
|
1522 |
-
}
|
1523 |
-
}
|
1524 |
-
};
|
1525 |
-
};
|
1526 |
-
})(tinymce);
|
1 |
+
/**
|
2 |
+
* Formatter.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
/**
|
13 |
+
* Text formatter engine class. This class is used to apply formats like bold, italic, font size
|
14 |
+
* etc to the current selection or specific nodes. This engine was build to replace the browsers
|
15 |
+
* default formatting logic for execCommand due to it's inconsistant and buggy behavior.
|
16 |
+
*
|
17 |
+
* @class tinymce.Formatter
|
18 |
+
* @example
|
19 |
+
* tinymce.activeEditor.formatter.register('mycustomformat', {
|
20 |
+
* inline : 'span',
|
21 |
+
* styles : {color : '#ff0000'}
|
22 |
+
* });
|
23 |
+
*
|
24 |
+
* tinymce.activeEditor.formatter.apply('mycustomformat');
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Constructs a new formatter instance.
|
29 |
+
*
|
30 |
+
* @constructor Formatter
|
31 |
+
* @param {tinymce.Editor} ed Editor instance to construct the formatter engine to.
|
32 |
+
*/
|
33 |
+
tinymce.Formatter = function(ed) {
|
34 |
+
var formats = {},
|
35 |
+
each = tinymce.each,
|
36 |
+
dom = ed.dom,
|
37 |
+
selection = ed.selection,
|
38 |
+
TreeWalker = tinymce.dom.TreeWalker,
|
39 |
+
rangeUtils = new tinymce.dom.RangeUtils(dom),
|
40 |
+
isValid = ed.schema.isValid,
|
41 |
+
isBlock = dom.isBlock,
|
42 |
+
forcedRootBlock = ed.settings.forced_root_block,
|
43 |
+
nodeIndex = dom.nodeIndex,
|
44 |
+
INVISIBLE_CHAR = '\uFEFF',
|
45 |
+
MCE_ATTR_RE = /^(src|href|style)$/,
|
46 |
+
FALSE = false,
|
47 |
+
TRUE = true,
|
48 |
+
undefined,
|
49 |
+
pendingFormats = {apply : [], remove : []};
|
50 |
+
|
51 |
+
function isArray(obj) {
|
52 |
+
return obj instanceof Array;
|
53 |
+
};
|
54 |
+
|
55 |
+
function getParents(node, selector) {
|
56 |
+
return dom.getParents(node, selector, dom.getRoot());
|
57 |
+
};
|
58 |
+
|
59 |
+
function isCaretNode(node) {
|
60 |
+
return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline');
|
61 |
+
};
|
62 |
+
|
63 |
+
// Public functions
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Returns the format by name or all formats if no name is specified.
|
67 |
+
*
|
68 |
+
* @method get
|
69 |
+
* @param {String} name Optional name to retrive by.
|
70 |
+
* @return {Array/Object} Array/Object with all registred formats or a specific format.
|
71 |
+
*/
|
72 |
+
function get(name) {
|
73 |
+
return name ? formats[name] : formats;
|
74 |
+
};
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Registers a specific format by name.
|
78 |
+
*
|
79 |
+
* @method register
|
80 |
+
* @param {Object/String} name Name of the format for example "bold".
|
81 |
+
* @param {Object/Array} format Optional format object or array of format variants can only be omitted if the first arg is an object.
|
82 |
+
*/
|
83 |
+
function register(name, format) {
|
84 |
+
if (name) {
|
85 |
+
if (typeof(name) !== 'string') {
|
86 |
+
each(name, function(format, name) {
|
87 |
+
register(name, format);
|
88 |
+
});
|
89 |
+
} else {
|
90 |
+
// Force format into array and add it to internal collection
|
91 |
+
format = format.length ? format : [format];
|
92 |
+
|
93 |
+
each(format, function(format) {
|
94 |
+
// Set deep to false by default on selector formats this to avoid removing
|
95 |
+
// alignment on images inside paragraphs when alignment is changed on paragraphs
|
96 |
+
if (format.deep === undefined)
|
97 |
+
format.deep = !format.selector;
|
98 |
+
|
99 |
+
// Default to true
|
100 |
+
if (format.split === undefined)
|
101 |
+
format.split = !format.selector || format.inline;
|
102 |
+
|
103 |
+
// Default to true
|
104 |
+
if (format.remove === undefined && format.selector && !format.inline)
|
105 |
+
format.remove = 'none';
|
106 |
+
|
107 |
+
// Mark format as a mixed format inline + block level
|
108 |
+
if (format.selector && format.inline) {
|
109 |
+
format.mixed = true;
|
110 |
+
format.block_expand = true;
|
111 |
+
}
|
112 |
+
|
113 |
+
// Split classes if needed
|
114 |
+
if (typeof(format.classes) === 'string')
|
115 |
+
format.classes = format.classes.split(/\s+/);
|
116 |
+
});
|
117 |
+
|
118 |
+
formats[name] = format;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
};
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Applies the specified format to the current selection or specified node.
|
125 |
+
*
|
126 |
+
* @method apply
|
127 |
+
* @param {String} name Name of format to apply.
|
128 |
+
* @param {Object} vars Optional list of variables to replace within format before applying it.
|
129 |
+
* @param {Node} node Optional node to apply the format to defaults to current selection.
|
130 |
+
*/
|
131 |
+
function apply(name, vars, node) {
|
132 |
+
var formatList = get(name), format = formatList[0], bookmark, rng, i;
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Moves the start to the first suitable text node.
|
136 |
+
*/
|
137 |
+
function moveStart(rng) {
|
138 |
+
var container = rng.startContainer,
|
139 |
+
offset = rng.startOffset,
|
140 |
+
walker, node;
|
141 |
+
|
142 |
+
// Move startContainer/startOffset in to a suitable node
|
143 |
+
if (container.nodeType == 1 || container.nodeValue === "") {
|
144 |
+
container = container.nodeType == 1 ? container.childNodes[offset] : container;
|
145 |
+
|
146 |
+
// Might fail if the offset is behind the last element in it's container
|
147 |
+
if (container) {
|
148 |
+
walker = new TreeWalker(container, container.parentNode);
|
149 |
+
for (node = walker.current(); node; node = walker.next()) {
|
150 |
+
if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
|
151 |
+
rng.setStart(node, 0);
|
152 |
+
break;
|
153 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
}
|
157 |
+
|
158 |
+
return rng;
|
159 |
+
};
|
160 |
+
|
161 |
+
function setElementFormat(elm, fmt) {
|
162 |
+
fmt = fmt || format;
|
163 |
+
|
164 |
+
if (elm) {
|
165 |
+
each(fmt.styles, function(value, name) {
|
166 |
+
dom.setStyle(elm, name, replaceVars(value, vars));
|
167 |
+
});
|
168 |
+
|
169 |
+
each(fmt.attributes, function(value, name) {
|
170 |
+
dom.setAttrib(elm, name, replaceVars(value, vars));
|
171 |
+
});
|
172 |
+
|
173 |
+
each(fmt.classes, function(value) {
|
174 |
+
value = replaceVars(value, vars);
|
175 |
+
|
176 |
+
if (!dom.hasClass(elm, value))
|
177 |
+
dom.addClass(elm, value);
|
178 |
+
});
|
179 |
+
}
|
180 |
+
};
|
181 |
+
|
182 |
+
function applyRngStyle(rng) {
|
183 |
+
var newWrappers = [], wrapName, wrapElm;
|
184 |
+
|
185 |
+
// Setup wrapper element
|
186 |
+
wrapName = format.inline || format.block;
|
187 |
+
wrapElm = dom.create(wrapName);
|
188 |
+
setElementFormat(wrapElm);
|
189 |
+
|
190 |
+
rangeUtils.walk(rng, function(nodes) {
|
191 |
+
var currentWrapElm;
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Process a list of nodes wrap them.
|
195 |
+
*/
|
196 |
+
function process(node) {
|
197 |
+
var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found;
|
198 |
+
|
199 |
+
// Stop wrapping on br elements
|
200 |
+
if (isEq(nodeName, 'br')) {
|
201 |
+
currentWrapElm = 0;
|
202 |
+
|
203 |
+
// Remove any br elements when we wrap things
|
204 |
+
if (format.block)
|
205 |
+
dom.remove(node);
|
206 |
+
|
207 |
+
return;
|
208 |
+
}
|
209 |
+
|
210 |
+
// If node is wrapper type
|
211 |
+
if (format.wrapper && matchNode(node, name, vars)) {
|
212 |
+
currentWrapElm = 0;
|
213 |
+
return;
|
214 |
+
}
|
215 |
+
|
216 |
+
// Can we rename the block
|
217 |
+
if (format.block && !format.wrapper && isTextBlock(nodeName)) {
|
218 |
+
node = dom.rename(node, wrapName);
|
219 |
+
setElementFormat(node);
|
220 |
+
newWrappers.push(node);
|
221 |
+
currentWrapElm = 0;
|
222 |
+
return;
|
223 |
+
}
|
224 |
+
|
225 |
+
// Handle selector patterns
|
226 |
+
if (format.selector) {
|
227 |
+
// Look for matching formats
|
228 |
+
each(formatList, function(format) {
|
229 |
+
if (dom.is(node, format.selector) && !isCaretNode(node)) {
|
230 |
+
setElementFormat(node, format);
|
231 |
+
found = true;
|
232 |
+
}
|
233 |
+
});
|
234 |
+
|
235 |
+
// Continue processing if a selector match wasn't found and a inline element is defined
|
236 |
+
if (!format.inline || found) {
|
237 |
+
currentWrapElm = 0;
|
238 |
+
return;
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
// Is it valid to wrap this item
|
243 |
+
if (isValid(wrapName, nodeName) && isValid(parentName, wrapName)) {
|
244 |
+
// Start wrapping
|
245 |
+
if (!currentWrapElm) {
|
246 |
+
// Wrap the node
|
247 |
+
currentWrapElm = wrapElm.cloneNode(FALSE);
|
248 |
+
node.parentNode.insertBefore(currentWrapElm, node);
|
249 |
+
newWrappers.push(currentWrapElm);
|
250 |
+
}
|
251 |
+
|
252 |
+
currentWrapElm.appendChild(node);
|
253 |
+
} else {
|
254 |
+
// Start a new wrapper for possible children
|
255 |
+
currentWrapElm = 0;
|
256 |
+
|
257 |
+
each(tinymce.grep(node.childNodes), process);
|
258 |
+
|
259 |
+
// End the last wrapper
|
260 |
+
currentWrapElm = 0;
|
261 |
+
}
|
262 |
+
};
|
263 |
+
|
264 |
+
// Process siblings from range
|
265 |
+
each(nodes, process);
|
266 |
+
});
|
267 |
+
|
268 |
+
// Cleanup
|
269 |
+
each(newWrappers, function(node) {
|
270 |
+
var childCount;
|
271 |
+
|
272 |
+
function getChildCount(node) {
|
273 |
+
var count = 0;
|
274 |
+
|
275 |
+
each(node.childNodes, function(node) {
|
276 |
+
if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))
|
277 |
+
count++;
|
278 |
+
});
|
279 |
+
|
280 |
+
return count;
|
281 |
+
};
|
282 |
+
|
283 |
+
function mergeStyles(node) {
|
284 |
+
var child, clone;
|
285 |
+
|
286 |
+
each(node.childNodes, function(node) {
|
287 |
+
if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
|
288 |
+
child = node;
|
289 |
+
return FALSE; // break loop
|
290 |
+
}
|
291 |
+
});
|
292 |
+
|
293 |
+
// If child was found and of the same type as the current node
|
294 |
+
if (child && matchName(child, format)) {
|
295 |
+
clone = child.cloneNode(FALSE);
|
296 |
+
setElementFormat(clone);
|
297 |
+
|
298 |
+
dom.replace(clone, node, TRUE);
|
299 |
+
dom.remove(child, 1);
|
300 |
+
}
|
301 |
+
|
302 |
+
return clone || node;
|
303 |
+
};
|
304 |
+
|
305 |
+
childCount = getChildCount(node);
|
306 |
+
|
307 |
+
// Remove empty nodes
|
308 |
+
if (childCount === 0) {
|
309 |
+
dom.remove(node, 1);
|
310 |
+
return;
|
311 |
+
}
|
312 |
+
|
313 |
+
if (format.inline || format.wrapper) {
|
314 |
+
// Merges the current node with it's children of similar type to reduce the number of elements
|
315 |
+
if (!format.exact && childCount === 1)
|
316 |
+
node = mergeStyles(node);
|
317 |
+
|
318 |
+
// Remove/merge children
|
319 |
+
each(formatList, function(format) {
|
320 |
+
// Merge all children of similar type will move styles from child to parent
|
321 |
+
// this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
|
322 |
+
// will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
|
323 |
+
each(dom.select(format.inline, node), function(child) {
|
324 |
+
removeFormat(format, vars, child, format.exact ? child : null);
|
325 |
+
});
|
326 |
+
});
|
327 |
+
|
328 |
+
// Remove child if direct parent is of same type
|
329 |
+
if (matchNode(node.parentNode, name, vars)) {
|
330 |
+
dom.remove(node, 1);
|
331 |
+
node = 0;
|
332 |
+
return TRUE;
|
333 |
+
}
|
334 |
+
|
335 |
+
// Look for parent with similar style format
|
336 |
+
if (format.merge_with_parents) {
|
337 |
+
dom.getParent(node.parentNode, function(parent) {
|
338 |
+
if (matchNode(parent, name, vars)) {
|
339 |
+
dom.remove(node, 1);
|
340 |
+
node = 0;
|
341 |
+
return TRUE;
|
342 |
+
}
|
343 |
+
});
|
344 |
+
}
|
345 |
+
|
346 |
+
// Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
|
347 |
+
if (node) {
|
348 |
+
node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
|
349 |
+
node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
|
350 |
+
}
|
351 |
+
}
|
352 |
+
});
|
353 |
+
};
|
354 |
+
|
355 |
+
if (format) {
|
356 |
+
if (node) {
|
357 |
+
rng = dom.createRng();
|
358 |
+
|
359 |
+
rng.setStartBefore(node);
|
360 |
+
rng.setEndAfter(node);
|
361 |
+
|
362 |
+
applyRngStyle(expandRng(rng, formatList));
|
363 |
+
} else {
|
364 |
+
if (!selection.isCollapsed() || !format.inline) {
|
365 |
+
// Apply formatting to selection
|
366 |
+
bookmark = selection.getBookmark();
|
367 |
+
applyRngStyle(expandRng(selection.getRng(TRUE), formatList));
|
368 |
+
|
369 |
+
selection.moveToBookmark(bookmark);
|
370 |
+
selection.setRng(moveStart(selection.getRng(TRUE)));
|
371 |
+
ed.nodeChanged();
|
372 |
+
} else
|
373 |
+
performCaretAction('apply', name, vars);
|
374 |
+
}
|
375 |
+
}
|
376 |
+
};
|
377 |
+
|
378 |
+
/**
|
379 |
+
* Removes the specified format from the current selection or specified node.
|
380 |
+
*
|
381 |
+
* @method remove
|
382 |
+
* @param {String} name Name of format to remove.
|
383 |
+
* @param {Object} vars Optional list of variables to replace within format before removing it.
|
384 |
+
* @param {Node} node Optional node to remove the format from defaults to current selection.
|
385 |
+
*/
|
386 |
+
function remove(name, vars, node) {
|
387 |
+
var formatList = get(name), format = formatList[0], bookmark, i, rng;
|
388 |
+
|
389 |
+
// Merges the styles for each node
|
390 |
+
function process(node) {
|
391 |
+
var children, i, l;
|
392 |
+
|
393 |
+
// Grab the children first since the nodelist might be changed
|
394 |
+
children = tinymce.grep(node.childNodes);
|
395 |
+
|
396 |
+
// Process current node
|
397 |
+
for (i = 0, l = formatList.length; i < l; i++) {
|
398 |
+
if (removeFormat(formatList[i], vars, node, node))
|
399 |
+
break;
|
400 |
+
}
|
401 |
+
|
402 |
+
// Process the children
|
403 |
+
if (format.deep) {
|
404 |
+
for (i = 0, l = children.length; i < l; i++)
|
405 |
+
process(children[i]);
|
406 |
+
}
|
407 |
+
};
|
408 |
+
|
409 |
+
function findFormatRoot(container) {
|
410 |
+
var formatRoot;
|
411 |
+
|
412 |
+
// Find format root
|
413 |
+
each(getParents(container.parentNode).reverse(), function(parent) {
|
414 |
+
var format;
|
415 |
+
|
416 |
+
// Find format root element
|
417 |
+
if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
|
418 |
+
// Is the node matching the format we are looking for
|
419 |
+
format = matchNode(parent, name, vars);
|
420 |
+
if (format && format.split !== false)
|
421 |
+
formatRoot = parent;
|
422 |
+
}
|
423 |
+
});
|
424 |
+
|
425 |
+
return formatRoot;
|
426 |
+
};
|
427 |
+
|
428 |
+
function wrapAndSplit(format_root, container, target, split) {
|
429 |
+
var parent, clone, lastClone, firstClone, i, formatRootParent;
|
430 |
+
|
431 |
+
// Format root found then clone formats and split it
|
432 |
+
if (format_root) {
|
433 |
+
formatRootParent = format_root.parentNode;
|
434 |
+
|
435 |
+
for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
|
436 |
+
clone = parent.cloneNode(FALSE);
|
437 |
+
|
438 |
+
for (i = 0; i < formatList.length; i++) {
|
439 |
+
if (removeFormat(formatList[i], vars, clone, clone)) {
|
440 |
+
clone = 0;
|
441 |
+
break;
|
442 |
+
}
|
443 |
+
}
|
444 |
+
|
445 |
+
// Build wrapper node
|
446 |
+
if (clone) {
|
447 |
+
if (lastClone)
|
448 |
+
clone.appendChild(lastClone);
|
449 |
+
|
450 |
+
if (!firstClone)
|
451 |
+
firstClone = clone;
|
452 |
+
|
453 |
+
lastClone = clone;
|
454 |
+
}
|
455 |
+
}
|
456 |
+
|
457 |
+
// Never split block elements if the format is mixed
|
458 |
+
if (split && (!format.mixed || !isBlock(format_root)))
|
459 |
+
container = dom.split(format_root, container);
|
460 |
+
|
461 |
+
// Wrap container in cloned formats
|
462 |
+
if (lastClone) {
|
463 |
+
target.parentNode.insertBefore(lastClone, target);
|
464 |
+
firstClone.appendChild(target);
|
465 |
+
}
|
466 |
+
}
|
467 |
+
|
468 |
+
return container;
|
469 |
+
};
|
470 |
+
|
471 |
+
function splitToFormatRoot(container) {
|
472 |
+
return wrapAndSplit(findFormatRoot(container), container, container, true);
|
473 |
+
};
|
474 |
+
|
475 |
+
function unwrap(start) {
|
476 |
+
var node = dom.get(start ? '_start' : '_end'),
|
477 |
+
out = node[start ? 'firstChild' : 'lastChild'];
|
478 |
+
|
479 |
+
// If the end is placed within the start the result will be removed
|
480 |
+
// So this checks if the out node is a bookmark node if it is it
|
481 |
+
// checks for another more suitable node
|
482 |
+
if (isBookmarkNode(out))
|
483 |
+
out = out[start ? 'firstChild' : 'lastChild'];
|
484 |
+
|
485 |
+
dom.remove(node, true);
|
486 |
+
|
487 |
+
return out;
|
488 |
+
};
|
489 |
+
|
490 |
+
function removeRngStyle(rng) {
|
491 |
+
var startContainer, endContainer;
|
492 |
+
|
493 |
+
rng = expandRng(rng, formatList, TRUE);
|
494 |
+
|
495 |
+
if (format.split) {
|
496 |
+
startContainer = getContainer(rng, TRUE);
|
497 |
+
endContainer = getContainer(rng);
|
498 |
+
|
499 |
+
if (startContainer != endContainer) {
|
500 |
+
// Wrap start/end nodes in span element since these might be cloned/moved
|
501 |
+
startContainer = wrap(startContainer, 'span', {id : '_start', _mce_type : 'bookmark'});
|
502 |
+
endContainer = wrap(endContainer, 'span', {id : '_end', _mce_type : 'bookmark'});
|
503 |
+
|
504 |
+
// Split start/end
|
505 |
+
splitToFormatRoot(startContainer);
|
506 |
+
splitToFormatRoot(endContainer);
|
507 |
+
|
508 |
+
// Unwrap start/end to get real elements again
|
509 |
+
startContainer = unwrap(TRUE);
|
510 |
+
endContainer = unwrap();
|
511 |
+
} else
|
512 |
+
startContainer = endContainer = splitToFormatRoot(startContainer);
|
513 |
+
|
514 |
+
// Update range positions since they might have changed after the split operations
|
515 |
+
rng.startContainer = startContainer.parentNode;
|
516 |
+
rng.startOffset = nodeIndex(startContainer);
|
517 |
+
rng.endContainer = endContainer.parentNode;
|
518 |
+
rng.endOffset = nodeIndex(endContainer) + 1;
|
519 |
+
}
|
520 |
+
|
521 |
+
// Remove items between start/end
|
522 |
+
rangeUtils.walk(rng, function(nodes) {
|
523 |
+
each(nodes, function(node) {
|
524 |
+
process(node);
|
525 |
+
});
|
526 |
+
});
|
527 |
+
};
|
528 |
+
|
529 |
+
// Handle node
|
530 |
+
if (node) {
|
531 |
+
rng = dom.createRng();
|
532 |
+
rng.setStartBefore(node);
|
533 |
+
rng.setEndAfter(node);
|
534 |
+
removeRngStyle(rng);
|
535 |
+
return;
|
536 |
+
}
|
537 |
+
|
538 |
+
if (!selection.isCollapsed() || !format.inline) {
|
539 |
+
bookmark = selection.getBookmark();
|
540 |
+
removeRngStyle(selection.getRng(TRUE));
|
541 |
+
selection.moveToBookmark(bookmark);
|
542 |
+
ed.nodeChanged();
|
543 |
+
} else
|
544 |
+
performCaretAction('remove', name, vars);
|
545 |
+
};
|
546 |
+
|
547 |
+
/**
|
548 |
+
* Toggles the specified format on/off.
|
549 |
+
*
|
550 |
+
* @method toggle
|
551 |
+
* @param {String} name Name of format to apply/remove.
|
552 |
+
* @param {Object} vars Optional list of variables to replace within format before applying/removing it.
|
553 |
+
* @param {Node} node Optional node to apply the format to or remove from. Defaults to current selection.
|
554 |
+
*/
|
555 |
+
function toggle(name, vars, node) {
|
556 |
+
if (match(name, vars, node))
|
557 |
+
remove(name, vars, node);
|
558 |
+
else
|
559 |
+
apply(name, vars, node);
|
560 |
+
};
|
561 |
+
|
562 |
+
/**
|
563 |
+
* Return true/false if the specified node has the specified format.
|
564 |
+
*
|
565 |
+
* @method matchNode
|
566 |
+
* @param {Node} node Node to check the format on.
|
567 |
+
* @param {String} name Format name to check.
|
568 |
+
* @param {Object} vars Optional list of variables to replace before checking it.
|
569 |
+
* @param {Boolean} similar Match format that has similar properties.
|
570 |
+
* @return {Object} Returns the format object it matches or undefined if it doesn't match.
|
571 |
+
*/
|
572 |
+
function matchNode(node, name, vars, similar) {
|
573 |
+
var formatList = get(name), format, i, classes;
|
574 |
+
|
575 |
+
function matchItems(node, format, item_name) {
|
576 |
+
var key, value, items = format[item_name], i;
|
577 |
+
|
578 |
+
// Check all items
|
579 |
+
if (items) {
|
580 |
+
// Non indexed object
|
581 |
+
if (items.length === undefined) {
|
582 |
+
for (key in items) {
|
583 |
+
if (items.hasOwnProperty(key)) {
|
584 |
+
if (item_name === 'attributes')
|
585 |
+
value = dom.getAttrib(node, key);
|
586 |
+
else
|
587 |
+
value = getStyle(node, key);
|
588 |
+
|
589 |
+
if (similar && !value && !format.exact)
|
590 |
+
return;
|
591 |
+
|
592 |
+
if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))
|
593 |
+
return;
|
594 |
+
}
|
595 |
+
}
|
596 |
+
} else {
|
597 |
+
// Only one match needed for indexed arrays
|
598 |
+
for (i = 0; i < items.length; i++) {
|
599 |
+
if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))
|
600 |
+
return format;
|
601 |
+
}
|
602 |
+
}
|
603 |
+
}
|
604 |
+
|
605 |
+
return format;
|
606 |
+
};
|
607 |
+
|
608 |
+
if (formatList && node) {
|
609 |
+
// Check each format in list
|
610 |
+
for (i = 0; i < formatList.length; i++) {
|
611 |
+
format = formatList[i];
|
612 |
+
|
613 |
+
// Name name, attributes, styles and classes
|
614 |
+
if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
|
615 |
+
// Match classes
|
616 |
+
if (classes = format.classes) {
|
617 |
+
for (i = 0; i < classes.length; i++) {
|
618 |
+
if (!dom.hasClass(node, classes[i]))
|
619 |
+
return;
|
620 |
+
}
|
621 |
+
}
|
622 |
+
|
623 |
+
return format;
|
624 |
+
}
|
625 |
+
}
|
626 |
+
}
|
627 |
+
};
|
628 |
+
|
629 |
+
/**
|
630 |
+
* Matches the current selection or specified node against the specified format name.
|
631 |
+
*
|
632 |
+
* @method match
|
633 |
+
* @param {String} name Name of format to match.
|
634 |
+
* @param {Object} vars Optional list of variables to replace before checking it.
|
635 |
+
* @param {Node} node Optional node to check.
|
636 |
+
* @return {boolean} true/false if the specified selection/node matches the format.
|
637 |
+
*/
|
638 |
+
function match(name, vars, node) {
|
639 |
+
var startNode, i;
|
640 |
+
|
641 |
+
function matchParents(node) {
|
642 |
+
// Find first node with similar format settings
|
643 |
+
node = dom.getParent(node, function(node) {
|
644 |
+
return !!matchNode(node, name, vars, true);
|
645 |
+
});
|
646 |
+
|
647 |
+
// Do an exact check on the similar format element
|
648 |
+
return matchNode(node, name, vars);
|
649 |
+
};
|
650 |
+
|
651 |
+
// Check specified node
|
652 |
+
if (node)
|
653 |
+
return matchParents(node);
|
654 |
+
|
655 |
+
// Check pending formats
|
656 |
+
if (selection.isCollapsed()) {
|
657 |
+
for (i = pendingFormats.apply.length - 1; i >= 0; i--) {
|
658 |
+
if (pendingFormats.apply[i].name == name)
|
659 |
+
return true;
|
660 |
+
}
|
661 |
+
|
662 |
+
for (i = pendingFormats.remove.length - 1; i >= 0; i--) {
|
663 |
+
if (pendingFormats.remove[i].name == name)
|
664 |
+
return false;
|
665 |
+
}
|
666 |
+
|
667 |
+
return matchParents(selection.getNode());
|
668 |
+
}
|
669 |
+
|
670 |
+
// Check selected node
|
671 |
+
node = selection.getNode();
|
672 |
+
if (matchParents(node))
|
673 |
+
return TRUE;
|
674 |
+
|
675 |
+
// Check start node if it's different
|
676 |
+
startNode = selection.getStart();
|
677 |
+
if (startNode != node) {
|
678 |
+
if (matchParents(startNode))
|
679 |
+
return TRUE;
|
680 |
+
}
|
681 |
+
|
682 |
+
return FALSE;
|
683 |
+
};
|
684 |
+
|
685 |
+
/**
|
686 |
+
* Matches the current selection against the array of formats and returns a new array with matching formats.
|
687 |
+
*
|
688 |
+
* @method matchAll
|
689 |
+
* @param {Array} names Name of format to match.
|
690 |
+
* @param {Object} vars Optional list of variables to replace before checking it.
|
691 |
+
* @return {Array} Array with matched formats.
|
692 |
+
*/
|
693 |
+
function matchAll(names, vars) {
|
694 |
+
var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;
|
695 |
+
|
696 |
+
// If the selection is collapsed then check pending formats
|
697 |
+
if (selection.isCollapsed()) {
|
698 |
+
for (ni = 0; ni < names.length; ni++) {
|
699 |
+
// If the name is to be removed, then stop it from being added
|
700 |
+
for (i = pendingFormats.remove.length - 1; i >= 0; i--) {
|
701 |
+
name = names[ni];
|
702 |
+
|
703 |
+
if (pendingFormats.remove[i].name == name) {
|
704 |
+
checkedMap[name] = true;
|
705 |
+
break;
|
706 |
+
}
|
707 |
+
}
|
708 |
+
}
|
709 |
+
|
710 |
+
// If the format is to be applied
|
711 |
+
for (i = pendingFormats.apply.length - 1; i >= 0; i--) {
|
712 |
+
for (ni = 0; ni < names.length; ni++) {
|
713 |
+
name = names[ni];
|
714 |
+
|
715 |
+
if (!checkedMap[name] && pendingFormats.apply[i].name == name) {
|
716 |
+
checkedMap[name] = true;
|
717 |
+
matchedFormatNames.push(name);
|
718 |
+
}
|
719 |
+
}
|
720 |
+
}
|
721 |
+
}
|
722 |
+
|
723 |
+
// Check start of selection for formats
|
724 |
+
startElement = selection.getStart();
|
725 |
+
dom.getParent(startElement, function(node) {
|
726 |
+
var i, name;
|
727 |
+
|
728 |
+
for (i = 0; i < names.length; i++) {
|
729 |
+
name = names[i];
|
730 |
+
|
731 |
+
if (!checkedMap[name] && matchNode(node, name, vars)) {
|
732 |
+
checkedMap[name] = true;
|
733 |
+
matchedFormatNames.push(name);
|
734 |
+
}
|
735 |
+
}
|
736 |
+
});
|
737 |
+
|
738 |
+
return matchedFormatNames;
|
739 |
+
};
|
740 |
+
|
741 |
+
/**
|
742 |
+
* Returns true/false if the specified format can be applied to the current selection or not. It will currently only check the state for selector formats, it returns true on all other format types.
|
743 |
+
*
|
744 |
+
* @method canApply
|
745 |
+
* @param {String} name Name of format to check.
|
746 |
+
* @return {boolean} true/false if the specified format can be applied to the current selection/node.
|
747 |
+
*/
|
748 |
+
function canApply(name) {
|
749 |
+
var formatList = get(name), startNode, parents, i, x, selector;
|
750 |
+
|
751 |
+
if (formatList) {
|
752 |
+
startNode = selection.getStart();
|
753 |
+
parents = getParents(startNode);
|
754 |
+
|
755 |
+
for (x = formatList.length - 1; x >= 0; x--) {
|
756 |
+
selector = formatList[x].selector;
|
757 |
+
|
758 |
+
// Format is not selector based, then always return TRUE
|
759 |
+
if (!selector)
|
760 |
+
return TRUE;
|
761 |
+
|
762 |
+
for (i = parents.length - 1; i >= 0; i--) {
|
763 |
+
if (dom.is(parents[i], selector))
|
764 |
+
return TRUE;
|
765 |
+
}
|
766 |
+
}
|
767 |
+
}
|
768 |
+
|
769 |
+
return FALSE;
|
770 |
+
};
|
771 |
+
|
772 |
+
// Expose to public
|
773 |
+
tinymce.extend(this, {
|
774 |
+
get : get,
|
775 |
+
register : register,
|
776 |
+
apply : apply,
|
777 |
+
remove : remove,
|
778 |
+
toggle : toggle,
|
779 |
+
match : match,
|
780 |
+
matchAll : matchAll,
|
781 |
+
matchNode : matchNode,
|
782 |
+
canApply : canApply
|
783 |
+
});
|
784 |
+
|
785 |
+
// Private functions
|
786 |
+
|
787 |
+
/**
|
788 |
+
* Checks if the specified nodes name matches the format inline/block or selector.
|
789 |
+
*
|
790 |
+
* @private
|
791 |
+
* @param {Node} node Node to match against the specified format.
|
792 |
+
* @param {Object} format Format object o match with.
|
793 |
+
* @return {boolean} true/false if the format matches.
|
794 |
+
*/
|
795 |
+
function matchName(node, format) {
|
796 |
+
// Check for inline match
|
797 |
+
if (isEq(node, format.inline))
|
798 |
+
return TRUE;
|
799 |
+
|
800 |
+
// Check for block match
|
801 |
+
if (isEq(node, format.block))
|
802 |
+
return TRUE;
|
803 |
+
|
804 |
+
// Check for selector match
|
805 |
+
if (format.selector)
|
806 |
+
return dom.is(node, format.selector);
|
807 |
+
};
|
808 |
+
|
809 |
+
/**
|
810 |
+
* Compares two string/nodes regardless of their case.
|
811 |
+
*
|
812 |
+
* @private
|
813 |
+
* @param {String/Node} Node or string to compare.
|
814 |
+
* @param {String/Node} Node or string to compare.
|
815 |
+
* @return {boolean} True/false if they match.
|
816 |
+
*/
|
817 |
+
function isEq(str1, str2) {
|
818 |
+
str1 = str1 || '';
|
819 |
+
str2 = str2 || '';
|
820 |
+
|
821 |
+
str1 = '' + (str1.nodeName || str1);
|
822 |
+
str2 = '' + (str2.nodeName || str2);
|
823 |
+
|
824 |
+
return str1.toLowerCase() == str2.toLowerCase();
|
825 |
+
};
|
826 |
+
|
827 |
+
/**
|
828 |
+
* Returns the style by name on the specified node. This method modifies the style
|
829 |
+
* contents to make it more easy to match. This will resolve a few browser issues.
|
830 |
+
*
|
831 |
+
* @private
|
832 |
+
* @param {Node} node to get style from.
|
833 |
+
* @param {String} name Style name to get.
|
834 |
+
* @return {String} Style item value.
|
835 |
+
*/
|
836 |
+
function getStyle(node, name) {
|
837 |
+
var styleVal = dom.getStyle(node, name);
|
838 |
+
|
839 |
+
// Force the format to hex
|
840 |
+
if (name == 'color' || name == 'backgroundColor')
|
841 |
+
styleVal = dom.toHex(styleVal);
|
842 |
+
|
843 |
+
// Opera will return bold as 700
|
844 |
+
if (name == 'fontWeight' && styleVal == 700)
|
845 |
+
styleVal = 'bold';
|
846 |
+
|
847 |
+
return '' + styleVal;
|
848 |
+
};
|
849 |
+
|
850 |
+
/**
|
851 |
+
* Replaces variables in the value. The variable format is %var.
|
852 |
+
*
|
853 |
+
* @private
|
854 |
+
* @param {String} value Value to replace variables in.
|
855 |
+
* @param {Object} vars Name/value array with variables to replace.
|
856 |
+
* @return {String} New value with replaced variables.
|
857 |
+
*/
|
858 |
+
function replaceVars(value, vars) {
|
859 |
+
if (typeof(value) != "string")
|
860 |
+
value = value(vars);
|
861 |
+
else if (vars) {
|
862 |
+
value = value.replace(/%(\w+)/g, function(str, name) {
|
863 |
+
return vars[name] || str;
|
864 |
+
});
|
865 |
+
}
|
866 |
+
|
867 |
+
return value;
|
868 |
+
};
|
869 |
+
|
870 |
+
function isWhiteSpaceNode(node) {
|
871 |
+
return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue);
|
872 |
+
};
|
873 |
+
|
874 |
+
function wrap(node, name, attrs) {
|
875 |
+
var wrapper = dom.create(name, attrs);
|
876 |
+
|
877 |
+
node.parentNode.insertBefore(wrapper, node);
|
878 |
+
wrapper.appendChild(node);
|
879 |
+
|
880 |
+
return wrapper;
|
881 |
+
};
|
882 |
+
|
883 |
+
/**
|
884 |
+
* Expands the specified range like object to depending on format.
|
885 |
+
*
|
886 |
+
* For example on block formats it will move the start/end position
|
887 |
+
* to the beginning of the current block.
|
888 |
+
*
|
889 |
+
* @private
|
890 |
+
* @param {Object} rng Range like object.
|
891 |
+
* @param {Array} formats Array with formats to expand by.
|
892 |
+
* @return {Object} Expanded range like object.
|
893 |
+
*/
|
894 |
+
function expandRng(rng, format, remove) {
|
895 |
+
var startContainer = rng.startContainer,
|
896 |
+
startOffset = rng.startOffset,
|
897 |
+
endContainer = rng.endContainer,
|
898 |
+
endOffset = rng.endOffset, sibling, lastIdx;
|
899 |
+
|
900 |
+
// This function walks up the tree if there is no siblings before/after the node
|
901 |
+
function findParentContainer(container, child_name, sibling_name, root) {
|
902 |
+
var parent, child;
|
903 |
+
|
904 |
+
root = root || dom.getRoot();
|
905 |
+
|
906 |
+
for (;;) {
|
907 |
+
// Check if we can move up are we at root level or body level
|
908 |
+
parent = container.parentNode;
|
909 |
+
|
910 |
+
// Stop expanding on block elements or root depending on format
|
911 |
+
if (parent == root || (!format[0].block_expand && isBlock(parent)))
|
912 |
+
return container;
|
913 |
+
|
914 |
+
for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) {
|
915 |
+
if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
|
916 |
+
return container;
|
917 |
+
|
918 |
+
if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))
|
919 |
+
return container;
|
920 |
+
}
|
921 |
+
|
922 |
+
container = container.parentNode;
|
923 |
+
}
|
924 |
+
|
925 |
+
return container;
|
926 |
+
};
|
927 |
+
|
928 |
+
// If index based start position then resolve it
|
929 |
+
if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
|
930 |
+
lastIdx = startContainer.childNodes.length - 1;
|
931 |
+
startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
|
932 |
+
|
933 |
+
if (startContainer.nodeType == 3)
|
934 |
+
startOffset = 0;
|
935 |
+
}
|
936 |
+
|
937 |
+
// If index based end position then resolve it
|
938 |
+
if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
|
939 |
+
lastIdx = endContainer.childNodes.length - 1;
|
940 |
+
endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
|
941 |
+
|
942 |
+
if (endContainer.nodeType == 3)
|
943 |
+
endOffset = endContainer.nodeValue.length;
|
944 |
+
}
|
945 |
+
|
946 |
+
// Exclude bookmark nodes if possible
|
947 |
+
if (isBookmarkNode(startContainer.parentNode))
|
948 |
+
startContainer = startContainer.parentNode;
|
949 |
+
|
950 |
+
if (isBookmarkNode(startContainer))
|
951 |
+
startContainer = startContainer.nextSibling || startContainer;
|
952 |
+
|
953 |
+
if (isBookmarkNode(endContainer.parentNode))
|
954 |
+
endContainer = endContainer.parentNode;
|
955 |
+
|
956 |
+
if (isBookmarkNode(endContainer))
|
957 |
+
endContainer = endContainer.previousSibling || endContainer;
|
958 |
+
|
959 |
+
// Move start/end point up the tree if the leaves are sharp and if we are in different containers
|
960 |
+
// Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
|
961 |
+
// This will reduce the number of wrapper elements that needs to be created
|
962 |
+
// Move start point up the tree
|
963 |
+
if (format[0].inline || format[0].block_expand) {
|
964 |
+
startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');
|
965 |
+
endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');
|
966 |
+
}
|
967 |
+
|
968 |
+
// Expand start/end container to matching selector
|
969 |
+
if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
|
970 |
+
function findSelectorEndPoint(container, sibling_name) {
|
971 |
+
var parents, i, y;
|
972 |
+
|
973 |
+
if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name])
|
974 |
+
container = container[sibling_name];
|
975 |
+
|
976 |
+
parents = getParents(container);
|
977 |
+
for (i = 0; i < parents.length; i++) {
|
978 |
+
for (y = 0; y < format.length; y++) {
|
979 |
+
if (dom.is(parents[i], format[y].selector))
|
980 |
+
return parents[i];
|
981 |
+
}
|
982 |
+
}
|
983 |
+
|
984 |
+
return container;
|
985 |
+
};
|
986 |
+
|
987 |
+
// Find new startContainer/endContainer if there is better one
|
988 |
+
startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
|
989 |
+
endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
|
990 |
+
}
|
991 |
+
|
992 |
+
// Expand start/end container to matching block element or text node
|
993 |
+
if (format[0].block || format[0].selector) {
|
994 |
+
function findBlockEndPoint(container, sibling_name, sibling_name2) {
|
995 |
+
var node;
|
996 |
+
|
997 |
+
// Expand to block of similar type
|
998 |
+
if (!format[0].wrapper)
|
999 |
+
node = dom.getParent(container, format[0].block);
|
1000 |
+
|
1001 |
+
// Expand to first wrappable block element or any block element
|
1002 |
+
if (!node)
|
1003 |
+
node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
|
1004 |
+
|
1005 |
+
// Exclude inner lists from wrapping
|
1006 |
+
if (node && format[0].wrapper)
|
1007 |
+
node = getParents(node, 'ul,ol').reverse()[0] || node;
|
1008 |
+
|
1009 |
+
// Didn't find a block element look for first/last wrappable element
|
1010 |
+
if (!node) {
|
1011 |
+
node = container;
|
1012 |
+
|
1013 |
+
while (node[sibling_name] && !isBlock(node[sibling_name])) {
|
1014 |
+
node = node[sibling_name];
|
1015 |
+
|
1016 |
+
// Break on BR but include it will be removed later on
|
1017 |
+
// we can't remove it now since we need to check if it can be wrapped
|
1018 |
+
if (isEq(node, 'br'))
|
1019 |
+
break;
|
1020 |
+
}
|
1021 |
+
}
|
1022 |
+
|
1023 |
+
return node || container;
|
1024 |
+
};
|
1025 |
+
|
1026 |
+
// Find new startContainer/endContainer if there is better one
|
1027 |
+
startContainer = findBlockEndPoint(startContainer, 'previousSibling');
|
1028 |
+
endContainer = findBlockEndPoint(endContainer, 'nextSibling');
|
1029 |
+
|
1030 |
+
// Non block element then try to expand up the leaf
|
1031 |
+
if (format[0].block) {
|
1032 |
+
if (!isBlock(startContainer))
|
1033 |
+
startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');
|
1034 |
+
|
1035 |
+
if (!isBlock(endContainer))
|
1036 |
+
endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');
|
1037 |
+
}
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
// Setup index for startContainer
|
1041 |
+
if (startContainer.nodeType == 1) {
|
1042 |
+
startOffset = nodeIndex(startContainer);
|
1043 |
+
startContainer = startContainer.parentNode;
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
// Setup index for endContainer
|
1047 |
+
if (endContainer.nodeType == 1) {
|
1048 |
+
endOffset = nodeIndex(endContainer) + 1;
|
1049 |
+
endContainer = endContainer.parentNode;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
// Return new range like object
|
1053 |
+
return {
|
1054 |
+
startContainer : startContainer,
|
1055 |
+
startOffset : startOffset,
|
1056 |
+
endContainer : endContainer,
|
1057 |
+
endOffset : endOffset
|
1058 |
+
};
|
1059 |
+
}
|
1060 |
+
|
1061 |
+
/**
|
1062 |
+
* Removes the specified format for the specified node. It will also remove the node if it doesn't have
|
1063 |
+
* any attributes if the format specifies it to do so.
|
1064 |
+
*
|
1065 |
+
* @private
|
1066 |
+
* @param {Object} format Format object with items to remove from node.
|
1067 |
+
* @param {Object} vars Name/value object with variables to apply to format.
|
1068 |
+
* @param {Node} node Node to remove the format styles on.
|
1069 |
+
* @param {Node} compare_node Optional compare node, if specified the styles will be compared to that node.
|
1070 |
+
* @return {Boolean} True/false if the node was removed or not.
|
1071 |
+
*/
|
1072 |
+
function removeFormat(format, vars, node, compare_node) {
|
1073 |
+
var i, attrs, stylesModified;
|
1074 |
+
|
1075 |
+
// Check if node matches format
|
1076 |
+
if (!matchName(node, format))
|
1077 |
+
return FALSE;
|
1078 |
+
|
1079 |
+
// Should we compare with format attribs and styles
|
1080 |
+
if (format.remove != 'all') {
|
1081 |
+
// Remove styles
|
1082 |
+
each(format.styles, function(value, name) {
|
1083 |
+
value = replaceVars(value, vars);
|
1084 |
+
|
1085 |
+
// Indexed array
|
1086 |
+
if (typeof(name) === 'number') {
|
1087 |
+
name = value;
|
1088 |
+
compare_node = 0;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
if (!compare_node || isEq(getStyle(compare_node, name), value))
|
1092 |
+
dom.setStyle(node, name, '');
|
1093 |
+
|
1094 |
+
stylesModified = 1;
|
1095 |
+
});
|
1096 |
+
|
1097 |
+
// Remove style attribute if it's empty
|
1098 |
+
if (stylesModified && dom.getAttrib(node, 'style') == '') {
|
1099 |
+
node.removeAttribute('style');
|
1100 |
+
node.removeAttribute('_mce_style');
|
1101 |
+
}
|
1102 |
+
|
1103 |
+
// Remove attributes
|
1104 |
+
each(format.attributes, function(value, name) {
|
1105 |
+
var valueOut;
|
1106 |
+
|
1107 |
+
value = replaceVars(value, vars);
|
1108 |
+
|
1109 |
+
// Indexed array
|
1110 |
+
if (typeof(name) === 'number') {
|
1111 |
+
name = value;
|
1112 |
+
compare_node = 0;
|
1113 |
+
}
|
1114 |
+
|
1115 |
+
if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
|
1116 |
+
// Keep internal classes
|
1117 |
+
if (name == 'class') {
|
1118 |
+
value = dom.getAttrib(node, name);
|
1119 |
+
if (value) {
|
1120 |
+
// Build new class value where everything is removed except the internal prefixed classes
|
1121 |
+
valueOut = '';
|
1122 |
+
each(value.split(/\s+/), function(cls) {
|
1123 |
+
if (/mce\w+/.test(cls))
|
1124 |
+
valueOut += (valueOut ? ' ' : '') + cls;
|
1125 |
+
});
|
1126 |
+
|
1127 |
+
// We got some internal classes left
|
1128 |
+
if (valueOut) {
|
1129 |
+
dom.setAttrib(node, name, valueOut);
|
1130 |
+
return;
|
1131 |
+
}
|
1132 |
+
}
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
// IE6 has a bug where the attribute doesn't get removed correctly
|
1136 |
+
if (name == "class")
|
1137 |
+
node.removeAttribute('className');
|
1138 |
+
|
1139 |
+
// Remove mce prefixed attributes
|
1140 |
+
if (MCE_ATTR_RE.test(name))
|
1141 |
+
node.removeAttribute('_mce_' + name);
|
1142 |
+
|
1143 |
+
node.removeAttribute(name);
|
1144 |
+
}
|
1145 |
+
});
|
1146 |
+
|
1147 |
+
// Remove classes
|
1148 |
+
each(format.classes, function(value) {
|
1149 |
+
value = replaceVars(value, vars);
|
1150 |
+
|
1151 |
+
if (!compare_node || dom.hasClass(compare_node, value))
|
1152 |
+
dom.removeClass(node, value);
|
1153 |
+
});
|
1154 |
+
|
1155 |
+
// Check for non internal attributes
|
1156 |
+
attrs = dom.getAttribs(node);
|
1157 |
+
for (i = 0; i < attrs.length; i++) {
|
1158 |
+
if (attrs[i].nodeName.indexOf('_') !== 0)
|
1159 |
+
return FALSE;
|
1160 |
+
}
|
1161 |
+
}
|
1162 |
+
|
1163 |
+
// Remove the inline child if it's empty for example <b> or <span>
|
1164 |
+
if (format.remove != 'none') {
|
1165 |
+
removeNode(node, format);
|
1166 |
+
return TRUE;
|
1167 |
+
}
|
1168 |
+
};
|
1169 |
+
|
1170 |
+
/**
|
1171 |
+
* Removes the node and wrap it's children in paragraphs before doing so or
|
1172 |
+
* appends BR elements to the beginning/end of the block element if forcedRootBlocks is disabled.
|
1173 |
+
*
|
1174 |
+
* If the div in the node below gets removed:
|
1175 |
+
* text<div>text</div>text
|
1176 |
+
*
|
1177 |
+
* Output becomes:
|
1178 |
+
* text<div><br />text<br /></div>text
|
1179 |
+
*
|
1180 |
+
* So when the div is removed the result is:
|
1181 |
+
* text<br />text<br />text
|
1182 |
+
*
|
1183 |
+
* @private
|
1184 |
+
* @param {Node} node Node to remove + apply BR/P elements to.
|
1185 |
+
* @param {Object} format Format rule.
|
1186 |
+
* @return {Node} Input node.
|
1187 |
+
*/
|
1188 |
+
function removeNode(node, format) {
|
1189 |
+
var parentNode = node.parentNode, rootBlockElm;
|
1190 |
+
|
1191 |
+
if (format.block) {
|
1192 |
+
if (!forcedRootBlock) {
|
1193 |
+
function find(node, next, inc) {
|
1194 |
+
node = getNonWhiteSpaceSibling(node, next, inc);
|
1195 |
+
|
1196 |
+
return !node || (node.nodeName == 'BR' || isBlock(node));
|
1197 |
+
};
|
1198 |
+
|
1199 |
+
// Append BR elements if needed before we remove the block
|
1200 |
+
if (isBlock(node) && !isBlock(parentNode)) {
|
1201 |
+
if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))
|
1202 |
+
node.insertBefore(dom.create('br'), node.firstChild);
|
1203 |
+
|
1204 |
+
if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))
|
1205 |
+
node.appendChild(dom.create('br'));
|
1206 |
+
}
|
1207 |
+
} else {
|
1208 |
+
// Wrap the block in a forcedRootBlock if we are at the root of document
|
1209 |
+
if (parentNode == dom.getRoot()) {
|
1210 |
+
if (!format.list_block || !isEq(node, format.list_block)) {
|
1211 |
+
each(tinymce.grep(node.childNodes), function(node) {
|
1212 |
+
if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
|
1213 |
+
if (!rootBlockElm)
|
1214 |
+
rootBlockElm = wrap(node, forcedRootBlock);
|
1215 |
+
else
|
1216 |
+
rootBlockElm.appendChild(node);
|
1217 |
+
} else
|
1218 |
+
rootBlockElm = 0;
|
1219 |
+
});
|
1220 |
+
}
|
1221 |
+
}
|
1222 |
+
}
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
// Never remove nodes that isn't the specified inline element if a selector is specified too
|
1226 |
+
if (format.selector && format.inline && !isEq(format.inline, node))
|
1227 |
+
return;
|
1228 |
+
|
1229 |
+
dom.remove(node, 1);
|
1230 |
+
};
|
1231 |
+
|
1232 |
+
/**
|
1233 |
+
* Returns the next/previous non whitespace node.
|
1234 |
+
*
|
1235 |
+
* @private
|
1236 |
+
* @param {Node} node Node to start at.
|
1237 |
+
* @param {boolean} next (Optional) Include next or previous node defaults to previous.
|
1238 |
+
* @param {boolean} inc (Optional) Include the current node in checking. Defaults to false.
|
1239 |
+
* @return {Node} Next or previous node or undefined if it wasn't found.
|
1240 |
+
*/
|
1241 |
+
function getNonWhiteSpaceSibling(node, next, inc) {
|
1242 |
+
if (node) {
|
1243 |
+
next = next ? 'nextSibling' : 'previousSibling';
|
1244 |
+
|
1245 |
+
for (node = inc ? node : node[next]; node; node = node[next]) {
|
1246 |
+
if (node.nodeType == 1 || !isWhiteSpaceNode(node))
|
1247 |
+
return node;
|
1248 |
+
}
|
1249 |
+
}
|
1250 |
+
};
|
1251 |
+
|
1252 |
+
/**
|
1253 |
+
* Checks if the specified node is a bookmark node or not.
|
1254 |
+
*
|
1255 |
+
* @param {Node} node Node to check if it's a bookmark node or not.
|
1256 |
+
* @return {Boolean} true/false if the node is a bookmark node.
|
1257 |
+
*/
|
1258 |
+
function isBookmarkNode(node) {
|
1259 |
+
return node && node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark';
|
1260 |
+
};
|
1261 |
+
|
1262 |
+
/**
|
1263 |
+
* Merges the next/previous sibling element if they match.
|
1264 |
+
*
|
1265 |
+
* @private
|
1266 |
+
* @param {Node} prev Previous node to compare/merge.
|
1267 |
+
* @param {Node} next Next node to compare/merge.
|
1268 |
+
* @return {Node} Next node if we didn't merge and prev node if we did.
|
1269 |
+
*/
|
1270 |
+
function mergeSiblings(prev, next) {
|
1271 |
+
var marker, sibling, tmpSibling;
|
1272 |
+
|
1273 |
+
/**
|
1274 |
+
* Compares two nodes and checks if it's attributes and styles matches.
|
1275 |
+
* This doesn't compare classes as items since their order is significant.
|
1276 |
+
*
|
1277 |
+
* @private
|
1278 |
+
* @param {Node} node1 First node to compare with.
|
1279 |
+
* @param {Node} node2 Second node to compare with.
|
1280 |
+
* @return {boolean} True/false if the nodes are the same or not.
|
1281 |
+
*/
|
1282 |
+
function compareElements(node1, node2) {
|
1283 |
+
// Not the same name
|
1284 |
+
if (node1.nodeName != node2.nodeName)
|
1285 |
+
return FALSE;
|
1286 |
+
|
1287 |
+
/**
|
1288 |
+
* Returns all the nodes attributes excluding internal ones, styles and classes.
|
1289 |
+
*
|
1290 |
+
* @private
|
1291 |
+
* @param {Node} node Node to get attributes from.
|
1292 |
+
* @return {Object} Name/value object with attributes and attribute values.
|
1293 |
+
*/
|
1294 |
+
function getAttribs(node) {
|
1295 |
+
var attribs = {};
|
1296 |
+
|
1297 |
+
each(dom.getAttribs(node), function(attr) {
|
1298 |
+
var name = attr.nodeName.toLowerCase();
|
1299 |
+
|
1300 |
+
// Don't compare internal attributes or style
|
1301 |
+
if (name.indexOf('_') !== 0 && name !== 'style')
|
1302 |
+
attribs[name] = dom.getAttrib(node, name);
|
1303 |
+
});
|
1304 |
+
|
1305 |
+
return attribs;
|
1306 |
+
};
|
1307 |
+
|
1308 |
+
/**
|
1309 |
+
* Compares two objects checks if it's key + value exists in the other one.
|
1310 |
+
*
|
1311 |
+
* @private
|
1312 |
+
* @param {Object} obj1 First object to compare.
|
1313 |
+
* @param {Object} obj2 Second object to compare.
|
1314 |
+
* @return {boolean} True/false if the objects matches or not.
|
1315 |
+
*/
|
1316 |
+
function compareObjects(obj1, obj2) {
|
1317 |
+
var value, name;
|
1318 |
+
|
1319 |
+
for (name in obj1) {
|
1320 |
+
// Obj1 has item obj2 doesn't have
|
1321 |
+
if (obj1.hasOwnProperty(name)) {
|
1322 |
+
value = obj2[name];
|
1323 |
+
|
1324 |
+
// Obj2 doesn't have obj1 item
|
1325 |
+
if (value === undefined)
|
1326 |
+
return FALSE;
|
1327 |
+
|
1328 |
+
// Obj2 item has a different value
|
1329 |
+
if (obj1[name] != value)
|
1330 |
+
return FALSE;
|
1331 |
+
|
1332 |
+
// Delete similar value
|
1333 |
+
delete obj2[name];
|
1334 |
+
}
|
1335 |
+
}
|
1336 |
+
|
1337 |
+
// Check if obj 2 has something obj 1 doesn't have
|
1338 |
+
for (name in obj2) {
|
1339 |
+
// Obj2 has item obj1 doesn't have
|
1340 |
+
if (obj2.hasOwnProperty(name))
|
1341 |
+
return FALSE;
|
1342 |
+
}
|
1343 |
+
|
1344 |
+
return TRUE;
|
1345 |
+
};
|
1346 |
+
|
1347 |
+
// Attribs are not the same
|
1348 |
+
if (!compareObjects(getAttribs(node1), getAttribs(node2)))
|
1349 |
+
return FALSE;
|
1350 |
+
|
1351 |
+
// Styles are not the same
|
1352 |
+
if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))
|
1353 |
+
return FALSE;
|
1354 |
+
|
1355 |
+
return TRUE;
|
1356 |
+
};
|
1357 |
+
|
1358 |
+
// Check if next/prev exists and that they are elements
|
1359 |
+
if (prev && next) {
|
1360 |
+
function findElementSibling(node, sibling_name) {
|
1361 |
+
for (sibling = node; sibling; sibling = sibling[sibling_name]) {
|
1362 |
+
if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))
|
1363 |
+
return node;
|
1364 |
+
|
1365 |
+
if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
|
1366 |
+
return sibling;
|
1367 |
+
}
|
1368 |
+
|
1369 |
+
return node;
|
1370 |
+
};
|
1371 |
+
|
1372 |
+
// If previous sibling is empty then jump over it
|
1373 |
+
prev = findElementSibling(prev, 'previousSibling');
|
1374 |
+
next = findElementSibling(next, 'nextSibling');
|
1375 |
+
|
1376 |
+
// Compare next and previous nodes
|
1377 |
+
if (compareElements(prev, next)) {
|
1378 |
+
// Append nodes between
|
1379 |
+
for (sibling = prev.nextSibling; sibling && sibling != next;) {
|
1380 |
+
tmpSibling = sibling;
|
1381 |
+
sibling = sibling.nextSibling;
|
1382 |
+
prev.appendChild(tmpSibling);
|
1383 |
+
}
|
1384 |
+
|
1385 |
+
// Remove next node
|
1386 |
+
dom.remove(next);
|
1387 |
+
|
1388 |
+
// Move children into prev node
|
1389 |
+
each(tinymce.grep(next.childNodes), function(node) {
|
1390 |
+
prev.appendChild(node);
|
1391 |
+
});
|
1392 |
+
|
1393 |
+
return prev;
|
1394 |
+
}
|
1395 |
+
}
|
1396 |
+
|
1397 |
+
return next;
|
1398 |
+
};
|
1399 |
+
|
1400 |
+
/**
|
1401 |
+
* Returns true/false if the specified node is a text block or not.
|
1402 |
+
*
|
1403 |
+
* @private
|
1404 |
+
* @param {Node} node Node to check.
|
1405 |
+
* @return {boolean} True/false if the node is a text block.
|
1406 |
+
*/
|
1407 |
+
function isTextBlock(name) {
|
1408 |
+
return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);
|
1409 |
+
};
|
1410 |
+
|
1411 |
+
function getContainer(rng, start) {
|
1412 |
+
var container, offset, lastIdx;
|
1413 |
+
|
1414 |
+
container = rng[start ? 'startContainer' : 'endContainer'];
|
1415 |
+
offset = rng[start ? 'startOffset' : 'endOffset'];
|
1416 |
+
|
1417 |
+
if (container.nodeType == 1) {
|
1418 |
+
lastIdx = container.childNodes.length - 1;
|
1419 |
+
|
1420 |
+
if (!start && offset)
|
1421 |
+
offset--;
|
1422 |
+
|
1423 |
+
container = container.childNodes[offset > lastIdx ? lastIdx : offset];
|
1424 |
+
}
|
1425 |
+
|
1426 |
+
return container;
|
1427 |
+
};
|
1428 |
+
|
1429 |
+
function performCaretAction(type, name, vars) {
|
1430 |
+
var i, currentPendingFormats = pendingFormats[type],
|
1431 |
+
otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply'];
|
1432 |
+
|
1433 |
+
function hasPending() {
|
1434 |
+
return pendingFormats.apply.length || pendingFormats.remove.length;
|
1435 |
+
};
|
1436 |
+
|
1437 |
+
function resetPending() {
|
1438 |
+
pendingFormats.apply = [];
|
1439 |
+
pendingFormats.remove = [];
|
1440 |
+
};
|
1441 |
+
|
1442 |
+
function perform(caret_node) {
|
1443 |
+
// Apply pending formats
|
1444 |
+
each(pendingFormats.apply.reverse(), function(item) {
|
1445 |
+
apply(item.name, item.vars, caret_node);
|
1446 |
+
});
|
1447 |
+
|
1448 |
+
// Remove pending formats
|
1449 |
+
each(pendingFormats.remove.reverse(), function(item) {
|
1450 |
+
remove(item.name, item.vars, caret_node);
|
1451 |
+
});
|
1452 |
+
|
1453 |
+
dom.remove(caret_node, 1);
|
1454 |
+
resetPending();
|
1455 |
+
};
|
1456 |
+
|
1457 |
+
// Check if it already exists then ignore it
|
1458 |
+
for (i = currentPendingFormats.length - 1; i >= 0; i--) {
|
1459 |
+
if (currentPendingFormats[i].name == name)
|
1460 |
+
return;
|
1461 |
+
}
|
1462 |
+
|
1463 |
+
currentPendingFormats.push({name : name, vars : vars});
|
1464 |
+
|
1465 |
+
// Check if it's in the other type, then remove it
|
1466 |
+
for (i = otherPendingFormats.length - 1; i >= 0; i--) {
|
1467 |
+
if (otherPendingFormats[i].name == name)
|
1468 |
+
otherPendingFormats.splice(i, 1);
|
1469 |
+
}
|
1470 |
+
|
1471 |
+
// Pending apply or remove formats
|
1472 |
+
if (hasPending()) {
|
1473 |
+
ed.getDoc().execCommand('FontName', false, 'mceinline');
|
1474 |
+
pendingFormats.lastRng = selection.getRng();
|
1475 |
+
|
1476 |
+
// IE will convert the current word
|
1477 |
+
each(dom.select('font,span'), function(node) {
|
1478 |
+
var bookmark;
|
1479 |
+
|
1480 |
+
if (isCaretNode(node)) {
|
1481 |
+
bookmark = selection.getBookmark();
|
1482 |
+
perform(node);
|
1483 |
+
selection.moveToBookmark(bookmark);
|
1484 |
+
ed.nodeChanged();
|
1485 |
+
}
|
1486 |
+
});
|
1487 |
+
|
1488 |
+
// Only register listeners once if we need to
|
1489 |
+
if (!pendingFormats.isListening && hasPending()) {
|
1490 |
+
pendingFormats.isListening = true;
|
1491 |
+
|
1492 |
+
each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) {
|
1493 |
+
ed[event].addToTop(function(ed, e) {
|
1494 |
+
// Do we have pending formats and is the selection moved has moved
|
1495 |
+
if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) {
|
1496 |
+
each(dom.select('font,span'), function(node) {
|
1497 |
+
var textNode, rng;
|
1498 |
+
|
1499 |
+
// Look for marker
|
1500 |
+
if (isCaretNode(node)) {
|
1501 |
+
textNode = node.firstChild;
|
1502 |
+
|
1503 |
+
if (textNode) {
|
1504 |
+
perform(node);
|
1505 |
+
|
1506 |
+
rng = dom.createRng();
|
1507 |
+
rng.setStart(textNode, textNode.nodeValue.length);
|
1508 |
+
rng.setEnd(textNode, textNode.nodeValue.length);
|
1509 |
+
selection.setRng(rng);
|
1510 |
+
ed.nodeChanged();
|
1511 |
+
} else
|
1512 |
+
dom.remove(node);
|
1513 |
+
}
|
1514 |
+
});
|
1515 |
+
|
1516 |
+
// Always unbind and clear pending styles on keyup
|
1517 |
+
if (e.type == 'keyup' || e.type == 'mouseup')
|
1518 |
+
resetPending();
|
1519 |
+
}
|
1520 |
+
});
|
1521 |
+
});
|
1522 |
+
}
|
1523 |
+
}
|
1524 |
+
};
|
1525 |
+
};
|
1526 |
+
})(tinymce);
|
js/tiny_mce_german/classes/LegacyInput.js
CHANGED
@@ -1,62 +1,62 @@
|
|
1 |
-
/**
|
2 |
-
* LegacyInput.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
tinymce.onAddEditor.add(function(tinymce, ed) {
|
12 |
-
var filters, fontSizes, dom, settings = ed.settings;
|
13 |
-
|
14 |
-
if (settings.inline_styles) {
|
15 |
-
fontSizes = tinymce.explode(settings.font_size_style_values);
|
16 |
-
|
17 |
-
function replaceWithSpan(node, styles) {
|
18 |
-
dom.replace(dom.create('span', {
|
19 |
-
style : styles
|
20 |
-
}), node, 1);
|
21 |
-
};
|
22 |
-
|
23 |
-
filters = {
|
24 |
-
font : function(dom, node) {
|
25 |
-
replaceWithSpan(node, {
|
26 |
-
backgroundColor : node.style.backgroundColor,
|
27 |
-
color : node.color,
|
28 |
-
fontFamily : node.face,
|
29 |
-
fontSize : fontSizes[parseInt(node.size) - 1]
|
30 |
-
});
|
31 |
-
},
|
32 |
-
|
33 |
-
u : function(dom, node) {
|
34 |
-
replaceWithSpan(node, {
|
35 |
-
textDecoration : 'underline'
|
36 |
-
});
|
37 |
-
},
|
38 |
-
|
39 |
-
strike : function(dom, node) {
|
40 |
-
replaceWithSpan(node, {
|
41 |
-
textDecoration : 'line-through'
|
42 |
-
});
|
43 |
-
}
|
44 |
-
};
|
45 |
-
|
46 |
-
function convert(editor, params) {
|
47 |
-
dom = editor.dom;
|
48 |
-
|
49 |
-
if (settings.convert_fonts_to_spans) {
|
50 |
-
tinymce.each(dom.select('font,u,strike', params.node), function(node) {
|
51 |
-
filters[node.nodeName.toLowerCase()](ed.dom, node);
|
52 |
-
});
|
53 |
-
}
|
54 |
-
};
|
55 |
-
|
56 |
-
ed.onPreProcess.add(convert);
|
57 |
-
|
58 |
-
ed.onInit.add(function() {
|
59 |
-
ed.selection.onSetContent.add(convert);
|
60 |
-
});
|
61 |
-
}
|
62 |
-
});
|
1 |
+
/**
|
2 |
+
* LegacyInput.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
tinymce.onAddEditor.add(function(tinymce, ed) {
|
12 |
+
var filters, fontSizes, dom, settings = ed.settings;
|
13 |
+
|
14 |
+
if (settings.inline_styles) {
|
15 |
+
fontSizes = tinymce.explode(settings.font_size_style_values);
|
16 |
+
|
17 |
+
function replaceWithSpan(node, styles) {
|
18 |
+
dom.replace(dom.create('span', {
|
19 |
+
style : styles
|
20 |
+
}), node, 1);
|
21 |
+
};
|
22 |
+
|
23 |
+
filters = {
|
24 |
+
font : function(dom, node) {
|
25 |
+
replaceWithSpan(node, {
|
26 |
+
backgroundColor : node.style.backgroundColor,
|
27 |
+
color : node.color,
|
28 |
+
fontFamily : node.face,
|
29 |
+
fontSize : fontSizes[parseInt(node.size) - 1]
|
30 |
+
});
|
31 |
+
},
|
32 |
+
|
33 |
+
u : function(dom, node) {
|
34 |
+
replaceWithSpan(node, {
|
35 |
+
textDecoration : 'underline'
|
36 |
+
});
|
37 |
+
},
|
38 |
+
|
39 |
+
strike : function(dom, node) {
|
40 |
+
replaceWithSpan(node, {
|
41 |
+
textDecoration : 'line-through'
|
42 |
+
});
|
43 |
+
}
|
44 |
+
};
|
45 |
+
|
46 |
+
function convert(editor, params) {
|
47 |
+
dom = editor.dom;
|
48 |
+
|
49 |
+
if (settings.convert_fonts_to_spans) {
|
50 |
+
tinymce.each(dom.select('font,u,strike', params.node), function(node) {
|
51 |
+
filters[node.nodeName.toLowerCase()](ed.dom, node);
|
52 |
+
});
|
53 |
+
}
|
54 |
+
};
|
55 |
+
|
56 |
+
ed.onPreProcess.add(convert);
|
57 |
+
|
58 |
+
ed.onInit.add(function() {
|
59 |
+
ed.selection.onSetContent.add(convert);
|
60 |
+
});
|
61 |
+
}
|
62 |
+
});
|
js/tiny_mce_german/classes/Popup.js
CHANGED
@@ -1,438 +1,438 @@
|
|
1 |
-
/**
|
2 |
-
* Popup.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
// Some global instances
|
12 |
-
var tinymce = null, tinyMCEPopup, tinyMCE;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* TinyMCE popup/dialog helper class. This gives you easy access to the
|
16 |
-
* parent editor instance and a bunch of other things. It's higly recommended
|
17 |
-
* that you load this script into your dialogs.
|
18 |
-
*
|
19 |
-
* @static
|
20 |
-
* @class tinyMCEPopup
|
21 |
-
*/
|
22 |
-
tinyMCEPopup = {
|
23 |
-
/**
|
24 |
-
* Initializes the popup this will be called automatically.
|
25 |
-
*
|
26 |
-
* @method init
|
27 |
-
*/
|
28 |
-
init : function() {
|
29 |
-
var t = this, w, ti;
|
30 |
-
|
31 |
-
// Find window & API
|
32 |
-
w = t.getWin();
|
33 |
-
tinymce = w.tinymce;
|
34 |
-
tinyMCE = w.tinyMCE;
|
35 |
-
t.editor = tinymce.EditorManager.activeEditor;
|
36 |
-
t.params = t.editor.windowManager.params;
|
37 |
-
t.features = t.editor.windowManager.features;
|
38 |
-
|
39 |
-
// Setup local DOM
|
40 |
-
t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
|
41 |
-
|
42 |
-
// Enables you to skip loading the default css
|
43 |
-
if (t.features.popup_css !== false)
|
44 |
-
t.dom.loadCSS(t.features.popup_css || t.editor.settings.popup_css);
|
45 |
-
|
46 |
-
// Setup on init listeners
|
47 |
-
t.listeners = [];
|
48 |
-
t.onInit = {
|
49 |
-
add : function(f, s) {
|
50 |
-
t.listeners.push({func : f, scope : s});
|
51 |
-
}
|
52 |
-
};
|
53 |
-
|
54 |
-
t.isWindow = !t.getWindowArg('mce_inline');
|
55 |
-
t.id = t.getWindowArg('mce_window_id');
|
56 |
-
t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
|
57 |
-
},
|
58 |
-
|
59 |
-
/**
|
60 |
-
* Returns the reference to the parent window that opened the dialog.
|
61 |
-
*
|
62 |
-
* @method getWin
|
63 |
-
* @return {Window} Reference to the parent window that opened the dialog.
|
64 |
-
*/
|
65 |
-
getWin : function() {
|
66 |
-
// Added frameElement check to fix bug: #2817583
|
67 |
-
return (!window.frameElement && window.dialogArguments) || opener || parent || top;
|
68 |
-
},
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Returns a window argument/parameter by name.
|
72 |
-
*
|
73 |
-
* @method getWindowArg
|
74 |
-
* @param {String} n Name of the window argument to retrive.
|
75 |
-
* @param {String} dv Optional default value to return.
|
76 |
-
* @return {String} Argument value or default value if it wasn't found.
|
77 |
-
*/
|
78 |
-
getWindowArg : function(n, dv) {
|
79 |
-
var v = this.params[n];
|
80 |
-
|
81 |
-
return tinymce.is(v) ? v : dv;
|
82 |
-
},
|
83 |
-
|
84 |
-
/**
|
85 |
-
* Returns a editor parameter/config option value.
|
86 |
-
*
|
87 |
-
* @method getParam
|
88 |
-
* @param {String} n Name of the editor config option to retrive.
|
89 |
-
* @param {String} dv Optional default value to return.
|
90 |
-
* @return {String} Parameter value or default value if it wasn't found.
|
91 |
-
*/
|
92 |
-
getParam : function(n, dv) {
|
93 |
-
return this.editor.getParam(n, dv);
|
94 |
-
},
|
95 |
-
|
96 |
-
/**
|
97 |
-
* Returns a language item by key.
|
98 |
-
*
|
99 |
-
* @method getLang
|
100 |
-
* @param {String} n Language item like mydialog.something.
|
101 |
-
* @param {String} dv Optional default value to return.
|
102 |
-
* @return {String} Language value for the item like "my string" or the default value if it wasn't found.
|
103 |
-
*/
|
104 |
-
getLang : function(n, dv) {
|
105 |
-
return this.editor.getLang(n, dv);
|
106 |
-
},
|
107 |
-
|
108 |
-
/**
|
109 |
-
* Executed a command on editor that opened the dialog/popup.
|
110 |
-
*
|
111 |
-
* @method execCommand
|
112 |
-
* @param {String} cmd Command to execute.
|
113 |
-
* @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
|
114 |
-
* @param {Object} val Optional value to pass with the comman like an URL.
|
115 |
-
* @param {Object} a Optional arguments object.
|
116 |
-
*/
|
117 |
-
execCommand : function(cmd, ui, val, a) {
|
118 |
-
a = a || {};
|
119 |
-
a.skip_focus = 1;
|
120 |
-
|
121 |
-
this.restoreSelection();
|
122 |
-
return this.editor.execCommand(cmd, ui, val, a);
|
123 |
-
},
|
124 |
-
|
125 |
-
/**
|
126 |
-
* Resizes the dialog to the inner size of the window. This is needed since various browsers
|
127 |
-
* have different border sizes on windows.
|
128 |
-
*
|
129 |
-
* @method resizeToInnerSize
|
130 |
-
*/
|
131 |
-
resizeToInnerSize : function() {
|
132 |
-
var t = this;
|
133 |
-
|
134 |
-
// Detach it to workaround a Chrome specific bug
|
135 |
-
// https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
|
136 |
-
setTimeout(function() {
|
137 |
-
var vp = t.dom.getViewPort(window);
|
138 |
-
|
139 |
-
t.editor.windowManager.resizeBy(
|
140 |
-
t.getWindowArg('mce_width') - vp.w,
|
141 |
-
t.getWindowArg('mce_height') - vp.h,
|
142 |
-
t.id || window
|
143 |
-
);
|
144 |
-
}, 0);
|
145 |
-
},
|
146 |
-
|
147 |
-
/**
|
148 |
-
* Will executed the specified string when the page has been loaded. This function
|
149 |
-
* was added for compatibility with the 2.x branch.
|
150 |
-
*
|
151 |
-
* @method executeOnLoad
|
152 |
-
* @param {String} s String to evalutate on init.
|
153 |
-
*/
|
154 |
-
executeOnLoad : function(s) {
|
155 |
-
this.onInit.add(function() {
|
156 |
-
eval(s);
|
157 |
-
});
|
158 |
-
},
|
159 |
-
|
160 |
-
/**
|
161 |
-
* Stores the current editor selection for later restoration. This can be useful since some browsers
|
162 |
-
* looses it's selection if a control element is selected/focused inside the dialogs.
|
163 |
-
*
|
164 |
-
* @method storeSelection
|
165 |
-
*/
|
166 |
-
storeSelection : function() {
|
167 |
-
this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
|
168 |
-
},
|
169 |
-
|
170 |
-
/**
|
171 |
-
* Restores any stored selection. This can be useful since some browsers
|
172 |
-
* looses it's selection if a control element is selected/focused inside the dialogs.
|
173 |
-
*
|
174 |
-
* @method restoreSelection
|
175 |
-
*/
|
176 |
-
restoreSelection : function() {
|
177 |
-
var t = tinyMCEPopup;
|
178 |
-
|
179 |
-
if (!t.isWindow && tinymce.isIE)
|
180 |
-
t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
|
181 |
-
},
|
182 |
-
|
183 |
-
/**
|
184 |
-
* Loads a specific dialog language pack. If you pass in plugin_url as a arugment
|
185 |
-
* when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
|
186 |
-
*
|
187 |
-
* @method requireLangPack
|
188 |
-
*/
|
189 |
-
requireLangPack : function() {
|
190 |
-
var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');
|
191 |
-
|
192 |
-
if (u && t.editor.settings.language && t.features.translate_i18n !== false) {
|
193 |
-
u += '/langs/' + t.editor.settings.language + '_dlg.js';
|
194 |
-
|
195 |
-
if (!tinymce.ScriptLoader.isDone(u)) {
|
196 |
-
document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
|
197 |
-
tinymce.ScriptLoader.markDone(u);
|
198 |
-
}
|
199 |
-
}
|
200 |
-
},
|
201 |
-
|
202 |
-
/**
|
203 |
-
* Executes a color picker on the specified element id. When the user
|
204 |
-
* then selects a color it will be set as the value of the specified element.
|
205 |
-
*
|
206 |
-
* @method pickColor
|
207 |
-
* @param {DOMEvent} e DOM event object.
|
208 |
-
* @param {string} element_id Element id to be filled with the color value from the picker.
|
209 |
-
*/
|
210 |
-
pickColor : function(e, element_id) {
|
211 |
-
this.execCommand('mceColorPicker', true, {
|
212 |
-
color : document.getElementById(element_id).value,
|
213 |
-
func : function(c) {
|
214 |
-
document.getElementById(element_id).value = c;
|
215 |
-
|
216 |
-
try {
|
217 |
-
document.getElementById(element_id).onchange();
|
218 |
-
} catch (ex) {
|
219 |
-
// Try fire event, ignore errors
|
220 |
-
}
|
221 |
-
}
|
222 |
-
});
|
223 |
-
},
|
224 |
-
|
225 |
-
/**
|
226 |
-
* Opens a filebrowser/imagebrowser this will set the output value from
|
227 |
-
* the browser as a value on the specified element.
|
228 |
-
*
|
229 |
-
* @method openBrowser
|
230 |
-
* @param {string} element_id Id of the element to set value in.
|
231 |
-
* @param {string} type Type of browser to open image/file/flash.
|
232 |
-
* @param {string} option Option name to get the file_broswer_callback function name from.
|
233 |
-
*/
|
234 |
-
openBrowser : function(element_id, type, option) {
|
235 |
-
tinyMCEPopup.restoreSelection();
|
236 |
-
this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
|
237 |
-
},
|
238 |
-
|
239 |
-
/**
|
240 |
-
* Creates a confirm dialog. Please don't use the blocking behavior of this
|
241 |
-
* native version use the callback method instead then it can be extended.
|
242 |
-
*
|
243 |
-
* @method confirm
|
244 |
-
* @param {String} t Title for the new confirm dialog.
|
245 |
-
* @param {function} cb Callback function to be executed after the user has selected ok or cancel.
|
246 |
-
* @param {Object} s Optional scope to execute the callback in.
|
247 |
-
*/
|
248 |
-
confirm : function(t, cb, s) {
|
249 |
-
this.editor.windowManager.confirm(t, cb, s, window);
|
250 |
-
},
|
251 |
-
|
252 |
-
/**
|
253 |
-
* Creates a alert dialog. Please don't use the blocking behavior of this
|
254 |
-
* native version use the callback method instead then it can be extended.
|
255 |
-
*
|
256 |
-
* @method alert
|
257 |
-
* @param {String} t Title for the new alert dialog.
|
258 |
-
* @param {function} cb Callback function to be executed after the user has selected ok.
|
259 |
-
* @param {Object} s Optional scope to execute the callback in.
|
260 |
-
*/
|
261 |
-
alert : function(tx, cb, s) {
|
262 |
-
this.editor.windowManager.alert(tx, cb, s, window);
|
263 |
-
},
|
264 |
-
|
265 |
-
/**
|
266 |
-
* Closes the current window.
|
267 |
-
*
|
268 |
-
* @method close
|
269 |
-
*/
|
270 |
-
close : function() {
|
271 |
-
var t = this;
|
272 |
-
|
273 |
-
// To avoid domain relaxing issue in Opera
|
274 |
-
function close() {
|
275 |
-
t.editor.windowManager.close(window);
|
276 |
-
tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
|
277 |
-
};
|
278 |
-
|
279 |
-
if (tinymce.isOpera)
|
280 |
-
t.getWin().setTimeout(close, 0);
|
281 |
-
else
|
282 |
-
close();
|
283 |
-
},
|
284 |
-
|
285 |
-
// Internal functions
|
286 |
-
|
287 |
-
_restoreSelection : function() {
|
288 |
-
var e = window.event.srcElement;
|
289 |
-
|
290 |
-
if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
|
291 |
-
tinyMCEPopup.restoreSelection();
|
292 |
-
},
|
293 |
-
|
294 |
-
/* _restoreSelection : function() {
|
295 |
-
var e = window.event.srcElement;
|
296 |
-
|
297 |
-
// If user focus a non text input or textarea
|
298 |
-
if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
|
299 |
-
tinyMCEPopup.restoreSelection();
|
300 |
-
},*/
|
301 |
-
|
302 |
-
_onDOMLoaded : function() {
|
303 |
-
var t = tinyMCEPopup, ti = document.title, bm, h, nv;
|
304 |
-
|
305 |
-
if (t.domLoaded)
|
306 |
-
return;
|
307 |
-
|
308 |
-
t.domLoaded = 1;
|
309 |
-
|
310 |
-
// Translate page
|
311 |
-
if (t.features.translate_i18n !== false) {
|
312 |
-
h = document.body.innerHTML;
|
313 |
-
|
314 |
-
// Replace a=x with a="x" in IE
|
315 |
-
if (tinymce.isIE)
|
316 |
-
h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
|
317 |
-
|
318 |
-
document.dir = t.editor.getParam('directionality','');
|
319 |
-
|
320 |
-
if ((nv = t.editor.translate(h)) && nv != h)
|
321 |
-
document.body.innerHTML = nv;
|
322 |
-
|
323 |
-
if ((nv = t.editor.translate(ti)) && nv != ti)
|
324 |
-
document.title = ti = nv;
|
325 |
-
}
|
326 |
-
|
327 |
-
document.body.style.display = '';
|
328 |
-
|
329 |
-
// Restore selection in IE when focus is placed on a non textarea or input element of the type text
|
330 |
-
if (tinymce.isIE) {
|
331 |
-
document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
|
332 |
-
|
333 |
-
// Add base target element for it since it would fail with modal dialogs
|
334 |
-
t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});
|
335 |
-
}
|
336 |
-
|
337 |
-
t.restoreSelection();
|
338 |
-
t.resizeToInnerSize();
|
339 |
-
|
340 |
-
// Set inline title
|
341 |
-
if (!t.isWindow)
|
342 |
-
t.editor.windowManager.setTitle(window, ti);
|
343 |
-
else
|
344 |
-
window.focus();
|
345 |
-
|
346 |
-
if (!tinymce.isIE && !t.isWindow) {
|
347 |
-
tinymce.dom.Event._add(document, 'focus', function() {
|
348 |
-
t.editor.windowManager.focus(t.id);
|
349 |
-
});
|
350 |
-
}
|
351 |
-
|
352 |
-
// Patch for accessibility
|
353 |
-
tinymce.each(t.dom.select('select'), function(e) {
|
354 |
-
e.onkeydown = tinyMCEPopup._accessHandler;
|
355 |
-
});
|
356 |
-
|
357 |
-
// Call onInit
|
358 |
-
// Init must be called before focus so the selection won't get lost by the focus call
|
359 |
-
tinymce.each(t.listeners, function(o) {
|
360 |
-
o.func.call(o.scope, t.editor);
|
361 |
-
});
|
362 |
-
|
363 |
-
// Move focus to window
|
364 |
-
if (t.getWindowArg('mce_auto_focus', true)) {
|
365 |
-
window.focus();
|
366 |
-
|
367 |
-
// Focus element with mceFocus class
|
368 |
-
tinymce.each(document.forms, function(f) {
|
369 |
-
tinymce.each(f.elements, function(e) {
|
370 |
-
if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
|
371 |
-
e.focus();
|
372 |
-
return false; // Break loop
|
373 |
-
}
|
374 |
-
});
|
375 |
-
});
|
376 |
-
}
|
377 |
-
|
378 |
-
document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
|
379 |
-
},
|
380 |
-
|
381 |
-
_accessHandler : function(e) {
|
382 |
-
e = e || window.event;
|
383 |
-
|
384 |
-
if (e.keyCode == 13 || e.keyCode == 32) {
|
385 |
-
e = e.target || e.srcElement;
|
386 |
-
|
387 |
-
if (e.onchange)
|
388 |
-
e.onchange();
|
389 |
-
|
390 |
-
return tinymce.dom.Event.cancel(e);
|
391 |
-
}
|
392 |
-
},
|
393 |
-
|
394 |
-
_closeWinKeyHandler : function(e) {
|
395 |
-
e = e || window.event;
|
396 |
-
|
397 |
-
if (e.keyCode == 27)
|
398 |
-
tinyMCEPopup.close();
|
399 |
-
},
|
400 |
-
|
401 |
-
_wait : function() {
|
402 |
-
// Use IE method
|
403 |
-
if (document.attachEvent) {
|
404 |
-
document.attachEvent("onreadystatechange", function() {
|
405 |
-
if (document.readyState === "complete") {
|
406 |
-
document.detachEvent("onreadystatechange", arguments.callee);
|
407 |
-
tinyMCEPopup._onDOMLoaded();
|
408 |
-
}
|
409 |
-
});
|
410 |
-
|
411 |
-
if (document.documentElement.doScroll && window == window.top) {
|
412 |
-
(function() {
|
413 |
-
if (tinyMCEPopup.domLoaded)
|
414 |
-
return;
|
415 |
-
|
416 |
-
try {
|
417 |
-
// If IE is used, use the trick by Diego Perini
|
418 |
-
// http://javascript.nwbox.com/IEContentLoaded/
|
419 |
-
document.documentElement.doScroll("left");
|
420 |
-
} catch (ex) {
|
421 |
-
setTimeout(arguments.callee, 0);
|
422 |
-
return;
|
423 |
-
}
|
424 |
-
|
425 |
-
tinyMCEPopup._onDOMLoaded();
|
426 |
-
})();
|
427 |
-
}
|
428 |
-
|
429 |
-
document.attachEvent('onload', tinyMCEPopup._onDOMLoaded);
|
430 |
-
} else if (document.addEventListener) {
|
431 |
-
window.addEventListener('DOMContentLoaded', tinyMCEPopup._onDOMLoaded, false);
|
432 |
-
window.addEventListener('load', tinyMCEPopup._onDOMLoaded, false);
|
433 |
-
}
|
434 |
-
}
|
435 |
-
};
|
436 |
-
|
437 |
-
tinyMCEPopup.init();
|
438 |
-
tinyMCEPopup._wait(); // Wait for DOM Content Loaded
|
1 |
+
/**
|
2 |
+
* Popup.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Some global instances
|
12 |
+
var tinymce = null, tinyMCEPopup, tinyMCE;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* TinyMCE popup/dialog helper class. This gives you easy access to the
|
16 |
+
* parent editor instance and a bunch of other things. It's higly recommended
|
17 |
+
* that you load this script into your dialogs.
|
18 |
+
*
|
19 |
+
* @static
|
20 |
+
* @class tinyMCEPopup
|
21 |
+
*/
|
22 |
+
tinyMCEPopup = {
|
23 |
+
/**
|
24 |
+
* Initializes the popup this will be called automatically.
|
25 |
+
*
|
26 |
+
* @method init
|
27 |
+
*/
|
28 |
+
init : function() {
|
29 |
+
var t = this, w, ti;
|
30 |
+
|
31 |
+
// Find window & API
|
32 |
+
w = t.getWin();
|
33 |
+
tinymce = w.tinymce;
|
34 |
+
tinyMCE = w.tinyMCE;
|
35 |
+
t.editor = tinymce.EditorManager.activeEditor;
|
36 |
+
t.params = t.editor.windowManager.params;
|
37 |
+
t.features = t.editor.windowManager.features;
|
38 |
+
|
39 |
+
// Setup local DOM
|
40 |
+
t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
|
41 |
+
|
42 |
+
// Enables you to skip loading the default css
|
43 |
+
if (t.features.popup_css !== false)
|
44 |
+
t.dom.loadCSS(t.features.popup_css || t.editor.settings.popup_css);
|
45 |
+
|
46 |
+
// Setup on init listeners
|
47 |
+
t.listeners = [];
|
48 |
+
t.onInit = {
|
49 |
+
add : function(f, s) {
|
50 |
+
t.listeners.push({func : f, scope : s});
|
51 |
+
}
|
52 |
+
};
|
53 |
+
|
54 |
+
t.isWindow = !t.getWindowArg('mce_inline');
|
55 |
+
t.id = t.getWindowArg('mce_window_id');
|
56 |
+
t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
|
57 |
+
},
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Returns the reference to the parent window that opened the dialog.
|
61 |
+
*
|
62 |
+
* @method getWin
|
63 |
+
* @return {Window} Reference to the parent window that opened the dialog.
|
64 |
+
*/
|
65 |
+
getWin : function() {
|
66 |
+
// Added frameElement check to fix bug: #2817583
|
67 |
+
return (!window.frameElement && window.dialogArguments) || opener || parent || top;
|
68 |
+
},
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Returns a window argument/parameter by name.
|
72 |
+
*
|
73 |
+
* @method getWindowArg
|
74 |
+
* @param {String} n Name of the window argument to retrive.
|
75 |
+
* @param {String} dv Optional default value to return.
|
76 |
+
* @return {String} Argument value or default value if it wasn't found.
|
77 |
+
*/
|
78 |
+
getWindowArg : function(n, dv) {
|
79 |
+
var v = this.params[n];
|
80 |
+
|
81 |
+
return tinymce.is(v) ? v : dv;
|
82 |
+
},
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Returns a editor parameter/config option value.
|
86 |
+
*
|
87 |
+
* @method getParam
|
88 |
+
* @param {String} n Name of the editor config option to retrive.
|
89 |
+
* @param {String} dv Optional default value to return.
|
90 |
+
* @return {String} Parameter value or default value if it wasn't found.
|
91 |
+
*/
|
92 |
+
getParam : function(n, dv) {
|
93 |
+
return this.editor.getParam(n, dv);
|
94 |
+
},
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Returns a language item by key.
|
98 |
+
*
|
99 |
+
* @method getLang
|
100 |
+
* @param {String} n Language item like mydialog.something.
|
101 |
+
* @param {String} dv Optional default value to return.
|
102 |
+
* @return {String} Language value for the item like "my string" or the default value if it wasn't found.
|
103 |
+
*/
|
104 |
+
getLang : function(n, dv) {
|
105 |
+
return this.editor.getLang(n, dv);
|
106 |
+
},
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Executed a command on editor that opened the dialog/popup.
|
110 |
+
*
|
111 |
+
* @method execCommand
|
112 |
+
* @param {String} cmd Command to execute.
|
113 |
+
* @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
|
114 |
+
* @param {Object} val Optional value to pass with the comman like an URL.
|
115 |
+
* @param {Object} a Optional arguments object.
|
116 |
+
*/
|
117 |
+
execCommand : function(cmd, ui, val, a) {
|
118 |
+
a = a || {};
|
119 |
+
a.skip_focus = 1;
|
120 |
+
|
121 |
+
this.restoreSelection();
|
122 |
+
return this.editor.execCommand(cmd, ui, val, a);
|
123 |
+
},
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Resizes the dialog to the inner size of the window. This is needed since various browsers
|
127 |
+
* have different border sizes on windows.
|
128 |
+
*
|
129 |
+
* @method resizeToInnerSize
|
130 |
+
*/
|
131 |
+
resizeToInnerSize : function() {
|
132 |
+
var t = this;
|
133 |
+
|
134 |
+
// Detach it to workaround a Chrome specific bug
|
135 |
+
// https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
|
136 |
+
setTimeout(function() {
|
137 |
+
var vp = t.dom.getViewPort(window);
|
138 |
+
|
139 |
+
t.editor.windowManager.resizeBy(
|
140 |
+
t.getWindowArg('mce_width') - vp.w,
|
141 |
+
t.getWindowArg('mce_height') - vp.h,
|
142 |
+
t.id || window
|
143 |
+
);
|
144 |
+
}, 0);
|
145 |
+
},
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Will executed the specified string when the page has been loaded. This function
|
149 |
+
* was added for compatibility with the 2.x branch.
|
150 |
+
*
|
151 |
+
* @method executeOnLoad
|
152 |
+
* @param {String} s String to evalutate on init.
|
153 |
+
*/
|
154 |
+
executeOnLoad : function(s) {
|
155 |
+
this.onInit.add(function() {
|
156 |
+
eval(s);
|
157 |
+
});
|
158 |
+
},
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Stores the current editor selection for later restoration. This can be useful since some browsers
|
162 |
+
* looses it's selection if a control element is selected/focused inside the dialogs.
|
163 |
+
*
|
164 |
+
* @method storeSelection
|
165 |
+
*/
|
166 |
+
storeSelection : function() {
|
167 |
+
this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
|
168 |
+
},
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Restores any stored selection. This can be useful since some browsers
|
172 |
+
* looses it's selection if a control element is selected/focused inside the dialogs.
|
173 |
+
*
|
174 |
+
* @method restoreSelection
|
175 |
+
*/
|
176 |
+
restoreSelection : function() {
|
177 |
+
var t = tinyMCEPopup;
|
178 |
+
|
179 |
+
if (!t.isWindow && tinymce.isIE)
|
180 |
+
t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
|
181 |
+
},
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Loads a specific dialog language pack. If you pass in plugin_url as a arugment
|
185 |
+
* when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
|
186 |
+
*
|
187 |
+
* @method requireLangPack
|
188 |
+
*/
|
189 |
+
requireLangPack : function() {
|
190 |
+
var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');
|
191 |
+
|
192 |
+
if (u && t.editor.settings.language && t.features.translate_i18n !== false) {
|
193 |
+
u += '/langs/' + t.editor.settings.language + '_dlg.js';
|
194 |
+
|
195 |
+
if (!tinymce.ScriptLoader.isDone(u)) {
|
196 |
+
document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
|
197 |
+
tinymce.ScriptLoader.markDone(u);
|
198 |
+
}
|
199 |
+
}
|
200 |
+
},
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Executes a color picker on the specified element id. When the user
|
204 |
+
* then selects a color it will be set as the value of the specified element.
|
205 |
+
*
|
206 |
+
* @method pickColor
|
207 |
+
* @param {DOMEvent} e DOM event object.
|
208 |
+
* @param {string} element_id Element id to be filled with the color value from the picker.
|
209 |
+
*/
|
210 |
+
pickColor : function(e, element_id) {
|
211 |
+
this.execCommand('mceColorPicker', true, {
|
212 |
+
color : document.getElementById(element_id).value,
|
213 |
+
func : function(c) {
|
214 |
+
document.getElementById(element_id).value = c;
|
215 |
+
|
216 |
+
try {
|
217 |
+
document.getElementById(element_id).onchange();
|
218 |
+
} catch (ex) {
|
219 |
+
// Try fire event, ignore errors
|
220 |
+
}
|
221 |
+
}
|
222 |
+
});
|
223 |
+
},
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Opens a filebrowser/imagebrowser this will set the output value from
|
227 |
+
* the browser as a value on the specified element.
|
228 |
+
*
|
229 |
+
* @method openBrowser
|
230 |
+
* @param {string} element_id Id of the element to set value in.
|
231 |
+
* @param {string} type Type of browser to open image/file/flash.
|
232 |
+
* @param {string} option Option name to get the file_broswer_callback function name from.
|
233 |
+
*/
|
234 |
+
openBrowser : function(element_id, type, option) {
|
235 |
+
tinyMCEPopup.restoreSelection();
|
236 |
+
this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
|
237 |
+
},
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Creates a confirm dialog. Please don't use the blocking behavior of this
|
241 |
+
* native version use the callback method instead then it can be extended.
|
242 |
+
*
|
243 |
+
* @method confirm
|
244 |
+
* @param {String} t Title for the new confirm dialog.
|
245 |
+
* @param {function} cb Callback function to be executed after the user has selected ok or cancel.
|
246 |
+
* @param {Object} s Optional scope to execute the callback in.
|
247 |
+
*/
|
248 |
+
confirm : function(t, cb, s) {
|
249 |
+
this.editor.windowManager.confirm(t, cb, s, window);
|
250 |
+
},
|
251 |
+
|
252 |
+
/**
|
253 |
+
* Creates a alert dialog. Please don't use the blocking behavior of this
|
254 |
+
* native version use the callback method instead then it can be extended.
|
255 |
+
*
|
256 |
+
* @method alert
|
257 |
+
* @param {String} t Title for the new alert dialog.
|
258 |
+
* @param {function} cb Callback function to be executed after the user has selected ok.
|
259 |
+
* @param {Object} s Optional scope to execute the callback in.
|
260 |
+
*/
|
261 |
+
alert : function(tx, cb, s) {
|
262 |
+
this.editor.windowManager.alert(tx, cb, s, window);
|
263 |
+
},
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Closes the current window.
|
267 |
+
*
|
268 |
+
* @method close
|
269 |
+
*/
|
270 |
+
close : function() {
|
271 |
+
var t = this;
|
272 |
+
|
273 |
+
// To avoid domain relaxing issue in Opera
|
274 |
+
function close() {
|
275 |
+
t.editor.windowManager.close(window);
|
276 |
+
tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
|
277 |
+
};
|
278 |
+
|
279 |
+
if (tinymce.isOpera)
|
280 |
+
t.getWin().setTimeout(close, 0);
|
281 |
+
else
|
282 |
+
close();
|
283 |
+
},
|
284 |
+
|
285 |
+
// Internal functions
|
286 |
+
|
287 |
+
_restoreSelection : function() {
|
288 |
+
var e = window.event.srcElement;
|
289 |
+
|
290 |
+
if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
|
291 |
+
tinyMCEPopup.restoreSelection();
|
292 |
+
},
|
293 |
+
|
294 |
+
/* _restoreSelection : function() {
|
295 |
+
var e = window.event.srcElement;
|
296 |
+
|
297 |
+
// If user focus a non text input or textarea
|
298 |
+
if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
|
299 |
+
tinyMCEPopup.restoreSelection();
|
300 |
+
},*/
|
301 |
+
|
302 |
+
_onDOMLoaded : function() {
|
303 |
+
var t = tinyMCEPopup, ti = document.title, bm, h, nv;
|
304 |
+
|
305 |
+
if (t.domLoaded)
|
306 |
+
return;
|
307 |
+
|
308 |
+
t.domLoaded = 1;
|
309 |
+
|
310 |
+
// Translate page
|
311 |
+
if (t.features.translate_i18n !== false) {
|
312 |
+
h = document.body.innerHTML;
|
313 |
+
|
314 |
+
// Replace a=x with a="x" in IE
|
315 |
+
if (tinymce.isIE)
|
316 |
+
h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
|
317 |
+
|
318 |
+
document.dir = t.editor.getParam('directionality','');
|
319 |
+
|
320 |
+
if ((nv = t.editor.translate(h)) && nv != h)
|
321 |
+
document.body.innerHTML = nv;
|
322 |
+
|
323 |
+
if ((nv = t.editor.translate(ti)) && nv != ti)
|
324 |
+
document.title = ti = nv;
|
325 |
+
}
|
326 |
+
|
327 |
+
document.body.style.display = '';
|
328 |
+
|
329 |
+
// Restore selection in IE when focus is placed on a non textarea or input element of the type text
|
330 |
+
if (tinymce.isIE) {
|
331 |
+
document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
|
332 |
+
|
333 |
+
// Add base target element for it since it would fail with modal dialogs
|
334 |
+
t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});
|
335 |
+
}
|
336 |
+
|
337 |
+
t.restoreSelection();
|
338 |
+
t.resizeToInnerSize();
|
339 |
+
|
340 |
+
// Set inline title
|
341 |
+
if (!t.isWindow)
|
342 |
+
t.editor.windowManager.setTitle(window, ti);
|
343 |
+
else
|
344 |
+
window.focus();
|
345 |
+
|
346 |
+
if (!tinymce.isIE && !t.isWindow) {
|
347 |
+
tinymce.dom.Event._add(document, 'focus', function() {
|
348 |
+
t.editor.windowManager.focus(t.id);
|
349 |
+
});
|
350 |
+
}
|
351 |
+
|
352 |
+
// Patch for accessibility
|
353 |
+
tinymce.each(t.dom.select('select'), function(e) {
|
354 |
+
e.onkeydown = tinyMCEPopup._accessHandler;
|
355 |
+
});
|
356 |
+
|
357 |
+
// Call onInit
|
358 |
+
// Init must be called before focus so the selection won't get lost by the focus call
|
359 |
+
tinymce.each(t.listeners, function(o) {
|
360 |
+
o.func.call(o.scope, t.editor);
|
361 |
+
});
|
362 |
+
|
363 |
+
// Move focus to window
|
364 |
+
if (t.getWindowArg('mce_auto_focus', true)) {
|
365 |
+
window.focus();
|
366 |
+
|
367 |
+
// Focus element with mceFocus class
|
368 |
+
tinymce.each(document.forms, function(f) {
|
369 |
+
tinymce.each(f.elements, function(e) {
|
370 |
+
if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
|
371 |
+
e.focus();
|
372 |
+
return false; // Break loop
|
373 |
+
}
|
374 |
+
});
|
375 |
+
});
|
376 |
+
}
|
377 |
+
|
378 |
+
document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
|
379 |
+
},
|
380 |
+
|
381 |
+
_accessHandler : function(e) {
|
382 |
+
e = e || window.event;
|
383 |
+
|
384 |
+
if (e.keyCode == 13 || e.keyCode == 32) {
|
385 |
+
e = e.target || e.srcElement;
|
386 |
+
|
387 |
+
if (e.onchange)
|
388 |
+
e.onchange();
|
389 |
+
|
390 |
+
return tinymce.dom.Event.cancel(e);
|
391 |
+
}
|
392 |
+
},
|
393 |
+
|
394 |
+
_closeWinKeyHandler : function(e) {
|
395 |
+
e = e || window.event;
|
396 |
+
|
397 |
+
if (e.keyCode == 27)
|
398 |
+
tinyMCEPopup.close();
|
399 |
+
},
|
400 |
+
|
401 |
+
_wait : function() {
|
402 |
+
// Use IE method
|
403 |
+
if (document.attachEvent) {
|
404 |
+
document.attachEvent("onreadystatechange", function() {
|
405 |
+
if (document.readyState === "complete") {
|
406 |
+
document.detachEvent("onreadystatechange", arguments.callee);
|
407 |
+
tinyMCEPopup._onDOMLoaded();
|
408 |
+
}
|
409 |
+
});
|
410 |
+
|
411 |
+
if (document.documentElement.doScroll && window == window.top) {
|
412 |
+
(function() {
|
413 |
+
if (tinyMCEPopup.domLoaded)
|
414 |
+
return;
|
415 |
+
|
416 |
+
try {
|
417 |
+
// If IE is used, use the trick by Diego Perini
|
418 |
+
// http://javascript.nwbox.com/IEContentLoaded/
|
419 |
+
document.documentElement.doScroll("left");
|
420 |
+
} catch (ex) {
|
421 |
+
setTimeout(arguments.callee, 0);
|
422 |
+
return;
|
423 |
+
}
|
424 |
+
|
425 |
+
tinyMCEPopup._onDOMLoaded();
|
426 |
+
})();
|
427 |
+
}
|
428 |
+
|
429 |
+
document.attachEvent('onload', tinyMCEPopup._onDOMLoaded);
|
430 |
+
} else if (document.addEventListener) {
|
431 |
+
window.addEventListener('DOMContentLoaded', tinyMCEPopup._onDOMLoaded, false);
|
432 |
+
window.addEventListener('load', tinyMCEPopup._onDOMLoaded, false);
|
433 |
+
}
|
434 |
+
}
|
435 |
+
};
|
436 |
+
|
437 |
+
tinyMCEPopup.init();
|
438 |
+
tinyMCEPopup._wait(); // Wait for DOM Content Loaded
|
js/tiny_mce_german/classes/UndoManager.js
CHANGED
@@ -1,163 +1,163 @@
|
|
1 |
-
/**
|
2 |
-
* UndoManager.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
var Dispatcher = tinymce.util.Dispatcher;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* This class handles the undo/redo history levels for the editor. Since the build in undo/redo has major drawbacks a custom one was needed.
|
16 |
-
*
|
17 |
-
* @class tinymce.UndoManager
|
18 |
-
*/
|
19 |
-
tinymce.UndoManager = function(editor) {
|
20 |
-
var self, index = 0, data = [];
|
21 |
-
|
22 |
-
function getContent() {
|
23 |
-
return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}));
|
24 |
-
};
|
25 |
-
|
26 |
-
return self = {
|
27 |
-
typing : 0,
|
28 |
-
|
29 |
-
onAdd : new Dispatcher(self),
|
30 |
-
onUndo : new Dispatcher(self),
|
31 |
-
onRedo : new Dispatcher(self),
|
32 |
-
|
33 |
-
/**
|
34 |
-
* Adds a new undo level/snapshot to the undo list.
|
35 |
-
*
|
36 |
-
* @method add
|
37 |
-
* @param {Object} l Optional undo level object to add.
|
38 |
-
* @return {Object} Undo level that got added or null it a level wasn't needed.
|
39 |
-
*/
|
40 |
-
add : function(level) {
|
41 |
-
var i, settings = editor.settings, lastLevel;
|
42 |
-
|
43 |
-
level = level || {};
|
44 |
-
level.content = getContent();
|
45 |
-
|
46 |
-
// Add undo level if needed
|
47 |
-
lastLevel = data[index];
|
48 |
-
if (lastLevel && lastLevel.content == level.content) {
|
49 |
-
if (index > 0 || data.length == 1)
|
50 |
-
return null;
|
51 |
-
}
|
52 |
-
|
53 |
-
// Time to compress
|
54 |
-
if (settings.custom_undo_redo_levels) {
|
55 |
-
if (data.length > settings.custom_undo_redo_levels) {
|
56 |
-
for (i = 0; i < data.length - 1; i++)
|
57 |
-
data[i] = data[i + 1];
|
58 |
-
|
59 |
-
data.length--;
|
60 |
-
index = data.length;
|
61 |
-
}
|
62 |
-
}
|
63 |
-
|
64 |
-
// Get a non intrusive normalized bookmark
|
65 |
-
level.bookmark = editor.selection.getBookmark(2, true);
|
66 |
-
|
67 |
-
// Crop array if needed
|
68 |
-
if (index < data.length - 1) {
|
69 |
-
// Treat first level as initial
|
70 |
-
if (index == 0)
|
71 |
-
data = [];
|
72 |
-
else
|
73 |
-
data.length = index + 1;
|
74 |
-
}
|
75 |
-
|
76 |
-
data.push(level);
|
77 |
-
index = data.length - 1;
|
78 |
-
|
79 |
-
self.onAdd.dispatch(self, level);
|
80 |
-
editor.isNotDirty = 0;
|
81 |
-
|
82 |
-
return level;
|
83 |
-
},
|
84 |
-
|
85 |
-
/**
|
86 |
-
* Undoes the last action.
|
87 |
-
*
|
88 |
-
* @method undo
|
89 |
-
* @return {Object} Undo level or null if no undo was performed.
|
90 |
-
*/
|
91 |
-
undo : function() {
|
92 |
-
var level, i;
|
93 |
-
|
94 |
-
if (self.typing) {
|
95 |
-
self.add();
|
96 |
-
self.typing = 0;
|
97 |
-
}
|
98 |
-
|
99 |
-
if (index > 0) {
|
100 |
-
level = data[--index];
|
101 |
-
|
102 |
-
editor.setContent(level.content, {format : 'raw'});
|
103 |
-
editor.selection.moveToBookmark(level.bookmark);
|
104 |
-
|
105 |
-
self.onUndo.dispatch(self, level);
|
106 |
-
}
|
107 |
-
|
108 |
-
return level;
|
109 |
-
},
|
110 |
-
|
111 |
-
/**
|
112 |
-
* Redoes the last action.
|
113 |
-
*
|
114 |
-
* @method redo
|
115 |
-
* @return {Object} Redo level or null if no redo was performed.
|
116 |
-
*/
|
117 |
-
redo : function() {
|
118 |
-
var level;
|
119 |
-
|
120 |
-
if (index < data.length - 1) {
|
121 |
-
level = data[++index];
|
122 |
-
|
123 |
-
editor.setContent(level.content, {format : 'raw'});
|
124 |
-
editor.selection.moveToBookmark(level.bookmark);
|
125 |
-
|
126 |
-
self.onRedo.dispatch(self, level);
|
127 |
-
}
|
128 |
-
|
129 |
-
return level;
|
130 |
-
},
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Removes all undo levels.
|
134 |
-
*
|
135 |
-
* @method clear
|
136 |
-
*/
|
137 |
-
clear : function() {
|
138 |
-
data = [];
|
139 |
-
index = self.typing = 0;
|
140 |
-
},
|
141 |
-
|
142 |
-
/**
|
143 |
-
* Returns true/false if the undo manager has any undo levels.
|
144 |
-
*
|
145 |
-
* @method hasUndo
|
146 |
-
* @return {Boolean} true/false if the undo manager has any undo levels.
|
147 |
-
*/
|
148 |
-
hasUndo : function() {
|
149 |
-
return index > 0 || self.typing;
|
150 |
-
},
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Returns true/false if the undo manager has any redo levels.
|
154 |
-
*
|
155 |
-
* @method hasRedo
|
156 |
-
* @return {Boolean} true/false if the undo manager has any redo levels.
|
157 |
-
*/
|
158 |
-
hasRedo : function() {
|
159 |
-
return index < data.length - 1;
|
160 |
-
}
|
161 |
-
};
|
162 |
-
};
|
163 |
-
})(tinymce);
|
1 |
+
/**
|
2 |
+
* UndoManager.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
var Dispatcher = tinymce.util.Dispatcher;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This class handles the undo/redo history levels for the editor. Since the build in undo/redo has major drawbacks a custom one was needed.
|
16 |
+
*
|
17 |
+
* @class tinymce.UndoManager
|
18 |
+
*/
|
19 |
+
tinymce.UndoManager = function(editor) {
|
20 |
+
var self, index = 0, data = [];
|
21 |
+
|
22 |
+
function getContent() {
|
23 |
+
return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}));
|
24 |
+
};
|
25 |
+
|
26 |
+
return self = {
|
27 |
+
typing : 0,
|
28 |
+
|
29 |
+
onAdd : new Dispatcher(self),
|
30 |
+
onUndo : new Dispatcher(self),
|
31 |
+
onRedo : new Dispatcher(self),
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Adds a new undo level/snapshot to the undo list.
|
35 |
+
*
|
36 |
+
* @method add
|
37 |
+
* @param {Object} l Optional undo level object to add.
|
38 |
+
* @return {Object} Undo level that got added or null it a level wasn't needed.
|
39 |
+
*/
|
40 |
+
add : function(level) {
|
41 |
+
var i, settings = editor.settings, lastLevel;
|
42 |
+
|
43 |
+
level = level || {};
|
44 |
+
level.content = getContent();
|
45 |
+
|
46 |
+
// Add undo level if needed
|
47 |
+
lastLevel = data[index];
|
48 |
+
if (lastLevel && lastLevel.content == level.content) {
|
49 |
+
if (index > 0 || data.length == 1)
|
50 |
+
return null;
|
51 |
+
}
|
52 |
+
|
53 |
+
// Time to compress
|
54 |
+
if (settings.custom_undo_redo_levels) {
|
55 |
+
if (data.length > settings.custom_undo_redo_levels) {
|
56 |
+
for (i = 0; i < data.length - 1; i++)
|
57 |
+
data[i] = data[i + 1];
|
58 |
+
|
59 |
+
data.length--;
|
60 |
+
index = data.length;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
// Get a non intrusive normalized bookmark
|
65 |
+
level.bookmark = editor.selection.getBookmark(2, true);
|
66 |
+
|
67 |
+
// Crop array if needed
|
68 |
+
if (index < data.length - 1) {
|
69 |
+
// Treat first level as initial
|
70 |
+
if (index == 0)
|
71 |
+
data = [];
|
72 |
+
else
|
73 |
+
data.length = index + 1;
|
74 |
+
}
|
75 |
+
|
76 |
+
data.push(level);
|
77 |
+
index = data.length - 1;
|
78 |
+
|
79 |
+
self.onAdd.dispatch(self, level);
|
80 |
+
editor.isNotDirty = 0;
|
81 |
+
|
82 |
+
return level;
|
83 |
+
},
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Undoes the last action.
|
87 |
+
*
|
88 |
+
* @method undo
|
89 |
+
* @return {Object} Undo level or null if no undo was performed.
|
90 |
+
*/
|
91 |
+
undo : function() {
|
92 |
+
var level, i;
|
93 |
+
|
94 |
+
if (self.typing) {
|
95 |
+
self.add();
|
96 |
+
self.typing = 0;
|
97 |
+
}
|
98 |
+
|
99 |
+
if (index > 0) {
|
100 |
+
level = data[--index];
|
101 |
+
|
102 |
+
editor.setContent(level.content, {format : 'raw'});
|
103 |
+
editor.selection.moveToBookmark(level.bookmark);
|
104 |
+
|
105 |
+
self.onUndo.dispatch(self, level);
|
106 |
+
}
|
107 |
+
|
108 |
+
return level;
|
109 |
+
},
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Redoes the last action.
|
113 |
+
*
|
114 |
+
* @method redo
|
115 |
+
* @return {Object} Redo level or null if no redo was performed.
|
116 |
+
*/
|
117 |
+
redo : function() {
|
118 |
+
var level;
|
119 |
+
|
120 |
+
if (index < data.length - 1) {
|
121 |
+
level = data[++index];
|
122 |
+
|
123 |
+
editor.setContent(level.content, {format : 'raw'});
|
124 |
+
editor.selection.moveToBookmark(level.bookmark);
|
125 |
+
|
126 |
+
self.onRedo.dispatch(self, level);
|
127 |
+
}
|
128 |
+
|
129 |
+
return level;
|
130 |
+
},
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Removes all undo levels.
|
134 |
+
*
|
135 |
+
* @method clear
|
136 |
+
*/
|
137 |
+
clear : function() {
|
138 |
+
data = [];
|
139 |
+
index = self.typing = 0;
|
140 |
+
},
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Returns true/false if the undo manager has any undo levels.
|
144 |
+
*
|
145 |
+
* @method hasUndo
|
146 |
+
* @return {Boolean} true/false if the undo manager has any undo levels.
|
147 |
+
*/
|
148 |
+
hasUndo : function() {
|
149 |
+
return index > 0 || self.typing;
|
150 |
+
},
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Returns true/false if the undo manager has any redo levels.
|
154 |
+
*
|
155 |
+
* @method hasRedo
|
156 |
+
* @return {Boolean} true/false if the undo manager has any redo levels.
|
157 |
+
*/
|
158 |
+
hasRedo : function() {
|
159 |
+
return index < data.length - 1;
|
160 |
+
}
|
161 |
+
};
|
162 |
+
};
|
163 |
+
})(tinymce);
|
js/tiny_mce_german/classes/WindowManager.js
CHANGED
@@ -1,183 +1,183 @@
|
|
1 |
-
/**
|
2 |
-
* WindowManager.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function(tinymce) {
|
12 |
-
var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* This class handles the creation of native windows and dialogs. This class can be extended to provide for example inline dialogs.
|
16 |
-
* @class tinymce.WindowManager
|
17 |
-
*/
|
18 |
-
tinymce.create('tinymce.WindowManager', {
|
19 |
-
/**
|
20 |
-
* Constructs a new window manager instance.
|
21 |
-
*
|
22 |
-
* @constructor
|
23 |
-
* @method WindowManager
|
24 |
-
* @param {tinymce.Editor} ed Editor instance that the windows are bound to.
|
25 |
-
*/
|
26 |
-
WindowManager : function(ed) {
|
27 |
-
var t = this;
|
28 |
-
|
29 |
-
t.editor = ed;
|
30 |
-
t.onOpen = new Dispatcher(t);
|
31 |
-
t.onClose = new Dispatcher(t);
|
32 |
-
t.params = {};
|
33 |
-
t.features = {};
|
34 |
-
},
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Opens a new window.
|
38 |
-
*
|
39 |
-
* @method open
|
40 |
-
* @param {Object} s Optional name/value settings collection contains things like width/height/url etc.
|
41 |
-
* @param {Object} p Optional parameters/arguments collection can be used by the dialogs to retrive custom parameters.
|
42 |
-
*/
|
43 |
-
open : function(s, p) {
|
44 |
-
var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
|
45 |
-
|
46 |
-
// Default some options
|
47 |
-
s = s || {};
|
48 |
-
p = p || {};
|
49 |
-
sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
|
50 |
-
sh = isOpera ? vp.h : screen.height;
|
51 |
-
s.name = s.name || 'mc_' + new Date().getTime();
|
52 |
-
s.width = parseInt(s.width || 320);
|
53 |
-
s.height = parseInt(s.height || 240);
|
54 |
-
s.resizable = true;
|
55 |
-
s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
|
56 |
-
s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
|
57 |
-
p.inline = false;
|
58 |
-
p.mce_width = s.width;
|
59 |
-
p.mce_height = s.height;
|
60 |
-
p.mce_auto_focus = s.auto_focus;
|
61 |
-
|
62 |
-
if (mo) {
|
63 |
-
if (isIE) {
|
64 |
-
s.center = true;
|
65 |
-
s.help = false;
|
66 |
-
s.dialogWidth = s.width + 'px';
|
67 |
-
s.dialogHeight = s.height + 'px';
|
68 |
-
s.scroll = s.scrollbars || false;
|
69 |
-
}
|
70 |
-
}
|
71 |
-
|
72 |
-
// Build features string
|
73 |
-
each(s, function(v, k) {
|
74 |
-
if (tinymce.is(v, 'boolean'))
|
75 |
-
v = v ? 'yes' : 'no';
|
76 |
-
|
77 |
-
if (!/^(name|url)$/.test(k)) {
|
78 |
-
if (isIE && mo)
|
79 |
-
f += (f ? ';' : '') + k + ':' + v;
|
80 |
-
else
|
81 |
-
f += (f ? ',' : '') + k + '=' + v;
|
82 |
-
}
|
83 |
-
});
|
84 |
-
|
85 |
-
t.features = s;
|
86 |
-
t.params = p;
|
87 |
-
t.onOpen.dispatch(t, s, p);
|
88 |
-
|
89 |
-
u = s.url || s.file;
|
90 |
-
u = tinymce._addVer(u);
|
91 |
-
|
92 |
-
try {
|
93 |
-
if (isIE && mo) {
|
94 |
-
w = 1;
|
95 |
-
window.showModalDialog(u, window, f);
|
96 |
-
} else
|
97 |
-
w = window.open(u, s.name, f);
|
98 |
-
} catch (ex) {
|
99 |
-
// Ignore
|
100 |
-
}
|
101 |
-
|
102 |
-
if (!w)
|
103 |
-
alert(t.editor.getLang('popup_blocked'));
|
104 |
-
},
|
105 |
-
|
106 |
-
/**
|
107 |
-
* Closes the specified window. This will also dispatch out a onClose event.
|
108 |
-
*
|
109 |
-
* @method close
|
110 |
-
* @param {Window} w Native window object to close.
|
111 |
-
*/
|
112 |
-
close : function(w) {
|
113 |
-
w.close();
|
114 |
-
this.onClose.dispatch(this);
|
115 |
-
},
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Creates a instance of a class. This method was needed since IE can't create instances
|
119 |
-
* of classes from a parent window due to some reference problem. Any arguments passed after the class name
|
120 |
-
* will be passed as arguments to the constructor.
|
121 |
-
*
|
122 |
-
* @method createInstance
|
123 |
-
* @param {String} cl Class name to create an instance of.
|
124 |
-
* @return {Object} Instance of the specified class.
|
125 |
-
*/
|
126 |
-
createInstance : function(cl, a, b, c, d, e) {
|
127 |
-
var f = tinymce.resolve(cl);
|
128 |
-
|
129 |
-
return new f(a, b, c, d, e);
|
130 |
-
},
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Creates a confirm dialog. Please don't use the blocking behavior of this
|
134 |
-
* native version use the callback method instead then it can be extended.
|
135 |
-
*
|
136 |
-
* @method confirm
|
137 |
-
* @param {String} t Title for the new confirm dialog.
|
138 |
-
* @param {function} cb Callback function to be executed after the user has selected ok or cancel.
|
139 |
-
* @param {Object} s Optional scope to execute the callback in.
|
140 |
-
*/
|
141 |
-
confirm : function(t, cb, s, w) {
|
142 |
-
w = w || window;
|
143 |
-
|
144 |
-
cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));
|
145 |
-
},
|
146 |
-
|
147 |
-
/**
|
148 |
-
* Creates a alert dialog. Please don't use the blocking behavior of this
|
149 |
-
* native version use the callback method instead then it can be extended.
|
150 |
-
*
|
151 |
-
* @method alert
|
152 |
-
* @param {String} t Title for the new alert dialog.
|
153 |
-
* @param {function} cb Callback function to be executed after the user has selected ok.
|
154 |
-
* @param {Object} s Optional scope to execute the callback in.
|
155 |
-
*/
|
156 |
-
alert : function(tx, cb, s, w) {
|
157 |
-
var t = this;
|
158 |
-
|
159 |
-
w = w || window;
|
160 |
-
w.alert(t._decode(t.editor.getLang(tx, tx)));
|
161 |
-
|
162 |
-
if (cb)
|
163 |
-
cb.call(s || t);
|
164 |
-
},
|
165 |
-
|
166 |
-
/**
|
167 |
-
* Resizes the specified window or id.
|
168 |
-
*
|
169 |
-
* @param {Number} dw Delta width.
|
170 |
-
* @param {Number} dh Delta height.
|
171 |
-
* @param {window/id} win Window if the dialog isn't inline. Id if the dialog is inline.
|
172 |
-
*/
|
173 |
-
resizeBy : function(dw, dh, win) {
|
174 |
-
win.resizeBy(dw, dh);
|
175 |
-
},
|
176 |
-
|
177 |
-
// Internal functions
|
178 |
-
|
179 |
-
_decode : function(s) {
|
180 |
-
return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
|
181 |
-
}
|
182 |
-
});
|
183 |
}(tinymce));
|
1 |
+
/**
|
2 |
+
* WindowManager.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function(tinymce) {
|
12 |
+
var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This class handles the creation of native windows and dialogs. This class can be extended to provide for example inline dialogs.
|
16 |
+
* @class tinymce.WindowManager
|
17 |
+
*/
|
18 |
+
tinymce.create('tinymce.WindowManager', {
|
19 |
+
/**
|
20 |
+
* Constructs a new window manager instance.
|
21 |
+
*
|
22 |
+
* @constructor
|
23 |
+
* @method WindowManager
|
24 |
+
* @param {tinymce.Editor} ed Editor instance that the windows are bound to.
|
25 |
+
*/
|
26 |
+
WindowManager : function(ed) {
|
27 |
+
var t = this;
|
28 |
+
|
29 |
+
t.editor = ed;
|
30 |
+
t.onOpen = new Dispatcher(t);
|
31 |
+
t.onClose = new Dispatcher(t);
|
32 |
+
t.params = {};
|
33 |
+
t.features = {};
|
34 |
+
},
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Opens a new window.
|
38 |
+
*
|
39 |
+
* @method open
|
40 |
+
* @param {Object} s Optional name/value settings collection contains things like width/height/url etc.
|
41 |
+
* @param {Object} p Optional parameters/arguments collection can be used by the dialogs to retrive custom parameters.
|
42 |
+
*/
|
43 |
+
open : function(s, p) {
|
44 |
+
var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
|
45 |
+
|
46 |
+
// Default some options
|
47 |
+
s = s || {};
|
48 |
+
p = p || {};
|
49 |
+
sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
|
50 |
+
sh = isOpera ? vp.h : screen.height;
|
51 |
+
s.name = s.name || 'mc_' + new Date().getTime();
|
52 |
+
s.width = parseInt(s.width || 320);
|
53 |
+
s.height = parseInt(s.height || 240);
|
54 |
+
s.resizable = true;
|
55 |
+
s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
|
56 |
+
s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
|
57 |
+
p.inline = false;
|
58 |
+
p.mce_width = s.width;
|
59 |
+
p.mce_height = s.height;
|
60 |
+
p.mce_auto_focus = s.auto_focus;
|
61 |
+
|
62 |
+
if (mo) {
|
63 |
+
if (isIE) {
|
64 |
+
s.center = true;
|
65 |
+
s.help = false;
|
66 |
+
s.dialogWidth = s.width + 'px';
|
67 |
+
s.dialogHeight = s.height + 'px';
|
68 |
+
s.scroll = s.scrollbars || false;
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
// Build features string
|
73 |
+
each(s, function(v, k) {
|
74 |
+
if (tinymce.is(v, 'boolean'))
|
75 |
+
v = v ? 'yes' : 'no';
|
76 |
+
|
77 |
+
if (!/^(name|url)$/.test(k)) {
|
78 |
+
if (isIE && mo)
|
79 |
+
f += (f ? ';' : '') + k + ':' + v;
|
80 |
+
else
|
81 |
+
f += (f ? ',' : '') + k + '=' + v;
|
82 |
+
}
|
83 |
+
});
|
84 |
+
|
85 |
+
t.features = s;
|
86 |
+
t.params = p;
|
87 |
+
t.onOpen.dispatch(t, s, p);
|
88 |
+
|
89 |
+
u = s.url || s.file;
|
90 |
+
u = tinymce._addVer(u);
|
91 |
+
|
92 |
+
try {
|
93 |
+
if (isIE && mo) {
|
94 |
+
w = 1;
|
95 |
+
window.showModalDialog(u, window, f);
|
96 |
+
} else
|
97 |
+
w = window.open(u, s.name, f);
|
98 |
+
} catch (ex) {
|
99 |
+
// Ignore
|
100 |
+
}
|
101 |
+
|
102 |
+
if (!w)
|
103 |
+
alert(t.editor.getLang('popup_blocked'));
|
104 |
+
},
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Closes the specified window. This will also dispatch out a onClose event.
|
108 |
+
*
|
109 |
+
* @method close
|
110 |
+
* @param {Window} w Native window object to close.
|
111 |
+
*/
|
112 |
+
close : function(w) {
|
113 |
+
w.close();
|
114 |
+
this.onClose.dispatch(this);
|
115 |
+
},
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Creates a instance of a class. This method was needed since IE can't create instances
|
119 |
+
* of classes from a parent window due to some reference problem. Any arguments passed after the class name
|
120 |
+
* will be passed as arguments to the constructor.
|
121 |
+
*
|
122 |
+
* @method createInstance
|
123 |
+
* @param {String} cl Class name to create an instance of.
|
124 |
+
* @return {Object} Instance of the specified class.
|
125 |
+
*/
|
126 |
+
createInstance : function(cl, a, b, c, d, e) {
|
127 |
+
var f = tinymce.resolve(cl);
|
128 |
+
|
129 |
+
return new f(a, b, c, d, e);
|
130 |
+
},
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Creates a confirm dialog. Please don't use the blocking behavior of this
|
134 |
+
* native version use the callback method instead then it can be extended.
|
135 |
+
*
|
136 |
+
* @method confirm
|
137 |
+
* @param {String} t Title for the new confirm dialog.
|
138 |
+
* @param {function} cb Callback function to be executed after the user has selected ok or cancel.
|
139 |
+
* @param {Object} s Optional scope to execute the callback in.
|
140 |
+
*/
|
141 |
+
confirm : function(t, cb, s, w) {
|
142 |
+
w = w || window;
|
143 |
+
|
144 |
+
cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));
|
145 |
+
},
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Creates a alert dialog. Please don't use the blocking behavior of this
|
149 |
+
* native version use the callback method instead then it can be extended.
|
150 |
+
*
|
151 |
+
* @method alert
|
152 |
+
* @param {String} t Title for the new alert dialog.
|
153 |
+
* @param {function} cb Callback function to be executed after the user has selected ok.
|
154 |
+
* @param {Object} s Optional scope to execute the callback in.
|
155 |
+
*/
|
156 |
+
alert : function(tx, cb, s, w) {
|
157 |
+
var t = this;
|
158 |
+
|
159 |
+
w = w || window;
|
160 |
+
w.alert(t._decode(t.editor.getLang(tx, tx)));
|
161 |
+
|
162 |
+
if (cb)
|
163 |
+
cb.call(s || t);
|
164 |
+
},
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Resizes the specified window or id.
|
168 |
+
*
|
169 |
+
* @param {Number} dw Delta width.
|
170 |
+
* @param {Number} dh Delta height.
|
171 |
+
* @param {window/id} win Window if the dialog isn't inline. Id if the dialog is inline.
|
172 |
+
*/
|
173 |
+
resizeBy : function(dw, dh, win) {
|
174 |
+
win.resizeBy(dw, dh);
|
175 |
+
},
|
176 |
+
|
177 |
+
// Internal functions
|
178 |
+
|
179 |
+
_decode : function(s) {
|
180 |
+
return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
|
181 |
+
}
|
182 |
+
});
|
183 |
}(tinymce));
|
js/tiny_mce_german/classes/adapter/jquery/adapter.js
CHANGED
@@ -1,336 +1,336 @@
|
|
1 |
-
/**
|
2 |
-
* adapter.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
// #ifdef jquery_adapter
|
12 |
-
|
13 |
-
(function($, tinymce) {
|
14 |
-
var is = tinymce.is, attrRegExp = /^(href|src|style)$/i, undefined;
|
15 |
-
|
16 |
-
// jQuery is undefined
|
17 |
-
if (!$)
|
18 |
-
return alert("Load jQuery first!");
|
19 |
-
|
20 |
-
// Stick jQuery into the tinymce namespace
|
21 |
-
tinymce.$ = $;
|
22 |
-
|
23 |
-
// Setup adapter
|
24 |
-
tinymce.adapter = {
|
25 |
-
patchEditor : function(editor) {
|
26 |
-
var fn = $.fn;
|
27 |
-
|
28 |
-
// Adapt the css function to make sure that the _mce_style
|
29 |
-
// attribute gets updated with the new style information
|
30 |
-
function css(name, value) {
|
31 |
-
var self = this;
|
32 |
-
|
33 |
-
// Remove _mce_style when set operation occurs
|
34 |
-
if (value)
|
35 |
-
self.removeAttr('_mce_style');
|
36 |
-
|
37 |
-
return fn.css.apply(self, arguments);
|
38 |
-
};
|
39 |
-
|
40 |
-
// Apapt the attr function to make sure that it uses the _mce_ prefixed variants
|
41 |
-
function attr(name, value) {
|
42 |
-
var self = this;
|
43 |
-
|
44 |
-
// Update/retrive _mce_ attribute variants
|
45 |
-
if (attrRegExp.test(name)) {
|
46 |
-
if (value !== undefined) {
|
47 |
-
// Use TinyMCE behavior when setting the specifc attributes
|
48 |
-
self.each(function(i, node) {
|
49 |
-
editor.dom.setAttrib(node, name, value);
|
50 |
-
});
|
51 |
-
|
52 |
-
return self;
|
53 |
-
} else
|
54 |
-
return self.attr('_mce_' + name);
|
55 |
-
}
|
56 |
-
|
57 |
-
// Default behavior
|
58 |
-
return fn.attr.apply(self, arguments);
|
59 |
-
};
|
60 |
-
|
61 |
-
function htmlPatchFunc(func) {
|
62 |
-
// Returns a modified function that processes
|
63 |
-
// the HTML before executing the action this makes sure
|
64 |
-
// that href/src etc gets moved into the _mce_ variants
|
65 |
-
return function(content) {
|
66 |
-
if (content)
|
67 |
-
content = editor.dom.processHTML(content);
|
68 |
-
|
69 |
-
return func.call(this, content);
|
70 |
-
};
|
71 |
-
};
|
72 |
-
|
73 |
-
// Patch various jQuery functions to handle tinymce specific attribute and content behavior
|
74 |
-
// we don't patch the jQuery.fn directly since it will most likely break compatibility
|
75 |
-
// with other jQuery logic on the page. Only instances created by TinyMCE should be patched.
|
76 |
-
function patch(jq) {
|
77 |
-
// Patch some functions, only patch the object once
|
78 |
-
if (jq.css !== css) {
|
79 |
-
// Patch css/attr to use the _mce_ prefixed attribute variants
|
80 |
-
jq.css = css;
|
81 |
-
jq.attr = attr;
|
82 |
-
|
83 |
-
// Patch HTML functions to use the DOMUtils.processHTML filter logic
|
84 |
-
jq.html = htmlPatchFunc(fn.html);
|
85 |
-
jq.append = htmlPatchFunc(fn.append);
|
86 |
-
jq.prepend = htmlPatchFunc(fn.prepend);
|
87 |
-
jq.after = htmlPatchFunc(fn.after);
|
88 |
-
jq.before = htmlPatchFunc(fn.before);
|
89 |
-
jq.replaceWith = htmlPatchFunc(fn.replaceWith);
|
90 |
-
jq.tinymce = editor;
|
91 |
-
|
92 |
-
// Each pushed jQuery instance needs to be patched
|
93 |
-
// as well for example when traversing the DOM
|
94 |
-
jq.pushStack = function() {
|
95 |
-
return patch(fn.pushStack.apply(this, arguments));
|
96 |
-
};
|
97 |
-
}
|
98 |
-
|
99 |
-
return jq;
|
100 |
-
};
|
101 |
-
|
102 |
-
// Add a $ function on each editor instance this one is scoped for the editor document object
|
103 |
-
// this way you can do chaining like this tinymce.get(0).$('p').append('text').css('color', 'red');
|
104 |
-
editor.$ = function(selector, scope) {
|
105 |
-
var doc = editor.getDoc();
|
106 |
-
|
107 |
-
return patch($(selector || doc, doc || scope));
|
108 |
-
};
|
109 |
-
}
|
110 |
-
};
|
111 |
-
|
112 |
-
// Patch in core NS functions
|
113 |
-
tinymce.extend = $.extend;
|
114 |
-
tinymce.extend(tinymce, {
|
115 |
-
map : $.map,
|
116 |
-
grep : function(a, f) {return $.grep(a, f || function(){return 1;});},
|
117 |
-
inArray : function(a, v) {return $.inArray(v, a || []);}
|
118 |
-
|
119 |
-
/* Didn't iterate stylesheets
|
120 |
-
each : function(o, cb, s) {
|
121 |
-
if (!o)
|
122 |
-
return 0;
|
123 |
-
|
124 |
-
var r = 1;
|
125 |
-
|
126 |
-
$.each(o, function(nr, el){
|
127 |
-
if (cb.call(s, el, nr, o) === false) {
|
128 |
-
r = 0;
|
129 |
-
return false;
|
130 |
-
}
|
131 |
-
});
|
132 |
-
|
133 |
-
return r;
|
134 |
-
}*/
|
135 |
-
});
|
136 |
-
|
137 |
-
// Patch in functions in various clases
|
138 |
-
// Add a "#ifndefjquery" statement around each core API function you add below
|
139 |
-
var patches = {
|
140 |
-
'tinymce.dom.DOMUtils' : {
|
141 |
-
/*
|
142 |
-
addClass : function(e, c) {
|
143 |
-
if (is(e, 'array') && is(e[0], 'string'))
|
144 |
-
e = e.join(',#');
|
145 |
-
return (e && $(is(e, 'string') ? '#' + e : e)
|
146 |
-
.addClass(c)
|
147 |
-
.attr('class')) || false;
|
148 |
-
},
|
149 |
-
|
150 |
-
hasClass : function(n, c) {
|
151 |
-
return $(is(n, 'string') ? '#' + n : n).hasClass(c);
|
152 |
-
},
|
153 |
-
|
154 |
-
removeClass : function(e, c) {
|
155 |
-
if (!e)
|
156 |
-
return false;
|
157 |
-
|
158 |
-
var r = [];
|
159 |
-
|
160 |
-
$(is(e, 'string') ? '#' + e : e)
|
161 |
-
.removeClass(c)
|
162 |
-
.each(function(){
|
163 |
-
r.push(this.className);
|
164 |
-
});
|
165 |
-
|
166 |
-
return r.length == 1 ? r[0] : r;
|
167 |
-
},
|
168 |
-
*/
|
169 |
-
|
170 |
-
select : function(pattern, scope) {
|
171 |
-
var t = this;
|
172 |
-
|
173 |
-
return $.find(pattern, t.get(scope) || t.get(t.settings.root_element) || t.doc, []);
|
174 |
-
},
|
175 |
-
|
176 |
-
is : function(n, patt) {
|
177 |
-
return $(this.get(n)).is(patt);
|
178 |
-
}
|
179 |
-
|
180 |
-
/*
|
181 |
-
show : function(e) {
|
182 |
-
if (is(e, 'array') && is(e[0], 'string'))
|
183 |
-
e = e.join(',#');
|
184 |
-
|
185 |
-
$(is(e, 'string') ? '#' + e : e).css('display', 'block');
|
186 |
-
},
|
187 |
-
|
188 |
-
hide : function(e) {
|
189 |
-
if (is(e, 'array') && is(e[0], 'string'))
|
190 |
-
e = e.join(',#');
|
191 |
-
|
192 |
-
$(is(e, 'string') ? '#' + e : e).css('display', 'none');
|
193 |
-
},
|
194 |
-
|
195 |
-
isHidden : function(e) {
|
196 |
-
return $(is(e, 'string') ? '#' + e : e).is(':hidden');
|
197 |
-
},
|
198 |
-
|
199 |
-
insertAfter : function(n, e) {
|
200 |
-
return $(is(e, 'string') ? '#' + e : e).after(n);
|
201 |
-
},
|
202 |
-
|
203 |
-
replace : function(o, n, k) {
|
204 |
-
n = $(is(n, 'string') ? '#' + n : n);
|
205 |
-
|
206 |
-
if (k)
|
207 |
-
n.children().appendTo(o);
|
208 |
-
|
209 |
-
n.replaceWith(o);
|
210 |
-
},
|
211 |
-
|
212 |
-
setStyle : function(n, na, v) {
|
213 |
-
if (is(n, 'array') && is(n[0], 'string'))
|
214 |
-
n = n.join(',#');
|
215 |
-
|
216 |
-
$(is(n, 'string') ? '#' + n : n).css(na, v);
|
217 |
-
},
|
218 |
-
|
219 |
-
getStyle : function(n, na, c) {
|
220 |
-
return $(is(n, 'string') ? '#' + n : n).css(na);
|
221 |
-
},
|
222 |
-
|
223 |
-
setStyles : function(e, o) {
|
224 |
-
if (is(e, 'array') && is(e[0], 'string'))
|
225 |
-
e = e.join(',#');
|
226 |
-
$(is(e, 'string') ? '#' + e : e).css(o);
|
227 |
-
},
|
228 |
-
|
229 |
-
setAttrib : function(e, n, v) {
|
230 |
-
var t = this, s = t.settings;
|
231 |
-
|
232 |
-
if (is(e, 'array') && is(e[0], 'string'))
|
233 |
-
e = e.join(',#');
|
234 |
-
|
235 |
-
e = $(is(e, 'string') ? '#' + e : e);
|
236 |
-
|
237 |
-
switch (n) {
|
238 |
-
case "style":
|
239 |
-
e.each(function(i, v){
|
240 |
-
if (s.keep_values)
|
241 |
-
$(v).attr('_mce_style', v);
|
242 |
-
|
243 |
-
v.style.cssText = v;
|
244 |
-
});
|
245 |
-
break;
|
246 |
-
|
247 |
-
case "class":
|
248 |
-
e.each(function(){
|
249 |
-
this.className = v;
|
250 |
-
});
|
251 |
-
break;
|
252 |
-
|
253 |
-
case "src":
|
254 |
-
case "href":
|
255 |
-
e.each(function(i, v){
|
256 |
-
if (s.keep_values) {
|
257 |
-
if (s.url_converter)
|
258 |
-
v = s.url_converter.call(s.url_converter_scope || t, v, n, v);
|
259 |
-
|
260 |
-
t.setAttrib(v, '_mce_' + n, v);
|
261 |
-
}
|
262 |
-
});
|
263 |
-
|
264 |
-
break;
|
265 |
-
}
|
266 |
-
|
267 |
-
if (v !== null && v.length !== 0)
|
268 |
-
e.attr(n, '' + v);
|
269 |
-
else
|
270 |
-
e.removeAttr(n);
|
271 |
-
},
|
272 |
-
|
273 |
-
setAttribs : function(e, o) {
|
274 |
-
var t = this;
|
275 |
-
|
276 |
-
$.each(o, function(n, v){
|
277 |
-
t.setAttrib(e,n,v);
|
278 |
-
});
|
279 |
-
}
|
280 |
-
*/
|
281 |
-
}
|
282 |
-
|
283 |
-
/*
|
284 |
-
'tinymce.dom.Event' : {
|
285 |
-
add : function (o, n, f, s) {
|
286 |
-
var lo, cb;
|
287 |
-
|
288 |
-
cb = function(e) {
|
289 |
-
e.target = e.target || this;
|
290 |
-
f.call(s || this, e);
|
291 |
-
};
|
292 |
-
|
293 |
-
if (is(o, 'array') && is(o[0], 'string'))
|
294 |
-
o = o.join(',#');
|
295 |
-
o = $(is(o, 'string') ? '#' + o : o);
|
296 |
-
if (n == 'init') {
|
297 |
-
o.ready(cb, s);
|
298 |
-
} else {
|
299 |
-
if (s) {
|
300 |
-
o.bind(n, s, cb);
|
301 |
-
} else {
|
302 |
-
o.bind(n, cb);
|
303 |
-
}
|
304 |
-
}
|
305 |
-
|
306 |
-
lo = this._jqLookup || (this._jqLookup = []);
|
307 |
-
lo.push({func : f, cfunc : cb});
|
308 |
-
|
309 |
-
return cb;
|
310 |
-
},
|
311 |
-
|
312 |
-
remove : function(o, n, f) {
|
313 |
-
// Find cfunc
|
314 |
-
$(this._jqLookup).each(function() {
|
315 |
-
if (this.func === f)
|
316 |
-
f = this.cfunc;
|
317 |
-
});
|
318 |
-
|
319 |
-
if (is(o, 'array') && is(o[0], 'string'))
|
320 |
-
o = o.join(',#');
|
321 |
-
|
322 |
-
$(is(o, 'string') ? '#' + o : o).unbind(n,f);
|
323 |
-
|
324 |
-
return true;
|
325 |
-
}
|
326 |
-
}
|
327 |
-
*/
|
328 |
-
};
|
329 |
-
|
330 |
-
// Patch functions after a class is created
|
331 |
-
tinymce.onCreate = function(ty, c, p) {
|
332 |
-
tinymce.extend(p, patches[c]);
|
333 |
-
};
|
334 |
-
})(window.jQuery, tinymce);
|
335 |
-
|
336 |
-
// #endif
|
1 |
+
/**
|
2 |
+
* adapter.js
|
3 |
+
*
|
4 |
+
* Copyright 2009, Moxiecode Systems AB
|
5 |
+
* Released under LGPL License.
|
6 |
+
*
|
7 |
+
* License: http://tinymce.moxiecode.com/license
|
8 |
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
+
*/
|
10 |
+
|
11 |
+
// #ifdef jquery_adapter
|
12 |
+
|
13 |
+
(function($, tinymce) {
|
14 |
+
var is = tinymce.is, attrRegExp = /^(href|src|style)$/i, undefined;
|
15 |
+
|
16 |
+
// jQuery is undefined
|
17 |
+
if (!$)
|
18 |
+
return alert("Load jQuery first!");
|
19 |
+
|
20 |
+
// Stick jQuery into the tinymce namespace
|
21 |
+
tinymce.$ = $;
|
22 |
+
|
23 |
+
// Setup adapter
|
24 |
+
tinymce.adapter = {
|
25 |
+
patchEditor : function(editor) {
|
26 |
+
var fn = $.fn;
|
27 |
+
|
28 |
+
// Adapt the css function to make sure that the _mce_style
|
29 |
+
// attribute gets updated with the new style information
|
30 |
+
function css(name, value) {
|
31 |
+
var self = this;
|
32 |
+
|
33 |
+
// Remove _mce_style when set operation occurs
|
34 |
+
if (value)
|
35 |
+
self.removeAttr('_mce_style');
|
36 |
+
|
37 |
+
return fn.css.apply(self, arguments);
|
38 |
+
};
|
39 |
+
|
40 |
+
// Apapt the attr function to make sure that it uses the _mce_ prefixed variants
|
41 |
+
function attr(name, value) {
|
42 |
+
var self = this;
|
43 |
+
|
44 |
+
// Update/retrive _mce_ attribute variants
|
45 |
+
if (attrRegExp.test(name)) {
|
46 |
+
if (value !== undefined) {
|
47 |
+
// Use TinyMCE behavior when setting the specifc attributes
|
48 |
+
self.each(function(i, node) {
|
49 |
+
editor.dom.setAttrib(node, name, value);
|
50 |
+
});
|
51 |
+
|
52 |
+
return self;
|
53 |
+
} else
|
54 |
+
return self.attr('_mce_' + name);
|
55 |
+
}
|
56 |
+
|
57 |
+
// Default behavior
|
58 |
+
return fn.attr.apply(self, arguments);
|
59 |
+
};
|
60 |
+
|
61 |
+
function htmlPatchFunc(func) {
|
62 |
+
// Returns a modified function that processes
|
63 |
+
// the HTML before executing the action this makes sure
|
64 |
+
// that href/src etc gets moved into the _mce_ variants
|
65 |
+
return function(content) {
|
66 |
+
if (content)
|
67 |
+
content = editor.dom.processHTML(content);
|
68 |
+
|
69 |
+
return func.call(this, content);
|
70 |
+
};
|
71 |
+
};
|
72 |
+
|
73 |
+
// Patch various jQuery functions to handle tinymce specific attribute and content behavior
|
74 |
+
// we don't patch the jQuery.fn directly since it will most likely break compatibility
|
75 |
+
// with other jQuery logic on the page. Only instances created by TinyMCE should be patched.
|
76 |
+
function patch(jq) {
|
77 |
+
// Patch some functions, only patch the object once
|
78 |
+
if (jq.css !== css) {
|
79 |
+
// Patch css/attr to use the _mce_ prefixed attribute variants
|
80 |
+
jq.css = css;
|
81 |
+
jq.attr = attr;
|
82 |
+
|
83 |
+
// Patch HTML functions to use the DOMUtils.processHTML filter logic
|
84 |
+
jq.html = htmlPatchFunc(fn.html);
|
85 |
+
jq.append = htmlPatchFunc(fn.append);
|
86 |
+
jq.prepend = htmlPatchFunc(fn.prepend);
|
87 |
+
jq.after = htmlPatchFunc(fn.after);
|
88 |
+
jq.before = htmlPatchFunc(fn.before);
|
89 |
+
jq.replaceWith = htmlPatchFunc(fn.replaceWith);
|
90 |
+
jq.tinymce = editor;
|
91 |
+
|
92 |
+
// Each pushed jQuery instance needs to be patched
|
93 |
+
// as well for example when traversing the DOM
|
94 |
+
jq.pushStack = function() {
|
95 |
+
return patch(fn.pushStack.apply(this, arguments));
|
96 |
+
};
|
97 |
+
}
|
98 |
+
|
99 |
+
return jq;
|
100 |
+
};
|
101 |
+
|
102 |
+
// Add a $ function on each editor instance this one is scoped for the editor document object
|
103 |
+
// this way you can do chaining like this tinymce.get(0).$('p').append('text').css('color', 'red');
|
104 |
+
editor.$ = function(selector, scope) {
|
105 |
+
var doc = editor.getDoc();
|
106 |
+
|
107 |
+
return patch($(selector || doc, doc || scope));
|
108 |
+
};
|
109 |
+
}
|
110 |
+
};
|
111 |
+
|
112 |
+
// Patch in core NS functions
|
113 |
+
tinymce.extend = $.extend;
|
114 |
+
tinymce.extend(tinymce, {
|
115 |
+
map : $.map,
|
116 |
+
grep : function(a, f) {return $.grep(a, f || function(){return 1;});},
|
117 |
+
inArray : function(a, v) {return $.inArray(v, a || []);}
|
118 |
+
|
119 |
+
/* Didn't iterate stylesheets
|
120 |
+
each : function(o, cb, s) {
|
121 |
+
if (!o)
|
122 |
+
return 0;
|
123 |
+
|
124 |
+
var r = 1;
|
125 |
+
|
126 |
+
$.each(o, function(nr, el){
|
127 |
+
if (cb.call(s, el, nr, o) === false) {
|
128 |
+
r = 0;
|
129 |
+
return false;
|
130 |
+
}
|
131 |
+
});
|
132 |
+
|
133 |
+
return r;
|
134 |
+
}*/
|
135 |
+
});
|
136 |
+
|
137 |
+
// Patch in functions in various clases
|
138 |
+
// Add a "#ifndefjquery" statement around each core API function you add below
|
139 |
+
var patches = {
|
140 |
+
'tinymce.dom.DOMUtils' : {
|
141 |
+
/*
|
142 |
+
addClass : function(e, c) {
|
143 |
+
if (is(e, 'array') && is(e[0], 'string'))
|
144 |
+
e = e.join(',#');
|
145 |
+
return (e && $(is(e, 'string') ? '#' + e : e)
|
146 |
+
.addClass(c)
|
147 |
+
.attr('class')) || false;
|
148 |
+
},
|
149 |
+
|
150 |
+
hasClass : function(n, c) {
|
151 |
+
return $(is(n, 'string') ? '#' + n : n).hasClass(c);
|
152 |
+
},
|
153 |
+
|
154 |
+
removeClass : function(e, c) {
|
155 |
+
if (!e)
|
156 |
+
return false;
|
157 |
+
|
158 |
+
var r = [];
|
159 |
+
|
160 |
+
$(is(e, 'string') ? '#' + e : e)
|
161 |
+
.removeClass(c)
|
162 |
+
.each(function(){
|
163 |
+
r.push(this.className);
|
164 |
+
});
|
165 |
+
|
166 |
+
return r.length == 1 ? r[0] : r;
|
167 |
+
},
|
168 |
+
*/
|
169 |
+
|
170 |
+
select : function(pattern, scope) {
|
171 |
+
var t = this;
|
172 |
+
|
173 |
+
return $.find(pattern, t.get(scope) || t.get(t.settings.root_element) || t.doc, []);
|
174 |
+
},
|
175 |
+
|
176 |
+
is : function(n, patt) {
|
177 |
+
return $(this.get(n)).is(patt);
|
178 |
+
}
|
179 |
+
|
180 |
+
/*
|
181 |
+
show : function(e) {
|
182 |
+
if (is(e, 'array') && is(e[0], 'string'))
|
183 |
+
e = e.join(',#');
|
184 |
+
|
185 |
+
$(is(e, 'string') ? '#' + e : e).css('display', 'block');
|
186 |
+
},
|
187 |
+
|
188 |
+
hide : function(e) {
|
189 |
+
if (is(e, 'array') && is(e[0], 'string'))
|
190 |
+
e = e.join(',#');
|
191 |
+
|
192 |
+
$(is(e, 'string') ? '#' + e : e).css('display', 'none');
|
193 |
+
},
|
194 |
+
|
195 |
+
isHidden : function(e) {
|
196 |
+
return $(is(e, 'string') ? '#' + e : e).is(':hidden');
|
197 |
+
},
|
198 |
+
|
199 |
+
insertAfter : function(n, e) {
|
200 |
+
return $(is(e, 'string') ? '#' + e : e).after(n);
|
201 |
+
},
|
202 |
+
|
203 |
+
replace : function(o, n, k) {
|
204 |
+
n = $(is(n, 'string') ? '#' + n : n);
|
205 |
+
|
206 |
+
if (k)
|
207 |
+
n.children().appendTo(o);
|
208 |
+
|
209 |
+
n.replaceWith(o);
|
210 |
+
},
|
211 |
+
|
212 |
+
setStyle : function(n, na, v) {
|
213 |
+
if (is(n, 'array') && is(n[0], 'string'))
|
214 |
+
n = n.join(',#');
|
215 |
+
|
216 |
+
$(is(n, 'string') ? '#' + n : n).css(na, v);
|
217 |
+
},
|
218 |
+
|
219 |
+
getStyle : function(n, na, c) {
|
220 |
+
return $(is(n, 'string') ? '#' + n : n).css(na);
|
221 |
+
},
|
222 |
+
|
223 |
+
setStyles : function(e, o) {
|
224 |
+
if (is(e, 'array') && is(e[0], 'string'))
|
225 |
+
e = e.join(',#');
|
226 |
+
$(is(e, 'string') ? '#' + e : e).css(o);
|
227 |
+
},
|
228 |
+
|
229 |
+
setAttrib : function(e, n, v) {
|
230 |
+
var t = this, s = t.settings;
|
231 |
+
|
232 |
+
if (is(e, 'array') && is(e[0], 'string'))
|
233 |
+
e = e.join(',#');
|
234 |
+
|
235 |
+
e = $(is(e, 'string') ? '#' + e : e);
|
236 |
+
|
237 |
+
switch (n) {
|
238 |
+
case "style":
|
239 |
+
e.each(function(i, v){
|
240 |
+
if (s.keep_values)
|
241 |
+
$(v).attr('_mce_style', v);
|
242 |
+
|
243 |
+
v.style.cssText = v;
|
244 |
+
});
|
245 |
+
break;
|
246 |
+
|
247 |
+
case "class":
|
248 |
+
e.each(function(){
|
249 |
+
this.className = v;
|
250 |
+
});
|
251 |
+
break;
|
252 |
+
|
253 |
+
case "src":
|
254 |
+
case "href":
|
255 |
+
e.each(function(i, v){
|
256 |
+
if (s.keep_values) {
|
257 |
+
if (s.url_converter)
|
258 |
+
v = s.url_converter.call(s.url_converter_scope || t, v, n, v);
|
259 |
+
|
260 |
+
t.setAttrib(v, '_mce_' + n, v);
|
261 |
+
}
|
262 |
+
});
|
263 |
+
|
264 |
+
break;
|
265 |
+
}
|
266 |
+
|
267 |
+
if (v !== null && v.length !== 0)
|
268 |
+
e.attr(n, '' + v);
|
269 |
+
else
|
270 |
+
e.removeAttr(n);
|
271 |
+
},
|
272 |
+
|
273 |
+
setAttribs : function(e, o) {
|
274 |
+
var t = this;
|
275 |
+
|
276 |
+
$.each(o, function(n, v){
|
277 |
+
t.setAttrib(e,n,v);
|
278 |
+
});
|
279 |
+
}
|
280 |
+
*/
|
281 |
+
}
|
282 |
+
|
283 |
+
/*
|
284 |
+
'tinymce.dom.Event' : {
|
285 |
+
add : function (o, n, f, s) {
|
286 |
+
var lo, cb;
|
287 |
+
|
288 |
+
cb = function(e) {
|
289 |
+
e.target = e.target || this;
|
290 |
+
f.call(s || this, e);
|
291 |
+
};
|
292 |
+
|
293 |
+
if (is(o, 'array') && is(o[0], 'string'))
|
294 |
+
o = o.join(',#');
|
295 |
+
o = $(is(o, 'string') ? '#' + o : o);
|
296 |
+
if (n == 'init') {
|
297 |
+
o.ready(cb, s);
|
298 |
+
} else {
|
299 |
+
if (s) {
|
300 |
+
o.bind(n, s, cb);
|
301 |
+
} else {
|
302 |
+
o.bind(n, cb);
|
303 |
+
}
|
304 |
+
}
|
305 |
+
|
306 |
+
lo = this._jqLookup || (this._jqLookup = []);
|
307 |
+
lo.push({func : f, cfunc : cb});
|
308 |
+
|
309 |
+
return cb;
|
310 |
+
},
|
311 |
+
|
312 |
+
remove : function(o, n, f) {
|
313 |
+
// Find cfunc
|
314 |
+
$(this._jqLookup).each(function() {
|
315 |
+
if (this.func === f)
|
316 |
+
f = this.cfunc;
|
317 |
+
});
|
318 |
+
|
319 |
+
if (is(o, 'array') && is(o[0], 'string'))
|
320 |
+
o = o.join(',#');
|
321 |
+
|
322 |
+
$(is(o, 'string') ? '#' + o : o).unbind(n,f);
|
323 |
+
|
324 |
+
return true;
|
325 |
+
}
|
326 |
+
}
|
327 |
+
*/
|
328 |
+
};
|
329 |
+
|
330 |
+
// Patch functions after a class is created
|
331 |
+
tinymce.onCreate = function(ty, c, p) {
|
332 |
+
tinymce.extend(p, patches[c]);
|
333 |
+
};
|
334 |
+
})(window.jQuery, tinymce);
|
335 |
+
|
336 |
+
// #endif
|
js/tiny_mce_german/classes/adapter/jquery/jquery.tinymce.js
CHANGED
@@ -1,332 +1,332 @@
|
|
1 |
-
/**
|
2 |
-
* jquery.tinymce.js
|
3 |
-
*
|
4 |
-
* Copyright 2009, Moxiecode Systems AB
|
5 |
-
* Released under LGPL License.
|
6 |
-
*
|
7 |
-
* License: http://tinymce.moxiecode.com/license
|
8 |
-
* Contributing: http://tinymce.moxiecode.com/contributing
|
9 |
-
*/
|
10 |
-
|
11 |
-
(function($) {
|
12 |
-
var undefined,
|
13 |
-
lazyLoading,
|
14 |
-
delayedInits = [],
|
15 |
-
win = window;
|
16 |
-
|
17 |
-
$.fn.tinymce = function(settings) {
|
18 |
-
var self = this, url, ed, base, pos, lang, query = "", suffix = "";
|
19 |
-
|
20 |
-
// No match then just ignore the call
|
21 |
-
if (!self.length)
|
22 |
-
return self;
|
23 |
-
|
24 |
-
// Get editor instance
|
25 |
-
if (!settings)
|
26 |
-
return tinyMCE.get(self[0].id);
|
27 |
-
|
28 |
-
function init() {
|
29 |
-
var editors = [], initCount = 0;
|
30 |
-
|
31 |
-
// Apply patches to the jQuery object, only once
|
32 |
-
if (applyPatch) {
|
33 |
-
applyPatch();
|
34 |
-
applyPatch = null;
|
35 |
-
}
|
36 |
-
|
37 |
-
// Create an editor instance for each matched node
|
38 |
-
self.each(function(i, node) {
|
39 |
-
var ed, id = node.id, oninit = settings.oninit;
|
40 |
-
|
41 |
-
// Generate unique id for target element if needed
|
42 |
-
if (!id)
|
43 |
-
node.id = id = tinymce.DOM.uniqueId();
|
44 |
-
|
45 |
-
// Create editor instance and render it
|
46 |
-
ed = new tinymce.Editor(id, settings);
|
47 |
-
editors.push(ed);
|
48 |
-
|
49 |
-
// Add onInit event listener if the oninit setting is defined
|
50 |
-
// this logic will fire the oninit callback ones each
|
51 |
-
// matched editor instance is initialized
|
52 |
-
if (oninit) {
|
53 |
-
ed.onInit.add(function() {
|
54 |
-
var scope, func = oninit;
|
55 |
-
|
56 |
-
// Fire the oninit event ones each editor instance is initialized
|
57 |
-
if (++initCount == editors.length) {
|
58 |
-
if (tinymce.is(func, "string")) {
|
59 |
-
scope = (func.indexOf(".") === -1) ? null : tinymce.resolve(func.replace(/\.\w+$/, ""));
|
60 |
-
func = tinymce.resolve(func);
|
61 |
-
}
|
62 |
-
|
63 |
-
// Call the oninit function with the object
|
64 |
-
func.apply(scope || tinymce, editors);
|
65 |
-
}
|
66 |
-
});
|
67 |
-
}
|
68 |
-
});
|
69 |
-
|
70 |
-
// Render the editor instances in a separate loop since we
|
71 |
-
// need to have the full editors array used in the onInit calls
|
72 |
-
$.each(editors, function(i, ed) {
|
73 |
-
ed.render();
|
74 |
-
});
|
75 |
-
}
|
76 |
-
|
77 |
-
// Load TinyMCE on demand, if we need to
|
78 |
-
if (!win["tinymce"] && !lazyLoading && (url = settings.script_url)) {
|
79 |
-
lazyLoading = 1;
|
80 |
-
base = url.substring(0, url.lastIndexOf("/"));
|
81 |
-
|
82 |
-
// Check if it's a dev/src version they want to load then
|
83 |
-
// make sure that all plugins, themes etc are loaded in source mode aswell
|
84 |
-
if (/_(src|dev)\.js/g.test(url))
|
85 |
-
suffix = "_src";
|
86 |
-
|
87 |
-
// Parse out query part, this will be appended to all scripts, css etc to clear browser cache
|
88 |
-
pos = url.lastIndexOf("?");
|
89 |
-
if (pos != -1)
|
90 |
-
query = url.substring(pos + 1);
|
91 |
-
|
92 |
-
// Setup tinyMCEPreInit object this will later be used by the TinyMCE
|
93 |
-
// core script to locate other resources like CSS files, dialogs etc
|
94 |
-
// You can also predefined a tinyMCEPreInit object and then it will use that instead
|
95 |
-
win.tinyMCEPreInit = win.tinyMCEPreInit || {
|
96 |
-
base : base,
|
97 |
-
suffix : suffix,
|
98 |
-
query : query
|
99 |
-
};
|
100 |
-
|
101 |
-
// url contains gzip then we assume it's a compressor
|
102 |
-
if (url.indexOf('gzip') != -1) {
|
103 |
-
lang = settings.language || "en";
|
104 |
-
url = url + (/\?/.test(url) ? '&' : '?') + "js=true&core=true&suffix=" + escape(suffix) + "&themes=" + escape(settings.theme) + "&plugins=" + escape(settings.plugins) + "&languages=" + lang;
|
105 |
-
|
106 |
-
// Check if compressor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|