2016-06-01 13 views
0

In meiner MFC-Anwendung gibt es drei Ressourcendateien (.rc) für drei verschiedene Sprachen (jap, eng, russisch) und eine main.rc-Datei, die weitere drei Ressourcen file.All enthält Ressourcendateien enthalten dieselbe Ressourcenkette in verschiedenen Sprachen, und alle enthalten den gleichen Ressourcenkopf resource.h. Wenn Benutzer die Anwendung ausführt, wird ein Popup-Fenster angezeigt, in dem der Benutzer zur Auswahl einer Sprache aufgefordert wird. Basierend auf der Benutzerauswahlanwendung muss der entsprechende RC ausgewählt werden, von dem Ressourcen geladen werden.Wählen Sie die entsprechende RC-Datei für die Sprachauswahl aus

Gibt es eine Möglichkeit, wenn Benutzer wählen Sie eine Sprache Anwendung wird geeignete Ressourcendatei auswählen.

+1

Das Betriebssystem weiß bereits, welche Sprache der Benutzer bevorzugt. Und er wird im Allgemeinen lieber die Sprachleiste verwenden, wenn er wechseln möchte. Wenn Sie die Auswahl aus irgendeinem Grund erzwingen möchten, anstatt sie dem Benutzer zu überlassen, verwenden Sie SetThreadPreferredUILanguages ​​(). Verwenden Sie SetThreadUILanguage() auf XP. –

Antwort

3

Im MFC erfolgt dies über Satelliten-DLLs.

Platzieren Sie jede Sprache RC in einer separaten DLL. Laden Sie nach dem Laden der Anwendung die spezifische Sprach-DLL und verwenden Sie AfxSetResourceHandle mit diesem Handle.

In diesem Fall wird in dieser DLL nach Ressourcen gesucht.

+0

Ich habe nur 10-15 Ressourcen-Strings in .rc-Datei, sonst nichts. Erstellen von DLLs für jede .rc-Datei macht keinen Sinn. –

+1

@VishalChavan Sie könnten Ihre Strings in verschiedenen Bereichen in der gleichen .rc-Datei (zB jap: 1000-1999, eng: 2000-2999, rus: 3000-3999) und je nach Sprache einen Offset auf die ID, die Sie sind, anwenden Übergabe an LoadString. –

+1

Ich unterstütze die Idee von Michael Walz. Ich kenne keine Möglichkeit, dies innerhalb einer exe zu tun, ohne unterschiedliche IDs zu haben. – xMRi

0

Eine Alternative ist es, zusätzliche stringtables zu Ihrem Projekt hinzuzufügen.

Weitere Details finden Sie hier:

http://www.dev102.com/2008/10/20/how-to-localize-your-application-using-string-tables/

Grundsätzlich Sie eine zusätzliche Tabelle hinzufügen und die Kultur in der Ressourcen-Editor eingestellt. Dann können Sie diese Kultur angeben, bevor Sie den Wert erhalten.

Das angegebene Beispiel gilt für C#, aber die Prinzipien sind identisch.

Ein möglicher Weg nach vorne, wenn nötig.

Verwandte Themen