PDA

View Full Version : سایت چند زبانه



TNZ187
دوشنبه 06 اسفند 1386, 20:06 عصر
سلام
برای داشتن یک سایت چند زبانه ، بهتر است چگونه اطلاعات هر زبان را ذخیره کنیم ؟
مثلا چند دیتابیس داشته باشیم ، یا برای جداول مورد نیاز هر زبان یک نمونه داشته باشیم یا هر روش دیگری . :افسرده:

Behrouz_Rad
دوشنبه 06 اسفند 1386, 20:31 عصر
اگر جستجو می کردی تاپیک های خوبی در این مورد پیدا می کردی.
به هر حال بحث Localization در دات نت بسیار بسیار ساده است.
کافیه در مورد localization+asp.net در گوگل جستجو کنی تا نتایج خوبی رو به دست بیاری.
اطلاعات مربوط به زبان در فایل های Resource و با ساختار XML ذخیره میشن و بر مبنای Culture ای که انتخاب می کنی به سایت اعمال میشن.

موفق باشید.

TNZ187
دوشنبه 06 اسفند 1386, 20:42 عصر
سلام
من منظورم اطلاعاتی که قرار در بانک ذخیره بشه بود نه اطلاعات UI . ( البته من مطلب Localize رو خوندم ولی نتوستم جوابم رو پیدا کنم .:افسرده:) .

برای داشتن یک سایت چند زبانه ، بهتر است چگونه اطلاعات هر زبان را ذخیره کنیم ؟
مثلا چند دیتابیس داشته باشیم ، یا برای جداول مورد نیاز هر زبان یک نمونه داشته باشیم یا هر روش دیگری

Behrouz_Rad
دوشنبه 06 اسفند 1386, 20:50 عصر
خیلی سعی کردم منظورت رو متوجه بشم اما در نهایت به جوابی که در پست قبلیم دادم رسیدم!

TNZ187
دوشنبه 06 اسفند 1386, 20:53 عصر
مثلا می خواهیم که اخباری به چند زبان داشته باشیم . این رو چه طور با localization کار کنم ؟ یعنی یک کد بنویسم که فایل XML تولید بکنه و من به جای ارتباط با دیتابیس با اون ارتباط برقرار کنم و اون رو نشون بدم ؟ ( که این می شه معادله استفاده از جداول مختلف برای زبان های مختلف )

Behrouz_Rad
دوشنبه 06 اسفند 1386, 21:09 عصر
مشکلت در طراحی دیتابیسه؟

پ.ن: اگر کمی وقت برای توضیح مشکلت بگذاری و خودت رو جای کسی قرار بدی که اطلاعات اون نسبت به مشکلت تنها در 2 خط خلاصه میشه، میتونی در وقت و هزینت صرفه جویی زیادی بکنی.

TNZ187
دوشنبه 06 اسفند 1386, 21:11 عصر
سلام
بله ، مشکل در همین هستش ، منتها برای برخی دلایل فکر کردم بهتره که اینجا مطرح کنم تا بخش دیتابیس سایت . ( البته شاید هم اشتباه کرده ام )

MehranZand
دوشنبه 06 اسفند 1386, 21:11 عصر
مثلا می خواهیم که اخباری به چند زبان داشته باشیم . این رو چه طور با localization کار کنم ؟ یعنی یک کد بنویسم که فایل XML تولید بکنه و من به جای ارتباط با دیتابیس با اون ارتباط برقرار کنم و اون رو نشون بدم ؟ ( که این می شه معادله استفاده از جداول مختلف برای زبان های مختلف )

به مواردی که اقای راد گفتن عمل کنید نتیجه میگیرید ، ولی خب شاید اول یک مقدار موضوع
پیچیده باشه، اما کلا بحث ساده ای است ، در مورد خبر به دو زبان هم ابن بر میگرده به طراحی
دیتا بیستون.

Behrouz_Rad
دوشنبه 06 اسفند 1386, 21:15 عصر
یک فیلد که محتویات خبر به زبان دیگه رو ذخیره می کنه در کنار فیلد فارسی قرار بده.

TNZ187
دوشنبه 06 اسفند 1386, 21:19 عصر
سلام
این کار باعث پایین اومدن سرعت لیست شدن صحفه های Sql در سرور نمی شه ؟ یعنی چون جدول سنگین می شه ، برای سرور sql برخورد با این جدول سخت نمی شه ؟ ( که باعث پایین اومدن سرعت می شه . می بخشید ، هر کجا تشخیص دادید بحث به ASP.net ربط نداره بگید بس کنم ) .

