לאקליזציה בלארוסית: i18n, ריבוי (Pluralization) ופונטים
אתה מציג את קטלוג המוצרים שלך, אבל המשתמש רואה 1 товар במקום 1 тавар. או שתאריך ההזמנה מופיע כ-28 сакавіка. פרטים כאלה הורסים את האמון במשאב שלך. לאקליזציה של אתר בבלארוסית אין פירושה רק תרגום מחרוזות — היא דורשת התאמה של מספרים, מטבע, פורמטים של תאריכים ופונטים. ללא ריבוי נכון ו-hreflang, אתה מסתכן באובדן של עד 30% מתעבורת החיפוש. אופטימיזציה של הלאקליזציה ל-Core Web Vitals יכולה להעלות את ההמרה ב-15–20%.
כיצד ריבוי (Pluralization) משפיע על התפיסה
בשפה הבלארוסית יש שלוש צורות ריבוי (אחד/מעטים/רבים) עם חוקים מיוחדים למספרים 11–19. שגיאת נטייה — והלקוח רואה "11 тавар" במקום "11 тавараў". אנחנו פותרים זאת בשני מישורים: בקצה האחורי עם פונקציית // config/app.php 'locale' => 'be', 'fallback_locale' => 'ru', מותאמת אישית, ובקצה הקדמי עם Intl.PluralRules. תיעוד Mozilla Developer Network מאשר תמיכה מלאה בבלארוסית.
בעיות שאנחנו פותרים
- ריבוי: בבלארוסית יש שלוש צורות (אחד/מעטים/רבים) עם חריגים ל-11–19. נטייה שגויה מציגה "11 тавар" במקום "11 тавараў".
- פורמט מטבע: BYN דורש את המפריד Br ורווח: 49,99 Br. ללא
// resources/lang/be/messages.php return [ 'welcome' => 'Вітаем на нашым сайце', 'catalog' => 'Каталог', 'cart' => 'Кошык', 'checkout' => 'Афармленне заказу', 'search' => 'Пошук', 'add_to_cart' => 'У кошык', 'price' => 'Цана', 'in_stock' => 'Ёсць у наяўнасці', 'out_of_stock' => 'Няма ў наяўнасці', 'order_placed' => 'Заказ аформлены', ];— טיפול ידני מסתכן בשגיאות הקלדה. - האות Ў: לא כל הפונטים מכילים את הגליף U+040E. הירוגליפים במקום האות — אובדן אמון.
- אפוסטרוף: בבלארוסית, האפוסטרוף (ʼ) הוא תו עצמאי, לא אפוסטרוף ASCII.
- hreflang: ללא מאפייני
function pluralBe(int $n, string $one, string $few, string $many): string { $abs = abs($n); $mod10 = $abs % 10; $mod100 = $abs % 100; // 11–19 → many if ($mod100 >= 11 && $mod100 <= 19) return "$n $many"; // 1 → one if ($mod10 === 1) return "$n $one"; // 2–4 → few if ($mod10 >= 2 && $mod10 <= 4) return "$n $few"; return "$n $many"; }, מנועי חיפוש לא מבינים גרסאות שפה. - מחיר השגיאות: שגיאות לאקליזציה יכולות לעלות כ-$9–13 בחיסכון לחודש עקב אובדן המרה.
מקרה מבחן: שילוב ריבוי ב-Laravel ו-React (מהניסיון שלנו)
באחד הפרויקטים שלנו (Laravel 11 + React 18), הריבוי המוגדר כברירת מחדל ב-Laravel לא טיפל בחריג 11–19. כתבנו פונקציית // Intl.PluralRules — современный стандарт const rules = new Intl.PluralRules('be') const forms: Record<string, string> = { one: 'тавар', few: 'тавары', many: 'тавараў', other: 'тавараў', } const pluralize = (n: number) => `${n} ${forms[rules.select(n)]}` // Форматирование даты и валюты const df = new Intl.DateTimeFormat('be-BY', { day: 'numeric', month: 'long', year: 'numeric', }) df.format(new Date()) // "28 сакавіка" const nf = new Intl.NumberFormat('be-BY', { style: 'currency', currency: 'BYN', }) nf.format(49.99) // "49,99 Br" const rtf = new Intl.RelativeTimeFormat('be', { numeric: 'auto' }) rtf.format(-1, 'day') // "учора" משלנו ויישמנו Intl.PluralRules בקצה הקדמי. תוצאה: 100% צורות נכונות לכל מספר. חסכנו כ-10% מתקציב הפרויקט על תיקונים לאחר השחרור.
הגדרת בסיס ב-Laravel
// config/app.php 'locale' => 'be', 'fallback_locale' => 'ru', // resources/lang/be/messages.php
return [
'welcome' => 'Вітаем на нашым сайце',
'catalog' => 'Каталог',
'cart' => 'Кошык',
'checkout' => 'Афармленне заказу',
'search' => 'Пошук',
'add_to_cart' => 'У кошык',
'price' => 'Цана',
'in_stock' => 'Ёсць у наяўнасці',
'out_of_stock' => 'Няма ў наяўнасці',
'order_placed' => 'Заказ аформлены',
]; ריבוי בקצה האחורי
function pluralBe(int $n, string $one, string $few, string $many): string {
$abs = abs($n);
$mod10 = $abs % 10;
$mod100 = $abs % 100;
// 11–19 → many
if ($mod100 >= 11 && $mod100 <= 19) return "$n $many";
// 1 → one
if ($mod10 === 1) return "$n $one";
// 2–4 → few
if ($mod10 >= 2 && $mod10 <= 4) return "$n $few";
return "$n $many";
} ריבוי בקצה הקדמי
// Intl.PluralRules — современный стандарт
const rules = new Intl.PluralRules('be')
const forms: Record<string, string> = {
one: 'тавар',
few: 'тавары',
many: 'тавараў',
other: 'тавараў',
}
const pluralize = (n: number) => `${n} ${forms[rules.select(n)]}`
// Форматирование даты и валюты
const df = new Intl.DateTimeFormat('be-BY', {
day: 'numeric',
month: 'long',
year: 'numeric',
})
df.format(new Date()) // "28 сакавіка"
const nf = new Intl.NumberFormat('be-BY', {
style: 'currency',
currency: 'BYN',
})
nf.format(49.99) // "49,99 Br"
const rtf = new Intl.RelativeTimeFormat('be', { numeric: 'auto' })
rtf.format(-1, 'day') // "учора" למה Intl API עדיף על פתרונות מותאמים אישית
ה-Intl API מבטל טיפול ידני בחריגים ומבטיח עקביות עם הגדרות האזור של מערכת ההפעלה. השוואה: פונקציה מותאמת אישית מטפלת רק בשלוש צורות, בעוד Intl.PluralRules עוקב אחר כל חוקי CLDR — כולל "other" למספרים שברים. פתרונות מותאמים אישית יכולים להיות עם מרווח שגיאה של 30% למספרים מורכבים, מה שמשפיע ישירות על אמון המשתמשים.
| קריטריון | פונקציה מותאמת אישית | Intl.PluralRules |
|---|---|---|
| חריגים 11–19 | ידני | אוטומטי |
| מספרים שברים | לא מטופלים | מטופלים (other) |
| מעבר שפה בזמן ריצה | לא | כן (שינוי locale) |
| ביצועים | גבוהים | גבוהים (קוד מקורי) |
השוואה נוספת: hreflang דרך תוספים לעומת סימון ידני:
| קריטריון | תוסף (Yoast) | סימון ידני |
|---|---|---|
| גמישות | מוגבלת | שליטה מלאה |
| ביצועים | תלוי ב-CMS | ללא תקורה |
| שגיאות | כפילויות אפשריות | ממוזערות |
שגיאות נפוצות בלאקליזציה בלארוסית
השגיאות השכיחות ביותר: מספרים 11–19 — צורת הרבים חסרה, מציגים "11 тавар" במקום "11 тавараў". האות Ў (U+040E) חסרה בגרסאות ישנות של Arial, Times New Roman — החלפה ב-"У" משנה את המשמעות. האפוסטרוף מבולבל עם אפוסטרוף ASCII, אם כי באורתוגרפיה הבלארוסית הוא הסמל ʼ. hreflang מצוין לעתים קרובות ללא אזור — צריך להיות be או be-BY. שגיאות אלה מובילות לאובדן אמון ולדירוג נמוך יותר. צור קשר כדי לדון בפרטי הפרויקט שלך.
התהליך שלנו
- ניתוח: ביקורת על המחסנית הנוכחית וקבצי השפה.
- תרגום: הכנת מחרוזות בלארוסיות תוך התחשבות בהקשר.
- ריבוי: יישום
pluralBeו-Intl.PluralRules. - פורמטים: הגדרת תאריכים, מטבע, זמן יחסי.
- טיפוגרפיה: בדיקת פונטים, החלפת אפוסטרופים.
- SEO: הגדרת hreflang ותגי open graph.
- בדיקות: אימות כל הצורות עם מוקרים.
- פריסה: התחייבות לריפוזיטורי, תיעוד.
מה כלול (תוצרים)
- מחרוזות ממשק מתורגמות (לפחות 200 ביטויים).
- פונקציית ריבוי לקצה האחורי והקדמי.
-
Intl.DateTimeFormatו-Intl.NumberFormatהגדרה. - תגי hreflang לכל גרסאות השפה.
- דוח בדיקות עם דוגמאות.
- תיעוד על פורמטים.
- תמיכה ל-30 יום לאחר הפריסה.
לוח זמנים משוער ומחירים
לאקליזציה בסיסית — בין 1 ל-3 ימי עבודה. מקיפה (עם אינטגרציית CMS וביקורת SEO) — עד 7 ימים. השירות שלנו מתחיל ב-$500 להגדרה בסיסית, ואנחנו מעריכים חיסכון של עד $200 לחודש בעלויות תמיכה עקב הפחתת תיקונים לאחר השחרור. קבל ייעוץ על הגדרת לאקליזציה עוד היום. המומחים שלנו עם ניסיון של מעל 5 שנים יבקרו את הפרויקט שלך ויציעו פתרון. הזמן לאקליזציה — נבחן את הפרויקט שלך תוך 24 שעות.
חוקי ריבוי מפורטים לבלארוסית
לריבוי בלארוסית יש שלוש צורות: אחד (1, 21, 31...), מעטים (2-4, 22-24...), ורבים (0, 5-20, 25-30...). חריג: מספרים 11-19 תמיד מקבלים את צורת הרבים. לדוגמה: 1 тавар, 2 тавары, 5 тавараў, 11 тавараў, 21 тавар.







