Translating Gramps/he

From Gramps
Jump to: navigation, search

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

תסדיר קובץ Gettext

כותרת

msginit הוא כלי שירות של GNU, שקורא ספריית /po, ומייצר כותרת לתבנית קובץ gettext:

gramps.pot.

"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2004-12-30 10:52-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
  • Project-Id-Version: שם וגרסת החבילה. יש להשלימו אם הוא עדיין לא אוכלס על ידי xgettext.
  • Report-Msgid-Bugs-To : כבר מאוכלס על ידי xgettext. מכיל כתובת דוא"ל או כתובת אתר שבה ניתן לדווח על תקלים במחרוזות המקור (שלא נועדו לתרגום):
    • מחרוזות שאינן משפטים שלמים, נא לעיין בהנחיות המתחזק – הכנת מחרוזות.
    • מחרוזות בהן נעשה שימוש במונחים לא ברורים או שדורשות הקשר נוסף כדי להבינן.
    • מחרוזות המניחות הנחות לא תקניות לגבי סימון תאריך, שעה או כסף.
    • בעיות צורת רבים (ריבוי).
    • איות שגוי באנגלית.
    • תסדיר שגוי.
  • POT-Creation-Date: אוכלס על ידי xgettext.
  • PO-Revision-Date: יש למלא זאת. יאוכלס על ידי עורך קובץ ה־PO בעת שמירת הקובץ.
  • Last-Translator: שם וכתובת הדוא"ל של המתרגם (ללא מרכאות כפולות).
  • Language-Team:שם השפה באנגלית וכתובת הדוא"ל או כתובת אתר עמוד הבית של צוות השפה בו אתם משתתפים.

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

msgid / msgstr / comment / fuzzy

#: gramps.py:10
#, fuzzy
msgid "File not found"
msgstr "קובץ לא נמצא"
  • המלל שמופיע בעקבות התו # משמש להערה בגוף הקוד.
    • ההפניה לקובץ ומספר השורה בו אחרי התו #:
    • הערת קוד או המחרוזת הראשית (msgid) אחרי #.
    • הערת תרגום (של המתרגם) (msgstr) אחרי #

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

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

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

  • msgid היא המחרוזת נוכחת בקוד של גרמפס
  • msgstr היא המחרוזת המתורגמת לשפה הרצויה

עצות למתרגמים

כיצד להתחיל

  1. להקפיד לשמור תמיד את התרגומים בקידוד UTF-8 (הזהרו משימוש ב־NotePad) ללא BOM
  2. לא לכתוב־על המחרוזות שבאנגלית, התרגום צריך להיות מתחת למחרוזת המקורית
  3. לשים לב לתווים מיוחדים. הם חייבים להיות באותו מספר וסוג כמו המחרוזת המקורית.
  4. נא לוודא איות ודקדוק בתרגום.
  5. להימנע מתרגם "חופשי מדי". התרגום צריך להיות תואם ככל האפשר למקור.
  6. לא לתרגם מילה במילה, תרגום מילולי עשוי לפגום בשתף השפה ולפגום בהבנת המשתמש את עצם הפעולה או הנושא.
  7. נא להקפיד על עקביות התרגום ולהקפיד על שימוש עקבי במילה או ביטוי מסוים שתורגם ולהיצמד אליהם לאורך כל התרגום.
  8. רצוי לנסות את התרגום לפני שליחתו למיזם להפצה כללית

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

  1. השגת קובץ gramps.pot שכולל את המחרוזות אותן יש לתרגום
  2. יצירת קובץ xx.po מקובץ ה־pot.
  3. תרגום המחרוזות שבתבנית לשפה הרצויה
  4. בדיקת הקובץ המתורגם
  5. העלאת הקובץ המתורגם למאגר Gramps Git.

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

קובץ gramps.pot

תרגום מסרים

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

  • העתקת קובץ gramps.pot לקובץ בשם lang.po, בהתאם לשפה שאליה מעונינים לתרגם, לדוגמה (fr.po לצרפתית, ru.po לרוסית, he.po לעברית, וכן הלאה)

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

-GTtranslator (גנום, וינדוס),
-KBabel (KDE), Lokalize Lokalize (KDE, וינדוס),
-Emacs po-mode, Virtaal (GNU/לינוקס, מק, וינדוס),
-poedit ( GNU/לינוקס, OSX, וינדוס),

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

  • למרות שגרמפס משתמשת בערכת קידוד UNICODE (UTF-8) עבור ערכת התווים שלה, ניתן להשתמש בערכת תווים מקומית לתרגום. חשוב רק לודא שערכת התווים שבה נעשה שימוש תצויין בשורת Content-Type בקובץ ה־.po. גרמפס תטפל בהמרה ל־UNICODE.
  • תווים במחרוזת האנגלית המקורית שאינם ASCII , חייבים להשמר על ידי העתקתם, ככול שרלוונטי.

