כל משתמש WordPress יודע – לא תמיד תוסף זקוק לתרגום לעברית. תוספים שהשימוש בהם פשוט מאוד, או תוספים שהשימוש שלהם אינו דורש כמעט טקסט – פשוט יכולים להשאר בשפת המקור, בתנאי שהיא, כמובן, אנגלית.
אך מה קורה כאשר השפה / המונחים מורכבים מדי למשתמש העברי הממוצע ב-Wordpress ? אז התרגום יכול להיות מאוד מבוקש.
ברשומה זאת נדבר על תרגום ב-Wordpress ועל תרגום תוספים בפרט.
I18n
הכותרת מרמזת על רעיון הבינאום (הפיכה לבינלאומי) והינה בעצם קיצור נחמד למילה Internationalization (שהיא i גדולה, 18 אותיות ואז n בסוף. חמוד, לא?). בקצרה, בינאום הינו שלב אחד לפני תרגום. כדי שאפשר יהיה לתרגם תוסף או אלמנט אחר ב-Wordpress, צריכה להמצא פונקציה שיודעת להבדיל בין קוד לטקסט שאפשר לתרגם אותו, ושתדע להיכן לגשת על מנת לשאוב את המחרוזות המתורגמות.
עכשיו התנצלות קטנה – אני לא מתכנן להקיף את כל מה שקשור לתחום הבינאום והתרגום ב-Wordpress. אני מנסה לתת כלים לתרגום, בלי התיאוריה. שלא תבינו לא נכון, היא מאוד חשובה להבנה נכונה של המערכת. אבל עשו את זה כבר טובים ממני (אמנם באנגלית, אבל לא הבטחתי לתרגם את זה (: ) - למעוניינים להרחיב – I18n for WordPress Developers. אתכם הסליחה.
אבל בכל זאת… קצת מושגים טכניים:
מחרוזת שאינה מוכנה לתרגום, נראית כך:
<code lang="php">echo "my wordpress plugin text";
</code>
על מנת לאפשר בעתיד תרגום של המחרוזת, יש לעטוף את המחרוזת בתוך אחת משתי פונקציות – _e() או __().
ההבדל ביניהן הוא שהראשונה מדפיסה את התוכן למסך (בעצם, תרגום ואז echo), והשנייה רק מתרגמת את המחרוזת. זה נראה הבדל קטן אבל עוד תגלו את השימושים לכל אחד מהם.
אותה מחרוזת שמוכנה לתרגום תיראה כך:
_e("my wordpress plugin text"(;
זוהי כל תורת הבנאום על רגל אחת, אבל בבקשה – אם אתם מגיעים לתוסף לא מוכן לתרגום (לא מבונאם), אל תעשו זאת רק על סמך מה שכתבתי כאן. קראו את כל המאמר על I18n באתר של WordPress, בקישור שלעיל. אנחנו מתמקדים כאן בתרגום ולא בבנאום.
שאלה – איך יודעים אם תוסף כבר מבונאם או לא?
תשובה א' – מחפשים קבצי pot, po ו-mo (עוד מעט ניתן הסבר עליהם, יש להם חשיבות)
תשובה ב' – במידה ואין, עדיין לא אומר שהוא לא מבונאם, פשוט אולי לא תרגמו אותו לשום שפה. פתחו קובץ php מרכזי בתוסף וחפשו מחרוזות שעטופות באחת משתי הפונקציות שהצגנו למעלה. אם יש כאלו, התוסף, ככל הנראה, מבונאם.
עוד כמה הגדרות לפני התרגום
קבצי po – קבצי ה-po הינם בעצם הקבצים המחזיקים את התרגום למחרוזות. כל קובץ מחזיק תרגום לשפה אחת, ואפשר לדעת לאיזו שפה, לפי השם. למשל myplugin-en_BR.po הינו תרגום לאנגלית בריטית, וmyplugin-he_IL.po הינו תרגום לעברית ישראלית. לאט לאט תכירו את השמות הרלוונטיים. קבצים אלו הם קבצים יחסית גדולים בנפח, אותם אפשר לראות בכל עורך טקסט.
קבצי mo - קבצי ה-mo הינם העתק של קבצי ה-po חוץ מעניין אחד קטן – קבצי ה-mo קטנים בהרבה בנפח, דבר שמקל על תעבורת המידע. מסיבה זו את קבצי הmo רק המכונה (מערכת התרגום) יודעת לראות. חשוב להבין שאין לזה ערך לערוך בעורך טקסט את קבצי ה-po ולשנות את התוכן, מכיוון שהם לא ישפיעו כך על קובץ ה-mo. יש רק דרך אחת לעשות זאת כמו שצריך (ואם תעקבו אחר המדריך שתיכף יתחיל, תדעו אותה גם אתם).
קבצי pot - קבצי pot הם בעצם קבצי po ריקים מתוכן מתורגם. עליהם נעשה כל תרגום חדש ולאחר מכן נשמר בתור קבצי mo ו-po חדשים.
Xgettext – תוכנה קטנה ליצירת קבצי pot מתוך קובץ php שבונאם.
POedit – תוכנת GUI ליצירת po ו-mo מתוך קובץ pot.
ועכשיו המדריך. עקבו צעד-אחר-צעד ותגיעו לגביע הקדוש.
שלבי התרגום:
1. מצאתי תוסף שזקוק לתרגום, ושכבר בונאם. איך גיליתי זאת? פתחתי את תקיית התוסף, וראיתי כי קיימים קבצי PO ו MO. היו כאלה אך רק בשפה האיטלקית.
2. התקנת xgettext (בubuntu 9.10 היא "באה לבד").
3. לפתוח טרמינל. להגיע לתקייה של התוסף, ולהקליד את הפקודה כמו שהיא מוסברת כאן. אפשר גם להעתיק את הפקודה מהתמונה של הטרמינל (שם היא ברורה יותר) התמונה מוכיחה שזה עובד, כיוון שהקובץ pot לא היה שם לפני התמונה. שימו לב.
4. לפתוח את POedit ולטעון את קובץ הpot מהתקייה, דרך "קובץ" >> "קטלוג חדש מקובץ pot", להכניס את הפרטים המתאימים תחת הגדרות. הערה: בגדול, התעלמו מהטאבים "נתיבית", ו"מילות מפתח". הערה 2: ברוב התוספים אין צורך לגעת בצורות רבים, ועל כן לא אלאה אתכם בעניין. אם אתם לא התרגום הראשון לתוסף, בידקו מה כתוב תחת plural בקובץ ה-po של תרגום כלשהו.
5. לתרגם את המחרוזות משפת האם.
6. לבדוק שב"עריכה">> "העדפות" >> תחת הטאב "עורך" – כפתור ה-checkbox ליד "הדר לקובץ mo בשמירה אוטומטית" מסומן ב-v.
7. לשמור את הקובץ, ולסגור את POedit. עתה תראו שהתוכנה יצרה את שני הקבצים (mo ו po) אך ללא המזהה של השפה הספציפית , תוכלו להוסיף את המזהה בעצמכם על ידי עריכת שם הקבצים.
זהו זה.
כמובן שיש איפה להסתבך, ויש עוד דברים כמו text-domain ואיך מעדכנים תרגום בלי לתרגם הכל מההתחלה, שלא דיברנו עליהם. אבל על הבסיס דיברנו.
כמובן שאם תהיה התעניינות, זה ידרבן אותי לכתוב בנושא יותר.






איך פותרים את בעיית הקידוד, או: מה עושים עם ה- � (סימן שאלה על רקע שחור) המעצבן?
5 בדצמבר, 2008במקומות רבים בג'ומלה — וגם במנועים אחרים — נתקלים בבעיה הזו, בעיקר בדפדפן פיירפוקס; רואים את זה כאשר מנסים להשתמש בקידוד UTF-8 ובמקביל מנסים לקצר מחרוזות, למשל: כדי להציג תקציר של תוצאות חיפוש.
ממה נגרמת הבעיה?
הבעיה נגרמת מכיוון שתווי UTF-8 הם תווים שכל אחד מהם תופס בזיכרון יותר מבייט אחד. כלומר, במחרוזת UTF-8 קונבנציונלית, כל אות בעברית תתפוס 2 מקומות; הפונקציה שמנסה לקצר את המחרוזת הזו (לרוב: פונקציית ה-PHP שנקראת substr, או משהו דומה), מתעלמת מכך (אין לה אפשרות לדעת), ומקצרת את המחרוזת עד ל"אמצע" של אות, ובכך משאירה קוד UTF שאינו שלם, ומופיע סימן השאלה.
לכאורה, היה ניתן לתקן זאת בפשטות באופן הבא:
היינו בונים פונקציה שמקצרת "רק בזוגות". ובכן — אין בזה שום פתרון, מהסיבה הפשוטה הבאה: עם קבלת ה-UTF-8 כתקן, התעקשו דוברי האנגלית כי אין סיבה ששפתם — המדוברת ביותר בעולם — תתפוס פי 2 מקום בזכרון "סתם כך", ועל-כן התווים באנגלית, גם במחרוזות UTF-8, תופסים רק מקום אחד. כמו-כן, מספרים ותווים "בינלאומיים" נוספים תופסים גם הם, לרוב, רק מקום אחד. אז הבעיה מחריפה: המחרוזת, שמבחינתנו בנויה מרצף סביר של אותיות ומספרים, בעצם בנויה מסדרה של מקומות בזכרון, שחלקם מביעים אות או מספר, וחלקם מביעים רק "חצי אות".
אז מה עושים?
מאחר וכבר ממילא נתקלתי בבעיות הללו ופתרתי אותן, אני אנסח בצורה מסודרת — בשביל לחסוך מאמץ משאר הנתקלים בבעיה — כיצד פותרים את הבעיה הזו בכל "מקום" בג'ומלה.
מנוע החיפוש של ג'ומלה
המקום הראשון שנתקלים בו בבעיה זו, לרוב, הוא ג'ומלה. הרעיון הוא כללי מאד, וניתן להכליל אותו בנקל למקרים נוספים בג'ומלה או בכלל.
ראשית, שמרו גיבוי של כל קובץ שאתם עובדים איתו. זה חשוב מאד, כי ג'ומלה הוא מנוע מאד מסורבל שמסתמך על המון פאצ'ים חיצוניים, ולעתים אין לדעת מה שינוי — הכי תמים שבעולם — יכול לעשות. שמרו גיבוי.
פתחו את הקובץ joomla.php שנמצא בספריה includes. הקובץ הוא קובץ ענק שמכיל המוני פונקציות של ג'ומלה. חפשו בתוכו את הפונקציה mosSmartSubstr. למרות שמה, הפונקציה אינה כל-כך חכמה, אך אל דאגה – אנחנו "נעלים" אותה, ונחליף אותה בפונקציה חכמה יותר.
ערכו את הפונקציה עצמה כך שתיראה, בסופו של דבר, כך:
function mosSmartSubstr($text, $length=200, $searchword) {/* $wordpos = strpos(strtolower($text), strtolower($searchword));
$halfside = intval($wordpos - $length/2 - strlen($searchword));
if ($wordpos && $halfside > 0) {
return '...' . substr($text, $halfside, $length) . '...';
} else {
return substr( $text, 0, $length);
} */
return UTFSmartSubstr($text,$length,$searchword);
}
שימו לב — מה שעשינו, בעצם, זה "להעלים" את כל תוכן הפונקציה, ובמקום זה להשאיר שורה אחת בלבד שקוראת לפונקציה אחרת. עלינו להוסיף את הפונקציה הזו, ונעשה זאת מיד לאחר הסוגריים של הפונקציה שערכנו זה עתה:
// This is the new UTF-8 solution!function UTFSmartSubstr($text, $length=200, $searchword) {
$wordpos = strpos(strtolower($text), strtolower($searchword));
$halfside = intval($wordpos - $length/2 - strlen($searchword));
if ($wordpos && $halfside > 0) {
$output= substr($text, $halfside, $length);
$op_arr = explode(" ",$output);
array_shift($op_arr );
array_pop($op_arr );
$output = '...' . implode(" ",$op_arr) . '...';
} else {
$output= substr( $text, 0, $length);
$output= substr($text, 0, $length);
$op_arr = explode(" ",$output);
array_pop($op_arr );
$output = implode(" ",$op_arr) . '...';
}
return $output;
}
שימו לב: מה שהפונקציה הזו עושה הוא מאד מועיל: היא מקבלת את המחרוזת באופן רגיל לגמרי, כמו הפונקציה המקורית, אך לאחר מכן היא מפצלת אותה למילים, מעיפה את המילה האחרונה (שהיא המילה הבעייתית — זו שאולי קטועה בצורה לא יפה), מחברת את הכל יחד, ומייצרת מחרוזת חדשה, אותה היא מחזירה. כך הרווחנו שני דברים במכה: ראשית, לא יהיה סימן שאלה; שנית, לא יהיו מילים חצויות, ונקבל מחרוזת שיש בה רק מילים שלמות.
לאחר העדכון שעשיתם, שמרו את הקובץ והעלו אותו לשרת (לא לשכוח — לפני-כן — גיבוי!). הכל אמור לעבוד כמו שצריך עכשיו.
הערה: אם רוב המחרוזת שלכם היא בעברית, אתם עלולים לקבל (לא בגלל הפונקציה החדשה) מחרוזות שהן טיפה קצרות יותר ממה שרציתם. אין בעיה: שחקו עם המשתנה $length (פה, או במקום שקורא לפונקציה), וזה יהיה בסדר!
ב-SMF Bridge לג'ומלה
כן, גם שם אנו נתקלים בסימן השאלה השחור. באופן דומה לפתרון הקודם, גבו קודם כל קובץ שאתם מתכוונים לשנות. ג'ומלה פועל לעתים באופן לא צפוי. בספריה שבה התקנתם את הפורום עצמו (לא את הקומפוננטה של הגשר), יש תת-ספריה בשם Sources. בתוך הספריה הזו תמצאו קובץ בשם Subs.php; שוב, קובץ ענק. פתחו אותו, ובסביבות שורה 911 (אל תתפסו אותי על השורה, יש המון גרסאות…), אמורה להופיע השורה הבאה:
return $func['substr']($subject, 0, $len) . '...';"העלימו" את השורה הזו בעזרת סימן ה"comment", והוסיפו אחריה — במקום — את השורות הבאות (מה שמופיע להלן הוא כיצד זה אמור להיראות בסופו של דבר):
// return $func['substr']($subject, 0, $len) . '...';$output = $func['substr']($subject, 0, $len);
$op_arr = explode(" ",$output);
array_pop($op_arr );
$output = implode(" ",$op_arr) . '...';
return $output;
הפונקציה פועלת בדומה לפעולתה של הפונקציה אותה יצרנו קודם לכן: היא מפרידה את המחרוזת למילים, מעיפה את המילה האחרונה, ומחזירה מחרוזת המורכבת מהמילים שלפניה.
שימו לב, כפי שהערתי קודם לכן, ייתכן בהחלט — ואפילו סיכוי רב — שהמחרוזות אותם תקבלו בחזרה יהיו קצרות מדי (ולא בגלל השינוי). הפתרון לכך הוא קצת יותר מורכב מאשר במנוע החיפוש של ג'ומלה, והריני מפרטו כאן:
יש לעבור בכל אחד מן הקבצים הבאים, בכל אחת מן השורות המפורטות, ולהכפיל את המספר שרשום שם בתור האורך — דהיינו, בכל מקום שרשום 24 יש לרשום 48, אם רשום 25 יש לרשום 50 וכו'. המקומות הם:
עד כאן; שמרו את כל הקבצים והעלו אותם לשרת. זה אמור לעבוד טוב כעת.
שוב ב-SMF: הפעם, ב-Recent Topics
גם במודול הנלווה Recent Topics אנו נתקלים בבעיה דומה. נבנה – בתוך המודול – פונקציה שעושה משהו דומה למה שראינו בבעיות הקודמות. לאחר שאתם מגבים כל קובץ שאתם מתכוונים לערוך, כמובן, ערכו את הקובץ של המודול, הקובץ בשם mod_smf_recenttopics.php (בספריה modules).
בתחילת הקובץ, ממש לאחר כל ה"הודעות" (בסביבות שורה 80), הוסיפו את הפונקציה הבאה:
function utfSubstr( $subject, $start, $len ) {if (strlen($subject) <= $len)
return $subject;
$output = substr($subject, $start, $len);
$op_arr = explode(" ",$output);
array_pop($op_arr );
$output = implode(" ",$op_arr) . '...';
return $output;
}
עכשיו, במקומות המתאימים, נרצה לקרוא לפונקציה הזו; בסביבות שורה 275, מופיעה השורה הבאה:
‘short_subject’ => ...אנחנו רוצים להחליף אותה, בשורה הבאה:
'short_subject' => mb_strlen(un_htmlspecialchars($row['subject']),'UTF-8') > 25 ?htmlspecialchars(utfSubstr(un_htmlspecialchars($row['subject']), 0, 48)) : $row['subject'];
זה יקרא לפונקציה שבנינו. כמו כן, שימו לב שהשתמשנו פה בפונקציה שמודדת את אורך המחרוזת לפי UTF-8 (כן, PHP יודע לעשות זאת!), אך הכפלנו את האורך של המחרוזת שאנחנו רוצים בסופו של דבר. נעשה דבר דומה שוב; בסביבות שורות 550-570, אמורה להופיע שורת הפלט, שנראית בערך כך:
echo substr(...נחליף אותה, שוב, בשורה הבאה:
echo utfSubstr(html_entity_decode($post['subject']), 0, $int_num_char*3);שימו לב שביצענו הכפלה קטנה בסוף... שוב, בשביל לשמור על אורך מחרוזות הגיוני. שמרו, העלו את הקבצים, והכל אמור לעבוד היטב כעת.
בממבלוג
גם מנוע הבלוגים החביב יוצר את הבעיה של סימני השאלה השחורים, אך הוא עושה זאת מסיבה אחרת לגמרי; הסיבה היא פונקציה -- שאמורה להיות מועילה -- בשם safeStrip -- לא מזהה תו המקובל ע"י עורכי WYSIWYG שונים במקום "רווח" במקרים שבהם פסקה היא ריקה (או במקרים אחרים). התו מקודד באופן הבא: (ראשי תיבות: non-breaking space) -- והפונקציה הורסת אותו, וכך נוצר סימן השאלה החביב.
הפונקציה safeStrip נועדה -- במקור -- להבטיח שבתקצירים לבלוגים לא יהיו תגי HTML. אישית, איני מוצא סיבה לכך (מאחר ואת התגים הנ"ל ממילא רואים בדפי הבלוג הרגילים, שמשתמשים במנוע content של ג'ומלה להצגתם); כך הם נראים, בין היתר, ללא מעברי שורה. ולכן, הפתרון שאני מציע לבעיה זו הוא פשוט -- אנו נבטל את הקריאה ל-safeStrip, באופן הבא:
לאחר גיבוי מלא של הקבצים הקשורים, פתחו לעריכה את הקובץ showblogs.php שנמצא בתוך התיקייה הרגילה של הקומפוננטה. בסביבות שורה 459 נמצאת הפונקציה checkLength. כמה שורות לפני סוף הפונקציה, מופיעה השורה הבאה:
$text = safeStrip( $text );סמנו שורה זו כ"הערה", באופן הבא:
// $text = safeStrip( $text );כמו-כן, רצוי באותו הקובץ, בראשית הפונקציה decodeEntities, לסמן את השורה הבאה:
$string = html_entity_decode ($string, $opt);כהערה גם-כן:
// $string = html_entity_decode ($string, $opt);ובזה נגמר הסיפור.
שימו לב, גם, שתקצירי הבלוג ייראו עכשיו בהחלט טוב יותר.
יש מקום נוסף בממבלוג שיכול להוות בעיה: בדף שמציג באופן מרוכז תקצירים של בלוגים רבים. במקרה זה, הבעיה נמצאת בקובץ showblogs.php, בפונקציה checkLength - שוב המחבר מנסה להשתמש בפונקציה substr. כרגיל, נוסיף בתחילת הקובץ (בערך בשורה 14) את הפונקציה החדשה שבנינו:
function utfSubstr( $subject, $start, $len ) {
if (strlen($subject) <= $len)
return $subject;
$output = substr($subject, $start, $len);
$op_arr = explode(" ",$output);
array_pop($op_arr );
$output = implode(" ",$op_arr) . '...';
return $output;
}
עתה, בשורה הבעייתית, בפונקציה checkLength, (צריכה להיות בערך בשורה 477 עכשיו), נחליף את:
$text = substr( $newtext, 0, $maxchars ) . "...";
ות הבאות:
// $text = substr( $newtext, 0, $maxchars ) . "...";
$text = utfSubstr( $newtext, 0, $maxchars*2);
שימו לב להכפלה הקטנה שעשינו! זה, כאמור, מכיוון שהאותיות בעברית "ארוכות יותר".
במנוע המתכונים Ricettario
כן, לא תאמינו – סימן השאלה הארור חודר לנו אפילו לאוכל. במנוע המתכונים Ricettario, אנו נתקלים בסימן השאלה השחור בתקצירים השונים של המזונות כאשר אנחנו באינדקס של קטגוריה.
איך פותרים? זוכרים את הפונקציה שהגדרנו, utfSubstr? ובכן, לשם הנוחות, נכתוב אותה גם פה, מחדש, אבל הפעם ניזהר שאנחנו לא מגדירים אותה פעם אחת יותר מדי: (הרגל טוב באופן כללי)
if (!function_exists("utfSubstr")) {function utfSubstr( $subject, $start, $len ) {
if (strlen($subject) <= $len)
return $subject;
$output = substr($subject, $start, $len);
$op_arr = explode(" ",$output);
array_pop($op_arr );
$output = implode(" ",$op_arr) . '...';
return $output;
}
}
את הפונקציה הזו רושמים בתחילת הקובץ ricettario.php, ממש לאחר כל ההערות (למשל, בסביבות שורה 37).
לאחר מכן, אנחנו רוצים לעדכן את המקום שמדפיס את הטקסט המקוצר עצמו -- להודיע לו שישתמש בפונקציה החדשה. זאת אנחנו עושים באזור שורה 1,550 -- את השורה:
$text=substr ($row1->descr, 0, $ric_testolista);אנחנו מחליפים בשורה:
$text = utfSubstr($row1->descr, 0, (2*$ric_testolista));שימו לב, שוב הארכנו את המחרוזת המקוצרת, כי אנחנו מניחים שהיא כתובה בעיקר בעברית.
במנוע התגובות com_comment
הפתרון לבעיה זו דומה מאד לפתרון הבעיות הקודמות. הקובץ שמעניין אותנו הוא הקובץ common.php שנמצא בספריית הקומפוננטה באדמין.
זוכרים (שוב) את הפונקציה שהגדרנו, utfSubstr? ובכן, לשם הנוחות, נכתוב אותה גם פה, שוב, אך ניזהר שאיננו מגדירים אותה פעם אחת יותר מדי:
if (!function_exists("utfSubstr")) {
function utfSubstr( $subject, $start, $len ) {
if (strlen($subject) <= $len)
return $subject;
$output = substr($subject, $start, $len);
$op_arr = explode(" ",$output);
array_pop($op_arr );
$output = implode(" ",$op_arr) . '...';
return $output;
}
}
את הפונקציה הזו נרשום ממש בתחילת הקובץ common.php, ממש לאחר כל ההערות (למשל, בשורה 11). לאחר מכן, אנחנו רוצים לעדכן את המקום שמקצר את הטקסט. הפונקציה שדואגת לכך היא הפונקציה mc_get_article_title הנמצאת עתה בסביבות שורה 219.
לאחר העדכון, הפונקציה אמורה להיראות כך:
function mc_get_article_title($larticleid) {
$add_txt="";
$mc_rows=mc_SelQuery("Select title, id from #__content where id=$larticleid");
if ($mc_rows) {
$mc_i = 0;
foreach($mc_rows as $mc_row) { $ART[$mc_i] = $mc_row->title; }
/* if (strlen($ART[$mc_i]) < 35) { $add_txt = ""; }
if (strlen($ART[$mc_i]) > 35) { $add_txt = "..."; }
$art_txt = substr($ART[$mc_i], 0, 35) . $add_txt; */
$art_txt = utfSubstr($ART[$mc_i], 0, 70);
return $art_txt;
}
}
וזה הכל!
במנוע הקישורים com_weblinks
לפעמים הבעיה היא -- בעצם -- הרבה יותר פשוטה משנראה במבט ראשון... במנוע com_weblinks, למשל, בעיית סימן השאלה השחור נובעת לרוב בגלל שבמסד הנתונים עצמו השדה הרלוונטי מוגדר כקצר מדי.
הפתרון פשוט: נכנסים למסד הנתונים, לטבלה weblinks (או jos_weblinks, או איך שזה לא יהיה אצלכם), ומשנים את השדה description כך שיהיה באורך 500 תווים במקום 250, ו... זה אמור להספיק!
סיכום
הכתוב לעיל מסביר באופן מפורט למדי כיצד לפתור את הבעיה בכל אחד מן המקרים, אך יותר מכך – ניסיתי, כאן, להסביר באופן עקרוני ממה הבעיה נובעת, וכך לספק לכם כלי לנסות לפתור בעיות דומות (ויש אינסוף כאלה) ע"י הבנת הבעיה ויצירת פתרון משלכם.
אם בכ"ז נתקלתם בבעיית קידוד מסוג זה, ואינכם מצליחים להתמודד איתה, כתבו לי (דרך המייל באתר), וננסה לפתור אותה יחד. אם פתרתם אותה, שלחו לכאן את הפתרון, ותנו לכולם להרוויח מכך!
אני מבטיח לעדכן את הדף הזה במקרים נוספים, אם יצוצו.
תגים: com_comment, com_weblinks, Ricettario, SMF, ממבלוג, מנוע חיפוש, קידוד
שייך לקטגוריות ג'ומלה | אין תגובות »