![]() |
Umlaute im nicht deutschen Windows umwandeln?
Hallo,
hab ein Programm, dass auch im Ausland benutzt wird, da hab ich allerdings Probleme mit Umlauten. Die werd ich wahrscheinlich mit "StringReplace" umwandeln, oder was meint ihr. Wie erkenne ich aber, ob das Programm im nicht deutschen Windows gestartet wurde, um die Umlaute umzuwandeln? |
Re: Umlaute im nicht deutschen Windows umwandeln?
Welche Probleme hast Du denn und wie wirkt sich das aus? Am besten wäre es alles auf Unicode umzustellen (ElPack, TNTWare) oder D2009 zu nehme das von haus aus Full-Unicode-Enabled ist und das Umlautproblem damit einfach nicht mehr vorhanden ist.
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Vielleicht solltest Du aber auch mal darüber nachdenken
Dein Programm mehrsprachig anzubieten. Wie kannst Du sicher sein, dass die deutschen Texte im Ausland verstanden werden. Ein Stichwort dazu wäre: GNU gettext Grüße Klaus |
Re: Umlaute im nicht deutschen Windows umwandeln?
Du könntest ja die Sprache der Windows Version ermitteln, und wenn da nicht "Deutsch" rauskommt dann machst du halt die Umlaute anders.
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Delphi-Quellcode:
Hiermit kannst du die Sprache von Windows auslesen.
function GetOSLanguage: string;
var LanguageID:LangID; Len: Integer; begin SetLength(Result, 255); LanguageID:=GetSystemDefaultLangID; Len:=VerLanguageName(LanguageID,PChar(Result), Length(Result)); SetLength(Result, Len); end; |
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
![]() Grüße Klaus |
Re: Umlaute im nicht deutschen Windows umwandeln?
Na es kommt drauf an was es kostet. Ich will nicht für paar kleine Freeware viel Geld ausgeben, max. 15€ vielleicht.
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Und ist dann die Abfrage richtig so?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Ident: Integer; MyLang: PChar; const Size: Integer = 250; begin GetMem(MyLang, Size); Ident:=GetSystemDefaultLangID; VerLanguageName(Ident, MyLang, Size); Label1.Caption:=StrPas(MyLang); FreeMem(MyLang); if Label1.Caption='Deutsch (Deutschland)' then begin nicht umwandeln... end else umwandeln..; end; |
Re: Umlaute im nicht deutschen Windows umwandeln?
Ich würde eher die Funkion so lassen und im Button einfach nur aufurfen. Also
Delphi-Quellcode:
function GetOSLanguage: string;
var LanguageID:LangID; Len: Integer; begin SetLength(Result, 255); LanguageID:=GetSystemDefaultLangID; Len:=VerLanguageName(LanguageID,PChar(Result), Length(Result)); SetLength(Result, Len); end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := GetOSLanguage; end; Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Ja Label1.Caption ist dann "Deutsch (Deutschland)" aber soll ich wirklich dann so abfragen?
Delphi-Quellcode:
Gibt's da nicht eine Nummer oder so für die deutsche Sprache?
if Label1.Caption='Deutsch (Deutschland)' then
begin nicht umwandeln... end else umwandeln..; |
Re: Umlaute im nicht deutschen Windows umwandeln?
Siehe
![]() |
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
Delphi-Quellcode:
Grüße
LanguageID:=GetSystemDefaultLangID;
Len:=VerLanguageName(LanguageID,PChar(Result), Length(Result)); Klaus |
Re: Umlaute im nicht deutschen Windows umwandeln?
Wie kann man die Funktion jetzt so umbauen, dass sie nicht den Name der OS anzeigt, sondern die Nummer?
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Hast Du meinen Link verfolgt?
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
und kannst die simple Funktion nicht umbauen?
Delphi-Quellcode:
Nachdenkliche Grüße
function GetOSLanguage: Integer;
begin result:=GetSystemDefaultLangID; end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := IntToStr(GetOSLanguage); end; Klaus |
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
Ich hab erst vor kurzen angefangen Proceduren durchzunehmen, die Funktionen kommen später dran. Ich weiß sie sind fast gleich, aber mir fällt alles so schwer. |
Re: Umlaute im nicht deutschen Windows umwandeln?
In den Bits 0 bis 9 steht die primäre SprachID, in den Bits 10 bis 15 die Sublanguage ID. Also z.B. "Deutsch" als Primary Language und "(Schweiz)" als Sublanguage. Die Konstanten sind hier beschrieben:
Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Aber laut Post #18 ist die Nummer 1031 :gruebel: für Deutsch (Deutschland)
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Ist ja auch richtig. Die zitierten Konstanten sind im Hexadezimalformat. Wenn Du dort das "0x" durch ein "$" ersetzt, kannst Du die Konstanten direkt abfragen.
Delphi-Quellcode:
if GetSystemDefaultLangID = $0407 then
ShowMessage('Du Deutsch'); |
Re: Umlaute im nicht deutschen Windows umwandeln?
Ah ja, na endlich :gruebel: mir kommt schon Dampf aus den Ohren...
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
Delphi-Quellcode:
if (GetSytemDefaultLangID and $03FF) = $07 then
ShowMessage('irgendwo im deutschsprachigem Raum'); |
Re: Umlaute im nicht deutschen Windows umwandeln?
Lass ihn das erstmal verdauen ;)
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Ja jetzt brauche ich noch eine Funktion die im ganzem Programm Umlaute ersetzt. Im Labels, Memos usw...
Kann man eine für alle Komponenten schreiben oder für alles einzeln? |
Re: Umlaute im nicht deutschen Windows umwandeln?
Warum machst du nicht gleich deine Anwendung mehrsprachig, wie auch bereits vorgeschlagen wurde? Dafür gibt es entsprechende Komponenten, zum Beispiel diese:
![]() |
Re: Umlaute im nicht deutschen Windows umwandeln?
Ne das Programm bleibt in Deutsch, ist halt für Deutsche im Ausland. Aber da sie Windowse in der Sprache ihrer Wahlheimat haben müssen die Umlaute richtig dargestellt werden. :-D
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
MfG, Bug |
Re: Umlaute im nicht deutschen Windows umwandeln?
Was ist das? Hab ausgeführt :gruebel:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Nach einem kurzen Blick würde ich sagen, du musst damit nur noch die Ereignisfunktionen zum Ersetzen der Caption / Text / etc. Eigenschaften machen, und die Klasse sucht für dich die Komponenten.
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
|
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
Delphi-Quellcode:
MfG,
function test(x: String): String;
begin if copy(x, 1, 3) = 'foo' then result := 'bar'+x else result := 'foo'+x; // <- Unsinn ;) //Das wäre eine Stelle, wo du was sinnvolles machen könntest, z.B. die Umlaute ersetzen. end; procedure TForm1.Button2Click(Sender: TObject); var x: TControlChanger; begin x := TControlChanger.create; x.CaptionFunc := test; { <- hier wird die Ereignisfunktion für die zugewiesen; CaptionFunc ersetzt, o Wunder, die Caption (oder bei Memos und Listboxes die Zeilen)} { Es gibt noch TControlChanger.TagFunc (ähnlich TControlChanger.CaptionFunc) (bekommt TComponent.Tag übergeben und muss einen passenden String zurückliefern) und TControlChanger.ComponentChangeProc (Prozedur, bekommt nur die Komponente übergeben) } x.ChangeableComponents := x.ChangeableComponents + [ccTCustomListBox, ccTEdit]; x.changeComponentsRecursive(application); x.Free; end; Bug |
Re: Umlaute im nicht deutschen Windows umwandeln?
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz