PDA

View Full Version : پروژهای چند زبانه



maryam_80
سه شنبه 25 دی 1386, 07:58 صبح
با سلام

ما یک پروژه داریم ( vb6 تحت ویندوز) که زبان اصلی تمام منوها،فرمها،پیغام ها و... به زبان انگلیسی می باشد
حالا می خواهیم این پروژه را به زبان فرانسه تبدیل کنیم
در اصل می خواهیم فقط یک نسخه داشته باشیم و با توجه به انتخاب کاربر زبان آن تغییر کند

ممنون می شوم که دوستان تجربیات خودشان را در زمینه پروژهای چند زبانه مطرح کنند

bobrus
سه شنبه 25 دی 1386, 08:32 صبح
سلام
شما باید مراحل زیر رو انجام بدین
1- برای تمام پیامها و منوها و فرمها و برچسبها که نیاز به تغییر زبان دارن یه بانک تشکیل بدین به اینصورت که برای هر فرمی که داری یه جدول می سازی و در اون یه فیلد برای نام اشیائی که باید زبونشون عوض شه باشه
(مثل ControlName) و به هر تعداد که زبان می خواهید داشته باشید یه فیلد جداگانه می سازید
(مثل englishو french) یعنی برای دو زبانه بودن برنامه از سه فیلد در Table استفاده می کنید
2- تو برنامت یه منو برای زبان تعریف کنی و بانکش رو هم بسازی که معلوم بشه که کاربر از کدوم زبون استفاده می کنه
3-حالا دوتا کار می تونی بکنی اول اینکه : تو اول برنامه که میخواد اجرابشه دستورات مربوط به ارتباط با بانک رو بنویسی و همه برچسبها؛منوها ؛ فرمها و خلاصه هرچیزی که باید نوشتش عوض بشه رو متنش رو از این بانکی که ساختی خارج کنی و به برنامه منتقل کنی بعد فرم اصلی برنامه رو اجرا کنی دوم اینکه : راه دوم اینکه وقتی یه فرمی می خواد اجرا بشه از تو بانکی که ساختی Table مربوطه رو پیدا کنی و بعد توی برچسبها و . . .همون فرم قرار بدی
انیجوری سرعت لود فرم پایین میاد
اگه نتونستی بگو واسط یه نمونه کوچیک بذارم

ƒxmahdi
سه شنبه 25 دی 1386, 08:42 صبح
شما ابتدا باید تمامی متن های نمایش داده شده در برنامه بر روی کاغذ یا جای دیگر به فراسنه تبدیل کنید سپس در رویداد تغییر زبان به فرانسه کد زیر را بنویسید
MainMenu.Caption = ّFiles
در واقع شما در رویداد مورد نظر فقط Caption را تغییر می دهید من چند سال پیش یه برنامه نوشتم که دو زبان فارسی و انگلیس داشت پروژه را ضمیمه کردم امیدوارم مشکل حل بشه

Mbt925
سه شنبه 25 دی 1386, 19:19 عصر
روش معمول و استاندارد برای چند زبانه کردن برنامه ها این روشه:

jk
چهارشنبه 26 دی 1386, 10:12 صبح
البته مثال بالا در مورد زبانهایی به کار رفته است که دارای قواعد و ساختارهای مشترک هستند. البته سرعت بالای اجرای برنامه برای تغییر زبان قابل توجه است.

شما حالتی را تصور کنید که برنامه از دو زبان عربی و انگلیسی استفاده می کنه. در این حالت به عنوان مثال باید Right to Left آبجکتها را هم در نظر داشته باشیم.

Mbt925
چهارشنبه 26 دی 1386, 11:03 صبح
توی پروژه هایی که قراره دوزبانه یا چندزبانه باشن ،
Label ها , یا TextBox طوری قرار می گیرن که بتونین هر دوزبان رو شامل بشن ،

توی پروژه های نچندان مهم معمولا RightToLeft اه CheckBox ها و OptionButton ها رو تغییر نمیدن ، با این کار با کم کردن یه کم از قدرت برنامشون ، کار خودشونو ساده می کنن.

