Falsche Systemsprache unter Mac OS X

Für Fragen rund um die Ide und zum Debugger
Antworten
Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Falsche Systemsprache unter Mac OS X

Beitrag von Kay »

Hallo zusammen,

ich habe ein Problem bei der Verwendung der korrekten Sprache.
Nach der Installation der Lazarus-IDE (Version 1.0.14) unter Mac OS X (Mavericks) habe ich ein ganz einfaches Projekt erstellt - lediglich ein Formular mit einem TLabel zur Ausgabe des Textes "Hallo Welt". Das Ganze habe ich anschließend kompiliert, was ohne Fehler ablief.
Wenn ich nun mein Programm über den Finder starte, wird zwar alles ordnungsgemäß ausgeführt, die Sprache der vom System automatisch generierten Aufschriften ist aber merkwürdigerweise in Englisch. Das heißt, ich habe plötzlich einen Close-Button statt einem Schließen-Button und im automatisch erzeugten Programmmenü finde ich einen Punkt "Quit Test" statt "Beenden".
Wenn ich Lazarus selbst starte, scheint die IDE aber auf Deutsch zu sein, zumindest enthält die Menüleiste die Menüs "Datei", "Bearbeiten" usw. Ich gehe also davon aus, dass Lazarus auf Deutsch eingestellt ist. Aber warum ist es mein Projekt dann nicht mehr? Muss ich irgendwo nochwas einstellen bzw. die Einstellung welcher Optionen überprüfen?

Vielen Dank schonmal für eure Antworten!

Viele Grüße,
Kay

jwdietrich
Beiträge: 167
Registriert: Mo 20. Okt 2008, 20:50
OS, Lazarus, FPC: macOS 10.4-13.4, Windows 2000-11, Raspbian (L 2.2.6, FPC 3.2.2)
CPU-Target: PowerPC, Intel, ARM
Wohnort: Hattingen, NRW
Kontaktdaten:

Re: Falsche Systemsprache unter Mac OS X

Beitrag von jwdietrich »

Ich glaube, dass das automatisch generierte Programm-Menü immer auf Englisch ist.

Das automatische Programmmenü hat aber auch wenig Nutzen. Ich würde eher empfehlen, ein eigenes zu erzeugen (wie das geht ist auf der Seite Mac Preferences and About Menu des Lazarus-Wikis beschrieben). Ein selbst erstelltes Menü ist viel flexibler, und man hat dann auch die Möglichkeit, einen Eintrag für Voreinstellungen etc. zu verwenden.

Ich habe die Lokalisierung in meinen Programmen so gelöst, dass das Programm mit

Code: Alles auswählen

function GetOSLanguage: string;
  {platform-independent method to read the language of the user interface}
var
  l, fbl: string;
  {$IFDEF LCLCarbon}
  theLocaleRef: CFLocaleRef;
  locale: CFStringRef;
  buffer: StringPtr;
  bufferSize: CFIndex;
  encoding: CFStringEncoding;
  success: boolean;
  {$ENDIF}
begin
  {$IFDEF LCLCarbon}
  theLocaleRef := CFLocaleCopyCurrent;
  locale := CFLocaleGetIdentifier(theLocaleRef);
  encoding := 0;
  bufferSize := 256;
  buffer := new(StringPtr);
  success := CFStringGetPascalString(locale, buffer, bufferSize, encoding);
  if success then
    l := string(buffer^)
  else
    l := '';
  fbl := Copy(l, 1, 2);
  dispose(buffer);
  {$ELSE}
  {$IFDEF LINUX}
  fbl := Copy(GetEnvironmentVariable('LC_CTYPE'), 1, 2);
    {$ELSE}
  GetLanguageIDs(l, fbl);
    {$ENDIF}
  {$ENDIF}
  Result := fbl;
end;

die Systemsprache ausliest.

Wenn das Ergebnis 'de' ist, dann werden Menü-Einträge, Button-Beschriftungen etc. durch deutsche Versionen ersetzt, in allen anderen Fällen wird eine englische Version verwendet. Den Algorithmus kann man natürlich auf beliebige Sprachen erweitern.

Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Re: Falsche Systemsprache unter Mac OS X

Beitrag von Kay »

Hallo jwdietrich,

erstmal vielen Dank für deine Antwort und die Tipps.

Den Artikel zur Anpassung des Menüs habe ich gelesen - klingt vielversprechend. Werde ich nachher noch testen.

Mit der englischsprachigen Aufschrift meinte ich allerdings nicht meine eigenen Buttons.
In der Symbolleiste, die automatisch jedem Fenster hinzugefügt wird, kann man sich statt den Symbolen auch Text ausgeben lassen und da steht dann "close" statt "schließen", "mnz" statt "minimieren" und "zoom" statt "zoomen".
Weiterhin sind Dialogboxen, die ich mit MessageDlg öffne, ebenfalls mit englischen Titeln versehen, z.B. "Error" statt "Fehler" oder bei den Schaltflächen "Cancel" statt "Abbrechen".

Außerdem bin ich mir nicht sicher, ob die LCL korrekt angepasst ist. Ich habe mir spaßenshalber einige Komponenten auf ein Form gelegt und das Projekt kompiliert.
Anschließend habe ich die Oberfläche des fertigen Programms etwas genauer betrachtet. Hier wird interessanterweise TCheckBox als Button erkannt und wie TButton behandelt, TComboBox wird als Popupmenü erkannt, die Aufschrift auf TBitBtn wird nicht angezeigt und TLabel scheint ganz zu verschwinden. Bei letzterem müsste ich dann stattdessen auf TStaticText zurückgreifen, um überhaupt Textdarstellungen zu erhalten.
Ich habe gelesen, dass an irgendeiner Stelle die Xcode-Tools von Lazarus einbezogen werden. Wozu dienen diese und funktioniert vielleicht etwas bei der Umsetzung der LCL nach Xcode nicht bzw. muss ich noch etwas spezielles einstellen?
Ich habe mir lediglich Xcode aus dem Store geladen und anschließend den Befehl "xcode-select --install" im Terminal ausgeführt. Danach noch fpc und lazarus installiert.
Weitere Einstellungen hatte ich bisher nicht vorgenommen. Vielleicht liegt es ja daran?

Viele Grüße

Antworten