PDA

View Full Version : سوال: جایگزین نشدن مقدار resource برای سایت دو زبانه



mbasirati
شنبه 04 خرداد 1392, 14:51 عصر
سلام
من یه سایت دو زبانه دارم و از Resource ها استفاده کردم.
دوتا resource دارم یکی به نام resource.resx برای فارسی و یکی به نام resource.en.resx برای انگلیسی.
اونجاهایی که محتوا داخل یه تگ html هست از این کد استفاده کردم:
<%= GetGlobalResourceObject("Resource", "majid") %>
و اونجاهایی که محتوا مربوط به یه کنترل asp هستش از این کد استفاده کردم:
<%$ Resources:Resource, Send %>
مشکل اینجاس که محتواهای کنترلهای asp که با کد بالا مقداردهی میشن چه تو حالت فارسی چه تو حالت انگلیسی فقط محتوای انگلیسی رو نشون میدن.
برای مثال من یه دکمه دارم که متنش از این طریق مقدار دهی میشه:
<asp:Button ID="btnSend" runat="server" Text="<%$ Resources:Resource, Send %>" OnClick="btnSend_Click" CssClass="button" />

ولی همیشه متنش مقدار send رو نشون میده در حالیکه در حالت فارسی باید مقدار "ارسال" رو نمایش بده.

مشکل از کجاس؟

saeed_sho
شنبه 04 خرداد 1392, 19:11 عصر
شما احتیاج به 3 تا ریسورس دارید:
resource.resx
resource.fa.resx
resource.en.resx
تا درست عمل کنه

mbasirati
شنبه 04 خرداد 1392, 20:37 عصر
شما احتیاج به 3 تا ریسورس دارید:
resource.resx
resource.fa.resx
resource.en.resx
تا درست عمل کنه

اولا اینکه من این کارم میکنم. ولی بازم درست نمیشه.
دوما اینکه چرا نیاز به سه تا resourc هست؟
سوما اینکه من از این آموزش (http://how2learnasp.net/article.aspx?code=7d5730a4-24e9-413c-874c-191054f445cb) برای دوزبانه کردن استفاده کردم. منتها من فایل global.asax رو ایجاد نکردم و اون کدهایی هم که توی application_beginRedquest قرار داده من توی رویداد Page_init مربوط به masterpage قرار دادم.
میتونه مشکل از این باشه؟

mehdin69
شنبه 04 خرداد 1392, 21:42 عصر
دوست عزیز بصورت استاندارد 3 تا فایل resource نیاز هست
فرض بر اینه که شما یه سایت دارید با یه محتوای پیش فرض همه کنترل ها و محتوا رو از اون فایل اصلی می خونین
بعد همونجور که دوستمون گفتن 3 تا فایل
resource.resx
resource.fa.resx
resource.en.resx
هست که در صورت اضافه کردن هر زبان به سایت یه فایل دیگه به سایت اضافه میشه
فایل global.asax اولین فالی هست که توی پروژه run میشه یعنی قبل از رویداد Page_init اجرا میشه شما بذارید توی فایل global 3 تا فایل هم درست کنین مطمئن باشید درست میشه

mbasirati
شنبه 04 خرداد 1392, 22:08 عصر
دوست عزیز بصورت استاندارد 3 تا فایل resource نیاز هست
فرض بر اینه که شما یه سایت دارید با یه محتوای پیش فرض همه کنترل ها و محتوا رو از اون فایل اصلی می خونین
بعد همونجور که دوستمون گفتن 3 تا فایل
resource.resx
resource.fa.resx
resource.en.resx
هست که در صورت اضافه کردن هر زبان به سایت یه فایل دیگه به سایت اضافه میشه
فایل global.asax اولین فالی هست که توی پروژه run میشه یعنی قبل از رویداد Page_init اجرا میشه شما بذارید توی فایل global 3 تا فایل هم درست کنین مطمئن باشید درست میشه

من این کارا رو کردم. منتها من توی رویداد application_beginRequest یه سشن هم ساختم که این سشن مقدار fa یا en رو تو خودش نگه میداره با استفاده از این سشن فیلدای مختلف دیتابیس رو میخونم. مشکلم اینه که توی رویداد application_beginRequest اجازه ساخت سشن رو بهم نمیده و ارور میده:

Session state is not available in this context.

از این کد هم استفاده کردم بازم یه ارور دیگه داد:
HttpContext.Current.Session["mylang"] = Request.Cookies["mylang"].Value;

Object reference not set to an instance of an object.
چیکار کنم که به سشن گیر نده؟

saeed_sho
یک شنبه 05 خرداد 1392, 11:04 صبح
در پست 2 این تاپیک یه سمپل گذاشتم ببینیدش
http://barnamenevis.org/showthread.php?385892-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%AF%D9%88%D8%B2%D8%A8%D8%A7%D9%86%D9%87