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

ASP.NET עמודה קולית של תמיכה

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

מבוא

ברוך הבא! זהו סוקש ח'קה עם צוות התמיכה למפתחי ASP.NET של Microsoft. זוהי הפעם הראשונה שהוספתי עמודת Support Voice. אני מצפה לערוך עמודות מסוג זה בחודשים הקרובים.

עבור העמודה של החודש, אני הולך לדון בבעיות גלובליזציה ב- Active Server Pages (ASP) וב- ASP.NET, הבעיות שאנו איתם אנו נתקלים ב- ASP, כיצד דברים השתנו ב- ASP.NET 1x ומה קורה עם ASP.NET 2.0 בחזית הגלובליזציה.

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

בעיות גלובליזציה ב- ASP

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

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

ערכות תווים ועמודי קוד

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

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

כאשר ASP מפורש, האוספים Form ו- Querystring אינם בנויים עד שיש הפניה לפריטים אלה בקוד. בעת יצירתם, נתוני המחרוזת משתנים ל- Unicode בהתאם לקידוד הנוכחי. (כברירת מחדל, תוכן תהליך ASP ASP.NET באמצעות תבנית Unicode). חשוב מאוד שתגדיר את קידוד הקוד הנכון לפני שתפנה לאוספים; אחרת, ייצוג ה- Unicode בזיכרון לא יהיה נכון.

כדי להגדיר קידוד, השתמש ב- Session.Codepage או ב- Response.Codepage. ה- Response.Codepage זמין רק ב- Microsoft Internet Information Services (IIS) 5.1 או בגירסאות מתקדמות יותר. לקבלת מידע אודות ערכי המספר השלם (התואמים לערכת התווים) שאליהם הגדרנו מאפיינים אלה, בקר באתר האינטרנט הבא של Microsoft:

זיהוי ערכת
http://msdn2.microsoft.com/en-us/library/Aa752010.aspx לדוגמה, כדי להגדיר את קידוד השפה הערבית, השתמש בקוד הבא:

Session.Codepage = 1256

Response.Codepage ישפיע רק על התגובה הנוכחית. עם זאת, Session.Codepage ישפיע על כל התגובות שבוצעו על-ידי המשתמש הנוכחי. כאשר קידוד הקוד מוגדר באמצעות אחד ממאפיינים אלה, ונכללים האוספים Form ו- Querystring, שינוי זה בעמוד הקוד הנוכחי גורם לפעולת השירות Response.Write להמיר את ה- Unicode בזיכרון לדף הקוד הנוכחי. לקבלת מידע נוסף אודות נושא זה, בקר באתר האינטרנט הבא של MSDN:

הגדרת דף הקוד עבור המרות מחרוזות (ASP)http://msdn2.microsoft.com/en-us/library/ms525789.aspxהשורה התחתונה בכל הנוגע לבעיות הקשורות לערכות תווים ועמודי קוד היא ש- charset של הלקוח וקידוד השרת צריכים להתאים.

קבל שפות

אם מפתח ASP מעוניין לדעת אילו שפות הגדיר המשתמש בדפדפן שלו, המפתח יכול להשתמש במשתנה Request.ServerVariables ("HTTP_ACCEPT_LANGUAGE") כדי למצוא את רשימת השפות שבהן המשתמש מעוניין לקרוא את התגובה (כגון אנגלית, גרמנית או הודית) ואת סדר ההעדפה שבה המשתמש מעוניין לראות שפות אלה. ב ASP.NET, מידע דומה קיים במאפיין Request.UserLanguages כמערך.
לקבלת מידע נוסף אודות אופן השימוש במידע זה בקוד ASP, לחץ על מספר המאמר הבא כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:

229690 כיצד להגדיר את מזהה אזור ASP לפי הגדרות השפה של הדפדפן
 

הצגת ערכות תווים מרובות בתים ב- Internet Explorer

