وقتی برنامه Publish بشه کلیه Resource ها به یک فایل dll تبدیل میشه که قابل دسترسی نیست دیگه ولی وقتی Publish نشه به صورت یک فایل XML قابل دسترسی و تغییر هست .
ببینید یک بحث که شما باید در برنامه های چند زبانه در نظر بگیرید ( بیشتر روی WebApp ) این هست که شما قادر به مدیریت بکسری از کلمات هستید ،یعنی شما کلیه کلمات ثابت در برنامه خودتان رو میتونیدمدیریت کنید . حالا یک وب سایت چند زبانه زمانی که احتیاج به یک صفحه معرفی به سه زبان مختلف داره ، اگر وب سایت شما واقعاً یک سایت پویا باشه (مثل یک CMS ) و کاربر اطلاعات این صفحه رو میتونه تغییر بده ، باید کاربر شما سه صفحه به سه زبان مختلف ایجاد کنه ( البته این جای بحث داره که توضیح میدم ) ، پس از این بحث ما نتیجه میگیرم که باید از روش اول هم استفاده کنیم ( که کاملاً اشتباه هست ).خوب اگر اشتباه است پس این قدر باید دامنه لغات تعریف شده ما بالا باشه که هرچی کاربر زد اونو از تو Resource بکشه بیرون ( که یه هم چین چیزی امکان پذیر نیست ( البته مطلق نیست به علت این که ما برنامه نویس هستیم و هرکاری که بخواهیم تا جایی که منابع سیستم به ما اجازه بده انجام میدم پس این هم از نظر منطقی شدنی هست ولی به چه قیمتی ، که ما وقت بزاریم و برای یک وب سایت یک مترجم بنویسیم ))، پس منطقاً اینجا از Resource ها دیگه نمیتونیم استفاده کنیم ( کلاً گزینه 3 و 4 ) .
ما الان دو روش پیش رو داریم :
1- استفاده از چند فایل
2-استفاده از دیتابیس
***********************************
دوباره برمیگردیم سر مبحث قبل ، میخواهم یک صفحه معرفی به سه زبان داشته باشیم که مدیر سیستم امکان ویرایش مطالب اونو داشته باشه!!!!!! من برنامه نویس به ازاری هر زبان یک صفحه براش درست میکنم و میگم هر وقت خواستی برو این صفحات رو مطالبش رو عوض کن (البته به همان زیان ) . آیا به نظر شما این روش معقول هست ؟ این روش شدنی هست ولی به چه قیمتی ؟ بحث بزرگترش میکنیم ، اگر وب سایت شما 50 صفحه داشته باشه ، شما برای فعال کردن 3 زبان باید 150 صفحه ایجاد کنید .
پس راه حل بهینه (البته به نظر من ) ، در اینجا با استفاده از دیتابیس به کمک وب سایت چند زبانه میام .
بحث میکشم به یک سیستم مدیریت محتوی و نحوه تولید صفحات پویا :
خیلی از آماتور ها فکر میکنن وقتی مدیر سیستم یک صفحه جدید ایجاد میکنه ، واقعاً یک فایل ایجاد میشه ، در صورتی که به این شکل نیست ، بلکه داخل یک جدول این صفحه ایجاد میشه (این چیزی که شاید اکثر دوستان بودنن ولی گفتم یک بحث کامل داشته باشیم بهتره )
به ساختار جدول زیر دقت کنید :
1-PageID int PK
2-Title nvarchar(50)
3-Keywords nvarchar(50)
4-Body ntext
.
.
.
در اینجا 4 فیلد نسبتاً ضروری رو برای این جدول مشخص کردم ، فیلدهای دیگری که میتونید بزارید بسته به نیاز تاریخ ایجاد ، تاریخ آخرین ویرایش ، ایجاد کننده ، ویرایش کننده ، فعال ، آدرس نمایشی درآدرس بار (میتونین باش هم ریرات انجام بدید) ووووووووووووو
در برنامه اصلی شما یک صفحه بیشتر ندارید ، حالا با توجه به PageID که دارید و انواع گوناگون میتونید محتویات این صفحه رو تغییر بدید ( که این خودش جای بحث داره ولی دیگه اینجا جاش نیست ) ولی اینو بگم که شما به وسیله یک Label میتونید یک وب سایت MultiPage داشته باشید.
حالا بعد از این همه تفاسیر که هیچ ربطی هم به چند زبانه بودن سایت نداشت ، میرسیم سر نکته اصلی :
با اضافه کردن یک فیلد که مشخص کننده زبان این صفحه هست ، مشکل روش اول رو از بین میبریم ، یعنی ما بی نهایت صفحه با Z فرهنگ مختلف میتونیم ایجاد کنیم . حالا با صدا زدن یک صفحه مثلا about.aspx برنامه نویس با تشخیص فرهنگ جاری سیستم و یک کوئری خیلی ساده به راحتی صفحه مورد نظر را به همان زبان برای کاربر آماده میکنه .
***************************
پس از این همه قصه ، میخواهم به این نتیجه برسم که استفاده از محض از Resource ها ( روش 3 و 4 ) به هیچ عنوان نمیتونه یک وب سایت پویای چند زبانه را برای شما ایجاد کنه ، در این وسط باید از دیتابیس کمک بگیرید .
ولی این کمک به این نحوه نباید باشه که ما کلمات را در دیتابیس ذخیره کنیم .
***************************
نکته بعدی که همین الان به ذهنم رسید ، اینه که ما یک سری Resource (فایل resx) داشته باشیم که خودمان ایجاد کردیم ( برای کلمات پیش فرض سیستم مثل خانه،ورود،خروج،تاریخ ............) ، بعد از اون برای مدیر اگر خواسیتم این امکان رو بزاریم که کلمات رو تغییر بده یک فایل XML داشته باشیم که قبل از فراخوانی Resource در صورت وجود کلمه در فایلXML به جای استفاده از Resource از XML ایجاد شده استفاده کنه .که یک مقدار نیاز به کد نویسی داره ( هر که سایت چند زبانه خواهد جور کد نویسی کشد ( از فرمایشات مهدی فرهانی ))
**********************
شروع کنید اما مواضب باشید که فایلهی xml راحتتر از همه خونده میشن و اطلاعات امنیتی رو ذخیره نکنید
دوست عزیز میگر میخواهد تو فایلXML چه چیزو نگه داری کنه امنیت رو به خطر بندازه ، آیا غیر از 4 تا کلمه که فقط معنی توش هست ، تو این فایلها هست .(شاید هم باشه ما خبر نداریم )