View Full Version : multi language
shahroozj
دوشنبه 18 مهر 1384, 10:49 صبح
سلام دوستان
می خواستم بپرسم بهترین راه حل multilanguage کردن یکWeb Application .Net چیه ؟
چطوری میشه کاری کرد که مشکل راست به چپ و چپ به راست را در multi language حل کرد ؟
Behrouz_Rad
دوشنبه 18 مهر 1384, 12:21 عصر
Welcome to the World of XML
احتمالا برخی از فوروم های Open Source رو دیدی که این قابلیت رو به استفاده کنندگانش میدن که فوروم رو به زبان دلخواه خودشون تغییر بدن.
این قابلیت رو در فایل XML ایجاد می کنند. دقیقا مثل Community Server
مثلا اگر تو حوصله داشته باشی که فایل XML زبان انگلیسی موجود در این فوروم رو فارسی کنی، معروف میشی!!!!
پس تا اینجا مشخص شد که باید از فایل XML کنی.
گام بعدی، نحوه ی استفاده از این فایل XML هست.
روش های متفاوتی وجود داره.
در هر جایی هم هرکسی به میل خودش عمل می کنه.
به عنوان مثال برای متن های ساده، از Literal Control و برای عناصر دیگه مثل Button ها با ایجاد یک تابع، یک کلاس یا هر چیزی که بتونی حداقل نام کنترل رو بهش پاس بدی و خاصیت دلخواه کنترلت رو تغییر بدی استفاده کن.
دیدی که چقدر آسون بود...
در مورد مشکل راست به چپ:
تابعی بنویس با برگشت مقداری از نوع رشته ای.
این تابع باید بنا به نوع زبان، یکی از مقادیر "ltr" یا "rtl" رو برگشت بده.
به شکل زیر از تابع استفاده کن:
<HTML dir="<%= myFunction() %>">
موفق باشید.
titbasoft
دوشنبه 18 مهر 1384, 13:10 عصر
برای Globalization سه راه وجو داره که بسته به طراحی نرم افزار باید از یکی از اونها استفاده بشه:
1. Detect and redirect : برای زبانهای مختلف صفحات مختلف طراحی شده و در مکانهای مختلف قرار می گیرند. مثلا یک فولدر به نام en می سازید و تمام فایل های انگلیسی رو توی اون قرار می دید و در زمان اجرا culter کاربر رو می خونید و به اون فولدر redirect اش می کنید. این کار میشه برای زبانهای دیگه مثل فارسی با فولدرهایی با نام های دیگه مثل fa انجام بشه. این راه زمانی پیسنهاد میشه که حجم متن بسیار بالاست و در پروژه execution بالایی روی interface صورت نمی گیره
2. Run-time adjustment : در این روش در زمان اجرا ترجمه برای زبان های مختلف از منابع مختلفی همچون database یا فایل های XML می تونه خونده بشه و نمایش داده بشه. چیزی مثل مثال آقای راد در پست قبلی. این روش برای نرم افزار های ساده با حجم متن محدود پیشنهاد میشه
3. Satellite assemblies : ساختن یک web application یکتا به طوری که متون وابسته به culter در resource file هایی که در satellite assembly کامپایل شده اند ، ذخیره می شوند و در زمان اجرا به طور خودکار بر اساس culter ی کاربر detect شده و نمایش داده می شوند. این روش در پروژه هایی با حجم execution بالا در interface توصیه می شود.
Behrouz_Rad
دوشنبه 18 مهر 1384, 14:05 عصر
ببخشید جناب titbasoft
جزئیات موارد فوق، منبعی هم دارند یا به صورت تجربی به دست اومدن؟
titbasoft
دوشنبه 18 مهر 1384, 14:35 عصر
بله ، کتاب زیر:
Training Kit—Developing Web Applications ... (MSPRESS) > Chapter 15 : Globalizing Web Applications > Lesson 1: Choosing an Approach
Behrouz_Rad
دوشنبه 18 مهر 1384, 20:19 عصر
مرسی :لبخندساده
javad3151
چهارشنبه 20 مهر 1384, 08:58 صبح
آقای titbasoft میشه در مورد روش سوم کمی بیشتر توضیح بدید (یا اگر مثالی هست آدرس بدید)
shahroozj
چهارشنبه 20 مهر 1384, 09:41 صبح
از دوستانی که زحمت کشیدن و پاسخ دادن ممنونم ، چندتا سوال
به نظر شما آیا خواندن مقادیر از XML اونم هربار که صفحه لود میشه سرعت لود را پایین نمیاره ؟ ایا Net. این مسئله را خودش حل کرده ؟
یک مشکلی که من دارم این است که نمی توانم کل صفحه را rtl بکنم یعنی بعضی قسمت ها که حاوی مقادیر از نوع تاریخ است باید ltr بماند چه توصیه ای دارید ؟
به فکر این افتادم که از روش Detect and redirect استفاده کنم ولی به این شکل که دو تا سورس داشته باشم یکی راست به چپ و دیگری چپ به راست نظرتان در این باره چیه ؟
ممنون از توجهتان
titbasoft
چهارشنبه 20 مهر 1384, 16:02 عصر
آقای titbasoft میشه در مورد روش سوم کمی بیشتر توضیح بدید (یا اگر مثالی هست آدرس بدید) امیدوارم بتونید بازش کنید
Behrouz_Rad
چهارشنبه 20 مهر 1384, 17:51 عصر
به نظر شما آیا خواندن مقادیر از XML اونم هربار که صفحه لود میشه سرعت لود را پایین نمیاره ؟ ایا Net. این مسئله را خودش حل کرده ؟
خیر! اگر صفحه به خودش پاس داده بشه، با چک کردن دستور Not IsPostBack، مقادیر از ViewState خوانده می شوند در غیر اینصورت، مجددا با فایل XML مراجعه خواهد شد. در سرعت نیز هیچ تاثیر محسوسی احساس نمی شود.
یک مشکلی که من دارم این است که نمی توانم کل صفحه را rtl بکنم یعنی بعضی قسمت ها که حاوی مقادیر از نوع تاریخ است باید ltr بماند چه توصیه ای دارید؟
از تگ Span با قرار دادن خاصیت dir آن به "ltr" برای نمایش تاریخ استفاده کنید.
موفق باشید.
ealireza
چهارشنبه 20 مهر 1384, 18:01 عصر
بنظر من چند تا UserControl درست کنید مثلا برای فارسی تو یک پوشه برا انگلیسی تو یک پوشه بعد هم اینطوری صداشون بزنید...
Dim a as new control
a.loadcontrol ("temp\Persian\main.ascx")
me.controls.add(a)
یه چیز تو همین مایه ها اگر تو املاش اشتباه نکرده باشم
با این روش راحت زیون رو تشخیص میدی بعد فایل مربوط رو لود میکنی در ضمن از PlaceHolder هم میتونی استفاده کنی..
موفق باشید
shahroozj
شنبه 23 مهر 1384, 10:06 صبح
بازم از راهنماییتون متشکرم .
تست می کنم اگر مشکلی بود مزاحم میشم
shahroozj
یک شنبه 24 مهر 1384, 12:31 عصر
جناب آقای راد من تصمیم گرفتم از روش xml استفاده کنم حالا به یک مشکل خوردم
اگر بخواهم متون داخل Script های javascript را تغییر بدهم باید چکار کنم ؟
Behrouz_Rad
یک شنبه 24 مهر 1384, 12:41 عصر
خیلی راحت قابل تغییر هستند!
با تگ انتساب:
<%= myFunction() %>
تابع شما مقدار برگشتی را در جای مربوطه قرار خواهد داد.
مثال:
alert('<%= myFunction() %>');
موفق باشید.
shahroozj
یک شنبه 24 مهر 1384, 17:06 عصر
مشکل اینجا است که تابع من تمامی متغیر ها را جایگزین می کنم و نمی تواند مقدار بازگشتی داشته باشد :(
Behrouz_Rad
یک شنبه 24 مهر 1384, 19:20 عصر
در ساختار تابع تجدید نظر کنید.
javad3151
دوشنبه 25 مهر 1384, 10:05 صبح
جناب titbasoft از فایلی که ارسال کردید خیلی متشکرم ، واقعا جالب بود
فایل ضمیمه یکی نمونه ساده برای سایت چند زبانه با روش SatelliteAssemblies است . میزارمش اینجا شاید بدرد کسی بخوره
shahroozj
دوشنبه 25 مهر 1384, 15:52 عصر
من یک متغیر public تعریف کردم و اینطوری مقدار دهی کردم
alert('<%=MyVar%>')
و جواب داد آیا این روش مشکل خاصی داره ؟
aidinwashere
سه شنبه 26 مهر 1384, 23:24 عصر
با سلام.
نکته ای در راهی که جناب راد فرمودند دیدم که برای فهم بیشتر خودم آن را مطرح میکنم.
اگر ما تمام کلمات را به فارسی ترجمه کنیم آنوقت مشکل جمله بندی خواهیم داشت زیرا ترجمه کلمه به کلمه یک جمله الزاما ترجمه صحیح آن نیست.
برای مثال یکی از دوستان یک فروم را ترجمه کرده بود که در آخر با یک آش شله قلم کار مواجه بودیم!
برای امثال اکثر جاها فایل های XML خودشون رو کلمه به کلمه منتشر میکنن که دوبار کاری نشه و از یک کلمه بشه چندین بار استفاده کرد که مشکلی که عرض کردم پدید میآید.
موفق باشید.
shahroozj
شنبه 30 مهر 1384, 12:34 عصر
البته من کلمه کلمه ترجمه نکردم و به صورت جمله جمله ترجمه کردم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.