תרגומים של תוכנה חופשית – חלק א

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

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

שלום עולם

נתחיל מתוכנית פשוטה:


int main()
{
printf( tr( "Hello world" ) ) ;
return 0;
}

עכשיו, בעזרת הפקודה xgettext נוציא מתוך הקובץ את התבנית לתרגום, קובץ myfile.pot . כדי ליצור את התרגום, נעתיק את הקובץ אל קובץ חדש בשם myfile-he.po (שימו לב, בלי t בסוף). אותו נתרגם בעזרת kbabel. יפה, שלב ראשון הבנו.

נעים להכיר

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

int main()
{
printf( tr( "Hello world" ) ) ;
printf( tr( "Nice meeting you" ) ) ;
return 0;
}

עכשיו בקובץ שלנו חסר לו תרגומים. כאשר נייצר את התבנית, נגלה שיש לה שתי מחרוזות ואילו בתרגום שלנו יש רק אחת. בעייה, איך ממזגים?

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

אופס…

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

int main()
{
printf( tr( "Hello world\n" ) ) ;
printf( tr( "Nice meeting you\n" ) ) ;
return 0;
}

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

מה שיקרה, זה שמערכת המיזוג תשים לב שהמחרוזות שיש בקובץ המתורגם “מספיק דומות”, ותסמן את התרגומים בתור “פאזי” – fuzzy (לפי דעתי פאוזי היה צריך לנצח שנה שעברה, ולכן אני אשאיר את זה בעברית – פאזי). במחרוזת : "Hello world\n" תשתמש בתרגום של "Hello world" והמחרוזת תסומן בתור פאזי. טוענים את התרגום החדש אל kbabel ומתקנים את הפאזי – מוסיפים מעבר שורה בסוף כל מחרוזת שיש בקובץ.

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

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

אפשרות נוספת היא המתרגם. נניח יש מחרוזת שהוא לא ברור לגביה – לפעמים הוא יתרגם וייסמן בתור פאזי. מין תזכורת “יא טמבל, אל תשכח את זה”.

המשך

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

בהמשך, עבודה עם kbabel. יש כמה טריקים שחייבים להעביר.

Share Button

שבוע של חסד

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

הדרך לגהינום רצופה בכוונות טובות כמו שלולי (SML?) היה אומר. למשל כמה בעיות עם האתר:

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

    האתר אחרי משחקים שלי עם ה-CSS

  2. אין אנשי קשר מסודרים. למעשה אין שום הודעה רשמית של בעלי האתר, לפחות לא אחת שמצאתי. אני רוצה לדעת מי בעל הבית, אני רוצה לדעת מה המטרה של האתר ואיך הוא מתכוונים להפוך את העולם ליותר טוב.
  3. פורומים זה לא מספיק. אני רואה שחלק מהמנהלים בפורום מנסים להסביר לאנשים על תוכנות שיש באובנטו. מטרה נעלה, אבל לא מקומה בפורום. לפי דעתי, עדיף היה להפוך את הדף הראשי של האתר לאתר מבוסס דרופל, ובו מפעילי האתר יכולים לכתוב כתבות על אובונטו, כאשר אפשר להתחיל בהודעות שפורסמו בפורומים.
  4. המון תקלות ילדות. אנשים מתלוננים על המון תקלות ילדות שיש בפורום ובאתר. זה יוצר רושם של משהו חובבני, והאמת גם אם אלו חובבנים, אפשר וצריך לתקן את התקלות הללו.
  5. כתובת האתר. האתר בעל כתובת ממש מוזרה, בעוד (היה) שקיים אתר תחת הכתובת http://ubuntu.org.il. לפי דעתי צריך ליצור קשר עם הבעלים של המתחם הישן ולהעביר בעלות. מעניין כמה זה קשה במציאות.
  6. אין קהילה. למעט שלומי שכותב שם, אין מישהו בעל מספיק ידע כדי לענות על שאלות בצורה מספקת. אני מקווה שזה ישתנה, אבל ידרש משהו דרסטי כדי לשבור את הבעייה של הביצה והתרנגולת.
  7. אין קשר מול פרוייקט האב. נכון לעכשיו, לא ברור מה היחסים בין אובונטו (הפרוייקט הראשי) והפורומים הללו. האם יש הפרה של השם המסחרי או לא, לא ברור האם הפורומים יהיו “רשמיים” (מה שזה לא אומר).

