Mohammad_Amin
Mohammad_Amin
خواندن ۵ دقیقه·۸ ماه پیش

پکیج intl در فلاتر

ابتدا براي مشاهده مطالب و نصب اين پکيج مي تونيد به pub.dev که package manager فلاتر هست مراجعه کنيد و پکيج intl را نصب و با توجه به مراحل زير از اين پکيج استفاده کنيد.

پکيج intl ابزاري است که مي تونه کارهاي مختلفي براي ما انجام بده چند نمونه از اين کارها رو در زير براي شما ليست مي کنم:

  1. فرمت بندي اعداد و تاريخ(در اين مقاله مفصل در موردش توضیح می دهیم.)
  2. بين المللي سازي يا همون internationalization(چند زبانه سازي اپليکيشن هامون مثلا برنامه مون هم انگلیسی پشتیبانی کنه هم فارسی یعنی در این مثال برنامه ما دو زبانه است.)
  3. بومي سازي يا همون localization

فرمت بندی تاریخ

فرمت بندی اعداد و تاریخ رو در این مقاله براتون شرح می دم که در ابتدای کار می ریم سراغ فرمت بندی تاریخ و سپس فرمت بندی اعداد رو با هم بررسی می کنیم.

براي مثال ما يک برنامه اي داريم که قراره در مارکت هاي ايراني منتشر بشه و کاربران ايراني اون رو نصب و استفاده کنن حالا شما به عنوان توسعه دهنده در جايي از برنامه نياز مي بيني که از اعداد به فرمت فارسي استفاده کني نه انگليسي يعني مثلا ۱۲ باشه نه 12 اينطوري, پس براي اين موضوع از راهي که در پايين توضيح مي دهم پيش مي رويم اين روش چيزي به فُرم ۱۷:۳۴:۰۹ ۱۳_۰۲_۱۴۰۳ به ما تحویل می ده که اگر دقت کنید تمام اعدادی که به ما داده از قبیل(ثانیه:دقیقه:ساعت روز_ماه_سال) هستند که همه آنها با فرمت اعداد فارسی نشان داده شده اند.

DateTime now = DateTime.now(); initializeDateFormatting( ' fa ' , null ); String formattedDatePersian = DateFormat( ' yyyy_MM_dd HH:mm:ss ' , ' fa_IR ' ).format(now); print(formattedDatePersian);

ابتدا اومديم از کلاسي به نام DateTime نمونه سازي کرديم که اين خط زمان و تاریخ فعلي شما رو مي دهد(مثلا موقعی شما این کد را اجرا می کنید ممکنه ساعت و تاریخ ۱۵:۳۴:۰۹ ۱۴-۰۲-۲۰۲۴ به این شکل باشه) و اومديم در متغير now ذخيره اش کرديم. بعد ، از initializeDateFormatting استفاده کردیم که برای مقداردهی کردن قالب بندی تاریخ هست که در پارامتر اول"fa" فارسی و در پارامتر دوم مقدار null را دادیم.
بعد يه متغير ساختيم به نام formattedDatePersina که اين دفعه اومديم نمونه اي از کلاس DateFormat با دو پارامتر هاي ورودي ساختيم و در متغير formattedDatePersian ذخيره کرديم. حالا شايد بپرسيد اون پارامتر هاي ورودي چي هستن؟ الان مي گم بهتون

پارامتر اول: " yyyy_MM_dd HH:mm:ss " که معادل " year_month_day hour:minute:second " است يا فارسي اش ميشه " ثانيه:دقيقه: ساعت روز_ماه_سال " یعنی دارم بهش می گم تاریخ رو می خوای به من بدی دمت هم گرم اما با این فرمت که من بهت می گم به من تحویل بده یعنی سال و ماه و روز و ساعت و دقیقه و ثانیه را می خواهم که به من تحویل بدی حالا سوال؟چرا توي کد چهار تا y کنار هم هستند ، 2 تا M کنار هم هستن, 2 تا d و 2 تا H و ....
چون وقتی اومدم چهار تا yyyy را کنار هم قرار دادم یعنی عدد سال رو 4 رقمی به من بده یعنی اگر الان سال ۱۴۰۳ هست همین طور چهار رقمی تحویل بده اگر مثلا می آمدم و 2 تا y کنار هم قرار می دادم عدد سال رو هم اینطوری ۰۳ تحویل ام می داد و بقیه هم به همین شکل هست حالا شما به من بگید چرا دو MM کنار هم گذاشته؟
باریکلا چون می گه عدد ماه(month) رو دورقمی به من بده مثلا ۰۲ (اردیبهشت) بقیه هم دقیقا به همین شکل هست.

