From: konrad Date: Wed, 12 Aug 2009 20:12:02 +0000 (+0000) Subject: *first step towards server side translations X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=d6c9af2c010e4cec10849dbfdd22b3941f584f26;p=web%2Fkonrad%2Fsmoke.git *first step towards server side translations *enabled blob type *needs to be tested git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@332 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- diff --git a/wob/basics.wolf b/wob/basics.wolf index e1b31d0..b891a82 100644 --- a/wob/basics.wolf +++ b/wob/basics.wolf @@ -38,4 +38,15 @@ + + + + + + + + + + + diff --git a/woc/phpout.cpp b/woc/phpout.cpp index da91d02..1360a77 100644 --- a/woc/phpout.cpp +++ b/woc/phpout.cpp @@ -386,7 +386,7 @@ QString WocPHPServerOut::classPropertyValidator(const WocClass&cls,QString prop) if(cls.propertyIsInt(prop)) code+="\treturn is_numeric($value);\n"; else - if(cls.propertyIsString(prop)) + if(cls.propertyIsString(prop)||cls.propertyIsBlob(prop)) code+="\treturn true;\n";//TODO: special handling for astring else if(cls.propertyIsBool(prop)) @@ -406,8 +406,14 @@ QString WocPHPServerOut::classPropertyValidator(const WocClass&cls,QString prop) QString WocPHPServerOut::classPropertyListGetters(const WocClass&cls,QString prop) { QString code; - if(cls.propertyIsString(prop))code+="public function getstrlist_"+prop+"(){return $this->prop_"+prop+";}\n"; + if(cls.propertyIsString(prop)) + code+="public function getstrlist_"+prop+"(){return $this->prop_"+prop+";}\n"; else + if(cls.propertyIsBlob(prop)){ + code+="public function getstrlist_"+prop+"(){\n\t$ret=array();\n"; + code+="\tforeach($this->prop_"+prop+" as $p)$ret[]=base64_encode($this->prop_"+prop+");"; + code+="\treturn $ret;\n}\n"; + }else if(cls.propertyIsInt(prop)){ code+="public function getstrlist_"+prop+"(){\n"; code+="\t$ret=array();\n\tforeach($this->prop_"+prop+" as $p)$ret[]=\"\".$p;\n"; @@ -483,7 +489,7 @@ QString WocPHPServerOut::classPropertyListSetters(const WocClass&cls,QString pro acode+="\tif(is_bool($value)){\n"; acode+="\t\t$this->prop_"+prop+"=$value!=false;\n\t\treturn true;\n\t}else return false;\n"; }else - if(cls.propertyIsString(prop)){ + if(cls.propertyIsString(prop)||cls.propertyIsBlob(prop)){ code+="\t$prop=array();\n\tforeach($values as $value)$prop[]=\"\".$value;\n"; code+="\t$this->prop_"+prop+"=$prop;\n\treturn true;\n"; //TODO: special handling for astring @@ -513,11 +519,17 @@ QString WocPHPServerOut::classPropertyListSetters(const WocClass&cls,QString pro QString WocPHPServerOut::classPropertyScalarGetters(const WocClass&cls,QString prop) { QString code; - if(cls.propertyIsString(prop))code+="public function getstr_"+prop+"(){return $this->prop_"+prop+";}\n"; + if(cls.propertyIsString(prop)) + code+="public function getstr_"+prop+"(){return $this->prop_"+prop+";}\n"; + else + if(cls.propertyIsBlob(prop)) + code+="public function getstr_"+prop+"(){return base64_encode($this->prop_"+prop+");}\n"; else - if(cls.propertyIsInt(prop))code+="public function getstr_"+prop+"(){return \"\".$this->prop_"+prop+";}\n"; + if(cls.propertyIsInt(prop)) + code+="public function getstr_"+prop+"(){return \"\".$this->prop_"+prop+";}\n"; else - if(cls.propertyIsBool(prop))code+="public function getstr_"+prop+"(){return $this->prop_"+prop+"?\"yes\":\"no\";}\n"; + if(cls.propertyIsBool(prop)) + code+="public function getstr_"+prop+"(){return $this->prop_"+prop+"?\"yes\":\"no\";}\n"; else if(cls.propertyIsEnum(prop)){ code+="public function getstr_"+prop+"(){\n\tswitch($this->prop_"+prop+"){\n"; @@ -560,9 +572,10 @@ QString WocPHPServerOut::classPropertyScalarSetters(const WocClass&cls,QString p code+="\tif($value==\"no\")$this->prop_"+prop+"=false;\n\telse return false;\n"; code+="\treturn true;\n"; }else - if(cls.propertyIsString(prop)) + if(cls.propertyIsString(prop)||cls.propertyIsBlob(prop)) code+="\t$this->prop_"+prop+"=\"\".$value;\n\treturn true;\n"; //TODO: special handling for astring + //TODO: do something about Blob else if(cls.propertyIsObject(prop)){ code+="\tif(is_a($value,\"WO"+cls.propertyPlainType(prop)+"\")){\n"; @@ -612,6 +625,8 @@ QString WocPHPServerOut::classDeserializers(const WocClass&cls,QString cn) code+="\tforeach($elem->elementsByTagName(\""+k[i]+"\") as $el){\n"; if(cls.propertyIsObject(k[i])){ code+="\t\t$data[\""+k[i]+"\"][]=WO"+cls.propertyPlainType(k[i])+"::fromXml($xml,$el);\n"; + }else if(cls.propertyIsBlob(k[i])){ + code+="\t\t$data[\""+k[i]+"\"][]=base64_decode($el->textContent);\n"; }else{ code+="\t\t$data[\""+k[i]+"\"][]=$el->textContent;\n"; } @@ -627,12 +642,15 @@ QString WocPHPServerOut::classDeserializers(const WocClass&cls,QString cn) code+="\t\t$data[\""+k[i]+"\"]=$elem->getAttribute(\""+k[i]+"\");\n"; }else{ code+="\tforeach($elem->elementsByTagName(\""+k[i]+"\") as $el){\n"; - code+="\t\t$data[\""+k[i]+"\"]=$elem->textContent;\n"; + if(cls.propertyIsBlob(k[i])) + code+="\t\t$data[\""+k[i]+"\"]=base64_decode($elem->textContent);\n"; + else + code+="\t\t$data[\""+k[i]+"\"]=$elem->textContent;\n"; code+="\t}\n"; } } } - //TODO: use setters + //TODO: use setters (be careful with blob) code+="\treturn new "+cn+"($data);\n}\n"; return code; } @@ -832,6 +850,8 @@ QString WocPHPServerOut::trnInput(const WocTransaction&trn) code+="\t\tforeach($root->getElementsByTagName(\""+sl[i]+"\") as $el){\n"; if(trn.isObjectType(t)){ code+="\t\t\t$this->ainput[\""+sl[i]+"\"][]=WO"+pt+"::fromXml($xml,$el);\n"; + }else if(trn.isBlobType(t)){ + code+="\t\t\t$this->ainput[\""+sl[i]+"\"][]=base64_decode($el->textContent);\n"; }else{ code+="\t\t\t$this->ainput[\""+sl[i]+"\"][]=$el->textContent"; if(trn.isIntType(t))code+="+0"; @@ -843,6 +863,8 @@ QString WocPHPServerOut::trnInput(const WocTransaction&trn) code+="\t\tforeach($root->getElementsByTagName(\""+sl[i]+"\") as $el){\n"; if(trn.isObjectType(t)){ code+="\t\t\t$this->ainput[\""+sl[i]+"\"]=WO"+t+"::fromXml($xml,$el);\n"; + }else if(trn.isBlobType(t)){ + code+="\t\t\t$this->ainput[\""+sl[i]+"\"]=base64_decode($el->textContent);\n"; }else{ code+="\t\t\t$this->ainput[\""+sl[i]+"\"]=$el->textContent"; if(trn.isIntType(t))code+="+0"; @@ -873,6 +895,9 @@ QString WocPHPServerOut::trnOutput(const WocTransaction&trn) code+="\t\tforeach($this->aoutput[\""+sl[i]+"\"] as $o)\n"; code+="\t\t\tif(is_a($o,\"WO"+trn.plainType(t)+"\"))\n"; code+="\t\t\t\t$root->appendChild($o->toXml"+trn.typeSerializer(t)+"($xml,\""+sl[i]+"\"));\n"; + }else if(trn.isBlobType(t)){ + code+="\t\tforeach($this->aoutput[\""+sl[i]+"\"] as $v)\n"; + code+="\t\t\t$root->appendChild($xml->createElement(\""+sl[i]+"\",base64_encode($v)));\n"; }else{ code+="\t\tforeach($this->aoutput[\""+sl[i]+"\"] as $v)\n"; code+="\t\t\t$root->appendChild($xml->createElement(\""+sl[i]+"\",xq($v)));\n"; @@ -882,6 +907,8 @@ QString WocPHPServerOut::trnOutput(const WocTransaction&trn) code+="\t\t$o=$this->aoutput[\""+sl[i]+"\"];\n"; code+="\t\tif(is_a($o,\"WO"+trn.plainType(t)+"\"))\n"; code+="\t\t\t$root->appendChild($o->toXml"+trn.typeSerializer(t)+"($xml,\""+sl[i]+"\"));\n"; + }else if(trn.isBlobType(t)){ + code+="\t\t$root->appendChild($xml->createElement(\""+sl[i]+"\",base64_encode($this->aoutput[\""+sl[i]+"\"])));\n"; }else{ code+="\t\t$root->appendChild($xml->createElement(\""+sl[i]+"\",xq($this->aoutput[\""+sl[i]+"\"])));\n"; } @@ -935,7 +962,7 @@ QString WocPHPServerOut::trnGetSet(const WocTransaction&trn) if(trn.isIntType(t)){ code+="\tif(is_numeric($v))$this->aoutput[\""+sl[i]+"\"]=$v+0;\n"; }else - if(trn.isIntType(t)){ + if(trn.isBoolType(t)){ code+="\tif(is_bool($v))$this->aoutput[\""+sl[i]+"\"]=$v!=false;\n"; }else if(trn.isObjectType(t)){ diff --git a/woc/processor.cpp b/woc/processor.cpp index 5cae36e..877d8c5 100644 --- a/woc/processor.cpp +++ b/woc/processor.cpp @@ -489,7 +489,7 @@ bool WocClass::propertyIsAttribute(QString p)const return false; } -const QStringList WocClass::elemtypes=QStringList()<<"string"; +const QStringList WocClass::elemtypes=QStringList()<<"string"<<"blob"; bool WocClass::propertyIsElement(QString p)const { QString t=propertyPlainType(p); diff --git a/woc/processor.h b/woc/processor.h index 57524ad..48369f7 100644 --- a/woc/processor.h +++ b/woc/processor.h @@ -77,6 +77,8 @@ class WocClass bool propertyIsBool(QString p)const{return propertyPlainType(p)=="bool";} /**returns whether the property type is string*/ bool propertyIsString(QString p)const{QString pt=propertyPlainType(p);return pt=="string"||pt=="astring";} + /**returns whether the property type is blob*/ + bool propertyIsBlob(QString p)const{QString pt=propertyPlainType(p);return pt=="blob";} /**returns whether the class is abstract (needs to be customized); it is automatically abstract if any property is abstract*/ bool isAbstract()const; @@ -253,12 +255,14 @@ class WocTransaction bool isBoolType(QString t)const{return plainType(t)=="bool";} /**returns true if the type is a string*/ bool isStringType(QString t)const{QString p=plainType(t);return p=="astring"||p=="string";} + /**returns true if the type is a blob*/ + bool isBlobType(QString t)const{QString p=plainType(t);return p=="blob";} /**returns true if the type is to be encoded as attribute*/ bool isAttributeType(QString t)const{return t=="astring"||t=="int"||t=="int32"||t=="int64"||t=="bool";} /**returns true if the type is to be encoded as element*/ bool isElementType(QString t)const{return !isAttributeType(t);} /**return true if the type is an object type*/ - bool isObjectType(QString t)const{QString p=plainType(t);return p!="astring"&&p!="string"&&p!="int"&&p!="int32"&&p!="int64"&&p!="bool";} + bool isObjectType(QString t)const{QString p=plainType(t);return p!="astring"&&p!="string"&&p!="int"&&p!="int32"&&p!="int64"&&p!="bool"&&p!="blob";} private: QString m_name; bool m_valid; diff --git a/woc/qtout.cpp b/woc/qtout.cpp index c6047b6..7e1b027 100644 --- a/woc/qtout.cpp +++ b/woc/qtout.cpp @@ -242,6 +242,7 @@ QString WocQtClientOut::qttype(const WocClass&cls,QString p,bool dolist) if(cls.propertyIsString(p))r+="QString";else if(cls.propertyIsInt(p))r+="qint64";else if(cls.propertyIsBool(p))r+="bool";else + if(cls.propertyIsBlob(p))r+="QByteArray";else if(cls.propertyIsObject(p))r+=m_prefix+"O"+cls.propertyPlainType(p); else r+=cls.propertyPlainType(p); r+=">"; @@ -288,6 +289,9 @@ void WocQtClientOut::classDeserializer(const WocClass&cls,QFile&hdr,QFile&src,QS if(cls.propertyIsString(k[i])){ scd+="\t\tadd"+k[i]+"(el.text());\n"; }else + if(cls.propertyIsBlob(k[i])){ + scd+="\t\tadd"+k[i]+"(QByteArray::fromBase64(el.text().toAscii()));\n"; + }else if(cls.propertyIsEnum(k[i])){ scd+="\t\tbool b;\n"; QString pt=cls.propertyPlainType(k[i]); @@ -340,6 +344,9 @@ void WocQtClientOut::classDeserializer(const WocClass&cls,QFile&hdr,QFile&src,QS if(cls.propertyIsString(k[i])){ scd+="\t\tset"+k[i]+"(nl.at(0).toElement().text());\n"; }else + if(cls.propertyIsBlob(k[i])){ + scd+="\t\tset"+k[i]+"(QByteArray::fromBase64(nl.at(0).toElement().text().toAscii()));\n"; + }else if(cls.propertyIsObject(k[i])){ scd+="\t\tset"+k[i]+"("+m_prefix+"O"+cls.propertyPlainType(k[i])+"(nl.at(0).toElement()));\n"; }else{ @@ -402,6 +409,11 @@ void WocQtClientOut::classSerializers(const WocClass&cls,QFile&hdr,QFile&src,QSt scd+="\t\tel.appendChild(doc.createTextNode(mp_"+prop+"[i]?\"yes\":\"no\"));\n"; scd+="\t\tr.appendChild(el);\n"; }else + if(cls.propertyIsBlob(prop)){ + scd+="\t\tQDomElement el=doc.createElement(\""+prop+"\");\n"; + scd+="\t\tel.appendChild(doc.createTextNode(mp_"+prop+"[i].toBase64()));\n"; + scd+="\t\tr.appendChild(el);\n"; + }else if(cls.propertyIsInt(prop)){ scd+="\t\tQDomElement el=doc.createElement(\""+prop+"\");\n"; scd+="\t\tel.appendChild(doc.createTextNode(QString::number(mp_"+prop+"[i])));\n"; @@ -428,6 +440,11 @@ void WocQtClientOut::classSerializers(const WocClass&cls,QFile&hdr,QFile&src,QSt scd+="\t\tQDomElement el=doc.createElement(\""+prop+"\");\n"; scd+="\t\tel.appendChild(doc.createTextNode(mp_"+prop+"));\n"; scd+="\t\tr.appendChild(el);\n"; + }else + if(cls.propertyIsBlob(prop)){ + scd+="\t\tQDomElement el=doc.createElement(\""+prop+"\");\n"; + scd+="\t\tel.appendChild(doc.createTextNode(mp_"+prop+".toBase64()));\n"; + scd+="\t\tr.appendChild(el);\n"; }else{ qDebug("Error: cannot generate serializer for class %s property %s.",cls.name().toAscii().data(),prop.toAscii().data()); emit errorFound(); @@ -598,6 +615,9 @@ QString WocQtClientOut::trnInput(const WocTransaction&trn) if(trn.isBoolType(t)) code+="in_"+sl[i]+"[i]?\"yes\":\"no\""; else + if(trn.isBlobType(t)) + code+="in_"+sl[i]+".toBase64()"; + else code+="in_"+sl[i]+"[i]"; code+="));\n"; } @@ -612,6 +632,9 @@ QString WocQtClientOut::trnInput(const WocTransaction&trn) if(trn.isIntType(t)) code+="QString::number(in_"+sl[i]+")"; else + if(trn.isBlobType(t)) + code+="in_"+sl[i]+".toBase64()"; + else code+="in_"+sl[i]; code+="));\n\troot.appendChild(tmp);\n"; } @@ -659,6 +682,8 @@ QString WocQtClientOut::trnOutput(const WocTransaction&trn) code+="\t\tout_"+sl[i]+".append(nl.at(i).toElement().text().toInt());\n"; }else if(trn.isBoolType(t)){ code+="\t\tout_"+sl[i]+".append(nl.at(i).toElement().text()==\"yes\");\n"; + }else if(trn.isBlobType(t)){ + code+="\t\tout_"+sl[i]+".append(QByteArray::fromBase64(nl.at(i).toElement().text().toAscii()));\n"; }else{//can only be string code+="\t\tout_"+sl[i]+".append(nl.at(i).toElement().text());\n"; } @@ -667,6 +692,8 @@ QString WocQtClientOut::trnOutput(const WocTransaction&trn) code+="\tif(nl.size()>0){\n"; if(trn.isObjectType(t)){ code+="\t\ttry{out_"+sl[i]+"="+qtobjtype(trn,sl[i],Out)+"(nl.at(0).toElement());}catch(WException e){m_stage=Error;m_errtype=e.component();m_errstr=e.error();}\n"; + }else if(trn.isBlobType(t)){ + code+="\t\tout_"+sl[i]+"=QByteArray::fromBase64(nl.at(0).toElement().text().toAscii());\n"; }else{//can only be string code+="\t\tout_"+sl[i]+"=nl.at(0).toElement().text();\n"; } @@ -728,6 +755,7 @@ QString WocQtClientOut::qttype(const WocTransaction&trn,QString v,InOut io) } if(tp=="astring" || tp=="string")r+="QString";else if(tp=="int"||tp=="int32"||tp=="int64")r+="qint64";else + if(tp=="blob")r+="QByteArray";else if(tp=="bool")r+="bool"; else r+=m_prefix+"O"+tp.split("/",QString::SkipEmptyParts).at(0); r+=e;r+=" "; @@ -739,8 +767,10 @@ QString WocQtClientOut::qtobjtype(const WocTransaction&trn,QString v,InOut io) QString tp=io==In?trn.inputType(v):trn.outputType(v); if(tp.startsWith("List:")) tp=tp.mid(5); - if(tp=="astring" || tp=="string"||tp=="int"||tp=="int32"||tp=="int64")return ""; - else return m_prefix+"O"+tp; + if(tp=="astring" || tp=="string" || tp=="int" || tp=="int32" || tp=="int64" || tp=="bool" || tp=="blob") + return ""; + else + return m_prefix+"O"+tp; } void WocQtClientOut::addFile(QString bn) diff --git a/www/inc/machine/autoload.php b/www/inc/machine/autoload.php index 159ef15..441eb97 100644 --- a/www/inc/machine/autoload.php +++ b/www/inc/machine/autoload.php @@ -15,4 +15,5 @@ $AUTOCLASS["Session"]="./inc/machine/session.php"; $AUTOCLASS["Host"]="./inc/machine/host.php"; $AUTOCLASS["Template"]="./inc/machine/template.php"; $AUTOCLASS["Version"]="./inc/machine/version.php"; +$AUTOCLASS["Translation"]="./inc/machine/translation.php"; ?> \ No newline at end of file diff --git a/www/inc/machine/session.php b/www/inc/machine/session.php index 6281986..218cae2 100644 --- a/www/inc/machine/session.php +++ b/www/inc/machine/session.php @@ -79,39 +79,39 @@ class Session $hosts[]=$hst["host"]; //logic check 1: abort if host is unknown if(count($hres)==0){ - $trans->abortWithError("auth",translate("php::","Unknown Host")); + $trans->abortWithError(translate("php::","Unknown Host"),"auth"); } //logic check: login is allowed if // a) $hosts contains _any and the host is known, or // b) $hosts contains the transmitted host name $hostname=$trans->gethostname(); if( !in_array($hostname,$hosts) && !in_array("_any",$hosts)){ - $trans->abortWithError("auth",translate("php::","Host/User combination not allowed")); + $trans->abortWithError(translate("php::","Host/User combination not allowed"),"auth"); } //validate host $splt=explode(" ",$hres[0]["hostkey"]); if(count($splt)!=2){ - $trans->abortWithError("auth",translate("php::","Host authentication failed")); + $trans->abortWithError(translate("php::","Host authentication failed"),"auth"); } $cmp=strtolower(sha1($splt[0].$trans->gethostkey())); if($cmp != strtolower($splt[1])){ - $trans->abortWithError("auth",translate("php::","Host authentication failed")); + $trans->abortWithError(translate("php::","Host authentication failed"),"auth"); } //get user data $ures=$db->select("user","*","uname=".$db->escapeString($trans->getusername())); if(count($ures)<1){ - $trans->abortWithError("auth",translate("php::","User Authentication failed--")); + $trans->abortWithError(translate("php::","User Authentication failed"),"auth"); } //validate user $splt=explode(" ",$ures[0]["passwd"]); if(count($splt)!=2){ - $trans->abortWithError("auth",translate("php::","User Authentication failed-")); + $trans->abortWithError(translate("php::","User Authentication failed"),"auth"); } $cmp=strtolower(sha1($splt[0].$trans->getpassword())); if($cmp!=strtolower($splt[1])){ - $trans->abortWithError("auth",translate("php::","User Authentication failed")); + $trans->abortWithError(translate("php::","User Authentication failed"),"auth"); } //create session and return diff --git a/www/inc/machine/translation.php b/www/inc/machine/translation.php new file mode 100644 index 0000000..3ac6699 --- /dev/null +++ b/www/inc/machine/translation.php @@ -0,0 +1,28 @@ +, (C) 2009 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +class Translation +{ + static public function getFile($trans) + { + $name=$trans->getlanguage(); + $form=$trans->getformat(); + if($form!="ts" && $form!="qm")$trans->abortWithError(tr("Format must be either 'ts' or 'qm'.")); + if(!ereg("^[a-z]{1,3}$",$name))$trans->abortWithError(tr("Language invalid.")); + $fn="translations/_server".$name.".".$form; + if(!file_exists($fn))$trans->abortWithError(tr("Language unknown.")); + $trans->setfile(file_get_contents($fn,FILE_BINARY)); + } +}; + +?> \ No newline at end of file diff --git a/www/inc/wbase/transaction.php b/www/inc/wbase/transaction.php index 3dd1365..8c34a1f 100644 --- a/www/inc/wbase/transaction.php +++ b/www/inc/wbase/transaction.php @@ -69,9 +69,11 @@ class WobTransactionBase { exit(); } - /**called to abort a transactions flow*/ - public function abortWithError($type,$text=""){ - if($text==""){$text=$type;$type="server";} + /**called to abort a transactions flow + \param $type \b optional defines the source of the error (should be only one word, defaults to "server") + \param $text the human readable text returned to the client + */ + public function abortWithError($text,$type="server"){ header("X-WobResponse-Status: Error"); print("".xq($text)."\n"); exit(); diff --git a/www/translations/Makefile b/www/translations/Makefile new file mode 100644 index 0000000..5e99476 --- /dev/null +++ b/www/translations/Makefile @@ -0,0 +1,20 @@ +LUP=lupdate +LRL=lrelease +#XPT=xmlpatterns +XPT=xsltproc + +all: + @echo Please chose a target: lupdate lrelease + +lupdate: + $(LUP) -extensions php .. -ts server_*.ts + +lrelease: + echo 'TRANSLATIONS=\' >server.pro + for i in server_*.ts ; do \ + $(XPT) unify.xsl $$i > _$$i ; \ + echo _$$i '\' >>server.pro ; \ + done + $(LRL) server.pro + +.PHONY: all lupdate lrelease \ No newline at end of file diff --git a/www/translations/server_de.ts b/www/translations/server_de.ts new file mode 100644 index 0000000..217d796 --- /dev/null +++ b/www/translations/server_de.ts @@ -0,0 +1,4343 @@ + + + + MBackupDialog + + + Backup Settings + Einstellungen Sicherungskopie + + + + Backup File: + Sicherungskopie Datei: + + + + ... + ... + + + + Generations to keep: + Anzahl Generationen: + + + + Automatic Backup: + Automatische Sicherung: + + + + Interval in days: + Intervall in Tagen: + + + + &OK + &Ok + + + + &Cancel + &Abbrechen + + + + Backup File + Sicherungsdatei + + + + MCentDialog + + + OK + Ok + + + + Cancel + Abbrechen + + + + MCheckDialog + + + Ok + Ok + + + + Cancel + Abbrechen + + + + MCustomerDialog + + + Customer %1 + Kunde %1 + + + + New Customer + Neuer Kunde + + + + Name: + Name: + + + + Address: + Rechnungsadresse: + + + + Contact Information: + Kontaktinformationen: + + + + Web-Login/eMail: + Web-Login/eMail: + + + + Comment: + Kommentar: + + + + Save + Speichern + + + + Cancel + Abbrechen + + + + MCustomerListDialog + + + Select a Customer + Kunde auswählen + + + + Customers + Kunden + + + + Details... + Details... + + + + Create new... + Neu... + + + + Delete... + Löschen... + + + + Select + Auswählen + + + + Cancel + Abbrechen + + + + Close + Schließen + + + + Delete Customer + Kunden Löschen + + + + Really delete this customer (%1)? + Diesen Kunden (%1) wirklich löschen? + + + + merge with other entry: + mit anderem Eintrag vereinen: + + + + &Yes + &Ja + + + + &No + &Nein + + + + Error + Fehler + + + + Failed to delete customer. + Kann Kunden nicht löschen. + + + + Failed to delete customer: %1 + Kann Kunden nicht löschen: %1 + + + + MEvent + + + Event is not complete, cannot save. + Veranstaltung ist nicht komplett. Kann nicht speichern. + + + + [0-9]+\.[0-9]{2} + price validator regexp + [0-9]+,[0-9]{2} + + + + . + price decimal dot + , + + + + yyyy-MM-dd hh:mm ap + date/time format + ddd, d.M.yyyy hh:mm + + + + yyyy-MM-dd + date format + d.M.yyyy + + + + MEventEditor + + + Event Editor + Veranstaltungseditor + + + + Title: + Titel: + + + + Artist: + Künstler: + + + + Description: + Beschreibung: + + + + Start Time: + Startzeit: + + + + ddd MMMM d yyyy, h:mm ap + time format + ddd, d.M.yyyy hh:mm + + + + End Time: + Endzeit: + + + + Room/Place: + Raum/Ort: + + + + Capacity: + Sitzplätze: + + + + Default Price: + Kartenpreis: + + + + Event Cancelled: + Veranstaltung absagen: + + + + Save + Speichern + + + + Cancel + Abbrechen + + + + Warning + Warnung + + + + Unable to load event from server. + Veranstaltung kann nicht vom Server geladen werden. + + + + Problem while uploading event: %s + Problem beim anlegen der Veranstaltung: %s + + + + Select a Room + Raum auswählen + + + + New... + new room + Neu... + + + + Select + select room + Auswählen + + + + New Room + Neuer Raum + + + + Name of new room: + Name des Raumes: + + + + ID: + ID: + + + + MEventSummary + + + Summary for Event %1 + Übersicht zu Veranstaltung %1 + + + + Title: + Titel: + + + + Artist: + Künstler: + + + + Start: + Beginn: + + + + yyyy-MM-dd hh:mm ap + Date+Time format for displaying event start time + ddd, d.M.yyyy hh:mm + + + + Capacity: + Sitzplätze: + + + + Tickets currently reserved: + Momentan reservierte Karten: + + + + Tickets currently cancelled: + Momentan abgesagte Karten: + + + + Tickets currently usable: + Momentan nutzbare Karten: + + + + Total Income: + erwarteter Umsatz: + + + + . + decimal dot + , + + + + Price + Preis + + + + Bought + Gekauft + + + + Used + Benutzt + + + + Unused + Unbenutzt + + + + Print + Drucken + + + + Save as... + Speichern unter... + + + + Close + Schließen + + + + Warning + Warnung + + + + Unable to get template file (eventsummary.odtt). Giving up. + Kann Vorlage (eventsummary.odtt) nicht finden. Gebe auf. + + + + Summary + Zusammenfassung + + + + Tickets + Karten + + + + Comments + Kommentare + + + + Order: + Bestellung: + + + + Customer: + Kunde: + + + + Unable to get template file (eventsummary). Giving up. + Kann Vorlage (eventsummary) nicht finden. Gebe auf. + + + + Open Document File (*.%1) + ODF Datei (*.%1) + + + + MKeyGen + + + Current random buffer: %n Bits + + Aktueller Zufallspuffer: %n Bit + Aktueller Zufallspuffer: %n Bits + + + + + Magic Smoke Key Generator + Magic Smoke Schlüsselgenerator + + + + <html><h1>Key Generation</h1> +I am currently collecting random bits in order to generate a host key for this installation. Please use mouse and keyboard to generate more random. Alternatively you can load a key from an external medium.<p> +At least %1 Bits of random are required. + <html><h1>Schlüsselgenerierung</h1>Das Programm sammelt gerade Zufallsbits für diese Installation. Bitte benutzen Sie Maus und Tastatur, um mehr Zufall zu generieren. Alternativ können Sie auch einen fertigen Schlüssel von einem externen Medium laden.<p>Mindestens %1 Zufallsbits werden gebraucht. + + + + &OK + &Ok + + + + &Cancel + &Abbrechen + + + + MLabelDialog + + + Label Printing Setup + Etikettendruck einrichten + + + + mm + defaultmetric: mm, in, cm + mm + + + + Label offset: + Seitenrand: + + + + Label size: + Etikettengröße: + + + + Unit: + Einheit: + + + + Millimeter + Millimeter + + + + Centimeter + Zentimeter + + + + Inch + Zoll + + + + Page usage: + Seitennutzung: + + + + Page %1 + Seite %1 + + + + Ok + Ok + + + + Cancel + Abbrechen + + + + Warning: the label may not fit on the page! + Warnung: der Aufkleber könnte größer als die eingestellte Seite sein! + + + + MMainWindow + + + Profile: + Profil: + + + + Alternate Hostname: + ALternativer Hostname: + + + + Server URL: + Server-URL: + + + + Proxy: + Proxy: + + + + Username: + Benutzername: + + + + Password: + Passwort: + + + + New Profile + Neues Profil + + + + Please enter a profile name. It must be non-empty and must not be used yet: + Bitte geben Sie einen Profilnamen ein (mind. 1 Zeichen): + + + + Proxy Username: + Nutzername Proxy: + + + + Proxy Password: + Passwort Proxy: + + + + Warning + Warnung + + + + Unable to log in. Error: %1 + Login fehlgeschlagen: %1 + + + + &File + &Datei + + + + &New Profile... + &Neues Profil + + + + &Save Profile + Profil &speichern + + + + &Close Window + &Fenster schließen + + + + &Configure + &Konfigurieren + + + + new Profile + Neues Profil + + + + save Profile + Profil speichern + + + + Login + Login + + + + &Language... + &Sprache + + + + &Export Host Key... + Hostkey &exportieren... + + + + &Import Host Key... + Hostkey &importieren... + + + + &Generate Host Key... + Hostkey &generieren... + + + + Export Key to File + Key als Datei speichern + + + + Unable to open file %1 for writing: %2 + Datei %1 kann zum Schreiben nicht geöffnet werden: %2 + + + + Importing a key overwrites the host key that is currently used by this program. This may disable your accounts. Do you still want to continue? + Der Import eines Keys überschreibt den aktuellen Key des Programms. Dies könnte Ihre Accounts unbenutzbar machen. Trotzdem fortfahren? + + + + Import Key from File + Key aus Datei importieren + + + + Unable to open file %1 for reading: %2 + Datei %1 kann zum Lesen nicht geöffnet werden: %2 + + + + This is not a host key file. + Dies ist keine Hostkeydatei. + + + + This host key file does not contain a valid key. + Diese Datei enthält keinen gültigen Hostkey. + + + + The key check sum did not match. Please get a clean copy of the host key file. + Die Checksumme dieser Datei ist fehlgeschlagen. Bitte besorgen Sie eine neue Kopie der Datei. + + + + New Host Name + Neuer Hostname + + + + Please enter a name for the new host: + Bitte geben Sie einen Hostnamen ein: + + + + The host name must only consist of letters, digits and underscore. It must start with a letter. + Der Hostname darf nur aus Buchstaben, Ziffern und Unterstrich bestehen. + + + + This host key file does not contain a valid host name. + Die Hostkeydatei enthält keinen gültigen Hostnamen. + + + + &OpenOffice.org Settings... + OpenOffice Einstellungen... + + + + MMoneyLog + + + Money Log of %1 %2 + Geldtransfers von %1 %2 + + + + Close + Schließen + + + + MOfficeConfig + + + Configure OpenOffice.org Access + Zugriff auf OpenOffice Konfigurieren + + + + OpenOffice.org + OpenOffice.org + + + + Path to Executable: + Pfad zum Programm: + + + + ... + select OpenOffice path button + ... + + + + Printing ODF + ODF Drucken + + + + Printer: + Drucker: + + + + (Default Printer) + (Standarddrucker) + + + + Always confirm printer when printing ODF + Drucker bestägen, wenn ODF gedruckt wird. + + + + Save printed files + Gedruckte Dateien auch speichern + + + + Opening ODF + ODF Öffnen + + + + Always open as Read-Only + Immer im Nur-Lese-Modus öffnen + + + + Automatically open all newly created files + Alle neuen Dateien automatisch öffnen + + + + OK + Ok + + + + Cancel + Abbrechen + + + + Select OpenOffice.org executable + OpenOffice.org Programm wählen + + + + MOrder + + + placed + state + bestellt + + + + sent + state + versandt + + + + cancelled + state + storniert + + + + closed + state + geschlossen + + + + check: ok + state + Prüfung: ok + + + + check: sale only + state + Prüfung: nur verkaufen + + + + check: order only + state + Prüfung: nur bestellen + + + + check: failed + state + Prüfung: nicht möglich + + + + invalid + state + ungültig + + + + . + decimal dot + , + + + + yyyy-MM-dd hh:mm ap + date/time format + ddd, dd.MM.yyyy hh:mm 'Uhr' + + + + yyyy-MM-dd + date format + d.M.yyyy + + + + This ticket is not part of this order. + Dieses Ticket ist in keiner Bestellung enthalten. + + + + Error + Fehler + + + + The request failed. + Anfrage ist fehlgeschlagen. + + + + A problem occurred during the order: %1 + Die Bestellung ist fehlgeschlagen: %1 + + + + reserved + state + reserviert + + + + Cannot query DB, don't know it. + Interner Fehler: Kann die Datenbank nicht abfragen. + + + + Cannot update shipping: error while sending. + Kann Versandinformationen nicht senden: Sendefehler. + + + + This voucher is not part of this order. + Dieser Gutschein ist nicht Teil der Bestellung. + + + + MOrderItemView + + + Preview Tickets + Karten-Vorschau + + + + Ticket: + Eintrittskarte: + + + + Voucher: + Gutschein: + + + + MOrderWindow + + + Order Details + Bestelldetails + + + + &Order + &Bestellung + + + + &Order... + &Bestellung... + + + + &Sell... + &Verkauf... + + + + C&ancel Order... + Bestellung &Stornieren... + + + + &Close + S&chließen + + + + &Payment + &Bezahlung + + + + Receive &Payment... + &bezahlen... + + + + &Refund... + &zurückgeben... + + + + P&rinting + &Druck + + + + Print &Bill... + &Rechnung drucken... + + + + Save Bill &as file... + Rechnung &speichern... + + + + Print &Tickets... + &Eintrittskarten drucken... + + + + Print &Current Ticket... + markierte Eintrittskarte drucken + + + + &View Tickets... + Eintrittskarten &ansehen... + + + + Order ID: + Bestell-Nr.: + + + + Order Date: + Bestelldatum: + + + + Shipping Date: + Versandtdatum: + + + + Customer: + Kunde: + + + + Sold by: + Verkauft durch: + + + + Total Price: + Gesamtpreis: + + + + Already Paid: + bereits bezahlt: + + + + Order State: + Bestellstatus: + + + + Ticket ID + Karten-Nr. + + + + Event + Veranstaltung + + + + Start Time + Anfangszeit + + + + Status + Status + + + + Price + Preis + + + + &Mark Order as Shipped... + Bestellung als versandt markieren... + + + + Ch&ange Ticket-Price... + Kartenpreis ändern... + + + + &Return Ticket... + Karte zurückgeben... + + + + Warning + Warnung + + + + Unable to get template file (ticket.xtt). Giving up. + Kann Vorlage (ticket.xtt) nicht finden. Gebe auf. + + + + Unable to get template file (bill.odtt). Giving up. + Kann Vorlage (bill.odtt) nicht finden. Gebe auf. + + + + Mark as shipped? + Als versandt markieren? + + + + Mark this order as shipped now? + Diese Bestellung jetzt als versandt markieren? + + + + Unable to get template file (eventsummary.odtt). Giving up. + Kann Vorlage (eventsummary.odtt) nicht finden. Gebe auf. + + + + Enter Payment + Zahlbetrag eingeben + + + + Please enter the amount that has been paid: + Bitte geben Sie den Betrag ein, der bezahlt wurde: + + + + Unable to submit payment request. + Kann Bestellung nicht anlegen. + + + + Error while trying to pay: %1 + Fehler während der Bezahlung: %1 + + + + Enter Refund + Rückgabe eingeben + + + + Please enter the amount that will be refunded: + Bitte geben Sie den Betrag ein, der zurückgegeben wird: + + + + Unable to submit refund request. + Kann Rückgabe nicht übermitteln. + + + + Error whily trying to refund: %1 + Fehler während der Rückgabe: %1 + + + + This ticket cannot be returned, it has already been used or is in the wrong state. + Diese Karte kann nicht zurückgegeben werden: sie wurde bereits verwendet. + + + + Return Ticket + Karte zurückgeben + + + + Do you really want to return this ticket? + Wollen Sie diese Karte wirklich zurückgeben? + + + + Cancel Order? + Bestellung stornieren? + + + + Cancel this order now? + Diese Bestellung jetzt stornieren? + + + + Cannot cancel this order: it is in the wrong state. + Diese Bestellung kann nicht: sie ist im falschen Zustand. + + + + Failed to cancel this order. + Kann diese Bestellung nicht stornieren. Schade. + + + + Delivery Address: + Lieferadresse: + + + + Order Comment: + Bestellkommentar: + + + + Change Commen&t... + Kommen&tar ändern... + + + + Set comment: order %1 + Kommentar ändern: Bestellung %1 + + + + &Save + &Speichern + + + + &Cancel + &Abbrechen + + + + &Prune and recheck... + Ungültige Einträge entfernen und erneut checken... + + + + Ma&ke Reservation... + Reservierung durchführen... + + + + Ch&ange Item-Price... + Artikelpreis ändern... + + + + &Return Item... + Artikel zurückgeben... + + + + Change Sh&ipping Method... + Versandoption ändern... + + + + Print V&ouchers... + Gutscheine drucken... + + + + Print &Current Item... + Aktuellen Artikel drucken... + + + + &View Items... + Artikel ansehen... + + + + Shipping Method: + Versandoption: + + + + Shipping Costs: + Versandkosten: + + + + Item ID + Artikelnummer: + + + + Description + Beschreibung + + + + Voucher (current value: %1) + Gutschein (aktueller Wert: %1) + + + + There are no tickets left to print. + Es gibt keine Eintrittskarten zu drucken. + + + + There are no vouchers left to print. + Es gibt keine Gutscheine zu drucken. + + + + Unable to get template file (voucher.xtt). Giving up. + Kann Vorlage (voucher) nicht finden. Gebe auf. + + + + Unable to get template file (bill). Giving up. + Kann Vorlage (bill) nicht finden. Gebe auf. + + + + Unable to get template file (eventsummary). Giving up. + Kann Vorlage (eventsummary) nicht finden. Gebe auf. + + + + Open Document File (*.%1) + ODF Datei (*.%1) + + + + Enter Price + Bitte Preis eingeben + + + + Please enter the new price for the ticket: + Bitte neuen Preis für die Eintrittskarte eingeben: + + + + Cannot change this item type. + Diese Artikelart kann nicht geändert werden. + + + + This voucher cannot be returned, it has already been used. + Diese Karte kann nicht zurückgegeben werden: sie wurde bereits verwendet. + + + + Return Voucher + Gutschein zurückgeben + + + + Do you really want to return this voucher? + Wollen Sie diesen Gutschein wirklich zurückgeben? + + + + Cannot return this item type. + Diese Artikelart kann nicht zurückgegeben werden. + + + + Set shipping time + Versandzeit setzen + + + + Enter the shipping time: + Bitte geben Sie die Versandzeit ein: + + + + OK + Ok + + + + Cancel + Abbrechen + + + + MoneyLog for Order... + Geldtransfers von Bestellung... + + + + MoneyLog for selected Voucher... + Geldtransfers des selektierten Gutscheins... + + + + Enter Voucher + Gutschein eingeben + + + + Please enter the ID of the voucher you want to use: + Bitte geben Sie die Nummer des Gutscheins ein, den Sie verwenden wollen: + + + + This voucher is not valid. + Dieser Gutschein ist nicht gültig. + + + + Voucher Info + Gutscheininformation + + + + Remaining value of this voucher: %1 + Verbleibender Wert auf dem Gutschein: %1 + + + + This is not a voucher, cannot show the money log. + Dies ist kein Gutschein, kann keine Geldtransfers anzeigen. + + + + Pay with &Voucher... + Mit Gutschein bezahlen... + + + + MOverview + + + &Session + &Session + + + + &Re-Login + &Login wiederholen + + + + &Close Session + Session &schließen + + + + &Event + &Veranstaltung + + + + &Customer + &Kunde + + + + Events + Veranstaltungen + + + + Warning + Warnung + + + + I was unable to renew the login at the server, the error was: %1 + Der erneute Login ist fehlgeschlagen: %1 + + + + &Offline mode + &Offlinemodus + + + + &New Event... + &Neue Veranstaltung... + + + + &Show all customers + &Alle Kunden anzeigen + + + + C&art + &Einkaufswagen + + + + Add &Ticket + Eintrittskarte &hinzufügen + + + + Add &Voucher + &Gutschein hinzufügen + + + + &Remove Item + &Entfernen + + + + &Abort Shopping + &Einkauf abbrechen + + + + New Event... + Neue Veranstaltung... + + + + Details... + Details... + + + + Order Ticket... + Bestellen... + + + + Shopping Cart + Einkaufswagen + + + + Add Ticket + Eintrittskarte hinzufügen + + + + Add Voucher + Gutschein hinzufügen + + + + Remove Item + Entfernen + + + + Customer: + Kunde + + + + Delivery Address: + Lieferadresse: + + + + Comments: + Kommentare: + + + + Clear + Zurücksetzen + + + + Start Time + Anfangszeit + + + + Title + Titel + + + + ddd MMMM d yyyy, h:mm ap + time format + ddd, d.M.yyyy hh:mm + + + + &Update Event List + &Veranstaltungsliste auffrischen + + + + &Show/Edit details... + &Details anzeigen/editieren... + + + + Users + Nutzer + + + + New User... + Neuer Nutzer... + + + + Delete User... + Nutzer löschen... + + + + Description... + Beschreibung.,. + + + + Hosts... + Hosts... + + + + Roles... + Rechte... + + + + Hosts + Hosts + + + + Login Name + Loginname + + + + Description + Beschreibung + + + + New User + Neuer Nutzer + + + + Please enter new user name (only letters, digits, and underscore allowed): + Neuen Nutzernamen eingeben (Kleinbuchstaben, Ziffern, Unterstrich, Minus): + + + + Error + Fehler + + + + Edit Description + Beschreibung ändern + + + + Descriptionof user %1: + Beschreibung von Nutzer %1: + + + + Change my &Password + Mein &Passwort ändern + + + + Set Password... + Passwort setzen... + + + + New Host... + Neuer Host... + + + + Add This Host... + Diesen Host hinzufügen... + + + + Delete Host... + Host löschen... + + + + Generate New Key... + Neuen Schlüssel anlegen... + + + + Import... + Importieren... + + + + Export... + Exportieren... + + + + Password + Passwort + + + + Please enter an initial password for the user: + Bitte geben Sie ein intiales Passwort ein: + + + + Delete User? + Nutzer löschen? + + + + Really delete user '%1'? + Nutzer '%1' wirklich löschen? + + + + Error setting password: %1 + Passwort kann nicht gesetzt werden: %1 + + + + The password must be non-empty and both lines must match + Das Passwort darf nicht leer sein und beide Zeilen müssen übereinstimmen. + + + + Host Name + Hostname + + + + Host Key + Hostkey + + + + Create New Host + Neuen Host anlegen + + + + Please enter a host name: + Bitte geben Sie einen neuen Hostnamen ein: + + + + The key of this new host could only be generated with %n bits entropy. Store anyway? + + Der Key dieses Hosts konnte nur mit %n Bit Entropie angelegt werden. Trotzdem speichern? + Der Key dieses Hosts konnte nur mit %n Bits Entropie angelegt werden. Trotzdem speichern? + + + + + Delete this Host? + Diesen Host löschen? + + + + Really delete host '%1'? + Den Host '%1' wirklich löschen? + + + + Change Host Key? + Hostkey ändern? + + + + Really change the key of host '%1'? + Den Key von Host '%1' wirklich ändern? + + + + The new key of this host could only be generated with %n bits entropy. Store anyway? + + Der Key dieses Hosts konnte nur mit %n Bit Entropie angelegt werden. Trotzdem speichern? + Der Key dieses Hosts konnte nur mit %n Bits Entropie angelegt werden. Trotzdem speichern? + + + + + Import Key from File + Key aus Datei importieren + + + + Unable to open file %1 for reading: %2 + Datei %1 kann nicht zum Lesen geöffnet werden: %2 + + + + This is not a host key file. + Dies ist keine Hostkeydatei. + + + + This host key file does not contain a valid host name. + Die Hostkeydatei enthält keinen gültigen Hostnamen. + + + + This host key file does not contain a valid key. + Diese Datei enthält keinen gültigen Hostkey. + + + + The key check sum did not match. Please get a clean copy of the host key file. + Die Checksumme dieser Datei ist fehlgeschlagen. Bitte besorgen Sie eine neue Kopie der Datei. + + + + This host cannot be exported. + Dieser Host kann nicht exportiert werden. + + + + Export Key to File + Hostkey als Datei speichern + + + + Unable to open file %1 for writing: %2 + Datei %1 kann nicht zum Schreiben geöffnet werden: %2 + + + + Check Order + Bestellung prüfen + + + + Order List + Bestellungsliste + + + + -select mode- + -Modus auswählen- + + + + All Orders + Alle Bestellungen + + + + Open Orders + Offene Bestellungen + + + + Outstanding Payments + Noch nicht bezahlt + + + + Outstanding Refunds + Offene Rückerstattungen + + + + Amount + Anzahl + + + + Select Event to order Ticket + Bitte wählen Sie eine Verstaltung aus, um zu bestellen + + + + Select + Auswählen + + + + Cancel + Abbrechen + + + + There is nothing in the order. Ignoring it. + Bestellung ist leer. Vorgang abgebrochen. + + + + Please chose a customer first! + Bitte wählen Sie zunächst einen Kunden aus! + + + + The request failed. + Anfrage ist fehlgeschlagen. + + + + A problem occurred during the order: %1 + Die Bestellung ist fehlgeschlagen: %1 + + + + Entrance + Einlasskontrolle + + + + Event Summary... + Veranstaltungsübersicht... + + + + Undelivered Orders + Nicht ausgelieferte Bestellungen + + + + Update + Auffrischen + + + + Status + Status + + + + Total + Gesamt + + + + Paid + bezahlt + + + + Customer + Kunde + + + + &Upload Template... + Vorlage &hochladen... + + + + &Misc + &Verschiedenes + + + + &Return ticket... + &Karte zurückgeben... + + + + Cancel Event... + Veranstaltung absagen... + + + + Find by Ticket... + Mit Kartennummer suchen... + + + + Cancel Event + Veranstaltung absagen + + + + Please enter a reason to cancel event "%1" or abort: + Bitte geben Sie einen Grund für die Absage der Veranstaltung "%1" ein: + + + + Event Cancelled + Veranstaltung abgesagt + + + + The event "%1" has been cancelled. Please inform everybody who bought a ticket. + Die Veranstaltung "%1" wurde abgesagt. Bitte informieren Sie alle Kunden. + + + + Unable to cancel event "%1". + Kann Veranstaltung "%1" nicht absagen. + + + + Ticket "%1" Not Valid + Karte "%1" ist nicht gültig. + + + + Ticket "%1" has already been used + Karte "%1" wurde bereits verwendet. + + + + Ticket "%1" has not been bought. + Karte "%1" wurde nicht gekauft. + + + + Ticket "%1" Ok + Karte "%1" Okay. + + + + Ticket "%1" Ok; the Order has a refund + Karte "%1" Okay. +Die Bestellung ist überbezahlt: es gibt noch Geld zurück. + + + + Ticket "%1" is not paid for! + Karte "%1" ist nicht bezahlt!!! + + + + Ticket "%1" cannot be accepted, please check the order! + Karte "%1" kann nicht akzeptiert werden, bitte prüfen Sie die Bestellung. + + + + Enter Ticket + Bitte Ticket eingeben + + + + Please enter the ID of one of the tickets of the order you seek: + Bitte geben Sie die Nr. einer Karte aus der gesuchten Bestellung ein: + + + + Unable to query server. + Kann Server nicht abfragen. + + + + Server returned an invalid order ID. + Server hat eine ungültige Bestellnummer geliefert. + + + + Please select a template file. + Bitte wählen Sie eine Vorlage aus. + + + + Enter Template Name + Vorlagenname eingeben + + + + Please enter a name for the template file, it should contain only letters, digits, underscores and dots: + Bitte geben Sie einen Namen für die Vorlage ein. Der Name sollte nur Buchstaben, Zahlen und Unterstriche und Punkte enthalten: + + + + The template name must only contain letters, digits, underscores and dots. + Der Vorlagenname darf nur Buchstaben, Ziffern, Unterstriche und Punkte enthalten. + + + + Success + Erfolg + + + + Successfully uploaded the template. + Vorlage wurde erfolgreich hochgeladen. + + + + Unable to upload the template. + Kann Vorlage nicht hochladen. + + + + Return Ticket + Karte zurückgeben + + + + Please enter the ticket ID to return: + Bitte geben Sie die Karte ein, die zurückgegeben wird: + + + + This is not a valid ticket. + Dies ist keine gültige Karte. + + + + This ticket cannot be returned, it has already been used or is in the wrong state. + Diese Karte kann nicht zurückgegeben werden: sie wurde bereits benutzt oder befindet sich im falschen Status. + + + + &Admin + &Administration + + + + &Schedule Backup... + &Backupzeit festlegen... + + + + &Backup now... + &Jetzt Backup machen... + + + + &Restore... + Backup &wiederherstellen... + + + + -search result- + -Suchresultat- + + + + Find by Event... + Nach Veranstaltung suchen... + + + + Find by Customer... + Nach Kunde suchen... + + + + The user name must contain only letters, digits, dots and underscores and must be at least one character long! + Nutzernamen dürfen nur Kleinbuchstaben, Ziffern, Punkte, Bindestriche und Unterstriche enthalten und müssen mindestens ein Zeichen lang sein! + + + + Select Event + Veranstaltung auswählen + + + + Ok + Ok + + + + Capacity + Sitzplätze: + + + + Sold + Verkauft + + + + Reserved + Reserviert + + + + Free + Frei + + + + (Nobody) + this is a username for no user, the string must contain '(' to distinguish it from the others + (Niemand) + + + + Delete User + Nutzer Löschen + + + + Select which user will inherit this users database objects: + Bitte wählen Sie einen Nutzer, der die Datenbankobjekte des gelöschten Nutzers erbt: + + + + Cannot delete user: %1 + Kann Nutzer nicht löschen: %1 + + + + Show &old Events + vergangene Veranstaltungen anzeigen + + + + C&onfigure + Konfigurieren + + + + &Auto-Refresh settings... + Auto-Auffrisch-Einstellungen... + + + + Refresh Settings + Auffrischeinstellungen + + + + Refresh Rate (minutes): + Auffrischrate (Minuten): + + + + refresh &event list + Veranstaltungsliste auffrischen + + + + refresh &user list + Nutzerliste auffrischen + + + + refresh &host list + Rechnerliste auffrischen + + + + &OK + &Ok + + + + &Cancel + &Abbrechen + + + + &Edit Templates... + Vorlagen ändern... + + + + &Update Templates Now + Vorlagen jetzt auffrischen + + + + &Update Shipping Options + Versandoptionen auffrischen + + + + Return &ticket... + Karte zurückgeben... + + + + Return &voucher... + Gutschein zurückgeben... + + + + Edit &Shipping Options... + Versandoptionen editieren + + + + Shipping Method: + Versandoption: + + + + Open Reservations + Reservierungen + + + + (No Shipping) + (Kein Versand) + + + + Select Voucher + Gutschein wählen + + + + Select voucher price and value: + Bitte Gutschein-Preis und -Wert wählen: + + + + Price: + Preis: + + + + Value: + Wert: + + + + Voucher (price: %1, value %2) + Gutschein (Preis: %1, Wert: %2) + + + + Return Voucher + Gutschein zurückgeben + + + + Please enter the voucher ID to return: + Bitte geben Sie den Gutschein ein, der zurückgegeben wird: + + + + This is not a valid voucher. + Dies ist kein gültiger Gutschein. + + + + This voucher cannot be returned, it has already been used. + Dieser Gutschein kann nicht zurückgegeben werden, er wurde bereits benutzt. + + + + refresh &shipping list + Versandoptionen auffrischen + + + + Find by Order ID... + Nach Bestellnummer suchen... + + + + Enter Order ID + Bestellnummer eingeben + + + + Please enter the ID of the order you want to display: + Bitte geben Sie die Bestellnummer der Bestellung ein, die Sie ansehen wollen: + + + + This order does not exist. + Diese Bestellung existiert nicht. + + + + &Deduct from voucher... + Geld von Gutschein abziehen... + + + + &Money Log for voucher... + Geldtransfers von Gutschein... + + + + Money Log for &user... + Geldtransfers von Nutzer... + + + + &Server Access settings... + Serverzugriffseinstellungen... + + + + Backup &Settings... + Einstellungen Sicherungskopie... + + + + Enter or scan Ticket-ID: + Kartennummer eingeben oder scannen: + + + + Ticket "%1" is not for this event. + Karte "%1" ist nicht für diese Veranstaltung. + + + + Deduct from Voucher + Von Gutschein abziehen + + + + Using a voucher to pay outside the system. + Einen Gutschein nutzen um außerhalb des Systems zu bezahlen. + + + + Amount to deduct: + Abzuziehender Betrag: + + + + Voucher ID: + Gutscheinnummer: + + + + OK + Ok + + + + Request failed. + Anfrage ist fehlgeschlagen. + + + + Deducted from Voucher + Von Gutschein abziehen + + + + Value taken from voucher: %1 +Value remaining on voucher: %2 + Vom Gutschein abgezogener Betrag: %1 +Verbleibender Betrag: %2 + + + + Server Access Settings + Serverzugriffseinstellungen + + + + Request Timeout (seconds): + max. Anfragezeit (Sekunden): + + + + Log Level: + Logstufe: + + + + Minimal Logging + Minimales Log + + + + Log Details on Error + Bei Fehlern Details + + + + Always Log Details + Immer Details + + + + Backup failed with error: %1 + Sicherung ist fehlgeschlagen: %1 + + + + Backup + Sicherung + + + + The backup was successful. + Die Sicherung war erfolgreich. + + + + Cannot create backup file. + Kann Sicherungsdatei nicht anlegen. + + + + Voucher ID + Gutscheinnummer + + + + Please enter voucher ID to show log: + Bitte geben Sie die Gutscheinnummer ein um die Transaktionen zu zeigen: + + + + User + Nutzer + + + + Please enter login name of user to show log: + Bitte den Login-Namen des Nutzers eingeben um die Transaktionen anzuzeigen: + + + + MPasswordChange + + + Change my password + Mein Passwort ändern + + + + Old Password: + Altes Passwort: + + + + New Password: + Neues Passwort: + + + + Repeat Password: + Paswort wiederholen: + + + + Set Password + Passwort setzen + + + + Cancel + Abbrechen + + + + Reset password of user "%1" + Passwort des Nutzers "%1" zurücksetzen + + + + MShipping + + + . + decimal dot + , + + + + MShippingChange + + + Change Shipping Method + Versandoption ändern + + + + Method: + Option: + + + + Price: + Preis: + + + + Ok + Ok + + + + Cancel + Abbrechen + + + + (None) + shipping method + (Keine) + + + + MShippingEditor + + + Edit Shipping Options + Versandoptionen editieren + + + + Change Description + Beschreibung ändern + + + + Change Price + Preis ändern + + + + Change Availability + Verfügbarkeit ändern + + + + Add Option + Option hinzufügen + + + + Delete Option + Option löschen + + + + Ok + Ok + + + + Cancel + Abbrechen + + + + ID + ID + + + + Description + Beschreibung + + + + Price + Preis + + + + Web + Web + + + + Any User + Jeder Nutzer + + + + Yes + Ja + + + + No + Nein + + + + Shipping Option Description + Versandoptionsbeschreibung + + + + Please select a new description for this shipping option: + Bitte geben Sie eine Beschreibung für diese Versandoption ein: + + + + Warning + Warnung + + + + Could not store the changes. + Konnte Änderungen nicht speichern. + + + + Shipping Option Price + Versandoptionspreis + + + + Please select a new price for this shipping option: + Bitte geben Sie einen Preis für diese Versandoption ein: + + + + None + Nur privilegierte Nutzer + + + + Web Interface + Privilegierte Nutzer und Web-Kunden + + + + Any User + Web Interface + Jeder + + + + Shipping Option Availability + Versandoptionsverfügbarkeit + + + + Please select a new availability for this shipping option: + Bitte wählen Sie eine Verfügbarkeit für diese Versandoption: + + + + Please select a new description for this new shipping option: + Bitte geben Sie eine Beschreibung für diese Versandoption ein: + + + + Please select a new price for this new shipping option: + Bitte geben Sie einen Preis für diese Versandoption ein: + + + + Please select a new availability for this new shipping option: + Bitte wählen Sie eine Verfügbarkeit für diese Versandoption: + + + + Could not create the new option. + Konnte die neue Versandoption nicht anlegen. + + + + Unable to delete this option. + Kann diese Option nicht löschen. + + + + MTemplateChoice + + + Chose Template + Vorlage auswählen + + + + Please chose a variant of template %1: + Bitte wählen Sie eine Variante für die Vorlage %1: + + + + (default) + default template pseudo-variant + (Standard) + + + + Ok + Ok + + + + MTemplateEditor + + + Edit Template Directory + Vorlagenverzeichnis editieren + + + + Update Now + Jetzt auffrischen + + + + Add Variant + Variante hinzufügen + + + + Delete Variant + Variante löschen + + + + Close + Schließen + + + + Template/Variant + Vorlage/Variante + + + + Description + Beschreibung + + + + Checksum + Checksumme + + + + Warning + Warnung + + + + Unable to delete this template. + Kann diese Vorlage nicht löschen. + + + + Select Template File + Vorlagendatei wählen + + + + Files with this extension (%1) are not legal for this template. + Dateien mit der Erweiterung %1 sind für diese Vorlage nicht erlaubt. + + + + Unable to upload file. + Kann Datei nicht hochladen. + + + + Unable to send new description to server. + Kann die neue Beschreibung nicht speichern. + + + + MTemplateStore + + + Retrieving templates from server. + Hole Vorlagen vom Server. + + + + MTicket + + + . + decimal dot + , + + + + bought + ticket state + gültig + + + + to refund + ticket state + zurückgegeben + + + + used + ticket state + benutzt + + + + reserved + ticket state + reserviert + + + + ok + ticket state + Ok + + + + sale only + ticket state + nur zum Verkauf + + + + order only + ticket state + nur zur Bestellung + + + + too late: event over + ticket state + zu spät: Veranstaltung ist vorbei + + + + no more tickets + ticket state + keine Karten mehr verfügbar + + + + event cancelled + ticket state + Veranstaltung abgesagt + + + + no such event + ticket state + Veranstaltung unbekannt + + + + invalid + ticket state + ungültig + + + + Cannot execute request. + Kann Anfrage nicht ausführen. + + + + Ticket is not stored, can't return it. + Karte ist nicht gespeichert, kann sie nicht zurückgeben. + + + + Failed to execute request + Kann Anfrage nicht ausführen. + + + + MTicketView + + + Preview Tickets + Karten-Vorschau + + + + MUser + + + User not valid: cannot delete. + Ungültiger Nutzer: kann nicht gelöscht werden. + + + + MVoucher + + + invalid + ungültig + + + + cancelled + storniert + + + + empty + leer + + + + used + benutzt + + + + unused + unbenutzt + + + + Voucher is not stored, can't return it. + Gutschein ist nicht gespeichert, kann ihn nicht zurückgeben. + + + + Failed to execute request + Kann Anfrage nicht ausführen. + + + + MWebRequest + + + Unable to get server info. + Serverdaten können nicht gelesen werden. + + + + Error while parsing server info (line %1 col %2): %3 + Fehler beim Lesen der Serverdaten (Zeile %1, Spalte %2): %3 + + + + Error in server info: missing authentication algorithm info. + Fehler in Serverdaten: Authentifikationsalgorithmus fehlt. + + + + The server requested an unsupported hash algorithm: %1. + Der Server verlangt einen nicht unterstützten Algorithmus (%1). Kann nicht fortsetzen. + + + + Unable to get authentication challenge. + Authentifikation fehlgeschlagen (es wurde kein Challenge angeboten). + + + + Error while parsing session challenge (line %1 col %2): %3 + Fehler beim Lesen der Authentifikationsdaten (Challenge; Zeile %1, Spalte %2): %3 + + + + Error in session challenge: missing session ID. + Fehler in Authentifikationsdaten (Challenge): Session-ID fehlt. + + + + Error in session challenge: missing host challenge. + Fehler in Authentifikationsdaten (Challenge): Host-Challenge fehlt. + + + + Error in session challenge: missing user challenge. + Fehler in Authentifikationsdaten (Challenge): Nutzer-Challenge fehlt. + + + + Failed to log in: user/password mismatch, non-allowed host key, or challenge timed out. + Authentifikation fehlgeschlagen: Passwort ist falsch, Host ist nicht zugelassen oder Challenge-Timeout. + + + + Unable to authenticate. + Authentifikation fehlgeschlagen. + + + + Error parsing EventList XML data (line %1 column %2): %3 + Fehler beim Lesen der XML-Daten (Zeile %1, Spalte %2): %3 + + + + Cannot change password, old password does not match! + Passwort kann nicht geändert werden: altes Passwort ist falsch. + + + + Error parsing RoomList XML data (line %1 column %2): %3 + Fehler beim Lesen der Daten (RoomList; Zeile %1, Spalte %2): %3 + + + + Error parsing UserList XML data (line %1 column %2): %3 + Fehler beim Lesen der Daten (UserList; Zeile %1, Spalte %2): %3 + + + + Error parsing HostList XML data (line %1 column %2): %3 + Fehler beim Lesen der Daten (HostList; Zeile %1, Spalte %2): %3 + + + + Error parsing CustomerList XML data (line %1 column %2): %3 + Fehler beim Lesen der Daten (CustomerList; Zeile %1, Spalte %2): %3 + + + + Error parsing OrderList XML data (line %1 column %2): %3 + Fehler beim Parsen der XML-Daten (Zeile %1, Spalte %2): %3 + + + + Error parsing ShippingList XML data (line %1 column %2): %3 + Fehler beim Lesen der Daten (ShippingList; Zeile %1, Spalte %2): %3 + + + + Order + + + create order + Bestellung anlegen + + + + invalidvalue + voucher state + Gutscheinwert nicht zulässig + + + + invalidprice + voucher state + Gutscheinpreis nicht zulässig + + + + Shipping type not available to user. + Diese Versandoption ist privilegierten Nutzern vorbehalten. + + + + Illegal shipping type. + Ungültige Versandoption. + + + + order cancelled + Bestellung storniert + + + + reservation to order + Reservierung zu Bestellung gewandelt + + + + Session + + + unable to parse XML data + Kann XML Daten nicht parsen + + + + missing some authentication data + Authentifikationsdaten sind unvollständig + + + + Not authenticated. Can't change password. + Nicht authentifiziert, Passwort kann nicht geändert werden. + + + + expected exactly one passwd element + Nur 1 "passwd" Element erwartet. + + + + cannot set an empty password + Leeres Passwort kann nicht gesetzt werden + + + + Ooops. Unable to find user. You have been deleted. + Ups. Sie wurden gelöscht. + + + + Wrong password. Session hijacked, terminating it. + Falsches Passwort. Session wird beendet. + + + + SpecialHost + + + _any + beliebiger (auch unregistrierter) Host + + + + _anon + Anonym - beliebiger registrierter Host + + + + _online + Web-Präsenz + + + + Ticket + + + The ticket is not valid. + Die Karte ist nicht gültig. + + + + The ticket has already been used. + Die Karte wurde bereits benutzt. + + + + The ticket has not been bought or is cancelled. + Die Karte wurde nicht gekauft oder ist zurückgegeben. + + + + The ticket has not been paid. + Die Karte ist nicht bezahlt. + + + + The tickets order is in an invalid state or does not exist. + Die Bestellung dieser Karte ist in einem ungültigen Zustand oder existiert nicht. + + + + TransactionNames:: + + + serverinfo + Serverinformationen + + + + startsession + Session beginnen + + + + sessionauth + Session authentifizieren + + + + closesession + Sessen beenden + + + + getmyroles + meine Rollen herausfinden + + + + getusers + Nutzer abfragen + + + + setuserdescription + Nutzerkommentar setzen + + + + getuseracl + Nutzerrechte abfragen + + + + setuseracl + Nutzerrechte setzen + + + + getuserhosts + erlaubte Hosts eines Nutzers abfragen + + + + setuserhosts + erlaubte Hosts eines Nutzers setzen + + + + adduser + neue Nutzer anlegen + + + + deleteuser + Nutzer löschen + + + + setmypasswd + eigenes Passwort ändern + + + + setpasswd + Passwort eines anderen Nutzers ändern + + + + gethosts + Hosts abfragen + + + + sethost + Hosts anlegen + + + + addhost + Neue Hosts anlegen + + + + deletehost + Hosts löschen + + + + geteventlist + Liste der Veranstaltungen abfragen + + + + geteventdata + Veranstaltungsdetails abfragen + + + + seteventdata + Veranstaltungsdetails ändern + + + + eventsummary + Veranstaltungübersicht + + + + cancelevent + Veranstaltung abbrechen + + + + getroomdata + Raumdaten abfragen + + + + setroomdata + Raumdaten setzen + + + + getcustomerlist + Kundenliste abfragen + + + + getcustomer + Kunde abfragen + + + + setcustomer + Kunde anlegen + + + + deletecustomer + Kunden löschen/ersetzen + + + + checkorder + Bestellung testen + + + + createorder + Bestellung anlegen + + + + createsale + Verkaufen + + + + getorderlist + Liste der Bestellungen abfragen + + + + getorder + Bestellung: Details abfragen + + + + orderpay + Bestellung bezahlen + + + + orderrefund + Bestellung: Geld zurück geben + + + + ordershipped + Bestellung als verschickt markieren + + + + cancelorder + Bestellung stornieren + + + + orderbyticket + Bestellung mit Ticket finden + + + + getordersbyevents + Bestellungen finden, die Veranstaltung enthalten + + + + setordercomment + Bestellkommentar (in angelegter Bestellung) ändern + + + + getticket + Ticket abrufen + + + + useticket + Ticket entwerten + + + + changeticketprice + Ticketpreis ändern + + + + ticketreturn + Ticket zurückgeben + + + + gettemplatelist + Vorlagenliste abfragen + + + + gettemplate + Vorlage abfragen + + + + settemplate + Vorlage erstellen + + + + _admin + Alle Rechte, Administrator + + + + _anyshipping + Nutzer darf beliebige (auch privilegierte) Versandmethode benutzen + + + + _repriceshipping + Beliebigen Versandpreis festlegen + + + + createreservedorder + Reservierung anlegen + + + + orderchangeshipping + Versandoption einer Bestellung ändern + + + + reservationtoorder + Reservierung in Bestellung wandeln + + + + reservationtosale + Reservierung in Verkauf wandeln + + + + getshipping + Versandoptionen holen + + + + setshipping + Versandoptionen ändern/anlegen + + + + deleteshipping + Versandoptionen löschen + + + + getvoucherprices + Gutscheinpreise abfragen (zB. für Bestellformular) + + + + cancelvoucher + Gutschein zurückgeben + + + + emptyvoucher + Gutschein ungültig machen + + + + usevoucher + Gutschein benutzen (damit bezahlen) + + + + getvoucher + Gutschein abfragen + + + + settemplatedescription + Vorlagenbeschreibung ändern/setzen + + + + deletetemplate + Vorlage löschen + + + + _anyvoucher + Gutscheine mit beliebigem Wert anlegen + + + + _anypricevoucher + Gutscheine anlegen bei denen Preis und Wert unterschiedlich sind + + + + _explicitshipdate + eine beliebige Zeit/Datum setzen, wenn Bestellungen versandt werden (statt aktueller Zeit/Datum) + + + + usevoucheroutside + Gutschein außerhalb des Systems nutzen (Geld ohne Bestellung abziehen) + + + + backup + Sicherungskopie anlegen + + + + moneylog + Geldtransfers anzeigen + + + + Voucher + + + cancel voucher + Gutschein zurückgegeben + + + + empty voucher + Gutschein entleert + + + + create voucher + Gutschein angelegt + + + + pay with voucher + mit Gutschein bezahlt + + + + pay with voucher outside system + mit Gutschein außerhalb des Systems bezahlt + + + + initkey + + + Warning + Warnung + + + + Magic Smoke needs a host key. You have to generate one before you can use the program. + MagicSmoke braucht einen Hostkey. Sie müssen einen Hostkey generieren bevor das Programm benutzt werden kann. + + + + Enter Host Name + Bitte Hostnamen eingeben + + + + Host name: + Hostname: + + + + Magic Smoke needs a host name. You have to configure one before you can use the program. + MagicSmoke braucht einen Hostnamen. Sie müssen einen Hostnamen eingeben bevor das Programm benutzt werden kann. + + + + initprofile + + + default + initial profile + Standardprofil + + + + Create Initial Profile + Initiales Profil anlegen + + + + You need a profile to work with Magic Smoke. Magic Smoke will now create one for you. Please enter the name you wish to give this profile. + MagicSmoke braucht mindestens ein Profil um benutzt zu werden. Es wird nun eines generieren. Bitte geben Sie einen Namen für das Profil ein: + + + + lang + + + Information + Information + + + + The changed language setting will only be active after restarting the application. + Die Änderung der Sprachkonfiguration wird es nach dem nächsten Neustart des Programms wirksam. + + + + Chose Language + Sprache auswählen + + + + Language: + Sprache: + + + + misc + + + %1.%2 + price with decimal dot + %1,%2 + + + + . + decimal dot in price + , + + + + [0-9]+\.[0-9]{2} + regexp for price + [0-9]+,[0-9]{2} + + + + yyyy-MM-dd + localized date format + d.M.yyyy + + + + hh:mm + localized time format + hh:mm + + + + yyyy-MM-dd hh:mm + localized date + time format + ddd, dd.MM.yyyy hh:mm 'Uhr' + + + + office + + + Chose Printer + Drucker auswählen + + + + Please chose a printer: + Bitte wählen Sie einen Drucker: + + + + (Default Printer) + (Standarddrucker) + + + + Ok + Ok + + + + Save current document as... + Aktuelles Dokuement speichern unter... + + + + php:: + + + Unknown Customer + Unbekannter Kunde + + + + Unable to parse XML. + Kann XML Daten nicht parsen. + + + + Cannot find customer ID to delete. + Kann zu löschende Kundennummer nicht finden. + + + + Invalid Customer ID, cannot delete. + Ungültige Kundennummer kann nicht gelöscht werden. + + + + Invalid Customer ID, cannot merge. + Ungültige Kundennummer kann nicht vereint werden. + + + + Cannot find Customer ID, cannot delete. + Kann zu löschende Kundennummer nicht finden. + + + + Cannot merge customers. + Kann Kunden-Einträge nicht vereinen. + + + + Cannot delete customer. + Kann Kunde nicht löschen. + + + + Malformed request. + Fehlerhaftes Anfrageformat. + + + + The event id must be numeric. + Die Veranstaltungsnummer muss numerisch sein. + + + + Invalid event id. + Ungültige Veranstaltungsnummer. + + + + Cannot place order, sorry. + Kann Bestellung nicht anlegen. + + + + Cannot place sale, sorry. + Kann Verkauf nicht anlegen. + + + + Internal Error: unknown action. + Interner Fehler: unbekannte Aktion. + + + + No such orderID in database. + Diese Bestellnummer existiert nicht in der Datenbank. + + + + Expected 2 arguments. + 2 Argumente erwartet. + + + + Invalid Order ID + Ungültige Bestellnummer. + + + + Expected positive amount. + Die Anzahl muss eine positive Zahl sein. + + + + Order does not exist. + Bestellung existiert nicht. + + + + Order cannot be changed, it is closed. + Die Bestellung kann nicht geändert werden, da sie bereits geschlossen ist. + + + + Order ID must be numeric. + Bestellnummer muss numerisch sein. + + + + Order ID is invalid. + Bestellnummer ist ungültig. + + + + Wrong state, cannot set order to shipped. + Kann Bestellung nicht auf "versandt" setzen: sie ist im falschen Ausgangszustand. + + + + Wrong state, cannot set order to cancelled. + Kann Bestellung nicht auf "abgebrochen" setzen: sie ist im falschen Ausgangszustand. + + + + Ticket not found. + Karte nicht gefunden. + + + + Ticket has no order. + Karte hat keine Bestellung. + + + + The ticket is not valid. + Die Karte ist nicht gültig. + + + + The ticket has already been used. + Die Karte wurde bereits benutzt. + + + + The ticket has not been bought or is cancelled. + Die Karte wurde nicht gekauft oder ist zurückgegeben. + + + + The ticket has not been paid. + Die Karte ist nicht bezahlt. + + + + The tickets order is in an invalid state or does not exist. + Die Bestellung dieser Karte ist in einem ungültigen Zustand oder existiert nicht. + + + + Unable to find this ticket. + Kann diese Karte nicht finden. + + + + Price must be a number. + Der Preis muss eine Zahl sein. + + + + Price must be positive. + Der Preis muss positiv sein. + + + + Ticket cannot be returned. + Karte kann nicht zurückgegeben werden. + + + + unable to parse XML data + Kann XML Daten nicht parsen + + + + Cannot delete special hosts. + Spezialhosts können nicht gelöscht werden. + + + + missing some authentication data + Authentifikationsdaten sind unvollständig + + + + Not authenticated. Can't change password. + Nicht authentifiziert, Passwort kann nicht geändert werden. + + + + expected exactly one passwd element + Nur 1 "passwd" Element erwartet. + + + + cannot set an empty password + Leeres Passwort kann nicht gesetzt werden + + + + Ooops. Unable to find user. You have been deleted. + Ups. Sie wurden gelöscht. + + + + Wrong password. Session hijacked, terminating it. + Falsches Passwort. Session wird beendet. + + + + invalid user name + Falscher Nutzername. + + + + expected exactly 1 ACL element + Clientfehler: es wurde nur 1 ACL Element erwartet. + + + + unknown user name + Unbekannter Nutzer. + + + + expected exactly 1 Hosts element + Clientfehler: es wurde nur 1 Hosts Element erwartet. + + + + Syntax Error + Syntaxfehler + + + + Cannot remove user: DB error while deleting ACL. + Kann Nutzer nicht löschen: Datenbankfehler beim Löschen der Zugriffsrechte. + + + + Cannot remove user: unable to replace user. + Kann Nutzer nicht löschen: kann Nutzer nicht ersetzen. + + + + Cannot remove user: DB error while deleting user. + Kann Nutzer nicht löschen: Datenbankfehler beim Löschen. + + + + Unable to change this password. + Dieses Passwort kann nicht geändert werden. + + + + Template File not found in database + Vorlage kann nicht gefunden werden. + + + + Unable to find file name + Dateiname kann nicht gefunden werden. + + + + Illegal File Name + Illegaler Dateiname + + + + Invalid Request, please use the MagicSmoke Client with this page. + Interner Fehler: Fehlerhafte Anfrage - bitte einen aktuellen MagicSmoke Client benutzen. + + + + Invalid or missing sessionid, or session timed out. + Die Session kann nicht benutzt werden. Bitte neu anmelden. + + + + Session not yet authenticated. + Die Session ist noch nicht authentifiziert. + + + + You do not have the right to execute this transaction. + Sie haben nicht das Recht diese Transaktin durchzuführen. + + + + Internal Error: unknown command, hiccup in code structure. + Interner Fehler: unbekanntes Kommando, Fehler in Code-Struktur. Bitte melden Sie diesen Fehler und wie es dazu kam dem Programmierer. + + + + invalidvalue + voucher state + Gutscheinwert nicht zulässig + + + + invalidprice + voucher state + Gutscheinpreis nicht zulässig + + + + Shipping type not available to user. + Diese Versandoption ist privilegierten Nutzern vorbehalten. + + + + Illegal shipping type. + Ungültige Versandoption. + + + + Order cannot be paid for, it is only a reservation. Order or sell it first! + Dies ist eine Reservierung: kann keine Bezahlung annehmen solange sie nicht bestellt wurde. + + + + Unable to update order comment. + Kann Bestellkommentar nicht ändern. + + + + Invalid Order. + Ungültige Bestellung. + + + + Invalid Shipping Method. + Ungültige Versandoption. + + + + Unable to create new shipping method. + Kann neue Versandoption nicht anlegen. + + + + Unable to change shipping method. + Kann Versandoption nicht ändern. + + + + Expected a numeric shipping ID. + Erwarte numerische Versandoptionsnummer. + + + + Unable to delete shipping method. + Kann Versandoption nicht löschen. + + + + Cannot change order from reservation. + Kann Reservierung nicht wandeln. + + + + Template file does not exist + Vorlage existiert nicht. + + + + Unable to cancel voucher. + Kann Gutschein nicht zurückgeben. + + + + Invalid voucher, cannot empty it. + Ungültiger Gutschein, er kann nicht geleert werden. + + + + Expected two arguments: voucher id and order id. + Es wurden zwei Argumente erwartet: Gutschein-ID und Bestell-ID. + + + + Invalid voucher id. + Ungültige Gutschein-ID. + + + + Unable to process payment via voucher. + Die Bezahlung per Gutschein kann nicht durchgeführt werden. + + + + Invalid voucher ID. + Ungültige Gutschein-ID. + + + + create order + Bestellung angelegt + + + + order cancelled + Bestellung storniert + + + + reservation to order + Reservierung zu Bestellung gewandelt + + + + payment + Bezahlung + + + + refund + Geldrückgabe + + + + Ticket or Voucher not found. + Karte oder Gutschein nicht gefunden. + + + + Ticket/Voucher has no order. + Karte/Gutschein hat keine Bestellung. + + + + shipping changed + Versand geändert + + + + Expected 2 arguments: query type and ID. + 2 Argumente erwartet: Anfragetyp und ID. + + + + Invalid Query Type. + Ungültige Anfrage. + + + + cancel voucher + Gutschein zurückgegeben + + + + empty voucher + Gutschein entleert + + + + create voucher + Gutschein angelegt + + + + pay with voucher + mit Gutschein bezahlt + + + + pay with voucher outside system + mit Gutschein außerhalb des Systems bezahlt + + + + Expected two arguments: voucher id and amount to deduct. + 2 Argumente erwartet: Gutscheinnummer und Betrag. + + + + Unknown Host + + + + + Host/User combination not allowed + + + + + Host authentication failed + + + + + User Authentication failed + + + + + Ooops. Internal storage error - cannot verify old password. + + + + + Wrong password. Request denied. + + + + diff --git a/www/translations/server_en.ts b/www/translations/server_en.ts new file mode 100644 index 0000000..5a31ccb --- /dev/null +++ b/www/translations/server_en.ts @@ -0,0 +1,966 @@ + + + + MBackupDialog + + + MCentDialog + + + MCheckDialog + + + MCustomerDialog + + + MCustomerListDialog + + + MEvent + + + MEventEditor + + + MEventSummary + + + MKeyGen + + + Current random buffer: %n Bits + + Current random buffer: %n Bit + Current random buffer: %n Bits + + + + + MLabelDialog + + + MMainWindow + + + MMoneyLog + + + MOfficeConfig + + + MOrder + + + MOrderItemView + + + MOrderWindow + + + MOverview + + + The key of this new host could only be generated with %n bits entropy. Store anyway? + + The key of this new host could only be generated with %n bit of entropy. Store anyway? + The key of this new host could only be generated with %n bits of entropy. Store anyway? + + + + + The new key of this host could only be generated with %n bits entropy. Store anyway? + + The key of this new host could only be generated with %n bit of entropy. Store anyway? + The key of this new host could only be generated with %n bits of entropy. Store anyway? + + + + + MPasswordChange + + + MShippingChange + + + MShippingEditor + + + MTemplateChoice + + + MTemplateEditor + + + MTemplateStore + + + MTicket + + + MUser + + + MVoucher + + + MWebRequest + + + Order + + + Session + + + SpecialHost + + + _any + any host (even unregistered ones) + + + + _anon + any registered host + + + + _online + web system + + + + Ticket + + + TransactionNames:: + + + serverinfo + basic server information (implicitly granted) + + + + startsession + start a session (implicitly granted) + + + + sessionauth + authenticate to the server (implicitly granted) + + + + closesession + end my own session + + + + getmyroles + retrieve the roles/privileges I have + + + + getusers + get a list of all (system) users existing at the system + + + + setuserdescription + get description of a user + + + + getuseracl + get the roles/privileges of any user + + + + setuseracl + set the roles/privileges of any user + + + + getuserhosts + get the hosts a user may connect from + + + + setuserhosts + set the hosts a user may connect from + + + + adduser + add a new user + + + + deleteuser + delete a user + + + + setmypasswd + set my own password + + + + setpasswd + set the password of any user + + + + gethosts + get all hosts that are known to the system + + + + sethost + change a host + + + + addhost + add a new host to the system + + + + deletehost + delete a host + + + + geteventlist + get a list of events (overview) + + + + geteventdata + get detailed event data + + + + seteventdata + change/create an event + + + + eventsummary + get summary data for a specific event + + + + cancelevent + cancel an event + + + + getroomdata + get detailed data about a room + + + + setroomdata + change/create a room + + + + getcustomerlist + get a list of customers + + + + getcustomer + get detailed information about a customer + + + + setcustomer + change/create a customer + + + + deletecustomer + delete a customer + + + + checkorder + check whether an order would succeed in ordering or selling + + + + createorder + create an order (as pre-ordered, unpaid items) + + + + createsale + create an order as sold and paid items + + + + getorderlist + get a list of orders (overview) + + + + getorder + get details about an order + + + + orderpay + pay for an order + + + + orderrefund + refund money from a cancelled or overpaid order + + + + ordershipped + mark an order as being shipped + + + + cancelorder + cancel an order + + + + orderbyticket + find an order by one of the tickets it contains + + + + getordersbyevents + get a list of all orders that contain tickets for an event + + + + setordercomment + change the comment of an order + + + + getticket + get details about a ticket + + + + useticket + mark a ticket as used + + + + changeticketprice + change the price of a specific ticket (automatically changes price of the order) + + + + ticketreturn + return a ticket unused + + + + gettemplatelist + get a list of templates stored at the server (necessary for printing) + + + + gettemplate + get a specific template (necessary for printing) + + + + settemplate + store a new template at the server + + + + _admin + administrator, implies all other privileges + + + + _anyshipping + user has the right to use any shipping method + + + + _repriceshipping + user has the right to change the shipping price of an order regardless of shipping type + + + + createreservedorder + create an order as reservation (tickets blocked, but not usable until really ordered) + + + + orderchangeshipping + change the shipping method of an order + + + + reservationtoorder + change a reservation into a normal order + + + + reservationtosale + change a reservation into a sale (order that is already paid) + + + + getshipping + get shipping methods + + + + setshipping + create/change shipping methods + + + + deleteshipping + delete a shipping method + + + + getvoucherprices + get the allowed voucher prices + + + + cancelvoucher + cancel (give back) a voucher (price and value go to zero) + + + + emptyvoucher + make a voucher invalid (remaining value goes to zero, price remains) + + + + usevoucher + use a voucher to pay for an order + + + + getvoucher + get details about a voucher + + + + settemplatedescription + set a new description for a template + + + + deletetemplate + delete a template (variant) + + + + _anyvoucher + user may create vouchers with any value/price + + + + _anypricevoucher + user may create vouchers for which price and value differ + + + + _explicitshipdate + user may set an explicit shipping date/time when marking an order as shipped (default: current date/time) + + + + Voucher + + + initkey + + + initprofile + + + lang + + + misc + + + office + + + php:: + + + Unknown Customer + + + + + Unable to parse XML. + + + + + Cannot find customer ID to delete. + + + + + Invalid Customer ID, cannot delete. + + + + + Invalid Customer ID, cannot merge. + + + + + Cannot find Customer ID, cannot delete. + + + + + Cannot merge customers. + + + + + Cannot delete customer. + + + + + Malformed request. + + + + + The event id must be numeric. + + + + + Invalid event id. + + + + + Cannot place order, sorry. + + + + + Cannot place sale, sorry. + + + + + Internal Error: unknown action. + + + + + No such orderID in database. + + + + + Expected 2 arguments. + + + + + Invalid Order ID + + + + + Expected positive amount. + + + + + Order does not exist. + + + + + Order cannot be changed, it is closed. + + + + + Order ID must be numeric. + + + + + Order ID is invalid. + + + + + Wrong state, cannot set order to shipped. + + + + + Wrong state, cannot set order to cancelled. + + + + + Unable to find this ticket. + + + + + Price must be a number. + + + + + Price must be positive. + + + + + Ticket cannot be returned. + + + + + unable to parse XML data + + + + + Cannot delete special hosts. + + + + + expected exactly one passwd element + + + + + cannot set an empty password + + + + + invalid user name + + + + + expected exactly 1 ACL element + + + + + unknown user name + + + + + expected exactly 1 Hosts element + + + + + Syntax Error + + + + + Cannot remove user: DB error while deleting ACL. + + + + + Cannot remove user: unable to replace user. + + + + + Cannot remove user: DB error while deleting user. + + + + + Unable to change this password. + + + + + Template File not found in database + + + + + Unable to find file name + + + + + Illegal File Name + + + + + Order cannot be paid for, it is only a reservation. Order or sell it first! + + + + + Unable to update order comment. + + + + + Invalid Order. + + + + + Invalid Shipping Method. + + + + + Unable to create new shipping method. + + + + + Unable to change shipping method. + + + + + Expected a numeric shipping ID. + + + + + Unable to delete shipping method. + + + + + Cannot change order from reservation. + + + + + Template file does not exist + + + + + Unable to cancel voucher. + + + + + Invalid voucher, cannot empty it. + + + + + Expected two arguments: voucher id and order id. + + + + + Invalid voucher id. + + + + + Unable to process payment via voucher. + + + + + Invalid voucher ID. + + + + + payment + + + + + refund + + + + + Ticket or Voucher not found. + + + + + Ticket/Voucher has no order. + + + + + shipping changed + + + + + Expected 2 arguments: query type and ID. + + + + + Invalid Query Type. + + + + + Expected two arguments: voucher id and amount to deduct. + + + + + create order + + + + + invalidvalue + voucher state + + + + + invalidprice + voucher state + + + + + Shipping type not available to user. + + + + + Illegal shipping type. + + + + + order cancelled + + + + + reservation to order + + + + + The ticket is not valid. + + + + + The ticket has already been used. + + + + + The ticket has not been bought or is cancelled. + + + + + The ticket has not been paid. + + + + + The tickets order is in an invalid state or does not exist. + + + + + cancel voucher + + + + + empty voucher + + + + + create voucher + + + + + pay with voucher + + + + + pay with voucher outside system + + + + + Unknown Host + + + + + Host/User combination not allowed + + + + + Host authentication failed + + + + + User Authentication failed + + + + + Ooops. Unable to find user. You have been deleted. + + + + + Ooops. Internal storage error - cannot verify old password. + + + + + Wrong password. Request denied. + + + + diff --git a/www/translations/unify.xsl b/www/translations/unify.xsl new file mode 100644 index 0000000..6ab6e82 --- /dev/null +++ b/www/translations/unify.xsl @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + 1.1 + + + php:: + + + + + + + \ No newline at end of file