ساخت اپلیکیشن چند زبانه در اندروید
سلام دوستان با آموزش ساخت اپلیکیشن چند زبانه در اندروید بازگشتیم ! ما خیلی زود برمیگریدم امیدوارم خسته نشده باشید 🙂
در این سری از آموزش های سایت می خوایم اپلیکیشن چند زبانه بسازیم خب برای این کار خیلی ساده کافی است مراحل زیر رو دنبال کنید در ادامه با ما همراه باشید.
خب به این کار که ما می خواهیم انجام دهیم Localization یا بومی سازی string (رشته) گویند ! مثل این کتابی ها صحبت کردم 🙂
به صورت معمولی اندروید زبان انگلیسی رت مرجع قرار می دهد حالا شاید بپرسید چرا ؟! ببینید ما در بخش res ⇒ values ⇒ strings.xml یک فایل داریم که می توانیم در آن string هایی تعریف کرده و از آنها استفاده کنیم خب شما می تونید آنها را فارسی قرار دهید ولی برای اینکه زبان را انگلیسی قرار دهید راهی دیگر وجود ندارد اگر کار قبل رو انجام دهید برای این منظور در همان بخش یک فایل به نام string-xx در بخش xx شما باید آن زبانی را که می خواهید پشتیبانی شود قرار دهید مثلا برای فارسی باید به این شکل باشد values-fa و داخل آن فولدر یک فایل به نام string.xml ایجاد کنید و برای زبان فرانسوی باید values-fr را ایجاد کنید و همانند قبل یک فایل string.xml در آن ایجاد کنید. من لیست تمامی زبان ها را قرار میدهم. و نحوه تغییر این زبان به گوشی کاربر بستگی خواهد داشت ! یعنی اگر گوشی کاربر روی انگلیسی باشد متن های انگلیسی لود می شود و اگر فارسی باشد فارسی نمایش داده می شود و ما در ادامه به سفارشی سازی آن نیز می پردازیم به طور مثال زبان رو انتخابی خواهیم کرد(یعنی خود کاربر زبان را انتخاب می کند)
همانند بالا عکس رو نگاه کنید متوجه گفته های من می شوید.
برای استفاده از این باید مثل مثال زیر عمل کنید
در بخش string ابتدا یک نام ایجاد کرده به اسم note_email
1 | <string name="note_email">Enter your email address</string> |
می تونیم به دو شکل ازش استفاده کنیم
یک با استفاده از خاصبت name به شکل زیر
1 | <TextView ... android:text="@string/note_email" /> |
یا با استفاده از برنامه نویسی یا به اصطلاح programmatically قبلش باید یک instance یا به زبان ساده باید یک findviewbyid را استفاده کنید.
1 | emailNote.setText(R.string.note_email); |
از کد های سخت مانند زیر استفاده نکنید سبب افزایش حجم برنامه می شود.
1 | <TextView ... android:text="Enter your email address" /> |
کد زیر هم جزو کدهای سخت می شود.
1 | emailNote.setText("Enter your email address"); |
حالا برای اینکه چندین زبانه بشه کافی محتویات فایل string.xml را به بخش values-fa در بخش string.xml کپی کنید و به جای زبان به طور مثال از انگلیسی به فارسی تغییر دهید.دقت کنید فایل اول در res ⇒ values ⇒ strings.xml قرار دارد وفایل دومی در میسر res ⇒ values-fa ⇒ strings.xml قرار دارد.
و برای اینکه زبان رو انتخابی کنیم تعدادی دکمه ایجاد کرده و در رویداد کلیک هر کدام کد زیر را قرار می دهیم
1 2 3 4 5 | Resources resources = getResources(); Configuration configuration = resources.getConfiguration(); DisplayMetrics displayMetrics = resources.getDisplayMetrics(); configuration.setLocale("fa"); resources.updateConfiguration(configuration,displayMetrics); |
الان fa به معنی فارسی بوده و اگر زبان دیگری خواستید باید ابتدا values-xx را ساخته و در قسمت setLocale آن زبان رو قرار دهید.
تمام شد انشالله ازش استفاده لازم رو بکنید.
سلام
میخواستم بدونم وقتی کاربر یکبار زبان انتخابی خودش رو انتخاب کنه در ورودهای بعدیشم به برنامه همون زبان هست یا باید در هر بار وارد شدن انتخاب کنه؟
درود
بخش setLocale مقدار String نمیپذیره و من حالت های زیادی رو تست کردم، به جای (“setLocale(“fa باید بشه (setLocale(Locale.IR که متاسفانه چنین مقداری موجود نیست و فقط کشور های رده بالا رو داره…
اگر راه حلی دارید واقعاً ممنون میشم بفرمایید چون خیلی گیرکردم اینجا…