'Hostname missing!' => 'Computername fehlt!',
'Incorrect Password!' => 'Ungültiges Passwort!',
'Language' => 'Sprache',
+ 'Leave host and port field empty unless you want to make a remote connection.' => 'Für lokale Verbindungen "Rechner" und "Port" freilassen.',
'Lock System' => 'System sperren',
'Lockfile created!' => 'System gesperrt!',
'Lockfile removed!' => 'System entsperrt!',
'Port missing!' => 'Portangabe fehlt!',
'Printer' => 'Drucker',
'Save' => 'Speichern',
- 'Setup Menu' => 'Setup Menu',
+ 'Setup Menu' => 'Menüsetup',
'Setup Templates' => 'Vorlagen auswählen',
'Signature' => 'Unterschrift',
'Steuernummer' => 'Steuernummer',
'Templates' => 'Vorlagen',
'The following Datasets are not in use and can be deleted' => 'Die folgenden Datenbanken sind nicht in Verwendung und können gelöscht werden',
'The following Datasets need to be updated' => 'Folgende Datenbanken müssen aktualisiert werden',
+ 'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' => 'In diesem Schritt werden bestehende Datenbanken gesucht. Es werden noch keine änderungen vorgenommen!',
+ 'To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzufügen, ändern und speichern Sie am einfachsten einen bestehenden Zugriffsnamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
'Unlock System' => 'System entsperren',
'Update Dataset' => 'Datenbank aktualisieren',
'Use Templates' => 'benutze Vorlagen',
'Ust-IDNr' => 'USt-IdNr.',
'Version' => 'Version',
'WEBDAV-Zugriff' => 'WEBDAV-Zugriff',
+ 'You must enter a host and port for local and remote connections!' => '"Rechner" und "Port" müssen für lokale und externe Verbindungen eingetragen werden!',
'does not exist' => 'existiert nicht',
'is already a member!' => 'ist bereits ein Mitglied!',
'localhost' => 'lokaler Rechner',
# run locales.pl from this directory to rebuild the translation files
$self{texts} = {
+ ' Date missing!' => ' Datum fehlt!',
+ ' Number' => '',
+ ' Part Number missing!' => ' Artikelnummer fehlt!',
+ ' missing!' => ' fehlt!',
'AP' => 'Einkauf',
'AP Aging' => 'Offene Verbindlichkeiten',
'AP Transaction' => 'Kreditorenbuchung',
'Accrual' => 'Bilanzierung',
'Active' => 'Aktiv',
'Add' => 'Erfassen',
+ 'Add ' => '',
'Add AP Transaction' => 'Kreditorenbuchung',
'Add AR Transaction' => 'Debitorenbuchung',
'Add Account' => 'Konto erfassen',
'ELSTER-Steuernummer: ' => 'ELSTER-Steuernummer: ',
'EUR' => 'E/Ü-Rechnung',
'Edit' => 'Bearbeiten',
+ 'Edit ' => '',
'Edit Account' => 'Kontodaten bearbeiten',
'Edit Accounts Payables Transaction' => 'Kreditorenbuchung bearbeiten',
'Edit Accounts Receivables Transaction' => 'Debitorenbuchung bearbeiten',
'Edit Warehouse' => 'Lager bearbeiten',
'Employee' => 'Bearbeiter',
'Enforce transaction reversal for all dates' => 'Gegenbuchungen für jeden Zeitraum aktualisieren',
+ 'Enter up to 3 letters separated by a colon (i.e CAD:USD:EUR) for your native and foreign currencies' => 'Geben Sie Ihre und weitere Währungen mit bis zu drei Buchstaben pro Währung und Währungen durch Doppelpunkte getrennt ein (z.B. EUR:USD:CAD)',
'Equity' => 'Passiva',
+ 'Es fehlen Angaben zur Versteuerung.
+ Wenn Sie Ist Versteuert sind, wählen Sie die Einnahmen/Überschuß-Rechnung aus.
+ Sind Sie Soll-Versteuert und Bilanzverpflichtet, dann wählen Sie Bilanz aus.' => '',
'Exch' => 'Wechselkurs.',
'Exchangerate' => 'Wechselkurs',
'Exchangerate Difference' => 'Wechselkursunterschied',
'Last Sales Quotation Number' => 'Letzte Angebotsnummer',
'Last Service Number' => 'Letzte Dienstleistungsnr.',
'Last Vendor Number' => 'Letzte Lieferantennummer',
+ 'Leave host and port field empty unless you want to make a remote connection.' => 'Für lokale Verbindungen "Rechner" und "Port" freilassen.',
'Liability' => 'Passiva',
'License' => 'Lizenz',
'License key' => 'Lizenzschlüssel',
'N/A' => 'N.Z.',
'Name' => 'Name',
'Name missing!' => 'Name fehlt!',
- 'New Account' => '',
+ 'New Account' => 'Neues Konto',
'New Templates' => 'neue Vorlagen',
'No' => 'Nein',
'No Database Drivers available!' => 'Kein Datenbanktreiber verfügbar!',
'Service Items' => 'Dienstleistungen',
'Service Number missing!' => 'Dienstleistungsnummer fehlt!',
'Services' => 'Dienstleistungen',
- 'Setup Menu' => '',
+ 'Setup Menu' => 'Menüsetup',
'Setup Templates' => 'Vorlagen auswählen',
'Ship' => 'Lagerausgang',
'Ship Merchandise' => 'Waren versenden',
'The following Datasets are not in use and can be deleted' => 'Die folgenden Datenbanken sind nicht in Verwendung und können gelöscht werden',
'The following Datasets need to be updated' => 'Folgende Datenbanken müssen aktualisiert werden',
'The licensing module has been deactivated in lx-erp.conf.' => 'Das Lizenzverwaltungsmodul wurde in lx-erp.conf deaktiviert.',
+ 'This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!' => 'In diesem Schritt werden bestehende Datenbanken gesucht. Es werden noch keine änderungen vorgenommen!',
'Title' => 'Titel',
'To' => 'An',
+ 'To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.' => 'Um einer Gruppe einen neuen Benutzer hinzuzufügen, ändern und speichern Sie am einfachsten einen bestehenden Zugriffsnamen. Unter dem neuen Namen wird dann ein Benutzer mit denselben Einstellungen angelegt.',
'Top 100' => 'Top 100',
'Top 100 hinzufuegen' => 'Top 100 hinzufügen',
'Top Level' => 'Hauptartikelbezeichnung',
'Yes' => 'Ja',
'You are logged out!' => 'Auf Wiedersehen!',
'You did not enter a name!' => 'Sie haben keinen Namen eingegeben!',
+ 'You must enter a host and port for local and remote connections!' => '"Rechner" und "Port" müssen für lokale und externe Verbindungen eingetragen werden!',
'Zeitraum' => 'Zeitraum',
'Zipcode' => 'PLZ',
'accrual' => 'Bilanzierung (Soll-Versteuerung)',
'number' => 'Nummer',
'posted!' => 'gebucht',
'quarter' => 'vierteljährliche (quartalsweise) Abgabe',
+ 's' => '',
'save' => 'speichern',
'saved' => 'gespeichert',
'saved!' => 'gespeichert',
'Edit Template' => 'Vorlage bearbeiten',
'Edit Warehouse' => 'Lager bearbeiten',
'Enforce transaction reversal for all dates' => 'Gegenbuchungen für jeden Zeitraum aktualisieren',
+ 'Enter up to 3 letters separated by a colon (i.e CAD:USD:EUR) for your native and foreign currencies' => 'Geben Sie Ihre und weitere Währungen mit bis zu drei Buchstaben pro Währung und Währungen durch Doppelpunkte getrennt ein (z.B. EUR:USD:CAD)',
'Equity' => 'Passiva',
'Expense' => 'Aufwandskonto',
'Expense Account' => 'Aufwandskonto',
'Salesman' => 'Vertreter',
'Save' => 'Speichern',
'Service Items' => 'Dienstleistungen',
- 'Setup Menu' => 'Setup Menu',
+ 'Setup Menu' => 'Menüsetup',
'Signature' => 'Unterschrift',
'Standard Industrial Codes' => 'SIC',
'Steuersatz' => 'Steuersatz',
$self{texts} = {
+ ' Number' => ' Number',
'Abteilung' => 'Abteilung',
'Account Number' => 'Kontonummer',
'Accounting Menu' => 'Kontoverwaltung',
'Vendors' => 'Lieferanten',
'Zipcode' => 'PLZ',
'days' => 'Tage',
+ 's' => 's',
};
$self{subs} = {
'May ' => 'Mai',
'Mitarbeiter' => 'Mitarbeiter',
'MwSt. inkl.' => 'MwSt. inkl.',
- 'New Account' => 'New Account',
+ 'New Account' => 'Neues Konto',
'Notes' => 'Bemerkungen',
'Nov' => 'Nov',
'November' => 'November',
'weiter' => 'continue',
'löschen' => 'delete',
'dialogbuchung' => 'gl_transaction',
- 'new_account' => 'new_account',
+ 'neues_konto' => 'new_account',
'buchen' => 'post',
'neu_buchen' => 'post_as_new',
'rechnung' => 'sales_invoice',
$self{texts} = {
+ ' Date missing!' => ' Datum fehlt!',
+ ' Part Number missing!' => ' Artikelnummer fehlt!',
'Accounting Menu' => 'Kontoverwaltung',
'Active' => 'Aktiv',
'Add' => 'Erfassen',
+ 'Add ' => 'Add ',
'Add Assembly' => 'Erzeugnis erfassen',
'Add Part' => 'Ware erfassen',
'Add Purchase Order' => 'Lieferantenauftrag erfassen',
'E-mail' => 'eMail',
'E-mail address missing!' => 'eMailadresse fehlt!',
'E-mailed' => 'eMail gesendet.',
+ 'Edit ' => 'Edit ',
'Edit Assembly' => 'Erzeugnis bearbeiten',
'Edit Part' => 'Ware bearbeiten',
'Edit Service' => 'Dienstleistung bearbeiten',
'button' => '?',
'choice' => 'auswählen',
'choice part' => 'Artikel auswählen',
- 'ea' => 'Stk',
'emailed to' => 'gemailt an',
'hr' => 'Stunde',
'list' => 'auflisten',
$self{texts} = {
+ ' Date missing!' => ' Datum fehlt!',
'Add Purchase Order' => 'Lieferantenauftrag erfassen',
'Add Quotation' => 'Angebot erfassen',
'Add Request for Quotation' => 'Anfrage erfassen',
$self{texts} = {
+ ' Date missing!' => ' Datum fehlt!',
'Account' => 'Konto',
'Accounting Menu' => 'Kontoverwaltung',
'Add Purchase Order' => 'Lieferantenauftrag erfassen',
$self{texts} = {
+ ' Date missing!' => ' Datum fehlt!',
'Account' => 'Konto',
'Accounting Menu' => 'Kontoverwaltung',
'Add Purchase Order' => 'Lieferantenauftrag erfassen',
# eom
+sub extract_text_between_parenthesis {
+ my ($fh, $line) = @_;
+ my ($inside_string, $pos, $text, $quote_next) = (undef, 0, "", 0);
+
+ while (1) {
+ if (length($line) <= $pos) {
+ $line = <$fh>;
+ return ($text, "") unless ($line);
+ $pos = 0;
+ }
+
+ my $cur_char = substr($line, $pos, 1);
+
+ if (!$inside_string) {
+ if ((length($line) >= ($pos + 3)) && (substr($line, $pos, 2)) eq "qq") {
+ $inside_string = substr($line, $pos + 2, 1);
+ $pos += 2;
+
+ } elsif ((length($line) >= ($pos + 2)) &&
+ (substr($line, $pos, 1) eq "q")) {
+ $inside_string = substr($line, $pos + 1, 1);
+ $pos++;
+
+ } elsif (($cur_char eq '"') || ($cur_char eq '\'')) {
+ $inside_string = $cur_char;
+
+ } elsif ($cur_char eq ")") {
+ return ($text, substr($line, $pos + 1));
+ }
+
+ } else {
+ if ($quote_next) {
+ $text .= $cur_char;
+ $quote_next = 0;
+
+ } elsif ($cur_char eq '\\') {
+ $text .= $cur_char;
+ $quote_next = 1;
+
+ } elsif ($cur_char eq $inside_string) {
+ undef($inside_string);
+
+ } else {
+ $text .= $cur_char;
+
+ }
+ }
+ $pos++;
+ }
+}
+
sub scanfile {
my $file = shift;
}
}
- my ($found) = /\$locale->text.*?\W\)/;
+ my ($found) = /\$locale->text.*?\(/;
my $postmatch = $';
if ($found) {
- my $string = $&;
- $string =~ s/\$locale->text\(\s*[\'\"(q|qq)][\'\/\\\|~]*//;
- $string =~ s/\W\)+.*$//;
+ my $string;
+ ($string, $_) = extract_text_between_parenthesis($fh, $postmatch);
+ $postmatch = $_;
# if there is no $ in the string record it
- unless ($string =~ /\$\D.*/) {
+ unless (($string =~ /\$\D.*/) || ("" eq $string)) {
# this guarantees one instance of string
$locale{$string} = 1;
$self{texts} = {
+ ' Date missing!' => ' Datum fehlt!',
+ ' missing!' => ' fehlt!',
'Accounting Menu' => 'Kontoverwaltung',
'Add' => 'Erfassen',
'Add Exchangerate' => 'Wechselkurs erfassen',
'Description' => 'Beschreibung',
'ELSTER Export nach Winston' => 'ELSTER Export nach Winston',
'ELSTER-Steuernummer: ' => 'ELSTER-Steuernummer: ',
+ 'Es fehlen Angaben zur Versteuerung.
+ Wenn Sie Ist Versteuert sind, wählen Sie die Einnahmen/Überschuß-Rechnung aus.
+ Sind Sie Soll-Versteuert und Bilanzverpflichtet, dann wählen Sie Bilanz aus.' => 'Es fehlen Angaben zur Versteuerung.
+ Wenn Sie Ist Versteuert sind, wählen Sie die Einnahmen/Überschuß-Rechnung aus.
+ Sind Sie Soll-Versteuert und Bilanzverpflichtet, dann wählen Sie Bilanz aus.',
'Fax' => 'Fax',
'Fax. : ' => 'Fax. : ',
'Fax.: ' => 'Fax.: ',