Na Gott sei Dank.
Beiträge von milupo
-
-
Hallo Leute,
tut mir leid, dass da ein Missgeschick passiert ist und dass ich erst so spät antworte. Ich war den ganzen Vormittag außer Haus, bin erst vor einer dreiviertel Stunde wieder zurückgekommen und habe mich gleich über das Problem hergemacht.
Ich weiß nicht, was da passiert ist. Es stimmt, dass die Datei nach dem Herunterladen angeblich nur 1 KB groß war. Auf meinem Server stehen aber 272925 Bytes. Auch beim Namen habe ich mir die Augen ausgeguckt, allerdings konnte es auch daran nicht liegen, denn per Kontextmenü konnte man sie ja herunterladen. Eigentlich habe ich sie ja gestern probeinstalliert. Es muss irgendwas beim Hochladen auf den Server passiert sein. Ich habe die Datei noch mal neu gepackt und jetzt scheint es zu funktionieren. Bevor ich hier beim Neuschreiben noch einen Fehler mache, klickt einfach nochmal auf den ersten Link weiter oben. Der müsste jetzt auch bei einfachem Linksklick funktionieren.
Verzeiht mir bitte, aber manchmal läuft eben etwas schief.
Grüße
milupo -
Hallo Leute,
die deutsche Version 0.4 von Self-Destructing Cookies ist verfügbar. Da die meisten Strings darin hardcodiert sind, lässt sich diese übersetzte Version nur auf Deutsch verwenden. Lediglich die Strings der Einstellungen sind lokalisierbar. Möglicherweise habe ich nicht alle übersetzbaren Strings erwischt.
Hier also der Downloadlink:
Deutsche Spezialversion
Download oder Direktinstallation: Self-Destructing Cookies 0.4 deutsch spezialDiese Spezialversion wird in die Liste am Anfang dieses Threads aufgenommen.
Verwendung dieser Spezialversion wie immer auf eigene Gefahr. Und nun viel Spaß damit.
Grüße
milupo
-
Endor hat doch noch einige unübersetzte Strings gefunden, in den Einstellungen der Erweiterung hinter Statistik anzeigen.
Daher gibt es eine überarbeitete deutsche Version:
Self-destructing Cookies 0.3.7 deutsch spezial.
Vielen Dank an Endor.
Grüße
milupo -
Hallo Andreas,
warum willst du das machen? Dann weißt du doch nicht mehr, welches Zeichen eine Zugriffstaste ist.
Ich habe nur eine vage Idee für dich:
In einer .xul-Dateit haben Menüeintrage ja das Element menuitem und das Attribut accesskey. Du könntest jetzt mal testen, ob die Anweisung
mit userChrome.css oder Stylish funktioniert. Wie gesagt, ist nur so eine vage Idee.
Grüße
milupo -
Ja, ist erst Sonntag, so weit geht die Forumuhr doch (noch?) nicht vor.

Schön, dass die Übersetzung gut funktioniert. Wenn du Strings findest, die noch unübersetzt sind, melde dich.
Grüße
milupo -
DAs Forum geht 50 Minuten vor.
-
Und ich habe mich schon gewundert, Boersenfeger, dass ich deinen Beitrag im Übersetzungsthread gelesen habe, bevor du ihn geschrieben hast.

