gpt4 book ai didi

android - 使用 NDK 在 Android 上进行本地化/本地化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:04 25 4
gpt4 key购买 nike

我已将我的 C++ iOS 游戏引擎移植到 Android,它在返回到 Android 2.2 的设备上运行良好,但在支持本地化方面遇到了问题。

C++ 引擎加载使用 poedit 创建的 .po (gettext) 本地化文件并将它们放入 std::wstring 中.这在我支持的其他平台上工作得很好,但在 Android 上不起作用,因为 NDK 不正确支持 wchar/wstring。参见 github对于我当前的(非常基本的)实现。

现在,我想我可以手动将多字节字符串转换为自定义的 std::basic_string<uint_32> .如 - Android NDK C++ 'wstring' support 中所建议

在大多数情况下这很好,但人们如何处理字符串格式?虽然我的大部分字符串只是文本,不需要任何格式,但有些字符串类似于“干得好 %1$s,你得分 %2$d!”。

人们如何在没有 swprintf 的情况下处理这些字符串的格式?支持吗?

是否有推荐的方法在不依赖 wchar/wstring 支持的情况下可靠地处理跨平台本地化(我认为无论如何都不推荐 - 但似乎没有人提出不依赖 20MB+ 库的可行替代方案不适合移动设备)?

非常感谢。

最佳答案

我已经设法让它工作了。我没有在整个应用程序中使用宽字符串,而是将其转换为在整个应用程序中使用 UTF8。这使我可以像往常一样使用 sprintf(当然也有一些异常(exception),比如限制字符串长度是行不通的)。然后,我在字体渲染器中将字符串转换为 UTF32,这样我就不必即时解码 UTF8。

实现刚刚上传到github对于 localisationfont renderer

引用资料

Unicode usage in video games
UTF8 everywhere

关于android - 使用 NDK 在 Android 上进行本地化/本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948844/

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