我正在为Ubuntu Touch开发一个时钟应用程序,我正在实现世界时钟功能,用户可以从列表中选择一个城市并查看当地时间。我正在使用QTimeZone
和QDateTime
通过提供timezoneID
来获取某个城市的当地时间。但是,我无法找到可能为我提供世界上常见城市列表的Qt库函数。
注意:我总是可以通过在XML文件中提供数据来自己创建本地城市列表。这种方法的问题在于我需要翻译人员翻译那些巨大的城市列表。这就是为什么我正在寻找一个内置函数来照顾它。
有没有这样的Qt功能呢?
答案 0 :(得分:1)
出于选择时区的目的,如果您只能列出每个时区的代表性主要城市(即80多个城市,而不是200多个城市),您可以参考Android项目下的设置应用程序。在以下目录中 -
https://android.googlesource.com/platform/packages/apps/Settings/+/android-2.3.2_r1/res
在每个xml-[language code]
文件夹下,有一些名为timezones.xml
的文件,列出了每个时区中主要代表性城市的相应语言,以及相应的时区ID。
(英文名称列在xml/timezones.xml
下)
答案 1 :(得分:0)
Qt中没有这样的功能。但是,您可以通过某些地图提供程序使用API来解决此问题,例如 Google地图, OpenStreetMap 等。对于第二个我100%确定它有一个适用于C ++的API。您可以获得您所用语言的城市列表,并尝试使用该API。大多数(全部?)公共地图提供商提供国家和城市名称的翻译(注意:城市!=拥有300名居民的村庄),因此您只需更改区域设置即可。为了防止语言失误,我建议您在内部使用一些与语言无关的例程,例如GPS坐标或类似物。这一切都归结为地图提供商的数据库结构的方式,但我认为我们可以高度自信地说出名称标签,GPS坐标以及 - 谁知道 - 甚至可能存在时区。
PS: @HappyCoder,是的,在某个城市/城镇/村庄和国家/地区的命名方面存在巨大差异。即使在使用拉丁字母的国家,您也可以看到它:
同样适用于城市。如果你加入西里尔文,希腊文,中文,阿拉伯文等,情况会更糟。