- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个带有闪存和非常低端 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/
我听说 Translate API 需要付费,但究竟是什么阻止了我们使用免费的 Google 翻译服务 here免费 ?否则,免费服务的限制是什么? 最佳答案 根据下面的链接,没有什么可以阻止您。 h
我正在修复我的 Karma 配置以运行 Angular2 - rc 1 版本的测试。我可以运行测试,但如果我在 html 中有一个翻译管道,它们就会失败。(我可以让它工作的配置是从 [这里][1] 得
我正在使用以下代码: GttService myService = new GttService("ex1cor.ex1Ap.1"); myService.setUserCredentials("ex
是否可以在 Silverstripe 3 中翻译数据对象? 我使用这个模块: http://www.silverstripe.org/translatable-module/ 在我的配置中是否定义了以
我有以下三个问题 我想使用 Google 的 API 来翻译文本。我知道谷歌对翻译和检测单独收费。谷歌翻译也支持翻译两种翻译方式 i) 通过指定源和目标,如 https://www.googleapi
我一直在使用 Microsoft Translator 的 HTTP API 来翻译我网站上的文本。 作为the documentation describes , 有一个选项可以指定翻译的类别。找不
当您在 localhost 上开发应用程序时,是否有机会在不获取 key 的情况下使用 Use Google Translation API? 我希望这样的事情能够奏效' https://www.go
我正在尝试翻译实体的某些字段,但在尝试创建对象时出现以下错误... id; } /** * Set name * * @param string $nam
当用户访问我们的网站时,我们使用 Google Translate API 将我们的内容翻译成用户的语言。 (当然,我们遵循署名和链接要求,以便用户知道内容是 Google 的翻译。) 为了优化,我们
我非常频繁地使用谷歌翻译 API V2,在大约 2000 个请求之后,我开始在返回的 JSON 中得到这个: Array ( [error] => Array (
我刚开始使用 Google 翻译 API,在测试过程中我们注意到,对于某些翻译(我尚未找到模式),我们会在响应中收到\u200b 字符。这会导致很多问题,最重要的是,它似乎没有任何目的或没有任何意义。
从laravel 5.8升级到laravel 6.0后,发现这个错误。 Method Illuminate\Translation\Translator::getFromJson does not e
这是一个基本的移动滑入/滑出菜单。 我发现很难调试,但基本上我的问题是,当我按下菜单按钮时,菜单会顺利打开,再次按下它会顺利关闭。然而,当我再次按下它(第三次)时,它不顺利打开,它只是出现。但是它仍然
我的 Android Studio 的翻译编辑器无法正常工作。如果我打开翻译编辑器确实列出了字符串的正确键,但是找不到默认值和翻译。所有键都有一个默认值,其中大多数也有一个翻译。 我重新启动了 And
我正在尝试从 python 控制台而不是通过 bazel -build 运行 Tensorflow 的 translate.py,但我在这两行出现错误: from tensorflow.models.
本文整理了Java中org.apache.tika.language.translate.YandexTranslator.translate()方法的一些代码示例,展示了YandexTranslat
我需要来自 Google Transle API 的同义词信息。有没有可能得到它? 最佳答案 抱歉不行。看到这个 post .看起来他们opened a PIT添加功能。你应该给它加星号来增加重量!
我在我的一个项目中使用 Google Cloud Translation API。我想指定翻译的性别。我无法在 Google Cloud Translation 中找到相关信息。我也在互联网上搜索了很
我已经在我的 Angular-Cli 应用程序中实现了 ngx-translate 并且在我执行以下操作时工作正常: {{ 'some.value' | translate }} 但是我该如何翻译 H
我决定在我的项目中使用 Google Cloud Translation API。在我尝试运行他们的脚本之前,一切似乎都很好。它总是说我需要“使用 require([])”。 在我在 require
我是一名优秀的程序员,十分优秀!