~2 دقیقه مطالعه • بروزرسانی ۸ دی ۱۴۰۴
1. امکانات بینالمللی در Node.js
- توابع Unicode-aware مانند
String.prototype.normalize()،toLowerCase()وtoUpperCase(). - شیء
Intlو متدهای حساس به locale مانندlocaleCompare()وDate.prototype.toLocaleString(). - پشتیبانی از دامنههای بینالمللی (IDN) در WHATWG URL parser.
- توابعی مانند
buffer.transcode()وutil.TextDecoder. - پشتیبانی از
RegExp Unicode Property Escapes.
2. گزینههای ساخت Node.js
چهار گزینهٔ اصلی برای نحوهٔ استفاده از ICU هنگام کامپایل وجود دارد:
- none: بدون ICU، اکثر قابلیتهای بینالمللی غیرفعال میشوند.
- system-icu: استفاده از ICU نصبشده در سیستم عامل. پشتیبانی کامل یا جزئی بسته به دادههای موجود.
- small-icu: شامل دادههای محدود (معمولاً فقط زبان انگلیسی) در باینری.
- full-icu: شامل مجموعهٔ کامل دادههای ICU. پیشفرض در باینریهای رسمی Node.js.
3. مقایسهٔ ویژگیها
| Feature | none | system-icu | small-icu | full-icu |
|---|---|---|---|---|
| normalize() | غیرفعال | کامل | کامل | کامل |
| Intl | غیرفعال | جزئی/کامل | جزئی (فقط انگلیسی) | کامل |
| localeCompare() | غیرفعال | کامل | کامل | کامل |
| Date.toLocaleString() | غیرفعال | جزئی/کامل | جزئی (فقط انگلیسی) | کامل |
| TextDecoder | جزئی | جزئی/کامل | جزئی | کامل |
| RegExp Unicode | غیرفعال | کامل | کامل | کامل |
4. افزودن دادههای ICU در زمان اجرا
در حالت small-icu میتوان دادههای اضافی ICU را در زمان اجرا بارگذاری کرد:
- با استفاده از گزینهٔ
--icu-data-dirدر CLI. - با تنظیم متغیر محیطی
NODE_ICU_DATA. - با گزینهٔ
--with-icu-default-data-dirهنگام کامپایل.
ماژول full-icu در npm میتواند نصب دادههای ICU کامل را ساده کند.
5. تشخیص پشتیبانی ICU
typeof Intl === 'object': بررسی وجود Intl.typeof process.versions.icu === 'string': بررسی فعال بودن ICU.- برای بررسی پشتیبانی از زبانهای غیرانگلیسی، میتوان از
Intl.DateTimeFormatاستفاده کرد.
6. مثال ساده
const january = new Date(9e8);
const spanish = new Intl.DateTimeFormat('es', { month: 'long' });
console.log(spanish.format(january)); // "enero" در حالت full-icu
نتیجهگیری
پشتیبانی بینالمللیسازی در Node.js با استفاده از ICU امکان توسعهٔ برنامههایی چندزبانه و حساس به locale را فراهم میکند. بسته به نیاز پروژه میتوان بین گزینههای none، system-icu، small-icu و full-icu انتخاب کرد. استفاده از full-icu بیشترین امکانات را فراهم میکند، در حالی که small-icu تعادل خوبی بین اندازهٔ باینری و قابلیتها ایجاد میکند.
نوشته و پژوهش شده توسط دکتر شاهین صیامی