From d2b13f987d251646aef7f3277382aeb83b0aa419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= <150025636+git-f0x@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:44:45 +0200 Subject: [PATCH] chore: update to icu 2.0 Reduces binary size by about 25 MB. --- Cargo.lock | 702 +++++++++++++++++++----------------------------- Cargo.toml | 3 +- src/localize.rs | 87 +++--- src/project.rs | 2 +- 4 files changed, 327 insertions(+), 467 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 477c6ac..ae82ce3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -453,20 +453,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock 3.4.1", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite 2.6.1", "parking", - "polling 3.10.0", + "polling 3.11.0", "rustix 1.1.2", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -508,12 +508,12 @@ dependencies = [ [[package]] name = "async-process" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel", - "async-io 2.5.0", + "async-io 2.6.0", "async-lock 3.4.1", "async-signal", "async-task", @@ -537,11 +537,11 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ - "async-io 2.5.0", + "async-io 2.6.0", "async-lock 3.4.1", "atomic-waker", "cfg-if", @@ -550,7 +550,7 @@ dependencies = [ "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -819,7 +819,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", - "regex-automata 0.4.10", + "regex-automata", "serde", ] @@ -896,9 +896,9 @@ dependencies = [ [[package]] name = "calendrical_calculations" -version = "0.1.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97f73e95d668625c9b28a3072e6326773785a0cf807de9f3d632778438f3d38" +checksum = "53c5d386a9f2c8b97e1a036420bcf937db4e5c9df33eb0232025008ced6104c0" dependencies = [ "core_maths", "displaydoc", @@ -912,7 +912,7 @@ checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.9.4", "log", - "polling 3.10.0", + "polling 3.11.0", "rustix 0.38.44", "slab", "thiserror 1.0.69", @@ -925,7 +925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" dependencies = [ "bitflags 2.9.4", - "polling 3.10.0", + "polling 3.11.0", "rustix 1.1.2", "slab", "tracing", @@ -1220,7 +1220,7 @@ dependencies = [ "libc", "once_cell", "paste", - "polling 3.10.0", + "polling 3.11.0", "socket2 0.6.0", "windows-sys 0.61.0", ] @@ -1296,9 +1296,9 @@ dependencies = [ [[package]] name = "compio-runtime" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8edfe2c092d238f9eba7d795fcece2a2f0826f69134496dd03a9aa02e59916" +checksum = "b49f9c5ede8b9f18888f304ed3d01c9406d38a4877ff742b5326724341fe1970" dependencies = [ "async-task", "cfg-if", @@ -1406,7 +1406,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1427,7 +1427,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "quote", "syn 2.0.106", @@ -1446,8 +1446,7 @@ dependencies = [ "grep", "i18n-embed", "i18n-embed-fl", - "icu_collator", - "icu_provider 1.5.0", + "icu", "ignore", "libcosmic", "log", @@ -1466,7 +1465,7 @@ dependencies = [ [[package]] name = "cosmic-files" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-files.git#6d9cd3e7e59102cd3f9d53f1326a23d1db5dbac7" +source = "git+https://github.com/pop-os/cosmic-files.git#436b8b3a067d29aed2b8732de66472ed11cb5eac" dependencies = [ "anyhow", "chrono", @@ -1484,8 +1483,6 @@ dependencies = [ "i18n-embed", "i18n-embed-fl", "icu", - "icu_collator", - "icu_provider 1.5.0", "ignore", "image", "jxl-oxide", @@ -1592,7 +1589,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "almost", "cosmic-config", @@ -2307,13 +2304,13 @@ checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" [[package]] name = "fixed_decimal" -version = "0.5.6" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0febbeb1118a9ecdee6e4520ead6b54882e843dd0592ad233247dbee84c53db8" +checksum = "35943d22b2f19c0cb198ecf915910a8158e94541c89dcc63300d7799d46c2c5e" dependencies = [ "displaydoc", "smallvec", - "writeable 0.5.5", + "writeable", ] [[package]] @@ -2664,7 +2661,7 @@ dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.5+wasi-0.2.4", + "wasi 0.14.6+wasi-0.2.4", ] [[package]] @@ -2789,7 +2786,7 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.10", + "regex-automata", "regex-syntax", ] @@ -2937,7 +2934,7 @@ dependencies = [ "bstr", "grep-matcher", "log", - "regex-automata 0.4.10", + "regex-automata", "regex-syntax", ] @@ -3172,7 +3169,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "dnd", "iced_accessibility", @@ -3190,7 +3187,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "accesskit", "accesskit_winit", @@ -3199,7 +3196,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "bitflags 2.9.4", "bytes", @@ -3223,7 +3220,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "futures", "iced_core", @@ -3249,7 +3246,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "bitflags 2.9.4", "bytemuck", @@ -3271,7 +3268,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3283,7 +3280,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3298,7 +3295,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "bytemuck", "cosmic-text", @@ -3314,7 +3311,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "as-raw-xcb-connection", "bitflags 2.9.4", @@ -3345,7 +3342,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3364,7 +3361,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3392,109 +3389,100 @@ dependencies = [ [[package]] name = "icu" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff5e3018d703f168b00dcefa540a65f1bbc50754ae32f3f5f0e43fe5ee51502" +checksum = "ab13fe39da5da564b88228e9f08815c9d0efbe9ec244e72b149d9994e10f1054" dependencies = [ "icu_calendar", "icu_casemap", "icu_collator", - "icu_collections 1.5.0", + "icu_collections", "icu_datetime", "icu_decimal", "icu_experimental", "icu_list", - "icu_locid", - "icu_locid_transform", - "icu_normalizer 1.5.0", + "icu_locale", + "icu_normalizer", + "icu_pattern", "icu_plurals", - "icu_properties 1.5.1", - "icu_provider 1.5.0", + "icu_properties", + "icu_provider", "icu_segmenter", - "icu_timezone", + "icu_time", ] [[package]] name = "icu_calendar" -version = "1.5.2" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff" +checksum = "1f6c40ba6481ed7ddd358437af0f000eb9f661345845977d9d1b38e606374e1f" dependencies = [ "calendrical_calculations", "displaydoc", "icu_calendar_data", - "icu_locid", - "icu_locid_transform", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", + "icu_locale", + "icu_locale_core", + "icu_provider", + "ixdtf", + "tinystr", + "writeable", + "zerovec", ] [[package]] name = "icu_calendar_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "820499e77e852162190608b4f444e7b4552619150eafc39a9e39333d9efae9e1" +checksum = "7219c8639ab936713a87b571eed2bc2615aa9137e8af6eb221446ee5644acc18" [[package]] name = "icu_casemap" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff0c8ae9f8d31b12e27fc385ff9ab1f3cd9b17417c665c49e4ec958c37da75f" +checksum = "6dc5e74b3c9d7b63e0d7c5fd54ee8c135705df2ea2aa558082dd555dc9747a97" dependencies = [ "displaydoc", "icu_casemap_data", - "icu_collections 1.5.0", - "icu_locid", - "icu_properties 1.5.1", - "icu_provider 1.5.0", - "writeable 0.5.5", - "zerovec 0.10.4", + "icu_collections", + "icu_locale_core", + "icu_properties", + "icu_provider", + "potential_utf", + "writeable", + "zerovec", ] [[package]] name = "icu_casemap_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd9f6276270c85a5cd54611adbbf94e993ec464a2a86a452a6c565b7ded5d9" +checksum = "f7584067558ab4c60c95d1ac2abd1588689cb4bcd4e099507f62dae86ae8d2c0" [[package]] name = "icu_collator" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d370371887d31d56f361c3eaa15743e54f13bc677059c9191c77e099ed6966b2" +checksum = "42ad4c6a556938dfd31f75a8c54141079e8821dc697ffb799cfe0f0fa11f2edc" dependencies = [ "displaydoc", "icu_collator_data", - "icu_collections 1.5.0", - "icu_locid_transform", - "icu_normalizer 1.5.0", - "icu_properties 1.5.1", - "icu_provider 1.5.0", + "icu_collections", + "icu_locale", + "icu_locale_core", + "icu_normalizer", + "icu_properties", + "icu_provider", "smallvec", "utf16_iter", "utf8_iter", - "zerovec 0.10.4", + "zerovec", ] [[package]] name = "icu_collator_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b353986d77d28991eca4dea5ef2b8982f639342ae19ca81edc44f048bc38ebb" - -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke 0.7.5", - "zerofrom", - "zerovec 0.10.4", -] +checksum = "d880b8e680799eabd90c054e1b95526cd48db16c95269f3c89fb3117e1ac92c5" [[package]] name = "icu_collections" @@ -3504,16 +3492,16 @@ checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", "potential_utf", - "yoke 0.8.0", + "yoke", "zerofrom", - "zerovec 0.11.4", + "zerovec", ] [[package]] name = "icu_datetime" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d115efb85e08df3fd77e77f52e7e087545a783fffba8be80bfa2102f306b1780" +checksum = "0790c15e3d6ae3303365fa2337b4f6469de257916141110d14dcaf73f1d31ac5" dependencies = [ "displaydoc", "either", @@ -3521,99 +3509,126 @@ dependencies = [ "icu_calendar", "icu_datetime_data", "icu_decimal", - "icu_locid", - "icu_locid_transform", + "icu_locale", + "icu_locale_core", + "icu_pattern", "icu_plurals", - "icu_provider 1.5.0", - "icu_timezone", - "litemap 0.7.5", + "icu_provider", + "icu_time", + "potential_utf", "smallvec", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", + "tinystr", + "writeable", + "zerovec", ] [[package]] name = "icu_datetime_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef5f04076123cab1b7a926a7083db27fe0d7a0e575adb984854aae3f3a6507d" +checksum = "83791ac10bb7b774f130bb81fa89c4059de710dcef53caa0b86e645212d6d54c" [[package]] name = "icu_decimal" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb" +checksum = "fec61c43fdc4e368a9f450272833123a8ef0d7083a44597660ce94d791b8a2e2" dependencies = [ "displaydoc", "fixed_decimal", "icu_decimal_data", - "icu_locid_transform", - "icu_provider 1.5.0", - "writeable 0.5.5", + "icu_locale", + "icu_locale_core", + "icu_provider", + "serde", + "tinystr", + "writeable", + "zerovec", ] [[package]] name = "icu_decimal_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c95dd97f5ccf6d837a9c115496ec7d36646fa86ca18e7f1412115b4c820ae2" +checksum = "b70963bc35f9bdf1bc66a5c1f458f4991c1dc71760e00fa06016b2c76b2738d5" [[package]] name = "icu_experimental" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7" +checksum = "ebe3d7e64892a434b08d5a58b53127e47a095ff780305f563c8c01798a1051b0" dependencies = [ "displaydoc", + "either", "fixed_decimal", - "icu_collections 1.5.0", + "icu_casemap", + "icu_collections", "icu_decimal", "icu_experimental_data", - "icu_locid", - "icu_locid_transform", - "icu_normalizer 1.5.0", + "icu_list", + "icu_locale", + "icu_locale_core", + "icu_normalizer", "icu_pattern", "icu_plurals", - "icu_properties 1.5.1", - "icu_provider 1.5.0", - "litemap 0.7.5", + "icu_properties", + "icu_provider", + "litemap", "num-bigint", "num-rational", "num-traits", + "potential_utf", "smallvec", - "tinystr 0.7.6", - "writeable 0.5.5", + "tinystr", + "writeable", "zerofrom", - "zerotrie 0.1.3", - "zerovec 0.10.4", + "zerotrie", + "zerovec", ] [[package]] name = "icu_experimental_data" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121df92eafb8f5286d4e8ff401c1e7db8384377f806db3f8db77b91e5b7bd4dd" +checksum = "b60d32ba5610adfc2083f5a759f55d9a9082ebf72750f126cb1630844eea1acf" [[package]] name = "icu_list" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfeda1d7775b6548edd4e8b7562304a559a91ed56ab56e18961a053f367c365" +checksum = "e26f94ec776bb8b28cedc7dcf91033b822c5cb4c1783cf7a3f796fc168aa0c8b" dependencies = [ "displaydoc", "icu_list_data", - "icu_locid_transform", - "icu_provider 1.5.0", - "regex-automata 0.2.0", - "writeable 0.5.5", + "icu_locale", + "icu_provider", + "regex-automata", + "serde", + "writeable", + "zerovec", ] [[package]] name = "icu_list_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b1a7fbdbf3958f1be8354cb59ac73f165b7b7082d447ff2090355c9a069120" +checksum = "5a456a2412458ca45e181d9d51c5090ef8cd90f5692e11d34bafab3b3be1c76b" + +[[package]] +name = "icu_locale" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ae5921528335e91da1b6c695dbf1ec37df5ac13faa3f91e5640be93aa2fbefd" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_locale_data", + "icu_provider", + "potential_utf", + "tinystr", + "zerovec", +] [[package]] name = "icu_locale_core" @@ -3622,62 +3637,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", - "litemap 0.8.0", - "tinystr 0.8.1", - "writeable 0.6.1", - "zerovec 0.11.4", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_data" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap 0.7.5", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "zerovec 0.10.4", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections 1.5.0", - "icu_normalizer_data 1.5.1", - "icu_properties 1.5.1", - "icu_provider 1.5.0", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec 0.10.4", -] +checksum = "4fdef0c124749d06a743c69e938350816554eb63ac979166590e2b4ee4252765" [[package]] name = "icu_normalizer" @@ -3686,20 +3656,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", - "icu_collections 2.0.0", - "icu_normalizer_data 2.0.0", - "icu_properties 2.0.1", - "icu_provider 2.0.0", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", "smallvec", - "zerovec 0.11.4", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", ] -[[package]] -name = "icu_normalizer_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" - [[package]] name = "icu_normalizer_data" version = "2.0.0" @@ -3708,51 +3675,36 @@ checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_pattern" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4" +checksum = "983825f401e6bc4a13c45d552ffd9ad6f3f6b6bc0ec03f31d6835a90a46deb1f" dependencies = [ "displaydoc", "either", - "writeable 0.5.5", - "yoke 0.7.5", - "zerofrom", + "writeable", + "yoke", + "zerovec", ] [[package]] name = "icu_plurals" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a70e7c025dbd5c501b0a5c188cd11666a424f0dadcd4f0a95b7dafde3b114" +checksum = "0fd83a65f58b6f28e1f3da8c6ada6b415ee3ad5cb480b75bdb669f34d72dd179" dependencies = [ "displaydoc", "fixed_decimal", - "icu_locid_transform", + "icu_locale", "icu_plurals_data", - "icu_provider 1.5.0", - "zerovec 0.10.4", + "icu_provider", + "zerovec", ] [[package]] name = "icu_plurals_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a483403238cb7d6a876a77a5f8191780336d80fe7b8b00bfdeb20be6abbfd112" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections 1.5.0", - "icu_locid_transform", - "icu_properties_data 1.5.1", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "zerovec 0.10.4", -] +checksum = "9ec552d761eaf4a1c39ad28936e0af77a41bf01ff756ea54be4f8bfc21c265d7" [[package]] name = "icu_properties" @@ -3761,44 +3713,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", - "icu_collections 2.0.0", + "icu_collections", "icu_locale_core", - "icu_properties_data 2.0.1", - "icu_provider 2.0.0", + "icu_properties_data", + "icu_provider", "potential_utf", - "zerotrie 0.2.2", - "zerovec 0.11.4", + "zerotrie", + "zerovec", ] -[[package]] -name = "icu_properties_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" - [[package]] name = "icu_properties_data" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr 0.7.6", - "writeable 0.5.5", - "yoke 0.7.5", - "zerofrom", - "zerovec 0.10.4", -] - [[package]] name = "icu_provider" version = "2.0.0" @@ -3808,67 +3737,63 @@ dependencies = [ "displaydoc", "icu_locale_core", "stable_deref_trait", - "tinystr 0.8.1", - "writeable 0.6.1", - "yoke 0.8.0", + "tinystr", + "writeable", + "yoke", "zerofrom", - "zerotrie 0.2.2", - "zerovec 0.11.4", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "zerotrie", + "zerovec", ] [[package]] name = "icu_segmenter" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de" +checksum = "e185fc13b6401c138cf40db12b863b35f5edf31b88192a545857b41aeaf7d3d3" dependencies = [ "core_maths", "displaydoc", - "icu_collections 1.5.0", - "icu_locid", - "icu_provider 1.5.0", + "icu_collections", + "icu_locale", + "icu_locale_core", + "icu_provider", "icu_segmenter_data", + "potential_utf", "utf8_iter", - "zerovec 0.10.4", + "zerovec", ] [[package]] name = "icu_segmenter_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e52775179941363cc594e49ce99284d13d6948928d8e72c755f55e98caa1eb" +checksum = "5360a2fbe97f617c4f8b944356dedb36d423f7da7f13c070995cf89e59f01220" [[package]] -name = "icu_timezone" -version = "1.5.0" +name = "icu_time" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa91ba6a585939a020c787235daa8aee856d9bceebd6355e283c0c310bc6de96" +checksum = "10d01a4a2dcbc5e5180ef113920e7461d0e9caaddb3567d81c4eca262efe55c0" dependencies = [ + "calendrical_calculations", "displaydoc", "icu_calendar", - "icu_provider 1.5.0", - "icu_timezone_data", - "tinystr 0.7.6", - "zerotrie 0.1.3", - "zerovec 0.10.4", + "icu_locale_core", + "icu_provider", + "icu_time_data", + "ixdtf", + "serde", + "tinystr", + "writeable", + "zerotrie", + "zerovec", ] [[package]] -name = "icu_timezone_data" -version = "1.5.1" +name = "icu_time_data" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adcf7b613a268af025bc2a2532b4b9ee294e6051c5c0832d8bff20ac0232e68" +checksum = "8472be4410d26a03d7208cae3a76c798dd6766e8226ab977cd8b2d349a6dbf08" [[package]] name = "ident_case" @@ -3893,8 +3818,8 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "icu_normalizer 2.0.0", - "icu_properties 2.0.1", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -3907,7 +3832,7 @@ dependencies = [ "globset", "log", "memchr", - "regex-automata 0.4.10", + "regex-automata", "same-file", "walkdir", "winapi-util", @@ -3970,13 +3895,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.1" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921" +checksum = "24855426e2ca0eb0c416e7e1f548b11f7547805faeed2a3d3e961286b51f7d53" dependencies = [ "equivalent", "hashbrown", "serde", + "serde_core", ] [[package]] @@ -4127,6 +4053,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "ixdtf" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8289f7f711a1a51f80e2e368355d023042ca55d8d554fd5e953f01464c15842d" +dependencies = [ + "displaydoc", +] + [[package]] name = "jiff" version = "0.2.15" @@ -4476,7 +4411,7 @@ checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#b9a00c6e799b80154190f11943bb65c1fc4dc58b" +source = "git+https://github.com/pop-os/libcosmic.git#978bde5720ee00b26fe4ab221a914926851bd62b" dependencies = [ "apply", "ashpd 0.12.0", @@ -4546,9 +4481,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.4", "libc", @@ -4604,12 +4539,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" -[[package]] -name = "litemap" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" - [[package]] name = "litemap" version = "0.8.0" @@ -5476,12 +5405,13 @@ dependencies = [ [[package]] name = "ordermap" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcd63f1ae4b091e314a26627c467dd8810d674ba798abc0e566679955776c63" +checksum = "9acd5d00b8c2b92f4fd4a1d79f185ee85e611eee81b8fe347fefd17f5478c86e" dependencies = [ "indexmap", "serde", + "serde_core", ] [[package]] @@ -5788,9 +5718,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "plist" -version = "1.7.4" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" +checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" dependencies = [ "base64", "indexmap", @@ -5843,16 +5773,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi 0.5.2", "pin-project-lite", "rustix 1.1.2", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -5882,7 +5812,8 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ - "zerovec 0.11.4", + "serde", + "zerovec", ] [[package]] @@ -6322,19 +6253,10 @@ checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.10", + "regex-automata", "regex-syntax", ] -[[package]] -name = "regex-automata" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9368763f5a9b804326f3af749e16f9abf378d227bcdee7634b13d8f17793782" -dependencies = [ - "memchr", -] - [[package]] name = "regex-automata" version = "0.4.10" @@ -6621,18 +6543,28 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.224" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "6aaeb1e94f53b16384af593c71e20b095e958dab1d26939c1b70645c5cfbcc0b" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.224" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f39390fa6346e24defbcdd3d9544ba8a19985d0af74df8501fbfe9a64341ab" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.224" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "87ff78ab5e8561c9a675bfc1785cb07ae721f0ee53329a595cefd8c04c2ac4e0" dependencies = [ "proc-macro2", "quote", @@ -6641,15 +6573,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "indexmap", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -7243,16 +7176,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec 0.10.4", -] - [[package]] name = "tinystr" version = "0.8.1" @@ -7260,7 +7183,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", - "zerovec 0.11.4", + "zerovec", ] [[package]] @@ -7504,7 +7427,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" dependencies = [ "serde", - "tinystr 0.8.1", + "tinystr", ] [[package]] @@ -7709,18 +7632,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.5+wasi-0.2.4" +version = "0.14.6+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +checksum = "7f71243a3f320c00a8459e455c046ce571229c2f31fd11645d9dc095e3068ca0" dependencies = [ "wasip2", ] [[package]] name = "wasip2" -version = "1.0.0+wasi-0.2.4" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] @@ -8695,9 +8618,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "write16" @@ -8705,20 +8628,14 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" -dependencies = [ - "either", -] - [[package]] name = "writeable" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +dependencies = [ + "either", +] [[package]] name = "x11-dl" @@ -8880,18 +8797,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive 0.7.5", - "zerofrom", -] - [[package]] name = "yoke" version = "0.8.0" @@ -8900,22 +8805,10 @@ checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", - "yoke-derive 0.8.0", + "yoke-derive", "zerofrom", ] -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", - "synstructure", -] - [[package]] name = "yoke-derive" version = "0.8.0" @@ -8972,9 +8865,9 @@ checksum = "2d07e46d035fb8e375b2ce63ba4e4ff90a7f73cf2ffb0138b29e1158d2eaadf7" dependencies = [ "async-broadcast 0.7.2", "async-executor", - "async-io 2.5.0", + "async-io 2.6.0", "async-lock 3.4.1", - "async-process 2.4.0", + "async-process 2.5.0", "async-recursion", "async-task", "async-trait", @@ -9117,17 +9010,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "zerotrie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb594dd55d87335c5f60177cee24f19457a5ec10a065e0a3014722ad252d0a1f" -dependencies = [ - "displaydoc", - "yoke 0.7.5", - "zerofrom", -] - [[package]] name = "zerotrie" version = "0.2.2" @@ -9135,41 +9017,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" dependencies = [ "displaydoc", - "yoke 0.8.0", + "yoke", "zerofrom", ] -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke 0.7.5", - "zerofrom", - "zerovec-derive 0.10.3", -] - [[package]] name = "zerovec" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ - "yoke 0.8.0", + "yoke", "zerofrom", - "zerovec-derive 0.11.1", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "zerovec-derive", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 637b94a..4e117cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,8 +23,7 @@ tokio = { version = "1", features = ["process", "time"] } syntect = "5.2.0" two-face = "0.4.3" # Internationalization -icu_collator = "1.5" -icu_provider = { version = "1.5", features = ["sync"] } +icu = { version = "2.0.0", features = ["compiled_data"] } i18n-embed = { version = "0.16", features = [ "fluent-system", "desktop-requester", diff --git a/src/localize.rs b/src/localize.rs index d7d9ce5..1a79736 100644 --- a/src/localize.rs +++ b/src/localize.rs @@ -1,50 +1,67 @@ // SPDX-License-Identifier: GPL-3.0-only -use std::str::FromStr; -use std::sync::OnceLock; - use i18n_embed::{ DefaultLocalizer, LanguageLoader, Localizer, fluent::{FluentLanguageLoader, fluent_language_loader}, }; -use icu_collator::{Collator, CollatorOptions, Numeric}; -use icu_provider::DataLocale; +use icu::collator::{ + Collator, CollatorBorrowed, CollatorPreferences, options::CollatorOptions, + preferences::CollationNumericOrdering, +}; +use icu::locale::Locale; use rust_embed::RustEmbed; +use std::sync::LazyLock; #[derive(RustEmbed)] #[folder = "i18n/"] struct Localizations; -pub static LANGUAGE_LOADER: OnceLock = OnceLock::new(); -pub static LANGUAGE_SORTER: OnceLock = OnceLock::new(); +pub static LANGUAGE_LOADER: LazyLock = LazyLock::new(|| { + let loader: FluentLanguageLoader = fluent_language_loader!(); + + loader + .load_fallback_language(&Localizations) + .expect("Error while loading fallback language"); + + loader +}); + +pub static LANGUAGE_SORTER: LazyLock = LazyLock::new(|| { + let create_collator = |locale: Locale| { + let mut prefs = CollatorPreferences::from(locale); + prefs.numeric_ordering = Some(CollationNumericOrdering::True); + Collator::try_new(prefs, CollatorOptions::default()).ok() + }; + + Locale::try_from_str(&LANGUAGE_LOADER.current_language().to_string()) + .ok() + .and_then(create_collator) + .or_else(|| { + Locale::try_from_str(&LANGUAGE_LOADER.fallback_language().to_string()) + .ok() + .and_then(create_collator) + }) + .unwrap_or_else(|| { + let locale = Locale::try_from_str("en-US").expect("en-US is a valid BCP-47 tag"); + create_collator(locale) + .expect("Creating a collator from the system's current language, the fallback language, or American English should succeed") + }) +}); #[macro_export] macro_rules! fl { ($message_id:literal) => {{ - i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER.get().unwrap(), $message_id) + i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER, $message_id) }}; ($message_id:literal, $($args:expr),*) => {{ - i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER.get().unwrap(), $message_id, $($args), *) + i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER, $message_id, $($args), *) }}; } // Get the `Localizer` to be used for localizing this library. pub fn localizer() -> Box { - LANGUAGE_LOADER.get_or_init(|| { - let loader: FluentLanguageLoader = fluent_language_loader!(); - - loader - .load_fallback_language(&Localizations) - .expect("Error while loading fallback language"); - - loader - }); - - Box::from(DefaultLocalizer::new( - LANGUAGE_LOADER.get().unwrap(), - &Localizations, - )) + Box::from(DefaultLocalizer::new(&*LANGUAGE_LOADER, &Localizations)) } pub fn localize() { @@ -52,25 +69,9 @@ pub fn localize() { let requested_languages = i18n_embed::DesktopLanguageRequester::requested_languages(); if let Err(error) = localizer.select(&requested_languages) { - eprintln!("Error while loading language for App List {}", error); + eprintln!( + "Error while loading language for COSMIC Text Editor {}", + error + ); } } - -pub fn sorter() -> &'static Collator { - LANGUAGE_SORTER.get_or_init(|| { - let mut options = CollatorOptions::new(); - options.numeric = Some(Numeric::On); - let localizer = localizer(); - let language_loader = localizer.language_loader(); - - DataLocale::from_str(&language_loader.current_language().to_string()) - .or_else(|_| DataLocale::from_str(&language_loader.fallback_language().to_string())) - .ok() - .and_then(|locale| Collator::try_new(&locale, options).ok()) - .or_else(|| { - let locale = DataLocale::from_str("en-US").expect("en-US is a valid BCP-47 tag"); - Collator::try_new(&locale, options).ok() - }) - .expect("Creating a collator from the system's current language, the fallback language, or American English should succeed") - }) -} diff --git a/src/project.rs b/src/project.rs index 46ad1ea..11c8978 100644 --- a/src/project.rs +++ b/src/project.rs @@ -91,7 +91,7 @@ impl Ord for ProjectNode { } } } - crate::localize::sorter().compare(self.name(), other.name()) + crate::localize::LANGUAGE_SORTER.compare(self.name(), other.name()) } }