תבנית הקידוד היחידה שניתן להציג בערכת תווים מרובת-בתים היא Unicode (UTF-8). עם UTF-8, אנו יכולים להציג קירילית, הודית ויפנית באותו עמוד. אם לא נשתמש ב- UTF-8, נוכל להציג רק אחת משפות אלה בכל פעם. כדי להגדיר את ערכת המאפיינים של הדפדפן, השתמש במאפיין Response.CharSet.

תווים סטטיים מרובי בתים בעמוד

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

שמירת קובץ ASP באמצעות Microsoft Visual InterDev אינה עוזרת כאן, מאחר ש- Visual InterDev יכול לשמור רק באנגלית או ב- Unicode של ANSI. ASP אינו תומך בכל דף ASP שנשמר כ- Unicode.

ב- Microsoft Visual Studio .NET, באפשרותך לשמור קובץ בכל קידוד. קיימות שתי דרכים לעשות זאת. דרך ברירת המחדל היא לשמור את הקובץ באמצעות קידוד הקוד הנוכחי עבור המשתמש. דרך נוספת לשמירת קובץ עם קידוד היא:
בתפריט קובץ , לחץ על שמור קובץ בשם. בתיבת
הדו-שיח שמירת קובץ בשם, לחץ על החץ הנפתחבלחצן
שמור. בעת לחיצה על החץ, האפשרויות הן שמור
ושמירה עם קידוד. בעת לחיצה
על שמור עםקידוד, מופיעה תיבת הדו-שיח אפשרויות שמירה מתקדמות שבה באפשרותך לבחור את סוג הקידוד שברצונך להחיל מתוך רשימה של דפי הקוד המותקנים במחשב.


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

כדי לשנות את קידוד ברירת המחדל, לחץ על אפשרויות שמירה מתקדמות
בתפריט קובץ. בתיבת הדו-שיח אפשרויות שמירה מתקדמות, באפשרותך להגדיר את קידוד ברירת המחדל עבור פעולות שמירה לקידוד שתבחר.

שיטות אלה קשורות לאופן האחסון של הקובץ בדיסק. עם זאת, כדי לשלוט בפלט עבור ASP, כפי שכבר נדון, עלינו להגדיר את המאפיינים Session.CodePage ו- Response.CharSet. עם IIS 5.1 וגירסאות מתקדמות יותר, אנו יכולים גם להשתמש במאפיין Response.CodePage.

ברירת מחדל ל- CODEPAGE בשרת

אזור ברירת המחדל וקידוד ברירת המחדל עבור הדף תלויים בהגדרות הרישום עבור . משתמש ברירת מחדל. אנחנו יכולים למצוא את המפתח הבינלאומי בכוורת הרישוםHKEY_USERS\.DEFAULT\Control Panel\International. אנו יכולים גם לשנות את אופן הפעולה של האזור שנבחר על-ידי IIS.

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

לדוגמה: אזור ברירת המחדל כולל תבנית תאריך המוגדרת כ- 11.1.2004, בעוד שהמשתמש המחובר (עם אותו אזור מוגדר) הוא בתבנית התאריך 1/1/2004. ההגדרה 11/1/2004 תהיה לתוקף עבור ASP.

(לקבלת ASP.NET, הדבר עשוי להשתנות. בהתקנות מסוימות, למשתמש ASPNET יהיה פרופיל משלו, שיוצגו תחת HKEY_USERS כאשר הוא ייטען. באחרים, הוא ישתמש ב- . פרופיל ברירת מחדל. ניתן גם להשתמש בתכונה codepage בהצהרה <%@ %>. יש להשתמש באפשרות זו כאשר הקובץ נשמר עם קידוד אחר, ולאחר מכן ברירת המחדל, כגון קידוד 932 (יפנית)).

בעיות בקידוד לעומת בעיות בהמרת גופנים: איזה מהם?

לפעמים, ייתכן שתראה תו סימן שאלה (?) או תיבה שבהם אמור להופיע תו.

