Dieses Dokument beschreibt die grundlegenden Schritte, die Sie durchführen sollten, bevor Sie starten, Lokalisierung von Ihrem Delphi und C ++ Builder-Anwendungen.
Unten ist eine Beispiel-Form, die für die Lokalisierung vorbereiten.
Das Formular enthält drei Fällen, wo wir es ändern, um das Formular einfach zu lokalisieren müssen. Jeder Fall ist mit roten Grenzen und mit einer Anzahl gekennzeichnet.
Die Wert-Bezeichnung ist ein Eingabefeld sofort gefolgt. Dies wird Sie Probleme verursachen, da es sehr wahrscheinlich ist, dass die Übersetzung des Werts auf andere Sprache einmal mehr viel länger sein wird, den ursprünglichen Wert. Das Etikett zu machen und bearbeiten, um einander überlappen. Der Übersetzer kann das Edit-Steuerelement mehr Recht Platz zu machen für die längere Bezeichnung ersetzen, aber dies wird einige Zeit in Anspruch nehmen und kostet. Denken Sie daran, wenn Sie auf 10 verschiedene Sprachen, die am ehesten lokalisieren jedes einzelnen Übersetzer hat die gleiche Änderung zu tun, die viel Zeit und sogar noch wichtiger machen die Benutzeroberfläche auf jede Sprache anders suchen.
Ein besserer Ansatz ist, die ursprüngliche Benutzeroberfläche so zu entwerfen, die Übersetzer Steuerelemente kaum zu verlagern müssen. In diesem Fall können wir setzen die Bezeichnung und Bearbeiten auf verschiedene Linien - Label über die Bearbeitung. Dies gibt Label Möglichkeit, sehr viel ohne Überlappung das Edit-Steuerelement erweitern.
Dieser Fall ist mit # 1 auf dem obigen Bild gekennzeichnet.
Schalten Sie die AutoSize-Eigenschaft des TLabel. Dadurch wird sichergestellt, dass längere Übersetzung von die Caption-Eigenschaft nicht abgeschnitten wird, wenn auf dem Formular gezeichnet.
Dieser Fall ist mit # 3 auf dem obigen Bild gekennzeichnet.
TCheckBox muss nicht AutoSize-Eigenschaft. Müssen Sie manuell die Breite des alle Kontrollkästchen, die maximale Breite erlaubt durch seine Position festlegen.
Dieser Fall ist mit # 2 auf dem obigen Bild gekennzeichnet.
Label2.Caption ist auf Label2 auf Entwurfszeit festgelegt. Klicken auf Laufzeit, die dies durch &Quot; ersetzt wird die Schaltfläche oben, um Prozessdaten"Zeichenfolge. Damit die ursprüngliche Zeichenfolge überhaupt nicht verwendet wird. Halten es nur machen Ihr Lokalisierungsprojekt größer und teurer. Eine gute Praxis ist, alle diese Caption-Eigenschaft einen festen Wert wie z. B. "Dummy" festzulegen. Nach dem Erstellen Sisulizer-Projekts können Sie problemlos alle Zeichenfolgen, die "dummy" Wert ausschließen.
Dieser Fall ist mit # 3 auf dem obigen Bild gekennzeichnet.
Unten ist das Beispielformular, nachdem es für die Lokalisierung vorbereitet wurde.
Bezeichnung und bearbeiten sind nicht auf die gleiche mehr Linie. Das Kontrollkästchen Breite wurde auf maximale möglich Breite eingestellt. Des Etiketts automatische Größenanpassung hat aktiviert wurde. Nicht verwendete Zeichenfolgen wurden mit dummy Wort ersetzt.
Die meisten Anwendungen haben harte kodierte Zeichenfolgen im Code. Müssen Sie Sie entfernen und Ersetzen Sie Sie durch die Ressourcenzeichenfolgen. Dies wird Mittelausstattung bezeichnet. Zum Glück ist es sehr leicht Prozess in Delphi.
VerfahrenTForm1.FormCreate(Sender: TObject); Label2.Caption beginnen: = 'Klicken Sie auf die oben genannten Schaltfläche zur Verarbeitung von Daten'; Ende;
Fügen Sie einen Block Resourcestring oberhalb der Begin-Block. Geben Sie einen eindeutigen Namen für die Ressource String-Id, und legen Sie die Ressourcenzeichenfolge, die der hart codierten Stringwert übereinstimmen. Der Name der Ressource-Zeichenfolge sollte auch als Beschreibbarer wie möglich sein. SClickButton ist viel besser als SStr1. Ersetzen Sie schließlich die hart codierte Zeichenfolge, mit der Ressourcenzeichenfolge.
VerfahrenTForm1.FormCreate(Sender: TObject); Resourcestring SClickButton = 'Klicken Sie auf die oben genannten Schaltfläche Prozessdaten'; Label2.Caption beginnen: = SClickButton; Ende;
In C ++ Builder Zeichenfolge Mittelausstattung ist ein wenig komplizierter. Sie haben zum Erstellen einer Ressource-Skript-Datei (.rc), eine STRINGTABLE hinzufügen und schließlich ein Element der Tabelle hinzufügen.
Wenn Sie richtig schreiben internationalisiert Code Sie die Standardverhalten von jeder Form und Frame ändern müssen. Deshalb Sie besser ableiten abstrakter Form aus TForm und alle Ihre Formulare aus diesem Formular abgeleitet ist. Tun Sie demselben Formular-Frame. Dies macht es einfach, das Formular im Konstruktor des Basisformulars initialisieren.
Die Standardschriftart des Delphi-Formulare ist entweder Tahoma (Delphi 2006 und höher) oder MS Sans Serif (bis zu Delphi 7). MS Sans Serif sieht etwas alt Mode, so es besser ist, Tahoma verwenden. Aber es keine gute Idee, harte Code ist die Schriftart Namen die Form. Die bessere Wahl ist, der Name der Schriftart zu MS Shell Dlg 2 ändern. Es ist eine generische Schrift, die Windows auf Fly zu der am besten geeignete Schriftart ersetzt. Im Englischen Windows XP Tahoma ist. Vereinfachtes Chinesisch XP ist es Simsun. MS Shell Dlg 2 immer die Verwendung stellt sicher, dass die Schriftart der Anwendung die Standardschriftart für die Schnittstelle von Benutzer des das Zielbetriebssystem verwendet.
Ei&ne andere Probleme ist die Schriftgröße. Die Standard-Schriftgröße auf Western Windows ist 8. Jedoch auf asiatische Windows ist es 9.nbsp; ändern die Schriftart-Größe auf Laufzeit im Konstruktor des Basisformulars entsprechend der Standardschriftgrad des aktiven Gebietsschemas.
FunktionGetDefaultUISize: Integer; begin Wenn IsActiveLocaleAsian dann Ergebnis: = 9 anderes Ergebnis: = 8; Ende;
Delphi-Ressourcendatei (.drc) wird von Sisulizer verwendet, um den vollständige Ressource-String-Kontext der Artikel zu erhalten.
Wenn Delphi-Compiler eine Resourcestring kompiliert es speichert die Zeichenfolge ist eine standard-Windows-Zeichenfolgenressource und weist eine Id für die Zeichenfolge zu. Wenn Sie neue Resourcestrings in die Anwendung hinzufügen oder vorhandene löschen, wird der Compiler die meisten Resourcestrings neue Ids geben. Dies wird wahrscheinlich dazu führen, dass Verlust von Übersetzungen oder eine bereits bestehende Übersetzungen durch falsche Übersetzungen ersetzt werden.
Damit dies geben einen DRK Dateinamen daher Sisulizer kann es verwenden, um Ressource Zeichenfolge Variablennamen und Ressource-String-Ids (z. B. SSampleString 4567 entspricht) zu verknüpfen.
Die Ressource String-Variable-Name wird nur ändern, wenn der Programmierer absichtlich Resourcestring Variablen sich der Name ändert. DRK Dateien verwenden .drc-Dateierweiterung (z. B. C:\Samples\Project1.drc).
Sie können eine Delphi-Binärdatei ohne Angabe der DRK-Datei lokalisieren, aber in diesem Fall verwendet Sisulizer der Ressource-String-Ids als Kontext. Es ist sehr wahrscheinlich, dass Delphi-Compiler der Ressource Zeichenfolgen-Ids der nächsten ändern Sie Ihr Projekt kompilieren. Dies verursacht Verlust von Übersetzungen oder switching von Übersetzungen. Deshalb die ist sehr viel empfohlen, eine DRK-Datei angeben. So erstellen Sie eine .drc-Datei wählen Sie Project | Optionen | Linker von Delphi, und überprüfen Sie Details in der Map-Datei-Radio-Gruppe.
C ++ Builder verwendet nicht DRK-Dateien.
VCL selbst enthält Hunderte von Meldungen. Sie werden die Ressource-Zeichenfolge-Ressourcen der Anwendung ebenso wie Ihre eigenen Ressourcenzeichenfolgen hinzugefügt. Wenn Sie verwenden Runtime-Pakete, die der VCL Resource Strings nicht mit verknüpft sind Ihre Anwendung aber sind jedoch in den Paketdateien (.bpl). Wenn Sie Sie lokalisieren möchten, haben Sie zwei Möglichkeiten. Die erste Option ist, nicht zu Laufzeit Pakete verwenden diesem Fall die Zeichenfolge mit der Anwendung verknüpft sind. Die zweite Option ist die Common Language Runtime-Paket-Dateien zu lokalisieren. Sie sind Windows-DLLs und sind auf die gleiche Weise wie Sie Anwendungsdateien (. exe) lokalisiert.
Die Beispielprojekte, sowohl die ursprünglichen als auch die bereit ein, werden hier gefunden.
| Datei | Descrition |
|---|---|
| DelphiOriginal.zip | Ursprüngliche Delphi-Projekt |
| DelphiPrepared.zip | Vorbereitete Delphi-Projekt |
| CBuilderOriginal.zip | Ursprüngliche C ++ Builder-Projekt |
| CBuilderPrepared.zip | Vorbereitet C ++ Builder-Projekt |