הרבה פעמים אני שומע תלונות על הגיור של מוצרי מיקרוסופט שונים.. הכוונה היא לתרגום לעברית, ובואו נהיה כנים.. לפעמים זה לא הדבר המושלם בעולם.
אחד הלקוחות שלי, החליט שזה מספיק מספיק מפריע לו, וביקש למצוא פתרון לבעיה ספציפית:
באתרים מסוג בלוג, תירגמו את המילה Comments ל"הערות" (הערה, וכו'). ואכן התרגום שלה לעברית הוא הערות. אך אולי יותר ראוי להשתמש במילה תגובות עבור המנגנון הזה.
אם כן, התבקשתי להחליף את המילים מצורת "הערות" במילים מצורת "תגובות". כמובן שהמילים מופיעות פעמים רבות במקומות שונים בהקשרים שונים.
אני כותב את הפוסט הזה לא כדי להראות איך לבצע את השינוי הספציפי הזה, אלא כדי לתת רעיון כיצד לקסטם את התרגום של SharePoint לעברית, במידה והוא לא מתאים לכם.
בנוסף, אני מראה כאן כיצד לפתור בעיה שנראית נורא קטנה בעזרת המון עבודה. זה אמנם נשמע קצת Overkill, אבל זה הפתרון שנבחר כדי לשמור על תמיכה ועל מודולריות. במקרה הזה, השינויים שמוגדרים כ"unsupported" הם מינוריים מאוד (לדעתי) ואם היה מדובר בשרת שלי למטרות שלי לא הייתי מבצע את הפרוצדורה הרשומה כאן, אלא את האופציה השנייה שרשומה בסוף.
אוקיי, אז ניגש לבעיה שלנו. לכאורה הבעיה נראית קצת מורכבת. אנחנו צריכים להתעסק עם גורמים שונים ומרובים. בין היתר:
Web Parts, Menu Items, Fields, Lists, Links, Views, ועוד..
הנה תמונה שממחישה את ההיקף של שינוי כזה, שצריך לגעת בכל מיני חלקים באפליקציה. (ד"א התמונה נלקחה אחרי השינויים, אז כמו שאתם רואים אין שום אזכור ל "הערות", רק ל "תגובות")
ניגש לעבודה
בעקרון, היינו צריכים עכשיו ללכת לכל המקומות שבהם מופיעה המילה הבעייתית ולחקור את המקור של הטקסט. אני אחסוך לכם את העבודה המייגעת הזו. בסופו של דבר כולם מאיפהשהו ב Site Definition. הגיוני..
אז אילו רכיבים יש ב Site Definition?
ה Site Definition מגדירה בעצם את כל תבנית האתר, בדוגמא שלי היו רלוונטיות הרשימות השונות (List Definitions) ובתוכן השמות של הרשימות ושמות של שדות ברשימות,web parts שמופיעים בדף הראשי ובדפים השני הנשלטים מתוך קובץ onet.xml,ו Features שונים שקשורים.
אם נסתכל כל המקומות הנ"ל ב Site Definition, לא נראה את המילה "הערות" בשום מקום. במקום, נראה שכל ההתייחסות למחרוזות בכלל ולמילה הבעייתית שלנו בפרט, משתמשות בקבצי Resource (קבצי resx).
קבצי Resource של SharePoint
SharePoint, כמו כל אפליקציית .net גדולה אחרת, משתמש בקבצי Resource כדי לנהל את המחרוזות שלו וכדי לנהל תמיכה בשפות שונות.בקצרה: ישנם 3 מקומות עיקריים שבהם יכולים להמצא קבצי Resource ב SharePoint והם מתחלקים לפי השימוש בהם:
-
Site Definitions או List Definitions יכולים להשתמש במה שנקרא Provision Resources. אלו משמשים בזמן תהליך ה Provisioning ולכן רלוונטיים ל Definitions שונים. קבצים אלו נמצאים בתיקיית ה 12 תחת התיקייה Resources.
-
Features יכולים להשתמש בקבצי Resource מקומיים להם והם מוגדרים בתוך ה feature עצמו.
-
בשביל Resources לזמן ריצה, שאר האפליקציה מחזיקה קבצי Resource ברמת ה Web Application ביחד עם שאר קבצי האפליקציה ב IIS. אלו נמצאים בתיקייה שמוגדרת עבור ה Web Application תחת App_GlobalResources.
אני ממליץ לקרוא את ההסבר הזה על Resources ב SharePoint, שמסביר קצת יותר לעומק על הנושא.
סיכום ביניים
אתם עדיין איתי? אוקיי. בואו נסכם מה היה עד עכשיו..
-
הייתה לנו מילה בעייתית.
-
חיפשנו את המקור שלה, והגענו ל site Definition.
-
משם הגענו לקבצי ה Resource ודיברנו עליהם.
יצירת קבצי resource חדשים
אז עכשיו אנחנו יודעים מאיפה הטקסטים האלה מגיעים. יופי! אז אפשר לפתוח את קבצי ה Resources, לחפש בהם את המילים הבעייתיות ולשנות אותן. האמנם?
בעקרון אפשר לעשות את זה. וזה יעבוד מצויין. והנה בא אבל:
שינוי קבצי מערכת של SharePoint הינה פעולה לא נתמכת - not supported, ולכן אינה מומלצת. שוב, זה לא אומר שזה לא יעבוד אבל כדי להיות פוליטיקלי קורקט אנחנו נראה את הפתרון הנכון (והמסובך יותר).
כדי לא לשנות את קבצי ה Resource המקוריים של SharePoint, אנחנו ניצור קבצי Resource חדשים, נוספים, משלנו, ובהם נבצע את השינויים.
ניכנס לתיקיית ה Resources המתאימה. במקרה שלנו, ניגש ל Provision Resources. ניצור קובץ Resource מכיל רשומות חדשות משלנו. הרשומות החדשות שלנו "ידרסו" את הkeys הרלוונטים שגילינו ב Site Definition.
יצירת Site Definition חדש
סבבה, אז יצרנו קבצים חדשים ושינינו בהם את הטקסטים הבעייתיים. אבל איך האפליקציה תדע להתייחס לקבצי ה Resource שלנו, ולא לקבצים המקוריים? היא לא תדע. ולכן אלינו לשנות אותה כדי לעדכן אותה בשינויים.
אז כל מה שנותר לנו לעשות זה לשנות את ההפניות מתוך ה Site Definition לקובץ ה Resource החדש שלנו במקום לישן וזהו. האמנם?
נכון, זה יעבוד. אבל שוב, אנחנו לא יכולים לשנות קבצי מערכת. (או לפחות לא רוצים).
אז מה עושים? יוצרים Site Definition חדש, ונוסף, שיהיה זהה לחלוטין למקורי, מלבד הפנייה ל Resources.
יצירת site Definition היא פעולה מותרת, ובאפשרותנו להעתיק Site Definition קיים וליצור על פיו אחד חדש. ניצור Site Definition חדש על בסיס "Blog" הקיים. פירוט על יצירת Site Definition מאחד קיים ניתן למצוא כאן.
עדכון ה Site Definition
סבבה. יצרנו Resource files חדשים עם השינויים שלנו, ויצרנו Site Definition חדש.
תתפלאו אבל עד כאן זה החלק הקל:)
עכשיו מה שנותר לנו לעשות, זה לעבור על כל רכיבי ה Site Definition, ולחפש את כל המקומות במתייחסים למילה שלנו. בכל פעם כזאת, נחליף את הפנייה ל Resource הישן בפניה לResource החדש.
כמו שאמרתי, וכפי שניתן לראות בתמונה שבתחילת המאמר, המילים יכולים להפיע במגוון רחב של רכיבים. ולכן החיפוש לא יהיה קל.
מה שאני עשיתי זה ללכת הפוך. חיפשתי בקובץ ה Resource את המילה "הערות" ואז גיליתי אילו Keys רלוונטים אלי. עכשיו אפשר ללכת ל Site Definition ולחפש את הKeys שמצאנו, ולשנות את ההפניה, כך שSharePoint תחפש אותם בקובץ החדש שלנו ולא בישן.
אופציה ב'
כפי שציינתי בתחילת המאמר, הפרוצדורה הזאת נראית די מורכבת עבור שינוי כזה קטן. אני הייתי ממליץ לשקול לשנות את קבצי ה resource המקוריים של sharepoint במקום.
בשיטה הזו אנחנו לא צריכים לתחזק קבצי Resources נוספים, לא צריכים ליצור Site Definition חדש.
אם היה מדובר בשינוי קבצי מערכת אחרים, כמו Site Definition, לא הייתי ממליץ לשקול את האופציה הזו, אבל שינוי קבצי ה resource לא נורא כמו שינוי Site Definition.
סיכום
מקווה שנתתי לכם מושג לגבי התאמה של טקסטים ב SharePoint. הדוגמא שנתתי התבססה על דרישה ספציפית מאוד, ולכן קרוב לוודאי שבמקרה שלכם, תידרשו לבצע שינויים נוספים במקומות נוספים, או שחלק מהדוגמאות שנתתי לא יהיו רלוונטיים אליכם.
בכל זאת, מה שחשוב שתבינו, זה העבודה עם Site Definition וResource Files, והרעיון של יצירת עותקים במקום לשנות את הקבצים המקוריים.
בהצלחה בקיסטום שלכם!
--שמי איתי שקורי ואני יועץ SharePoint--