בעיות בהמרת קידוד

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

בעיות בהמרת גופנים

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

בשלב הבא, אדבר על האופן שבו דברים השתנו ב- ASP.NET 1.x, ועל האופן שבו שינויים אלה משפיעים על בעיות גלובליזציה בהקשר של ASP.NET.

בעיות גלובליזציה ב- ASP.NET 1.x:

עם ASP.NET, הוצגו שלושה דברים נפלאים:

  • התג <הכללית> בקובץ web.config זה
    התג <של> מפנה אותנו אל מחוץ למושגי הקוד וערכות הקידוד, ומאפשר לנו לשלוט ברוב המשתנים בתוך ASP.NET.

  • מרחב השמות System.Globalization
    מרחב השמות של Globalization מספק לנו את העוצמה תיכנותית של טיפול גלובליזציה.

  • המושג של קבצי משאבים השתפר באופן משמעותי.
    איננו טפלים בקובצי משאבים באופן שבו היינו רגילים להשתמש ב- ASP. כעת, קבצי המשאבים הם בתבנית של קבצי XML כאשר אנו מעצבים מפתחים אותם, והם קיימים כהרכבות בזמן ריצה.

תג התצורה של התבנית הכללית:

שתי הגדרות חשובות לתגית הן כדלקמן:

<globalization 
            requestEncoding="utf-8" 
            responseEncoding="utf-8"  />

להלן תחומי הגדרות אפשריים אחרים:

Encoding של קובץ

מציין את קידוד ברירת המחדל עבור ניתוח קובץ .aspx, .asmx ו- .asax קבצי Unicode ו- UTF-8 שנשמרו עם קידומת הסימון של סדר הבתים (עם חתימה) יזוהו באופן אוטומטי, ללא קשר לערך של FileEncoding.

תרבות

מציין את תרבות ברירת המחדל לעיבוד בקשות אינטרנט נכנסות (ישימה בשיטות של מחלקות ממרווח השמות System.Globalization).

uiCulture

מציין את תרבות ברירת המחדל לעיבוד חיפושי משאבים התלויים באזור (הרכבות לוויין).

לקבלת מידע נוסף אודות מחרוזות תרבות (ערכים של תרבות וממשק), בקר באתר האינטרנט הבא של Microsoft:

System.Globalization.CultureInfoClass
http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxהגדרות אלה מוחלות על-ידי ASP.NET לאחר השלמת התגובה, ולפני שהבקשה נמסרת ליישום שלך. עבור responseEncoding, המאגר שנוצר לאחסון הפלט מוגדר לקידוד זה. כל מה שעובר למאגר זה ייקידוד בהתאם להגדרה בעת הוספתו למאגר.

עבור requestEncoding, זמן הריצה יקרא את הבקשה ויפרש אותה בהתאם להגדרה בסעיף זה. עם זאת, זוהי הגדרה שעלולה לגרום לבעיות. הטבלה שלהלן מציגה את פריסת הסיביות של רצף חוקי של UTF-8 בתים.

אם ערך התו נמצא בתקן הסיביות של ASCII 7, ערך הבית לא השתנה. אם הערך הוא מעל 127, עליו לפעול בהתאם לכללים שלהלן. ערכת הסיביות המובילה מציגה את מספר התווים ברצף. כל בית לאחר הראשון חייב להתחיל כאשר הסיביות הראשונות מוגדרות ל- 1.

פריסת UTF-8 בתים:

בתים

סיביות

ייצוג

1

7

0vvvvvvv

2

11

110vvvvv 10vvvvv

3

16

1110vvvv 10vvvvv 10vvvvvvv

4

21

11110vvv 10vvvvv 10vvvvvvv 10vvvv

