Table of Contents
הבנה של Localization ובינלאומיזציה
בניית מערכת תמיכה בשפה רב-לשונית ב- iOS מתחילה בהבנה את ההבחנה בין בינאום לבין ההתמחות. בינאום (i18n) היא תהליך עיצוב האפליקציה שלך כך שניתן להתאים אותה לשפות שונות ואזורים ללא שינויים הנדסיים.התאזרחות (l10n) היא התרגום בפועל והתאמה תרבותית של התוכן והממשק של האפליקציה עבור מסגרת מקומית מסוימת.
אפל מספקת כלים מקיפים ב- Xcode, Foundation ו-UIKit לתמוך בהתאזרחות.המטרה היא לגרום לאפליקציית שלך להרגיש יליד בכל שפה, לכבד את כיוון הקריאה, פורמטי תאריכים, פורמטים מספריים ומוסכמות תרבותיות. מאמר זה עובר דרך השלבים המעשיים ליישום תמיכה רב-לשונית חזקה, מהקמה ועד טכניקות מתקדמות.
שילוב של Localization in Your Xcode Project
הצעד הראשון הוא לספר ל- Xcode ששפות היישום שלך יתמכו בו.פתח את הגדרות הפרויקט שלך, לבחור את הפרויקט שלך ב- Project Navigator, ובכרטיסיה של המידע, למצוא את ה- Localizations. Click the "+" כדי להוסיף שפות.עבור כל שפה, Xcode יוצר באופן אוטומטי קבצים משאבים (לוחות, XIB, קבצי מיתרים) שניתן לערוך בנפרד.
בסיס בינאום
אפל ממליצה להשתמש ב- Base Internationalization.בכרטיסיית המידע של הפרויקט שלך, לבדוק "Use Base Internationalization" זה מאחסן את הפריסה המקורית של UI בהתאזרחות בסיסית (בדרך כלל אנגלית) וכל שפה נוספת מתעלמת רק על המיתרים, לא הפריסה.זה מקטין את השכפול ומבטיחה פריסה עקבית הפריסה.אם אתה חייב לשכפל את כל הסיפור עבור כל שפה, שהיא טעות.
הוספת התמחויות לקבצים קיימים
עבור לוחות התכנון הקיימים או XIBs, בחר את הקובץ במפקח הקבצים, ולאחר מכן תחת ה Localization, לבדוק את השפות שברצונך למקם. Xcode יוצר קובץ ספציפי שפה עבור לוחות סיפורים. עבור ממשקים מבוססי קוד, אתה תהיה להסתמך על FLT:0 וקבצים נפרדים.
יצירת וניהול קבצים מקומיים
הדרך העיקרית לתרגם טקסט מהקוד היא באמצעות קבצים 1FLT: צור אחד על ידי הולך File > חדש > קובץ > Strings File (תחת משאבים) שם זה FLT:2 אז במפקח הקבצים, למקם אותו: לחץ על Localize, ולאחר מכן לבחור את שפת הבסיס שלך.
פורמט הוא מפתח = זוגות ערך:
(ב) 4
עבור ה Localization הגרמני:
(ב) 5)
תמיד להשתמש במפתחות תיאוריים, לא במחרוזת האנגלית עצמה, כדי להימנע משינויים מקריים שפורצים את המחרוזת האנגלית כמפתח, מה שהופך אותה לבעיה מאוחר יותר.
לארגן סטרינגס עם הערות
הוסף הערות כדי להסביר את ההקשר של מתרגמים.הם לא נכללים בדוגמה:
(ב) ויקרא י"ד:
שימוש ב-NSLocalString in Code
המאקרו קורא את המחרוזת מהקובץ המתאים של ה-FLT:9 המבוסס על שפת המכשיר של המשתמש.
(ב) .
רוב השיחות משתמשות רק במפתח ובתגובה:
[01: 51]
אם לא נמצא תרגום, המפתח עצמו הוא חזרה (או פרמטר הערך אם הוא מסופק) תמיד לספק תגובה משמעותית לתרגום מתרגם.
פורמט Handling Strings עם Parameters
(ב) ב[[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]], [[1924]]]], [[1924]]]], [[1924]], [[1924]]]], [[1924]]]]
(ב) .
בקוד:
(ב) .
זה מאפשר למתרגמים להזמין מילים כראוי (למשל, ביפן מבנה המשפט עשוי להציב את המספר לאחר הצומת).
(ב) .
שימוש ב- .stringsdict for Plural Rules
בשפות שונות יש כללים מורכבים פלורליים.לדוגמה, באנגלית יש יחיד/פליק, אך בערבית יש שישה טפסים, ופולנית יש שלושה.Apple מספקת 3.FLT:19 קבצים כדי לטפל פלורליזציה וטקסט משתנה אחר. צור קובץ בשם FLT:20 באותה תיקיות מקומיות כמו FLT:21 פורמט שלה הוא רשימה עם מפתח לדוגמה:
« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «
לאחר מכן, בקוד השתמש באותו מפתח: iOS בוחר באופן אוטומטי את הטופס של פלורלי הנכון על בסיס הכללים של המקומיים.
לוחות סיפורים ו- XIB
כאשר אתה מכניס לוח התכנון, כל תווית, כפתור וטקסט שדה מקבל מקביל בקובץ מיתרים ספציפיים שפה.You יכול לערוך את המחרוזת ישירות, או להשתמש ב- Interface Builder כדי להציג תצוגה מקדימה ולשנות את הפריסה בשפה. עם זאת, עבור יותר דינמי UI, ייתכן שתרצה להגדיר תוכנית טקסט באמצעות FLT:24 ולאחר מכן לטפל פריסה עם Autoout.
הצגת התמחויות ב Xcode
ב Xcode, אתה יכול לצפות מראש לוח התכנון בשפות שונות ללא בנייה: פתח את לוח התכנון, ולאחר מכן בתפריט העור, בחר Preview.הוספת מכשיר תצוגה מקדימה, ולאחר מכן לשנות את השפה באמצעות הירידה בתחתית.זה מראה כיצד מיתרים מתרחבים או חוזה.
התאמת Layout ל-Wiret
טקסט גרמני הוא לעתים קרובות 30% יותר מאשר אנגלית.שימוש ב- Auto Layout עם מגבלות שיכולות לגדול תוויות אנכיות או אופקית.המספר של שורות כדי 0.הימנע מגבלות קבועות וגמישות עמידות דחיסה כראוי. עבור כפתורים, לשקול שימוש ב-FLT:25 או לאפשר רוחב דינמי.
שפת ימין-לפט (RTL)
ערבית, עברית, פרסית, אורדו ואחרים זורמים נכון לשמאל. iOS תומך ב-RTL דרך הנכס (FLT:26) על נופים ועל ההשגות האוטומטיות של המערכת של תמונות ופריסה המבוססת על כיוון פריסת ממשק המשתמש (משפת המכשיר).
עקבו אחרי RTL
ודא שהנוף של לוח התכנון שלך משתמש במגבלות מובילות/טראומתיות במקום משמאל/ימין.הלייוט של Xcode תומך באופן אוטומטי בהובלת / trle/trappate. for Programmaticפריסות, השתמש ב-FLT:27 ו-FLT:28 אם יש לך רישומים או שינוי מותאם אישית, מכבד את הכיוון של ממשק המשתמש מ-FLT:29 או CheckFLT:30
תמונות ו-RTL
תמונות שיש להן משמעות כיוון (למשל, חצים מצביע קדימה) צריך להיות מודרך במצב RTL.בקטלוג נכסים, אתה יכול להגדיר תמונות כמו "מילר" עבור RTL. Alternatively, לספק תמונות נפרדות לכל כיוון.עבור תמונות תבנית, iOS עשוי להראות באופן אוטומטי אם הגדרת FLT:31 על התמונה.
הודעות טקסט
עבור תוויות ודעות טקסט, השתמש ב-FLT:32 אשר באופן אוטומטי מתאים ל-LTR וזכות עבור RTL. להימנע מתווה קשיח.
תאריכי חיזוי מקומיים, מספרים, וקורריות
משתמשים שלמים צופים תאריכים ומספרים שצוינו על פי מקומים, השתמשו בסגנונות מוגדרים מראש כמו FLT:36,FLT:37 עם המקומי של המשתמש. SetFLT:35 (אשר ברירת המחדל) ומשתמשים בסגנונות מוגדרים מראש כגון FLT:36,FLT:37, או דפוסים מותאמים אישית.
(בלטינית: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ).
(ב) למספרים (ב[[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]
שימוש מקומי עם פורמט סטרינגס
כאשר משתמשים ב-FLT:42 עם מספריים, המקומיים עשויים להשפיע על קיבוץ (עבור מחרוזת הפונה למשתמש), להשתמש ב-FLT:43 אשר מכבדת את המקומיים.
בדיקה מקומית
בדיקות תורו הוא קריטי.סימסת שפות שונות על סימולטור על ידי העריכה את הגדרות שפת היישומים של התוכנית ואת האזור.Go to Product > Scheme > Edit Scheme, ולאחר מכן תחת Run > אפשרויות, לבחור שפה אחרת יישומים (למשל, גרמנית) ואזור (למשל, גרמניה).
שימוש בשפת הסימול Switcher
ניתן גם להחליף את השפה של הסימול: הגדרות > כללי > אזור שפה ושפה, אך שיטת התכניות מהירה יותר לבדיקת שפה אחת.
בדיקה אחרונה ב-RTL
הגדר את שפת היישום של התוכנית לערבית.בדוק כי כל ההשקפות מתהפך נכון. לשים לב מקרוב להשקפות מותאמות אישית, תצוגות לגלול ונוף באינטרנט. השתמש ב- Debug > ראה כלים לסימון הפריסה.
בדיקה עם Pseudolocalization
Xcode מציע פסאודוקליזציה כדי לדמות מיתרים ארוכים או RTL ללא תרגום ממשי.באפשרויות של התוכנית, לאפשר "Double-Length Pseudo Language" או "זכות לשמאל Pseudo Language" זה עוזר לתפוס בעיות החלטיות והתאמה מוקדם.
המונחים: Dynamic content and Server-Driven UI
אם האפליקציה שלך מורידה תוכן מהשרת, אינך יכול להסתמך רק על ה-FLT:46 (הצורך לשלוח את ההעדפה המקומית של המשתמש לשרת, ולזכות בתוכן מתורגם).
עבור UI מופעל בשרת רכיבים מקומיים, אתה יכול למפות מפתחות מיתרים שרתיים לתרגומים מקומיים באמצעות דפוס דומה FLT:50 אבל עם שולחן אחר או החבילה. שקול לאחסון מקומי בקובץ JSON הביא לאחר ההשקה אפליקציה כדי לאפשר עדכונים over-the-air ללא הגשת.
שיטות טובות ביותר עבור Localization
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) מקור יחיד לאמת: (ב) להימנע מתרגומים הקשורים לקבצים. השתמש בהתאזרחות בסיס ועיין באותו מפתח.
- (ב) ויקרא יא"ד: "ה' אלק' ייצוא את כל ההוסטלות כקבצי XLIFF למתרגם, ואז לייבא את הקבצים המתורגמים בחזרה.
- (ב) ,0) , 000 ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) אין אף פעם טקסט מקומי שניתן ליישב ב- CodeFIRLT 1 (בתרגום חופשי: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ).
- (ב) [15] , מתרגם צריך להבין מה כל בעל מקום מייצג.
עבודה עם SwiftUI Localization
(הופנה מהדף "הההתיישבות" (בקיצור: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
עבור מיתרים מעוצבים, השתמש ב-FLT:62 ( SwiftUI) באופן אוטומטי משתמש ב-FLT:63 אם יש לך מפתח "יש לך פריטים %d" בקובץ FLT:64.עם זאת, כדי להתאים את המפתח בדיוק, ייתכן שיהיה עליך להגדיר את התבנית המלאה.
(ב) ,65) לא עובד ישירות.
◄
או להשתמש ב- SwiftUI:67 עם איפולציה:68; אבל זה דורש את המפתח להיות בדיוק "מסמונים 5%" בקובץ המיתרים.
תמונות מקומיות ב SwiftUI
(ב) ,771 , וספק את הקטלוג של נכסים לכל שפה.
מלכודות נפוצות וכיצד להימנע מהם
- (ב) מדרש (ב) , [17] , [17] , [17] , [17] , [17] , [15] , [15] , [15] , [17] , ).
- (ב) ,0) ,התפרקות הקודדות (FLT:1), להימנע מקווי רוחב קבועים.
- (ב) ,0) ,Ignoing כללי פלורליות (FLT:1) - תמיד להשתמש ב- .stringsdict for Plizable strings.
- (FLT:0) ,לקבל את מקומי עבור תאריך / מספר parsingFLT 1 - כאשר parsing הזנת משתמש, להשתמש מקומי קבוע כמו en US POSIX לאחסון פנימי.
- (FLT:0) לא בדיקות על מכשירים אמיתיים FLT:1 - החלפת שפה סימולטור היא אמינה אבל בדיקות המכשיר חושף התנהגויות ספציפיות באזור כמו לוח שנה, אזור זמן ומקלדת.
- (ב) ,0) ראו נגישות (במבט לאחור) (קולבובר) מדבר על מיתרים מקומיים, ודא כי תוויות נגישות הן מקומיות לשימוש ושימוש ב-FLT:76 כראוי.
משאבים חיצוניים להבנה עמוקה יותר
- (ב) [15] , מדרשו של ה-[[1924]] ו[[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]
- (ב) [ה]ה' [ה']'[דרוש מקור]'[דרוש מקור]
- (ב) [[1924]]]]]] [[1924]]]]]] [[1924]]]]]]]]
מסקנה
יישום תמיכה רב-לשונית ב- iOS הוא יותר מאשר תרגום: הוא כרוך בתכנון קפדני של מיתרים, פריסות, פורמטים ומוסכמות תרבות. על ידי מינוף הכלים של אפל - בינאום מובנה - Base בינאום, (FLT:77, FLT:78, FLT:78, ו- Auto Layout - אתה יכול ליצור אפליקציה שמרגישה בבית בכל שפה רגילה עם בדיקות פסאודוקליזציה ותופסת בעיות מוקדמות כדי להתחיל לשמור על בסיס של משתמשים יציבים, ואז להתחיל מחדש.