Re: Translation Manager Hilfe



NineBerry Schwarz schrieb:

Schlechter Weg, mit Strings zu arbeiten, leider viel zu oft zu sehen:

-----------8<-------------
begin
ShowMessage('Die Datei ' + FileName ' enthält '
+ IntToStr(LineCount) + 'Zeilen!');
end;
----------->8-------------

Besser:

-----------8<-------------
const
LineCountMessage = 'Die Datei "%s" enthält %d Zeilen!';
begin
ShowMessage(Format(LineCountMessage, [FileName, LineCount]);
end;

Da nehme ich noch einen lokalen String dazu, in dem ich zur Kontrolle das Ergebnis (egal wie erzeugt) anschauen kann.

In anderen Sprachen müssen ggf. auch noch die Argumente modifiziert oder vertauscht werden. In schlimmer Erinnerung habe ich noch "none", das auf Französisch dann "aucun(e)(s)" lautete.

Bei Format sollte man zumindest im Hinterkopf behalten, daß man damit einen Interpreter aufruft, was bei Messages eher unbedeutend ist, in einer Schleife aber schnell uneffizient werden kann.


----------->8-------------

Mit Ressoucestrings:

-----------8<-------------
resourcestring
LineCountMessage = 'Die Datei "%s" enthält %d Zeilen!';
begin
ShowMessage(Format(LineCountMessage, [FileName, LineCount]);
end;
----------->8-------------

Solche Messages sollten in einer eigenen Prozedur erzeugt und angezeigt werden, da sonst der Resourcestring jedesmal geladen wird, auch wenn er nachher garnicht verwendet wird. AFAIR war das eine ziemliche Bremse in alten VCLs, in allen Listen-Methoden, die eine Bereichsüberschreitung abgefangen haben.

Zudem sind Resourcestrings WideStrings, die bislang immer erst in AnsiString konvertiert werden mußten. Das ging zwar auch unter der Haube, aber eben auf Kosten von Laufzeit (auch Speichermanagement).


IMO sollte man sich sehr genau überlegen, ob man ein Programm wirklich internationalisieren möchte, und für welche Sprachen, oder ob man nicht lieber bei einer einzigen Version (deutsch oder englisch) bleibt. Oft erkennt erst ein versierter Übersetzer, wo Messages ganz anders gestaltet werden sollten, um das Herumhampeln mit Genus, Casus unt Tempus zu minimieren.

Wenn man über die westeuropäischen (Latin...) Sprachen hinausgeht, bekommt man auch noch Probleme mit den Zeichensätzen, bei denen auch Unicode nicht weiterhelfen kann, sondern den Code eher noch verkompliziert. Die Diskussion über die Einführung von Unicode als Standard-Zeichensatz hat mich jedenfalls das Grausen gelehrt, sowohl was Unicode selbst betrifft, als auch (vor allem) die Erwartungen, die manche Benutzer fälschlicherweise in Unicode setzen.

In neuen Programmen sollte man IMO schon mal daran denken, daß ein Char mehr als 1 Byte belegen kann, und welche Funktionen noch auf ASCII oder Ansi beschränkt sind. Bereiche wie ['a'..'z'] sollte höchstens noch einmalig als globale Konstanten definiert werden, und nicht als Literale im Code auftauchen. Bei Unicode wird es auch nur selten möglich sein, Bereiche überhaupt noch als Delphi-Sets (mit max. 256 Elementen) zu definieren, und ohne Unicode werden bei einer Umschaltung der Codepage viele derartige Sets unbrauchbar, da sie plötzlich ganz andere Zeichen repräsentieren können, als im (Ansi-)Code drinsteht.


Seit der Erfahrung mit meinem VB-Discompiler erwarte ich eigentlich, daß die Anwender meiner Programme englische Meldungen verstehen, oder welche Sprache mein Auftraggeber sonst vorgibt. Für mehr als Deutsch (oder Englisch) lohnt sich der Aufwand nur, wenn man von dem erwarteten Erlös einen Fachübersetzer für die Dokumentation etc. bezahlen kann. Nicht jeder Programmierer hat begeisterte Kunden zur Hand, die eine Übersetzung der Dokumentation für eine Vollversion des Programms machen, und dafür auch noch spätere Änderungen nachtragen.

DoDi
.



Relevant Pages

  • Re: (VC++ 6) UNICODE Zeichen ausgeben
    ... Gibt es eine Funktion/Methode die mir zu eine UNICODE Zeichen desen UNICODE zurueckliefert? ... Ode rmeinst Du wenn der Unicode-String in irgendeiner normalisierten Form geschriegen ist, welcher aus mehreren Unicode-Zahlen besteht, welches Zeichen es dann ist? ... das mein Programm eine Datenbank verwendet. ...
    (microsoft.public.de.vc)
  • Re: HALT oder nicht HALT
    ... Unicode beibringst, bitte sehr ... ... das Programm ausschlieÃ?lich Textein- und -ausgabe. ... CUI-Programm wirklich dein Ziel ist. ... d.h. ein Spiel in der Art ...
    (de.comp.lang.pascal)
  • Re: Delphi 2009
    ... Office wurde AFAIR schon Mitte der 90er auf Unicode umgestellt. ... Irgendwie finde ich es bezeichnend, daß speziell in Unicode-Diskussionen immer wieder ASCII erwähnt wird, und meist als Verwechslung mit Ansi. ... die ihnen kein Programm abnehmen kann - oder kennst Du eines für diesen Teil der Unicode-Umstellung? ...
    (de.comp.lang.delphi.misc)
  • Re: MFC Anwendung XML-fähig machen
    ... > weil eine XML-Datei u.a. Unicode als Zeichensatzcodierung nennen darf. ... > Selbst wenn das Programm selber gar keine Daten in Unicode auswerten will, ... > koennten im XML IDs vergeben sein, die Unicode-Zeichen enthalten. ...
    (microsoft.public.de.vc)
  • Re: Einzüge
    ... noch weitere interessante Zeichen im Unicode? ... Du hast als Co-Autor nicht zufällig eine deutsche Übersetzung des Textes?Mit ... Ansonsten werde ich mich morgen mit Englisch befassen müssen. ...
    (microsoft.public.de.word)