gettext的效率:内存中的翻译

我有一个embedded式系统与Flash和一个非常低端的CPU和较less的RAM。 我想知道使用.MO文件gettext语言翻译的效率。

为了进行语言环境语言string获取,每次gettext从flash读取MO文件时,首先将完整的MO二进制文件加载到RAM中,并从那里执行语言环境string提取?

如果MO文件(由于有很多string会很大〜1Mb)总是加载到RAM中,所以会消耗掉我的RAM。

正如MSalters所说,它是开源的,所以你可以调整它。

如果你给出了一个更完整的系统定义(根据我的评论),我们可能会有更多的帮助。

如果这是一个深度嵌入式系统(我所做的),没有操作系统,也没有任何类型的外部文件系统,这些字符串都必须在内存中。 很可能有一种机制来将这些字符串存储在闪存中,以便它们不消耗RAM。

例如,在ARM上,数据结构可以很容易地存储在闪存中。 要做到这一点,你需要告诉编译器哪个程序段存储他们,使用像这样的东西:

const char mesg1[] __attribute__((section (".USER_FLASH"))) = "Ciao a tutti"; const char mesg2[] __attribute__((section (".USER_FLASH"))) = "Riesco a sentire la mia mente va Dave"; 

链接程序时,需要写入链接描述文件以将字符串放入Flash中,而不会将其复制到RAM中。

大概多少空间可以奉献给消息? 他们需要多少空间?

你可能正在打一个研究得很好的问题; 随着资源限制的接近,编程工作量呈指数增长。 将内容填充到最后的几个百分比内可能需要很大的努力。

一旦“明显”的调整是尝试一些简单的压缩技术。 可能会在原始消息上应用,并且在消息被打印时解压缩。

编辑:我认为你的问题看起来非常直截了当,我认为答案很简单。

我看了一下gettext文档,但没有找到它。 我下载了源代码。 十分钟后,我真的不能告诉你它是如何工作的。 我可以告诉你这比我想象的复杂得多。 我看了大量的文档。 许多关于如何最好地组织翻译的文件,关于如何编写程序,关于可能导致问题的事情。 非常有用的见解。 然而,我找不到任何文件解释其整体运行时架构。 没有。 没有。

我最好的建议是去GNU的gettext邮件列表,搜索/看,如果有必要问。 邮件列表档案可以在http://savannah.gnu.org/projects/gettext/找到,我很抱歉,我不能更有帮助。