۶ زهرا ف
چند زبانه کردن
جامعه فلاتر ایجاد شده در ۱۲ بهمن ۱۴۰۱

درود

برای دو زبانه بودن اپ، وقتی ویجتی را جدا کرده و بخواهیم در case‌های مختلف از آن استفاده کنیم، به عنوان مثال برای title‌های جدیدترین و پربازدیدترین چگونه باید دو زبانه کردن را پیاده سازی نمود؟

سلام. منظورتون چیزی غیر از این مطالب این ویدئو هست؟ لطفا با جزییات بیشتر سوالتون رو شرح بدید

یلدا محصلی ۱۲ بهمن ۱۴۰۱، ۱۸:۵۸

سلام و درود

در بخش پیاده سازی رابط کاربری سطح پایه (پروژه صفحه پروفایل) اپ چند زبانه آموزش داده شده. طبق این آموزش شما به context نیاز داری برای دسترسی به ریسورس‌های تعریف شده از طریق AppLocalizations.of(context).

و شما در ویجت جداگونه‌ای که ساختین به context دسترسی دارین.

بهترین پاسخ
مهرداد فدایی ۱۲ بهمن ۱۴۰۱، ۱۹:۰۲

بله. اگر بخواهیم اپ دو زبانه باشد، در همین ویدئو چطور میتوان کلمات پربازدیدترین و جدیدترین را دو زبانه کرد؟

زهرا ف ۱۲ بهمن ۱۴۰۱، ۱۹:۰۶

درست میفرمایید ولی لطف میکنید این دو کلمه رو اختصاصا بررسی کنید تا منظور بنده رو متوجه شوید؟

زهرا ف ۱۲ بهمن ۱۴۰۱، ۱۹:۰۹

کد رو بررسی کردم. از این نظر که هر دوشون نمونه ای از یک ویجت هستند منظورتون هست؟ طبیعتا در ابتدای کار باید باید به صورت key-value در فایل‌های arb مقادیر لازم و وارد کنید. بعد سمت کد با استفاده از نمونه ی کلاس localization جایی که میخواید به لیست تایتل بدید مثلا میگید : localization.mostVisited یا localization.newest و..

یلدا محصلی ۱۳ بهمن ۱۴۰۱، ۰۶:۵۱

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

۲ حالت داریم برای اینکه ویجت جدا داشته باشیم برای ویوهامون.

  • یکی اینکه دوتا ویجت مختلف داشته باشیم برای جدیدترین و پربازدیدترین و هر کدوم تایتل و لیست خودشو خودشو داره. تو این حالت مقادیر از داخل ویجت ست میشن. مثل:

stateless Newest

(...)Text

(...)ListView

------------

stateless MostVisited

(...)Text

(...)ListView

  • دوم اینکه شما برای جدیدترین و پربازدیدترین فقط یه ویجت دارین و یه حالت داینامیک داره و مقادیر از بیرون ست میشن به ویجت شما. مثل:

stateless ListWidget

(...)Text

(...)ListView

تو این حالت شما باید از صفحه‌ای که این ویجت رو ساختین مقادیر تایتل رو از AppLocalizations دریافت کنید و بعنوان پارامتر ورودی بدین به ListWidget.

مهرداد فدایی ۱۳ بهمن ۱۴۰۱، ۰۶:۵۹