Sprache

20. September 2006 11:10

Hallo Zusammen

Ich habe ein kleines Problem mit dem Sprachcode.
Wenn ich ein Auftrag verbuche wird automatisch eine zusätzliche Zeile in einem Codeunite generiert. In diesem Codeunit weise ich ich die Bezeichnung der Verkaufszeile folgendermassen zu:

SalesLine2.Description := Text001;

In der Text001 TextConstats habe ich 3 Sprachen.

Wenn ich also ein Debitor mit Sprachcode FRS habe erscheint mir im Auftrag immer der Deutsche Text. Es sollte aber der französische erscheinen.

Danke für die Hilfe

20. September 2006 13:09

Die Texte werden entsprechend der LanguageId und nicht aufgrund des Sprachcodes ermittelt. In Reports, Forms und Dataports gibt es ein Property LANGUAGE des jeweiligen Objekts. Man kann auch aus dem Sprachcode die WindowsLanguageId ermitteln wie z.B. in Reports:

Code:
CurrReport.LANGUAGE := Language.GetLanguageID("Language Code");


Aber in deinem Fall würde ich eine Tabelle anlegen, aus der die jeweiligen Texte über den Sprachcode geholt werden.

20. September 2006 20:14

Das Problem liegt darin, dass die Sprache des jeweiligen Reports dynamisch gewechselt werden kann, die Sprache der Textkonstante in der Codeunit ist jedoch von der GLOBALLANGUAGE abhängig.

Es bleibt dir wohl nichts anderes übrig, als die Zuweisung innerhalb des Reports vorzunehmen.

21. September 2006 08:28

@ timo

Habe ich dich richtig verstanden. Ich muss im Codeunite auf den Sprachcode abfragen und dann die gewünschte Text Constants zuweisen.

Vielleicht als Beispiel: Codeunite 60 (Sales-Calc. Discount)

Code:
SalesLine2."Line No." := SalesLine2."Line No." + 10000;
SalesLine2.Type := SalesLine2.Type::"G/L Account";
SalesLine2.VALIDATE("No.",CustPostingGr."Service Charge Acc.");
SalesLine2.Description := Text000;
SalesLine2.VALIDATE(Quantity,1);   


Hier wird auch nur der deutsche Text (Text000 = Zuschlag) übergeben.

21. September 2006 20:54

Wie gesagt, die von SilverX angesprochene Codezeile in den Standard-Reports (z. B. Report 206) stellt die Sprache nur für den aktuellen Report (eben CurrReport...) um, der Rest der Anwendung läuft weiterhin in der GLOBALLANGUAGE.
Bevor es diese Multilanguage-Technik in Navision gab, konnte man aber schon einige Stammdaten (z. B. Artikelbeschreibungen) in verschiedenen Sprachen hinterlegen.
Dafür benötigt es jedoch eine zusätzliche Tabelle (wo die Übersetzungen hinterlegt werden können) sowie eine entsprechende Funktion, welche für einen bestimmten Sprachcode (nicht Language-ID!) die passende Übersetzung zurückliefert.
Leider ist diese Funktion in Navision nur in bestimmten Teilbereichen verfügbar.
Bei meinem früheren Arbeitgeber hatten wir eine sehr flexible "Übersetzungstabelle" umgesetzt, welche nicht nur die Übersetzungen für eine Tabelle (z. B. Artikel), sondern für (theoretisch) alle Tabellen speichern kann.
Eine in der "Übersetzungstabelle" hinterlegte Funktion lieferte dann (nach Übergabe der Table-ID, Primärschlüssel und Sprachcode) die zu dem Datensatz passende Übersetzung zurück.
Theoretisch könnte man diese Tabelle auch noch um eine Feldnummer erweitern, dann könnte man damit jedes beliebige Feld aus jeder beliebigen Tabelle übersetzen.