תיעוד

בדיקת הגלובליזציה

בדקו כל שינוי כדי לאתר תרגומים חסרים או שבורים, טקסט ועיצוב בקוד חדש שמניחים שפה או תרבות אחת, וכן דפים שנשברים בשפות אחרות כאשר מגדירים זאת.

ה- גלובליזציה בדיקת בקרת האיכות שומרת על תאימות בינלאומית של הפרויקט. היא פועלת על בדיקות משימות ועל בקשות משיכה, ובוחנת רק את מה שהשינוי נגע בו:

  1. קטלוגים. המחרוזות שהשינוי הוסיף או שינה, בכל השפות.
  2. קוד. השורות שהשינוי מוסיף, עבור טקסט ועיצוב המניחים יסוד על שפה או תרבות מסוימת.
  3. דפים. כאשר הפרויקט מציין כיצד להפעיל את האפליקציה, הדפים שלו מוצגים עם תרגום צוללת.

המסייע מפעיל את הבדיקה כברירת מחדל לאחר ש־pull request שלו מתמזג. ההגדרות שלו נמצאות ב־ בקרת איכות → גלובליזציה; במתחם העבודה של הגדרות מציג האם הוא פעיל.

מה חוסם כברירת מחדל

שינוי חוזר לתיקון כאשר הוא משאיר מחרוזות חסרות או שבורות, או כאשר הקוד שהוא מוסיף מכניס טקסט שאנשים קוראים ישירות לתוך הקוד או מרכיב משפט מחלקים. כל השאר מדווח כממצא ואינו חוסם דבר עד שתבחרו לחסום אותו. ממצאי עיצוב, מיון ופריסה נשארים מדווחים עד שהפרויקט יראה אותם בקוד שלו.

בחרו מה יחסום תחת בקרת איכות → גלובליזציה: קודי הקטלוג, מה בקוד גורם לשינוי לחזור, ו בעיות דף ששולחות שינוי לתיקון. בדוק קוד מקור ו הצג דפים מכבים את שלבי הקוד והדף.

קודי קטלוג

קודמשמעותחוסם כברירת מחדל
missingלמחרוזת אין תרגוםכן
invalid_syntaxהתרגום אינו ניתן לפענוח, למשל ICU שבורכן
placeholder_mismatchהתווים המחליפים שונים מהמקורכן
plural_categoriesצורת רבים שהשפה זקוקה לה חסרהכן
staleהמקור השתנה לאחר תרגום המחרוזתלא

המילון, כללי אורך ומילים אסורות מדווחים על הקודים שלהם כאשר קובץ ההגדרות שלכם מגדיר אותם.

קודי קוד

קודמה הוא מוצאחוסם כברירת מחדל
hardcoded_textטקסט שאדם קורא נכתב לתוך הקוד במקום לקטלוג: טקסט JSX ותבניות, תכונות נראות כגון placeholder, title, alt ו aria-label, הודעות והתרעותכן
concatenated_textמשפט המורכב מחלקים: תרגום המחובר לטקסט או לערך באמצעות +, מחרוזת תבנית או אלמנטים סמוכיםכן
locale_numberמספר מעוצב ללא הגדרת אזור הקורא, כגון toFixed בקוד ממשק המשתמש או toLocaleString() ללא אזורלא
locale_dateתאריך או זמן מעוצבים ללא אזור הקורא, או עם תבנית קבועה כגון MM/dd/yyyyלא
hardcoded_currencyסמל מטבע או קוד הנכתב ליד סכוםלא
ordinal_sortטקסט שממוין או נבדק לפי קוד תו, או localeCompare ללא אזורלא
case_mappingtoUpperCase() או toLowerCase() על טקסט ללא אזורלא
physical_directionימין ושמאל ב־CSS ובכיתוביות נוחות, בפרויקט עם שפה מימין לשמאללא
postal_code_formatקוד דואר שנבדק לפי תבנית של מדינה אחתלא
phone_number_formatמספר טלפון שנבדק כצפון אמריקאילא
latin_only_inputשם, עיר, רחוב או כתובת המוגבלים ל־a–zלא
joined_listרשימה שאנשים קוראים מחוברת בפסיק או ב־"ואז"לא
calendar_namesשמות ימי שבוע או חודשים הכתובים בקוד, או יום ראשון קבועלא
paper_sizeאות, גודל A4 וכדומה הקבועים בהגדרות הדפסה או PDFלא
fixed_unitיחידת מידה כגון מייל, פאונד או מעלות פרנהייט הנכתבת ליד מספר מוצגלא
locale_parsingמספר שאדם הקליד נקרא עם parseFloat או Numberלא
ime_compositionכניסת טקסט שנטופלה ללא בדיקה אם מילה בסינית, יפנית או קוריאנית עדיין נבניתלא

עיצוב לכל שוק מציג את התיקון לכל אחד מהם.

מה הבדיקה קוראת

שלב הקוד מפרש JavaScript ו־TypeScript, עם JSX, וקורא תבניות Vue, Svelte, Astro, HTML, ERB ו־Handlebars ו־CSS כטקסט. כל כלל חל רק היכן ששמות ההקשר שלו מציינים זאת: תבנית קוד דואר מדווחת רק ליד שדה קוד דואר, ורשימה מחוברת רק היכן שאנשים קוראים אותה.

  • מתורגם על פי הגדרה. טקסט בתוך קריאות התרגום והרכיבים של הפרויקט (t(), formatMessage, <Trans>, <FormattedMessage>, $t()) והפונקציות המפורטות בקובץ ההגדרות.
  • לעולם לא טקסט. מילים מוגנות, וכן המילים שהקובץ ההגדרות מאפשר.
  • הושמט בכוונה. שורה עם i18n-ignore הערה, והשורה שאחריה. ציין את הסיבה: // i18n-ignore: product name.

