למד כיצד לרשום טקסטים שהוזנו על ידי המשתמש מתוספים ומערכות עיצוב לתרגום. לאחר רישומם, תוכל לתרגם אותם באמצעות תרגום מחרוזות.
כיצד לרשום טקסטים שהוזנו על ידי המשתמש
כאשר משתמש יוצר מחרוזות חדשות, או מעדכן מחרוזות קיימות, יש לרשום אותן בטבלת המחרוזות של WPML.
תוכל לבצע קריאה זו באמצעות ההוק wpml_register_single_string:
do_action( 'wpml_register_single_string', string $context, string $name, string $value )
- $context – שם התוסף או ערכת העיצוב, בפורמט קריא לאדם.
- $name – שם המחרוזת, שעוזר למתרגם להבין מה מתורגם.
- $value – המחרוזת שיש לתרגם.
ראה דוגמה זו של וידג'ט מותאם אישית, הכולל title, שדה input של שורה אחת, ו־textarea. כדי לרשום שדות אלה לתרגום כאשר אפשרויות הווידג'ט נשמרות או מעודכנות, אנו משתמשים בפונקציית העדכון:
שימוש בהוק wpml_register_single_string
function update($new_instance, $old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['custom_input'] = strip_tags($new_instance['custom_input']);
$instance['custom_textarea'] = $new_instance['custom_textarea'];
//WPML
/**
* register strings for translation
*/
do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
//WPML
return $instance;
}בדוגמה זו, אנו אומרים ל־WPML שעליו לתרגם את הטקסטים שהוזנו על ידי המשתמש עבור שדה ה־input וה־textarea. טקסטים אלה יירשמו תחת הקשר המחרוזות Widgets בשם Custom Widget – input field ו־Custom Widget – textarea field בהתאמה.
לאחר רישום הטקסטים, תוכל להשתמש בהוק wpml_translate_single_string כדי להציג תרגומים בחזית האתר.
כיצד לשלב את תרגום מחרוזות עם תוספים ומערכות עיצוב
בעת שילוב תרגום מחרוזות עם תוספים או מערכות עיצוב, חשוב לוודא שהקריאות קיימות.
יישום קריאות מותנות
עטוף את הקריאות שלך בהצהרות if_function_exists() כך שאם WPML מופעל, תתבצע קריאה, ואם לא, הפעולה הרגילה תישמר.
טיפול בהפעלה מאוחרת של WPML
כמפתח ערכת עיצוב או תוסף, עליך לקחת בחשבון גם את המקרה שבו WPML מופעל זמן רב לאחר שהמשתמש מתחיל להשתמש בערכת העיצוב או בתוסף שלך.
במקרים אלה, מחרוזות לא יתורגמו מכיוון שהקריאה ל־wpml_register_single_string לא מתבצעת בעת יצירתן. כדי להתגבר על כך, עליך לרשום את כל מחרוזות המשתמש בכל פעם שמסך אזור הניהול של התוסף נטען.
למרות שזה מוסיף זמן ביצוע זניח, זה מבטיח שמחרוזות תמיד יישלחו לתרגום ויהיו עדכניות.
הקוד צריך קודם כל לבדוק אם הפונקציה wpml_register_single_string קיימת. אם כן, יש לקרוא לפונקציה כדי לרשום את כל הטקסטים שהוזנו על ידי המשתמש. כך זה עובד:
- אם הפונקציה נקראת עם ערכים ריקים או NULL, WPML מתעלם מקריאות אלה.
- אם מחרוזת כבר קיימת ולא שונתה, WPML מתעלם מהקריאה.
- הפונקציה פועלת רק אם נרשמות מחרוזות חדשות או כאלה ששונו.
טבלת התרגום כולה נשמרת בזיכרון המטמון, ולכן קריאה חוזרת אליה דורשת מעט מאוד כוח עיבוד.
משאבים נוספים
כדי לרשום טקסטים מקודדים קשיחים ממערכות עיצוב ותוספים לתרגום, עיין במאמר שלנו על מציאת מחרוזות שאינן מופיעות בדף תרגום מחרוזות.
כדי לרשום אפשרויות של ערכת עיצוב או תוסף לתרגום, עיין במדריך שלנו על שימוש בקובץ תצורת השפה.
כדי לתרגם רכיבים של ערכת עיצוב או תוסף כקבוצה, עיין בתרגום חבילות מחרוזות שלנו.