بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چند زبانه کردن اپ

مدیریت گفتگو
120931 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام 

دوستان من می خوام اپلیکیشن من از چند زبان پشتیبانی کنه 

تو اولین جستجو فهمیدم که باید از localization استفاده کنم و این امکان و جود داره که هم به صورت داینامیک  با ایجاد resourse 

متن ها رو به زبان های مختلف ست کنیم هم در main.storyboard فایلی ایحاد می شه که با توجه به object ID هر لیبل متنش رو به زبان های مختلف ست کنیم 

اینکار خیلی خوبه اما یه مساله هست  اینکه در زبان فارسی چپ و راست می شن ویو ها نسبت به سایر زبان ها نیاز میشه که ما مجددا ویوی جدید بزنیم و عملا به نظرم اینکار دیگه نیازی نیست حداقل برای زبان فارسی و انگلیسی درسته ؟ 

و یه سوال دیگه اینکه  میشه کاری کرد لیبل ها مثل اندروید با توجه به اینکه متن توشون فارسی هست راست نویس بشن اتومات ؟ 

اگه باز این اتفاق بشه انجام داد میشه باز ویو ها رو طوری تا یه حدی دیزاین کرد که نیازی نباشه مجددا ساخته بشن و فقط بعضی ویو ها رو دو بار ساخت 

و در نهایت پیشنهاد اقای کاشی زاده برای چند زبانه کردن اپ چیه که به بهینه ترین حالت ممکن انجام بشه 

ممنون از راهنمایی هاتون به ویژه اقای کاشی زاده 

نظرات

کاشی زاده 10 سال پیش
از این لینک و لینک برای مطالعه این مبحث میتونید استفاده کنید . برای چپ چین و راست چین کردن اتوماتیک هم این لینک مفید هست .

پاسخ‌ها 2

شهریار توکلی 10 سال پیش

درود . 

در راست چین کردن برای زبان فارسی ما فقط متن رو چپ و راست نمی کنیم بلکه یک مربع یا بلاک رو می بریم یک ور برای این راه  وجود داره ؟

نظرات

کاشی زاده 10 سال پیش

خیلی ساده میتونید Design صفحات رو تفکیک کنید ، در زیر برای این موضوع مثالی زدم :








نظرات