אני קוטל אותם מספיק עבור שבוע ראשון. הבא נפסיק לבינתיים.

Share Button

הגיעו הדיסקים

הדיסקים הגיעו היום. שלושה במספר, מי שרוצה אחד ל-PC 32 שידבר איתי, אם הוא לומד בבראודה, אני אקפוץ לשם והוא יקבל את הדיסק.

הדיסקים הגעיו הפעם בדואר רגיל (לא רשום), עטופים בעטיפה דקיקה בניגוד למה שהיה מקובץ ב-2005 או 2004 (חוברת מכובדת למדי). על התמונה מתנוססת כוזינה, לפי דעתי מספר שתיים אחרי הבלונדה מהפעם הראשונה (כל השאר די נפילה לפי דעתי). הגיעו גם מדבקות, עוד פעם (באלו שקיבלתי פעם קודמת לא השתמשתי), אותו סטודנט יקבל גם את המדבקות.

וסתם לקטול את ynet: למסכים אין יציאת DVI, יש כניסה. כמו כן, אני לא קונה יותר מסכים בעלי השקפות. אני ממליץ לשאר העולם לא לעשות את זה גם כן. זה טריק מלוכלך של יצרניות המחשבים – במקום להשקיע במסך עצמו שמים מראה מגניבה והצבעים נרעים (מלשון רע) מגניבים.

נ.ב. חצי עולם משתמש בלנובו הזה. ראיתי אותו גם בתוכניות הבוקר של ערוץ עשר.

Share Button

הדפדפן האוהב עליי

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

מהירות

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

משתלב בסביבת העבודה

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

תלחצו על קישור אל תמונה ולא נראה את זה בדפדפן – אלא בתוכנה יעודית, אצלי ב־gwenview.

בכל אתר שיש RSS אפשר ללחוץ על הכפתור הכתום בתחתית הדפדפן והערוץ יוסף ל־akregator.

התאמה אישית

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

Killer features

גלילה אוטומטית: תלחצו shift+down ותקבלו גלילה אוטומטית (לחיצה נוספת תגביר מהירות). אני משתמש בזה כאשר אני קורא כתבות ברשת: אני מחפש את ה”תצוגת הדפסה”, לוחץ F11 כדי לקבל מסך מלא ואז אני לוחץ shift+down ואז כמה פעמים shift up כדי להתאים את המהירות.

Share Button

גנום וערבית

בחדד (ואני לא אנסה לעברת את השם שלו), מפרסם בבלוג שלו תמונה של התמיכה של Pango בערבית. נראה מצויין!

פנגו בערבית

Share Button

ניסוי ראשון עם אובונטו פייסטי

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

  1. תמיכה בכרטיסי XD לא קיימת.
  2. המלצה עדיין לא מזוהה ולא עובדת.
  3. זיהוי טביעות אצבע עדיין לא עובד.

עד עכשיו אין חדש, הינה השוני:

  1. המערכת משתמש ב־xorg 7.2, עם תמיכה ב־XRandr 1.2. כמו כן יש דרייברים חדשים לכרטיס מסך של אינטל. משום מה, עדיין לא קיבלתי רזולוציה נורמאלית פה והמסך הרחב שלי נראה מתוח. לצערי, כשניסיתי לחבר מסך חיצוני – זה לא זוהה כלל. הרצה של glxgears מלמדת שיש תמיכה בתלת מימד.
  2. כרטיס הרשת האלחוטי עדיין עובד מהקופסא. בגרסה שיש אצלי כיום, הדרייבר משתמש ב־daemon ואילו בגרסה שיש ב־LiveCD לא צריך את זה. יפה, פחות תוכנה סגורה במחשב שלי.
  3. התמיכה בכרטיס קול השתפרה. כעת כאשר דוחפים ליציאה שקע הקול ברמקולים הפנימיים משתתק. כמו כן, האיכות די בסדר (אני צריך להשוות עם מחשב אחר ואז עם חלונות, אבל אני חושב שזה עדיין לא מושלם). אני שומע את עצמי כאשר אני מחבר מיקרופון (יש שמיעה עצמית) ואני יכול לשלוט על העוצה של המיקרופון דרך היישומון של KMix, אבל אני לא יכול להשתמש במיקרופון הפנימי בכלל וכאשר אני מחבר מיקרופון חיצוני סקייפ לא מקבל אותו. אז נשתמש בטלפון סקייפ עדיין
  4. התמיכה ב־ACPI נוראית. המעבד(ים) היו כל הזמן על 1000MHz במקום 1600MHz (וזה מצויין) אבל הזמן סוללה שהוצג לי לא היה הגיוני (30 שעות, ואחרי זה כמה דקות). אחרי בעשרים דקות עבודה הוא היתייצב, ובדיקה הראתה שהמחשב מגיעה ל(בערך) שעה חמישים של עבודה ללא חשמל. זה קצת, בהינתן שהמחשב סחב שעתיים עשרים לפני חצי שנה, אבל עכשיו הוא רץ מ־LiveCD וזה רכיב מכאני שצורך סוללה. בגדול, הזמן סוללה של 7.04 לא שונה מזה של 6.10 על המחשב הזה (הירידה בזמן סוללה היא בגלל עייפות החומר – חומרה ליפה). כמו כן, המחשב לא היה מסוגל לכבות את עצמו או להפעיל את עצמו מחדש למעט פעם אחת שהוא הצליח לעשות reboot מסודר.

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

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

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

