Pada proyek saya saat ini, beberapa pengguna akan melakukan perjalanan di seluruh dunia dan ketika mereka tiba di tujuan yang berbeda, menggunakan mesin apapun berguna pada saat. Mereka semua mesin akan menjalankan Windows dan diinstal dan dikonfigurasi untuk lokal lokal. (Aku hanya menyadari bahwa mesin tamu mungkin tidak memiliki paket bahasa yang tepat… mungkin tidak, Sebenarnya… Aku 'm parkir yang satu untuk sekarang).
SharePoint perlu menyediakan mekanisme dimana pengguna dapat memilih bahasa pilihan mereka dan kemudian telah MOSS menghormati bahasa itu terlepas dari bagaimana pengguna mengakses MOSS. Dengan kata lain, mengabaikan apapun yang memberitahu browser IIS MOSS dan bukan mencari bahasa pilihan itu dan menggunakannya.
Kami akan menyelidiki dua pendekatan:
- HTTP Handler: Handler HTTP kustom diinstal pada IIS kunantikan MOSS profil pengguna, mengetahui bahasa yang dikehendaki dan kemudian beralih HTTP header di sekitar yang diperlukan sebelum melewati kontrol untuk MOSS.
- global.asax: Memodifikasi global.asax untuk melakukan hal yang sama. Kami dapat mengubah sesuatu yang lain, Tapi gagasan bahwa kita menemukan beberapa tempat di mana kita dapat menyisipkan logika yang switching lokal kami.
Faktor rumit lain adalah bahwa kita perlu untuk dukungan 60k pengguna, tentang 1,000 dari yang mungkin secara bersamaan mengakses MOSS di puncak load.
HTTP handler tampaknya cukup drastis, tapi mungkin tempat terbaik untuk menempatkan kode karena tingkat IIS dan mengetahui. Ini adalah titik tunggal baik pekerjaan.
Kami sedang bersandar ke arah pendekatan jenis global.asax, terutama karena kita percaya kita akan memiliki lebih banyak pilihan untuk caching data pada saat itu.
Aku akan blogging lebih banyak tentang hal ini sebagai aku belajar lebih banyak.
Jika Anda tahu apa-apa tentang ini, please post a comment 🙂
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Saya belum diuji ini jadi saya tidak yakin jika bekerja.
Kelas halaman memiliki InitializeCulture() metode yang dapat diganti. Jika Anda melakukan ini dalam kode di belakang masterpage kustom Anda, Anda bisa melakukan sesuatu di sepanjang baris:
dilindungi menimpa membatalkan InitializeCulture()
{
// menggantikan metode virtual InitializeCulture() untuk memeriksa jika profil berisi pengaturan bahasa pengguna
string UserCulture = GetCultureFromUserProfile();
Jika ( UserCulture != "")
{
// Ada sebuah pengaturan bahasa pengguna dalam profil: beralih ke
Thread.CurrentThread.CurrentUICulture = CultureInfo baru(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
Jelas Anda dapat membangun beberapa caching ke dalam pelaksanaan metode ini.
Sumber: http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?path=~/Aspnet/Samples/localization/LocalizePers.src&file = LocalizePers_cs\LocalizePers_cs.aspx&lang = C % 23 sumber
Aku sedang berpikir handler HTTP arus berikut:
1. Permintaan masuk, memeriksa cookies untuk sebuah sesi cookie untuk preferensi bahasa (sesi cookie berakhir ketika peramban ditutup)
2. Periksa apakah permintaan untuk halaman ASPX, Jika tidak, mengabaikan permintaan
3. Jika ada cookie, menetapkan header bahasa dengan nilai yang ditetapkan. Anda selesai!
4. Tidak ada cookie, mengambil kredensial otentikasi dan mencari pengguna dalam SPS, Temukan preferensi bahasa
5. Menetapkan cookie header dan HTTP header bahasa. Dilakukan.
Permintaan halaman APX pertama akan memiliki overhead SPS lookup tapi setiap permintaan itu dengan memiliki pencarian tidak sehingga akan kecepatan asli. Tidak perlu untuk sesi cache atau di atas-kepala lain dengan menggunakan sebuah sesi cookie terlalu. Setelah browser ditutup, sesi cookie akan hilang. Jika pengguna mengubah preferensi bahasa mereka di SPS mereka hanya perlu untuk menutup dan membuka kembali peramban untuk untuk mengambil efek.
sebenarnya http handler tidak di tingkat iis…Hal ini pada level aplikasi (ISAPI filter yang di tingkat IIS)…Aku akan berhati-hati SM SP telah handler sendiri…jadi pastikan untuk menguji it out…Aku sudah melakukannya sebelum tetapi memiliki beberapa konflik dengan SP handler.
Saya akan lebih cenderung untuk menggunakan HTTPHandler, satu-satunya alasan adalah bahwa aku tidak suka menyentuh file SharePoint. Plus it's mudah untuk menciptakan solusi SharePoint untuk menyebarkan HttHandler ( dan gunakan SPWebConfig API untuk mengubah web.config). Memiliki beban pengguna Anda lakukan, Saya akan membayangkan Anda memiliki sebuah peternakan yang cukup besar, Anda benar-benar tidak ingin pergi modifiying file pada setiap server.
Menjalankan global.asa file melalui solusi adalah ide yang buruk, Jika Anda menarik kembali itu, file asli Anda sudah pergi …
Juga memiliki kemampuan untuk menarik kembali solusi cepat mungkin ide yang baik, Jika sesuatu yang salah dengan perf handler.