繁体   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