{"id":16883940,"url":"https://github.com/zbraniecki/unic-locale","last_synced_at":"2025-04-07T19:14:41.937Z","repository":{"id":46515545,"uuid":"186650093","full_name":"zbraniecki/unic-locale","owner":"zbraniecki","description":"Unic crates for locale management implementing Unicode UTS #35","archived":false,"fork":false,"pushed_at":"2024-05-11T00:36:05.000Z","size":1553,"stargazers_count":21,"open_issues_count":7,"forks_count":15,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-24T09:33:21.369Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zbraniecki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-14T15:27:11.000Z","updated_at":"2024-09-11T22:21:23.000Z","dependencies_parsed_at":"2024-06-19T06:16:29.295Z","dependency_job_id":"66c9cd0a-ca4b-4769-92ce-69beef2ffccc","html_url":"https://github.com/zbraniecki/unic-locale","commit_stats":{"total_commits":185,"total_committers":10,"mean_commits":18.5,"dds":"0.22162162162162158","last_synced_commit":"be9e680161884352df3823034bc42c1854d47260"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbraniecki%2Funic-locale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbraniecki%2Funic-locale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbraniecki%2Funic-locale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbraniecki%2Funic-locale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zbraniecki","download_url":"https://codeload.github.com/zbraniecki/unic-locale/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713258,"owners_count":20983683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T16:14:45.712Z","updated_at":"2025-04-07T19:14:41.912Z","avatar_url":"https://github.com/zbraniecki.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/zbraniecki/unic-locale.svg?branch=master)](https://travis-ci.org/zbraniecki/unic-locale) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/unic-locale/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/unic-locale?branch=master)\n\nThis meta-crate contains two basic crates for Unicode Language Identifier and Locale manipulation.\n\n# unic-langid [![crates.io](https://img.shields.io/crates/v/unic-langid.svg)](https://crates.io/crates/unic-langid)\n\nUnic crate for [Unicode Language Identifiers](http://unicode.org/reports/tr35/#Unicode_language_identifier) management.\n\nLanguage Identifier describes a combination of language, region, script and variants. Examples: `\"en-US\"`, `\"sr-Cyrl-RU\"`, `\"de-AT\"`, `\"zh-Hans\"`.\n\n# unic-locale [![crates.io](https://img.shields.io/crates/v/unic-locale.svg)](https://crates.io/crates/unic-locale)\n\nUnic crates for [Unicode Locale Identifiers](http://unicode.org/reports/tr35/#Unicode_locale_identifier) management.\n\nLocale Identifiers extend Language Identifiers with a set of extensions for *unicode*, *transform* and *private*.\n\nThis allows the user to encode additional data. Examples: `\"en-US-u-hc-h24\"`, `\"pl-u-ca-buddhist\"`.\n\n# Status\n\nThe `unic-langid` crate is fully functional and should parse/manipulate/serialize in conformance with the standard.\nThe Rust API is considered close to stable.\n\nThe `unic-locale` crate is mostly complete with full support for unicode, transform and private extensions. The `other` extension type is not currently supported.\nThe API shadows that of `unic-langid` and is intended to be a drop-in replacement for `unic-langid` so that users can start with a simple Language Identifier coverage and extend it to use `unic-locale` once needed.\n\n# Unicode Conformance\n\nAll code implements (parts) of [Unicode UTS #35 Language and Locale Identifiers](http://unicode.org/reports/tr35/#Identifiers).\n\nThe API is intended to function similarly to [ICU Locale](http://icu-project.org/apiref/icu4c/classicu_1_1Locale.html) and [ECMA402 Intl.Locale](https://github.com/tc39/proposal-intl-locale/).\n\n# Performance\n\nIn early tests the performance of parsing a set of language identifiers into a well formed struct, `unic-langid` is [~50 times faster](https://gist.github.com/zbraniecki/016f7bd35fc6e09aede997c5bc20222a) than ICU Locale.\n\nPerformance is consider close to optimal at the moment.\n\n# Meta-crate\n\nWhoa, I can see you saying, what is it about with all those crates here?\n\nWell, that's an excellent question!\n\nUnless you want a deep dive into procedural macro and [proc-macro-hack](https://github.com/dtolnay/proc-macro-hack), let me just give you a tl;dr:\n\n - `unic-{langid|locale}` - User facing public crates that you should use. Potentially with `features = [\"macros\"]`\n - `unic-{langid|locale|-impl` - The real code behind all of this.\n - `unic-{langid|locale}-macro-impl` - Actual implementations of the procedural macros\n - `unic-{langid|locale}-macro` - Declaration crates for the macros\n\nIn result, there's a little bit of hackery here to get everything work nicely for you, but all you should care about are the two top crates with optional features if you want.\n\nThe rest will hopefully go away one day once we mature the macros ecosystem in Rust.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzbraniecki%2Funic-locale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzbraniecki%2Funic-locale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzbraniecki%2Funic-locale/lists"}