PDA

View Full Version : مشکل سایت چند زبانه و URL



saeidgab
دوشنبه 01 خرداد 1391, 17:32 عصر
سلام، یه سایت دارم که با استفاده از روش Resource.resx به صورت چند زبانه پیاده شده ، مسئله اینجاست که میخوام تو url مشخص باشه که تو چه زبانی هستم (مثلا در بعضی سایتها به صورت /en/ , /de/ نمایش داده میشه) حالا تو روش Resource.resx که صفحاتمون یکی هست چطور میشه اینکارو انجام داد. دوستان تجربیاتشون روبگن خوشحال میشم.

saeidgab
سه شنبه 09 خرداد 1391, 12:35 عصر
خوب یه جور دیگه سوال میکنم، اگه بخوام برای هر زبان تو سایت لینکای متفاوتی رو که نشان دهنده زبان جاری هست نمایش بدم چه کار باید انجام بدم.
مثلا : www.mysite.com/en/home.aspx و www.mysite.com/de/home.aspx هر دو به پیج home.aspx اشاره کنه با این تفاوت که محتویات رو به زبان مورد نظر بیاره

aminghaderi
سه شنبه 09 خرداد 1391, 13:57 عصر
استفاده از روش Resource.resx به صورت چند زبانه پیاده شده
سلام بر شما.
در این رابطه توضیح بدید ، که دقیقا منظورتون چی هست و چطور روشی هست ؟؟
تا با توجه به اون جواب مناسب رو بدم.

mo.esmp
سه شنبه 09 خرداد 1391, 15:20 عصر
Embed language code in URL of an ASP.NET webpage (http://code.msdn.microsoft.com/VBASPNETEmbedLanguageInUrl-de9c06ad)

saeidgab
سه شنبه 09 خرداد 1391, 16:12 عصر
سلام بر شما.
در این رابطه توضیح بدید ، که دقیقا منظورتون چی هست و چطور روشی هست ؟؟
تا با توجه به اون جواب مناسب رو بدم.

روش مذکور که برای نمایش محتویات استاتیک سایت در چند زبان هست، تو این لینک توضیح داده شده

http://how2learnasp.net/article.aspx?code=7d5730a4-24e9-413c-874c-191054f445cb

زبان جاری کاربر رو هم تو کوکی ذخیره میکنم.

تنها مشکل اینه که زبان جاری کاربر در URL نمود نداره یعنی اگر یکی زبان چینی رو انتخاب کنه تو صفحه home همچین لینکی داره : www.mysite.com/home.aspx و کسی هم که زبان روسی رو انتخاب میکنه همون لینک رو داره.
حالا دنبال یه راه میگردم تا بتونم زبان جاری رو تو URL نمایش بدم .

aminghaderi
سه شنبه 09 خرداد 1391, 22:00 عصر
سلام.
متاسفانه من به روش شما مسلط نیستم تا بر مبنای اون بتونیم مشکل رو حل کنیم ، من کاملا درک می کنم چقدر تغیر ساختار یه سایت هزینه بره (زمان ، نیرو) واسه همین گفتم راه رو بگید تا بشه بر مبنای اون این کار رو کرد.
یه راهی به ذهنم می یاد ، نمی دونم چقدر می تونه ماثر باشه ، اون هم URLReWriteing هست که می شه شما در سمت سرور وقتی کاربر fa رو انتخاب کرد ، یه همچین url نشونش بدید :
mysite/fa/news
ولی خوب بحث مدیریت لینک ها رو نمی دونم می شه حل کرد یا نه.
باز نویسی url همونطور که در جریان هستید کار بسیار سختی هست و در روش هایی که اکثر دوستان بهش روی اوردن واقعا اون بار نویسی url نیست ، چون url اصلی قابل شناسایی هست.
البته چون برای شما این زاویه کار مهم نیست ، فکر کنم از این روش اگر استفاده کنید ، ساده ترین راه و کم هزینه ترین رو رفتید.

saeidgab
چهارشنبه 10 خرداد 1391, 13:47 عصر
با تشکر از دوستان به خاطر لینک و جوابشون.


ولی خوب بحث مدیریت لینک ها رو نمی دونم می شه حل کرد یا نه.
من هم دقیقا دنبال راهی برای کم کردن هزینه مدیریت لینکهام میگردم روشی که با زیاد شدن پیج ها هزینش بالا نره. مثلا روشی که دوستمون mo.esmp در لینکی در دو پست قبل اشاره کرده جواب سوال من بود و کار من رو راه میندازه ، ولی برای تعداد زیاد پیج ها (حدود 50) هزینه بر هست. تو این روش درخواستها به یک RouteHandler فرستاده میشن و در اونجا با دستورات شرطی باید لینک درخواستی تشخیص داده بشه که مربوط به کدوم پیج هست تا درخواست به آن صفحه ارسال شه. حالا مثلا اگر 50 تا پیج داشته باشیم باید در ایجا 50 تا If Else بزاریم که پر هزینست.

اگر دوستان راه کم هزینه تری رو میدونن که بگن یا تجربیاتی در این زمینه دارن که بتونه به من کمک کنه خوشحال میشم بشنوم
با تشکر

mo.esmp
چهارشنبه 10 خرداد 1391, 15:26 عصر
راه حل آسانتر استفاده از URL Routing h هست کە هم میتونید لینکهای تمیزتری تولید کنید و هم از به این همه if else نیاز نداشته باشین.
مسلن با تعریف یک route مسل این
routes.MapRoute("DefaultLocalized",
"{lang}/{controller}/{action}/{id}",
new{ontroller = "Home",action = "Index",id = ""},
new { lang = "[a-z]{2}" }
);
میتونید کد زبان فعلی رو در لینکها وارد کنید.
برای شروع میتونید از آین لینک شروع کنید.
http://barnamenevis.org/showthread.php?317763-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-url-routing-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA-4

saeidgab
چهارشنبه 10 خرداد 1391, 15:52 عصر
راه حل آسانتر استفاده از URL Routing h هست کە هم میتونید لینکهای تمیزتری تولید کنید و هم از به این همه if else نیاز نداشته باشین.

اینطور که من فهمیدم تو این روش هم باید برای هر پیج حداقل یه MapRoute تعریف کرد. ( حداقل به خاطر اینه که برای ترکیبی متفاوت از querystring ها لازمه که MapRoute متفاوت تعریف شه)
اگر غیر از اینه بگین تا راه رو اشتباه نرم.

mo.esmp
پنج شنبه 11 خرداد 1391, 00:35 صبح
البته کە اینتور نیست بیشتر متالعه کنید در این مورد.

aminghaderi
پنج شنبه 11 خرداد 1391, 10:31 صبح
یکی از مشکلاتی که بر سر راه استفاده از URL Routing هست ، پشتیبانی نرم افزاری هاست هست ، هاستینگ باید .net 4 رو بروی سرور نصب کند ، اگر سرور دارید می تونید تقاضای نصب بدید ولی اگر از هاست اشتراکی باشه معمولا نمی شه.