AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL Anwendung lokalisieren

Ein Thema von Mithrandir · begonnen am 21. Nov 2009 · letzter Beitrag vom 21. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#1

nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 12:31
Hi ihr,

es geht um SmallTune. Ich möchte die Anwendung gerne lokalisieren/übersetzen. Da ich sowas von Anfang an geplant habe, war ich schlau und habe alle Strings im Programm als "Resourcestrings" definiert. Dann dachte ich mir, ich nutze dxgettext, und alles wird gut.

Leider habe ich mich zu früh gefreut. DXGetText nutzt exzessiv SysUtils und Classes, bekanntlich Gift für jede nonVCL-Anwendung. Hat jemand eine Idee (gerade die, die sonst mit nonVCL arbeiten), wie man sonst einfach eine Übersetzung hin bekommt, bei der man auch noch zur Laufzeit die Sprache ändern kann und trotzdem die RES-Strings noch nutzen kann?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 12:45
Wenn du die Stringresourcen selber anlegst, dann kannst du dir aussuchen, von wo du sie lädst

z.B. von einer DLLs mit den übersetzen Resourcen und da Resourcen auch mit eine LangID versehen sind, könnte man auch mehrere Versionen in einer EXE/DLL ablegen und müßte dann nur noch die passende Sprach-Version laden.

kannst ja gern mal in meinem alten Hier im Forum suchenFileSplitter nachschauen, ob du da was verwenden kannst.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#3

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 12:55
Ich überlege die ganze Zeit, ob ich die dxgettext nicht so zerpflücken kann, dass ich die mo/po-Dateien doch noch nutzen kann...

@himi: Danke, werde mal gucken...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 13:21
Das dort ist aber ein eigenentwickeltes System
und die ganzen Texte/Resourcen sind manuell übersetzt
(k.A. ob man das auf die mo/po-Datei erweitern kann ... weiß garnicht, wie es mit diesen genau funktioniert)

Im Prinzip hab ich mir LoadString und die anderen Resourcen-Funktionen so erweitert, daß sie entpsrechend der Spracheinstellung die passenden Resourcen laden.
Es wurden auch die Fenster ala MSDN-Library durchsuchenCreateDialog übersetzt.


Hier bin ich in etwa den Weg von Delphi gegangen:
http://www.delphipraxis.net/internal...t.php?t=164238
Dort liegen alle Texte in einer Unit, wo dann vor dem Kompilieren die Unit getauscht würde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#5

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 13:38
Hm, ok, dann muss ich nochmal nachhaken und ausholen:

Ich möchte, dass der Benutzer selbst eigene Übersetzungen erstellen kann. Dafür bekommt er die englische Originalübersetzung in welcher Weise auch immer mitgeliefert. Es wäre also sinnig, wenn die Strings aus einer Datei ausgelesen werden könnten. Und wenn der Benutzer dann zur Laufzeit die Sprache ändert, müsste ich nur den Inhalt der Resourcestrings austauschen, oder?*

Wobei ich dann aber das Gefühl habe, wieder bei einem eigenen System zu landen... Zumal ich dann auch allen Fenstern (Buttons, Labels, etc.) manuell denn neuen Inhalt zuweisen müsste, wenn ich einen Neustart der Anwendung verhindern will, oder?

//Edit:
*Is natürlich Schwachsinn, ich kann ja schlecht eine laufende Exe ändern...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 14:16
Du könntest aber beim Laden der Texte entscheiden
- Texte aus Resourcen
- oder Texte externer Datei
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 16:15
Zitat:
Ich überlege die ganze Zeit, ob ich die dxgettext nicht so zerpflücken kann ...
Das braucht du nicht und dxgettext auch nicht.


Zitat von himitsu:
Du könntest aber beim Laden der Texte entscheiden
- Texte aus Resourcen
- oder Texte externer Datei
Genau.

Die Übersetzungen kommen in eine oder mehrere Ini.-Dateien.
Man kann natürlich auch die Hauptsprachen (zB.: en & de) in die Exe mit aufnehmen.
Der Rest kommt dann ebend in dem entsprechende Inifiles mit meinetwegen ländersp. Extensionen oder der gleichen.

Man kann nun mit Hilfe von, wie hiess das , GetSysLanguageName die Systemsprache ausspionieren und diese, falls
vorhanden laden.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#8

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 16:34
Japp, so dachte ich mir das jetzt auch. Und der Übung wegen schreibe ich mir dafür einen kleinen Parser, der das Format liest, was ich mir da zusammengefrickelt habe:

Delphi-Quellcode:
// Translation File for SmallTune
// Language: German
// Author: Daniel Gilbert
// Mail: [email]xxx@yyyyyyyy.zzz[/email]

// Must match Application Minor Version
// e.g. "0.3" will work for SmallTune 0.3.0, SmallTune 0.3.1, SmallTune 0.3.2 and so on, but not SmallTune 0.4.0...
TRANS_FILE_VERSION=0.3;

//Short Description:
//
//The default Format is:
//
//index:'Text';
//
//In case you need a ' in your text (e.g.: isn't), you can write it like this:
//
//0:'This isn''t a problem';
//
//In case you need a linebreak, this can be done this way:
//
//0:'This is the first line' + #13#10 + 'this is the next line';
//
// NEVER EVER change the index and the line order. Doing so will result in an error and the language won't be loaded

//Windows XP or NT 4.0 needed!
0:'Windows XP or NT 4.0 needed!';
//[Playing]
1:'[Playing]';
//[Pause]
2:'[Pause]';
//[Stop]
3:'[Stop]';
//Adding files... please wait...
4:'Adding files... please wait...';
//Previous track
5:'Previous track';
Gewinnt vielleicht keinen Design-Award, aber funktioniert (hoffentlich).
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 17:30
Warum nimmst du nicht einfach (Windows.)GetPrivateProfileString ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#10

Re: nonVCL Anwendung lokalisieren

  Alt 21. Nov 2009, 17:37
Zitat:
This function is provided only for compatibility with 16-bit Windows-based applications
Und wir sind ja jetzt schon bei 64bit...

Wie gesagt, hab schon lange keinen richtigen Parser mehr geschrieben.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:47 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