مثالی برای فرمت بندی تاریخ در فلاتر
مثالی برای فرمت بندی تاریخ در فلاتر

در تصویر بالا نمونه کدی برای فرمت بندی تاریخ همراه با خروجی قرار داده شده است که می توانید مشاهده کنید.
قطعه کد همین تصویر را داخل گیت هاب گذاشته شده می تونید استفاده کنید.
https://github.com/mohammadamin2327/format-date-and-number-.git


فرمت بندی اعداد

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

مثلا شما در برنامه تون اعدادی با رقم های زیادی داری مثلا 1000000000 این عدد الان چنده؟ یک میلیارد هست ، اما شاید شما به اشتباهی گفتی یک میلیون و شاید چیزهای دیگه البته حق هم داری سخته خوندن این عدد با 9 تا صفر حالا اگه اینطوری باشه چی؟ 1,000,000,000 چقدر خوندنش راحت تر شد ، چون اومدم 3تا 3تا با ممیز جدا کردم تا خوندنش راحت بشه. حالا همین کار رو می خوایم تو برنامه مون انجام بدیم تا کاربر راحت تر بتونه قیمت ها رو بخونه و اینطوری کاربر هنگام استفاده از برنامه حس خوبی داره.
روش انجام اش تو فلاتر چیه؟

double number = 1000000000; NumberFormat formatter = NumberFormat( ' #,### ' ,' en_US ' ); String formattedNumber = formatter.format(number); print(formattedNumber);

ابتدا یه متغیر تعریف کردیم عدد یک میلیارد را داخل اش ذخیره کردم بعد در خط بعدی از کلاس NumberFormat یه نمونه ساختم و دو پارامتر ورودی بهش دادم.
پارامتر اول: " ###,# " که داره میگه سه رقم سه رقم ارقام را جدا کن بیا تا آخر(اینجا با علامت # اومدم دارم فرمت اش رو مشخص می کنم این علامت # می تونه هر عددی جاش بشینه من با اون کار ندارم چیزی که برام مهمه اینه که سه رقم سه رقم جدا کنه تا کاربر هنگام استفاده از برنامه حس بهتری تجربه کند.)
نکته : اینطوری هم می تونی فرمت بندی کنی , بیای و به جای # از 0 استفاده کنی " 0,000 " فرقش چیه؟
اگر جای 0 از # استفاده کنی جای 0 می تونه هر عددی بشینه مثلا 1 یا 2 یا 3 یا .... حتی عدد 0 هم می تونه جای آن بشیند. اما اگر از علامت # استفاده کنیم باز هم هر عددی می تونه جای # بشینه مثل 1 یا 2 یا 3 یا .... اما فرقش اینجاست اگر جای # عدد 0 بشینه حذف می شود.

مثالی از فرمت بندی اعداد در فلاتر
مثالی از فرمت بندی اعداد در فلاتر

در تصویر بالا نمونه کدی برای فرمت بندی اعداد همراه با خروجی قرار داده شده است که می توانید مشاهده کنید.
قطعه کد همین تصویر را داخل گیت هاب گذاشته شده می تونید استفاده کنید. https://github.com/mohammadamin2327/format-date-and-number-.git

پکیج intlپکیج intl در فلاترفرمت بندی تاریخ در فلاترفرمت بندی اعداد در فلاترintl
شاید از این پست‌ها خوشتان بیاید