بطور معمول توی برنامه های چند زبانه برای Label ها و سایر ابزاری که میشه در زمان طراحی یه مکان مناسب بهشون داد ، کار خاصی غیر از تغییر متن نیاز نیست ولی برای CheckBox ها و سایر ابزاری که توشون RightToLeft اهمیت داره ، معمولا RightToLeft رو هم تغییر میدیم.
البته به هیچ وجه CheckBox و OptionButton خود ویبی پیشنهاد نمیشه.

bobrus
چهارشنبه 26 دی 1386, 12:57 عصر
این فایلی رو که واستون میزارم همون بانکیه که گفتم می تونین بسازین. از یه برنامه ایتالیایی ورداشتم که توش چند تازبان فرانسه انگلیسی و ... تعریف شده شما هم یه همچین بانکی می خوای تا بتونی ازش استفاده کنی
با این روش اگه هروقت بخوای یه زبان بهش اضافه کنی به سادگی امکان پذیره

ftmotlagh
چهارشنبه 26 دی 1386, 15:01 عصر
بهترین روش،روش آقای Mbt925 (http://barnamenevis.org/forum/member.php?u=34702) است...

Hossein Bazyan
چهارشنبه 26 دی 1386, 18:01 عصر
بهترین روش،روش آقای Mbt925 (http://barnamenevis.org/forum/member.php?u=34702) است...

سلام
در یکسری حالت میشه گفت بهترین روشه اما در اغلب موارد نمیتونه بهترین حالت باشه

نواقص:

از فایلهای اضافی ( ini ) استفاده میکنه که همیشه باید دم دست باشندو یکسری کنترلهای دیگر مربوط به فایلها .
چون این فایلها در دسترس هستند پس قابل دستکاری میباشند ( البته شاید دستکاری یک نوع امتیاز باشد - برای اضافه کردن زبان جدید توسط کاربر) اما فکرش را بکنید که نوشتن در فایلهای ini دارای یه سری قوانین است و اگر رعایت نگردد فایل کار نمیکنه و نتایج درست نمایش داده نخواهد شد.
زمان استفاده از این فایلها فکر کنم دیگه منسوخ شدهفواید:

مهمترین فایده ش اینه که کاربر میتواند یک سری اطلاعات ( مثلا زبان جدید) به برنامه اضافه کند.
همیشه در دسترس هستند و میتوان در هر زبان برای لهجه های مختلف آن زبان اطلاعات را تغییر داداما به نظر من چون ما نمیخواهیم برنامه های Open source بنویسیم بهتر از است از این فایلها استفاده نکنیم . بهترین شیوه به نظر من Resource فایلها هستند من از این روش استفاده میکنم و به دو زبان انگلیسی و هلندی برنامه نوشته ام و خیلی هم راضیم .
اضافه کردن زبان جدید در این روش توسط کاربرهای مبتدی امکان پذیر نیست و کاربرهای دیگه هم میتوانند با Resource hacker آنرا تغییر یا اضافه کنند.
برای اینکار من به شیوه زیر عمل میکنم

ابتدا یک تابع برای تغییر متغییرها مینویسم که بتوان با ارسال متغیری زبان مورد نظر را انتخاب و تغییر داد .
سپس در Resource از یک مقدار مشخص تا مقدار مشخص دیگری را به هر زبان اختصاص میدهم . مثلا از 100 تا 199 برای انگلیسی و از 200 تا 299 برای هلندی
حال در تایع نوشته شده برای تغییر زبان مقادیر را از Resource گرفته و به ترتیب به اشیا اختصاص میدهم
مثلا برای انگلیسی مقداری که به تابع میفرستم را 100 انتخاب میکنم و برای هلندی 200 و به ترتیب مقادیر را از Resource خوانده و به اشیا نسبت میدهم .

Mbt925
چهارشنبه 26 دی 1386, 18:16 عصر
سلام
در یکسری حالت میشه گفت بهترین روشه اما در اغلب موارد نمیتونه بهترین حالت باشه

نواقص:
از فایلهای اضافی ( ini ) استفاده میکنه که همیشه باید دم دست باشندو یکسری کنترلهای دیگر مربوط به فایلها .
چون این فایلها در دسترس هستند پس قابل دستکاری میباشند ( البته شاید دستکاری یک نوع امتیاز باشد - برای اضافه کردن زبان جدید توسط کاربر) اما فکرش را بکنید که نوشتن در فایلهای ini دارای یه سری قوانین است و اگر رعایت نگردد فایل کار نمیکنه و نتایج درست نمایش داده نخواهد شد.
زمان استفاده از این فایلها فکر کنم دیگه منسوخ شدهفواید:
مهمترین فایده ش اینه که کاربر میتواند یک سری اطلاعات ( مثلا زبان جدید) به برنامه اضافه کند.
همیشه در دسترس هستند و میتوان در هر زبان برای لهجه های مختلف آن زبان اطلاعات را تغییر داداما به نظر من چون ما نمیخواهیم برنامه های Open source بنویسیم بهتر از است از این فایلها استفاده نکنیم . بهترین شیوه به نظر من Resource فایلها هستند من از این روش استفاده میکنم و به دو زبان انگلیسی و هلندی برنامه نوشته ام و خیلی هم راضیم .
اضافه کردن زبان جدید در این روش توسط کاربرهای مبتدی امکان پذیر نیست و کاربرهای دیگه هم میتوانند با Resource hacker آنرا تغییر یا اضافه کنند.
برای اینکار من به شیوه زیر عمل میکنم
ابتدا یک تابع برای تغییر متغییرها مینویسم که بتوان با ارسال متغیری زبان مورد نظر را انتخاب و تغییر داد .
سپس در Resource از یک مقدار مشخص تا مقدار مشخص دیگری را به هر زبان اختصاص میدهم . مثلا از 100 تا 199 برای انگلیسی و از 200 تا 299 برای هلندی
حال در تایع نوشته شده برای تغییر زبان مقادیر را از Resource گرفته و به ترتیب به اشیا اختصاص میدهم
مثلا برای انگلیسی مقداری که به تابع میفرستم را 100 انتخاب میکنم و برای هلندی 200 و به ترتیب مقادیر را از Resource خوانده و به اشیا نسبت میدهم .

دوست عزیز این روش اصلا منسوخ نشده ،
به نظر من این روش خیلی بهتر از روش شماست.


از فایلهای اضافی ( ini ) استفاده میکنه که همیشه باید دم دست باشندو یکسری کنترلهای دیگر مربوط به فایلها .این که یه سری فایل ها باید دم دست برنامه باشن خیل عادیه ، 99% برنامه ها به یه سری فایل ها دم دستشون احتیاج دارن.

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


چون این فایلها در دسترس هستند پس قابل دستکاری میباشند ( البته شاید دستکاری یک نوع امتیاز باشد - برای اضافه کردن زبان جدید توسط کاربر) اما فکرش را بکنید که نوشتن در فایلهای ini دارای یه سری قوانین است و اگر رعایت نگردد فایل کار نمیکنه و نتایج درست نمایش داده نخواهد شد.نوشتن در این فایل ها انقدر ساده هست که هر کاربری با دیدن نمونه ای که در کنار برنامه هست می تونه زبان جدید به برنامه اضافه کنه.
در کد نویسی هم میشه مقدار پیش فرضی در نظر گرفت که اگه ترجمه موردنظر در فایل موجود نباشه ، از اون مقدار پیش فرض استفاده بشه.

به نظر من بهترین روش موجوده ، از همه نظر .

Dariuosh
پنج شنبه 27 دی 1386, 07:42 صبح
والا تا اونجا که من میدونم این مشکل تو VB8 حل شد .:قلب:
فکر میکنم برنامرو تبدیل کنی هم دنیا رو داری هم ...