Flutter 3.0实现Windows本地化/国际化

参照 Flutter 2.8.1本地化/国际化应用程序名称 可以实现 Android/macOS/iOS/Web 的应用名称相关的国际化。Linux 参考 Flutter 3.0实现Linux本地化/国际化

那么在 Windows 应用上如何相同的功能呢?

下面我们探讨一下一个比较简单的解决方案,就是直接修改RC文件,这个方案适用于涉及到的语言类型不太多的情况

Windows 代码编译,需要安装 Microsoft Visual Studio 2022 Community,但是不能直接使用 Microsoft Visual Studio 2022 Community 编辑 RC 文件,打开就会报错

fatal error RC1015: cannot open include flie 'winres.h'

具体的操作方法如下:

我们假定工程的名字为 LanauageTest

首先在项目根目录下,执行

$ flutter build windows 

生成 build 目录,然后使用 Microsoft Visual Studio 2022 Community 打开 build\windows\LanauageTest.sln 文件。

接着在资源视图中找到字符串资源,选择默认的 StringTable ,然后右键选择 “插入副本

虽然可以使用上面的操作来添加语言,但是只能作为参考,原因在于 Microsoft Visual Studio 2022 CommunityRC 文件编辑器在修改 LanauageTest.RC 文件的时候,把预定义的宏进行了展开,直接使用宏的实际值替代了宏本身,导致这些数据失去动态变化的能力。我们只能手工再编辑一次,恢复原来的宏才可以。

至于使用的话,可以通过 LoadString 加载定义的字符串资源,更详细参考 Using Resources

参考链接