כאן הבעיה מגיעה. אם הדפדפן מקודד את הבקשה בהתאם לקידוד בית יחיד (כגון iso-8859-1), הערכים מעל 127 לא יהיו חוקיים בהתאם לפריסה לעיל. כאשר הם מוקראים במאגר UTF-8, התווים הלא חוקיים פשוט יוצאים מהפלט.

שינויים בקידוד זמן ריצה

באירוע Application_BeginRequest, אנו יכולים לשנות את הערך של requestEncoding ולהוות אותו נכנס לתוקף לפני עיבוד הבקשה. עבור התגובה, Page_PreRender האירוע הוא ההזדמנות האחרונה לשנות את הקידוד של הפלט. כמו כן, שים לב ש- Response.Write ימקם תווים במאגר זה ברגע שנקרא לו, לכן הקפד להגדיר את הקידוד הנכון לפני השימוש ב- Response.Write.

הנתונים המקוריים הם לא Unicode: כיצד עדיין לגרום ל- Internet Explorer לפרש ערכות תווים מרובות בתים?

נוכל גם לגרום ASP.NET להתנהג כמו ASP במידת הצורך. כדי שזה יתרחש, עלינו להגדיר את התגובהEncoding ואת requestEncoding ל- windows-1252 (קידוד מלא יותר מ- iso-8859-1) ולהשתמש במאפיין Response.Charset כדי להציג את הטקסט כראוי. אפשרות זו פועלת מאחר ש- windows-1252 היא ערכת קידוד של בית יחיד, והיא אינה משנה בתים שנוספים למאגר. לכן, תווים של שני בתים נשלחים כסידרה של בתים יחידים. לאחר מכן, נוכל לומר ל- Internet Explorer כיצד לפרש את הבתים באמצעות המאפיין Response.Charset. תרחיש זה עשוי להיות נחוץ אם הנתונים המקוריים אינם מאוחסנים כ- Unicode או UTF-8, כגון ערך החזרה מתוך אובייקט COM, או אם הנתונים מאוחסנים ב- Microsoft SQL Server בשדה שאינו N (כגון varchar).

SQL Server ו- ASP.NET גלובליזציה

קלט נתוני Unicode SQL Server

הדרך הטובה ביותר לאחסן נתונים ב- SQL Server היא להשתמש ב- Unicode. בכל פעם שאנו משתמשים ב- INSERT, UPDATE וכו', אם יש אפילו סיכוי נמוך יותר של נתוני Unicode, עלינו להוסיף N לפני הערך. פעולה זו מציינת במסד הנתונים שהערך הוא Unicode. דוגמה טובה לכך היא אובייקטי ADO. הם עושים זאת באופן אוטומטי אם נשתמש באובייקט Recordset כדי להוסיף רשומות חדשות.

להלן דוגמה:

INSERT INTO MusicAlbum (Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'Abida', 4653, 403)
Or:
Dim t As String = "INSERT INTO MusicAlbum(Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'" & TextBox1.Text & "', 4653, 403)"
קלט תאריך/שעה SQL Server

בדרך כלל יש לנו את הידע על התרבות והמקומות של התאריך/השעה המפורשים ביישום ASP.NET שלנו. עם זאת, בזמן שאנו דוחפים ומושכים את נתוני התאריך/שעה אל מקורות חיצוניים וממקורות חיצוניים, אנו מסתכנת בהכנת תבניות התאריך/שעה באופן שגוי. זאת משום שלא תמיד נוכל להבטיח שהתרבות והמקומיות של המקור החיצוני יהיו זהים לאותם היישום שלנו. ב SQL Server ניתן לפתור זאת באמצעות התכונה 'שפה נוכחית' ב- connectionstring של החיבור שנוצר למסד הנתונים של SQL. אנו יכולים לספק את אותה הגדרת שפה ב- connectionstring כמו התרבות ביישום שלנו. הדבר מגן עלינו מפני הסיכון לתחשבות שגויה, מכיוון SQL Server מקבל ושולח תמיד את נתוני התאריך/שעה בהסכמה עם ההגדרה שלעיל.