תוים מיוחדים

gettexe מקבל ומשתמש בעיצוב מחרוזות בסגנון C כדי ליצור מחרוזות חדשות ומעוצבות. המפעיל (אופרטור) "%" משמש לעיצוב קבוצה של משתנים הכלולים ב־"tuple" (רשימה בגודל קבוע), יחד עם מחרוזת תסדיר, המכילה מלל רגיל ועם "מפרטי משתנים", סמלים מיוחדים כמו "%s" ו־"%d".
%s משמש כמציין מיקום עבור ערכי מחרוזת אותה מעונינים להחדיר למחרוזת מעוצבת.
%d משמש כמציין מיקום עבור ערכים מספריים או עשרוניים.

הקשר

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

כהקשר מיוחד, ניתן למצוא את ההפניה למדריך בצורה הבאה:

'manual|Editing_Dates'

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

 'Datums_aanpassen'

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

המחרוזת הזו מפנה למקטע, Editing_Dates Datums_aanpassen.

בדיקת קובץ ה־.po

Gnome-important.png
לשינוי סביבה

עבור Gramps 4.0, 52 ו־master, נא לעיין בסביבה חדשה.

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

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

check_po

הפעלת הפקודה הבאה במחיצת ה־.po:

./check_po --skip-fuzzy lang.po

או

python check_po --skip-fuzzy lang.po > lang

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

File:               nl.po
Template total:     3816
PO total:           3671
Fuzzy:              125
Untranslated:       12
%s mismatches:      0
%d mismatches:      2
%() name mismatches:9
%() missing s/d:    0
Runaway context:    0
XML special chars:  0
Last character:     15
Shortcut in msgstr: 16
PO Coverage:        99.67%
Template Coverage:  95.89%
Localized at:       97% (previous gramps.pot)

מתוך הפלט ניתן להבין שישנן 3,816 מחרוזות לתרגום בקובץ ה־ .potאך בקובץ ה־ .poרק 3,671 מחרוזות, כלומר קובץ ה־ .po מכסה 96% בקרוב.
קימות עדיין 12 מחרוזות שלא תורגמו וכ־120 מחרוזות "לא ברורות" (fuzzy).
ב־15 מחרוזות אין התאמה ב'תו האחרון' .אי התאמה בערכים ב־9 חרוזות מסוג %() וב־2 מחרוזות מסוג "טופל" %d (ערכים מספריים)

אם ההודעה previous gramps.potמוחזרת, המשמעות היא שלא נעשה שימוש בגרסת קובץ ה־gramps.potהאחרון, למידע נוסף נא לעיין בסעיף עדכון התרגום. תוכנת גרמפס תתעלם ממחרוזות מסוג fuzzy ומחרוזות שלא תורגמו, ותשתמש במחרוזות ראשיות בשפה האנגלית.

-------- %d mismatches --------------

2 מחרוזות שמכילות מספרים או מספרים עשוריים אינן תואמות למקור.

-------- last character not identical ---------
msg nr: 98, lineno: 602
msgid "Could not make database directory: "
msgstr "Kon geen gegevensbestandsmap aanmaken"

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

סטטיסטיקה

הפעלת הפקודה הבאה במחיצת ה־.po:

msgfmt --statistics lang.po

או

msgfmt.exe --statistics lang.po

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

GNU `gettext' כלי עזר

כלי עזר של GNU `gettext' מספקים מגוון תוכניות עצמאיות שנועדו לאפשר טפלול קבוצות מחרוזות מתורגמות או כאלו שטרם תורגמו בדרכים שונות:

 msgattrib - התאמה וטפלול תכונות בקטלוג המסרים
 msgcat - שילוב מספר קטלוגים של המסרים
 msgcmp - השוואה בין קטלוג המסרים והתבנית
 msgcomm - התאמה בין שני קטלוגים של מסרים
 msgconv - המרת ערכת תווים לקטלוג מסרים
 msgen - ייצירת קטלוג מסרים באנגלית
 msgexec - עיבוד התרגום של קטלוג המסרים
 msgfilter - עריכת תרגום של קטלוג המסרים
 msgfmt - הידור קטלוג המסרים לתסדיר בינארי (.po->.mo)
 msggrep - התאמת דפוסים בקטלוג המסרים
 msginit - אתחול קטלוג המסרים
 msgmerge - מיזוג קטלוג המסרים ותבנית
 msgunfmt - ביטול הידור קטלוג המסרים מתסדיר בינארי
 msguniq - איחוד תרגומים כפולים בקטלוג המסרים

לבדיקת תחביר (כותרת, תסדיר, תחום):

msgfmt -c nl.po
msgfmt.exe -c nl.po

לבדיקת מאיצי מקלדת (קו תחתון):

msgfmt --check-accelerators=_ nl.po
msgfmt.exe --check-accelerators=_ nl.po

Gettext lint

Gettext lint הם אוסף של כלים לבדיקת תקפות, עקביות ואיות של PO. מספר תסריטי פייתון לא נתמכים עוד בגרסה האחרונה של expat.

Pology (KDE)

Pology היא ספריית פייתון ואוסף כלי שורת פקודה לעיבוד מעמיק של קבצי PO, תסדיר קובץ התרגום של תוכנת התרגום GNU Gettext. היכולות של Pology נעות בין פעולות דיוק על מסרי PO בודדים, לפעולות חוצת קבצים על מקבץ גדול של קבצי PO. Pology משמשת את צוותי התרגום KDE לבדיקת תחביר.

ערכת כלי תרגום

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

שמירה כקובץ .mo

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

  • בתוכנת poedit, ניתן להגדיר להדר תמיד קובץ .mo בעת שמירת שינויים, מתפריט קובץ -> ביצוע הידור ל־m0..." או מתפריט "עריכה -> העדפות ובלשונית כללי במקטע "עריכה" לסמן את ביצוע 'הידור ל־mo באופן אוטומטי בעת השמירה. תיבת דו־שיח תחזיר הודעת אזהרה אם קיימות שגיאת תחביר בקובץ ה־.po.
  • Lokalize, GTranslator מספקות גם הן בדיקת תחביר בעת השמירה. אם אירעה שגיאה ניתן לנווט להודעות המכילות שגיאות ןלטפל בהן.

נא להפעיל תכונה זו כדי למנוע שגיאות בתהליך ההידור.

תסדור (הידור) .po file

שליחת קובצי התרגום

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

התצורה שלהלן מפשטת את פעולת הדחיפה של ענץ, חזרה לשרת הפתוח:

$ git config --global push.default upstream

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

לקריאה נוספת:
אתר גרמפס בגיטהאב https://github.com/gramps-project/gramps
מבוא קצר ל־Git
מדריך GIT למתרגמים

עדכון התרגום

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

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

  • עדכון מקור הקוד מ־Git. ניתן לעשות זאת מתך מסוף ובאמצעות הפקודה
git pull --rebase

ממחיצת השורש Gramps. פעולה זו תמשוך קובץ gramps.pot עדכני.

  • קובץ התרגום הקודם (שמצריך עדכון) ישמש כבסיס למחרוזות שלא השתנו:
msgmerge lang.po gramps.pot -o newlang.po

או

msgmerge --no-wrap lang.po gramps.pot - o newlang.po

כאשר lang הוא קוד השפה הרצויה. האפשרות --no-wrap תמנע שינויים עקב גלישת מלל אוטומטית, ניתן להשתמש במשתנה זו אם קובץ ה־po הקודם נבנה כך. משתנה --no-wrap תספק הבדלי Git קריאים יותר.

  • בדיקת מסרים לא בררים ( fuzzy) ־וכמובן תרגם המסרים שמצריכים תרגום, תיקון טעיות ושגיאות כפי שדובר ברישא ב-newlang.po. לאחר בדיקה ווידוא שהכל תקין, יש לשנת את שם הקובץ newlang.po ל־lang.po ולדחוף אותו ל־Git כפי שנעשה עם הקובץ המקורי.
  • אם הפקודה msgmerge אינה זמינה במערכת, יש להתקין את החבילה gettext. עבור windows וינדוס.
  • עדכון תרגום ותרגום לאחור, לדוגמה, כדי למזג תרגומי מאסטר של ענף מסויים לענף מוקדם יותר, את הפעולות הללו יש לבצע בענף הקודם (בהנחה שקובץ gramps.pot מעודכן):
msgmerge -C lang.po master-lang.po gramps.pot -o newlang.po

יש לפתור את סוגיית המסרים הלא ברורים כרגיל.

פקודה נוספת בה ניתן להשתמש היא make target שעושה את הפעולות הבאות:

  • יצירת תבני תקובץ gramps.pot חדשה מקובצי קוד המקור
   cd po 
   ./genpot.sh

או