-
Hallo Boersenfeger, hallo Endor,
ich habe doch eine erste übersetzte Version von Self-Destructing Cookies 0.3.7 zusammenschustern können. Da es zig JavaScript-Dateien gibt, und wie es aussieht, alle übersetzbaren Strings darin hardcodiert sind, lässt sich diese übersetzte Version nur auf Deutsch verwenden. Lediglich die Strings der Einstellungen sind lokalisierbar. Möglicherweise habe ich nicht alle übersetzbaren Strings erwischt.
Hier also der Downloadlink:
Deutsche Spezialversion
Download oder Direktinstallation: Self-Destructing Cookies 0.3.7 deutsch spezialDiese Spezialversion wird in die Liste am Anfang dieses Threads aufgenommen.
Verwendung dieser Spezialversion wie immer auf eigene Gefahr. Und nun viel Spaß damit.
Grüße
milupo -
Hallo Leute, NoSquint 2.1.9 für Fx 20.0 bis 21.* ist erschienen und es gibt natürlich auch wieder von uns eine deutsche Übersetzung dafür.
Hier also der Downloadlink:
Deutsche Spezialversion
Download oder Direktinstallation: NoSquint 2.1.9 deutschDiese Spezialversion wird in die Liste am Anfang dieses Threads aufgenommen.
Verwendung dieser Spezialversion wie immer auf eigene Gefahr. Und nun viel Spaß damit.
Grüße
milupo -
Es macht auch nicht jeder Add-on-Entwickler sein Add-on per Add-on-SDK. Solche Add-ons erkennst du meist durch den Zusatz KEIN NEUSTART. Und ich denke mal, wenn sich die Add-on-Entwickler bemühen, ein englisches Locale anzugeben, ist das auch nicht mehr so schwer, da eine Übersetzung herbeizuzaubern. Wir wissen sicherlich auch noch zuwenig darüber. Aus den Entwicklerseiten (u.a. aus der, die Endor angegeben hat) wird man nicht so richtig schlau. Wenn die Add-on-Entwickler auf Babelzilla oder anderswo eine Möglichkeit zur Übersetzung bereitstellen, ist das auch kein Problem. Wir behandeln hier ja sowieso nur die Sonderfälle, wo keine oder keine aktuelle Übersetzung vorliegt. Ich meine Coolpreviews hat sich schon jahrelang nicht um ein englisches Locale gekümmert, die Erweiterung ist immer noch hardcodiert. Aber ich konnte eigentlich relativ bequem mir die Strings aus den xul-Dateien und den JS-Dateien herausfischen. Neues Locale, in der chrome.manifest registriert, xpi gepackt und gut is.
-
Endor: Nein, die Erweiterung wird nicht helfen. Dazu müsste ja erst einmal eine .properties-Datei vorhanden sein, die dann aktualisiert wird. Aus der Seite werde ich auch nicht schlau, aber ich habe den Eindruck, dass die eigentlich für die Erweiterungsautoren gedacht ist. Und unten der vorletzte Punkt unter LIMITATIONS ist der größte Schwachsinn überhaupt:
ZitatThe SDK tools compile the locale files into a JSON format when producing an XPI. This means that translators can't localize an add-on given the XPI alone, but must be given access to the add-on source.
Als Übersetzer musst du jetzt auf den Quellcode des Add-ons haben. Den hätte ich aus so, aber wo soll man denn suchen, um die Strings zu finden? Ich hoffe, dass man wenigstens dann den letzten Punkt bald einführt: diesen Befehl, der die zu übersetzenden Strings extrtahiert und eine Vorlagen-.properties-Datei anlegt. Es scheint, man muss jetzt Programmierer sein, um übersetzen zu können. Schwachsinn hoch drei.
Boersenfeger: Die Kopfschmerzen bereitest nicht du uns, sondern die Leute, die sich diesen Schwachsinn ausgedacht haben.
Grüße
milupo -
Kann ich dir nicht sagen, wie gesagt, ich habe nicht viel Ahnung. Musst du testen. Eine break-Anweisung unterbricht den Ablauf eines Vorgangs. Möglicherweise musst du vielleicht auch einen anderen Schleifentyp wählen. Aber wie gesagt, das sind nur unausgegorene Ideen von mir.
-
Ich habe eigentlich davon keine Ahnung, aber versuche es mal mit einer "break"-anweisung am Ende der Funktion.
-
Das ist dieser scheiß Add-on-SDK-Dreck. Irgendein Autor schustert da was zusammen und siehe mal zu, wie du es übersetzt. Dieses blöde Add-on-SDK haben bestimmt Amis ausgeheckt, denen noch niemand gesagt hat, dass es noch andere Sprachen als Englisch auf der Welt gibt.
-
Hallo Sören, danke für die Antwort. Ich habe nicht viel Ahnung von JavaScript. Ich hatte schon mal ein bisschen getestet und auch gegoogelt, aber nicht so das Passende gefunden. Dern Skriptautor habe ich auch angeschrieben, der konnte mir für den Moment auch nicht helfen. Ich stehe mometan hier an vorderster Front, denn das Ausgangsskript hat nur ca. 200 Strings und ich habe es schon mächtig ausgebaut. d.h. ich entdecke Probleme, die der Skriptautor noch gar nicht kennt. Ich hatte schon mal versucht, den div-Code auf textarea umzuschreiben, in der Hoffnung, es geht ohne Erwähnung des placeholder-Attributs. Nun gut, ich versuche nochmal mit deinem Tipp zu experimentieren.
Vielen Dank nochmals.
Grüße
milupo -
Hallo Leute, ich brauche mal eure Hilfe.
Ich habe hier ein GreaseMonkey-Skript, mit dem ich die Oberfläche von Facebook ins Obersorbische bzw. Niedersorbische übersetzen kann, obwohl diese beiden Sprachen von FB nicht unterstützt werden. Das Skript setzt auf Deutsch auf.
Am Anfang des Skripts werden 3 Arrays für die verwendeten HTML-Tags, die DIV-Klassen und die SPAN-Klasssen definiert. Am Ende des Skripts steht der entsprechende JS-Sourcecode. In der Mitte des SKripts werden die Strings mit dem deutschen Original-Text und dem zu verwendenden sorbischen Text erfasst. Die deutschen Original-Strings werden also bei FB ausgelesen und durch die sorbischen Strings ersetzt. Das klappt ganz gut, manchmal ohne Nutzung einer CSS-Klasse, manchmal mit Nutzung einer CSS-Klasse eines DIV-Elements und manchmal mit Hilfe einer CSS-Klasse eines SPAN-Elements. Dafür die oben erwähnten drei Arrays.
Es gibt jedoch einen Spezialfall, der sich hartnäckig weigert zu funktionieren. Das ist, wenn der Originalstring aus einem HTML-Attribut ausgelesen wird, das sind meistens die HTML5-Attribute placeholder und aria-label für die Tags TEXTAREA und INPUT. Teilweise ist auch zusätzlich noch das Attribut title angegeben, das, obwohl hier der String ebenfalls in einem Attribut steht, funktioniert. Aber eben nur als Tooltip. Da ich bei TEXTAREA placeholder="" bzw. INPUT placeholder="" Platzhaltertext habe, der den Tooltip-Text überlagert, steht dann immer der unübersetzte Text drüber und nur der Tooltip-Text wird bei Mouseover übersetzt angezeigt, sofern vorhanden.
Ich hoffe nun, dass ihr ein Häppchen JS-Code für mein Skript habt, um die Attribute placeholder und aria-label auslesen zu können.
Das Skript ist stark verkürzt, im Original hat es momentan 1905 Zeilen. Lediglich der Quellcode am Ende dieses Code-Fensters hier ist vollständig. Als String-Beispiel ist lediglich der hartnäckige String "Was machst du gerade?" angegeben, der sich auf der FB-Startseite in der Mitte oben als Platzhaltertext im Statusfeld befindet. Er steht als Text im placeholder-Attribut eines TEXTAREA-Tags.
Vielen Dank im voraus.
milupo
Code
Alles anzeigenvar tags = new Array(); tags.push('h2'); //tags.push('h3'); // Friend Requests, Notifications, ... tags.push('h4'); // Sponsored, Ticker, ... tags.push('h5'); // new in Sept 2012 for "was tagged in...", "added %d new photos", etc. tags.push('h6'); // %a commented on %a. tags.push('label'); // Comment tags.push('a'); // many... (should do last for "context sensitive" stuff) tags.push('abbr'); // Day change in Message window tags.push('th'); tags.push('td'); tags.push('button'); tags.push('p'); //tags.push('input'); tags.push('option'); tags.push('textarea'); tags.push('strong'); var divclasses = new Array(); divclasses.push('innerWrap'); // Write a comment... <textarea> //divclasses.push('UIImageBlock_Content UIImageBlock_ICON_Content'); // 2 people like this divclasses.push('_8m _8u'); // 2 people like this (etc.) divclasses.push('mvm pll uiP fsm'); divclasses.push('mvm pll uiP fsm fcg'); divclasses.push('linkWrap'); divclasses.push('_4rk'); divclasses.push('_43qm _43qf'); function translate(x) { d = x; // Translations go here ... ... ... d = r(d, '(^|="|>)Was machst du gerade\\?(?=($|"|<))', "$1"+"Co cyniš rowno?"); ... return d; } function translateOnInsert( node ) { //var logmsg = 'inserted a ' + node.nodeName + ' node; untranslated elements: '; for (n = 0; n < tags.length; n++) { var tagmatches = node.getElementsByTagName(tags[n]); for ( i = 0; i < tagmatches.length; i++ ) { // innerHTML often empty (never null) if (!tagmatches[i].hasAttribute('indigenous') && tagmatches[i].innerHTML != '') { // logmsg = logmsg + tagmatches[i].nodeName + ' '; tagmatches[i].innerHTML = translate(tagmatches[i].innerHTML); tagmatches[i].setAttribute('indigenous', true); } } } var divs = node.getElementsByTagName('div'); for (i = 0; i < divs.length; i++ ) { if (!divs[i].hasAttribute('indigenous')) { for (n = 0; n < divclasses.length; n++) { if (divs[i].className == divclasses[n]) { // logmsg = logmsg + 'DIV.' + divclasses[n] + ' '; divs[i].innerHTML = translate(divs[i].innerHTML); divs[i].setAttribute('indigenous', true); break; } } } } var spans = node.getElementsByTagName('span'); for (i = 0; i < spans.length; i++ ) { if (!spans[i].hasAttribute('indigenous')) { for (n = 0; n < spanclasses.length; n++) { if (spans[i].className == spanclasses[n]) { // logmsg = logmsg + 'SPAN.' + spanclasses[n] + ' '; spans[i].innerHTML = translate(spans[i].innerHTML); spans[i].setAttribute('indigenous', true); break; } } } } // GM_log(logmsg); } // This was (only) needed to handle updates to time stamps function listen_for_change(evt) { var node = evt.target; //GM_log('in change node, data='+node.data+'; was='+evt.prevValue); document.body.removeEventListener( 'DOMCharacterDataModified', listen_for_change, false ); node.data = translate(node.data); document.body.addEventListener( 'DOMCharacterDataModified', listen_for_change, false ); } function listen_for_add(evt) { var node = evt.target; if (node.nodeType == document.ELEMENT_NODE && node.nodeName != 'SCRIPT' && node.nodeName != 'INPUT') { document.body.removeEventListener( 'DOMNodeInserted', listen_for_add, false ); translateOnInsert(node); document.body.addEventListener( 'DOMNodeInserted', listen_for_add, false ); } else if (node.nodeType == document.TEXT_NODE) { // time stamps only document.body.removeEventListener( 'DOMNodeInserted', listen_for_add, false ); node.data = translate(node.data); document.body.addEventListener( 'DOMNodeInserted', listen_for_add, false ); } } function initme() { document.body.addEventListener( 'DOMNodeInserted', listen_for_add, false ); // document.body.addEventListener( 'DOMCharacterDataModified', listen_for_change, false ); document.body.innerHTML = translate(document.body.innerHTML); } document.addEventListener( "DOMContentLoaded", initme, false); -
Hallo Wowa, jetzt muss ich doch mal nachfragen, was du genau suchst. Meinst du das Downloadfenster mit der Liste der einzelnen Downloads? Das hat sich geändert. Es gibt jetzt kein kleines schlichtes Downloadfenster mehr, sondern es ist Bestandteil der Bibliothek, siehe Extras --> Downloads. Das kleine Fensterchen kannst du dir wieder holen, indem du unter about:config die Einstellung browser.download.useToolkitUI auf true setzt, siehe oben den Beitrag von Mapenzi.
Oder meinst du mit Download-Manager eine Erweiterung?
Grüße
milupo -
Hallo IngoPan,
lies dir mal die Firefox-Hilfeseite Dateien können nicht heruntergeladen oder gespeichert werden durch und arbeite sie ab.
Grüße
milupo -
Probiere es mit der von Endor genannten neuen Version. In der install.rdf der von dir benutzten Theme-Version steht, dass sie nur bis 16.* kompatibel ist. Man kann das aber auch noch auf 20.* hochsetzen und sehen, ob das Theme in dieser Version installierbar ist.