Bagaimana cara melokalkan aplikasi ASP.NET MVC?

121

Apa praktik terbaik untuk melokalkan aplikasi ASP.NET MVC Anda?

Saya ingin membahas dua situasi:

  • satu penerapan aplikasi di IIS yang akan menangani banyak bahasa
  • satu penerapan bahasa / aplikasi.

Dalam situasi pertama, haruskah Anda menggunakan beberapa jenis tampilan berbasis seperti, ~ / View / EN, ~ / View / FI, ~ / View / SWE atau sesuatu yang berbeda?

Bagaimana dengan kasus kedua, hanya konfigurasi berbasis aplikasi melalui Web.config dan arahkan bahasa yang berbeda ini ke URL yang berbeda?

pirho
sumber
Sebagai alternatif untuk tampilan duplikat, Anda dapat menggunakan file ResX standar untuk menyimpan string khusus budaya. Sayangnya, mengelola dan mengedit file ini, terutama oleh penerjemah agak tidak nyaman dan sulit. Ini dapat disederhanakan dengan menyimpan sumber daya dalam database dan menggunakan beberapa alat lokalisasi eksternal. Anda dapat melihat perpustakaan gratis yang menyediakan penyedia sumber basis data ini: globsite.net/GlobsiteGlobalizationLibrary
Kryszal

Jawaban:

72

Anda juga dapat lihat di sini ASP.NET MVC 2 Lokalisasi panduan lengkap dan ASP.NET MVC 2 Model Validasi Dengan Lokalisasi entires ini akan membantu Anda jika Anda bekerja dengan ASP.NET MVC 2.

fyasar.dll
sumber
Terima kasih atas jawaban yang diperbarui ini! Setahun yang lalu saya menggunakan pendekatan Matt Hawley tetapi mengalami masalah serius dengan tes Unit. Saya mencoba mengejek konteks pengontrol, tetapi ada hal lain yang masih hilang dan saya menyerah. Saya akan melalui cara MVC2 ini, dan berharap mereka telah menemukan jawabannya.
Lauri Larjo
Saya dulu menggunakan pendekatan ini dalam proyek saya, saya harus mengatakan bahwa pendekatan ini lebih baik.
fyasar
@fyasar hai, kami memiliki situs web belanja di asp mvc, jadi ketika pengguna memilih bahasa arab, kami ingin membuat seluruh situs berbahasa arab, dapatkah kami menggunakan microsoft bing translator atau microsoft translator API atau haruskah saya membeli localize.js untuk mencapai ini dengan cepat ?
shaijut
22

Anda akan melokalkan aplikasi ASP.NET MVC Anda dengan cara yang sama seperti yang Anda lakukan pada aplikasi Formulir Web ASP.NET klasik.

Anda tidak akan menggunakan halaman / tampilan yang berbeda untuk setiap bahasa, tetapi setiap halaman akan mendukung banyak bahasa menggunakan rakitan satelit.

Anda dapat melihat entri blog Matt Hawley untuk penjelasan dan contoh lebih lanjut.

Elijah Manor
sumber
2

Saya tidak pernah yakin untuk menangani pelokalan dalam bentuk seperti yang disarankan Elia - panjang dan arah yang berbeda dapat menyebabkan bentuk yang tampak sangat kompleks atau bervariasi.

Saya baru saja memulai dengan MVC tetapi mengambil metode decoupling Anda ingin menggunakan pengontrol yang sama terlepas dari bahasanya (memperlakukan bahasa hanya sebagai tampilan) - ini kemudian akan memberi Anda / Controller / Action / language / form

Ian T
sumber
2

Ada tutorial bagus dengan pembaruan terkini tentang Cara melokalkan aplikasi asp.net mvc yang mencakup semua aspek termasuk lokalisasi DisplayName, Validasi, menggunakan Perutean (menyimpan nama budaya di URL), masalah dengan cache keluaran dan sebagainya ... Blog Alex Adamyan - Sementara keyboard saya dengan lembut menangis

pengguna405803
sumber
1

Kami benar-benar pergi berbeda dengan menimpa DataAnnotationsMetadaDataProvider . Di sana Anda dapat memastikan bahwa nilai DisplayNameAttribute diselesaikan ke dalam bahasa yang benar. Sebenarnya Anda bahkan bisa menyingkirkan atribut itu dan menyelesaikannya dengan nama bidang hanya jika itu bisa membantu.

Michael Sander
sumber
0

Saya menulis artikel ini beberapa waktu lalu. Ini menggunakan mesin tampilan khusus. http://blog.oimae.com/2011/02/20/cultured-view-engine-for-mvc/

Vlad
sumber
1
Meskipun artikel Anda sebenarnya mungkin menjawab pertanyaan tersebut, akan lebih baik jika menyertakan bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi. Stack Overflow hanya berguna sebagai pertanyaan dan jawabannya, dan jika host blog Anda turun atau URL Anda dipindahkan, jawaban ini menjadi tidak berguna. Terima kasih!
sarnold