מרחב שמות של System.Globalization

מרחב שמות זה הוא הליבה של גלובליזציה והתאמה לשפות אחרות .NET Framework. המחלקה הראשית שנמצאת בשימוש מרחב שמות זה היא המחלקה CultureInfo. הוא כולל מידע ספציפי לתרבות, כגון תבנית תאריך/שעה, תבניות מספר, מידע השוואה ומידע טקסט. לקבלת מידע נוסף אודות המחלקה CultureInfo, בקר באתר האינטרנט הבא של MSDN:

http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxCultureInfo

תרבויות ניטראליות לעומת תרבויות ספציפיות

תרבות ניטראלית היא תרבות המשויכת לשפה, אך לא למדינה/אזור ספציפיים. תרבות ספציפית משויכת הן לשפה והן למדינה/אזור ספציפיים.

דוגמה: "DE" (תרבות ניטראלית) מיועדת לשפה הגרמנית, אך "de-AT" (תרבות ספציפית) מיועדת לשפה הגרמנית כפי שהיא מדוברת באוסטריה. לא ניתן להשתמש בתרבויות ניטראליות לעיצוב.

רצף תגובות נוכחי ומודעות תרבות .NET Framework הכיתות

כל הכיתות והשיטות בספריית .NET Framework שבה היינו מצפים שהפלט יהיה תלוי בתרבות כולל שני אופני פעולה מוכללים:

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

  • אם אפשרות זו לא נענתה (בדרך כלל זה המצב), הכיתות חכמות מספיק כדי לתבדוק את המאפיין Thread.CurrentThread.CurrentCulture ולעבוד בהתאם לזה.

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

    Dim ci As CultureInfo
        ci = New CultureInfo("de-AT")
        Thread.CurrentThread.CurrentCulture = ci

בדוגמה זו של קוד, "de" מייצג את השפה הגרמנית, ו- "AT" מייצג את אוסטריה. לכן, במופע זה, DateTime.Now(). פעולת השירות ToString תחזיר את התאריך והשעה בתבנית המתאימה לאותה הדרך שבה התאריך והשעה מבוטאים בשפה הגרמנית באוסטריה.

המסגרת מבטיחה (באופן הבא) שהמאפיין CurrentCulture מאותחל תמיד:

  1. כל מה שהוא מוגדר באופן תיכנותי.

  2. במקרה שהוא לא הוגדר באופן מפורש על-ידי המתכנת, המאפיין נבחר מתוך קבצי התצורה (<globalization> tag).

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

קבצי משאבים

כל קבצי .resx, קבצי .resource והקבצים שתכונת פעולת ה- Build מוגדרת שלהם למשאב מוטבע שנוספים לפרוייקט של ASP.NET ב- Visual Studio .NET, הידור והטבעה אוטומטיים בהרכבת היישום כחלק מהמניפסט שלו. ניתן גם לעשות זאת באופן ידני באמצעות כלי השירות Resource File Generator (RESGEN) באמצעות שורת הפקודה של Visual Studio .NET. לקבלת מידע נוסף, בקר באתר האינטרנט הבא של MSDN:

http://msdn2.microsoft.com/en-us/library/ccec7sz1(vs.71).aspxזהו רעיון כללי שחל בכל פעם שאנו צריכים לנהל משאבי יישומים שאינם קשורים ל globalization. עם זאת, כאשר אנו מיישמים גלובליזציה, עלינו להשתמש בהרכבות לוויין.

הרכבות לוויין