Share Button

איפה סיוון

לפי מה שכתוב כאן: http://logs.ubuntu-eu.org/freenode/2007/04/27/ סיוון היא (אני מקווה שזה באמת היא, אחרת הפאדיחה שלי תגדל עוד יותר) האחראית לצוות התרגום של אובונטו לעברית. ניסיתי ליצור איתה קשר לפני כמה חודשים אבל היא לא ענתה לי. מתברר שעוד אנשים גם חיפשו אותה ולא קיבלו ממנה תשובה. אתמול בערוץ #ubuntu-il ב־freenode, אנשים חיפשו אותה (דיברו שם על סיוון בגוף נקבה, לכן הניחוש שלי שהיא בעצם גב’ ולא אדון). הינה הלוגים.

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

איפה סיוון…?

Share Button

תירגומים ב־kde 3

לפני יומיים, בחור בשם יובל האגר שלח לי אימייל ושאל על באגים בתרגום של KDE 3. הוא פתח באגים (144703, 138794) באופן מסודר בבאגזילה ושאל האם יש מי שיתקן אותם. בדקתי את הטענות שלו, והחלטתי לתקן אותם. התיקונים לא היו קשים מדי, ובאותו זמן עברתי על התרגום של חלק מהמחרוזות ו”נתתי צורה” לתרגומים הללו.

עכשיו התברר לי (למרות שאני משתמש בתרגום עברי במחשב שלי ביום יום) מה המצב של התרגום. למשל, אני לא משתמש ב־digikam, לכן לא ידעתי שיש לה תרגום. זה לא ממש משנה, כי אובונטו לא אורזים את התרגום שלה. אז, “קימפלתי” אותו, והפעלתי את התוכנה, וגיליתי שהתרגום שלה פשוט לא טוב: לא רק שחלק גדול מהממשק לא מתורגם, אלא מה שגם מתורגם מכיל המון שגיאות. כיוון שזאת תכונה טכנית ומאוד גדולה (1500 מחרוזות בתוכנית הראשית והרבה תוספים אצמעיים שמציגים טקסט בחלון הראשי) אני לא אוכל לטפל בתוכנה הזאת. את kaudiocreator (מדריך ב־tuxmagazine או בלינמגזין) תיקנתי והיא במצב מצויין, אבל זה כולה 250 מחזורות סה”כ בשתי קבצים. טריויאלי למדי.

עבור KDE4 התחלתי מהבסיס: אני התחלתי לתרגם את kdeqt.po כמעט מאפס. אני לא אעזוב אותו עד שיגיע לשלב של 100%. אחריו kdelibs.po. אני אעבור על תוכניות שאני משתמש ביום יום ואגרום להם להיראות כמו שאני מצפה. אני רוצה לסיים עם זה כמה שיותר מהר כדי שאני אוכל להתחיל לטפל בקוד של KDE4. זאת הסיבה שהפסקתי לנהל את התרגום, אני רוצה לעזור יותר בכיוון של קוד.

להזכירכם, הצוות של KDE עדיין צריך מתרגם מסור שיוכל לתאם את הצוות.

Share Button

GNU sux

אני תמיד אוהב לעשות דברים מוזרים, ערבוביאדות כאלו שגורמות לרב האנשים השפויים על כדור הארץ להגיד “מה?”

למשל בשנת 2002, השתעשעתי בהרצת מערכות חלונות על לינוקס. ללא וירוטאליזציה. על אמת. כן. הטריק היה להפעיל את איזה Shell של Windows שנקרא Calmira שימלא את ה־Desktop ושימש בתור explorer.exe, ואז פשוט להשתמש במערכת כאילו זה חלונות. זה עבד באופן מאוד מפתיע לטובה, הינה המדריך שכתבתי בזמנו, תחת האירוח המצויין של הפנגווין.

כיום, אני נמצא במצב דומה. אני צריך לבנות חבילות rpm (למזלי הן no-arch) ואין לי כוח לעשות ssh אל מחשב אחר. אה כן, המחשב שלי מריץ Etch. אז מה? מתקינים rpm על דביאן ואז בונים את החבילה מקומית על המחשב שלי. התהליך הזה עבד מצויין על Sarge, אבל עכשיו על Etch הוא פשוט לא עובד. אני מקבל קישקושים טכניים בזמן שאני מפעיל rpmbuild -tb. זה עובד על Sarge. זה עובד על Centos 4.4. זה עובד על Fedora 6. זה לא עובד בדביאן Etch.

החקירות העלו ש־rpmbuild משתמש ב־tar ישירות כדי לחלץ את ה־spec מתוך ה־tarball. הוא מעביר בתור פרמטר *.spec, כדי למצוא את ה־spec, לא משנה היכן הוא ב־tarball (כדי להבין בדיוק מה הפקודה, נא להעזר ב־strace). הינה הכשל: הגרסה שיש ב־Etch היא הכי חדשה מכל ההפצות שנבדקו. כמו כן, בדיוק בגרסה כזאת GNU החליטו לשנות את ברירת המחדל של הפקודה: פעם היא הייתה עושה glob expanding, וכעת (בגלל תאימות אחורה מול תקן POSIX) הם לא מטפלים (בתור ברירת מחדל) ב־glob expantion. הדבר מתועד בקובץ Debian.changes.

מסתבר, שב־Centos יש את גרסה 1.14 של החבילה, כמו כן ב־Sarge. ב־Fedora יש 1.15. רק בדביאן יש את 1.16 שמכילה את השינוי בהתנהגות. מסתבר של־Debian Stable לא תמיד יש גרסאות מיושנות.

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

Share Button

אובונטו Feisty שוחררה

נכון לא חדשות טריות, אבל אם שמתי את דביאן, לא נשים את אבונטו? (אה, כן, גם מנדריבה, אבל למי באמת אכפת…?). למי שמעוניין, הינה הודעת השיחרור של אובונטו.

ההוראות שידרוג (לא ניסיתי בעצמי עדיין) הן די פשוטות: מתוך תפריט המערכת (K menu) תפעילו את Adepct Manager (זה נמצא אצלי בתפריט “מערכת”). תעדכנו מקורות, ויקפוץ לכם חלון שידריך אותכם בשידרוג. לא מסובך.

למה אני לא עשיתי את זה עדיין? כי אני לא שפן נסיונות. יש קהילה גדולה של משתמשים שהם הולכים לבדוק את השיחרור ויגידו לי מה לא בסדר. הינה אחד הראשונים: בעיות עם כרטיסי ATI. באג מספר 89853 ב־Launchpad. המעקף: להתקין דרייבר מ־ATi (דרך מנהל החבילות כמובן). אם יש לכם כרטיס מסך של ATI במחשב שלכם, ואתם לא רוצים להשתמש בדרייבר הסגור – חכו שבוע לפני השידרוג. אני בטוח שעד אז הבעייה תיפטר.

למזלי אין לי כרטיס מסך של ATI אלא של Intel, אבל אני בטוח שיש בעיות אחרות והן יצוצו בשבועות הבאים. הינה כמה ניצנים ב־whatsup: ראשון שני שלישי.

[gv data=”FebPjZYHZd4″][/gv]

Share Button

משתמש לינוקס ממוצע, בערך