跳轉到主要內容

二進位翻譯

本節描述如何在TouchGFX中使用二進位翻譯。 正常情況下,文字翻譯檔會被編譯到應用中。 這一原則高效且易於使用。 二進位翻譯使應用程式不含文字翻譯。 二進位翻譯在單獨的二進位檔案中生成,該檔可燒錄到快閃記憶體中或存儲在SD卡等存放裝置上。 在處理大量翻譯檔時,為應用開發者帶來了更大靈活性。

翻譯

TouchGFX中的Text類包含指標陣列,指標指向應用中每種語言的翻譯表。 翻譯表基本上是語言中使用的所有字串的集合:

將文字映射到特定語言

此表使TouchGFX能夠找到以選中語言書寫的給定文字。

映射到二進位翻譯

在執行時間使用二進位翻譯時,可以將映射從內編譯翻譯更改為二進位翻譯。 必須在可定址記憶體(快閃記憶體或RAM)中提供二進位翻譯。 例如,可以從硬碟載入或在生產過程中寫入快閃記憶體。

配置文字轉換器

可將TouchGFX文字轉換器配置為生成二進位翻譯。 這在TouchGFX Designer 4.13中很容易做到。 轉至“Config”選項卡,選擇“Text Configuration”,然後點擊“Binary translation files”

啟用二進位翻譯

在下一次生成程式碼時,二進位翻譯將會出現在generated/texts/binary資料夾中。

在生成二進位翻譯時,編譯到應用中的翻譯文件為空。 因此,除非載入二進位翻譯,否則不顯示文字。

安裝二進位翻譯

如果記憶體中已有應用的二進位翻譯,則可以在TouchGFX中安裝它。 現在,TouchGFX將使用該翻譯檔。 根據應用,可以在不同位置或時間進行(可使用gui/src/common/FrontApplication.cpp中的FrontendApplication::FrontendApplication(Model& m, FrontendHeap& heap)構造函數)。

在下面的範例中,我們從檔案系統讀取英語的翻譯檔並將其安裝為語言“GB”。

//read the translation into this global array
uint8_t translation[10000];
...

//read the translation from a file, or change array to a pointer that points
//to the translation data in internal or addressable external flash
FILE* file = fopen("generated/texts/binary/LanguageGb.bin", "rb");
if (file)
{
//read data from file
fread(translation, 1, 10000, file);
fclose(file);

//replace empty translation with the binary data
Texts::setTranslation(GB, translation);

//always change language to get TouchGFX changed from the
//empty translation compiled in to the binary translation
Texts::setLanguage(GB);
}

注意,在安裝翻譯檔後,必須更改語言。 否則,TouchGFX仍將使用之前的翻譯檔。 閱讀 此處關於更改語言的更多內容。

另外,還必須強制重繪當前螢幕或更換螢幕,以便查看最新文字(如果在為顯示器上使用的語言載入翻譯檔)。 TouchGFX不會自動重繪任何內容。

可通過讓根容器無效來重繪當前螢幕:

invalidate();

這將強制重繪。 在某些情況下,最好更換螢幕,以便從頭進行設置(如重新計算TextArea大小)。 通過在TouchGFX Designer中創建具有“Change Screen”操作的交互,可以更換螢幕。 參加相關文章