הרכבות לוויין יכולות לשמש בפרוייקט ASP.NET כאשר אתה לוודא שהתנאים הבאים נכונים:

  1. כל רכיבי ממשק המשתמש בכל קבצי ה- aspx צריכים להיות מצוידים במזהה ובתכונות runat=server.

  2. אנו יוצרים קבצי .resx נפרדים. כל אחד מהם חייב להתאים לכל תרבות שאנחנו רוצים שהבקשה שלנו תתמוך בה.

  3. עלינו להחליט שם פרטי נפוץ עבור כל הקבצים הללו לדוגמה. 'מחרוזות'.

  4. אנו הענקת שם לקובצי .resx הנפרדים באמצעות מוסכמת מתן השמות הנפוצה הבאה . languagecode-regioncode.resx (לדוגמה: Strings.de-AT.resx, Strings.en-GB.resx).

  5. קובץ המשאבים צריך
    להיותמשותף ל-firstname.resx (Strings.resx) המכיל את כל מחרוזות ברירת המחדל הרצויות.

  6. כתוב קוד כדי לזהות את התרבות של המשתמש ולהגדיר את המאפיין Thread.CurrentThread.CurrentUICulture כך שיתאים לו.

  7. כתוב קוד כדי לטעון את המשאבים באמצעות המחלקה ResourceManager.

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

לאחר ביצוע שלבים אלה, Visual Studio.NET Strings.resx ויטביע אותו בהרכבה של היישום (MyGlobalizationTestProjectName.dll). עם זאת, עבור כל שאר קבצי .resx, היא תפיק קבצי dll נפרדים שאין להם קוד הפעלה, אך רק נתוני משאבים. אלה בעצם נקראים הרכבות לוויין. כמו כן, Visual Studio .NET מציב אותם במבנה התיקיות בדומה לרכיבים הבאים:MyGlobalizationTestProjectName
|------- סל
|-------ארה"ב
MyGlobalizationTestProjectName.resources.dllברירת MyGlobalizationTestProjectName.resources.dll
|------ja-JP
MyGlobalizationTestProjectName.resources.dllברירת MyGlobalizationTestProjectName.resources.dll
|------de-AT
MyGlobalizationTestProjectName.resources.dll

ההבדל בין CurrentCulture ל- CurrentUICulture

בעוד ששיטות המחלקות מרחב השמות של System.Globalization תלויות במאפיין Thread.CurrentThread.CurrentCulture כדי להעניק את הפלט שלהם, המחלקה ResourceManager שטעינה את הרכבת המשאבים תלויה במאפיין Thread.CurrentThread.CurrentUICulture כדי לטעון את הרכבת הלוויין המתאימה. להלן דוגמה של קוד C#:

using System.Globalization;
using System.Threading;
using System.Resources;

//Load resources. 
protected ResourceManager gStrings = new ResourceManager("MyGlobalizationTestProjectName.strings", typeof(MyTestWebFormName).Assembly);

// Get the user's preferred language.
string sLang = Request.UserLanguages[0];
// Set the thread's culture for formatting, comparisons, etc.   
Thread.CurrentThread.CurrentCulture =  CultureInfo.CreateSpecificCulture(sLang);
// Set the thread's UICulture to load resources
// from satellite assembly.
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLang);

private void Page_Load(object sender, System.EventArgs e) 

{ 

 if (!IsPostBack)  

 {      
// Get strings from resource file and assign to UI elements.
head1.InnerHtml = gStrings.GetString("satellite.head1");
p1.InnerHtml = gStrings.GetString("satellite.p1");
sp1.InnerHtml = gStrings.GetString("satellite.sp1");
sp2.InnerHtml = gStrings.GetString("satellite.sp2");
butOK.Text = gStrings.GetString("satellite.butOK");
butCancel.Value = gStrings.GetString("satellite.butCancel");
   }

 }

סדר שבו ASP.NET בוחר הרכבות לוויין:

לאחר הגדרת CurrentUICulture של הליך המשנה, ASP.NET בוחר באופן אוטומטי את המשאבים התואמים, בסדר הבא:

  • אם הרכבת לוויין נמצאת עם תרבות תואמת, נעשה שימוש במשאבים של הרכבה זו.

  • אם הרכבת לוויין נמצאת עם תרבות ניטרלית התואמת ל- CurrentUICulture, נעשה שימוש במשאבים מהרכבה זו.

  • אם לא נמצאה התאמה עבור CurrentUICulture, נעשה שימוש במשאבי הגיבוי המאוחסנים בהרכבה הניתנת להפעלה.

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

