From a0e1c500409daff696a60670966f58d1864b81ef Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 4 Dec 2025 10:54:33 +0000 Subject: [PATCH 1/2] Add ISO 3166-1 user-assigned code elements ISO 3166-1 reserves certain alpha-2 codes for user assignment: - AA - QM to QZ - XA to XZ - ZZ These codes are part of the ISO 3166-1 standard and are reserved for users who need to add further code elements for their own purposes. They will never be assigned to actual country names by ISO. Common uses include: - XX: Unknown or Unspecified Country - XY: Anonymous Country (for privacy) - XK: Kosovo (used by European Commission) - ZZ: Unknown or International Reference: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#User-assigned_code_elements --- server/tx/tx_countrycode.pas | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/server/tx/tx_countrycode.pas b/server/tx/tx_countrycode.pas index c4be9ccc9..1271dc095 100644 --- a/server/tx/tx_countrycode.pas +++ b/server/tx/tx_countrycode.pas @@ -440,6 +440,52 @@ procedure TCountryCodeServices.load; doLoad('ZM', 'Zambia'); doLoad('ZW', 'Zimbabwe'); + // ISO 3166-1 User-assigned code elements + // These codes are reserved for user assignment and will never be used for country names + // See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#User-assigned_code_elements + doLoad('AA', 'User-assigned'); + doLoad('QM', 'User-assigned'); + doLoad('QN', 'User-assigned'); + doLoad('QO', 'User-assigned'); + doLoad('QP', 'User-assigned'); + doLoad('QQ', 'User-assigned'); + doLoad('QR', 'User-assigned'); + doLoad('QS', 'User-assigned'); + doLoad('QT', 'User-assigned'); + doLoad('QU', 'User-assigned'); + doLoad('QV', 'User-assigned'); + doLoad('QW', 'User-assigned'); + doLoad('QX', 'User-assigned'); + doLoad('QY', 'User-assigned'); + doLoad('QZ', 'User-assigned'); + doLoad('XA', 'User-assigned'); + doLoad('XB', 'User-assigned'); + doLoad('XC', 'User-assigned'); + doLoad('XD', 'User-assigned'); + doLoad('XE', 'User-assigned'); + doLoad('XF', 'User-assigned'); + doLoad('XG', 'User-assigned'); + doLoad('XH', 'User-assigned'); + doLoad('XI', 'User-assigned'); + doLoad('XJ', 'User-assigned'); + doLoad('XK', 'User-assigned'); // Note: XK is also used for Kosovo by the European Commission + doLoad('XL', 'User-assigned'); + doLoad('XM', 'User-assigned'); + doLoad('XN', 'User-assigned'); + doLoad('XO', 'User-assigned'); + doLoad('XP', 'User-assigned'); + doLoad('XQ', 'User-assigned'); + doLoad('XR', 'User-assigned'); + doLoad('XS', 'User-assigned'); + doLoad('XT', 'User-assigned'); + doLoad('XU', 'User-assigned'); + doLoad('XV', 'User-assigned'); + doLoad('XW', 'User-assigned'); + doLoad('XX', 'User-assigned'); // Commonly used for "Unknown" or "Unspecified" + doLoad('XY', 'User-assigned'); // Commonly used for "Anonymous" (privacy) + doLoad('XZ', 'User-assigned'); + doLoad('ZZ', 'User-assigned'); // Commonly used for "Unknown" or "International" + doLoad('ABW', 'Aruba'); doLoad('AFG', 'Afghanistan'); doLoad('AGO', 'Angola'); From 828eef5e0f3cbc5dde456f0c33dfa7b70e4ff042 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 5 Dec 2025 12:19:39 +0000 Subject: [PATCH 2/2] Use well-documented display names for common user-assigned codes Update display names based on established usage: - XK: Kosovo (European Commission, IMF, SWIFT, CLDR) - XX: Unknown (WIPO, CABForum) - XZ: International Waters (UN/LOCODE) - ZZ: Unknown or Invalid Territory (Unicode CLDR) --- server/tx/tx_countrycode.pas | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/tx/tx_countrycode.pas b/server/tx/tx_countrycode.pas index 1271dc095..30f4af222 100644 --- a/server/tx/tx_countrycode.pas +++ b/server/tx/tx_countrycode.pas @@ -468,7 +468,7 @@ procedure TCountryCodeServices.load; doLoad('XH', 'User-assigned'); doLoad('XI', 'User-assigned'); doLoad('XJ', 'User-assigned'); - doLoad('XK', 'User-assigned'); // Note: XK is also used for Kosovo by the European Commission + doLoad('XK', 'Kosovo'); doLoad('XL', 'User-assigned'); doLoad('XM', 'User-assigned'); doLoad('XN', 'User-assigned'); @@ -481,10 +481,10 @@ procedure TCountryCodeServices.load; doLoad('XU', 'User-assigned'); doLoad('XV', 'User-assigned'); doLoad('XW', 'User-assigned'); - doLoad('XX', 'User-assigned'); // Commonly used for "Unknown" or "Unspecified" - doLoad('XY', 'User-assigned'); // Commonly used for "Anonymous" (privacy) - doLoad('XZ', 'User-assigned'); - doLoad('ZZ', 'User-assigned'); // Commonly used for "Unknown" or "International" + doLoad('XX', 'Unknown'); + doLoad('XY', 'User-assigned'); + doLoad('XZ', 'International Waters'); + doLoad('ZZ', 'Unknown or Invalid Territory'); doLoad('ABW', 'Aruba'); doLoad('AFG', 'Afghanistan');