דף הבית » טריקים וטיפים, סקירת תוספים

תמיכה בריבוי שפות בתוספי וורדפרס

23 בינואר 2011 | מאת רמי | 9 תגובות | תגיות: , , , , , , ,

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

אחרי מספר פניות כאלה הבנתי שאני לא יכול לשנות לבד את העולם והחלטתי לשתף אתכם בתהליך כדי שיותר אנשים יוכלו לשפר את התוספים האהובים עליהם כך שיתמכו ב-RTL ויהיו זמינים בשפה העברית.

תמיכה בריבוי שפות בתוספי וורדפרס

תמיכה בריבוי שפות בתוספי וורדפרס

רקע

תהליך הטמעת תמיכה בריבוי שפות בתוספים דומה לתהליך שעברה וורדפרס עצמה. תמיכה בריבוי שפות דורשת ביצוע התאמות ברמת הקוד (PHP), ברמת העיצוב (CSS), ותרגם מחרוזות הטקסט לשפה הרצויה.

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

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

התהליך

התהליך שעלינו לעבור כדי להוסיף תמיכה בריבוי שפות לתוסף וורדפרס:

  • תרגום מחרוזות:
    1. הוספת פונקציות תרגום לכל מחרוזת (ברמת הקוד).
    2. תרגום המחרוזות לשפה הרצויה.
  • תמיכה בשפות RTL:
    1. ביצוע התאמות עיצוב CSS (שמירת השינויים בקובץ rtl.css).
    2. הוספת תמיכה בשפות RTL לתבנית (טעינת קובץ rtl.css דרך התוסף).

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

תרגום מחרוזות

התאמות בקוד:

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

# Before:
$title = "Title";
echo "Hello World!";
# After:
$title = __("Title");
_e("Hello World!");

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

תרגום מחרוזות:

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

תמיכה בשפות RTL

התאמות עיצוב CSS

לא כל התוספים מצריכים עיצוב מותאם אישית. אבל אם כבר יש קובץ CSS, יש לבצע בו התאמות כדי שיתאים לדוברי השפות מימין לשמאל, RTL. כשמבצעים התאמות אסור לשנות את קובץ ה-CSS המקורי אלא לבצע התאמות נדרשות בקובץ נפרד בשם rtl.css.

טעינת קובץ RTL.css

מפתח תוסף שכותב קוד לפי הסטנדרטים טוען קובץ CSS בעזרת הפונקציה wp_enqueue_style(). אנחנו נצטרך להגיד למערכת לבדוק האם מדובר באתר בו כיוון הכתיבה מימין לשמאל:

# Before:
wp_enqueue_style('my-plugin', PLUGIN_URL."/style.css");
# After:
wp_enqueue_style('my-plugin', PLUGIN_URL."/style.css");
if ( is_rtl() ) wp_enqueue_style('my-plugin-rtl', PLUGIN_URL."/rtl.css");

שימוש בפונקציה is_rtl() מבטיח שהקובץ rtl.css יתווסף רק לאתרים בהם כיוון הכתיבה הוא מימין לשמאל RTL ורק עליהם יחולו כל ההתאמות בעיצוב.

סיכום

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

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

9 תגובות »

  • חתול כותב :

    צריך גם לטעון את התרגום באמצעות הפונקציה load_plugin_textdomain.
    וגם השורה: echo _e("Hello World!");‎ היא טעות. הפונקציה ‎_e‎ כוללת בתוכה את הפקודה echo מספיק להשתמש ב־‎ _e("Hello World!");‎

  • רמי כותב :

    תוקן.

  • צחי כותב :

    מעולה! בדיוק מה שאני צריך, תודה.

  • חתול כותב :

    טוב מאוד, צריך עוד להוסיף את load_plugin_textdomain.

  • בן גור כותב :

    שלום,
    תודה על ההסבר אבל אני קצת חדש בתחום,

    אני חיפשתי ענן תגיות שמציג את התגיות בפלאש כמו גלגל מסתובב ומצאתי את זה
    http://wordpress.org/extend/plugins/wp-cumulus/

    הבעיה היחידה שלי היא שהוא לא מציג תגיות בעברית, התגיות באנגלית עובדות טוב אבל עיברית לא רואים.

    מישהו יודע איך אני גורם לו להראות את התגיות בעברית ?
    או לחילופין אם מישהו מכיר תוסף כזה שעובד ב-2 השפות זה יהיה מצויין.

    תודה מראש
    בן גור

  • מיקי כותב :

    היי רמי,

    משום מה ה Theme שהתקנתי לא הופך את הכיווניות של התגובות לעמודים
    איפה אני מוצא את הקוד שאני צריך לשנות ע"מ שהכיווניות של התגובות תשתנה מימין לשמאל?

    תודה

  • מייקל כותב :

    שלום רמי

    יש לי אתר וורדפרס בעברית.

    ברצוני להוסיף באנר שפות באתר שמשתמש אנגלייוכל לקבל גרסת אנגלית של האתר. בנוסף בהמשך הדרך ארצה להוסיף שפות כמו גרמנית וצרפתית.

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

    תודה ואשמח להכוונה.

    מייקל
    http://www.replanit.com

  • תרגום מאמרים כותב :

    טוב לדעת! תודה

  • רוני כותב :

    צריך לתרגם קובץ php של וידג'ט לעברית. אין קובץ css. רק php. האם תוכל להבהיר איך עושים את זה ?
    במערכת וורדפרס 3.4.1 עברית.

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>