All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Changelogs are for humans, not machines.
- There should be an entry for every single version.
- The same types of changes should be grouped.
- Versions and sections should be linkable.
- The latest version comes first.
- The release date of each version is displayed.
- Mention whether you follow Semantic Versioning.
- Added for new features.
- Changed for changes in existing functionality.
- Deprecated for soon-to-be removed features.
- Removed for now removed features.
- Fixed for any bug fixes.
- Security in case of vulnerabilities.
- Remove the
America/Rainy_Riveroverride to Chicago so TZInfo follows IANA timezone data, which aligns northwestern Ontario with Manitoba on permanent UTC-5 from November 1, 2026. Map its Rails-compatible fallback toAmerica/Bogota, matching Winnipeg. - Add translations for the four Canadian time zones in 13 more languages. #628
- Add
bn,ca,et,eu,gl,gu,ka,lv,mr,sr,ta,te, anduktotranslation.ymltarget languages so the Translation Platform generates localizations of the region address data #611
- Normalize
America/Rainy_RivertoAmerica/Chicagoto preserve Central Time clock changes.
- Add Vancouver, Whitehorse, Edmonton, and Winnipeg to
Worldwide::TimeZone.allwith localized labels, permanent-offset ordering, and Rails-compatible legacy mappings. #625
- Add
contains_emailerror messages to every address field that has acontains_urlmessage, including the country-specific overrides for relabeled neighborhood and district fields, so address validators can tell buyers a field can't hold an email address. #618
- Add the missing
2061postcode to Australia's example address and correct its suburb to Kirribilli. #606 - Remove the Brazilian
address1_regexpattern that split a comma-delimited building number followed by a complement keyword, added in 1.26.3. #613
- Accept
USDCas the only supported non-ISO currency code, while malformed and other unknown codes stay out of the currency cache. #607 - Apply CLDR fallbacks for hosts that read
I18n.fallbacksfromThread.current, which stopped seeing them in 1.25.6. #607
- Add
Region#iso_3166_code_assigned?to distinguish currently assigned ISO 3166-1 alpha-2 codes from other region codes. #598 - Reject malformed currency codes before caching. #596
- Add IE Eircode routing keys
N39(Longford) andN41(Carrick-on-Shannon) to each other'szips_crossing_provincesentries, so both are valid for Longford and Leitrim. #601 - Avoid retaining unknown locale codes in the global locale cache. #597
- Avoid excessive backtracking in Dutch address fallback parsing. #599
- Add the 81 province (il) zones for Türkiye (
TR-01..TR-81), staged behindignore_provincesandhide_provinces_from_addresses. Each zone carries its plaka number as azip_prefix, so a province can be inferred from the postal code. Address forms and validation are unchanged until the flags are removed.
- Select CLDR storage based on i18n's config behavior instead of Ruby's Fiber API. #586
- No longer require building number for Chile. #585
- Fix
address1_regexfor NL/BE/DE so house numbers with uppercase unit letters (Voltastraat 2 A), hyphenated ranges (Philippusweg 3-5), roman-numeral suffixes (Kerkstraat 12-II), and NL streets starting with an ordinal (1e Helmersstraat 5) split correctly instead of dumping the whole value intostreetName. #565
- Add IE Eircode routing key
H16(Cootehill) tozips_crossing_provincesso it is valid for both Cavan and Monaghan. #562
- Add
Worldwide::BusinessNames.abbreviatedfor script-aware abbreviation of a single business name string. #538 #553 - Add
Worldwide::Names.abbreviatedto abbreviate personal names by script. #539 - Fix trailing whitespace in formatted Japanese addresses when the postal code is blank or excluded. #548
- Fix
Address#formatdropping backslash sequences (e.g.\2) in field values. #533
- Bump i18n from 1.14.1 to 1.15.2 (now required as
>= 1.15) and updateCldr.with_cldrto mirror i18n's fiber-aware config and fallbacks storage so the CLDR config still applies on Ruby 3.2+. #540
- Fix Nova Scotia HST rate from 15% to 14% #529
- Update translations: buyer #523
- Add
ar,he, andurtotranslation.ymltarget languages so the Translation Platform generates RTL localizations of the region address data #519 - Fixed: format Urdu (
ur) percentages with a trailing % sign in numeric layout order (e.g.2%instead of%2), matching the existing Hebrew behaviour. #518
- Bump phonelib from 0.10.17 to 0.10.22 to pick up updated libphonenumber metadata.
- Update postal code expectations in Portugal to require seven digit postal code (XXXX-XXX) #493
- Add district and subdistrict address fields, labels, and validation messages.
- Update CLDR subdivision names for IT-OT (Gallura Nord-Est Sardegna) and IT-CI (Sulcis Iglesiente) in
:en,:it, and:deonly; other locales remain on stale upstream CLDR pending an upstream fix #458
- Update zips_crossing_provinces in IE #454
- Update IT Sardinian provinces and zip prefixes #451
- Add zip code prefix support for Ireland (IE) #440
- Bump phonelib from 0.8.7 to 0.10.17, fixing phone validation for newly allocated number prefixes (e.g. Saudi Arabia
57x) - Bump mocha from 2.0.2 to 3.1.0 for compatibility with newer minitest
- Mark 17 countries as tax-inclusive: AR, CL, CO, EG, ID, IL, KZ, MX, PE, PH, QA, SA, KR, TW, TH, AE, VN #438
- Add CLDR unit formatting support for 12 new measurement categories: area, duration, electric, energy, frequency, light, power, pressure, speed, temperature, digital, and graphics (~50 new unit keys with locale-aware formatting) #436
- Fix
patch_units_fileto handle CLDR alias references stored as Symbols inrootlocale #436
- Add
address1andaddress1_with_unitformatting keys for NL #427
- Update Israel VAT rate from 17% to 18%
- Fix GB postal code regex to reject invalid outward code formats (AA99A, A99A) that were incorrectly accepted (e.g., "KT11X 2JH")
- Fix LU postal code regex to allow zero as first digit for packstation addresses (e.g., "0692")
- Bulgaria to start using EUR as its official currency as of Jan 1, 2026 #413
- Patch pt subdivisions to remove superscript marker on Spanish provinces #392
- Add has_provinces? method to Region #396
- Add new method zip_type to determine if a postal code is
NUMERIC,ALPHANUMERIC, orNUMERIC_AND_PUNCTUATION#395
- Fix broken CLDR data rake tasks #389
- Read paths files in
configure_i18ninstead of at module initialization (ibid.) - Regenerate files to include minor translation updates from previously released changes (ibid.)
- Add CI for CLDR data rake tasks (ibid.)
- Add Traditional Chinese translations for Chinese provinces and subdivisions of Taiwan #390
- Update Romania VAT rate from 19% to 21% #379
- Add iana_to_rails_time_zone mapping for America/Coyhaique #378
- Remove postal codes requirement for Romania #375
- Require postal codes in Romania #368
- Add name formatter translations for missing languages #367
- Update South Africa to be considered Tax Inclusive #352
- Add has_cities? method to regions #331
- Update known zip prefixes for Portugal (PT) [#332]#332
- Allow zone lookup by partial zip if country hides provinces [#332]#332
- Add
has_zip_prefixes?andneighborsmethods to Region [#332]#332
- Add
ignore_provincesto regions #329
- Update Indonesia tax rate to 12%
- Set Malaysia and Singapore as tax_inclusive #323
- Update or correct example zips #324
- Correct zip regex patterns and make them Javascript-compatible #325
- Add zip requirement and tax inclusive methods to country regions #320
- Set Ireland (IE) zip as a required address field #321
- Speed up configure_i18n by precomputing paths and indexing descendants #316
- Update BV phone number prefix to 47 (Norway) #318
- Update Finland's (FI) tax rate #319
- Add street_number.missing_building_number messages #313
- Update translations #303
- Improve Worldwide::Config.configure_i18n performance #301
- Add
zip_prefixesfor Spain. #295 - Move expensive resource initialization into an explicit
eager_load!namespace method #297
- Update BR address1_regex to remove lookbehinds #
- Update Address splitting methods to split on the first delimiter #291
- Configure regexp timeout in Worldwide#Phone #290
- Add address1_regex to regions #281
- Add address1_regex for BE, CL, MX, ES, IL #282
- Add address1_regex for DE #286
- Update legacy timezone mappings for Europe/Kiev #288
- Add alternate Arabic names for UAE zones #283
- add support for additional address fields streetName, streetNumber in DE #273
- set additional_field neighborhood as required in BR #279
- Update legacy timezone mappings for America/Indianapolis and Asia/Calcutta #267
- Nothing, released by mistake.
- Update NZ postcode prefixes #265
- Associates Kosovo with Southern Europe #216
- Update iana_to_rails_time_zone mappings for 11 tz's, add time zone data consistency tests#259
- Add consistency test for default and optional field labels #258
- Introduce example_address to the worldwide region, update country ymls #257
- Improve tests related to building number requiredness #249
- Update Dutch translations for street_number #236
- Move Units constants
SUPPORTED_HUMANIZATIONSandMEASUREMENT_KEYStoWorldwide.units.supported_humanizationsandWorldwide.units.measurement_keys#240 - Allow house numbers on address2 for Japan #245
- Support multiple script-based address concatenation rules for each country #224
- Fixed a typo in list of supported scripts from
LatntoLatin
- Make street number optional in CL #228
- Add translations for neighborhood error strings in AE, CR, KW, PA, PE, SA #220
- Add localized error strings for neighborhood in AE, CR, KW, PA, PE, SA #215
- Change delimiter from Non-Breaking Space to Word Joiner #221
Patch release containing many non-english translation updates
- Update translations for neighborhood too_long error message, add translations for localized neighborhood errors in MX, PH #191
- Generate concatenated address1/2 values when some additional field values are present #199
- update street_name and street_number too_long error message #203
- Additional field definitions in AE, CR, KW, PA, PE, SA, updated decorators for PH, VN #206
- All error messages now contain an
_instructionaland_informativekey. If theWorldwide::Field::errormethod is called with acodethat does not end in either_instructionalor_informative, theWorldwide::Field::errormethod will append_instructionalto thecodeand returns this error message. #205
- Merge duplicate language definition on some region yaml files to restore missing languages;
NOadds "en" and "nb",SAadds "en", SG does not change #188 - updated format_extended for TW VN [#187]#187)
- Add IANA timezone to rails timezone mappings #194
- Add support for
_instructionaland_informativeerror message types. Fields without an_instructionalerror translation key, will fall back to their previous field's error message #140
- update neighborhood too_long error message, add MX, PH neighborhood labels #182
- Created npm package
@shopify/worldwide(see README.md) #167 - Update additional_address_fields and introduce combined_address_format definitions, introduce Region#{field}_required? methods for street_name, street_number, and neighborhood #177
- Add support for a line2 address field #173
- Re-add city to UAE address form and disable city autofill #175
- Add Address#split_address1 and Address#split_address2 methods #165
- Add Address#concatenated_address1 and Address#concatenated_address2 methods #158
- Updated root translation keys for regional locales
bg-BG,hr-HR,lt-LT,ro-RO,sk-SK,sl-SIto the base locale (e.g.bg) #164. - Remove city from UAE address form and enable city autofill #159
- Support additional fields in IL, update streetNumber and neighborhood requirement for BE, CL, ES, MX #166
- Add missing
address1andaddress1_with_unitformatting keys for GB #160.
- Use
>=instead of~>foractivesupportin.gemspec#156
- Add pry-byebug gem #149
- Introduce additional_address_fields to Region class and define them for BE, BR, CL, CO, ES, ID, MX, NL, PH, TR, VN #148
- Define format_extended attribute on 12 country regions #150
- Handle blank strings for Region, country_code parameter in Zip normalization #138
- Reposition zip in NF show: format to come after country, not before city. #142
- Allow building number on address2 for CH #143
- Attempt to fix stringio incompatibility with Ruby 3.3 (deployment error) #145
- Add country_prefix to phone #133
- Add autofill_city to region #132
- Re-introduce city from UAE address form and disable city autofill #131
- Add translations for regionalized zip_unknown_for_address, province_unknown_for_address #125, #126
- Remove city from UAE address form and enable city autofill #127
- Add logic for known-to-exist extant outcodes for GB #136
- Add regional language for zip_unknown_for_address, province_unknown_for_address. Remove error message for zip_unknown_for_street_and_city #121
- Fix broken CLDR
import/patch/generaterake tasks #119 - Patch El Salvador department names, standardizing on not including "department of" #120
- Add translations for address line 1, 2 concern messages #115, #116
- Make new concern messages more generic for address line 1, 2 #114
- Add localized concern messages when field is unknown for address #109
- Return early if country_code is nil Zip::Normalize #110
- Add Thai to the list of scripts identified by
Worldwide::Scripts.identify. #96 - Add translations for address fields with invalid province errors. #97
- Add translations for address fields with mathematical symbols errors. #92
- Enable lookup of Region by alternate name. #93
- Allow lookup of EU region using alternate code QUU. #94
- Patch in a name for CQ (Sark). #84
- Patch data related to region 830 (Channel Islands). #85
- Patch name of SZ (eSwatini) in Italian. #86
- Patch names of HK and MO in zh-TW and zh-Hant. #87
- Patch name of GB (United Kingdom) in Suomi. #88
- Support address field lookup when there is no country code. #82
- Prefer "SAR" over "SAR China" in Chinese-language names for regions
HKandMO. #79. - Add Worldwide::Field.valid_key? method. #80
- Patch some territory names (BQ, NL, TF, TR) #77
- Allow building numbers on address2 field for Portugal addresses #73
- Allow building numbers on address2 field for Polish addresses #71
- Allow building number in address2 for BE #70
- Update Singapore GST in preparation for January 1 2024 increase #68
- Change HM, TF and GS
group_nameto respective continents based on M49. #60
- Zone lookup by Hash #61
- Allow building number in address2 for DK #53
- Avoid .present? and .blank? so we don't require Rails #57
- (bugfix) Zone lookup by name #58
- Add localized concern messages for address1 + 2 warnings and address may not exist message #54
- Change gem description #51
- Fix for building_number_required to default to false [#48]
- Add support for
Region#associated_continentto return the containing continent of the region #43 - Add more postal code prefixes for KR #44
- Add name alternates for the zones of South Korea #45
- Add support for Hangul and Arabic script detection, update Latn regexp #46
- Add support for deprecated timezone Australia/Canberra #35
- Add alternate codes for territories #39
- Allow building numbers on address2 field for Austrian addresses #40
- Add zone name alternates for Italy #42
- Add region name alternates #32
- Cache
Region#parent_name#33 - Use hash tables to look up regions by code #36
- Add code alternates for Japan #23
- Add code alternates for Puerto Rico #24
- Record multiple parents per region #27
- Add region.building_number_may_be_in_address2 #28
- Lookup by parent-child ISO and CLDR codes for dual-status territories #29
- Handle ISO_CODE only zones lookup #26
- Add Region#group and Region#group_name #15
- Ensure Region#has_zip? returns a boolean for all regions #17
- Zip normalization bugfix when parent isocode is not set #6
- Update region parent when alternates are defined #18
- Add partial matching for Region#valid_zip? #19
- Fix issue with deploy to rubygems.org failing
[0.1.0] - 2023-10-27
- Initial release of Worldwide