Skip to content

Instantly share code, notes, and snippets.

@kristofk
Last active December 2, 2025 08:39
Show Gist options
  • Select an option

  • Save kristofk/21e76f2ce66a6eb081ccbd540c08ff26 to your computer and use it in GitHub Desktop.

Select an option

Save kristofk/21e76f2ce66a6eb081ccbd540c08ff26 to your computer and use it in GitHub Desktop.
Logic in Swift to print all the separators that different locales use. English and most languages use the standard ASCII comma to separate lists while some languages use sth else.
,:doi_IN
,:mai_IN
,:sat_Olck_IN
,:pqm
,:yrl_VE
,:fr_CA
,:hi_Latn_IN
⹁:ff_Adlm_CM
,:ms_Arab_MY
、:zh_Hans_MO
⹁:ff_Adlm_NE
,:en_KR
,:kea
,:en_FK
,:af_ZA
,:bm
و:ar_PS
,:br
و:ar_LY
,:it_VA
,:en_AI
,:ff_Latn_MR
,:ksb_TZ
,:es_UY
,:bas
、:zh_Hant_JP
⹁:ff_Adlm_MR
,:bas_CM
,:es_BM
,:sm
,:sr_Cyrl_XK
،:ur_Arab_IN
,:en_MP
,:asa
,:lmo
,:bm_ML
,:az_Latn_AZ
,:ln_CD
,:ff_Latn_BF
、:ja_JP
,:qu
,:fr_MA
,:en_TW
,:ebu
、:yue_Hans_CN
,:en_GR
,:ia
、:zh_Hant_TW
,:en_CO
,:es_GY
,:nd_ZW
,:da_GL
, ŋ́gɛ:jgo_CM
,:ee_TG
,:arn_CL
,:bs_Cyrl_BA
,:tn
,:sq_AL
,:en_MU
,:el_GR
,:bs_Latn
,:nl_CW
,:fr_GQ
،:ps_AF
,:lv_LV
,:pa_Arab_PK
,:tok
,:hr
،:ks
,:fr_RW
,:en_KN
,:dyo
,:es_GQ
,:ca
و:ar_SY
,:sm_AS
,:rej_Rjng_ID
,:es_CU
,:km
,:agq_CM
,:fr_MG
,:ha
ܘ:syr_SY
,:eu
,:ie
,:ml
,:ru_KZ
,:sat_Deva_IN
,:tzm_MA
,:en_NG
,:kkj
,:en_UA
,:sje
,:mua
,:fr_MC
,:lg
,:rej_Rjng
,:sbp
,:es_BR
,:shi_Latn
,:yo_BJ
,:ny
,:en_IO
,:en_UG
,:ccp_IN
,:sg_CF
,:sv_FI
,:nl
,:es_VC
⹁:ff_Adlm_SL
,:sr_Latn_ME
,:es_BQ
,:mfe_MU
,:en_TH
,:mn
,:en_DE
,:es_CA
و:ar_KM
,:ru_MD
,:oc
,:rwk_TZ
,:xnr_IN
,:en_SI
,:bg
,:yrl_BR
,:yrl_CO
,:ff_Latn_GN
,:cs
,:en_CH
,:ig
و:ar_EH
⹁:ff_Adlm_GH
,:fy
,:en_VU
,:luy_KE
,:fr_BF
,:myv_RU
,:ss_ZA
,:fr_GP
,:lt_LT
,:kde_TZ
,:de_CH
,:en_DG
,:lu
,:st
,:gez_ET
,:mgo
,:mni_Beng
,:en_BG
,:moh_CA
,:en_AT
,:vec_IT
,:sju
,:bo_IN
,:prg_PL
,:en_IE
,:lkt_US
,:en_CL
,:en_US_POSIX
,:es_PR
,:gu
,:he_IL
,:tr_CY
،:ur
,:kxv_Telu
,:bez
,:en_UM
,:mus
,:nd
,:sk
,:lu_CD
,:nr
,:pt_LU
,:ne_NP
⹁:ff_Adlm_GM
,:ko
,:wo
、:zh
,:en_AU
,:km_KH
,:kln_KE
,:en_001
,:mr
,:eo
,:ms_MY
,:de_DE
,:pt_MO
,:so
⹁:ff_Adlm_LR
,:mk_MK
,:sv_AX
,:ms
,:pa_Aran_PK
,:tr
,:es_AG
,:mic
,:ewo_CM
,:de_BE
⹁:ff_Adlm_GW
,:uz_Arab
,:shi_Tfng_MA
,:en_SG
,:nl_SR
、:yue_Hant
,:fr_CH
,:sw_UG
,:ln
,:iu_CA
,:en_MY
,:nds
,:fy_NL
,:yo
,:en_BM
,:en_SX
,:en_SB
,:mer_KE
,:so_ET
,:wae
,:hi
,:kcg_NG
,:chr
ܘ:syr_IQ
,:en_MT
,:lag
,:fr_TD
,:uk_UA
,:it_SM
,:sat_Olck
,:fr_CD
,:cgg_UG
,:vai_Vaii
,:ga
,:ha_NE
,:ba_RU
,:ru_RU
,:sat
,:en_TR
,:blo
,:ms_Arab_BN
,:sl_SI
,:lv
,:lt
,:qu_EC
,:ky
,:moh
,:sw
,:ta_LK
,:rm_CH
,:ro_MD
,:kam
،:ks_Arab
,:en_LT
,:doi
,:fr_BJ
,:se
,:en_AE
,:kxv_Orya
,:es_AR
,:ca_AD
,:en_SD
,:es_GD
,:haw
,:tn_ZA
,:nr_ZA
,:mt
,:fr_GN
,:mua_CM
፣:am
و:ar_SO
,:co
,:en_TV
,:kpe_GN
,:it_IT
,:oc_ES
,:rhg_Rohg
,:rm
、:ja
,:nl_BQ
,:el
,:bs_Latn_BA
و:ar_MR
،:ks_Aran_IN
,:wal_ET
,:en_BS
،:sd
,:fo
,:mt_MT
,:es_DM
,:ceb_PH
,:uk
,:es_HN
,:fr_PF
,:xnr
,:en_RU
,:co_FR
,:sm_WS
,:bn
,:ber_Latn_MA
و:ar_IQ
,:shi_Latn_MA
,:smn
,:yi
و:ar_SS
,:shi_Tfng
,:cs_CZ
,:en_WS
,:ss
,:ne
,:en_BB
,:pt_ST
,:sd_Deva
,:es_CW
,:en_TK
,:es_DO
,:lo_LA
و:ar_EG
,:uz_Latn_UZ
,:yav_CM
,:gd
,:ln_AO
,:xh
,:mzn_IR
و:ar_JO
,:en_VG
,:en_BD
,:kk_Cyrl
,:en_NO
,:br_FR
,:za
,:fr_HT
,:kk_KZ
,:fr_WF
,:dv_MV
,:twq_NE
,:zu_ZA
、:zh_Hans_CN
,:ak
,:rn_BI
,:osa_US
,:es_CO
,:bn_IN
,:zu
,:pt_TL
,:hi_Latn
,:kpe_LR
,:bho
,:ee_GH
,:pt_GW
,:om
,:fr_YT
、:yue_Hans
,:rof_TZ
,:lrc_IR
,:fi
,:sl
,:te_IN
,:yo_NG
,:nmg_CM
,:teo_KE
、:zh_Hans
,:nb_SJ
,:wa_BE
,:guz_KE
,:et
,:myv
,:sr_Latn_RS
,:tk
,:gl_ES
,:en_ZW
,:fr_KM
,:kl
,:az_Cyrl_AZ
,:ckb
,:ce_RU
,:mni_Mtei
,:en_LC
⹁:ff_Adlm_SN
,:et_EE
,:mni_Mtei_IN
,:mas_KE
,:ig_NG
,:ga_IE
、:zh_Hans_MY
,:kam_KE
,:en_CZ
,:de_AT
,:kl_GL
,:es_VI
,:bez_TZ
,:inh
،:ur_Arab
,:khq
,:en_IM
,:oc_FR
,:en_BZ
,:en_NA
,:yi_UA
,:qu_BO
,:kxv_Latn_IN
,:sw_KE
,:byn
,:fr_TG
,:nus_SS
,:pl_PL
,:it
,:lut
,:en_US
,:gsw
,:mgh_MZ
,:lmo_IT
,:si_LK
,:en_150
,:en_CX
,:vmw_MZ
,:so_DJ
,:pcm
,:ko_KP
,:rej
,:os
,:nl_NL
,:bem_ZM
,:fr_SC
,:tok_001
,:jmc_TZ
,:hy_AM
,:ku
,:en
و:ar_QA
,:brx_IN
,:hmn
,:ain
,:so_SO
,:fr_RE
,:nmg
،:sd_Arab_PK
,:eo_001
,:scn
、:zh_Hans_SG
,:qu_PE
,:en_BW
و:ar_SA
,:ain_JP
,:gsw_FR
,:ka
,:ff_Latn_GM
,:mzn
,:en_PG
,:ber
,:lo
,:en_DK
,:es_BS
,:ber_Tfng
,:ses
,:tzm
,:ru_KG
,:nso_ZA
,:hmn_CN
,:es
,:hr_HR
,:byn_ER
,:sjd
,:ie_EE
,:tr_TR
,:seh_MZ
,:ca_ES
,:sq
,:sr_Cyrl_BA
,:it_CH
,:ve
,:cy
,:sn
,:nqo_GN
,:en_CC
,:kgp
,:sc_IT
,:en_ER
و:ar_SD
و:ar_TD
,:gl
,:az
,:en_AG
,:ff
,:ff_Latn
,:mai
,:vai
,:mas_TZ
,:be
,:vai_Latn
و:ar_LB
,:fr_SY
,:kxv_Deva_IN
,:is_IS
,:en_GB
,:lrc_IQ
,:es_CL
,:kgp_BR
،:ks_Arab_IN
,:dsb
,:se_SE
,:trv_TW
,:de_LU
,:ha_GH
,:en_PT
,:rof
,:ksh
,:hsb_DE
,:saq
,:so_KE
,:vmw
,:vai_Vaii_LR
,:sr_Latn
,:ccp
、:zh_Hant
,:en_TZ
,:en_SL
,:en_AL
,:fr_NC
,:hy
,:nnh
,:te
,:de_LI
,:ms_Arab
,:en_NL
,:es_003
,:si
,:sr_Cyrl
,:su
,:fr_ML
、:ii
,:en_GG
و:ar_BH
,:da
,:ru
,:ms_ID
、:zh_Hans_JP
,:dav
,:nl_SX
,:ksb
,:en_BE
,:kxv_Telu_IN
,:hr_BA
,:ber_Tfng_MA
,:ks_Deva
,:lg_UG
,:en_NZ
،:ps
,:en_KI
,:dje
,:om_KE
,:en_SZ
,:mni_Beng_IN
,:trv
,:en_PW
,:bn_BD
,:os_RU
,:nyn
,:en_IN
,:fr_TN
,:kln
,:mid
,:kk_Cyrl_KZ
,:kn_IN
,:gv_IM
,:fr_NE
,:bs_Cyrl
,:io_001
,:mg_MG
,:apw_US
,:fur
,:kaj
,:sa_IN
,:mk
,:en_SK
,:sr
,:tt_RU
,:rn
,:fr_LU
,:ka_GE
,:wae_CH
,:nus
,:rej_ID
,:ks_Deva_IN
,:cho_US
,:agq
,:mr_IN
,:ksf
,:ve_ZA
,:chr_US
,:teo
,:nnh_CM
,:naq_NA
,:cic_US
و:ar_MA
,:sah_RU
,:fr_FR
,:kcg
,:fr_DZ
,:ki_KE
,:sr_Latn_BA
,:en_NF
,:ff_Latn_NE
,:ast
,:fr_MQ
,:wo_SN
,:ff_Latn_LR
,:jv
,:as_IN
,:cy_GB
-:my_MM
,:es_MX
,:kde
,:fr_MU
,:jbo
,:ln_CF
,:en_FI
,:ksf_CM
,:ko_KR
,:ro
,:sr_Latn_XK
,:cgg
,:nnp_IN
,:sat_Deva
,:en_HK
,:es_PE
,:en_SS
,:es_CR
、:yue_Hant_HK
,:kk
,:en_PL
,:dsb_DE
,:szl_PL
,:bs
,:fr_CF
,:teo_UG
,:gu_IN
,:ms_SG
،:ur_Aran_PK
⹁:ff_Adlm_BF
,:nqo
,:sr_Cyrl_ME
,:tk_TM
,:sc
,:en_GM
,:ug_CN
,:fil_PH
፣:ti_ER
,:za_CN
,:dua
,:bg_BG
,:eu_ES
,:fr_BL
,:mi
,:pt_MZ
,:ln_CG
,:zgh_MA
,:en_SC
,:kok
,:gaa_GH
,:su_Latn_ID
,:ff_Latn_NG
และ:th
,:en_PH
ܘ:syr
,:csw_CA
,:en_PN
,:khq_ML
,:vec
و:ar_ER
,:pt_AO
,:ug
、:zh_Hant_MO
,:nn_NO
,:shi
,:ru_BY
,:sw_TZ
,:fo_FO
,:sk_SK
,:smn_FI
,:fr
、:ii_CN
و:ar_KW
,:lb_LU
,:en_MH
,:kea_CV
,:mn_MN
,:gv
,:es_BB
,:lij_IT
,:en_GU
,:en_MG
፣:ti
,:en_CV
,:ber_Latn
,:ak_GH
,:gez_ER
,:wal
,:kok_Deva_IN
,:en_DM
, ŋ́gɛ:jgo
,:en_MX
,:csw
,:en_CM
,:ne_IN
,:es_SV
、:yue
,:ki
,:guz
,:ses_ML
,:cho
,:fr_CI
,:ca_IT
,:fr_VU
,:kxv_Orya_IN
,:es_PA
,:en_TT
,:en_CA
,:pt_CH
-:my
,:sbp_TZ
,:en_IL
,:en_NU
,:pt_FR
,:rhg_Rohg_BD
,:zgh
,:en_CY
,:es_NI
,:ff_Latn_SN
,:bgc
,:sq_XK
,:gn
,:ky_KG
,:fr_GA
,:st_LS
,:mic_CA
,:cv_RU
,:ckb_IQ
,:mus_US
,:sg
و:ar_AE
,:kok_Latn
,:es_BZ
,:cic
,:fr_GF
,:en_EE
,:en_VC
,:ia_001
,:sah
,:io
,:gaa
,:fr_BE
,:lag_TZ
,:es_419
,:ku_TR
,:en_CN
⹁:ff_Adlm_GN
,:kpe
,:jv_ID
,:ce
,:he
,:fr_SN
,:tg
,:en_MS
,:nyn_UG
,:ceb
,:bo
,:xog_UG
,:ee
,:gn_PY
,:gsw_LI
,:uz_Latn
,:or_IN
、:zh_Hant_MY
,:sr_Cyrl_RS
,:en_BI
,:gd_GB
,:kw_GB
,:pl
,:en_ZM
,:es_IC
、:yue_Hant_CN
,:kab
,:es_KN
,:kok_Deva
و:ar
,:mer
,:pt_CV
、:zh_Hant_HK
,:en_GD
,:en_MW
,:lkt
,:no
,:ga_GB
,:es_VG
,:pt
,:fr_MR
,:seh
,:ebu_KE
,:sq_MK
,:dua_CM
,:iu
,:yrl
,:lij
,:ckb_IR
,:kxv
,:en_FR
و:ar_DZ
,:or
,:os_GE
,:mas
,:pt_GQ
,:en_SE
,:yav
,:en_MV
,:en_KE
،‏:fa_IR
,:fr_CG
،:ur_Arab_PK
,:nb_NO
,:mgo_CM
,:saq_KE
และ:th_TH
,:fr_CM
,:en_KY
,:es_LC
,:su_Latn
,:rhg_Rohg_MM
,:szl
,:fi_FI
,:luy
,:pt_BR
,:vi_VN
,:en_PK
,:bgc_IN
,:fur_IT
,:ss_SZ
,:ts
,:luo_KE
,:ru_UA
,:es_US
,:af_NA
,:ts_ZA
,:nv_US
,:kxv_Latn
,:jbo_001
,:en_CK
,:ta_SG
,:en_JE
,:kxv_Deva
,:nl_BE
,:pa_Arab
,:el_CY
,:en_LS
,:jmc
,:ff_Latn_SL
,:vi
،:sd_Arab
,:af
,:bo_CN
,:rwk
,:be_BY
,:pa_Guru
,:pt_PT
،:ps_PK
,:en_TO
,:ksh_DE
,:luo
,:en_AS
,:es_KY
,:wa
و:ar_IL
、:zh_Hans_HK
,:mni
,:id_ID
,:sw_CD
,:twq
,:bho_IN
,:nv
,:mg
,:ny_MW
,:uz_Arab_AF
,:xh_ZA
,:brx
,:tn_BW
,:pqm_CA
,:prg
,:sv_SE
,:kw
,:kab_DZ
,:mgh
⹁:ff_Adlm_NG
,:hi_IN
,:es_BO
,:id
,:sa
,:se_FI
,:ast_ES
,:vun_TZ
,:es_TT
و:ar_DJ
,:fr_DJ
,:mfe
,:en_GI
,:pa_Guru_IN
,:haw_US
و:ar_OM
،:ur_Aran_IN
,:uz_Cyrl
mo:to
、:zh_Hant_CN
,:dje_NE
,:gsw_CH
፣:am_ET
,:sv
,:vai_Latn_LR
,:mid_IQ
,:fr_BI
,:ro_RO
,:es_ES
,:fil
,:ml_IN
,:en_VI
,:ff_Latn_GH
,:kok_Latn_IN
,:dav_KE
,:fr_PM
,:da_DK
,:kkj_CM
,:as
,:raj_IN
,:pcm_NG
,:en_TC
,:en_JM
,:osa
,:es_EA
,:en_BR
,:naq
,:tg_TJ
,:de_IT
,:kaj_NG
,:arn
,:blo_BJ
,:fo_DK
,:lrc
,:en_MO
,:sd_Deva_IN
,:se_NO
,:st_ZA
,:hu
و:ar_TN
,:en_ZA
,:es_PH
,:en_RW
,:en_NR
,:kn
,:ha_NG
,:ca_FR
,:pa
,:es_HT
,:en_JP
,:en_BN
,:tig
و:ar_001
,:rhg
,:lb
,:ff_Latn_GW
,:sn_ZW
⹁:ff_Adlm
,:asa_TZ
,:es_VE
,:dyo_SN
,:nnp
,:rw
,:es_TC
,:en_SA
,:es_PY
و:ar_YE
,:uz_Cyrl_UZ
,:de
,:ko_CN
,:bem
,:nds_DE
,:es_GT
mo:to_TO
،‏:fa
,:nds_NL
,:en_ID
,:ewo
,:hsb
,:nn
,:xog
དང་:dz_BT
,:nl_AW
,:en_LR
,:om_ET
,:ta
,:is
,:rw_RW
,:tt
,:mi_NZ
,:ff_Latn_CM
,:scn_IT
,:en_SH
,:ta_MY
,:en_HU
,:en_FJ
,:fr_MF
,:gez
,:en_AR
,:en_GY
,:tig_ER
,:az_Latn
,:vun
,:nso
,:es_EC
,:az_Cyrl
,:dv
,:en_LV
,:raj
،‏:fa_AF
፣:ti_ET
དང་:dz
,:nb
,:ta_IN
,:uz
,:en_FM
,:ba
,:ccp_BD
,:en_MM
,:en_GH
,:ms_BN
,:apw
,:en_PR
,:cv
,:hu_HU
import Foundation
for locale in Locale.availableIdentifiers {
let list = ["1", "2", "3", "4"]
let listFormatter = ListFormatter()
listFormatter.locale = Locale(identifier: locale)
guard let formattedList = listFormatter.string(from: list) else {
print("\(locale) Failed to format.")
continue
}
let components = formattedList
.split(separator: /\d+/)
.map { $0.replacingOccurrences(of: "\\d", with: "", options: .regularExpression).trimmingCharacters(in: .whitespaces) }
.filter { !$0.isEmpty }
var counts = [String: Int]()
for component in components {
counts[component, default: 0] += 1
}
guard let maxPair = counts.max(by: { $0.value < $1.value }) else {
print("\(locale) Failed to find max count.")
continue
}
let separator = maxPair.key
print("\(separator):\(locale)")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment