โครงการปัจจุบันของฉัน, ของผู้ใช้จะเดินทาง รอบโลก และ เมื่อมาถึงที่สถานที่ท่องเที่ยวต่าง ๆ, ใช้เครื่องใดเป็นประโยชน์ในเวลา. ห้องเครื่องจะรัน Windows ติดตั้ง และกำหนดค่าสำหรับภาษาท้องถิ่น. (ฉันเพิ่งได้รู้ว่า เครื่องลูกค้าอาจมีชุดภาษาที่เหมาะสม… คงจะไม่, อันที่จริง… น.จอดที่หนึ่งในขณะนี้).
SharePoint ที่จำเป็นต้องมีกลไกโดยผู้ใช้สามารถเลือกภาษาที่ต้องการของพวกเขา และแล้วเกียรติภาษานั้นไม่ว่าผู้ใช้เข้าถึงมอมอ. ในคำอื่น ๆ, ไม่สนใจสิ่งที่เบราว์เซอร์บอก IIS/มอ แทนภาษาที่ต้องการค้นหา และใช้.
เรากำลังจะไปตรวจสอบด้วยกันสองวิธี:
- ตัวจัดการ HTTP: ตัวจัดการ HTTP ที่กำหนดเองที่ติดตั้งใน IIS จะค้นหาโพรไฟล์ผู้ใช้ของมอส, เข้าใจภาษาที่ต้องการแล้ว เปลี่ยนส่วนหัว HTTP สถานเมื่อจำเป็นก่อนช่วยควบคุมให้มอส.
- global.asax: ปรับเปลี่ยน global.asax ทำสิ่งเดียวกัน. เราอาจปรับเปลี่ยนบางสิ่งบางอย่างอื่น, แต่ความคิด ที่เราค้นหาบางสถานที่ที่เราสามารถใส่ตรรกะการสลับภาษาของเรา.
ตัว complicating อื่น ๆ คือ เราต้องสนับสนุน 60k ผู้ใช้, เกี่ยวกับการ 1,000 ซึ่งอาจจะพร้อมเข้าถึง MOSS ที่ยอดโหลด.
ตัวจัดการ HTTP ดูเหมือนสวยรุนแรง, แต่อาจจะดีที่สุดเพื่อใส่รหัสเนื่องจากเป็นระดับ IIS และการรู้ทั้งหมด. เป็นจุดเดียวที่ดีงาน.
เรากำลังเอนเอียงไปทางวิธีการชนิด global.asax, เพราะเราเชื่อว่า เราจะมีตัวเลือกเพิ่มเติมสำหรับข้อมูลแคชณ.
จะบล็อกเพิ่มเติมในเรื่องนี้เท่าที่ผมเรียนรู้เพิ่มเติม.
ถ้าคุณ รู้อะไรเกี่ยวกับเรื่องนี้, please post a comment 🙂
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ผมไม่ได้ทดสอบนี้ดังนั้นฉันไม่แน่ใจว่าการทำงาน.
ชั้นหน้าได้ InitializeCulture() วิธีที่สามารถแทน. ถ้าคุณทำเช่นนี้ในโค้ดเบื้องหลังของ masterpage ที่กำหนดเองของคุณ, คุณสามารถทำบางสิ่งบางอย่างพร้อม:
InitializeCulture ยกเลิกการแทนได้รับการป้องกัน()
{
// แทนวิธีการเสมือน InitializeCulture() การตรวจสอบส่วนกำหนดค่าประกอบด้วยการตั้งค่าภาษาของผู้ใช้
สตริ UserCulture = GetCultureFromUserProfile();
ถ้า ( UserCulture != "")
{
// มีการตั้งค่าภาษาผู้ใช้ในโพรไฟล์: สลับไปยัง
Thread.CurrentThread.CurrentUICulture = CultureInfo ใหม่(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
แน่นอนคุณสามารถสร้างบางแคในดำเนินงานของวิธีการนี้.
แหล่งที่มา: http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?path=~/aspnet/samples/localization/LocalizePers.src&แฟ้ม = LocalizePers_cs\LocalizePers_cs.aspx&ลัง = C % 23 แหล่งที่มา
ผมกำลังคิดจัดการ HTTP ด้วยขั้นตอนต่อไปนี้:
1. ร้องขอมา, ตรวจสอบคุกกี้คุกกี้เซสชันสำหรับภาษา (เซสชันคุกกี้หมดอายุเมื่อปิดเบราว์เซอร์)
2. ตรวจสอบว่าคำขอใช้ในหน้า ASPX, ถ้าไม่ได้, ข้ามคำขอ
3. ถ้าคุกกี้ที่มีอยู่, ตั้งหัวข้อภาษากับค่าที่ระบุ. คุณ!
4. คุกกี้ไม่, ใช้ข้อมูลประจำตัวที่รับรองความถูกต้อง และค้นหาผู้ใช้ใน SPS, ค้นหาภาษา
5. หัวข้อการตั้งค่าคุกกี้และหัวข้อภาษา HTTP. เสร็จแล้ว.
คำหน้าให้ APX แรกจะมีค่าโสหุ้ยของ SPS แต่คำอีกด้วยมีไม่ค้นหาดังนั้นจะได้ความเร็วพื้นเมือง. ไม่จำเป็นต้องแคเซสชันหรือค่าโสหุ้ยอื่น ๆ โดยใช้เซสชันคุกกี้เกินไป. เมื่อปิดเบราว์เซอร์, เซสชันคุกกี้ไป. ถ้าผู้ใช้เปลี่ยนการตั้งค่าภาษาใน SPS พวกเขาเพียงแค่ปิด และเปิดเบราว์เซอร์สำหรับผลอีกครั้ง.
ไม่จริง ตัวจัดการ http ใน iis ระดับ…มันอยู่ในระดับโปรแกรมประยุกต์ (ตัวกรอง ISAPI ระดับ IIS)…ฉันจะระวัง bc SP ได้จัดการตนเอง…เพื่อ ให้แน่ใจว่าการทดสอบมันออกมา…ผมเคยทำมาก่อน แต่มีความขัดแย้งบางอย่างกับตัวจัดการ SP.
ฉันจะกินมากขึ้นเพื่อใช้เป็น HTTPHandler, เหตุผลเดียวคือ ว่า ไม่ชอบสัมผัส SharePoint แฟ้ม. พลัสซึ่งง่ายต่อการสร้างโซลูชัน SharePoint เพื่อปรับใช้เป็น HttHandler ( ใช้ API ของ SPWebConfig เพื่อปรับเปลี่ยน web.config). มีการใช้งานผู้ใช้ของคุณ, ผมจินตนาการว่า คุณมีฟาร์มยากลำบาก, จริง ๆ ไม่ต้องไป modifiying แฟ้มบนเซิร์ฟเวอร์แต่ละ.
ใช้แฟ้ม global.asa ผ่านการแก้ปัญหาเป็นความคิดที่ไม่ดี, ถ้าคุณ retract, แฟ้มต้นฉบับของคุณเสียหาย …
นอกจากนี้ยัง มีความสามารถในการร่นการแก้ปัญหาได้อย่างรวดเร็วอาจเป็นความคิดที่ดี, ในกรณีที่สิ่งไปผิด perf ของตัวจัดการ.