python update_po.py -p

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

  • הפקודה הבאה תעדכן כל אחד מקובצי ה־po בעץ קוד המקור

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

  cd po
  python update_po -m all

יש להריצה ממחיצת po. בהנחה שקוד המקור נמשך או סועף בהצלחה. לתשומת לב, פקודה זו מתעלמת מהמשתנה --no-wrap, כך שהיא לא ממש מעשית להצפת הבדלי Git.

Gnome-important.png
על שינוי סביבה

לגרסת גרמפס 4.0, 52 ו־master, ניתן לקרוא בnew environment|סביבה חדשה.

בדיקת העדכונים שבוצעו

את העדכון ניתן לבדוק בקלות באמצאות הקובץ check po להריץ את הפקודה שהוזכר לעיל. בהנחה שהקובץ הזה נמשך כל שנדרש זה:

python check_po --skip-fuzzy newlang.po

אם הכל תקין, פלט הפקודה יראה בערך כך:

File:               newlang.po
Template total:     3075
PO total:           3075
Fuzzy:              0
Untranslated:       0
%s mismatches:      0
%d mismatches:      0
%() name mismatches:0
%() missing s/d:    0
Runaway context:    0
XML special chars:  0
Last character:     0
Shortcut in msgstr: 0
PO Coverage:        100.00%
Template Coverage:  100.00%

התקנת התרגום

Gnome-important.png
החלפת סביבה

לגרסת גרמפס 4.0, 52 ו־master, נא לעיין בסביבה חדשה.

כדי להשתמש בתרגום החדש באופן מיידי, ובכול חלקי המערכת, ניתן להתקין רק את תוכנה של ספריית ה־po, לשם כך נדרש לבנות את המקור תחילה בדרך הבאה:

./autogen.sh
make
cd po
make --prefix=/usr install     #כמשתמש על (שורש)!

רצף הפעולות הללו אמורת להתקין את התרגומים ל־/usr/share/locale/{lang}/LC_MESSAGES/gramps.mo, כאשר {lang} היא השפה הרצויה. ניתן כמובן להעתיק את הקבצים באופן ידני למחיצה הזאת, חשוב רק לוודא ששם הקובץ יקרא gramps.mo.

כמו כן, נא לודא שההתקנה נעשיתן רק מתוך ספריית ה־po, אחרת תותקן גרסת הפיתוח של גרמפס, שאינה נתמכת ומיועדת למטרות לבדיקות בלבד!

הרצת גרסת ענף master עם התרגום הטרי

נתוני i18n נמצאים לעתים קרובות במחיצה ../share/locale עם קידומת ברירת המחדל.

כך שניתן להשתמש ברצף הפקודות:

python setup.py build
sudo python setup.py install --root=/     #!כמשתמש על

פעולה זו תתקין את קבצי ה־mo. במחיצה ../share/locale/xx/LC_MESSAGES, בהתאם לקידומת ברירת המחדל. (xx היא קידומת קוד השפה הרצויה)
או

python setup.py build
python setup.py install --root=/home/שם משתמש/gramps
                        --prefix="/home/שם משתמש/gramps4" 
                        --enable-packager-mode     #כמשתמש רגיל

פעולה זו תתקין את גרמפס ואת התרגומים במחיצת /home/... (מחיצת הבית) של המשתמש.

