worldwide 1.8.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10690cd44e02d998b8ca4ee789e61249a38ea26de8170510ccdd9db4eb025f19
4
- data.tar.gz: 0700e6a0e322cccab5562e430ccc5d44a898759e51b1886f61e3d92c079315fb
3
+ metadata.gz: e95f2e0fb163b3ca71052724364003e66adaede98d891ba85b9fcb950bb45403
4
+ data.tar.gz: 87597cf4738a6cad9e32d1a13f1aad9bca0dc67c49999e18ab712fa9bc0b4ced
5
5
  SHA512:
6
- metadata.gz: 7fb8e5ca9731b7c01e2c0326a6196200a58b313d9ec4e5fce2d32a6deafa442f49da95afac4c5cf6d465ade8c4a8c0665aabf8dcea576c48133fde457a9ff06a
7
- data.tar.gz: 7bac429acb03a74cb3f408d606dc4691c164b72d6e619079f7782a420bdad4208f37498a9b1d29edf898b89ab3d5de72c81512a5bfcde1b9ab27304ddcf70f78
6
+ metadata.gz: c9d46c593759a7470a3c2c3cab66ea9100f1afdada955c54cdedcb63ab6a9fb1ca2365596e69301fd8f8194f5f82a19a042ea95096cee6c766cad85fc58dbb5a
7
+ data.tar.gz: 90a72f40fb35d3f782f190833f52c7e09625a32f7972fb757edb3d9ebb097050c0c38037846b293e5e84f637feb3e014faf185b5ea0dffbdba953759ea76b252
data/CHANGELOG.md CHANGED
@@ -26,9 +26,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
26
26
  - Security in case of vulnerabilities.
27
27
 
28
28
  ## [Unreleased]
29
+ - Nil.
29
30
 
30
31
  ---
31
32
 
33
+ ## [1.10.0] - 2024-09-16
34
+ - Add alternate Arabic names for UAE zones [#283](https://github.com/Shopify/worldwide/pull/283)
35
+
36
+ ## [1.9.0] - 2024-08-12
37
+ - add support for additional address fields streetName, streetNumber in DE [#273](https://github.com/Shopify/worldwide/pull/273)
38
+ - set additional_field neighborhood as required in BR [#279](https://github.com/Shopify/worldwide/pull/279)
39
+
40
+
32
41
  ## [1.8.0] - 2024-08-09
33
42
  - Bump Ruby to 3.3.1; drop support for 3.0.x [#264](https://github.com/Shopify/worldwide/pull/264)
34
43
  - Add support for partial zip matching for SG [#271](https://github.com/Shopify/worldwide/pull/271)
data/Gemfile.lock CHANGED
@@ -13,7 +13,7 @@ GIT
13
13
  PATH
14
14
  remote: .
15
15
  specs:
16
- worldwide (1.8.0)
16
+ worldwide (1.10.0)
17
17
  activesupport (>= 7.0)
18
18
  i18n
19
19
  phonelib (~> 0.8)
@@ -46,10 +46,10 @@ es:
46
46
  contains_url_informative: El nombre de la subdivisión no puede contener
47
47
  una URL.
48
48
  unknown_for_city_instructional: Introduce una subdivisión válida para
49
- %{city}.
49
+ %{city}
50
50
  unknown_for_city_informative: La subdivisión no es válida para %{city}.
51
51
  unknown_for_zip_instructional: Introduce una subdivisión válida para el
52
- código postal %{zip}.
52
+ código postal %{zip}
53
53
  unknown_for_zip_informative: La subdivisión no es válida para el código
54
54
  postal %{zip}.
55
55
  unknown_for_address_instructional: Puede que la subdivisión no sea correcta.
@@ -37,6 +37,8 @@ example_address:
37
37
  phone: "+971 600 544442"
38
38
  zones:
39
39
  - name: Abu Dhabi
40
+ name_alternates:
41
+ - "أبو ظبي"
40
42
  code: AZ
41
43
  tax: 0.0
42
44
  tax_name: VAT
@@ -44,6 +46,8 @@ zones:
44
46
  - DU
45
47
  - SH
46
48
  - name: Ajman
49
+ name_alternates:
50
+ - "عجمان"
47
51
  code: AJ
48
52
  tax: 0.0
49
53
  tax_name: VAT
@@ -53,6 +57,8 @@ zones:
53
57
  - RK
54
58
  - SH
55
59
  - name: Dubai
60
+ name_alternates:
61
+ - "دبي"
56
62
  code: DU
57
63
  tax: 0.0
58
64
  tax_name: VAT
@@ -62,6 +68,8 @@ zones:
62
68
  - RK
63
69
  - SH
64
70
  - name: Fujairah
71
+ name_alternates:
72
+ - "الفجيرة"
65
73
  code: FU
66
74
  tax: 0.0
67
75
  tax_name: VAT
@@ -70,6 +78,8 @@ zones:
70
78
  - RK
71
79
  - SH
72
80
  - name: Ras al-Khaimah
81
+ name_alternates:
82
+ - "رأس الخيمة"
73
83
  code: RK
74
84
  tax: 0.0
75
85
  tax_name: VAT
@@ -80,6 +90,8 @@ zones:
80
90
  - SH
81
91
  - UQ
82
92
  - name: Sharjah
93
+ name_alternates:
94
+ - "الشارقة"
83
95
  code: SH
84
96
  tax: 0.0
85
97
  tax_name: VAT
@@ -91,6 +103,8 @@ zones:
91
103
  - RK
92
104
  - UQ
93
105
  - name: Umm al-Quwain
106
+ name_alternates:
107
+ - "أم القيوين"
94
108
  code: UQ
95
109
  tax: 0.0
96
110
  tax_name: VAT
@@ -28,8 +28,8 @@ es:
28
28
  contener HTML.
29
29
  province:
30
30
  label:
31
- default: Estado/territorio
32
- optional: Estado/territorio (opcional)
31
+ default: Estado o territorio
32
+ optional: Estado o territorio (opcional)
33
33
  errors:
34
34
  blank_instructional: Selecciona un estado o territorio.
35
35
  blank_informative: Falta el estado o territorio.
@@ -41,10 +41,10 @@ es:
41
41
  blank_instructional: Introduce un código postal.
42
42
  blank_informative: Falta el código postal.
43
43
  invalid_for_country_instructional: Introduce un código postal válido para
44
- %{country}.
44
+ %{country}
45
45
  invalid_for_country_informative: El código postal no es válido para %{country}.
46
46
  invalid_for_country_and_province_instructional: Introduce un código postal
47
- válido para %{province}, %{country}.
47
+ válido para %{province}, %{country}
48
48
  invalid_for_country_and_province_informative: El código postal no es válido
49
49
  para %{province}, %{country}.
50
50
  too_long_instructional: El código postal es demasiado largo.
@@ -6,5 +6,5 @@ es:
6
6
  zip:
7
7
  errors:
8
8
  invalid_for_country_instructional: Introduce un código postal válido para
9
- Azerbaiyán o deja el campo en blanco.
10
- invalid_for_country_informative: El código postal no es válido para Azerbaiyán.
9
+ Azerbaiyán o deja el campo en blanco
10
+ invalid_for_country_informative: El código postal no es válido para Azerbaiyán
@@ -6,5 +6,5 @@ es:
6
6
  zip:
7
7
  errors:
8
8
  invalid_for_country_instructional: Introduce un código postal válido para
9
- Bangladés o deja el campo en blanco.
10
- invalid_for_country_informative: El código postal no es válido para Bangladés.
9
+ Bangladés o deja el campo en blanco
10
+ invalid_for_country_informative: El código postal no es válido para Bangladés
@@ -35,6 +35,7 @@ additional_address_fields:
35
35
  required: true
36
36
  - name: line2
37
37
  - name: neighborhood
38
+ required: true
38
39
  combined_address_format:
39
40
  default:
40
41
  address1:
@@ -11,7 +11,7 @@ es:
11
11
  blank_instructional: Selecciona una provincia.
12
12
  blank_informative: Falta la provincia.
13
13
  unknown_for_city_and_zip_instructional: Introduce una provincia válida
14
- para %{city}, %{zip}.
14
+ para %{city}, %{zip}
15
15
  unknown_for_city_and_zip_informative: La provincia no es válida para %{city},
16
16
  %{zip}.
17
17
  unknown_for_city_instructional: Selecciona una provincia válida para %{city}.
@@ -35,10 +35,10 @@ es:
35
35
  etiquetas HTML.
36
36
  contains_url_instructional: El nombre de la comuna no puede contener URL.
37
37
  contains_url_informative: El nombre de la comuna no puede contener URL.
38
- unknown_for_city_instructional: Introduce una comuna válida para %{city}.
39
- unknown_for_city_informative: Introduce una comuna válida para %{city}.
40
- unknown_for_zip_instructional: Introduce una comuna válida para %{zip}.
41
- unknown_for_zip_informative: Introduce una comuna válida para %{zip}.
38
+ unknown_for_city_instructional: Introduce una comuna válida para %{city}
39
+ unknown_for_city_informative: Introduce una comuna válida para %{city}
40
+ unknown_for_zip_instructional: Introduce una comuna válida para %{zip}
41
+ unknown_for_zip_informative: Introduce una comuna válida para %{zip}
42
42
  unknown_for_address_instructional: Puede que la comuna no sea correcta.
43
43
  unknown_for_address_informative: Puede que la comuna no sea correcta.
44
44
  warnings:
@@ -44,10 +44,10 @@ es:
44
44
  URL.
45
45
  contains_url_informative: El nombre del distrito no puede contener una
46
46
  URL.
47
- unknown_for_city_instructional: Introduce un distrito válido para %{city}.
47
+ unknown_for_city_instructional: Introduce un distrito válido para %{city}
48
48
  unknown_for_city_informative: El distrito no es válido para %{city}.
49
49
  unknown_for_zip_instructional: Introduce un distrito válido para el código
50
- postal %{zip}.
50
+ postal %{zip}
51
51
  unknown_for_zip_informative: El distrito no es válido para el código postal
52
52
  %{zip}.
53
53
  unknown_for_address_instructional: Puede que el distrito no sea correcto.
@@ -20,12 +20,25 @@ languages:
20
20
  - de
21
21
  - en
22
22
  example_address:
23
- address1: Willy-Brandt-Straße 1
23
+ address1: Willy-Brandt-Straße 1
24
24
  city: Berlin
25
25
  zip: '10557'
26
26
  phone: "+49 30 182722720"
27
27
  format:
28
28
  edit: "{country}_{firstName}{lastName}_{company}_{address1}_{address2}_{zip}{city}_{phone}"
29
29
  show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{country}_{phone}"
30
+ format_extended:
31
+ edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{address2}_{zip}{city}_{phone}"
32
+ additional_address_fields:
33
+ - name: streetName
34
+ required: true
35
+ - name: streetNumber
36
+ required: true
37
+ combined_address_format:
38
+ default:
39
+ address1:
40
+ - key: streetName
41
+ - key: streetNumber
42
+ decorator: " "
30
43
  emoji: "\U0001F1E9\U0001F1EA"
31
44
  timezone: Europe/Berlin
@@ -11,11 +11,11 @@ es:
11
11
  blank_instructional: Introduce un código postal.
12
12
  blank_informative: Falta el código postal.
13
13
  invalid_for_country_instructional: Introduce un código postal válido para
14
- el Reino Unido.
14
+ el Reino Unido
15
15
  invalid_for_country_informative: El código postal no es válido para el
16
16
  Reino Unido.
17
17
  invalid_for_country_and_province_instructional: Introduce un código postal
18
- para %{province}, Reino Unido.
18
+ para %{province}, Reino Unido
19
19
  invalid_for_country_and_province_informative: El código postal no es válido
20
20
  para %{province}, Reino Unido.
21
21
  too_long_instructional: El código postal es demasiado largo.
@@ -6,5 +6,5 @@ es:
6
6
  zip:
7
7
  errors:
8
8
  invalid_instructional: Introduce un código postal de siete dígitos válido
9
- para Israel.
9
+ para Israel
10
10
  invalid_informative: El código postal no es válido.
@@ -12,17 +12,17 @@ es:
12
12
  blank_informative: Falta el estado.
13
13
  zip:
14
14
  label:
15
- default: Número de índice postal
16
- optional: Número de índice postal (opcional)
15
+ default: Código de identificación personal
16
+ optional: Código de identificación personal (opcional)
17
17
  errors:
18
18
  blank_instructional: Introduce un código de identificación personal.
19
19
  blank_informative: Falta el código de identificación personal.
20
20
  invalid_for_country_instructional: Introduce un código de identificación
21
- personal válido para %{country}.
21
+ personal válido para %{country}
22
22
  invalid_for_country_informative: El código de identificación personal
23
23
  no es válido.
24
24
  invalid_for_country_and_province_instructional: Introduce un código de
25
- identificación personal válido para %{province}, %{country}.
25
+ identificación personal válido para %{province}, %{country}
26
26
  invalid_for_country_and_province_informative: El código de identificación
27
27
  personal no es válido.
28
28
  too_long_instructional: El código de identificación personal es demasiado
@@ -13,5 +13,5 @@ es:
13
13
  zip:
14
14
  errors:
15
15
  invalid_instructional: Introduce un código postal de cinco dígitos válido
16
- para Corea del Sur.
16
+ para Corea del Sur
17
17
  invalid_informative: Falta el código postal.
@@ -42,10 +42,10 @@ es:
42
42
  contains_url_instructional: El nombre del bloque no puede contener una
43
43
  URL.
44
44
  contains_url_informative: El nombre del bloque no puede contener una URL.
45
- unknown_for_city_instructional: Introduce un bloque válido para %{city}.
45
+ unknown_for_city_instructional: Introduce un bloque válido para %{city}
46
46
  unknown_for_city_informative: El bloque no es válido para %{city}.
47
47
  unknown_for_zip_instructional: Introduce un bloque válido para el código
48
- postal %{zip}.
48
+ postal %{zip}
49
49
  unknown_for_zip_informative: El bloque no es válido para el código postal
50
50
  %{zip}.
51
51
  unknown_for_address_instructional: Puede que el bloque no sea correcto.
@@ -6,5 +6,5 @@ es:
6
6
  zip:
7
7
  errors:
8
8
  invalid_for_country_instructional: Escribe un código postal válido para
9
- Sri Lanka o deja el campo en blanco.
9
+ Sri Lanka o deja el campo en blanco
10
10
  invalid_for_country_informative: El código postal no es válido.
@@ -51,10 +51,10 @@ es:
51
51
  una URL.
52
52
  contains_url_informative: El nombre de la colonia no puede contener una
53
53
  URL.
54
- unknown_for_city_instructional: Introduce una colonia válida para %{city}.
55
- unknown_for_city_informative: Introduce una colonia válida para %{city}.
56
- unknown_for_zip_instructional: Introduce una colonia válida para %{zip}.
57
- unknown_for_zip_informative: Introduce una colonia válida para %{zip}.
54
+ unknown_for_city_instructional: Introduce una colonia válida para %{city}
55
+ unknown_for_city_informative: Introduce una colonia válida para %{city}
56
+ unknown_for_zip_instructional: Introduce una colonia válida para %{zip}
57
+ unknown_for_zip_informative: Introduce una colonia válida para %{zip}
58
58
  unknown_for_address_instructional: Puede que la colonia no sea correcta.
59
59
  unknown_for_address_informative: Puede que la colonia no sea correcta.
60
60
  warnings:
@@ -96,6 +96,8 @@ zones:
96
96
  tax: 0.0
97
97
  tax_name: State Tax
98
98
  - name: Coahuila
99
+ name_alternates:
100
+ - Coahuila de Zaragoza
99
101
  code: COAH
100
102
  code_alternates:
101
103
  - COA
@@ -13,5 +13,5 @@ es:
13
13
  zip:
14
14
  errors:
15
15
  invalid_for_country_instructional: Escribe un código postal de seis dígitos
16
- válido para Nigeria o deja el campo en blanco.
17
- invalid_for_country_informative: El código postal no es válido para Nigeria.
16
+ válido para Nigeria o deja el campo en blanco
17
+ invalid_for_country_informative: El código postal no es válido para Nigeria
@@ -37,10 +37,10 @@ es:
37
37
  URL.
38
38
  contains_url_informative: El nombre del distrito no puede contener una
39
39
  URL.
40
- unknown_for_city_instructional: Introduce un distrito válido para %{city}.
40
+ unknown_for_city_instructional: Introduce un distrito válido para %{city}
41
41
  unknown_for_city_informative: El distrito no es válido para %{city}.
42
42
  unknown_for_zip_instructional: Introduce un distrito válido para el código
43
- postal %{zip}.
43
+ postal %{zip}
44
44
  unknown_for_zip_informative: El distrito no es válido para el código postal
45
45
  %{zip}.
46
46
  unknown_for_address_instructional: Puede que el distrito no sea correcto.
@@ -37,10 +37,10 @@ es:
37
37
  URL.
38
38
  contains_url_informative: El nombre del distrito no puede contener una
39
39
  URL.
40
- unknown_for_city_instructional: Introduce un distrito válido para %{city}.
40
+ unknown_for_city_instructional: Introduce un distrito válido para %{city}
41
41
  unknown_for_city_informative: El distrito no es válido para %{city}.
42
42
  unknown_for_zip_instructional: Introduce un distrito válido para el código
43
- postal %{zip}.
43
+ postal %{zip}
44
44
  unknown_for_zip_informative: El distrito no es válido para el código postal
45
45
  %{zip}.
46
46
  unknown_for_address_instructional: Puede que el distrito no sea correcto.
@@ -37,10 +37,10 @@ es:
37
37
  URL.
38
38
  contains_url_informative: El nombre del barangay no puede contener una
39
39
  URL.
40
- unknown_for_city_instructional: Introduce un barangay válido para %{city}.
41
- unknown_for_city_informative: Introduce un barangay válido para %{city}.
42
- unknown_for_zip_instructional: Introduce un barangay válido para %{zip}.
43
- unknown_for_zip_informative: Introduce un barangay válido para %{zip}.
40
+ unknown_for_city_instructional: Introduce un barangay válido para %{city}
41
+ unknown_for_city_informative: Introduce un barangay válido para %{city}
42
+ unknown_for_zip_instructional: Introduce un barangay válido para %{zip}
43
+ unknown_for_zip_informative: Introduce un barangay válido para %{zip}
44
44
  unknown_for_address_instructional: Puede que el barangay no sea correcto.
45
45
  unknown_for_address_informative: Puede que el barangay no sea correcto.
46
46
  warnings:
@@ -37,10 +37,10 @@ es:
37
37
  URL.
38
38
  contains_url_informative: El nombre del distrito no puede contener una
39
39
  URL.
40
- unknown_for_city_instructional: Introduce un distrito válido para %{city}.
40
+ unknown_for_city_instructional: Introduce un distrito válido para %{city}
41
41
  unknown_for_city_informative: El distrito no es válido para %{city}.
42
42
  unknown_for_zip_instructional: Introduce un distrito válido para el código
43
- postal %{zip}.
43
+ postal %{zip}
44
44
  unknown_for_zip_informative: El distrito no es válido para el código postal
45
45
  %{zip}.
46
46
  unknown_for_address_instructional: Puede que el distrito no sea correcto.
@@ -37,10 +37,10 @@ es:
37
37
  URL.
38
38
  contains_url_informative: El nombre del distrito no puede contener una
39
39
  URL.
40
- unknown_for_city_instructional: Introduce un distrito válido para %{city}.
40
+ unknown_for_city_instructional: Introduce un distrito válido para %{city}
41
41
  unknown_for_city_informative: El distrito no es válido para %{city}.
42
42
  unknown_for_zip_instructional: Introduce un distrito válido para el código
43
- postal %{zip}.
43
+ postal %{zip}
44
44
  unknown_for_zip_informative: El distrito no es válido para el código postal
45
45
  %{zip}.
46
46
  unknown_for_address_instructional: Puede que el distrito no sea correcto.
@@ -37,10 +37,10 @@ es:
37
37
  URL.
38
38
  contains_url_informative: El nombre del distrito no puede contener una
39
39
  URL.
40
- unknown_for_city_instructional: Introduce un distrito válido para %{city}.
40
+ unknown_for_city_instructional: Introduce un distrito válido para %{city}
41
41
  unknown_for_city_informative: El distrito no es válido para %{city}.
42
42
  unknown_for_zip_instructional: Introduce un distrito válido para el código
43
- postal %{zip}.
43
+ postal %{zip}
44
44
  unknown_for_zip_informative: El distrito no es válido para el código postal
45
45
  %{zip}.
46
46
  unknown_for_address_instructional: Puede que el distrito no sea correcto.
@@ -11,10 +11,10 @@ es:
11
11
  blank_instructional: Selecciona un estado.
12
12
  blank_informative: Introduce un estado.
13
13
  invalid_for_country_instructional: Introduce un estado válido para %{city},
14
- %{zip}.
14
+ %{zip}
15
15
  invalid_for_country_informative: El estado no es válido.
16
16
  unknown_for_city_and_zip_instructional: Introduce un estado válido para
17
- %{city}, %{zip}.
17
+ %{city}, %{zip}
18
18
  unknown_for_city_and_zip_informative: El estado no es válido para %{city},
19
19
  %{zip}.
20
20
  unknown_for_city_instructional: Selecciona un estado válido para %{city}.
@@ -33,13 +33,13 @@ es:
33
33
  blank_instructional: Introduce un código postal.
34
34
  blank_informative: Falta el código postal.
35
35
  invalid_for_country_instructional: Introduce un código postal válido para
36
- %{country}.
36
+ %{country}
37
37
  invalid_for_country_informative: El código postal no es válido para %{country}.
38
38
  invalid_for_province_instructional: Introduce un código postal válido
39
- para %{province}.
39
+ para %{province}
40
40
  invalid_for_province_informative: El código postal no es válido para %{province}.
41
41
  invalid_for_country_and_province_instructional: Introduce un código postal
42
- válido para %{province}, %{country}.
42
+ válido para %{province}, %{country}
43
43
  invalid_for_country_and_province_informative: El código postal no es válido
44
44
  para %{province}, %{country}.
45
45
  too_long_instructional: El código postal es demasiado largo.
@@ -39,10 +39,10 @@ es:
39
39
  contains_url_informative: El nombre de la municipalidad no puede contener
40
40
  una URL.
41
41
  unknown_for_city_instructional: Introduce un nombre de municipalidad válido
42
- para %{city}.
42
+ para %{city}
43
43
  unknown_for_city_informative: La municipalidad no coincide con %{city}.
44
44
  unknown_for_zip_instructional: Introduce un nombre de municipalidad válido
45
- para el código postal %{zip}.
45
+ para el código postal %{zip}
46
46
  unknown_for_zip_informative: La municipalidad no coincide con el código
47
47
  postal %{zip}.
48
48
  unknown_for_address_instructional: Puede que la municipalidad no sea correcta.
@@ -6,5 +6,5 @@ es:
6
6
  zip:
7
7
  errors:
8
8
  invalid_for_country_instructional: Escribe un código postal válido para
9
- Kosovo o deja el campo en blanco.
9
+ Kosovo o deja el campo en blanco
10
10
  invalid_for_country_informative: El código postal no es válido.
@@ -114,7 +114,7 @@ es:
114
114
  missing_building_number_informative: Es posible que falte introducir el
115
115
  número de edificio.
116
116
  street_unknown_for_zip_instructional: Introduce un nombre de calle válido
117
- para el código postal %{zip}.
117
+ para el código postal %{zip}
118
118
  street_unknown_for_zip_informative: El nombre de la calle no coincide
119
119
  con el código postal %{zip}.
120
120
  building_number_invalid_instructional: No se ha podido localizar un número
@@ -139,7 +139,7 @@ es:
139
139
  missing_building_number_informative: Es posible que falte introducir el
140
140
  número de edificio.
141
141
  street_unknown_for_zip_instructional: Introduce un nombre de calle válido
142
- para el código postal %{zip}.
142
+ para el código postal %{zip}
143
143
  street_unknown_for_zip_informative: El nombre de calle no es válido para
144
144
  el código postal %{zip}.
145
145
  building_number_invalid_instructional: No se ha podido localizar un número
@@ -187,13 +187,13 @@ es:
187
187
  blank_instructional: Introduce una ciudad.
188
188
  blank_informative: Falta la ciudad.
189
189
  unknown_for_zip_instructional: Introduce una ciudad válida para el código
190
- postal %{zip}.
190
+ postal %{zip}
191
191
  unknown_for_zip_informative: La ciudad no coincide con el código postal
192
192
  %{zip}.
193
- unknown_for_province_instructional: Introduce una ciudad válida para %{province}.
193
+ unknown_for_province_instructional: Introduce una ciudad válida para %{province}
194
194
  unknown_for_province_informative: La ciudad no coincide con %{province}.
195
195
  unknown_for_zip_and_province_instructional: Introduce una ciudad válida
196
- para el código postal %{zip} de %{province}.
196
+ para el código postal %{zip} de %{province}
197
197
  unknown_for_zip_and_province_informative: Puede que la ciudad sea incorrecta.
198
198
  too_long_instructional: El nombre de la ciudad es demasiado largo (el
199
199
  máximo es 255 caracteres).
@@ -233,10 +233,10 @@ es:
233
233
  blank_informative: Falta el país o la región.
234
234
  not_supported_instructional: El país o la región no se admite.
235
235
  not_supported_informative: El país o la región no se admite.
236
- invalid_instructional: Introduce un país o una región válidos.
236
+ invalid_instructional: Introduce un país o una región válidos
237
237
  invalid_informative: El país o la región no son válidos.
238
238
  invalid_for_zip_instructional: Introduce una región o un país válidos
239
- para este código postal.
239
+ para este código postal
240
240
  invalid_for_zip_informative: "%{country} no coincide con el país o la
241
241
  región."
242
242
  phone:
@@ -246,7 +246,7 @@ es:
246
246
  errors:
247
247
  blank_instructional: Introduce un número de teléfono.
248
248
  blank_informative: Falta el número de teléfono.
249
- invalid_instructional: Introduce un número de teléfono válido.
249
+ invalid_instructional: Introduce un número de teléfono válido
250
250
  invalid_informative: El número de teléfono no es válido.
251
251
  too_long_instructional: El número de teléfono es demasiado largo.
252
252
  too_long_informative: El número de teléfono es demasiado largo.
@@ -270,7 +270,7 @@ es:
270
270
  blank_informative: Falta la región.
271
271
  invalid_instructional: Selecciona una región.
272
272
  invalid_informative: Falta la región.
273
- invalid_for_country_instructional: Introduce una región válida para %{country}.
273
+ invalid_for_country_instructional: Introduce una región válida para %{country}
274
274
  invalid_for_country_informative: La región no coincide con el código postal
275
275
  %{country}.
276
276
  unknown_for_city_and_zip_instructional: Selecciona una región válida para
@@ -294,23 +294,23 @@ es:
294
294
  errors:
295
295
  blank_instructional: Introduce un código postal.
296
296
  blank_informative: Falta el código postal.
297
- invalid_instructional: Introduce un código postal válido.
297
+ invalid_instructional: Introduce un código postal válido
298
298
  invalid_informative: El código postal no es válido.
299
299
  invalid_for_country_instructional: Introduce un código postal válido para
300
- %{country}.
300
+ %{country}
301
301
  invalid_for_country_informative: El código postal no coincide con %{country}.
302
302
  invalid_for_province_instructional: Introduce un código postal válido
303
- para %{province}.
303
+ para %{province}
304
304
  invalid_for_province_informative: El código postal no coincide con %{province}.
305
305
  invalid_for_country_and_province_instructional: Introduce un código postal
306
- válido para %{province}, %{country}.
306
+ válido para %{province}, %{country}
307
307
  invalid_for_country_and_province_informative: El código postal no coincide
308
308
  con %{province}, %{country}.
309
309
  not_supported_instructional: El código postal no se admite. Introduce
310
310
  una nueva dirección e inténtalo de nuevo.
311
311
  unknown_for_province_instructional: Introduce un código postal válido
312
- para %{province}.
313
- unknown_for_province_informative: El código postal no es válido para %{province}.
312
+ para %{province}
313
+ unknown_for_province_informative: El código postal no es válido para %{province}
314
314
  blocked_address_instructional: No se admite esta ubicación.
315
315
  blocked_address_informative: No se admite esta ubicación.
316
316
  too_long_instructional: El código postal es demasiado largo.
@@ -363,7 +363,7 @@ es:
363
363
  contains_url_informative: El nombre de la calle no puede contener una
364
364
  URL.
365
365
  street_unknown_for_zip_instructional: Introduce una calle válida para
366
- el código postal %{zip}.
366
+ el código postal %{zip}
367
367
  street_unknown_for_zip_informative: La calle no es válida para el código
368
368
  postal %{zip}.
369
369
  unknown_for_address_instructional: Puede que la calle no sea correcta.
@@ -444,13 +444,13 @@ es:
444
444
  URL.
445
445
  contains_url_informative: El nombre del vecindario no puede contener URL.
446
446
  unknown_for_city_instructional: Introduce un nombre de vecindario válido
447
- para %{city}.
447
+ para %{city}
448
448
  unknown_for_city_informative: Introduce un nombre de vecindario válido
449
- para %{city}.
449
+ para %{city}
450
450
  unknown_for_zip_instructional: Introduce un nombre de vecindario válido
451
- para %{zip}.
451
+ para %{zip}
452
452
  unknown_for_zip_informative: Introduce un nombre de vecindario válido
453
- para %{zip}.
453
+ para %{zip}
454
454
  unknown_for_address_instructional: Puede que el vecindario no sea correcto.
455
455
  unknown_for_address_informative: Puede que el vecindario no sea correcto.
456
456
  warnings:
@@ -496,9 +496,9 @@ es:
496
496
  missing_building_number_informative: Agrega un número de edificio, si
497
497
  existe.
498
498
  street_unknown_for_zip_instructional: Indica un nombre de calle válido
499
- para el código postal %{zip}.
499
+ para el código postal %{zip}
500
500
  street_unknown_for_zip_informative: Indica un nombre de calle válido para
501
- el código postal %{zip}.
501
+ el código postal %{zip}
502
502
  building_number_invalid_instructional: No se ha podido localizar un número
503
503
  de edificio para %{street}, %{zip}.
504
504
  building_number_invalid_informative: No se ha podido localizar un número
@@ -4,32 +4,27 @@ require "worldwide/calendar/gregorian"
4
4
 
5
5
  module Worldwide
6
6
  module Calendar
7
- class << self
8
- def first_week_day(territory_code)
9
- first_day_data[territory_code.to_sym] || first_day_data.fetch(:"001")
7
+ data = YAML.load_file(File.join(Worldwide::Paths::CLDR_ROOT, "week_data.yml"))["first_day"]
8
+ weekday_numbers = {
9
+ sun: 0,
10
+ mon: 1,
11
+ tue: 2,
12
+ wed: 3,
13
+ thu: 4,
14
+ fri: 5,
15
+ sat: 6,
16
+ }
17
+ FIRST_DAY_DATA = data.each_with_object({}) do |(day, territories), memo|
18
+ territories.each do |territory|
19
+ memo[territory.to_sym] = weekday_numbers.fetch(day.to_sym)
10
20
  end
21
+ end
22
+ FIRST_DAY_DATA.freeze
23
+ private_constant :FIRST_DAY_DATA
11
24
 
12
- private
13
-
14
- def first_day_data
15
- return @first_day_data if defined?(@first_day_data)
16
-
17
- weekday_numbers = {
18
- sun: 0,
19
- mon: 1,
20
- tue: 2,
21
- wed: 3,
22
- thu: 4,
23
- fri: 5,
24
- sat: 6,
25
- }
26
-
27
- data = YAML.load_file(File.join(Worldwide::Paths::CLDR_ROOT, "week_data.yml"))["first_day"]
28
- @first_day_data = data.each_with_object({}) do |(day, territories), memo|
29
- territories.each do |territory|
30
- memo[territory.to_sym] = weekday_numbers.fetch(day.to_sym)
31
- end
32
- end
25
+ class << self
26
+ def first_week_day(territory_code)
27
+ FIRST_DAY_DATA[territory_code.to_sym] || FIRST_DAY_DATA.fetch(:"001")
33
28
  end
34
29
  end
35
30
  end
@@ -26,7 +26,10 @@ module Worldwide
26
26
  private
27
27
 
28
28
  def cldr_defined_parents
29
- @cldr_defined_parents ||= YAML.load_file(File.join(Worldwide::Paths::CLDR_ROOT, "parent_locales.yml")).to_h { |k, v| [k.to_sym, v.to_sym] }
29
+ @cldr_defined_parents ||= YAML.load_file(
30
+ File.join(Worldwide::Paths::CLDR_ROOT, "parent_locales.yml"),
31
+ symbolize_names: true,
32
+ ).transform_values(&:to_sym)
30
33
  end
31
34
 
32
35
  def ancestry(locale)
@@ -4,15 +4,24 @@ module Worldwide
4
4
  module Currencies
5
5
  include Enumerable
6
6
  extend self
7
- CURRENCIES_FILE_PATH = File.join(Worldwide::Paths::CLDR_ROOT, "locales", "en", "currencies.yml")
8
- CURRENCY_CODES_FILE_PATH = File.join(Worldwide::Paths::OTHER_DATA_ROOT, "currency", "codes.yml")
7
+
8
+ CURRENCY_CODES = YAML.safe_load_file(
9
+ File.join(Worldwide::Paths::OTHER_DATA_ROOT, "currency/codes.yml"),
10
+ freeze: true,
11
+ )
12
+ private_constant :CURRENCY_CODES
13
+
14
+ NUMERIC_THREE_TO_ALPHA_THREE_DB = CURRENCY_CODES.to_h do |key, value|
15
+ [value["three_digit_code"].to_i, key.to_s.upcase.to_sym]
16
+ end.freeze
17
+ private_constant :NUMERIC_THREE_TO_ALPHA_THREE_DB
9
18
 
10
19
  def each(&block)
11
- all_currencies.each(&block)
20
+ ALL_CURRENCIES.each(&block)
12
21
  end
13
22
 
14
23
  def all
15
- all_currencies
24
+ ALL_CURRENCIES
16
25
  end
17
26
 
18
27
  # Convert ISO-4217 numeric-three code to ISO-4217 alpha-three code
@@ -23,39 +32,25 @@ module Worldwide
23
32
  else
24
33
  numeric_code&.to_s&.to_i
25
34
  end
26
- numeric_three_to_alpha_three_db[lookup_code]&.to_s
35
+ NUMERIC_THREE_TO_ALPHA_THREE_DB[lookup_code]&.to_s
27
36
  end
28
37
 
29
38
  # Convert ISO-4217 alpha-three code to ISO-4217 numeric-three code
30
39
  # Note that we support some currencies (e.g. JEP) that are not recognized by ISO,
31
40
  # and there is no numeric-three code for these currencies, so nil will be returned.
32
41
  def numeric_code_for(alpha_code)
33
- currency_codes.dig(alpha_code&.to_s&.upcase, "three_digit_code")&.to_i
34
- end
35
-
36
- private
37
-
38
- def all_currencies
39
- @all_currencies ||= begin
40
- currencies = {}
41
- YAML.load_file(CURRENCIES_FILE_PATH)["en"]["currencies"].map do |code, _name|
42
- currencies[code] = Currency.new(code: code)
43
- end.sort_by(&:currency_code)
44
- end
42
+ CURRENCY_CODES.dig(alpha_code&.to_s&.upcase, "three_digit_code")&.to_i
45
43
  end
46
44
 
47
- def currency_codes
48
- @currency_codes ||= YAML.safe_load_file(CURRENCY_CODES_FILE_PATH)
49
- end
50
-
51
- def map_alpha_three_to_numeric_three
52
- currency_codes
53
- end
54
-
55
- def numeric_three_to_alpha_three_db
56
- @map_numeric_three_to_alpha_three ||= currency_codes.to_h do |key, value|
57
- [value["three_digit_code"].to_i, key.to_s.upcase.to_sym]
58
- end
45
+ currencies = YAML.load_file(
46
+ File.join(Worldwide::Paths::CLDR_ROOT, "locales/en/currencies.yml"),
47
+ freeze: true,
48
+ )
49
+ ALL_CURRENCIES = currencies["en"]["currencies"].map do |code, _name|
50
+ Currency.new(code: code)
59
51
  end
52
+ ALL_CURRENCIES.sort_by!(&:currency_code)
53
+ ALL_CURRENCIES.freeze
54
+ private_constant :ALL_CURRENCIES
60
55
  end
61
56
  end
@@ -2,13 +2,6 @@
2
2
 
3
3
  module Worldwide
4
4
  class Locale
5
- class << self
6
- def unknown
7
- # Special CLDR value
8
- @unknown = Locale.new("und")
9
- end
10
- end
11
-
12
5
  attr_reader :code
13
6
 
14
7
  def initialize(code)
@@ -20,6 +13,10 @@ module Worldwide
20
13
  @name_cache = {}
21
14
  end
22
15
 
16
+ # Special CLDR value
17
+ @unknown = new("und")
18
+ singleton_class.attr_reader(:unknown)
19
+
23
20
  def language_subtag
24
21
  code.to_s.split("-", 2).first
25
22
  end
@@ -251,6 +251,7 @@ module Worldwide
251
251
  @flag = nil
252
252
  @format = {}
253
253
  @format_extended = {}
254
+ @name_alternates = []
254
255
  @group = nil
255
256
  @group_name = nil
256
257
  @languages = []
@@ -287,7 +287,7 @@ module Worldwide
287
287
  end
288
288
 
289
289
  def world_yml
290
- @world_yml ||= YAML.load_file(File.join(Worldwide::Paths::DB_DATA_ROOT, "world.yml"))
290
+ @world_yml ||= YAML.load_file(File.join(Worldwide::Paths::DB_DATA_ROOT, "world.yml"), freeze: true)
291
291
  end
292
292
  end
293
293
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Worldwide
4
- VERSION = "1.8.0"
4
+ VERSION = "1.10.0"
5
5
  end
data/lib/worldwide.rb CHANGED
@@ -17,8 +17,8 @@ require "worldwide/address_validator"
17
17
  require "worldwide/calendar"
18
18
  require "worldwide/cldr"
19
19
  require "worldwide/cldr/context_transforms"
20
- require "worldwide/currencies"
21
20
  require "worldwide/currency"
21
+ require "worldwide/currencies"
22
22
  require "worldwide/deprecated_time_zone_mapper"
23
23
  require "worldwide/discounts"
24
24
  require "worldwide/fields"
@@ -109,4 +109,6 @@ module Worldwide
109
109
  Units
110
110
  end
111
111
  end
112
+
113
+ Regions.instance # eagerload
112
114
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: worldwide
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-09 00:00:00.000000000 Z
11
+ date: 2024-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -8505,7 +8505,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
8505
8505
  - !ruby/object:Gem::Version
8506
8506
  version: '0'
8507
8507
  requirements: []
8508
- rubygems_version: 3.5.16
8508
+ rubygems_version: 3.5.18
8509
8509
  signing_key:
8510
8510
  specification_version: 4
8511
8511
  summary: Internationalization and localization APIs