Re: Translation Manager Hilfe
- From: Hans-Peter Diettrich <DrDiettrich1@xxxxxxx>
- Date: Sat, 06 Sep 2008 02:43:20 +0200
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
.
- Follow-Ups:
- Re: Translation Manager Hilfe
- From: Heiko Rompel
- Re: Translation Manager Hilfe
- From: Matthias Hanft
- Re: Translation Manager Hilfe
- References:
- Re: Translation Manager Hilfe
- From: Henrik Kehm
- Re: Translation Manager Hilfe
- From: Stefan Koschke
- Re: Translation Manager Hilfe
- From: Stefan Koschke
- Re: Translation Manager Hilfe
- From: Henrik Kehm
- Re: Translation Manager Hilfe
- From: Stefan Koschke
- Re: Translation Manager Hilfe
- From: Henrik Kehm
- Re: Translation Manager Hilfe
- From: Heiko Rompel
- Re: Translation Manager Hilfe
- From: NineBerry Schwarz
- Re: Translation Manager Hilfe
- Prev by Date: Re: Effizientes "umschreiben"
- Next by Date: Re: Translation Manager Hilfe
- Previous by thread: Re: Translation Manager Hilfe
- Next by thread: Re: Translation Manager Hilfe
- Index(es):
Relevant Pages
|