Creazione e uso dei file traduzioni
Business Central è un software multilingue, ovvero è possibile visualizzare l'interfaccia utente in diverse lingue. In Business Central, ciò avviene grazie all'uso di un file XLIFF, che è un formato standardizzato usato per le traduzioni basate su computer.
Facoltativamente, usare Dynamics 365 Translation Service per ottenere traduzioni per le lingue di destinazione. Per altre informazioni, consultare Traduzione di file dell'interfaccia utente.
Per una panoramica di come vengono applicate le traduzioni, consultare Panoramica delle traduzioni.
Generazione del file XLIFF
Per aggiungere una nuova lingua all'estensione creata, è necessario innanzitutto abilitare la generazione di file XLIFF. L'estensione del file XLIFF è .xlf. Il file XLIFF generato contiene le stringhe specificate in proprietà quali Caption, CaptionML e Tooltip.
Per inviare un'app ad AppSource, è necessario usare i file di traduzione XLIFF. Nel file app.json dell'estensione aggiungere la seguente riga:
al-languageCopy
"features": [ "TranslationFile" ]
Se l'impostazione Incremental Build è abilitata nella configurazione Estensione del linguaggio AL, tutte le traduzioni vengono ignorate, anche se l'impostazione "features": [ "TranslationFile" ] è specificata nel file app.json. Per altre informazioni, consultare Configurazione dell'estensione del linguaggio AL. Lo stesso vale quando si usa la pubblicazione RAD: anche in questo caso tutte le traduzioni vengono ignorate. Per altre informazioni, consultare Uso dello sviluppo rapido delle applicazioni.
Ora, quando si esegue il comando di compilazione (CTRL+MAIUSC+B) in Visual Studio Code, una cartella \Translations viene generata e popolata con il file .xlf contenente tutte le etichette, le proprietà delle etichette e le etichette dei report usate nell'estensione. Il file .xlf generato può ora essere tradotto.
Le versioni ML (multilingua) delle proprietà non sono incluse nel file .xlf:
Neanche il tipo di dati TextConst è incluso nel file .xlf.
Assicurarsi di rinominare il file di traduzione prima di creare l'estensione la volta successiva, poiché verrà sovrascritto.
Impostando il flag GenerateCaptions nel file app.json, si specifica che si desidera generare didascalie in base al nome dell'oggetto per pagine, tabelle, report, XMLports e pagine di richiesta. Se per l'oggetto è già impostata una proprietà Caption, viene usato tale valore. Per i campi della tabella, viene usato OptionCaption. La sintassi è la seguente:
al-languageCopy
"features": [ "TranslationFile", "GenerateCaptions" ]
GenerateLockedTranslations
Impostando il flag GenerateLockedTranslations nel file app.json, si specifica che si intende generare elementi <trans-unit> per le etichette bloccate nel file XLIFF. Il comportamento predefinito prevede che questi elementi non vengano generati. Per altre informazioni, consultare File JSON.
al-languageCopy "features": [ "GenerateLockedTranslations" ]
Sintassi dell'etichetta
La sintassi dell'etichetta è mostrata nell'esempio seguente per la proprietà Caption:
al-languageCopy
Caption = 'Developer translation for %1', Comment = '%1 is extension name', locked = false, MaxLength=999;
Il commento, bloccato, e gli attributi maxLength sono facoltativi e l'ordine non viene imposto. Per altre informazioni, consultare Tipo di dati dell'etichetta.
Usare la stessa sintassi per le etichette dei report:
al-languageCopy
labels { LabelName = 'Label Text', Comment='Foo', MaxLength=999, Locked=true; } Di seguito è invece riportata la sintassi per i tipi di dati Etichetta:
al-languageCopy
var a : Label 'Label Text', Comment='Foo', MaxLength=999, Locked=true;
Il file XLIFF
Nel file .xlf generato è presente un elemento <source> per ciascuna etichetta.
Per la traduzione, sarà necessario aggiungere la lingua di destinazione e un elemento <target> per ciascuna etichetta. La lingua di destinazione deve essere specificata nel formato "<language code>-<country code>", ad esempio "da-DK", "es-ES" o "de-DE".
L'attributo <trans-unit id> corrisponde all'ID oggetto nell'estensione.
L'esempio di seguito illustra questo concetto.
al-languageCopy
<?xml version="1.0" encoding="utf-8"?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd"> <file datatype="xml" source-language="en-US" target-language="da-DK" original="ALProject16"> <body> <group id="body"> <trans-unit id="PageExtension 50110" maxWidth="999" size-unit="char" translate="yes" xml:space="preserve"> <source>Developer translation for %1</source> <target>Udvikleroversættelse for %1</target> <note from="Developer" annotates="general" priority="2">%1 is extension name</note> <note from="Xliff Generator" annotates="general" priority="3">PageExtension - PageExtension</note> </trans-unit> </group> </body> </file> </xliff>
È possibile avere un solo file .xlf per ciascuna lingua. Se si traduce l'estensione in più lingue, è necessario disporre di un file di traduzione per ogni lingua. Nessuna denominazione è imposta sul file, ma è buona norma assegnare al file un nome usando questo
formato: <extensionname>.<language>.xlf.
Quando l'estensione viene compilata e pubblicata, è possibile modificare la lingua di Dynamics 365 Business Central per visualizzare l'interfaccia utente nella lingua tradotta.
Traduzione di altre estensioni
Per tradurre altre estensioni, ad esempio quando si aggiungono traduzioni all'applicazione di base, è necessario fare riferimento al progetto da tradurre usando la sezione delle dipendenze nel file app.json. Per altre informazioni, consultare File JSON. Una volta impostate le dipendenze, è possibile aggiungere al progetto corrente file xliff che traducono le didascalie degli oggetti dell'estensione di riferimento. Creare una directory denominata Translations, nella radice dell'estensione, e posizionare lì il file xliff tradotto. Quando l'estensione viene compilata e pubblicata, modificare la lingua di Dynamics 365 Business Central per visualizzare l'interfaccia utente nella lingua tradotta.
Quando si traducono altre estensioni, assicurarsi che l'attributo originale nell'elemento <file> nel file xliff non sia impostato sul nome dell'app corrente.
In caso contrario, le traduzioni vengono usate solo per tradurre le etichette nella stessa app.
Per le app in cui le traduzioni devono tradurre l'app corrente, il file xliff generato avrà il valore corretto del nome dell'app.
Usare il <trans-unit id> dell'etichetta in cui è stato definito
Per tradurre altre app, è necessario usare il <trans-unit id> della proprietà originale e non quello di un oggetto estensione, che potrebbe essere stato oggetto di modifiche.
Se MyPage è definito come:
al-languageCopy
page 50000 MyPage { Caption = 'Base Page' }
e ha il <trans-unit id> per la pagina corrispondente a Page 2931038265 - Property 2879900210.
E se la seguente estensione di pagina di MyPage denominata MyPageExtension:
al-languageCopy
pageextension 50000 MyPageExtension extends MyPage { Caption = 'Extension Page'; }
ha <trans-unit id> per l'estensione di pagina corrispondente a PageExtension 1716690578 - Property 2879900210, se si desidera modificare l'etichetta nella pagina è necessario usare ID Page 2931038265 - Property 2879900210, ovvero il <trans-unit id> della proprietà originale.