簡體   English   中英

沒有文件系統的Gettext

[英]Gettext without a filesystem

對於帶GUI的嵌入式系統,我們使用自定義翻譯系統。 字符串存儲在微控制器的代碼ROM中。

目前,我們有多達10種語言和大約400個翻譯字符串(根據產品型號而有所不同)。

我們當前的系統相當繁瑣,我相信gettext將是一個更好的解決方案。

據我所知,gettext需要使用bindtextdomain來設置包含已編譯翻譯文件(* .mo)的目錄。

有沒有辦法從內存中讀取翻譯? 那就是我想在二進制文件中包含已編譯的* .mo文件,並設置gettext來使用它們。 或者,翻譯數據將存儲在沒有文件系統的數據EEPROM中。

或者你能推薦一個不同的翻譯系統用於帶C接口的微控制器系統(16或32位,256到512 KB ROM)嗎?

編輯:我應該補充說,能夠維持除微控制器固件之外的翻譯是切換到gettext的原因。 用戶將使用我們已經提供給我們系統的配置軟件加載適當的翻譯數據。

這就是我要做的:我會在代碼中的常量變量中包含二進制“.mo”。 您可以編寫一個從二進制到char數組的簡單轉換器,並在程序中編譯“.mo”文件。 您將擁有一組“.mo”文件數據,每個數據都使用不同的語言。

我會修改libintl源代碼來訪問其中一個數組。 檢查文件loadmsgcat.c,函數_nl_load_domain 看看它是如何嘗試使用mmap() (因此它准備將所有東西都放在內存中)。 只需在那里添加一些代碼,根據請求的語言決定使用“.mo”數組的哪個元素。

我沒試過這個,但這是我會根據你的情況嘗試的。 看起來並不太難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM