区域信息和 GeoId

发布于 2024-11-30 14:23:54 字数 169 浏览 0 评论 0原文

我正在考虑使用 RegionInfo.TwoLetterISORegionName 作为数据库属性,从中获取有关国家/地区的信息。直到我看到RegionInfoGeoId,它看起来更健壮。

您将存储哪些内容来支持国际化?如何从 GeoId 创建 RegionInfo?

干杯,
贝里尔

I was thinking of using RegionInfo.TwoLetterISORegionName to as a database attribute from which to get information about a country. Until I saw RegionInfoGeoId, which seems more robust.

Which would you store to support internationalization? How would you create a RegionInfo from a GeoId?

Cheers,
Berryl

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清眉祭 2024-12-07 14:23:54

使用 P/Invoke 和 GetGeoInfo函数中,您可以从 GeoID 获取一些信息:

    public static string GetGeoInfo(int geoId, SYSGEOTYPE geoType)
    {
        string s = new string('\0', 256);
        int size = GetGeoInfo(geoId, geoType, s, 256, 0);
        if (size <= 0)
            return null;

        return s.Substring(0, size - 1);
    }

    public enum SYSGEOTYPE
    {
        GEO_NATION = 0x0001,
        GEO_LATITUDE = 0x0002,
        GEO_LONGITUDE = 0x0003,
        GEO_ISO2 = 0x0004,
        GEO_ISO3 = 0x0005,
        GEO_RFC1766 = 0x0006,
        GEO_LCID = 0x0007,
        GEO_FRIENDLYNAME = 0x0008,
        GEO_OFFICIALNAME = 0x0009,
        GEO_TIMEZONES = 0x000A,
        GEO_OFFICIALLANGUAGES = 0x000B
    }

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private extern static int GetGeoInfo(int geoId, SYSGEOTYPE geoType, string lpGeoData, int cchData, int language);

但是,请注意,地理位置和区域之间可能没有 1:1 的对应关系。

Using P/Invoke and the GetGeoInfo function, you can get some information from a GeoID:

    public static string GetGeoInfo(int geoId, SYSGEOTYPE geoType)
    {
        string s = new string('\0', 256);
        int size = GetGeoInfo(geoId, geoType, s, 256, 0);
        if (size <= 0)
            return null;

        return s.Substring(0, size - 1);
    }

    public enum SYSGEOTYPE
    {
        GEO_NATION = 0x0001,
        GEO_LATITUDE = 0x0002,
        GEO_LONGITUDE = 0x0003,
        GEO_ISO2 = 0x0004,
        GEO_ISO3 = 0x0005,
        GEO_RFC1766 = 0x0006,
        GEO_LCID = 0x0007,
        GEO_FRIENDLYNAME = 0x0008,
        GEO_OFFICIALNAME = 0x0009,
        GEO_TIMEZONES = 0x000A,
        GEO_OFFICIALLANGUAGES = 0x000B
    }

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private extern static int GetGeoInfo(int geoId, SYSGEOTYPE geoType, string lpGeoData, int cchData, int language);

But, beware, you may not have a 1:1 correspondence between a Geographic location and a Region.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文