http://msdn2.microsoft.com/en-us/library/sb6a8618(vs.71).aspx

יוצר באופן ידני הרכבות לוויין:

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

http://msdn2.microsoft.com/en-us/library/21a15yht(vs.71).aspx .

מה קורה עם ASP.NET 2.0 בחזית הגלובליזציה?

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

תמיכה גלובלית ב- ASP.NET 2.0 עברה שינוי רדיקלי, ולמפתחי אינטרנט ניתנה היכולת להפוך את ההתאמה לשפות אחרות של אפליקציות אינטרנט לקלות כמו עבור אפליקציות מבוססות Windows. להלן רשימה של תכונות שהם הבסיס של מתודולוגיית הגלובליזציה ב- ASP.NET 2.0:

משאבים שהוקלידו בצורה חזקה בראשית מהדורת .NET Framework 2.0 תומכים במשאבים דחוסים המספקים למפתחים Intellisense ומפשטים את הקוד הדרוש כדי לגשת למשאבים בזמן ריצה.

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

יצירת משאבים עבור טפסי Windows Forms מפתחים כבר נהנו מהיתרונות של אינטררציזציה אוטומטית. Visual Studio .NET 2005 יתמוך כעת בבינלאומית מהירה על-ידי יצירה אוטומטית של משאבים עבור טפסי אינטרנט, פקדי משתמש ודפים ראשיים.

תמיכה משופרת בזמן ריצה מופעי ResourceManager מנוהלים על-ידי זמן הריצה ונגישים לקוד שרת באמצעות ממשקי תיכנות נגישים יותר.

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

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

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

לקבלת מידע נוסף אודות מתודולוגיית גלובליזציה ב- ASP.NET 2.0, בקר באתר האינטרנט הבא של MSDN:

ASP.NET 2.0 תכונות התאמה לשפות אחרות:
גישה חדשה להתאמה לשפות אחרות של יישומיאינטרנט http://msdn2.microsoft.com/en-us/library/ms379546(VS.80).aspx

מסקנה

זה הכל בשלב זה לגבי בעיות גלובליזציה ב- ASP וב- ASP.NET. אני מקווה שמאמר זה יעזור לכמה לקוחות לפתור בעיות גלובליזציה ב- ASP וב- ASP.NET לפני שהם בוחרים לפנות לתמיכה של Microsoft. אני מסתיים עם המחשבה הבאה:

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

אנו נתעדכן שוב בחודש הבא עם נושא מעניין נוסף.

תודה על הזמן שלך.

לקבלת מידע נוסף אודות בעיות גלובליזציה ב- ASP ASP.NET, עיין באתרים הבאים של Microsoft:

SetLocale ו- GetLocale ב- vbscript
http://msdn2.microsoft.com/en-us/library/5xf99h19.aspx

מידע שלב אחר שלב שלגלובליזציה
http://msdn.microsoft.com/en-us/goglobal/bb688110

עבור אל כללי: התאמה לשפות אחרות של Dynamic Web Apps באמצעות IIS 5.0 ו- SQL Server
http://msdn.microsoft.com/msdnmag/issues/01/05/global/default.aspx

עבור אל כללי: עיצוב אתר האינטרנט שלך המבוסס על ASP כדי לתמוך ב- Globalization
http://msdn.microsoft.com/msdnmag/issues/0700/localize/default.aspx

315616 כיצד לזהות שפת לקוח בדף Active Server Pages ב- IIS
http://support.microsoft.com/?id=315616

תרשים מזהה אזור (LCID)
http://msdn2.microsoft.com/en-us/library/0h88fahh.aspx

