[gelöst]Sprachsteuerung

27. Januar 2009 09:45

Zur Sprachsteuerung habe ich mehrere Fragen:

1. '<+6D>' : die <> bedeuten vermutlich das nicht übersetzt werden darf? Gilt das allgemein (also auch bei Textconstanten) oder nur für Literale bei der Datumsberechnung?
2. Reports werden zunächst mal immer in der Sprache des Users gedruckt. Wenn man die Sprache ändern will geht das über CurrReport.LANGUAGE. Nun stelle ich bei einer Lieferantenerklärung fest dass die Artikelbeschreibungen nicht übersetzt wurden und möchte dafür eine Wiedervorlage anlegen. Leider kommt die Wiedervorlage nun auch in der Sprache des Reports. Eigentlich möchte ich diese aber natürlich in der Sprache des Empfängers der Wiedervorlage haben. Gibt es eine Möglichkeit die Texte aus C/AL Globals->Text constants gezielt für eine Sprache abzurufen? Gibt es dabei irgendwelche Rückfallmöglichkeiten? Oder gibt es ne andere Möglichkeit sowas abzubilden ausser das man selber eine Tabelle mit den Übersetzungen anlegt oder ständig die Sprache des Reports wechselt?

Ich hab schon mal versucht das mit dem Debugger rauszufinden - aber der geht gar nicht erst in eine Funktion zum holen der Text-Konstanten rein. Auch ein Blick in die Codeunit 1 hat mir nicht geholfen - da ging es scheinbar immer nur um das Dezimaltrennzeichen.
Zuletzt geändert von WoF am 29. Januar 2009 09:31, insgesamt 1-mal geändert.

Re: Sprachsteuerung

27. Januar 2009 10:12

Hallo WoF,

zu 1: Das gilt nur für die Datumsformeln. (Funktioniert nicht nur im C/AL-Code, sondern sogar in der Anwendung)

zu 2: CurrReport.LANGUAGE ändert nur die Sprache des Objektes (also des Reports), nicht jedoch die Sprache der Daten.
Im NAV Standard wird beim Anlegen einer Verkaufszeile versucht, eine Artikelübersetzung in der jeweiligen Sprache (siehe Sprachcode im Verkaufskopf) zu ziehen.

Re: Sprachsteuerung

27. Januar 2009 16:57

1. ok, verstanden und danke für den Hinweis das es auch in der Anwendung funktioniert. Da bin ich echt baff.
2. Es geht um einen Text der im C/AL unter Textconstante abgelegt ist - also für mich gehört der damit zum Report-Objekt. Gibt es da ein API oder eine C/AL-Funktion wo man den Text in der gewünschten Sprache abrufen kann? Gefunden hab ich nix.

Re: Sprachsteuerung

27. Januar 2009 17:09

WoF hat geschrieben:2. Es geht um einen Text der im C/AL unter Textconstante abgelegt ist - also für mich gehört der damit zum Report-Objekt. Gibt es da ein API oder eine C/AL-Funktion wo man den Text in der gewünschten Sprache abrufen kann? Gefunden hab ich nix.
Wenn es nicht mit CurrReport.LANGUAGE := DeineSprachID; funktioniert, dann könntest du ja noch die brutale Variante GLOBALLANGUAGE := DeineSprachID; versuchen. Dann wird allerdings die ganze Anwendung auf die jeweilige Sprache umgestellt.
Vergesse dann aber nicht im OnPostReport die GLOBALLANGUAGE := AppMgt.ApplicationLanguage; zu setzen.

Normalerweise sollte es aber schon mit CurrReport.LANGUAGE funktionieren und die entsprechenden Texte der Textkonstanten verwenden.

Re: [gelöst]Sprachsteuerung

29. Januar 2009 18:01

ja, das mit dem currReport.LanugageId funktioniert ja auch bestens. Ich hab eher nach sowas gesucht:
Code:
MyResubmissionText := UNKNOWNFORMATFUNC(TXT0001, 'DEU');
MyPrintText := UNKNOWNFORMATFUNC(TXT0002, 'ENU');

Ich finde das es bischen umständlich jedes Mal (pro Artikelzeile) die Sprache des Reports umzuschalten. Und das Rückschalten nach dem Holen der Konstanten darf ich ja auch nicht vergessen. Ich überlege jetzt ob ich im OnPreReport die Konstanten in den verschiedenen Sprachen auslese und in ein Array schreibe (oder gleich in einem Array halte - Übersetzung?) oder ob ich einfach eine Tabelle anlege/suche und die Konstanten dann da rein schreibe inclusive der Übersetzungen.

Re: [gelöst]Sprachsteuerung

11. Januar 2010 10:52

Hallo - gehört nicht direkt zum Thema, aber: wo finde ich die Lieferantenerklärung? Das ist für uns ein Thema.