gpt4 book ai didi

c - 没有文件系统的 Gettext

转载 作者:太空狗 更新时间:2023-10-29 17:25:13 26 4
gpt4 key购买 nike

对于带有 GUI 的嵌入式系统,我们使用我们的自定义翻译系统。字符串存储在微 Controller 的代码 ROM 中。

目前我们有多达 10 种语言和大约 400 个翻译字符串(因产品变体而异)。

我们目前的系统相当笨重,我相信 gettext 会是一个更好的解决方案。

据我了解 gettext,它需要使用 bindtextdomain 来设置包含已编译翻译文件 (*.mo) 的目录。

有没有办法代替从内存中读取翻译?那就是我想在二进制文件中包含编译后的 *.mo 文件,并设置 gettext 来使用这些文件。或者,翻译数据将存储在没有文件系统的数据 EEPROM 中。

或者您能否推荐一种不同的翻译系统用于带有 C 接口(interface)的微 Controller 系统(16 位或 32 位,256 至 512 KB ROM)?

编辑:我应该补充一点,能够在微 Controller 固件之外维护翻译将是切换到 gettext 的一个原因。用户可以使用我们已经随系统提供的配置软件加载适当的翻译数据。

最佳答案

这就是我要做的:我会在代码的常量变量中包含二进制“.mo”。您可以编写一个从二进制到字符数组的简单转换器,并在您的程序中编译该“.mo”文件。您将拥有一组“.mo”文件数据,每个文件数据都有不同的语言。

我会修改 libintl 源代码以访问其中一个数组。检查文件 loadmsgcat.c,函数 _nl_load_domain。在那里查看它如何尝试使用 mmap()(因此它已准备好将所有内容存储在内存中)。只需在此处添加一些代码,即可根据请求的语言决定使用“.mo”数组的哪个元素。

我还没有尝试过这个,但根据您的情况,我会尝试这样做。看起来不太难。

关于c - 没有文件系统的 Gettext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455401/

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