AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Delphi kommt mit bestimmten Format-Strings nicht zurecht
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi kommt mit bestimmten Format-Strings nicht zurecht

Ein Thema von Der schöne Günther · begonnen am 9. Aug 2017 · letzter Beitrag vom 10. Aug 2017
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 9. Aug 2017, 16:21
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?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 9. Aug 2017, 16:25
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.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 9. Aug 2017, 17:30
Einfach alle "% " durch "%" ersetzen, außer vielleicht "%% "?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 9. Aug 2017, 18:04
"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.
Und wenn menschliche Übersetzer sowas verbrockt haben .... naja
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Aug 2017 um 18:07 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 9. Aug 2017, 18:33
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.
  Mit Zitat antworten Zitat
knight

Registriert seit: 31. Mär 2012
13 Beiträge
 
#6

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 9. Aug 2017, 20:23
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Delphi kommt mit bestimmten Format-Strings nicht zurecht

  Alt 10. Aug 2017, 00:00
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 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