绝大多数的国际化APP是通过api请求返回不同的语言来实现的。 所谓“内容”指的并不是APP的UI界面,而是APP所承载的内容信息。
我在这里提供了一个不同的思路,核心思想就是把原本在云端API多语言查询的部分利用Sqlite嵌入到App内部去实现。原因有三:
第一、针对特定内容,信息有边界的数据,把数据从云端嵌入到本地会得到更快的响应速度。
第二、多语言APP的用户是各个国家地区的人员,网络情况复杂,把数据从云端嵌入到本地不受网络影响可以离线使用。
第三、我没有云端的服务器 😂
技术选型
整体APP采用Flutter来进行开发,可同时完成iOS和Android两个版本的APP。 在Flutter框架层面选择了GetX框架,这个框架上手非常的简单,并且是一个高度整合的框架。基本上常用的功能如路由、状态机、依赖、主题、国际化等等都已经内置进去了,可以说对新手是非常的友好。
对Sqlite数据的操作选择了Flutter库中的Floor,我非常喜欢他的定义Entity这个特性,在后续的开发中做数据的提取绑定非常的友好。当然目前这个库还不能支持全套的Sqlite特性,比如说不能用"count(*)"来统计数据,但可以用Sqlite中的视图特性来做规避。
在内容管理方面,这里选择了Strapi,使用Sqlite数据库并启用多语言支持。这样我们会得到一个Sqlite的数据库。通过定制Strapi的配置文件能完美的和Flutter项目集成到一起。
推荐一些非常方便的工具,DBeaver 这个用来查看管理Strapi项目生成的Sqlite数据库实际的数据结构。还有一个网站“remove bg”我实在是太喜欢这个网站了,在开发APP时它能完美的帮你移除图片素材中的背景,使得你的APP能增色不少!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。