프로젝트 소개
Locale은 유니코드 CLDR(Common Locale Data Repository) 데이터셋에서 생성된 강타입 로케일 식별자를 제공하는 Rust 워크스페이스입니다. README에 따르면 CLDR 48.1.0을 기반으로 766개의 유니코드 로케일을 지원하며, 데이터는 공식 CLDR-JSON 저장소에서 가져옵니다.
워크스페이스는 두 개의 크레이트로 구성됩니다. locale-rs는 로케일 관리와 서식을 위한 프로덕션 라이브러리입니다. locale-dev는 GitHub에서 최신 CLDR-JSON 릴리스를 확인하고, 데이터를 다운로드하거나 캐시된 데이터를 재사용하며, locale-rs 코드를 재생성한 뒤 출력을 포맷하고 린트하는 코드 생성 도구입니다. 이 설계는 하드코딩된 문자열에 의존하는 대신 라이브러리를 새로운 유니코드 릴리스와 동기화 상태로 유지합니다.
README에 설명된 핵심 기능으로는 컴파일 타임에 검증된 열거형 변형으로서의 타입 안전 로케일, 네이티브 숫자를 사용한 로케일 인식 숫자 서식, ICU 호환 통화 패턴, 날짜시간 서식을 위한 현지화된 월 및 요일 이름이 있습니다. 파싱은 하이픈, 밑줄 또는 대소문자 혼용을 허용합니다. 로케일 협상은 대체 체인을 사용하여 사용 가능한 옵션 중 최적의 일치를 찾고, 퍼지 제안은 오타나 알 수 없는 로케일에 대한 교정을 제안합니다. README는 또한 라틴, 아랍-인도, 데바나가리, 벵골, 타밀, 태국, 티베트 등 다양한 지원 숫자 체계를 나열합니다.
사용 예제는 Locale::en_GB와 같은 직접 열거형 접근, FromStr 또는 from_flexible을 통한 파싱, 언어 및 지역 하위 태그 추출, 대체 로케일 얻기를 보여줍니다. 숫자 서식은 ToFormattedString 트레이트를 통해 시연되며, 영어의 경우 1,234,567, 독일어의 경우 1.234.567과 같은 그룹화된 출력을 생성합니다. 협상 및 제안 예제도 제공됩니다.
README는 제로 비용 추상화와 제로 크기 로케일 열거형 변형을 주장합니다. num-format 크레이트에서 아키텍처적 영감을 받았다고 언급합니다. 라이선스는 프로젝트 코드에 대해 MIT 또는 Apache-2.0의 이중 라이선스이며, 로케일 데이터는 유니코드 라이선스 V3에 따라 유니코드 CLDR에서 파생됩니다. 기여는 주로 locale-dev의 생성 로직이나 locale-rs의 헬퍼 메서드, 테스트, 예제를 대상으로 합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.