Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.04.2005, 19:29

Löschen

Löschen

2

09.04.2005, 19:38

es gibt da son standard...*google*
http://www.i18nguy.com/

aber nur ne idee kein plan ob das was bringt oder zu deinem prob passt :)

3

09.04.2005, 21:20

Ähm, also, du kennst doch sicherlcih codeproject und codeguru, oder? Die haben beide dafür Beispielprogramme auf lager. :rolleyes:

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

4

09.04.2005, 22:20

Re: MFC programm in mehreren Sprachen?

Zitat von »"Djsammy"«

Hallo,

ich möchte folgendes machen: Eine Aplikation soll in Englisch und Deutsch laufen.
Das Programm soll auf allen Betriebsystem schauen, ob es in Deutsch oder Englisch ist. Je nach dem, was nun für eine Sprach vor liegt, soll dann eine Stringtabelle geladen werden.

Wie kann ich das machen?


Also das ist ganz einfach: wenn du deine Ressourcen (in der IDE) komplett kopierst und den kopierten Ressourcen eine andere Sprache (z.B. Englisch) zuweist (und den Inhalt natürlich dementsprechend änderst), dann sind beide Ressourcen-Pakete (alles in einer rc-Datei!) nachher in der EXE. Je nachdem, welche Sprache das OS hat, wird dann die entprechende Ressource (z.B. String-Tabelle) geladen.

Zitat von »"Djsammy"«


Und dann die zweite Frage: Wie kann ich es machen, dass in den Dialog ein String aus so einer tabelle geladen wird?


Mit CString::LoadString, hier:

Zitat von »"MSDN"«


CString::LoadString
BOOL LoadString( UINT nID );
throw( CMemoryException );

Return Value

Nonzero if resource load was successful; otherwise 0.

Parameters

nID

A Windows string resource ID.

Remarks

Reads a Windows string resource, identified by nID, into an existing CString object.

Example

The following example demonstrates the use of CString::LoadString.

// example for CString::LoadString
#define IDS_FILENOTFOUND 1
CString s;
if (! s.LoadString( IDS_FILENOTFOUND ))
{
AfxMessageBox("Error Loading String: IDS_FILENOTFOUND");
...
}


Aber ehrlich gesagt, brauchst du das in einem Dialog meistens gar nicht, da du nicht nur unterschiedliche String-Tabellen erstellst (für untersch. Sprachen), sondern ja auch unterschiedliche Dialoge, wo dann der Text direkt reingeschrieben wird!

Zitat von »"Djsammy"«


Oder kennt ihr eine andere möglichkeit?


Ja, natürlich! Man kann die Sprache auch zur Laufzeit laden (wenn du z.B. willst, dass man auch in einem deutschen OS englische Sprache haben kann), indem man die Ressourcen wir oben erwähnt kopiert, sprachlich verändert und dann in einem neuen DLL-Projekt als Ressource einbindet, mit den gleichen IDs (Resource.h) natürlich! Dann kannst du zur Laufzeit mit "SetResourceHandle" das Handle der entsprechenden Sprach-DLL setzten und promt verändert sich die "Sprachversion", wobei man bei den Menüs aufpassen muss (neu erstellen lassen, und zwar manuell!).
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Werbeanzeige