החלק האופציונלי של world של .coroid/i18n.json קובע את השאר:

{
  "world": {
    "exclude": ["src/legacy/**", "scripts/**"],
    "translate": ["translateText", "i18n.translate"],
    "allow": ["Storefront", "OK"]
  }
}
שדהמשמעות
excludeקבוצות קבצים שהכללים מתעלמים מהן
translateפונקציות תרגום נוספות על פונקציות המסגרת עצמה
allowמילים שמעולם לא מתורגמות, מלבד מילים מוגנות
formatter, currenciesנקבע על ידי שלב התרבות של המאסטר; ראה תרבות
renderכיצד להפעיל את האפליקציה עבור דפים בעלי לוקליזציה מדומה; ראה לוקליזציה מדומה

ממצאים ותיקונים

כל ממצא נשמר בריצת ה-Coroid Check ומופיע ברשימת המשימה ב-ממצאים. בעיות שנמצאו: ממיינים ממצאים לפי קטלוג, מפתח ושפה; ממצאי קוד לפי קובץ, שורה וטקסט שנמצא; ממצאי דף לפי דף, אלמנט וטקסט. ממצא נחשב כתוקן כאשר הבדיקה האחרונה של אותה עבודה אינה מציגה אותו עוד.

תרגום טקסטי תשלוםמשימה
נמצאו בעיות
  • פתחui · checkout.total · fr: missingגלובליזציה · לא תורגם
  • בתהליך תיקוןsrc/pricing.tsx:7 · “תמחור פשוט”גלובליזציה · טקסט שנכתב ישירות בקוד
  • פתח/{locale}/ · p#promo · “משלוח חינם על כל הזמנה” · runtime_text (de-DE, ar-SA)גלובליזציה · טקסט שלא נלקח מהקטלוג
  • בתהליך תיקוןui · cart.items · ja: placeholder_mismatchגלובליזציה · התוויות שונות מהמקור
  • תוקןui · cart.count · ar: plural_categoriesגלובליזציה · צורות רבות לא קיימות לשפה זו

ממצאי איכות מהבדיקה של גלובליזציה: מחרוזות קטלוג, שינוי שנוסף לקוד ודף פסאודו-מקומי, קוד בעיה אחד לכל ממצא. נתונים אילוסטרטיביים.

בבקשות משיכה, ממצאי קוד מופיעים גם כהערות על השורות המשתנות: ככישלון כאשר הם חוסמים, כאזהרה כאשר הם רק מדווחים.

כאשר ה-Coroid Check חוסם משימה, סוכן המפתח מקבל כל ממצא חוסם, כגון src/pricing.tsx:7 hardcoded_text: “Simple pricing”, יחד עם דרך התיקון. הוא מתקן תרגומים באמצעות פגישת תרגום עבור המשימה, לעולם לא על ידי עריכה ידנית של קטלוגים של שפות אחרות. הוא מעביר טקסט לקטלוג המקורי, כותב מחדש משפטים משולבים כהודעה אחת עם תוויות כתחליף, ומריץ את כללי הקוד על השינוי שלו לפני שהוא מעביר את המשימה הלאה.

תרומות מכל מקור

ה-Coroid Check מחיל את אותו הסטנדרט על כל שינוי, ללא קשר לכותב:

  • סוכני Coroid העובדים על פרויקט מבוסס-בינלאומיות מקבלים בכל משימה: את הקטלוג המקורי ופונקציית התרגום, הודעה אחת לכל משפט, מנחה הפורמט של הפרויקט, פריסה לוגית כאשר שפה נכתבת מימין לשמאל, והכללים של השווקים מתוך תרבות.
  • בקשות משיכה מאנשים וכלים אחרים עוברות את הבדיקה דרך Coroid Check, עם אותם ממצאים והערות. הפעל את בצע סקירה של כל PR כדי להריץ אותו על כל pull request.
  • שינויים שמוזגו מבלי לעבור את הבדיקה נתפסים לאחר המיזוג. תרגם מחרוזות שמוזגו מחוץ ל-Coroid קורא את הבדיקה שבוצעה על ה-pull request. הוא יוצר משימת תרגום כאשר חסרים מחרוזות או הן מיושנות. כאשר הבדיקה חסמה ממצאי קוד, הוא גם יוצר משימה בשם הפוך את הקוד הממוזג לבינלאומי עבור ה-pull request, תוך ציון היכן לחפש. לכל מיזוג מוקצית לכל היותר משימה אחת מכל סוג.

קוד קיים לעולם לא נחסם: כשירות לעולם מפרט אותו ויוצר משימות תיקון שתוכל להתחיל כשתבחר.

הפעל אותו בעצמך

המנוע הוא הכלי בשורת הפקודה coroid-i18n, הגרסה שנקבעה בקובץ ההגדרות שלך:

coroid-i18n check                       # catalogues
coroid-i18n source --changed main       # the code a branch adds since main
coroid-i18n check --source --changed main

source קורא את הקוד מבלי לקרוא את הקטלוגים, כך שהוא פועל גם כאשר הם עדיין לא הוגדרו. ללא --changed או --diff הוא קורא את כל המאגר. שתי הפקודות יחזירו ערך 1 כאשר ימצאו משהו; הוסף --format json כדי לקבל דוח קריא למכונה.