Behrouz_Rad
دوشنبه 06 اسفند 1386, 21:26 عصر
حالا که پرسیدی همینجا ادامه بده ;)
نه دوست عزیز. هیچ تاثیری در کاهش سرعت نداره. :)

TNZ187
دوشنبه 06 اسفند 1386, 21:31 عصر
( ممنون که اجازه ادامه دادید . :قلب: )
خوب در مورد چند جدول که هر کدام برای یک زبان باشند و به هم ارتباط داده شده باشند چی ؟ مزایا و معایبی نسبت به پیشنهاد شما داره ؟ ( یا خیلی فرق نداره ؟ )
( یعنی حجم جداول در سرعت SQL موثر نیست ؟ البته این مطلب برام خیلی مهمه . )

Behrouz_Rad
دوشنبه 06 اسفند 1386, 21:43 عصر
افزایش کارایی دیتابیس به عوامل زیادی بستگی داره.
مثلا ایجاد ایندکس های صحیح بر روی دیتابیس به میزان قابل توجهی سرعت رو افزایش میده. و یا ایجاد File Group های مختلف و نرمال سازی درست. و شامل کردن "فقط" فیلدهای مورد نیاز در خروجی و ...
افزایش حجم جداول و به طبع اون دیتابیس تاثیری در کارایی SQL Server نداره. مهم، رعایت مواردی هست که با عمل به اونها میتونی Performance رو به میزان محسوسی افزایش بدی.
ایجاد جدول برای هر زبان خوب هست (البته بستگی به تعداد زبان ها داره) چون با اینکار از ایجاد مقادیر null در جدول جلوگیری می کنی.

موفق باشید.

Alireza_Salehi
دوشنبه 06 اسفند 1386, 23:08 عصر
افزایش کارایی دیتابیس به عوامل زیادی بستگی داره.
مثلا ایجاد ایندکس های صحیح بر روی دیتابیس به میزان قابل توجهی سرعت رو افزایش میده. و یا ایجاد File Group های مختلف و نرمال سازی درست. و شامل کردن "فقط" فیلدهای مورد نیاز در خروجی و ...
افزایش حجم جداول و به طبع اون دیتابیس تاثیری در کارایی SQL Server نداره. مهم، رعایت مواردی هست که با عمل به اونها میتونی Performance رو به میزان محسوسی افزایش بدی.
ایجاد جدول برای هر زبان خوب هست (البته بستگی به تعداد زبان ها داره) چون با اینکار از ایجاد مقادیر null در جدول جلوگیری می کنی.

موفق باشید.

نظرت در مورد استفاده از فیلد های XML برای localization به جای چند فیلد یا چند جدول چیه؟

مهدی کرامتی
دوشنبه 06 اسفند 1386, 23:50 عصر
من یه سیستم خاص برای انجام اینکار دارم که توضیح دادن روش کارش 5 تا 6 ساعت طول میکشه. اما این سیستم رو در کلاس مباحث پیشرفته ASP.NET بیان میکنم (در یک جلسه با صرف وقت فوق). برای کسب اطلاعات بیشتر رجوع شود به بخش اعلانات.

Alireza_Salehi
سه شنبه 07 اسفند 1386, 08:27 صبح
من یه سیستم خاص برای انجام اینکار دارم که توضیح دادن روش کارش 5 تا 6 ساعت طول میکشه. اما این سیستم رو در کلاس مباحث پیشرفته ASP.NET بیان میکنم (در یک جلسه با صرف وقت فوق). برای کسب اطلاعات بیشتر رجوع شود به بخش اعلانات.

قبلا استفاده از XML برای Localization رو در یک وب سایت تجربه کرده ام ، خواستم نظر دیگران رو راجع به کارایی و تبعاتش بدونم.

چون localization پایگاه داده به روش Relational به اندازه کافی مطلب حرفه ای در موردش میشه پیدا کرد.

shahramasp
سه شنبه 07 اسفند 1386, 09:03 صبح
من هم یک فروشگاه با قابلیت N زبانه نوشتم که از Resource استفاده کردم برای مدیریت جداولم هم تمامی جداولم دارای یک فیلد Lang هستند که Page.Culture را در اون نگهداری میکنم وقتی هم که کاربر زبان سایت رو عوض میکنه طبیعتا Page.Culture هم عوض می شه و بقیه ماجرا.

Behrouz_Rad
سه شنبه 07 اسفند 1386, 10:06 صبح
نظرت در مورد استفاده از فیلد های XML برای localization به جای چند فیلد یا چند جدول چیه؟

اگر به پست های صفحه ی قبلم دقت میکردی میدیدی که استفاده از Resource ها رو "برای عناوین قسمت های مختلف سایت" پیشنهاد کردم که حتما می دونی ساختار XML دارند اما...
با توجه به اینکه محتوای یک خبر جزء داده هایی با حجم زیاد محسوب میشه، فایل XML در این حالت کاربردی نداره.
فایل های XML معمولا برای ذخیره ی داده هایی با حجم کمتر استفاده میشن. مثلا ذخیره ی معادل زبان های مختلف بخش های گوناگون سایت.

موفق باشید.

Alireza_Salehi
سه شنبه 07 اسفند 1386, 19:18 عصر
اگر به پست های صفحه ی قبلم دقت میکردی میدیدی که استفاده از Resource ها رو "برای عناوین قسمت های مختلف سایت" پیشنهاد کردم که حتما می دونی ساختار XML دارند اما...
با توجه به اینکه محتوای یک خبر جزء داده هایی با حجم زیاد محسوب میشه، فایل XML در این حالت کاربردی نداره.
فایل های XML معمولا برای ذخیره ی داده هایی با حجم کمتر استفاده میشن. مثلا ذخیره ی معادل زبان های مختلف بخش های گوناگون سایت.

موفق باشید.

من گفتم فیلد XML در دیتابیس نه فایل XML! مطمئنا این دو تا فرق زیادی دارند.

مثلا:


CREATETABLE [dbo].[T_NEWS](
[N_ID] [bigint] NOTNULL,
[N_TITLE] [xml] NULL,
[N_CONTENT] [xml] NULL,
[N_IMAGE_URL] [varchar](50)NULL,
CONSTRAINT [PK_T_NEWS] PRIMARYKEYCLUSTERED([N_ID] ASC)ON [PRIMARY])


با مقادیر:


N_ID N_TITLE N_CONTENT N_IMAGEURL
1 <title fa-IR="" en-US=""/> <content fa-IR="" en-US=""/> ~/Images/n1.gif
2 <title fa-IR="" en-US=""/> <content fa-IR="" en-US=""/> ~/Images/n2.gif
3 <title fa-IR="" en-US=""/> <content fa-IR="" en-US=""/> ~/Images/n3.gif
4 <title fa-IR="" en-US=""/> <content fa-IR="" en-US=""/> ~/Images/n4.gif

Behrouz_Rad
سه شنبه 07 اسفند 1386, 19:44 عصر
آها! کلمه ی "دیتابیس" رو نگفته بودی! چون کلمه ی "فیلد" رو میشه در چند حوزه فرض کرد. مثل کلمه ی "دولت" ;)
روش خوبیه اما باز هم اطلاعات هرز در جدول قرار می گیره.

Alireza_Salehi
سه شنبه 07 اسفند 1386, 19:53 عصر
آها! کلمه ی "دیتابیس" رو نگفته بودی! چون کلمه ی "فیلد" رو میشه در چند حوزه فرض کرد. مثل کلمه ی "دولت" ;)
روش خوبیه اما باز هم اطلاعات هرز در جدول قرار می گیره.

حتما می دونید که ذخیره سازی فیلد XML در دیتابیس با چیزی که دیده میشه تفاوت داره (اطلاعات زاید به حداقل میرسه)، آیا باز هم سهولت استفاده از اون نمی چربه؟

Behrouz_Rad
سه شنبه 07 اسفند 1386, 20:21 عصر
بحث من هم سر همون حداقله.
مسلما XML مزایا و انعطاف پذیری زیادی داره و کاملا در این مورد باهات موافقم.
اما برای متن هایی که 2 یا 3 زبان رو شامل هستند، استفاده از جداول مختلف رو به شخصه ترجیح میدم.

m1975b
جمعه 10 اسفند 1386, 19:18 عصر
با سلام
من سایت چهار زبانه را با UiCulure درست کردم و جواب داد.