System.Globalization Namespace
http://msdn2.microsoft.com/en-us/library/system.globalization(vs.71).aspx

משאבים והתאמה לשפות אחרות באמצעות .NET Framework SDK
http://msdn2.microsoft.com/en-us/library/aa309421(VS.71).aspx

משאבים ב- ASP.NET Applications
http://msdn2.microsoft.com/en-us/library/1ztca10y(vs.71).aspx

ASP.NET <כלליזציה> תצורת
http://msdn2.microsoft.com/en-us/library/hy4kkhe0(vs.71).aspx

קווים מנחים לעיצוב והטמעה עבור לקוחות אינטרנט - גלובליזציה והתאמהhttp://msdn2.microsoft.com/en-us/library/ms978628.aspx

האתר הרשמי של Microsoft – פורטל הפיתוח והמחשוב
הגלובלי http://msdn.microsoft.com/en-us/goglobal/bb688096

פיתוח אפליקציות המותאמת לעולם
http://msdn2.microsoft.com/en-us/library/h6270d0z(vs.71).aspx

ארכיטקטורת גלובליזציה עבור ASP.NET
http://msdn2.microsoft.com/en-us/library/aa478974.aspx

Enterprise Localization Toolkit - לפיתוח יישומים מותאמים ASP.NET Microsoft
http://msdn2.microsoft.com/en-us/library/aa479334.aspx

Microsoft typography
http://www.microsoft.com/typography/default.mspx

מילון מונחים

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

ASCII ערכת קידוד של בית אחד (או 7 סיביות). רק התווים בטווח 0-127 מתתקנים. הטווח 128-255 הוא הרחבות ל- ASCII ולא לחלק מהתקן. דוגמה לכך הוא ההבדל בין הטווח העליון של תרשים ASCII של OEM לבין תרשים ה- ASCII של VB.

הגדרת CharSet משמשת בעיקר עבור Internet Explorer ודפדפנים שמסבירים לדפדפן כיצד לפרש את נתוני התווים. דוגמה: Response.charSet = "iso-8859-1".

Codepage טבלת המרה המציינת את אופן הקידוד של תווים (בדרך כלל משמשת עבור שרתים).

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

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

LocaleID (LCID) ערך DWORD המציין את מזהה השפה ואת מזהה המיון. ניתן להשתמש בו כדי לציין את תבניות האזור הספציפיות עבור תאריך/שעה לדוגמה וכו', בהתאם.

יכולת התאמה לשפות אחרות של יישום להציג תוכן עבור השפה/האזור הדרושים.

התאמה לשפות אחרות היא תהליך של תרגום ממשק משתמש לשפות ו/או אזורים ספציפיים.

ערכת תווים מרובי-בתים ערכת תווים שבה התווים מורכבים משני בתים או יותר, כגון יפנית. גם UTF-8 נמצא תחת קטגוריה זו. (טכנית, Unicode נמצא בקטגוריה זו, אך ב- Windows, היא כוללת קטגוריה משלו.)

Unicode ערכת קידוד של 2 בתים. Windows משתמש ב- Unicode באופן פנימי. ממשקי API ספציפיים עבור Unicode מזוהים על-ידי "W" בסוף שם הפונקציה. ידוע גם בשם wide char; אין אפשרות להשתמש ישירות מיישומי אינטרנט.

UTF-8 קידוד תווים שבו ניתן לייצג תו על-ידי 1-6 בתים. ב- Windows, הטווח הוא 1-3 בתים. לא נתמך תחת NT4 עבור יישומי אינטרנט.



ערכת תווים רחבה כינוי עבור Unicode. המכונה גם DBCS (ערכת תווים של שני בתים), UCS-2, UTF-16.

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

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

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

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלך?
בלחיצה על 'שלח', אתה מאפשר למשוב שלך לשפר מוצרים ושירותים של Microsoft. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

תודה על המשוב!

×