120931 10 سال پیش
آقای کاشی زاده من روی این چند زبانه کردن یکم کار کردم با توجه به توضیحات شما و به چند تا نکته رسیدم که به نظرم اومد اضافه کنم به توضیحات شما و البته یه سوال هم داشتم : راجب بحث چپ چین و راست چین کردن خود اپل این امکان رو می ده که نیازی نیست به استفاده از کدی و اگه قید گذاری خوبی انجام بدیم خپ اپل وقتی زبان به حالت فارسی می ره کل قید ها رو از راست به چپ می کنه و مثلا عکسی که در سمت چپ بوده در ویوی لاتین با رفتن به زبان فارسی عکس اتو مات به راست می یاد . و عملا دیگه نیازی نیست حتی ویو ها رو دوباره ساخت و فقط کافیه استرینگ مین رو تغییر بدیم و نیازی به تغییر اینتر فیس نیست
120931 10 سال پیش
اما من یه مشکلی دارم الان اینکه وقتی توی اپ زبان رو تغییر می دم همون لحظه نمی تونم بگم بره از استرینگ مربوطه متن های اینترفیسم رو ست کنه یا به عبارتی صفحه رو رفرش کنم و باید حتما از اپ خارج بشم و بیام توی اپ مجددا تا ببینم زبان اپ تغییر کرده
120931 10 سال پیش
می خواستم ببینم دقیقا چه اتفاقی می افته با خارج شدن از برنامه که زبان اون موقع تغییر می کنه و چطور میشه این کار رو بدون خارج شدن از اپ هندل کرد و به عبارتی صفحه رو ریلود کرد ؟
کاشی زاده 10 سال پیش
در رابطه با تغییر اتوماتیک اولین مشکلی که وجود داره این هست که در سیستم عامل iOS از زبان فارسی به صورت کامل پشتیبانی نمیشه . دومین مشکل این هست که برخی از آیتم ها نیاز به تغییرات اساسی برای نمایش دارند و مطمئنا خود سیستم نمیتونه به درستی اونها رو مجددا چیدمان کنه . نکته بعدی این هست که امکان تنظیم خودکار حالت نمایش در نسخه جدید سیستم عامل معرفی شده و در نسخه های قدیمی تر وجود ندارد .
کاشی زاده 10 سال پیش
برای اینکه به صورت RealTime این کار انجام بشه روش های زیادی هست که باید در موردش تحقیق کنید ، من چند مثال رو براتون قرار میدم : لینک ، لینک ، لینک
120931 10 سال پیش
نه ببینید الان مساله من سر عوض شدن main.storyboard هستش به این صورت که می خوام توی اپ کاربر مثلا بگه زبان برنامه فرانسوی بشه و با انتخاب زبان فرانسوی توی خود اپ محتوای مربوط به باتن و تکست ها و ... از روی main.string(fr) خونده بشه و زبان صفحه تغییر کنه NSUserDefaults.standardUserDefaults().setObject([selectedLanguage], forKey: "AppleLanguages") NSUserDefaults.standardUserDefaults().synchronize() این دو خط کد زبان رو تغییر میدن ولی نه به صورت ران تایم بلکه باید از اپ خارج بشم و مجددا وارد بشم تا این تغییر زبان رو مشاهده کنم و می خوام ببینم راهی هست که وقتی کاربر زبان رو توی اپش تغیین کرد از storyboard مربوطش محتوای باتن و ... رو بخونه ؟
کاشی زاده 10 سال پیش
اگر میخواید محتوا به صورت کامل تغییر کنه و مثلا Storyboard جدیدی لود بشه باید اپلیکیشن ریست بشه حتما ، اگر بخش مربوط به Life Cycle کنترلر هارو مطالعه کرده باشید میدونید که زمانی که متد View did load صدا زده میشه درواقع کنترلر ما با استفاده از فایل XML مربوطش ساخته میشه پس اگر قصد دارید که این فایل رو تغییر بدید باید یکبار برنامه ریست بشه .
120931 10 سال پیش
خب مگه نباید وقتی وارد یه ویو کنترلر دیگه میشیم عملا زبان تغییر کنه و محتوای استوری برد جدید رو بخونه من احساس می کنم وقتی داریم از یه ویو کنترلر به یه ویو کنترلر دیگه می ریم دستوری که نوشتیم باعث میشه همچنان از همون main.story(base) بخونه و درنتیجه علی رغم تغییر زبان همچنان محتوا ها تغییر نکنن ولی با خارج شدن از اپ و دوباره وارد شدن می ره و از همون ابتدا که می خواد از لانچ اسکرین وارد ویوی اپ بشه استوری برد مربوطه لود میشه
120931 10 سال پیش
قطعا برای تغییر زبان منطقی نیست کاربر رو از اپ بندازیم بیرون و مجددا اپ رو اجرا کنه
کاشی زاده 10 سال پیش
زمانی که اپلیکیشن اجرا میشه یکبار Storyboard لود میشه و در حافظه نگهداری میشه و زمانی که ViewController لود میشه اطلاعات مربوط به View مربوطه لود میشه و نه تمامی Storyboard .
کاشی زاده 10 سال پیش
شما باید ببنید تغییر زبان مد نظرتون هست یا تغییر کلی ساختار ، اگر قصد دارید کل ساختار تغییر کنه پس حداقل ویو فعلی باید مجددا لود بشه . در رابطه با استفاده از nib file به جای Strotyboard تحقیق کنید مطمئنا به نتیجه خوبی میرسید .
120931 10 سال پیش
اوکی ... به هر حال باز مساله من با این موضوع حل نمی شه nib file فکر می کنم برای کاربرد ساخت ویوی های کاستومایز کاربرد داره و در نهایت نمی تونه جایگزین استوری برد و ویو کنترلر بشه می شه توی ویو کنترلر از یه نیب فایل استفاده کرد با این تفاسیر شما نظرتون اینه که اپ رو ببندیم و مجددا باز کنیم ؟
کاشی زاده 10 سال پیش
قبل از اینکه Storyboard معرفی بشه از nib file استفاده می شده . اگر لینکی که قرار دادم رو با دقت مطالعه کنید در این رابطه توضیحات لازم را داده اند .
120931 10 سال پیش
به هر حال الان storyboard مطرح شده و قابل استفاده است و از طرفی هم من بخش عمده ای ویو هام توی استوری برد ساخته شده و دارم استقاده می کنم و عملا انتقال و تبدیل به نیب فایل کردنشون کار زمان بری خواهد بود و کلی پروژه رو عقب می ندازه حالا نمی دونم راهی وجود داشته باشه که من ندونم ولی اونچیزی که من در مورد نیب فایل یاد گرفتم یه مقدار درد سر خواهم داشت برای اینکه تبدیل کنم ویو هام رو و ببرمشون در قالب یه نیب فایل

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .