פיתוח יישומים באינטרנט רב לשוניים באמצעות תבנית Mvc וטכניקת ההכללה
פיתוח יישומי אינטרנט רב לשוניים כבר לא אופציונלית בנוף הדיגיטלי הגלובלי של היום. משתמשים מצפים אינטראקציה עם תוכן בשפה מולדת שלהם, ומציע כי ניסיון משפיע ישירות על מעורבות, המרה, והתרחבות השוק. דפוס מודל-View-Controller (MVC) בשילוב עם טכניקות אי התאמה מוצקות, מספק ארכיטקטורה מוכחת לבניית יישומים רב-לשוניים, זה הולך דרך המושגים הליבה, מעשי, יישום שיטות מרובות עבור שיטות אינטרנט מבוססות יותר.
תבנית MVC: A Natural Fit for Localization
ארכיטקטורת MVC מחלקת יישום לשלושה מרכיבים מקושרים: המודל, התצוגה, והמפקח.הפרדה זו של חששות היא בעלת ערך במיוחד בעת הוספת תמיכה רב לשונית, כי כל רכיב ניתן להרחיב או לשנות עבור בינאום (i18n) והמקומיזציה (l10n) ללא השפעה על האחרים.
- (FLT:0Model:BuildFLT:1) ניהול נתונים ולוגיקה עסקית. עבור יישומים רב לשוניים, המודל חייב לאחסן או לאחזר תוכן ספציפי שפה, בין אם ממסד נתונים, API או תיקי משאבים.
- (FLT:0)View:veFLT:1 , Handles theמצגת שכבת מצגת. Views להשתמש מיתרים מקומיים, תאריך / מספר פורמט, וכיוון-aware פריסות (RTL/LTR) כדי להציג תוכן נכון בכל שפה.
- (ב) ,0)Controller:FLT:1 מעבד את קלט המשתמשים, מזהה מקומי, ובוחר את המשאבים או הנתונים המתאימים לפני שהוא מעביר אותם לתצוגה.
הפרדה נקייה זו פירושה שאתה יכול להוסיף שפה חדשה על ידי יצירת קבצים חדשים של משאבים או ערכים, התאמת תבניות הנוף כדי להתייחס למשאבים אלה, ולהבטיח שהבקר בוחר את המקומי הנכון - כל זאת ללא כתיבת לוגיקה עסקית או מסד נתונים של schemasmas.
טכניקות קיבוציות
ארכיון תגיות: String Storage
קבצים של משאבים (JSON, YAML, XML, או .resx) לשמור על מיתרים ספציפיים שפה מחוץ לקוד.לדוגמה, Laravel משתמשת ב-FLT:0 קבצים; ASP.NET Core משתמש בקבצי FLT:1; ומסגרות JavaScript רבות משתמשות בקבצי תרגום JSON.
- (ב) 2 (בספרדית: 2)
- (בספרדית: LT:3)
באמצעות קבצי משאבים הופכת אותו טריוויאלי עבור מתרגמים לעבוד ללא נגיעה בלוגיקה של יישום, והוא שומר על בסיס הקוד נקי.
גילוי ומימון
היישום שלך חייב לזהות באופן אוטומטי את השפה המועדפת של המשתמש.אסטרטגיות נפוצות כוללות:
- (ב) ,0) ,(ב) ,(ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ,0User פרופיל הגדרת:0User פרופיל: FLT:1 , הובלת המקומי הנבחר בפגישה או מסד נתונים לאחר כניסת משתמשים.
- (ב) ויקרא י"ד: "וַיֹּאמַר עַמֶר אֱלֹהִים: אִם הוּא הוּא" (בראשית כ"ד, כ"ד).
- (ב) ⁇ :0)Cookie או אחסון מקומי: FLT:1 ,התגמל את בחירת השפה של המשתמש על פני מפגשים.
בקר צריך ליישם אלגוריתם משא ומתן - לדוגמה, לנסות את ההעדפה המדויקת של המשתמש, ואז לחזור לשפה ברירת מחדל.
פלורליזציה, מגדר ותבנית
(המקומיזציה הולכת מעבר להחלפת מחרוזת פשוטה.שפות שונות יש כללים מורכבים (למשל, "1 פריט" לעומת "2 פריטים" באנגלית, אך מספר צורות בפולנית או ערבית) מסגרות רבות מציעות כללי פלורליזציה: כללי ה-FLT 7 של לארהvel, סימפוני של סימפוניה 8, ותבנית ההודעה של ICU.
אסטרטגיות תרגום
עבור תוכן דינמי מאוחסן במסד נתונים (למשל, תיאורים של מוצרים, פוסטים בלוג), יש לך מספר אפשרויות:
- (ב) ויקרא י"א): "בְּהָעָשָׂה אֱלֹהִים אֲשֶׁר נָתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִית עַמְתָּבוּ" (במדבר כ"ד, ט).
- (ב) טבלאות תרגום נפרדות: טבלה 1 (AFLT:13 טבלה עם יחס פולימורפילי לכל ישות טרנספורמטיבית.
- (ב) ,0) ,JSON טורים: 1FLT: 1 מאחסן חפץ JSON עם מפתחי שפה. Quick for Prototyping אבל יכול להיות קשה לשאילתה ולתחזק.
בחר את הגישה שמתאימה למספר הצפוי של שפות וגודל תוכן.
שילוב MVC עם Localization: A Step-by-Step Guide
נניח שאתה בונה יישום אינטרנט רב לשוני ב-PPP טיפוסי או C# MVC מסגרת. השלבים הבאים מראים כיצד לטלת היקב לתוך זרימת MVC.
1. עיצוב מודל עבור Multilingual Data
לדוגמה, יש צורך בדתם של מספר שפות (ב-FLT:14) לדגם אחד-לאדם עם מודל של 15:15 אשר מאחסן:16, FLT:17, ו-FLT 18 ב- ORM כמו אל-הקודש של לארהvel, ניתן להשתמש בתכונה או חבילה ייעודית לתרגום הנכון באופן אוטומטי, כמו גם עבור קבצים סטטיים על ידי מפתחות מקומיים.
2.הגדירו את המפקח על זיהוי מקומי
בקר הבסיס (או תוכנת ביניים), ליישם את זיהוי המקומי.קבע את המקומי הנוכחי של היישום מבוסס על העדפה של המשתמש.
protected function setLocale(Request $request)
{
$locale = $request->segment(1); // from URL
if (in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
session(['locale' => $locale]);
}
}
ב-ASP.NET Core, ניתן להוסיף את ה-FLT:20 כדי לטפל במשא ומתן אוטומטי.הבקר משתמש באובייקט FLT:21 כדי להחזיר את התרגומים הנכונים.
פיתוח תצוגות באמצעות פונקציות מקומיות
במקום חסמים קשים בנוף, השתמש בתומכים מקומיים.ב-Laarvel Blade, השתמשת ב-ASP.NET Razor, ב-ASP.NET Razor, השתמש ב-FLT:23 עבור תוכן דינמי, להעביר את הדוגמה המתורגמת לתצוגה ולהצגת שדות המבוססים ישירות על האזור הנוכחי.
לדוגמה, דף כניסה פשוט נוחר בLavel Blade:
<h2>{{ __('auth.login_title') }}</h2>
<form>
<label>{{ __('auth.email') }}</label>
<input type="email" name="email">
<label>{{ __('auth.password') }}</label>
<input type="password" name="password">
<button type="submit">{{ __('auth.login_button') }}</button>
</form>
שפה אפשרית (Enable Language Switching)
לספק בחירת שפה גלויה (לעתים קרובות ירידה בניווט או רגל) כאשר המשתמש בוחר שפה, בקר או JavaScript מעדכן את המקומי הנוכחי ומאחסן את הבחירה.
הפרקטיקה הטובה ביותר והשיקולים
ניהול תוכן עקבי
שמור על תרגומים מסונכרנים. השתמש בגירסה בקרת קבצים משאבים, ולשקול באמצעות מערכת ניהול תרגום (למשל, Lokalise, Crowdin) עבור קבוצות גדולות יותר.
ניסיון המשתמש באתרים רב לשוניים
- (ב) ,0) ,Languageסלקטור: FLT:1 השתמש כפתור ברור, גלוי או סמלים דגל (עם טקסט אל-אלט עבור נגישות).
- (ב) ,0) זכרו את הבחירה: ההרחבה 1 (Persist) את שפת המשתמש באמצעות ישיבה, עוגיה או מסד נתונים.
- (FLT:0) הגדרות דפדפן מפורטות:FLT:1Build, באופן אוטומטי להשתמש בשפה המועדפת של הדפדפן אם זמין.
- (ב) ויקרא י"א): "ה' (ב"ד): "ה', ב'"ה' (ב"ב)" (ב) ב'[[1924]], ב[[1924]], ב[[1924]], ב[[1924]], [[1924]]]], [[1924]]
אופטימיזציה
- (ב) ויקרא י"א: "בְּבְתָּבְתֶּם הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא .
- (ב) תרגומים של עומסים:0 (Eager לטעון: 1FLT) כאשר שאילתת מודלים של טרנסג'נדרים, השתמש בטעינה להוטה כדי להימנע מבעיית השאילתה N+1.
- (FLT:0) מיליטיזציה של גילוי מקומי מעל ראש: קיד 1 (FLT:1) לאחסן את המקומיים המתיישבים במיכל שירות או בישיבה כך שהוא זמין ברחבי העולם ללא חזרה על לוגיקה.
נגישות ובלעדיות
תוכן מקומי חייב להישאר נגיש.להבטיח כי תכונות שפה (FLT:31mia ו-FLT:32) נקבעות כראוי על תג FLT:33. השתמש בלייבלים RIT נאותה בשפות מרובות.מבחן עם קוראי מסך בכל שפה תומכת.
כלים ומסגרות התומכים בפיתוח Multilingual MVC
רוב מסגרות MVC המודרניות יש חבילות מקומיות מבוססות-בשנה או תמיכה קהילתית:
- (ב) ,0) לראבל (PHP): כפל 1: כולל עוזרי ההכללה, כללי פלורליזציה ותמיכה בקבצי JSON ו-PHP.See the official OfficeLT:2Laravelization Documentization (FLT 3: 3)
- (ב) ,0) ,ASP.NET Core (C#): ההרחבה 1 מציעה את ממשקי ה-FLT:34 ו-FLT:35 עם קבצים משאבים ומיקום חכם.
- (ב) ,0) ראובי (Ruby): "הרחבה: ⁇ 1" (ב) שימוש בקבצי YML ו- I18n API עם כללי פלורליזציה נרחבים ותאריך / מספר פורמטים: ראו את ה-FLT:2Rails Internationalization Guide, EvolutionFLT 3: 3).
- (ב) ויקרא י"ד): "ה' (ב"ד): "ה' (ב"ד): "ה' (ב"ה) ויקרא י"ד): "ה'וַיְהִיאֶת אִמֶתְלֹאמֶת הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא" (ב"ב"ב"ד).
- (ב) ויקרא י"א): "ה' (ב"ד): "ה', ויקרא י', ויקרא יט" (בראשית כ"ד, כ"ד)
עבור מסגרות MVC הקדמיות כמו תגובה עם Redux, ספריות כגון (FLT:37 (מבוסס על פורמט הודעת ICU) משתלבות היטב עם מבנה החזר דמוי MVC.
מסקנה
בניית יישומי אינטרנט רב לשוניים באמצעות תבנית MVC היא גישה מוכחת, קפדנית. על ידי מינוף הפרדת חששות אינטרינוסי ל- MVC, מפתחים יכולים להציג את ההקצאה מבלי לספק את כל בסיס הקוד.קבצים, זיהוי מקומי, עיצוב מסד נתונים זהיר טופס ערכת הכלים הליבה, בעוד מסגרות לספק את התשתית תומכת.