Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Delphi kommt mit bestimmten Format-Strings nicht zurecht (https://www.delphipraxis.net/193515-delphi-kommt-mit-bestimmten-format-strings-nicht-zurecht.html)

Der schöne Günther 9. Aug 2017 15:21

Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
Es geht um Lokalisierung einer Oberfläche. Viele Strings beinhalten Format-Bezeichner wie "Last updated %d minutes ago".

Die entsprechenden Übersetzer haben oft unsinnige Leerzeichen eingefügt sodass daraus "Zuletzt aktualisiert vor % d Minuten" wurde. In einem C-Programm ist das kein Problem oder sogar gewünscht(siehe Doku), deshalb fiel das bislang nicht auf:
Code:
   std::printf("Das ist ein \"%   s\"", "Test");
   std::cout << std::endl;
   std::printf("Die Zahlen sind \"% d\" und \"% d\"", 42, -99);
ergibt
Zitat:

Das ist ein "Test"
Die Zahlen sind " 42" und "-99"


Bei Delphi kommt mit
Delphi-Quellcode:
   WriteLn( String.Format('Das ist ein "% s"', ['Test']));
   WriteLn( String.Format('Die Zahlen sind "% d" und "% d"', [42, -99]));
leider ein völlig unsinniges
Zitat:

Das ist ein "
Die Zahlen sind "
heraus. Es wird keine Exception geworfen. Die Doku kennt Leerzeichen auch nicht.


Wie komme ich aus der Nummer am besten raus?

sakura 9. Aug 2017 15:25

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1378413)
Wie komme ich aus der Nummer am besten raus?

Die Übersetzer nur dann bezahlen, wenn diese ihren Job korrekt erledigen.

Ansonsten musst Du dir entweder eine eigene Format-Funktion erstellen, die diesen Schrott beseitigt, oder den Format-String immer vorher durch eine eigene Funktion laden, welche diesen Schrott beseitigt.

Letztere Variante ist eine mittlere Katastrophe, da im Zweifel die Nebenwirkungen nicht vorhersehbar sind.

...:cat:...

bra 9. Aug 2017 16:30

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
Einfach alle "% " durch "%" ersetzen, außer vielleicht "%% "?

himitsu 9. Aug 2017 17:04

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
"Automatische" Übersetzer?

Dort solche Format-Steuercodes durch Platzhalter ersetzen, welche die Übersetzer nicht zerstören oder sie reproduzierbar immer wieder ins Selbe übersetzen.
%d -> 666 oder XDDDDDDDDDDX
%s -> SSSSSSSSSS oder XSSSSSSSSSSX
Und das nach der Übersetung wieder durch %d und %s zurückersetzen.



Unkontrollierte automatische Übersetzungen sollte man aber eh nirgendwo verwenden ... wer weiß was da für Quatsch bei raus kommt. :stupid:
Und wenn menschliche Übersetzer sowas verbrockt haben .... naja :roll:

Der schöne Günther 9. Aug 2017 17:33

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
Da es stellenweise um sehr fachspezifische Terminologie geht machen das oft Vertreter und sonstige Freunde, keine externen Agenturen mit Profis, ich mache denen da also keinen Vorwurf ;-)

Blöd dass Tools wie poEdit das nicht automatisch monieren ob die Format-Strings exakt übereinstimmen. Aus einem %.2f dürfte in der Übersetzung somit auch ein %.1f gemacht werden. Wenn jemand jetzt einen Format-String weglässt oder die Reihenfolge ändert, warnt poEdit davor direkt, auf den Automatismus habe ich mich immer verlassen.

Mir ist es nur jetzt zufällig in der chinesischen Übersetzung aufgefallen, ich durchsuche jetzt alle Übersetzungen nach Prozent mit Leerzeichen und ändere es ggf. ab. Eine andere Möglichkeit sehe ich nicht. Doof.

knight 9. Aug 2017 19:23

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
Bei Lazarus gibt es für diesen Zweck ein Addon (im Verzeichnis /lazarus/components/pochecker/). Vielleicht kann man das auch unter Delphi zum Laufen bringen.

knight

p80286 9. Aug 2017 23:00

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1378431)
Da es stellenweise um sehr fachspezifische Terminologie geht machen das oft Vertreter und sonstige Freunde, keine externen Agenturen mit Profis, ich mache denen da also keinen Vorwurf ;-)

Klingt wie, ist gut gemeint...

gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz