worldwide 0.13.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +20 -0
- data/.github/workflows/ci-typescript.yml +32 -0
- data/.github/workflows/npm-release.yml +38 -0
- data/.vscode/settings.json +8 -0
- data/CHANGELOG.md +12 -2
- data/Gemfile.lock +1 -1
- data/db/data/regions/AE/bg.yml +1 -3
- data/db/data/regions/AE/cs.yml +1 -3
- data/db/data/regions/AE/da.yml +1 -3
- data/db/data/regions/AE/de.yml +1 -3
- data/db/data/regions/AE/el.yml +1 -3
- data/db/data/regions/AE/en.yml +1 -3
- data/db/data/regions/AE/es.yml +1 -3
- data/db/data/regions/AE/fi.yml +1 -3
- data/db/data/regions/AE/fr.yml +1 -3
- data/db/data/regions/AE/hi.yml +1 -3
- data/db/data/regions/AE/hr.yml +1 -3
- data/db/data/regions/AE/hu.yml +1 -3
- data/db/data/regions/AE/id.yml +1 -3
- data/db/data/regions/AE/it.yml +1 -3
- data/db/data/regions/AE/ja.yml +1 -3
- data/db/data/regions/AE/ko.yml +1 -3
- data/db/data/regions/AE/lt.yml +1 -3
- data/db/data/regions/AE/ms.yml +1 -2
- data/db/data/regions/AE/nb.yml +1 -3
- data/db/data/regions/AE/nl.yml +1 -3
- data/db/data/regions/AE/pl.yml +1 -3
- data/db/data/regions/AE/pt-BR.yml +1 -3
- data/db/data/regions/AE/pt-PT.yml +1 -3
- data/db/data/regions/AE/ro.yml +1 -3
- data/db/data/regions/AE/ru.yml +1 -3
- data/db/data/regions/AE/sk.yml +1 -3
- data/db/data/regions/AE/sl.yml +1 -3
- data/db/data/regions/AE/sv.yml +1 -3
- data/db/data/regions/AE/th.yml +1 -3
- data/db/data/regions/AE/tr.yml +1 -3
- data/db/data/regions/AE/vi.yml +1 -3
- data/db/data/regions/AE/zh-CN.yml +1 -3
- data/db/data/regions/AE/zh-TW.yml +1 -3
- data/db/data/regions/AE.yml +2 -3
- data/db/data/regions/BE.yml +5 -2
- data/db/data/regions/BR.yml +9 -6
- data/db/data/regions/CL.yml +9 -6
- data/db/data/regions/CO.yml +5 -4
- data/db/data/regions/ES.yml +5 -2
- data/db/data/regions/ID.yml +5 -4
- data/db/data/regions/IL.yml +11 -0
- data/db/data/regions/MX.yml +9 -6
- data/db/data/regions/NL.yml +5 -2
- data/db/data/regions/PH.yml +6 -4
- data/db/data/regions/TR.yml +6 -4
- data/db/data/regions/TW.yml +9 -1
- data/db/data/regions/VN.yml +6 -4
- data/db/data/regions/_default/cs.yml +27 -2
- data/db/data/regions/_default/da.yml +25 -1
- data/db/data/regions/_default/el.yml +28 -1
- data/db/data/regions/_default/en.yml +23 -1
- data/db/data/regions/_default/es.yml +29 -1
- data/db/data/regions/_default/fi.yml +25 -1
- data/db/data/regions/_default/fr.yml +28 -1
- data/db/data/regions/_default/hi.yml +25 -1
- data/db/data/regions/_default/hu.yml +28 -2
- data/db/data/regions/_default/id.yml +26 -1
- data/db/data/regions/_default/ja.yml +20 -1
- data/db/data/regions/_default/lt.yml +28 -1
- data/db/data/regions/_default/ms.yml +26 -1
- data/db/data/regions/_default/pl.yml +1 -1
- data/db/data/regions/_default/pt-BR.yml +26 -1
- data/db/data/regions/_default/ro.yml +26 -1
- data/db/data/regions/_default/ru.yml +25 -1
- data/db/data/regions/_default/sk.yml +25 -1
- data/db/data/regions/_default/sl.yml +27 -1
- data/db/data/regions/_default/sv.yml +25 -1
- data/db/data/regions/_default/th.yml +24 -1
- data/db/data/regions/_default/tr.yml +24 -1
- data/db/data/regions/_default/vi.yml +24 -1
- data/db/data/regions/_default/zh-CN.yml +20 -1
- data/db/data/regions/_default/zh-TW.yml +20 -1
- data/lib/worldwide/address.rb +7 -4
- data/lib/worldwide/field.rb +1 -0
- data/lib/worldwide/region.rb +27 -2
- data/lib/worldwide/regions_loader.rb +2 -1
- data/lib/worldwide/version.rb +1 -1
- data/worldwide.gemspec +1 -1
- metadata +6 -2
@@ -211,7 +211,7 @@ pt-BR:
|
|
211
211
|
optional: Bairro (opcional)
|
212
212
|
errors:
|
213
213
|
blank: Insira um bairro
|
214
|
-
too_long: O bairro é muito longo (máximo de
|
214
|
+
too_long: O bairro é muito longo (máximo de %{limit} caracteres)
|
215
215
|
contains_emojis: O bairro não pode conter emojis
|
216
216
|
contains_mathematical_symbols: O bairro não pode conter símbolos matemáticos
|
217
217
|
contains_restricted_characters: O bairro pode conter apenas letras, números,
|
@@ -225,3 +225,28 @@ pt-BR:
|
|
225
225
|
warnings:
|
226
226
|
contains_too_many_words: É recomendável que o bairro tenha menos de %{word_count}
|
227
227
|
palavras
|
228
|
+
line2:
|
229
|
+
label:
|
230
|
+
default: Apartamento, bloco etc.
|
231
|
+
optional: Casa, apto. etc. (opcional)
|
232
|
+
errors:
|
233
|
+
blank: Insira apartamento, bloco etc.
|
234
|
+
too_long: A segunda linha do endereço é longa demais (máximo é %{limit}
|
235
|
+
caracteres)
|
236
|
+
contains_emojis: A segunda linha do endereço não pode conter emojis
|
237
|
+
contains_mathematical_symbols: A segunda linha do endereço não pode conter
|
238
|
+
símbolos matemáticos
|
239
|
+
contains_restricted_characters: A segunda linha do endereço pode conter
|
240
|
+
apenas letras, números, caracteres locais e caracteres especiais
|
241
|
+
contains_too_many_words: A segunda linha do endereço não pode ter mais
|
242
|
+
do que %{word_count} palavras
|
243
|
+
contains_html_tags: A segunda linha do endereço não pode conter tags HTML
|
244
|
+
contains_url: A segunda linha do endereço não pode conter URLs
|
245
|
+
missing_building_number: Adicione o número do prédio, se houver.
|
246
|
+
street_unknown_for_zip: Insira um nome de rua válido para %{zip}.
|
247
|
+
building_number_invalid: Não foi possível localizar o número do prédio
|
248
|
+
em %{street}, %{zip}.
|
249
|
+
unknown_for_address: A segunda linha do endereço pode estar incorreta.
|
250
|
+
warnings:
|
251
|
+
contains_too_many_words: É recomendável que a segunda linha do endereço
|
252
|
+
tenha menos que %{word_count} palavras
|
@@ -230,7 +230,7 @@ ro:
|
|
230
230
|
optional: Cartier (opțional)
|
231
231
|
errors:
|
232
232
|
blank: Introdu un nume de cartier
|
233
|
-
too_long: Numele cartierului este prea lung (lungimea maximă este de
|
233
|
+
too_long: Numele cartierului este prea lung (lungimea maximă este de %{limit}
|
234
234
|
caractere)
|
235
235
|
contains_emojis: Numele cartierului nu poate conține emoji-uri
|
236
236
|
contains_mathematical_symbols: Numele cartierului nu poate conține simboluri
|
@@ -247,3 +247,28 @@ ro:
|
|
247
247
|
warnings:
|
248
248
|
contains_too_many_words: Se recomandă ca numele cartierului să nu aibă
|
249
249
|
mai mult de %{word_count} cuvinte
|
250
|
+
line2:
|
251
|
+
label:
|
252
|
+
default: Apartament, cameră etc.
|
253
|
+
optional: Apartament, cameră etc. (opțional)
|
254
|
+
errors:
|
255
|
+
blank: Introdu un apartament, o cameră etc.
|
256
|
+
too_long: A doua linie a adresei este prea lungă (lungimea maximă este
|
257
|
+
de %{limit} caractere)
|
258
|
+
contains_emojis: A doua linie de adresă nu poate conține emoji-uri
|
259
|
+
contains_mathematical_symbols: A doua linie de adresă nu poate conține
|
260
|
+
simboluri matematice
|
261
|
+
contains_restricted_characters: A doua linie de adresă poate conține numai
|
262
|
+
litere, cifre, caractere locale și caractere speciale
|
263
|
+
contains_too_many_words: A doua linie de adresă nu poate conține mai mult
|
264
|
+
de %{word_count} cuvinte
|
265
|
+
contains_html_tags: A doua linie de adresă nu poate conține etichete HTML.
|
266
|
+
contains_url: A doua linie de adresă nu poate conține adrese URL.
|
267
|
+
missing_building_number: Adaugă un număr de clădire, dacă ai unul.
|
268
|
+
street_unknown_for_zip: Introdu o denumire de stradă validă pentru %{zip}.
|
269
|
+
building_number_invalid: Numărul clădirii nu a putut fi găsit pentru %{street},
|
270
|
+
%{zip}.
|
271
|
+
unknown_for_address: Este posibil ca a doua linie de adresă să fie incorectă.
|
272
|
+
warnings:
|
273
|
+
contains_too_many_words: Se recomandă ca pentru a doua linie de adresă
|
274
|
+
să nu introduci mai mult de %{word_count} cuvinte
|
@@ -225,7 +225,7 @@ ru:
|
|
225
225
|
errors:
|
226
226
|
blank: Укажите район
|
227
227
|
too_long: Название района слишком длинное (должно содержать не больше
|
228
|
-
|
228
|
+
%{limit} симв.)
|
229
229
|
contains_emojis: Название района не может содержать емодзи
|
230
230
|
contains_mathematical_symbols: Название района не может содержать математические
|
231
231
|
символы
|
@@ -240,3 +240,27 @@ ru:
|
|
240
240
|
warnings:
|
241
241
|
contains_too_many_words: Рекомендуем указывать в поле названия района
|
242
242
|
не более %{word_count} сл.
|
243
|
+
line2:
|
244
|
+
label:
|
245
|
+
default: Квартира, апартаменты и т. д.
|
246
|
+
optional: Квартира, апартаменты и т. д. (необязательно)
|
247
|
+
errors:
|
248
|
+
blank: Укажите номер квартиры, апартаментов и т. д.
|
249
|
+
too_long: Вторая строка адреса слишком длинная (должна содержать не больше
|
250
|
+
%{limit} симв.)
|
251
|
+
contains_emojis: Вторая строка адреса не может содержать емодзи
|
252
|
+
contains_mathematical_symbols: Вторая строка адреса не может содержать
|
253
|
+
математические символы
|
254
|
+
contains_restricted_characters: Поле «Вторая строка адреса» может содержать
|
255
|
+
только буквы, цифры, а также местные и специальные символы
|
256
|
+
contains_too_many_words: Вторая строка адреса не может превышать %{word_count} сл.
|
257
|
+
contains_html_tags: Вторая строка адреса не может содержать HTML-теги.
|
258
|
+
contains_url: Вторая строка адреса не может содержать URL-адреса.
|
259
|
+
missing_building_number: Укажите номер дома, если применимо.
|
260
|
+
street_unknown_for_zip: Укажите действительное название улицы для %{zip}.
|
261
|
+
building_number_invalid: 'Не удалось найти номер дома по этому адресу:
|
262
|
+
%{street}, %{zip}.'
|
263
|
+
unknown_for_address: Адрес во второй строке может быть указан неправильно.
|
264
|
+
warnings:
|
265
|
+
contains_too_many_words: Рекомендуем указывать во второй строке адреса
|
266
|
+
не более %{word_count} сл.
|
@@ -217,7 +217,7 @@ sk:
|
|
217
217
|
optional: Sídlisko (voliteľné)
|
218
218
|
errors:
|
219
219
|
blank: Zadajte sídlisko
|
220
|
-
too_long: Sídlisko je príliš dlhé (maximálne
|
220
|
+
too_long: Sídlisko je príliš dlhé (maximálne %{limit} znakov)
|
221
221
|
contains_emojis: Sídlisko nemôže obsahovať emotikony
|
222
222
|
contains_mathematical_symbols: Sídlisko nemôže obsahovať matematické značky
|
223
223
|
contains_restricted_characters: Sídlisko môže obsahovať len písmená, číslice,
|
@@ -232,3 +232,27 @@ sk:
|
|
232
232
|
warnings:
|
233
233
|
contains_too_many_words: 'Sídlisko by nemalo mať viac ako tento počet
|
234
234
|
slov: %{word_count}'
|
235
|
+
line2:
|
236
|
+
label:
|
237
|
+
default: Apartmán, byt atď.
|
238
|
+
optional: Apartmán, byt atď. (voliteľné)
|
239
|
+
errors:
|
240
|
+
blank: Zadajte apartmán, byt atď.
|
241
|
+
too_long: Druhý riadok adresy je príliš dlhý (maximálne %{limit} znakov)
|
242
|
+
contains_emojis: Druhý riadok adresy nemôže obsahovať emotikony
|
243
|
+
contains_mathematical_symbols: Druhý riadok adresy nemôže obsahovať matematické
|
244
|
+
značky
|
245
|
+
contains_restricted_characters: Druhý riadok adresy môže obsahovať len
|
246
|
+
písmená, číslice, miestne znaky a špeciálne znaky
|
247
|
+
contains_too_many_words: 'Druhý riadok adresy nemôže mať viac ako tento
|
248
|
+
počet slov: %{word_count}'
|
249
|
+
contains_html_tags: Druhý riadok adresy nemôže obsahovať HTML značky.
|
250
|
+
contains_url: Druhý riadok adresy nemôže obsahovať URL adresy.
|
251
|
+
missing_building_number: Ak máte číslo budovy, pridajte ho.
|
252
|
+
street_unknown_for_zip: Zadajte platný názov ulice pre PSČ %{zip}.
|
253
|
+
building_number_invalid: Číslo budovy na ulici %{street} s PSČ %{zip}
|
254
|
+
sa nepodarilo nájsť.
|
255
|
+
unknown_for_address: Druhý riadok adresy môže byť nesprávny.
|
256
|
+
warnings:
|
257
|
+
contains_too_many_words: 'Druhý riadok adresy by nemal mať viac ako tento
|
258
|
+
počet slov: %{word_count}'
|
@@ -226,7 +226,7 @@ sl:
|
|
226
226
|
optional: Soseska (izbirno)
|
227
227
|
errors:
|
228
228
|
blank: Vnesite sosesko
|
229
|
-
too_long: Ime soseske je predolgo (največje dovoljeno št. znakov je
|
229
|
+
too_long: Ime soseske je predolgo (največje dovoljeno št. znakov je %{limit})
|
230
230
|
contains_emojis: Ime soseske ne sme vsebovati čustvenih simbolov
|
231
231
|
contains_mathematical_symbols: Ime soseske ne sme vsebovati matematičnih
|
232
232
|
simbolov
|
@@ -242,3 +242,29 @@ sl:
|
|
242
242
|
warnings:
|
243
243
|
contains_too_many_words: Ime soseske naj ne vsebuje več kot %{word_count}
|
244
244
|
besed
|
245
|
+
line2:
|
246
|
+
label:
|
247
|
+
default: Št. stanovanja, apartmaja itd.
|
248
|
+
optional: Št. stanovanja, apartmaja itn. (izbirno)
|
249
|
+
errors:
|
250
|
+
blank: Vnesite št. stanovanja, apartmaja itn.
|
251
|
+
too_long: Naslov v drugi vrstici je predolg (največje dovoljeno št. znakov
|
252
|
+
je %{limit})
|
253
|
+
contains_emojis: Naslov v drugi vrstici ne sme vsebovati čustvenih simbolov
|
254
|
+
contains_mathematical_symbols: Naslov v drugi vrstici ne sme vsebovati
|
255
|
+
matematičnih simbolov
|
256
|
+
contains_restricted_characters: Naslov v drugi vrstici lahko vsebuje le
|
257
|
+
črke, številke, lokalne znake in posebne znake
|
258
|
+
contains_too_many_words: Naslov v drugi vrstici ne sme vsebovati več kot
|
259
|
+
%{word_count} besed
|
260
|
+
contains_html_tags: Naslov v drugi vrstici ne sme vsebovati oznak HTML.
|
261
|
+
contains_url: Naslov v drugi vrstici ne sme vsebovati naslovov URL.
|
262
|
+
missing_building_number: Dodajte hišno številko, če jo imate.
|
263
|
+
street_unknown_for_zip: Vnesite veljavno ime ulice za poštno številko
|
264
|
+
%{zip}.
|
265
|
+
building_number_invalid: Hišne številke ni bilo mogoče najti za ulico
|
266
|
+
%{street}, %{zip}.
|
267
|
+
unknown_for_address: Naslov v drugi vrstici morda ni pravilen.
|
268
|
+
warnings:
|
269
|
+
contains_too_many_words: Naslov v drugi vrstici naj ne vsebuje več kot
|
270
|
+
%{word_count} besed
|
@@ -218,7 +218,7 @@ sv:
|
|
218
218
|
optional: Område (valfritt)
|
219
219
|
errors:
|
220
220
|
blank: Ange ett område
|
221
|
-
too_long: Områdesnamnet är för långt (max.
|
221
|
+
too_long: Områdesnamnet är för långt (max. %{limit} tecken)
|
222
222
|
contains_emojis: Område får inte innehålla emojier
|
223
223
|
contains_mathematical_symbols: Område får inte innehålla matematiska symboler
|
224
224
|
contains_restricted_characters: Område får endast innehålla bokstäver,
|
@@ -233,3 +233,27 @@ sv:
|
|
233
233
|
warnings:
|
234
234
|
contains_too_many_words: Vi rekommenderar att området består av färre
|
235
235
|
än %{word_count} ord
|
236
|
+
line2:
|
237
|
+
label:
|
238
|
+
default: Lägenhet, våning etc.
|
239
|
+
optional: Lägenhet, svit etc. (valfritt)
|
240
|
+
errors:
|
241
|
+
blank: Ange en lägenhet, våning etc.
|
242
|
+
too_long: Den andra adressraden är för lång (max. %{limit} tecken)
|
243
|
+
contains_emojis: Den andra adressraden får inte innehålla emojier
|
244
|
+
contains_mathematical_symbols: Den andra adressraden får inte innehålla
|
245
|
+
matematiska symboler
|
246
|
+
contains_restricted_characters: Den andra adressraden får endast innehålla
|
247
|
+
bokstäver, siffror, lokala tecken och specialtecken
|
248
|
+
contains_too_many_words: Den andra adressraden får inte innehålla fler
|
249
|
+
än %{word_count} ord
|
250
|
+
contains_html_tags: Den andra adressraden får inte innehålla HTML-taggar.
|
251
|
+
contains_url: Den andra adressraden får inte innehålla URL:er.
|
252
|
+
missing_building_number: Lägg till ett husnummer om du har ett.
|
253
|
+
street_unknown_for_zip: Ange ett giltigt gatunamn för %{zip}.
|
254
|
+
building_number_invalid: Vi kunde inte hitta husnumret för %{street},
|
255
|
+
%{zip}.
|
256
|
+
unknown_for_address: Den andra adressraden kan vara felaktig.
|
257
|
+
warnings:
|
258
|
+
contains_too_many_words: Vi rekommenderar att den andra adressraden består
|
259
|
+
av färre än %{word_count} ord
|
@@ -207,7 +207,7 @@ th:
|
|
207
207
|
optional: สถานที่ใกล้เคียง (ไม่บังคับ)
|
208
208
|
errors:
|
209
209
|
blank: ป้อนชื่อสถานที่ใกล้เคียง
|
210
|
-
too_long: ชื่อสถานที่ใกล้เคียงยาวเกินไป (
|
210
|
+
too_long: ชื่อสถานที่ใกล้เคียงยาวเกินไป (ต้องไม่เกิน %{limit} อักขระ)
|
211
211
|
contains_emojis: ห้ามใส่อีโมจิในชื่อสถานที่ใกล้เคียง
|
212
212
|
contains_mathematical_symbols: ห้ามใส่สัญลักษณ์ทางคณิตศาสตร์ในชื่อสถานที่ใกล้เคียง
|
213
213
|
contains_restricted_characters: ชื่อสถานที่ใกล้เคียงต้องใช้เฉพาะตัวอักษร
|
@@ -222,3 +222,26 @@ th:
|
|
222
222
|
warnings:
|
223
223
|
contains_too_many_words: ชื่อสถานที่ใกล้เคียงควรมีความยาวน้อยกว่า %{word_count}
|
224
224
|
คำ
|
225
|
+
line2:
|
226
|
+
label:
|
227
|
+
default: อะพาร์ตเมนต์ ห้องชุด เป็นต้น
|
228
|
+
optional: อพาร์ทเม้นท์ ห้องชุด เป็นต้น (ไม่บังคับ)
|
229
|
+
errors:
|
230
|
+
blank: ป้อนอะพาร์ตเมนต์ ห้องชุด ฯลฯ
|
231
|
+
too_long: ที่อยู่บรรทัดที่สองยาวเกินไป (สูงสุดคือ %{limit} อักขระ)
|
232
|
+
contains_emojis: สามารถใส่อิโมจิในที่อยู่บรรทัดที่สองได้
|
233
|
+
contains_mathematical_symbols: สามารถใส่สัญลักษณ์ทางคณิตศาสตร์ในที่อยู่บรรทัดที่สองได้
|
234
|
+
contains_restricted_characters: ที่อยู่บรรทัดที่สองสามารถประกอบด้วยตัวอักษร
|
235
|
+
ตัวเลข อักขระท้องถิ่น และอักขระพิเศษได้เท่านั้น
|
236
|
+
contains_too_many_words: ที่อยู่บรรทัดที่สองต้องมีไม่เกิน %{word_count}
|
237
|
+
คำ
|
238
|
+
contains_html_tags: สามารถใส่แท็ก HTML ในที่อยู่บรรทัดที่สองได้
|
239
|
+
contains_url: สามารถใส่ URL ในที่อยู่บรรทัดที่สองได้
|
240
|
+
missing_building_number: เพิ่มหมายเลขอาคาร หากมี
|
241
|
+
street_unknown_for_zip: ป้อนชื่อถนนที่ถูกต้องสำหรับ %{zip}
|
242
|
+
building_number_invalid: ไม่สามารถระบุตำแหน่งหมายเลขอาคารสำหรับ %{street},
|
243
|
+
%{zip} ได้
|
244
|
+
unknown_for_address: ที่อยู่บรรทัดที่สองอาจไม่ถูกต้อง
|
245
|
+
warnings:
|
246
|
+
contains_too_many_words: ที่อยู่บรรทัดที่สองไม่ควรมีความยาวเกิน %{word_count}
|
247
|
+
คำ
|
@@ -208,7 +208,7 @@ tr:
|
|
208
208
|
optional: Mahalle (isteğe bağlı)
|
209
209
|
errors:
|
210
210
|
blank: Mahalle girin
|
211
|
-
too_long: Mahalle adı çok uzun (maksimum
|
211
|
+
too_long: Mahalle adı çok uzun (maksimum %{limit} karakter olmalıdır)
|
212
212
|
contains_emojis: Mahalle adı emoji içeremez
|
213
213
|
contains_mathematical_symbols: Mahalle adı matematiksel semboller içeremez
|
214
214
|
contains_restricted_characters: Mahalle adı yalnızca harfler, sayılar,
|
@@ -222,3 +222,26 @@ tr:
|
|
222
222
|
warnings:
|
223
223
|
contains_too_many_words: Mahalle adında %{word_count} adetten az kelime
|
224
224
|
olması önerilir
|
225
|
+
line2:
|
226
|
+
label:
|
227
|
+
default: Apartman, daire vb.
|
228
|
+
optional: Apartman, Daire vb. (isteğe bağlı)
|
229
|
+
errors:
|
230
|
+
blank: Apartman, daire vb. girin
|
231
|
+
too_long: İkinci adres satırı çok uzun (maksimum %{limit} karakter olmalıdır)
|
232
|
+
contains_emojis: İkinci adres satırı emoji içeremez
|
233
|
+
contains_mathematical_symbols: İkinci adres satırı matematiksel semboller
|
234
|
+
içeremez
|
235
|
+
contains_restricted_characters: İkinci adres satırı yalnızca harfler,
|
236
|
+
sayılar, yerel karakterler ve özel karakterler içerebilir
|
237
|
+
contains_too_many_words: İkinci adres satırı en fazla %{word_count} kelime
|
238
|
+
içerebilir
|
239
|
+
contains_html_tags: İkinci adres satırı HTML etiketleri içeremez.
|
240
|
+
contains_url: İkinci adres satırı URL içeremez.
|
241
|
+
missing_building_number: Varsa bina numaranızı ekleyin.
|
242
|
+
street_unknown_for_zip: "%{zip} için geçerli bir sokak adı girin."
|
243
|
+
building_number_invalid: "%{street} %{zip} için bina numarası bulunamadı."
|
244
|
+
unknown_for_address: İkinci adres satırı yanlış olabilir.
|
245
|
+
warnings:
|
246
|
+
contains_too_many_words: İkinci adres satırında %{word_count} adetten
|
247
|
+
az kelime olması önerilir
|
@@ -208,7 +208,7 @@ vi:
|
|
208
208
|
optional: Khu phố (không bắt buộc)
|
209
209
|
errors:
|
210
210
|
blank: Nhập khu phố
|
211
|
-
too_long: Khu phố quá dài (tối đa
|
211
|
+
too_long: Khu phố quá dài (tối đa %{limit} ký tự)
|
212
212
|
contains_emojis: Khu phố không được chứa biểu tượng cảm xúc
|
213
213
|
contains_mathematical_symbols: Khu phố không được chứa ký hiệu toán học
|
214
214
|
contains_restricted_characters: Khu phố chỉ được chứa chữ cái, chữ số,
|
@@ -222,3 +222,26 @@ vi:
|
|
222
222
|
unknown_for_address: Khu phố có thể không chính xác.
|
223
223
|
warnings:
|
224
224
|
contains_too_many_words: Khu phố nên có tối đa %{word_count} từ
|
225
|
+
line2:
|
226
|
+
label:
|
227
|
+
default: Căn hộ, dãy, v.v.
|
228
|
+
optional: Căn hộ, dãy, v.v. (không bắt buộc)
|
229
|
+
errors:
|
230
|
+
blank: Nhập căn hộ, dãy, v.v.
|
231
|
+
too_long: Dòng địa chỉ thứ hai quá dài (tối đa %{limit} ký tự)
|
232
|
+
contains_emojis: Dòng địa chỉ thứ hai không được chứa biểu tượng cảm xúc
|
233
|
+
contains_mathematical_symbols: Dòng địa chỉ thứ hai không được chứa ký
|
234
|
+
hiệu toán học
|
235
|
+
contains_restricted_characters: Dòng địa chỉ thứ hai chỉ được chứa chữ
|
236
|
+
cái, chữ số, ký tự địa phương và ký tự đặc biệt
|
237
|
+
contains_too_many_words: Dòng địa chỉ thứ hai chỉ được có tối đa %{word_count}
|
238
|
+
từ
|
239
|
+
contains_html_tags: Dòng địa chỉ thứ hai không được chứa thẻ HTML.
|
240
|
+
contains_url: Dòng địa chỉ thứ hai không được chứa URL.
|
241
|
+
missing_building_number: Thêm số tòa nhà nếu có.
|
242
|
+
street_unknown_for_zip: Nhập tên đường hợp lệ cho %{zip}.
|
243
|
+
building_number_invalid: Không thể định vị số tòa nhà cho %{street}, %{zip}.
|
244
|
+
unknown_for_address: Dòng địa chỉ thứ hai có thể không chính xác.
|
245
|
+
warnings:
|
246
|
+
contains_too_many_words: Dòng địa chỉ thứ hai nên có tối đa %{word_count}
|
247
|
+
từ
|
@@ -186,7 +186,7 @@ zh-CN:
|
|
186
186
|
optional: 街区(选填)
|
187
187
|
errors:
|
188
188
|
blank: 输入街区
|
189
|
-
too_long:
|
189
|
+
too_long: 街区名过长(最多 %{limit} 个字符)
|
190
190
|
contains_emojis: 街区名不能包含表情符号
|
191
191
|
contains_mathematical_symbols: 街区名不能包含数学符号
|
192
192
|
contains_restricted_characters: 街区名只能包含字母、数字、当地字符和特殊字符
|
@@ -198,3 +198,22 @@ zh-CN:
|
|
198
198
|
unknown_for_address: 街区名可能不正确。
|
199
199
|
warnings:
|
200
200
|
contains_too_many_words: 建议街区名少于 %{word_count} 个字词
|
201
|
+
line2:
|
202
|
+
label:
|
203
|
+
default: 公寓、房间号等
|
204
|
+
optional: 公寓、房间号等(可选)
|
205
|
+
errors:
|
206
|
+
blank: 输入公寓、房间号等
|
207
|
+
too_long: 第二个地址行过长(最多 %{limit} 个字符)
|
208
|
+
contains_emojis: 第二个地址行不能包含表情符号
|
209
|
+
contains_mathematical_symbols: 第二个地址行不能包含数学符号
|
210
|
+
contains_restricted_characters: 第二个地址行只能包含字母、数字、当地字符和特殊字符
|
211
|
+
contains_too_many_words: 第二个地址行不能超过 %{word_count} 个字词
|
212
|
+
contains_html_tags: 第二个地址行不能包含 HTML 标记。
|
213
|
+
contains_url: 第二个地址行不能包含 URL。
|
214
|
+
missing_building_number: 添加大楼编号(如果有)。
|
215
|
+
street_unknown_for_zip: 输入 %{zip} 对应的有效街道名称。
|
216
|
+
building_number_invalid: 大楼编号与 %{street} 和 %{zip} 不匹配。
|
217
|
+
unknown_for_address: 第二个地址行可能不正确。
|
218
|
+
warnings:
|
219
|
+
contains_too_many_words: 建议第二个地址行少于 %{word_count} 个字词
|
@@ -186,7 +186,7 @@ zh-TW:
|
|
186
186
|
optional: 鄰 (選填)
|
187
187
|
errors:
|
188
188
|
blank: 請輸入「鄰」
|
189
|
-
too_long: "「鄰」過長 (最多
|
189
|
+
too_long: "「鄰」過長 (最多 %{limit} 個字元)"
|
190
190
|
contains_emojis: "「鄰」不得包含表情符號"
|
191
191
|
contains_mathematical_symbols: "「鄰」不得包含數學符號"
|
192
192
|
contains_restricted_characters: "「鄰」僅可包含字母、數字、當地字元和特殊字元"
|
@@ -198,3 +198,22 @@ zh-TW:
|
|
198
198
|
unknown_for_address: "「鄰」可能不正確。"
|
199
199
|
warnings:
|
200
200
|
contains_too_many_words: 建議「鄰」少於 %{word_count} 個字
|
201
|
+
line2:
|
202
|
+
label:
|
203
|
+
default: 公寓、套房等
|
204
|
+
optional: 公寓、套房等 (選填)
|
205
|
+
errors:
|
206
|
+
blank: 請輸入公寓、套房等
|
207
|
+
too_long: "「地址第二行」過長 (最多 %{limit} 個字元)"
|
208
|
+
contains_emojis: "「地址第二行」不得包含表情符號"
|
209
|
+
contains_mathematical_symbols: "「地址第二行」不得包含數學符號"
|
210
|
+
contains_restricted_characters: "「地址第二行」僅可包含字母、數字、當地字元和特殊字元"
|
211
|
+
contains_too_many_words: "「地址第二行」不得超過 %{word_count} 個字"
|
212
|
+
contains_html_tags: "「地址第二行」不得包含 HTML 標籤。"
|
213
|
+
contains_url: "「地址第二行」不得包含網址。"
|
214
|
+
missing_building_number: 如果您有建築物號碼,請新增建築物號碼。
|
215
|
+
street_unknown_for_zip: 請輸入 %{zip} 的有效街道名稱。
|
216
|
+
building_number_invalid: 在 %{zip},%{street} 找不到此建築物號碼。
|
217
|
+
unknown_for_address: "「地址第二行」可能並不正確。"
|
218
|
+
warnings:
|
219
|
+
contains_too_many_words: "「地址第二行」建議少於 %{word_count} 字"
|
data/lib/worldwide/address.rb
CHANGED
@@ -14,6 +14,7 @@ module Worldwide
|
|
14
14
|
:phone,
|
15
15
|
:street_name,
|
16
16
|
:street_number,
|
17
|
+
:line2,
|
17
18
|
:neighborhood
|
18
19
|
|
19
20
|
def initialize(
|
@@ -29,6 +30,7 @@ module Worldwide
|
|
29
30
|
phone: nil,
|
30
31
|
street_name: nil,
|
31
32
|
street_number: nil,
|
33
|
+
line2: nil,
|
32
34
|
neighborhood: nil
|
33
35
|
)
|
34
36
|
@first_name = first_name
|
@@ -43,6 +45,7 @@ module Worldwide
|
|
43
45
|
@phone = phone
|
44
46
|
@street_name = street_name
|
45
47
|
@street_number = street_number
|
48
|
+
@line2 = line2
|
46
49
|
@neighborhood = neighborhood
|
47
50
|
end
|
48
51
|
|
@@ -146,23 +149,23 @@ module Worldwide
|
|
146
149
|
def concatenated_address1
|
147
150
|
return address1 if address1.present?
|
148
151
|
|
149
|
-
additional_fields = region.
|
152
|
+
additional_fields = region.combined_address_format["address1"] || []
|
150
153
|
concatenate_fields(additional_fields)
|
151
154
|
end
|
152
155
|
|
153
156
|
def concatenated_address2
|
154
|
-
additional_fields = region.
|
157
|
+
additional_fields = region.combined_address_format["address2"] || []
|
155
158
|
concatenate_fields(additional_fields)
|
156
159
|
end
|
157
160
|
|
158
161
|
def split_address1
|
159
|
-
additional_fields = region.
|
162
|
+
additional_fields = region.combined_address_format["address1"] || []
|
160
163
|
split_fields_arr = address1&.split(RESERVED_DELIMITER) || []
|
161
164
|
split_fields(additional_fields, split_fields_arr)
|
162
165
|
end
|
163
166
|
|
164
167
|
def split_address2
|
165
|
-
additional_fields = region.
|
168
|
+
additional_fields = region.combined_address_format["address2"] || []
|
166
169
|
split_fields_arr = address2&.split(RESERVED_DELIMITER) || []
|
167
170
|
split_fields(additional_fields, split_fields_arr)
|
168
171
|
end
|
data/lib/worldwide/field.rb
CHANGED
data/lib/worldwide/region.rb
CHANGED
@@ -34,6 +34,7 @@ module Worldwide
|
|
34
34
|
:zip_regex,
|
35
35
|
:zip_requirement,
|
36
36
|
:additional_address_fields,
|
37
|
+
:combined_address_format,
|
37
38
|
]
|
38
39
|
|
39
40
|
# A region may have more than one parent.
|
@@ -197,9 +198,12 @@ module Worldwide
|
|
197
198
|
# If true, then the province is optional for addresses in this region.
|
198
199
|
attr_accessor :province_optional
|
199
200
|
|
200
|
-
#
|
201
|
+
# An array of the additional address fields that are defined for this region
|
201
202
|
attr_accessor :additional_address_fields
|
202
203
|
|
204
|
+
# A hash of the rules for concatening the additional address fields into the standard fields
|
205
|
+
attr_accessor :combined_address_format
|
206
|
+
|
203
207
|
def initialize(
|
204
208
|
alpha_three: nil,
|
205
209
|
continent: false,
|
@@ -235,7 +239,8 @@ module Worldwide
|
|
235
239
|
@tax_rate = tax_rate
|
236
240
|
@use_zone_code_as_short_name = use_zone_code_as_short_name
|
237
241
|
|
238
|
-
@additional_address_fields =
|
242
|
+
@additional_address_fields = []
|
243
|
+
@combined_address_format = {}
|
239
244
|
@building_number_required = false
|
240
245
|
@building_number_may_be_in_address2 = false
|
241
246
|
@currency = nil
|
@@ -414,6 +419,21 @@ module Worldwide
|
|
414
419
|
end
|
415
420
|
end
|
416
421
|
|
422
|
+
# is a neighborhood required for this region?
|
423
|
+
def neighborhood_required?
|
424
|
+
additional_field_required?("neighborhood")
|
425
|
+
end
|
426
|
+
|
427
|
+
# is a street name required for this region?
|
428
|
+
def street_name_required?
|
429
|
+
additional_field_required?("streetName")
|
430
|
+
end
|
431
|
+
|
432
|
+
# is a street number required for this region?
|
433
|
+
def street_number_required?
|
434
|
+
additional_field_required?("streetNumber")
|
435
|
+
end
|
436
|
+
|
417
437
|
# is the given postal code value valid for this region?
|
418
438
|
def valid_zip?(zip, partial_match: false)
|
419
439
|
normalized = Zip.normalize(
|
@@ -441,6 +461,11 @@ module Worldwide
|
|
441
461
|
end
|
442
462
|
end
|
443
463
|
|
464
|
+
def additional_field_required?(field_name)
|
465
|
+
field = additional_address_fields.find { |f| f["name"] == field_name }
|
466
|
+
field ? !!field["required"] : false
|
467
|
+
end
|
468
|
+
|
444
469
|
def answers_to_cldr_code(search_code)
|
445
470
|
return false if Util.blank?(search_code) || Util.blank?(cldr_code)
|
446
471
|
return true if search_code.casecmp(cldr_code).zero?
|
@@ -95,7 +95,8 @@ module Worldwide
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def apply_territory_attributes(region, spec)
|
98
|
-
region.additional_address_fields = spec["additional_address_fields"] ||
|
98
|
+
region.additional_address_fields = spec["additional_address_fields"] || []
|
99
|
+
region.combined_address_format = spec["combined_address_format"] || {}
|
99
100
|
region.building_number_required = spec["building_number_required"] || false
|
100
101
|
region.building_number_may_be_in_address2 = spec["building_number_may_be_in_address2"] || false
|
101
102
|
currency_code = spec["currency"]
|
data/lib/worldwide/version.rb
CHANGED
data/worldwide.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.metadata["changelog_uri"] = "https://github.com/Shopify/worldwide/blob/main/CHANGELOG.md"
|
19
19
|
|
20
20
|
spec.files = %x(git ls-files -z).split("\x0").reject do |f|
|
21
|
-
f.match(%r{^(rake|test|spec|features)/})
|
21
|
+
f.match(%r{^(rake|test|spec|features|lang/typescript)/})
|
22
22
|
end
|
23
23
|
spec.bindir = "exe"
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
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: 0.
|
4
|
+
version: 0.15.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-05-
|
11
|
+
date: 2024-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -62,12 +62,16 @@ extra_rdoc_files: []
|
|
62
62
|
files:
|
63
63
|
- ".github/CODE_OF_CONDUCT.md"
|
64
64
|
- ".github/CONTRIBUTING.md"
|
65
|
+
- ".github/dependabot.yml"
|
65
66
|
- ".github/pull_request_template.md"
|
67
|
+
- ".github/workflows/ci-typescript.yml"
|
66
68
|
- ".github/workflows/ci.yml"
|
67
69
|
- ".github/workflows/cla.yml"
|
70
|
+
- ".github/workflows/npm-release.yml"
|
68
71
|
- ".gitignore"
|
69
72
|
- ".rubocop.yml"
|
70
73
|
- ".ruby-version"
|
74
|
+
- ".vscode/settings.json"
|
71
75
|
- CHANGELOG.md
|
72
76
|
- Gemfile
|
73
77
|
- Gemfile.lock
|