• Stars
    star
    1,078
  • Rank 42,909 (Top 0.9 %)
  • Language
    Rust
  • License
    Other
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Solving i18n for client-side and resource-constrained environments.

ICU4X Docs Build Status Coverage Status (Coveralls) Coverage Status (Codecov)

Welcome to the home page for the ICU4X project.

ICU4X provides components enabling wide range of software internationalization. It draws deeply from the experience of ICU4C, ICU4J and ECMA-402 and relies on data from the CLDR project.

The design goals of ICU4X are:

  • Small and modular code
  • Pluggable locale data
  • Availability and ease of use in multiple programming languages
  • Written by internationalization experts to encourage best practices

Stay informed! Join our public, low-traffic mailing list: [email protected]. Note: After subscribing, check your spam folder for a confirmation.

Documentation

For an introduction to the project, please visit the "Introduction to ICU4X for Rust" tutorial. Further tutorials can be found in the tutorial index.

For technical information on how to use ICU4X, visit our API docs (latest stable) or API docs (tip of main).

More information about the project can be found in the docs subdirectory.

Quick Start

An example ICU4X powered application in Rust may look like below...

Cargo.toml:

[dependencies]
icu = "1.0.0"
icu_testdata = "1.0.0"

src/main.rs:

use icu::calendar::DateTime;
use icu::datetime::{options::length, DateTimeFormatter};
use icu::locid::locale;

let options =
    length::Bag::from_date_time_style(length::Date::Long, length::Time::Medium).into();

let dtf = DateTimeFormatter::try_new_unstable(&icu_testdata::unstable(), &locale!("es").into(), options)
    .expect("Failed to create DateTimeFormatter instance.");

let date = DateTime::try_new_iso_datetime(2020, 9, 12, 12, 35, 0).expect("Failed to parse date.");
let date = date.to_any();

let formatted_date = dtf.format(&date).expect("Formatting failed");
assert_eq!(
    formatted_date.to_string(),
    "12 de septiembre de 2020, 12:35:00"
);

Development

ICU4X is developed by the ICU4X-SC. We are a subcommittee of ICU-TC in the Unicode Consortium focused on providing solutions for client-side internationalization. See unicode.org for more information on our governance.

Please subscribe to this repository to participate in discussions. If you want to contribute, see our contributing.md.

Charter

For the full charter, including answers to frequently asked questions, see charter.md.

ICU4X is a new project whose objective is to solve the needs of clients who wish to provide client-side internationalization for their products in resource-constrained environments.

ICU4X, or "ICU for X", will be built from the start with several key design constraints:

  1. Small and modular code.
  2. Pluggable locale data.
  3. Availability and ease of use in multiple programming languages.
  4. Written by internationalization experts to encourage best practices.

ICU4X will provide an ECMA-402-compatible API surface in the target client-side platforms, including the web platform, iOS, Android, WearOS, WatchOS, Flutter, and Fuchsia, supported in programming languages including Rust, JavaScript, Objective-C, Java, Dart, and C++.

More Repositories

1

icu

The home of the ICU project source code.
C++
2,111
star
2

cldr

The home of the Unicode Common Locale Data Repository
Java
828
star
3

last-resort-font

Last Resort Font
673
star
4

cldr-json

JSON Data from the Unicode CLDR Project
Shell
447
star
5

message-format-wg

Developing a standard for localizable message strings
231
star
6

text-rendering-tests

Unicode’s test suite for text rendering engines
HTML
166
star
7

unilex

Lexical data at Unicode
Clojure
63
star
8

unicodetools

home of unicodetools and https://util.unicode.org JSPs
HTML
51
star
9

icu-data

ICU Data Repository
Java
32
star
10

icu-docs

Docs (API, Userguide) for ICU
HTML
25
star
11

cldr-staging

Proposed production data for CLDR data
HTML
25
star
12

cjk-symbols

CJK Symbols
PostScript
22
star
13

icu-demos

sample apps for ICU (formerly icuapps)
Java
20
star
14

unihan-database

For review of draft Unihan database changes, removals, and additions by experts.
18
star
15

lstm_word_segmentation

Python code for training an LSTM model for word segmentation in Thai, Burmese, and similar languages.
Python
18
star
16

uk-source-ideographs

UK-Source Ideographs
11
star
17

jira-github-pr-check

Checks GitHub pull requests for valid and accepted Jira tickets. Used for ICU and CLDR
JavaScript
11
star
18

cldr-implementers-guide

Implementer's Guide for CLDR
9
star
19

uli-docs

ULI has been Archived, see https://unicode.org/uli
8
star
20

ml-confusables-generator

Generates confusables for Han script using ML techniques
Jupyter Notebook
8
star
21

rust-discuss

OmnICU-SC: For discussion of i18n in Rust.
7
star
22

unicode-org.github.io

top level index.html for https://unicode-org.github.io/
HTML
7
star
23

icu-docker

Dockerfiles for ICU development
Shell
6
star
24

icu4jni

New home of the (archived) ICU4JNI project.
Java
5
star
25

uli

ULI has been Archived, see https://unicode.org/uli
Python
4
star
26

icu-jira-safari

Note: GitHub provides this directly now.
JavaScript
4
star
27

icu-trac-tools

ICU’s trac plugins
Python
3
star
28

icu4x-docs

ICU4X Docs
HTML
3
star
29

conformance

Unicode & CLDR Data Driven Testing
Python
3
star
30

icu-trac2jira

ICU and CLDR’s Trac to JIRA conversion tool. Archived, not under active maintenance.
JavaScript
3
star
31

cldr-apps-webdriver

CLDR Survey Tool WebDriver Test Framework
Java
2
star
32

icu-remunge-svndump

munger for svndump — to be used for pre-combining ICU svn trees
Perl
2
star
33

icu-perf

ICU performance test results. Maintained by ICU-TC
JavaScript
2
star
34

template-repo

Template Repository for Unicode projects
1
star