gpt4 book ai didi

c - gettext : in-memory translation 的效率

转载 作者:太空狗 更新时间:2023-10-29 12:36:39 28 4
gpt4 key购买 nike

我有一个带有闪存和非常低端 CPU 和更少 RAM 的嵌入式系统。我想知道使用 .MO 文件进行 gettext 语言翻译的效率如何。

为了获取区域设置语言字符串,每次 gettext 从闪存中读取 MO 文件或者,首先将完整的 MO 二进制文件加载到 RAM,然后从那里获取区域设置字符串?

如果 MO 文件(它会很大~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 文档,但未能在那里找到它。我下载了源码。 10 分钟后,我真的无法告诉你它是如何工作的。我可以告诉您,这比我预期的要复杂很多。我查看了广泛的文档。关于如何最好地组织翻译、如何准备程序以及可能导致问题的事情的大量文档。非常有帮助的见解。然而,我找不到任何 解释其整体运行时架构的文档。没有任何。没有。

我最好的建议是访问 GNU gettext 邮件列表,搜索/查看,如有必要请询问。邮件列表文件可以在 http://savannah.gnu.org/projects/gettext/ 找到。很抱歉,我不能提供更多帮助。

关于c - gettext : in-memory translation 的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com