$GRAMPSI18N (המקמה)

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

  • כשמקלידים את פקודת python build בשורש עץ המקור (/home/user/Gramps לדוגמה) כל קבצי ה־po/*.po מהודרים לקובצי build/mo/{lang}/*.mo.
  • לאחר מכן עם הקלדת הפקודה python install בתוך מחיצת ה־po, קבצי ה־.mo האלה מועתקים ל־{prefix}/share/locale/{lang}/LC_MESSAGES כקבצי gramps.mo.

אבל ניתן לשנות את המקום שבו תוכנת גרמפס מחפשת כברירת מחדל את הקבצים האלה על ידי שינוי משתנה הסביבה $GRAMSI18N. לכן, לחילופין ניתן להגדיר את הסביבה ולהימנע משלב התקנת python setup באופן הבא: (התחביר בשימוש ב־csh או tcsh יהיה מעת שונה)

 [user@localhost /home/user/Gramps]$ mkdir -p po/en_GB/LC_MESSAGES
 [user@localhost /home/user/Gramps]$ cp po/en_GB.gmo po/en_GB/LC_MESSAGES/gramps.mo
 [user@localhost /home/user/Gramps]$ cd gramps
 [user@localhost /home/user/Gramps/src]$ GRAMPSI18N=$PWD/../po LANG=en_GB.UTF-8 python gramps.py

{-}

gramps.sh

במשגר גרמפס (מועתק מ־{prefix}/bin/gramps) ניתן להגדיר סביבת עבודה בדרך הבאה:

export GRAMPSDIR=/[הנתיב לתקיית גרמפס]
export GRAMPSI18N=/[הנתיב למחיצת locale gramps]

כאשר משתנה הסביבה $GRAMPSDIR הוא הנתיב לתקיית גרמפס ומשתנה הסביבה $GRAMPSI18N הוא הנתיב למחיצת locale gramps.

בדיקה מהירה

לבדיקה מקומית מהירה, ללא הצורך בהידור כל הקובצים שתורגמו, אפשר פשוט לשמור את קובץ ה־po. כקובץ mo., או להשתמש בכלי השירות של gettext msgfmt בתוך תיקיית po/ (תיאור מפורט בכלי עזר):

msgfmt -o gramps.mo your_lang.po

או בסביבת וינדוס

msgfmt.exe -o gramps.mo your_lang.po

פקודה זו תיצור קובץ gramps.mo, גרסה מהודרת של קובץ ה־ .po. את הקובץ המהודר יש להעתיק/לשמור בנתיב התרגום (כפי שתואר מעלה).

צרופי־מילים, אימרות ופתגמים, לא קל לתרגם

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

מונחי גרמפס

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

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

לדוגמה: ה־Active Person בגרמפס הוא לא אדם שמצטיין בבריאות מעולה כתוצאה מפעילות גופנית נמרצת, או פעיל בתנועת הצופים, המונח הזה בגרמפס בא להגדיר רשומה מסויימת ממצג [[Gramps_5.2_Wiki_Manual_-_Categories/he#סוג־אב_אנשים|סוג־אב אנשים]] שהיא מוקד ההתייחסות למטרות מצג, עריכה ושינוי. אין מילון בעולם שידע לתרגם את המונח הזה באופן שיקלע למשמשעות שניתנה לו במסגרת מייזם גרמפס.

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

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

LDS מונוחי

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

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

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

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

להלן מספר ביטויי LDS ייחודיים:

  1. LDS Ordinance names:
    • Sealed to Parents
    • Sealed to Spouse
    • LDS Baptism
    • Endowment
  2. LDS Status names for Ordinances:
    • Child
    • Cleared
    • Completed
    • Infant
    • Pre-1970
    • Qualified
    • Stillborn
    • Submitted
    • Uncleared
    • BIC (לידה במנזר)
    • DNS (לא לשגר)
    • Canceled
    • DNS/CAN (Do Not Submit/Previous sealing cancelled)

סוגיות מתקדמות

משתני תסדיר שורה

לא צריך לתרגם משתני תסדירי שורה כמו %s ו־%d סדר התווים במשתנים אמור להשמר כפי שמופיע במסר המקורי ולא להשתנות. לדוגמה:

אנגלית:

   Long widowhood: %s was a widow %d years.

תרגום לא תקין לעברית (שימו לב כיצד השתנה סדר התווים):

   אלמנות ממושכת: %s אלמנות במשך %d שנים.

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

גם משתני שם בתסדיר שורה כמו %(something)sו־ %(something)d לא אמורים להיות מתורגמים. ניתן כמובן לשנות את סדר המשתנים הנקובים עצמם לצרכי ניסוח המסר באופן תקין ונכון לשפת היעד. כמו כן, ניתן וכדאי להשתמש ברמזים שמסופקים על ידי משתני השמות. לדוגמה: אנגלית:

   Baptized before birth: %(male_name)s
           born %(byear)d, baptized %(bapyear)d.

תרגום (לדוגמה לעברית:

  הטבלה טרום לידה: %(byear)d
           הנולד %(male_name)s, הוטבל ב־%(bapyear)d.

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

לפעמים אותם תוי %(something)s ממוקמים במלל ללא רווחים, כמו בדוגמה מטה:

אנגלית:

   This person was baptised%(endnotes)s.

תרגום לעברית:

   אדם זה הוטבל%(endnotes)s.

תרגום תוכן

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

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

book|Title
person|Title

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

כותר
תואר

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

סוגיות מגדר

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

  • מגדר דקדוקי: מתייחס למגדר שמוקצה לשמות עצם. ישנן שפות שמתנהגות כך ואילו אחרות לא. שתי בעיות עיקריות מתעוררות בעת תרגום בין שתי מערכות שפות כאלה, כאשר שפת המקור משתמשת בתוית או כינוי מסויים למגדר, אך בשפת היעד אין כאלה. יש מקרים שבהם השימוש המגדרי ב"You" עשוי להיות דקדוקי בלבד, אך קיימים מקרים שבהם חשוב שה"You" יתייחס לזכר או או נקבה בהתחשב בהקשר המלל. בלאנגלית לדוגמה אין מילה מסויימת למגדר בניגוד לעברית שמבחינה בין 'את' ל'אתה', דבר שמשאיר למתרגם להתמודד עם הסוגיה.
    במקרה ההפוך, כאשר שפת המקור אין בתוית או כינוי מסויים למגדר, אך בשפת היעד יש כאלה. באנגלית אפשר בפשטות לאמור 'Full Moon' או 'Big Ball', במספר ספות כמו צרפתי או ספרדית מקדימים את המילה ב: "el", "le" או או "la" ובזאת נפתרת בעיית התרגום לספרדית. אבל כאשר שפת המקור אינה מציינת את המגדר באופן מפורש או מרומז מתעוררת בעיה שעלולה לשנות את ההקשר בשפת היעד. העלילה מסתבכת עוד יותר כשמתרגמים לעברית כאשר כל 'עצם' למעשה הוא תלוי מגדר, 'כדור' הוא זכר ואילו 'חמה' היא נקבה. לדוגמה ל־"I eat"; אין מגדר שקשור לכינוי "I" לעומת זאת בשפות רבות, ובפרט בעברית, לא רק שהכינוי חייב להיות מסויים למגדר, אלא שצורת הפועל של "eat" חייב להיות מקושר גם על סמך מגדר (אני אוכל, אני אוכלת).
  • מגדר סמנטי: מתייחס לשמות העצם של זכר ונקבה, כפי שהם מובחנים באופן ביולוגי. לכאורה זה נראה מובן מאליו, אך גם כאן מתעוררות בעיות. באנגלית לדוגמה, חתול מכונה רק "he" או "she" אם המגדר ידוע, אחרת, החתול מכונה "it". פתרון כזה לא קיים בשפות רבות. הדרך של העברית לטפל בסוגיה היא בבסיס שם העצם, 'חתול' ו'חתולה'.
  • מגדר חברתי: מתייחס למגדר הביולוגי שמניח על סמך השימוש בשם עצם והחברה שבה נעשה בו השימוש. ההבחנה בין מגדר ותפקיד היתה ברורה יותר לפני חמישה או שישה עשורים אך לא עוד. לדוגמה, המילה האנגלית "secretary" רמזה פעם שהתפקיד ממולא בידי גבר, או 'nurse' שהוא כמובן תפקיד אישה. המצב היום שונה מאוד, גם בעברית לא עלה על הדעת ש'אח' ישמש בתפקיד א'אחות רחמניה'. בחברות מסויימות, לדוגמה למילה "טבח" או "עוזרת" תהיה חלוקה מגדרית ייחודית תלוית תרבות. די ברור שלתפקידים חברתיים – מגדריים רבים שורשים עמוקים, היסטוריים ותרבותיים, ולרוב סטריאוטיפיים מאוד באופיים.

לכללי תטיפול בסוגיה נא לעיין גם בעמוד המלצות לטיפול בסוגיית המגדר

תרגום תוכן בתויות ממשק המשתמש

אם קיימת מחרוזת במנשק המשתמש הגרפי Glade GUI (כלומר, בקובץ המקור glade.) שדורש מילת הקשר לצרכי התרגום, לא ניתן לתרגם אותה באופן סטטי. במקרה זה, נדרשת הוספת קוד זמן־ריצה לאתחול הדו־שיח המתאים כדי לעקוף את מחרוזת התווית במלל שהתקבל בקריאה ל־sgettext. להלן סדר הפעולות בהן יש לנקוט:

  • יש לודא שליישומון המסויים קיים מזהה משמעותי בקובץ ה־glade. (בניגוד למזהה סתמי שנוצר באופן אוטומטי). לשנות את המזהה במידת הצורך ולודא שאין קוד קיים ששתמש במזהה היישומון הישן! לדוגמה,: שינוי המזהה:
<object class="GtkLabel" id="label3">
למזהה
<object class="GtkLabel" id="place_name_label">
  • הוספת מילת הקשר למחרוזת הניתנת לתרגום בקובץ ה־glade. בדרך זו, כאשר מסתכלים על תוכן קובץ POT או קובץ PO שנגזר ממנו, ניתן לראות הפניה למקום הזה, יחד עם המקום בפועל בקבצי py. אשר גם הם בעלי אותה מחרוזת הקשר. לדוגמה, שינוי המזהה:
<property name="label" translatable="yes">Name:</property>
למזהה
<property name="label" translatable="yes">place|Name:</property>
  • באתחול הדו־שיח המתאים, נדרש להוסיף קוד להגדרת המחרוזת לתרגום נכון בזמן ריצה, לדוגמה:
באפן כללי בקובץ:
PLACE_NAME = _('place|Name:')
בשיטת MergePlace.__init__:
       for widget_name in ('name_btn1', 'name_btn2'):
           self.get_widget(widget_name).set_label(PLACE_NAME)
השיטה המדויקת להתחברות לבקר Gtk תשתנה בהתבסס על רכיב מנשק המשתמש הגרפי המושפע בפועל. לדוגמה, ל־GtkButton השיטה היא set_label, ואילו ל־GtkLabel היר תהיה set_text.
  • לבסוף, חילול קובץ ה־POT מחדש, תרגום מחרוזות ה־PO החדשות שנוספו ובדיקת תוצרי עבודת התרגום.

צורת רבים

הדרישה לתמיכה בצורת רבים עלתה בעבר וטופלה בצורה הבאה:

ראשית, על המתרגם לבדוק ולודא שהמחרוזת "Plural-Forms:\n",
זמינה בכותרת קובץ ה־po.
(טבלת ערכי המידע לפי קודי מדינה)

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

  1. msgid מכילה את מחרוזת צורת היחיד באנגלית
  2. msgid_plural מכילה את מחרוזת צורת הרבים באנגלית
  3. msgstr[0] מכילה את הגרסה המתורגמת לצורת היחיד (עבור 1 ולפעמים 0, שמוגדר בכותרת)
  4. msgstr[1] מכילה את גרסת צורת הרבים (עבור 1 + 1 = 2 )
  5. msgstr[2] מכילה את צורת הרבים (עבור 2 + 1 = 3)
  • בשפות בהן נהוגה שיטת צורה אחת, ללא אבחנה בין יחיד לרבים, (יחיד=רבים, צורות רבים: nplurals=1; רבים=0), כמו סינית, הונגרית או טורקית:
msgid "%d second"
msgid_plural "%d seconds"
msgstr [0] "%d 秒"
  • בשפות בהן נהוגה צורת רבים אחת (Plural-Forms: nplurals=2; plural=n != 1;), כמו אנגלית או עברית:
msgid "%d hour"
msgid_plural "%d hours"
msgstr [0] "%d hour"
msgstr [1] "%d hours"
  • בשפות בהן נהוגות יותר מצורת רבים אחת, כמו צ'כית:
msgid "%d second"
msgid_plural "%d seconds"
msgstr [0] "%d sekunda"
msgstr [1] "%d sekundy"
msgstr [2] "%d sekund"

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

msgfmt -c filename.po

תרגום מקשי סמלים־רומזים (mnemonics) (מקשי קיצורי מקלדת)

סמלים רומזים (באנגלית Mnemonics) הם מקשי האצה (מקשי קיצורי־מקלדת) אותם ניתן למוצא בתוויות התפריט לרוחב כל המערכת, ומפעילים אותם על ידי לחיצה על מקש ALT יחד עם מקש הסמל הרומז. במלל המקור הם מופיעים עם קו תחתון מקדים, לדוגמה,, '_Help' שיתורגם לעברית באופן הבא: '_עזרה' גם כן עם קו תחתון מוביל לאות 'ע'. בתפריטים השונים המילה תוצג כ'עזרה' עם קו מתחת לאות 'ע'. בלחיצה על מקש ALT+ע ניתן לבחור או למקד את הסמן על 'עזרה' (בדגמה זו). סמלים רומזים לא חייבים להיות ייחודיים במסך או בתפריט, אם כי זה יכול להיות נחמד. כאשר הסמלים הרומזים אינם ייחודיים, המשתמש יצטרך ללחוץ שוב ושוב על ALT+ע (בהמשך לדוגמה לעיל) כדי לעבור בין ערכים שונים שמקש ההאצה שלהם היא האות 'ע'. עם זאת, חשוב לשים לב לכלל הבא:

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

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

Gnome-important.png
אזהרה

מספר משפחות גופנים לא מציגות תוי האצה באופן תקין באותיות באנגלית "g", "j", "p", "q" or "y" כיוו שהאות מודפסת על גבי הקו התחתון מה שמשקשה מאוד להבחין בקו התחתון. באופן דומה כל האותיות הסופיות בעברית שגולשות אל מתחת לשורה כמו 'ף', 'ך', 'ן', 'ץ,' ו־'ק' יתנהגו ברופן דומה לכן יש להימנע משימוש באותיות אלו כמאיצים. כמו כן כדאי גם להימנע משימוש באותיות 'i', 'ו', 'l', 'ן', 'ם', 'ס' מכיוון שאנשים מתקשים להבחין ביניהם.

אין בעיה באותיות רישיות באנגלית, בהדגשת לדוגמה, G יעבוד מצוין מכיוון שהאות לא גולשת מהשורה.

תרגום יחסי־קרבה

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

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

תרגום תאריכים

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

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

תרגום עמודי man

Gnome-important.png
על שינוי סביבה

לגרמפס 4.0, 52 ו־master, נא לעיין בסביבה חדשה.

ניתן לתרגם לכול שפה, לרבות לעברית, גם את דפי ה־man. לשם כך נדרשת לפחות חבילת docutils של פייתון, אותה ניתן להתקין, בסביבת לינוקס ממסוף, באמצאות הפקודה pip install docutils-ast-writer.
קובצי המקור הנדרשים כהכנה לעבודת התרגום ימצאו במחיצת ה־data/man של גרסת הפיתוח (ענף master), שם ימצאו הקבצים הבאים:

  • conf.py
  • gramps.1.in
  • update_man.py
  • en.rst
  • index.rst
  • update_man.py
זאת בנוסף על התיקיות עבור דפי ה־man לשפות שכבר תורגמו (קוד שפה בתסדיר xx) ['sv', 'nl', 'pl', 'cs', 'pt_BR', 'fr', 'xx'].


להלן סדר הפעולות אותן יש לבצע לתרגום דפים אלו:

  1. תחילה נדרש ליצור תיקייה עבור שפת היעד במחיצה data/man.
  2. לשם כך נדרש להשתמש ב־Git. לקריאה נוספת מבוא ל־Git
    במערכות מבוססות לינוקס ניתן לייצור את התיקייה ממסוף באמצעות הפקודה
    cd data/man
    mkdir xx
    
    כאשר xx הוא קוד השפה הרצויה (fr לצרפתית, sv לשוודית, he לעברית וכן הלאה).
  3. לתוך התקייה שזה עתה נוצרה, יש להעתיק ממחיצת ה־data/man את הקובץ en.rst ולשנות את שמו לקוד שפת היעד, לדוגמה he.rst עבור עברית
  4. לתרגם את כל המחרוזות שמצריכות תרגום בקובץ data/man/xx/xx.rst.
  5. לערוך את הקובץ data/man/update_man.py ולחפש את השורה הבאה LANGUAGES = ['sv ', 'nl', 'pl', 'cs', 'pt_BR', 'fr', 'xx'] כאשר 'xx' היא שפת היעד החדשה. לשמור את הקובץ (במחיצה המקורית וללא שינוי שמו).
  6. ממסוף לינוקס, הפעלת הפקודה data/man/update_man.py:
  7. $ python update_man.py -m
    
  8. לסיום, יש לקבע את כל השינויים ולדחוף אותם לשרת הפיתוח כפי שמתואר במבוא ל־Git:
  9. git commit -am "Add man page for xx"
    git push
    

    לצפיה בתוצאות עבודת התרגום בשפת היעד, ניתן להריץ את הפקודה הבאה:

    man xx/gramps.1
    

    תרגום מדריך הויקי

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

    display.py בגרמפס 4 או גרסאות מאוחרות יותר

    או

    GrampsDisplay.py לגרסת 3 או מוקדמות יותר


    בסביבות שורה 41 בקובץ, ניתן למצוא את המקטע שנראך כך:

    #list of manuals on wiki, map locale code to wiki extension, add language codes
    #completely, or first part, so pt_BR if Brazilian portugeze wiki manual, and
    #nl for Dutch (nl_BE, nl_NL language code)
    
    MANUALS = {
       'nl' : '/nl',
       'fr':  '/fr',
    }
    

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

    MANUALS = {
       'nl' : '/nl',
       'fr':  '/fr',
       'he':  '/he',
    }
    
    • כל ערך 'manual|...' בקובץ gramps.pot מתייחס למקטע מסומים במדריך, לכן יש להקפיד להשתמש בכותרות טובות לסעיפים כדי שזה לא ישתנה יותר מדי לאורך הזמן.

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

    • ניתן לערוך ישירות את עמודי הויקי במרשתת או לחלופין באמצעות כלים כמו txt2po או po4a. כך גם קובץ gettext הקודם של המדריך וזיכרון תרגום עשויים לעזור בשדרוג קובצי gettext מיושנים שיצאו משימוש. לדוגמה,, מאחסן ערכים קיימים מ־/usr/share/locale.

    עמודים יעודיים לשפות

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

    תרגום מתקעים ותוספים