杜府 3 năm trước cách đây
mục cha
commit
1ee398be74
100 tập tin đã thay đổi với 6641 bổ sung0 xóa
  1. 0 0
      components/assets/fonts/stdf.remixicon.symbol.svg
  2. 87 0
      components/index.js
  3. 75 0
      components/lang/ar_EG.js
  4. 75 0
      components/lang/az_AZ.js
  5. 88 0
      components/lang/bg_BG.js
  6. 88 0
      components/lang/bn_BD.js
  7. 88 0
      components/lang/ca_ES.js
  8. 88 0
      components/lang/cs_CZ.js
  9. 88 0
      components/lang/da_DK.js
  10. 88 0
      components/lang/de_DE.js
  11. 88 0
      components/lang/el_GR.js
  12. 88 0
      components/lang/en_GB.js
  13. 88 0
      components/lang/en_US.js
  14. 88 0
      components/lang/es_ES.js
  15. 88 0
      components/lang/et_EE.js
  16. 88 0
      components/lang/eu_ES.js
  17. 75 0
      components/lang/fa_IR.js
  18. 88 0
      components/lang/fi_FI.js
  19. 88 0
      components/lang/fr_BE.js
  20. 88 0
      components/lang/fr_CA.js
  21. 88 0
      components/lang/fr_FR.js
  22. 88 0
      components/lang/ga_IE.js
  23. 75 0
      components/lang/gl_ES.js
  24. 75 0
      components/lang/he_IL.js
  25. 75 0
      components/lang/hi_IN.js
  26. 88 0
      components/lang/hr_HR.js
  27. 88 0
      components/lang/hu_HU.js
  28. 88 0
      components/lang/hy_AM.js
  29. 88 0
      components/lang/id_ID.js
  30. 88 0
      components/lang/is_IS.js
  31. 88 0
      components/lang/it_IT.js
  32. 75 0
      components/lang/ja_JP.js
  33. 88 0
      components/lang/ka_GE.js
  34. 88 0
      components/lang/kk_KZ.js
  35. 88 0
      components/lang/km_KH.js
  36. 88 0
      components/lang/kmr_IQ.js
  37. 88 0
      components/lang/kn_IN.js
  38. 75 0
      components/lang/ko_KR.js
  39. 88 0
      components/lang/lt_LT.js
  40. 88 0
      components/lang/lv_LV.js
  41. 88 0
      components/lang/mk_MK.js
  42. 88 0
      components/lang/ml_IN.js
  43. 88 0
      components/lang/mn_MN.js
  44. 88 0
      components/lang/ms_MY.js
  45. 88 0
      components/lang/nb_NO.js
  46. 88 0
      components/lang/ne_NP.js
  47. 88 0
      components/lang/nl_BE.js
  48. 88 0
      components/lang/nl_NL.js
  49. 88 0
      components/lang/pl_PL.js
  50. 88 0
      components/lang/pt_BR.js
  51. 88 0
      components/lang/pt_PT.js
  52. 88 0
      components/lang/ro_RO.js
  53. 75 0
      components/lang/ru_RU.js
  54. 88 0
      components/lang/si_LK.js
  55. 88 0
      components/lang/sk_SK.js
  56. 88 0
      components/lang/sl_SI.js
  57. 88 0
      components/lang/sr_RS.js
  58. 88 0
      components/lang/sv_SE.js
  59. 88 0
      components/lang/ta_IN.js
  60. 75 0
      components/lang/th_TH.js
  61. 75 0
      components/lang/tk_TK.js
  62. 75 0
      components/lang/tr_TR.js
  63. 88 0
      components/lang/uk_UA.js
  64. 75 0
      components/lang/ur_PK.js
  65. 88 0
      components/lang/vi_VN.js
  66. 75 0
      components/lang/zh_CN.js
  67. 75 0
      components/lang/zh_HK.js
  68. 75 0
      components/lang/zh_TW.js
  69. 25 0
      components/package.json
  70. 175 0
      components/src/actionSheet/ActionSheet.svelte
  71. 1 0
      components/src/actionSheet/FAQ.md
  72. 1 0
      components/src/actionSheet/FAQ_en.md
  73. 33 0
      components/src/actionSheet/api.md
  74. 33 0
      components/src/actionSheet/api_en.md
  75. 19 0
      components/src/actionSheet/guide.md
  76. 19 0
      components/src/actionSheet/guide_en.md
  77. 0 0
      components/src/actionSheet/version.md
  78. 0 0
      components/src/actionSheet/version_en.md
  79. 217 0
      components/src/asyncPicker/AsyncPicker.svelte
  80. 1 0
      components/src/asyncPicker/FAQ.md
  81. 1 0
      components/src/asyncPicker/FAQ_en.md
  82. 31 0
      components/src/asyncPicker/api.md
  83. 31 0
      components/src/asyncPicker/api_en.md
  84. 40 0
      components/src/asyncPicker/guide.md
  85. 40 0
      components/src/asyncPicker/guide_en.md
  86. 0 0
      components/src/asyncPicker/version.md
  87. 0 0
      components/src/asyncPicker/version_en.md
  88. 115 0
      components/src/avatar/Avatar.svelte
  89. 1 0
      components/src/avatar/FAQ.md
  90. 1 0
      components/src/avatar/FAQ_en.md
  91. 19 0
      components/src/avatar/api.md
  92. 19 0
      components/src/avatar/api_en.md
  93. 19 0
      components/src/avatar/guide.md
  94. 19 0
      components/src/avatar/guide_en.md
  95. 0 0
      components/src/avatar/version.md
  96. 0 0
      components/src/avatar/version_en.md
  97. 74 0
      components/src/badge/Badge.svelte
  98. 1 0
      components/src/badge/FAQ.md
  99. 1 0
      components/src/badge/FAQ_en.md
  100. 18 0
      components/src/badge/api.md

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
components/assets/fonts/stdf.remixicon.symbol.svg


+ 87 - 0
components/index.js

@@ -0,0 +1,87 @@
+import Button from './src/button/Button.svelte';
+import NavBar from './src/navBar/NavBar.svelte';
+import Icon from './src/icon/Icon.svelte';
+import Divider from './src/divider/Divider.svelte';
+import Cell from './src/cell/Cell.svelte';
+import CellGroup from './src/cell/CellGroup.svelte';
+import Switch from './src/switch/Switch.svelte';
+import Avatar from './src/avatar/Avatar.svelte';
+import Tabs from './src/tabs/Tabs.svelte';
+import Tab from './src/tabs/Tab.svelte';
+import TabContent from './src/tabs/TabContent.svelte';
+import TabBar from './src/tabBar/TabBar.svelte';
+import Steps from './src/steps/Steps.svelte';
+import IndexBar from './src/indexBar/IndexBar.svelte';
+import Radio from './src/radio/Radio.svelte';
+import RadioGroup from './src/radio/RadioGroup.svelte';
+import Checkbox from './src/checkbox/Checkbox.svelte';
+import CheckboxGroup from './src/checkbox/CheckboxGroup.svelte';
+import Input from './src/input/Input.svelte';
+import Grids from './src/grids/Grids.svelte';
+import Grid from './src/grids/Grid.svelte';
+import Swiper from './src/swiper/Swiper.svelte';
+import Placeholder from './src/placeholder/Placeholder.svelte';
+import Skeleton from './src/skeleton/Skeleton.svelte';
+import Rate from './src/rate/Rate.svelte';
+import Slider from './src/slider/Slider.svelte';
+import Badge from './src/badge/Badge.svelte';
+import NoticeBar from './src/noticeBar/NoticeBar.svelte';
+import Progress from './src/progress/Progress.svelte';
+import ProgressLoop from './src/progressLoop/ProgressLoop.svelte';
+import Mask from './src/mask/Mask.svelte';
+import Toast from './src/toast/Toast.svelte';
+import Loading from './src/loading/Loading.svelte';
+import Popup from './src/popup/Popup.svelte';
+import BottomSheet from './src/bottomSheet/BottomSheet.svelte';
+import Modal from './src/modal/Modal.svelte';
+import Dialog from './src/dialog/Dialog.svelte';
+import ActionSheet from './src/actionSheet/ActionSheet.svelte';
+import Picker from './src/picker/Picker.svelte';
+import AsyncPicker from './src/AsyncPicker/AsyncPicker.svelte';
+import TimePicker from './src/timePicker/TimePicker.svelte';
+import Calendar from './src/calendar/Calendar.svelte';
+
+export {
+    Button,
+    NavBar,
+    Icon,
+    Divider,
+    Cell,
+    CellGroup,
+    Switch,
+    Avatar,
+    Tabs,
+    Tab,
+    TabContent,
+    TabBar,
+    Steps,
+    IndexBar,
+    Radio,
+    RadioGroup,
+    Checkbox,
+    CheckboxGroup,
+    Input,
+    Grids,
+    Grid,
+    Swiper,
+    Placeholder,
+    Skeleton,
+    Rate,
+    Slider,
+    Badge,
+    NoticeBar,
+    Progress,
+    ProgressLoop,
+    Toast,
+    Mask,
+    Loading,
+    Popup,
+    BottomSheet,
+    Modal,
+    Dialog,
+    ActionSheet,
+    Picker,
+    AsyncPicker,
+    TimePicker,
+    Calendar
+};

+ 75 - 0
components/lang/ar_EG.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'محتويات الفتحة فارغة!',
+        loading: 'جار التحميل ...',
+        noData: 'لا يوجد بيانات',
+        noMoreData: 'لا توجد بيانات إضافية',
+    },
+    actionSheet: {
+        cancelText: 'إلغاء',
+    },
+    bottomSheet: {
+        title: 'العنوان',
+    },
+    dialog: {
+        title: 'تلميح',
+        content: 'المحتوى',
+        primaryText: 'تأكيد',
+        secondaryText: 'إلغاء',
+    },
+    input: {
+        pleaseInput: 'الرجاء إدخال',
+    },
+    modal: {
+        title: 'العنوان',
+        content: 'المحتوى',
+        btnText: 'أراهن',
+    },
+    navBar: {
+        title: 'العنوان',
+    },
+    picker: {
+        defaultTitle: 'الرجاء الاختيار',
+        defaultCancel: 'إلغاء',
+        defaultConfirm: 'تأكيد',
+    },
+    asyncPicker: {
+        defaultTitle: 'الرجاء الاختيار',
+        defaultCancel: 'إلغاء',
+        defaultConfirm: 'تأكيد',
+        defaultNext: 'التالي',
+        defaultPrev: 'السابق',
+        defaultSelected: 'المختار',
+    },
+    rate: {
+        error1: 'لا يمكن أن يكون القيمة أكبر من الإجمالي!',
+        error2: 'يجب أن يتم إزالة الإجمالي بمقدار 1!',
+        error3: 'يجب أن تكون القيمة أقل بمقدار 1 عندما لا تكون مختارة نصفياً!',
+        error4: 'يجب أن يتم إزالة القيمة بمقدار 0.5 عند الاختيار بشكل نصفي!',
+        error5: 'العرض أو الارتفاع أقل من 20، والذي يجعل النقر على التليفون المحمول صعبًا!',
+    },
+    timePicker: {
+        defaultTitle: 'الرجاء الاختيار',
+        defaultCancel: 'إلغاء',
+        defaultConfirm: 'تأكيد',
+        defaultYear: 'سنة',
+        defaultMonth: 'شهر',
+        defaultDay: 'يوم',
+        defaultHour: 'ساعة',
+        defaultMinute: 'دقيقة',
+        defaultSecond: 'ثانية',
+    },
+    calendar: {
+        weekTextList: ['الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت', 'الأحد'],
+        weekSundayStartTextList: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+        monthTextList: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+        confirmText: 'تأكيد',
+        selectedText: 'المحددة',
+        dayText: 'يوم',
+        beforeText: 'الأخيرة',
+        afterText: 'المستقبل',
+        currentWeekText: 'هذا الأسبوع',
+        currentMonthText: 'هذا الشهر',
+        currentQuarterText: 'هذه الفصل',
+    },
+};

+ 75 - 0
components/lang/az_AZ.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'Slotun məzmunu boşdur!',
+        loading: 'Yüklənir...',
+        noData: 'Məlumat yoxdur',
+        noMoreData: 'Artıq məlumat yoxdur',
+    },
+    actionSheet: {
+        cancelText: 'Ləğv et',
+    },
+    bottomSheet: {
+        title: 'Başlıq',
+    },
+    dialog: {
+        title: 'Xəbərdarlıq',
+        content: 'Məzmun',
+        primaryText: 'Təsdiq',
+        secondaryText: 'Ləğv et',
+    },
+    input: {
+        pleaseInput: 'Daxil edin',
+    },
+    modal: {
+        title: 'Başlıq',
+        content: 'Məzmun',
+        btnText: 'Gördüm',
+    },
+    navBar: {
+        title: 'Başlıq',
+    },
+    picker: {
+        defaultTitle: 'Seçin',
+        defaultCancel: 'Ləğv et',
+        defaultConfirm: 'Təsdiq et',
+    },
+    asyncPicker: {
+        defaultTitle: 'Seçin',
+        defaultCancel: 'Ləğv et',
+        defaultConfirm: 'Təsdiq et',
+        defaultNext: 'Növbəti',
+        defaultPrev: 'Əvvəlki',
+        defaultSelected: 'Seçildi',
+    },
+    rate: {
+        error1: 'Dəyər Ümumi dəyərdən böyük ola bilməz!',
+        error2: 'Ümumi 1 çıxılmalıdır!',
+        error3: 'Yarım seçildiyi zaman dəyər 1 çıxılmalıdır!',
+        error4: 'Yarım seçilmədiyində Dəyər 0.5 azalır !',
+        error5: 'Genişlik və ya hündürlük 20 -dən kiçikdir, mobil terminalda klik etmək çətindir!',
+    },
+    timePicker: {
+        defaultTitle: 'Seçin',
+        defaultCancel: 'Ləğv et',
+        defaultConfirm: 'Təsdiq et',
+        defaultYear: 'İl',
+        defaultMonth: 'Ay',
+        defaultDay: 'Gün',
+        defaultHour: 'Saat',
+        defaultMinute: 'Dəqiqə',
+        defaultSecond: 'Saniyə',
+    },
+    calendar: {
+        weekTextList: ['B.', 'Ç.', 'Ç.a.', 'Ç.', 'C.', 'C.a.', 'Ş.'],
+        weekSundayStartTextList: ['Ş.', 'B.', 'Ç.', 'Ç.a.', 'Ç.', 'C.', 'C.a.'],
+        monthTextList: ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'],
+        confirmText: 'Təsdiq et',
+        selectedText: 'Seçilib',
+        dayText: 'gün',
+        beforeText: 'Son',
+        afterText: 'Gələcək',
+        currentWeekText: 'Bu həftə',
+        currentMonthText: 'Bu ay',
+        currentQuarterText: 'Bu rəbə',
+    },
+};

+ 88 - 0
components/lang/bg_BG.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Съдържанието на слота е празно!',
+        loading: 'Зареждане...',
+        noData: 'Няма данни',
+        noMoreData: 'Няма повече данни',
+    },
+    actionSheet: {
+        cancelText: 'Отказ',
+    },
+    bottomSheet: {
+        title: 'Заглавие',
+    },
+    dialog: {
+        title: 'Подсказка',
+        content: 'Съдържание',
+        primaryText: 'Потвърди',
+        secondaryText: 'Откажи',
+    },
+    input: {
+        pleaseInput: 'Моля, въведете',
+    },
+    modal: {
+        title: 'Заглавие',
+        content: 'Съдържание',
+        btnText: 'Разбрах',
+    },
+    navBar: {
+        title: 'Заглавие',
+    },
+    picker: {
+        defaultTitle: 'Моля, изберете',
+        defaultCancel: 'Отказ',
+        defaultConfirm: 'Потвърди',
+    },
+    asyncPicker: {
+        defaultTitle: 'Моля, изберете',
+        defaultCancel: 'Отказ',
+        defaultConfirm: 'Потвърди',
+        defaultNext: 'Следващ',
+        defaultPrev: 'Предишен',
+        defaultSelected: 'Избрано',
+    },
+    rate: {
+        error1: 'Стойността не може да бъде по-голяма от общата!',
+        error2: 'Общата трябва да се раздели с 1!',
+        error3: 'Стойността трябва да се раздели с 1, когато не е наполовина избрана!',
+        error4: 'Стойността трябва да се раздели с 0,5, когато е наполовина избрана!',
+        error5: 'Широчината или височината има стойност по-малка от 20, което прави щракването на мобилното устройство трудно!',
+    },
+    timePicker: {
+        defaultTitle: 'Моля, изберете',
+        defaultCancel: 'Отказ',
+        defaultConfirm: 'Потвърди',
+        defaultYear: 'Година',
+        defaultMonth: 'Месец',
+        defaultDay: 'Ден',
+        defaultHour: 'Час',
+        defaultMinute: 'Минута',
+        defaultSecond: 'Секунда',
+    },
+    calendar: {
+        weekTextList: ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Нд'],
+        weekSundayStartTextList: ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
+        monthTextList: [
+            'Януари',
+            'Февруари',
+            'Март',
+            'Април',
+            'Май',
+            'Юни',
+            'Юли',
+            'Август',
+            'Септември',
+            'Октомври',
+            'Ноември',
+            'Декември',
+        ],
+        confirmText: 'Потвърди',
+        selectedText: 'Избрано',
+        dayText: 'ден',
+        beforeText: 'Последен',
+        afterText: 'Следващ',
+        currentWeekText: 'Тази седмица',
+        currentMonthText: 'Този месец',
+        currentQuarterText: 'Това тримесечие',
+    },
+};

+ 88 - 0
components/lang/bn_BD.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'স্লটের উপাদান খালি!',
+        loading: 'লোড হচ্ছে ...',
+        noData: 'কোন তথ্য নেই',
+        noMoreData: 'আর কোন তথ্য নেই',
+    },
+    actionSheet: {
+        cancelText: 'বাতিল',
+    },
+    bottomSheet: {
+        title: 'শিরোনাম',
+    },
+    dialog: {
+        title: 'উপদেশ',
+        content: 'বিষয়বস্তু',
+        primaryText: 'হ্যাঁ',
+        secondaryText: 'না',
+    },
+    input: {
+        pleaseInput: 'অনুগ্রহপূর্বক প্রবেশ করুন',
+    },
+    modal: {
+        title: 'শিরোনাম',
+        content: 'বিষয়বস্তু',
+        btnText: 'ঠিক আছে',
+    },
+    navBar: {
+        title: 'শিরোনাম',
+    },
+    picker: {
+        defaultTitle: 'অনুগ্রহ করে নির্বাচন করুন',
+        defaultCancel: 'বাতিল',
+        defaultConfirm: 'নিশ্চিত করুন',
+    },
+    asyncPicker: {
+        defaultTitle: 'অনুগ্রহ করে নির্বাচন করুন',
+        defaultCancel: 'বাতিল',
+        defaultConfirm: 'নিশ্চিত করুন',
+        defaultNext: 'পরবর্তী',
+        defaultPrev: 'আগে',
+        defaultSelected: 'নির্বাচিত',
+    },
+    rate: {
+        error1: 'মানটি সম্পূর্ণ প্রতিবেদন থেকে বেশি হতে পারে না!',
+        error2: 'সম্পূর্ণ প্রতিবেদনের সাথে গুণফল করতে হবে!',
+        error3: 'মানটি বেশি নয়, তখন সাম্প্রতিক নয়!',
+        error4: 'মানটি আধ হওয়া উচিত, তখন সে সাম্প্রতিক হিসাবে উন্নয়ন করা হবে!',
+        error5: 'উচ্চতা বা প্রস্থ এমন মান যা মোবাইল ডিভাইসে ক্লিক করা অসহজ করে দেয়!',
+    },
+    timePicker: {
+        defaultTitle: 'অনুগ্রহ করে নির্বাচন করুন',
+        defaultCancel: 'বাতিল',
+        defaultConfirm: 'নিশ্চিত করুন',
+        defaultYear: 'বছর',
+        defaultMonth: 'মাস',
+        defaultDay: 'দিন',
+        defaultHour: 'ঘন্টা',
+        defaultMinute: 'মিনিট',
+        defaultSecond: 'সেকেন্ড',
+    },
+    calendar: {
+        weekTextList: ['সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি', 'রবি'],
+        weekSundayStartTextList: ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
+        monthTextList: [
+            'জানুয়ারী',
+            'ফেব্রুয়ারী',
+            'মার্চ',
+            'এপ্রিল',
+            'মে',
+            'জুন',
+            'জুলাই',
+            'আগস্ট',
+            'সেপ্টেম্বর',
+            'অক্টোবর',
+            'নভেম্বর',
+            'ডিসেম্বর',
+        ],
+        confirmText: 'নিশ্চিত করুন',
+        selectedText: 'নির্বাচিত',
+        dayText: 'দিন',
+        beforeText: 'পূর্ববর্তী',
+        afterText: 'পরবর্তী',
+        currentWeekText: 'এই সপ্তাহে',
+        currentMonthText: 'এই মাসে',
+        currentQuarterText: 'এই ত্রৈমাসিকে',
+    },
+};

+ 88 - 0
components/lang/ca_ES.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'La ranura està buida!',
+        loading: "S'està carregant ...",
+        noData: 'No hi ha dades disponibles',
+        noMoreData: 'No hi ha més dades',
+    },
+    actionSheet: {
+        cancelText: 'Cancel·lar',
+    },
+    bottomSheet: {
+        title: 'Títol',
+    },
+    dialog: {
+        title: 'Avís',
+        content: 'Contingut',
+        primaryText: "D'acord",
+        secondaryText: 'Cancel·lar',
+    },
+    input: {
+        pleaseInput: 'Si us plau, introdueixi',
+    },
+    modal: {
+        title: 'Títol',
+        content: 'Contingut',
+        btnText: "D'acord",
+    },
+    navBar: {
+        title: 'Títol',
+    },
+    picker: {
+        defaultTitle: 'Si us plau, trieu',
+        defaultCancel: 'Cancel·lar',
+        defaultConfirm: 'Confirmar',
+    },
+    asyncPicker: {
+        defaultTitle: 'Si us plau, trieu',
+        defaultCancel: 'Cancel·lar',
+        defaultConfirm: 'Confirmar',
+        defaultNext: 'Següent',
+        defaultPrev: 'Anterior',
+        defaultSelected: 'Seleccionat',
+    },
+    rate: {
+        error1: 'El valor no pot ser més gran que la seva informació de retroaliment completa!',
+        error2: "El valor s'ha de puntuar amb la seva informació de retroaliment completa!",
+        error3: 'El valor no és gran, llavors no és fresc!',
+        error4: 'El valor ha de ser imparell, llavors es desenvolupa com a fresc!',
+        error5: "L'alçada o l'amplada del valor és difícil de tocar al dispositiu mòbil!",
+    },
+    timePicker: {
+        defaultTitle: 'Si us plau, trieu',
+        defaultCancel: 'Cancel·lar',
+        defaultConfirm: 'Confirmar',
+        defaultYear: 'Any',
+        defaultMonth: 'Mes',
+        defaultDay: 'Dia',
+        defaultHour: 'Hora',
+        defaultMinute: 'Minut',
+        defaultSecond: 'Segon',
+    },
+    calendar: {
+        weekTextList: ['Dl', 'Dt', 'Dc', 'Dj', 'Dv', 'Ds', 'Dg'],
+        weekSundayStartTextList: ['Dg', 'Dl', 'Dt', 'Dc', 'Dj', 'Dv', 'Ds'],
+        monthTextList: [
+            'Gener',
+            'Febrer',
+            'Març',
+            'Abril',
+            'Maig',
+            'Juny',
+            'Juliol',
+            'Agost',
+            'Setembre',
+            'Octubre',
+            'Novembre',
+            'Desembre',
+        ],
+        confirmText: 'Confirmar',
+        selectedText: 'Seleccionat',
+        dayText: 'Dia',
+        beforeText: 'Abans',
+        afterText: 'Després',
+        currentWeekText: 'Aquesta setmana',
+        currentMonthText: 'Aquest mes',
+        currentQuarterText: 'Aquest trimestre',
+    },
+};

+ 88 - 0
components/lang/cs_CZ.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Slot je prázdný!',
+        loading: 'Načítání...',
+        noData: 'Žádná data',
+        noMoreData: 'Žádná další data',
+    },
+    actionSheet: {
+        cancelText: 'Zrušit',
+    },
+    bottomSheet: {
+        title: 'Název',
+    },
+    dialog: {
+        title: 'Upozornění',
+        content: 'Obsah',
+        primaryText: 'OK',
+        secondaryText: 'Zrušit',
+    },
+    input: {
+        pleaseInput: 'Prosím, zadejte',
+    },
+    modal: {
+        title: 'Název',
+        content: 'Obsah',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Název',
+    },
+    picker: {
+        defaultTitle: 'Prosím vyberte',
+        defaultCancel: 'Zrušit',
+        defaultConfirm: 'Potvrdit',
+    },
+    asyncPicker: {
+        defaultTitle: 'Prosím vyberte',
+        defaultCancel: 'Zrušit',
+        defaultConfirm: 'Potvrdit',
+        defaultNext: 'Další',
+        defaultPrev: 'Předchozí',
+        defaultSelected: 'Vybráno',
+    },
+    rate: {
+        error1: 'Hodnocení nemůže být větší než celková zpětná vazba!',
+        error2: 'Hodnocení musí být vyplněno alespoň celou jednou!',
+        error3: 'Hodnocení není velké, pak že ježek spí!',
+        error4: 'Hodnocení musí být liché, pak se vyvíjí jako ježek!',
+        error5: 'Výška nebo šířka hodnocení je na mobilním zařízení obtížně dotykatelná!',
+    },
+    timePicker: {
+        defaultTitle: 'Prosím vyberte',
+        defaultCancel: 'Zrušit',
+        defaultConfirm: 'Potvrdit',
+        defaultYear: 'Rok',
+        defaultMonth: 'Měsíc',
+        defaultDay: 'Den',
+        defaultHour: 'Hodina',
+        defaultMinute: 'Minuta',
+        defaultSecond: 'Sekunda',
+    },
+    calendar: {
+        weekTextList: ['Po', 'Út', 'St', 'Čt', 'Pá', 'So', 'Ne'],
+        weekSundayStartTextList: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],
+        monthTextList: [
+            'Leden',
+            'Únor',
+            'Březen',
+            'Duben',
+            'Květen',
+            'Červen',
+            'Červenec',
+            'Srpen',
+            'Září',
+            'Říjen',
+            'Listopad',
+            'Prosinec',
+        ],
+        confirmText: 'Potvrdit',
+        selectedText: 'Vybraná',
+        dayText: '. den',
+        beforeText: 'Před',
+        afterText: 'Po',
+        currentWeekText: 'Tento týden',
+        currentMonthText: 'Tento měsíc',
+        currentQuarterText: 'Toto čtvrtletí',
+    },
+};

+ 88 - 0
components/lang/da_DK.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: "Slot er tom!",
+        loading: "Indlæser...",
+        noData: "Ingen data",
+        noMoreData: "Ingen flere data",
+    },
+    actionSheet: {
+        cancelText: "Annuller",
+    },
+    bottomSheet: {
+        title: "Titel",
+    },
+    dialog: {
+        title: "Advarsel",
+        content: "Indhold",
+        primaryText: "OK",
+        secondaryText: "Annuller",
+    },
+    input: {
+        pleaseInput: "Indtast venligst",
+    },
+    modal: {
+        title: "Titel",
+        content: "Indhold",
+        btnText: "OK",
+    },
+    navBar: {
+        title: "Titel",
+    },
+    picker: {
+        defaultTitle: "Vælg venligst",
+        defaultCancel: "Annuller",
+        defaultConfirm: "Bekræft",
+    },
+    asyncPicker: {
+        defaultTitle: "Vælg venligst",
+        defaultCancel: "Annuller",
+        defaultConfirm: "Bekræft",
+        defaultNext: "Næste",
+        defaultPrev: "Tidligere",
+        defaultSelected: "Valgt",
+    },
+    rate: {
+        error1: "Bedømmelsen må ikke være større end din samlede feedback!",
+        error2: "Bedømmelse skal være udarbejdet mindst en hel!",
+        error3: "Bedømmelse er ikke stor, så pindsvinet sover!",
+        error4: "Bedømmelse skal være ulige, så udvikler sig som en pindsvin!",
+        error5: "Højden eller bredden af bedømmelsen er svær at røre mobil!",
+    },
+    timePicker: {
+        defaultTitle: "Vælg venligst",
+        defaultCancel: "Annuller",
+        defaultConfirm: "Bekræft",
+        defaultYear: "År",
+        defaultMonth: "Måned",
+        defaultDay: "Dag",
+        defaultHour: "Time",
+        defaultMinute: "Minut",
+        defaultSecond: "Anden",
+    },
+    calendar: {
+        weekTextList: ["Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
+        weekSundayStartTextList: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"],
+        monthTextList: [
+            "Januar",
+            "Februar",
+            "Marts",
+            "April",
+            "Maj",
+            "Juni",
+            "Juli",
+            "August",
+            "September",
+            "Oktober",
+            "November",
+            "December",
+        ],
+        confirmText: "Bekræft",
+        selectedText: "Valgt",
+        dayText: ". dag",
+        beforeText: "Før",
+        afterText: "Efter",
+        currentWeekText: "Denne uge",
+        currentMonthText: "Denne måned",
+        currentQuarterText: "Dette kvartal",
+    },
+};

+ 88 - 0
components/lang/de_DE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Slot ist leer!',
+        loading: 'Laden...',
+        noData: 'Keine Daten',
+        noMoreData: 'Keine weiteren Daten',
+    },
+    actionSheet: {
+        cancelText: 'Abbrechen',
+    },
+    bottomSheet: {
+        title: 'Titel',
+    },
+    dialog: {
+        title: 'Warnung',
+        content: 'Inhalt',
+        primaryText: 'OK',
+        secondaryText: 'Abbrechen',
+    },
+    input: {
+        pleaseInput: 'Bitte geben Sie ein',
+    },
+    modal: {
+        title: 'Titel',
+        content: 'Inhalt',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titel',
+    },
+    picker: {
+        defaultTitle: 'Bitte wählen',
+        defaultCancel: 'Abbrechen',
+        defaultConfirm: 'Bestätigen',
+    },
+    asyncPicker: {
+        defaultTitle: 'Bitte wählen',
+        defaultCancel: 'Abbrechen',
+        defaultConfirm: 'Bestätigen',
+        defaultNext: 'Weiter',
+        defaultPrev: 'Zurück',
+        defaultSelected: 'Ausgewählt',
+    },
+    rate: {
+        error1: 'Bewertung darf nicht größer als Ihr Gesamt-Feedback sein!',
+        error2: 'Bewertung muss mindestens einmal vollständig ausgefüllt werden!',
+        error3: 'Bewertung ist nicht groß, so schläft der Igel!',
+        error4: 'Bewertung muss ungerade sein, damit sie sich wie ein Igel entwickelt!',
+        error5: 'Die Höhe oder Breite der Bewertung ist auf dem Mobiltelefon schwer zu berühren!',
+    },
+    timePicker: {
+        defaultTitle: 'Bitte wählen',
+        defaultCancel: 'Abbrechen',
+        defaultConfirm: 'Bestätigen',
+        defaultYear: 'Jahr',
+        defaultMonth: 'Monat',
+        defaultDay: 'Tag',
+        defaultHour: 'Stunde',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Zweite',
+    },
+    calendar: {
+        weekTextList: ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'],
+        weekSundayStartTextList: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
+        monthTextList: [
+            'Januar',
+            'Februar',
+            'März',
+            'April',
+            'Mai',
+            'Juni',
+            'Juli',
+            'August',
+            'September',
+            'Oktober',
+            'November',
+            'Dezember',
+        ],
+        confirmText: 'Bestätigen',
+        selectedText: 'Ausgewählt',
+        dayText: '. Tag',
+        beforeText: 'Vor',
+        afterText: 'Nach',
+        currentWeekText: 'Diese Woche',
+        currentMonthText: 'Dieser Monat',
+        currentQuarterText: 'Dieses Quartal',
+    },
+};

+ 88 - 0
components/lang/el_GR.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Το slot είναι άδειο!',
+        loading: 'Φόρτωση...',
+        noData: 'Δεν υπάρχουν δεδομένα',
+        noMoreData: 'Δεν υπάρχουν άλλα δεδομένα',
+    },
+    actionSheet: {
+        cancelText: 'Ακύρωση',
+    },
+    bottomSheet: {
+        title: 'Τίτλος',
+    },
+    dialog: {
+        title: 'Προειδοποίηση',
+        content: 'Περιεχόμενο',
+        primaryText: 'ΟΚ',
+        secondaryText: 'Ακύρωση',
+    },
+    input: {
+        pleaseInput: 'Παρακαλώ εισάγετε',
+    },
+    modal: {
+        title: 'Τίτλος',
+        content: 'Περιεχόμενο',
+        btnText: 'ΟΚ',
+    },
+    navBar: {
+        title: 'Τίτλος',
+    },
+    picker: {
+        defaultTitle: 'Παρακαλώ επιλέξτε',
+        defaultCancel: 'Ακύρωση',
+        defaultConfirm: 'Επιβεβαίωση',
+    },
+    asyncPicker: {
+        defaultTitle: 'Παρακαλώ επιλέξτε',
+        defaultCancel: 'Ακύρωση',
+        defaultConfirm: 'Επιβεβαίωση',
+        defaultNext: 'Επόμενο',
+        defaultPrev: 'Προηγούμενο',
+        defaultSelected: 'Επιλεγμένο',
+    },
+    rate: {
+        error1: 'Η βαθμολογία δεν πρέπει να είναι μεγαλύτερη από τη συνολική ανατροφοδότησή σας!',
+        error2: 'Η βαθμολογία πρέπει να συμπληρώνεται στο σύνολό της τουλάχιστον μία φορά!',
+        error3: 'Η βαθμολογία δεν είναι μεγάλη, οπότε το σκαντζόχοιρο κοιμάται!',
+        error4: 'Η βαθμολογία πρέπει να είναι μονός αριθμός, ώστε να αναπτύσσεται όπως ένα σκαντζόχοιρος!',
+        error5: 'Το ύψος ή η πλάτος της βαθμολογίας είναι δύσκολο να αγγίξει στο κινητό!',
+    },
+    timePicker: {
+        defaultTitle: 'Παρακαλώ επιλέξτε',
+        defaultCancel: 'Ακύρωση',
+        defaultConfirm: 'Επιβεβαίωση',
+        defaultYear: 'Έτος',
+        defaultMonth: 'Μήνας',
+        defaultDay: 'Ημέρα',
+        defaultHour: 'Ώρα',
+        defaultMinute: 'Λεπτό',
+        defaultSecond: 'Δευτερόλεπτο',
+    },
+    calendar: {
+        weekTextList: ['Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα', 'Κυ'],
+        weekSundayStartTextList: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'],
+        monthTextList: [
+            'Ιανουάριος',
+            'Φεβρουάριος',
+            'Μάρτιος',
+            'Απρίλιος',
+            'Μάιος',
+            'Ιούνιος',
+            'Ιούλιος',
+            'Αύγουστος',
+            'Σεπτέμβριος',
+            'Οκτώβριος',
+            'Νοέμβριος',
+            'Δεκέμβριος',
+        ],
+        confirmText: 'Επιβεβαίωση',
+        selectedText: 'Επιλεγμένο',
+        dayText: 'η μέρα',
+        beforeText: 'Πριν από',
+        afterText: 'Μετά',
+        currentWeekText: 'Αυτήν την εβδομάδα',
+        currentMonthText: 'Αυτό το μήνα',
+        currentQuarterText: 'Αυτό το τρίμηνο',
+    },
+};

+ 88 - 0
components/lang/en_GB.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Slot is empty!',
+        loading: 'Loading...',
+        noData: 'No data',
+        noMoreData: 'No more data',
+    },
+    actionSheet: {
+        cancelText: 'Cancel',
+    },
+    bottomSheet: {
+        title: 'Title',
+    },
+    dialog: {
+        title: 'Warning',
+        content: 'Content',
+        primaryText: 'OK',
+        secondaryText: 'Cancel',
+    },
+    input: {
+        pleaseInput: 'Please input',
+    },
+    modal: {
+        title: 'Title',
+        content: 'Content',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Title',
+    },
+    picker: {
+        defaultTitle: 'Please select',
+        defaultCancel: 'Cancel',
+        defaultConfirm: 'Confirm',
+    },
+    asyncPicker: {
+        defaultTitle: 'Please select',
+        defaultCancel: 'Cancel',
+        defaultConfirm: 'Confirm',
+        defaultNext: 'Next',
+        defaultPrev: 'Prev',
+        defaultSelected: 'Selected',
+    },
+    rate: {
+        error1: 'Rating should not be greater than your overall feedback!',
+        error2: 'Rating should be completed at least once as a whole!',
+        error3: 'Rating is not high, so the hedgehog is sleeping!',
+        error4: 'Rating should be an odd number, so that it can develop into a hedgehog!',
+        error5: 'The height or width of the rating is difficult to touch on the mobile phone!',
+    },
+    timePicker: {
+        defaultTitle: 'Please select',
+        defaultCancel: 'Cancel',
+        defaultConfirm: 'Confirm',
+        defaultYear: 'Year',
+        defaultMonth: 'Month',
+        defaultDay: 'Day',
+        defaultHour: 'Hour',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Second',
+    },
+    calendar: {
+        weekTextList: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
+        weekSundayStartTextList: ['Sa', 'Su', 'Mo', 'Tu', 'We', 'Th', 'Fr'],
+        monthTextList: [
+            'January',
+            'February',
+            'March',
+            'April',
+            'May',
+            'June',
+            'July',
+            'August',
+            'September',
+            'October',
+            'November',
+            'December',
+        ],
+        confirmText: 'Confirm',
+        selectedText: 'Selected',
+        dayText: 'day',
+        beforeText: 'Before',
+        afterText: 'After',
+        currentWeekText: 'This week',
+        currentMonthText: 'This month',
+        currentQuarterText: 'This quarter',
+    },
+};

+ 88 - 0
components/lang/en_US.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'The content of the slot is empty!',
+        loading: 'Loading...',
+        noData: 'No data',
+        noMoreData: 'No more data',
+    },
+    actionSheet: {
+        cancelText: 'Cancel',
+    },
+    bottomSheet: {
+        title: 'Title',
+    },
+    dialog: {
+        title: 'Hint',
+        content: 'Content',
+        primaryText: 'Confirm',
+        secondaryText: 'Cancel',
+    },
+    input: {
+        pleaseInput: 'Please enter',
+    },
+    modal: {
+        title: 'Title',
+        content: 'Content',
+        btnText: 'I see',
+    },
+    navBar: {
+        title: 'Title',
+    },
+    picker: {
+        defaultTitle: 'Please choose',
+        defaultCancel: 'Cancel',
+        defaultConfirm: 'Confirm',
+    },
+    asyncPicker: {
+        defaultTitle: 'Please choose',
+        defaultCancel: 'Cancel',
+        defaultConfirm: 'Confirm',
+        defaultNext: 'Next',
+        defaultPrev: 'Previous',
+        defaultSelected: 'Selected',
+    },
+    rate: {
+        error1: 'Value cannot be greater than Total!',
+        error2: 'Total must be removed by 1!',
+        error3: 'Value must be removed by 1 when non -semi -elected!',
+        error4: 'Value must be removed by 0.5 when half elected!',
+        error5: 'Width or height is less than 20, which makes the mobile terminal click difficult!',
+    },
+    timePicker: {
+        defaultTitle: 'Please choose',
+        defaultCancel: 'Cancel',
+        defaultConfirm: 'Confirm',
+        defaultYear: 'Year',
+        defaultMonth: 'Month',
+        defaultDay: 'Day',
+        defaultHour: 'Hour',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Second',
+    },
+    calendar: {
+        weekTextList: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+        weekSundayStartTextList: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+        monthTextList: [
+            'January',
+            'February',
+            'March',
+            'April',
+            'May',
+            'June',
+            'July',
+            'August',
+            'September',
+            'October',
+            'November',
+            'December',
+        ],
+        confirmText: 'Confirm',
+        selectedText: 'Selected',
+        dayText: 'day',
+        beforeText: 'Recent',
+        afterText: 'Future',
+        currentWeekText: 'This week',
+        currentMonthText: 'This month',
+        currentQuarterText: 'This quarter',
+    },
+};

+ 88 - 0
components/lang/es_ES.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: '¡El slot está vacío!',
+        loading: 'Cargando...',
+        noData: 'Sin datos',
+        noMoreData: 'No hay más datos',
+    },
+    actionSheet: {
+        cancelText: 'Cancelar',
+    },
+    bottomSheet: {
+        title: 'Título',
+    },
+    dialog: {
+        title: 'Advertencia',
+        content: 'Contenido',
+        primaryText: 'OK',
+        secondaryText: 'Cancelar',
+    },
+    input: {
+        pleaseInput: 'Por favor, introduzca',
+    },
+    modal: {
+        title: 'Título',
+        content: 'Contenido',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Título',
+    },
+    picker: {
+        defaultTitle: 'Por favor seleccione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+    },
+    asyncPicker: {
+        defaultTitle: 'Por favor seleccione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+        defaultNext: 'Siguiente',
+        defaultPrev: 'Anterior',
+        defaultSelected: 'Seleccionado',
+    },
+    rate: {
+        error1: '¡La calificación no debe ser mayor que su retroalimentación general!',
+        error2: '¡Debe completar la calificación al menos una vez en su totalidad!',
+        error3: '¡La calificación no es alta, por lo que el puercoespín está durmiendo!',
+        error4: '¡La calificación debe ser un número impar, para que pueda convertirse en un puercoespín!',
+        error5: '¡La altura o anchura de la calificación es difícil de tocar en el teléfono móvil!',
+    },
+    timePicker: {
+        defaultTitle: 'Por favor seleccione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+        defaultYear: 'Año',
+        defaultMonth: 'Mes',
+        defaultDay: 'Día',
+        defaultHour: 'Hora',
+        defaultMinute: 'Minuto',
+        defaultSecond: 'Segundo',
+    },
+    calendar: {
+        weekTextList: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],
+        weekSundayStartTextList: ['Sáb', 'Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie'],
+        monthTextList: [
+            'Enero',
+            'Febrero',
+            'Marzo',
+            'Abril',
+            'Mayo',
+            'Junio',
+            'Julio',
+            'Agosto',
+            'Septiembre',
+            'Octubre',
+            'Noviembre',
+            'Diciembre',
+        ],
+        confirmText: 'Confirmar',
+        selectedText: 'Seleccionado',
+        dayText: 'día',
+        beforeText: 'Antes',
+        afterText: 'Después',
+        currentWeekText: 'Esta semana',
+        currentMonthText: 'Este mes',
+        currentQuarterText: 'Este trimestre',
+    },
+};

+ 88 - 0
components/lang/et_EE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Pesa on tühi!',
+        loading: 'Laadimine...',
+        noData: 'Andmeid pole',
+        noMoreData: 'Rohkem andmeid pole',
+    },
+    actionSheet: {
+        cancelText: 'Tühista',
+    },
+    bottomSheet: {
+        title: 'Pealkiri',
+    },
+    dialog: {
+        title: 'Hoiatus',
+        content: 'Sisu',
+        primaryText: 'OK',
+        secondaryText: 'Tühista',
+    },
+    input: {
+        pleaseInput: 'Palun sisesta',
+    },
+    modal: {
+        title: 'Pealkiri',
+        content: 'Sisu',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Pealkiri',
+    },
+    picker: {
+        defaultTitle: 'Palun valige',
+        defaultCancel: 'Tühista',
+        defaultConfirm: 'Kinnita',
+    },
+    asyncPicker: {
+        defaultTitle: 'Palun valige',
+        defaultCancel: 'Tühista',
+        defaultConfirm: 'Kinnita',
+        defaultNext: 'Järgmine',
+        defaultPrev: 'Eelmine',
+        defaultSelected: 'Valitud',
+    },
+    rate: {
+        error1: 'Hinnang ei tohiks olla suurem kui kogu teie tagasiside!',
+        error2: 'Hinnang tuleks täita vähemalt üks kord tervikuna!',
+        error3: 'Hinnang pole kõrge, nii et siil magab!',
+        error4: 'Hinnang peaks olema paaritu arv, et see võiks areneda siiliks!',
+        error5: 'Hinnangu kõrgus või laius on mobiiltelefonil raskesti puudutatav!',
+    },
+    timePicker: {
+        defaultTitle: 'Palun valige',
+        defaultCancel: 'Tühista',
+        defaultConfirm: 'Kinnita',
+        defaultYear: 'Aasta',
+        defaultMonth: 'Kuu',
+        defaultDay: 'Päev',
+        defaultHour: 'Tund',
+        defaultMinute: 'Minut',
+        defaultSecond: 'Sekund',
+    },
+    calendar: {
+        weekTextList: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
+        weekSundayStartTextList: ['L', 'P', 'E', 'T', 'K', 'N', 'R'],
+        monthTextList: [
+            'Jaanuar',
+            'Veebruar',
+            'Märts',
+            'Aprill',
+            'Mai',
+            'Juuni',
+            'Juuli',
+            'August',
+            'September',
+            'Oktoober',
+            'November',
+            'Detsember',
+        ],
+        confirmText: 'Kinnita',
+        selectedText: 'Valitud',
+        dayText: 'päev',
+        beforeText: 'Enne',
+        afterText: 'Pärast',
+        currentWeekText: 'See nädal',
+        currentMonthText: 'See kuu',
+        currentQuarterText: 'See kvartal',
+    },
+};

+ 88 - 0
components/lang/eu_ES.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Slot-a hutsik dago!',
+        loading: 'Kargatzen...',
+        noData: 'Datu gabe',
+        noMoreData: 'Ez dago gehio datu',
+    },
+    actionSheet: {
+        cancelText: 'Utzi',
+    },
+    bottomSheet: {
+        title: 'Izenburua',
+    },
+    dialog: {
+        title: 'Kontuz!',
+        content: 'Edukia',
+        primaryText: 'Onartu',
+        secondaryText: 'Utzi',
+    },
+    input: {
+        pleaseInput: 'Mesedez sartu',
+    },
+    modal: {
+        title: 'Izenburua',
+        content: 'Edukia',
+        btnText: 'Onartu',
+    },
+    navBar: {
+        title: 'Izenburua',
+    },
+    picker: {
+        defaultTitle: 'Aukeratu mesedez',
+        defaultCancel: 'Utzi',
+        defaultConfirm: 'Onartu',
+    },
+    asyncPicker: {
+        defaultTitle: 'Aukeratu mesedez',
+        defaultCancel: 'Utzi',
+        defaultConfirm: 'Onartu',
+        defaultNext: 'Hurrengoa',
+        defaultPrev: 'Aurrekoa',
+        defaultSelected: 'Aukeratuta',
+    },
+    rate: {
+        error1: 'Kalifikazioa ezin da zure iruzkina orokorrean baino handiagoa izan!',
+        error2: 'Kalifikazioa gutxienez osatu behar da oso bat aldiz!',
+        error3: 'Kalifikazioa ez da handia, beraz oxela altxatuta dago!',
+        error4: 'Kalifikazioa zenbaki bakoitzean asmatu behar da, sihinez armadillo bihurtzeko!',
+        error5: 'Kalifikazioaren altuera edo zabalera txarto sakatzea da telefono mugikorrean!',
+    },
+    timePicker: {
+        defaultTitle: 'Aukeratu mesedez',
+        defaultCancel: 'Utzi',
+        defaultConfirm: 'Onartu',
+        defaultYear: 'Urtea',
+        defaultMonth: 'Hilabetea',
+        defaultDay: 'Eguna',
+        defaultHour: 'Ordua',
+        defaultMinute: 'Minutua',
+        defaultSecond: 'Segundoa',
+    },
+    calendar: {
+        weekTextList: ['Ig.', 'Al.', 'Ar.', 'Az.', 'Og.', 'Or.', 'La.'],
+        weekSundayStartTextList: ['La.', 'Ig.', 'Al.', 'Ar.', 'Az.', 'Og.', 'Or.'],
+        monthTextList: [
+            'Urtarrila',
+            'Otsaila',
+            'Martxoa',
+            'Apirila',
+            'Maiatza',
+            'Ekaina',
+            'Uztaila',
+            'Abuztua',
+            'Iraila',
+            'Urria',
+            'Azaroa',
+            'Abendua',
+        ],
+        confirmText: 'Onartu',
+        selectedText: 'Aukeratuta',
+        dayText: 'eguna',
+        beforeText: 'Aurretik',
+        afterText: 'Ondoren',
+        currentWeekText: 'Aste hau',
+        currentMonthText: 'Hilabete hau',
+        currentQuarterText: 'Gertaera hau',
+    },
+};

+ 75 - 0
components/lang/fa_IR.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'اسلات خالی است!',
+        loading: 'در حال بارگذاری...',
+        noData: 'هیچ داده‌ای موجود نیست',
+        noMoreData: 'دیگر داده‌ای موجود نیست',
+    },
+    actionSheet: {
+        cancelText: 'لغو',
+    },
+    bottomSheet: {
+        title: 'عنوان',
+    },
+    dialog: {
+        title: 'هشدار',
+        content: 'محتوا',
+        primaryText: 'تایید',
+        secondaryText: 'لغو',
+    },
+    input: {
+        pleaseInput: 'لطفا وارد کنید',
+    },
+    modal: {
+        title: 'عنوان',
+        content: 'محتوا',
+        btnText: 'تایید',
+    },
+    navBar: {
+        title: 'عنوان',
+    },
+    picker: {
+        defaultTitle: 'لطفا انتخاب کنید',
+        defaultCancel: 'لغو',
+        defaultConfirm: 'تایید',
+    },
+    asyncPicker: {
+        defaultTitle: 'لطفا انتخاب کنید',
+        defaultCancel: 'لغو',
+        defaultConfirm: 'تایید',
+        defaultNext: 'بعدی',
+        defaultPrev: 'قبلی',
+        defaultSelected: 'انتخاب شده',
+    },
+    rate: {
+        error1: 'رتبه‌بندی نباید از کل بازخورد شما بیشتر باشد!',
+        error2: 'رتبه‌بندی باید حداقل یکبار کامل شود!',
+        error3: 'رتبه‌بندی بخش‌بخش است، بنابراین خزنده در حال خوابیدن است!',
+        error4: 'رتبه‌بندی باید یک عدد فرد باشد تا بتواند به خزنده تبدیل شود!',
+        error5: 'ارتفاع یا عرض ارزیابی بسیار سخت بر روی تلفن همراه است!',
+    },
+    timePicker: {
+        defaultTitle: 'لطفا انتخاب کنید',
+        defaultCancel: 'لغو',
+        defaultConfirm: 'تایید',
+        defaultYear: 'سال',
+        defaultMonth: 'ماه',
+        defaultDay: 'روز',
+        defaultHour: 'ساعت',
+        defaultMinute: 'دقیقه',
+        defaultSecond: 'ثانیه',
+    },
+    calendar: {
+        weekTextList: ['یک', 'دو', 'سه', 'چهار', 'پنج', 'جمعه', 'شنبه'],
+        weekSundayStartTextList: ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'],
+        monthTextList: ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'می', 'ژوئن', 'جولای', 'آگوست', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
+        confirmText: 'تایید',
+        selectedText: 'انتخاب شده',
+        dayText: 'روز',
+        beforeText: 'پیش',
+        afterText: 'بعد',
+        currentWeekText: 'هفته جاری',
+        currentMonthText: 'ماه جاری',
+        currentQuarterText: 'سه ماهه جاری',
+    },
+};

+ 88 - 0
components/lang/fi_FI.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Paikka on tyhjä!',
+        loading: 'Ladataan...',
+        noData: 'Ei dataa',
+        noMoreData: 'Ei enempää tietoja',
+    },
+    actionSheet: {
+        cancelText: 'Peruuta',
+    },
+    bottomSheet: {
+        title: 'Otsikko',
+    },
+    dialog: {
+        title: 'Varoitus',
+        content: 'Sisältö',
+        primaryText: 'Vahvista',
+        secondaryText: 'Peruuta',
+    },
+    input: {
+        pleaseInput: 'Kirjoita tähän',
+    },
+    modal: {
+        title: 'Otsikko',
+        content: 'Sisältö',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Otsikko',
+    },
+    picker: {
+        defaultTitle: 'Valitse',
+        defaultCancel: 'Peruuta',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Valitse',
+        defaultCancel: 'Peruuta',
+        defaultConfirm: 'OK',
+        defaultNext: 'Seuraava',
+        defaultPrev: 'Edellinen',
+        defaultSelected: 'Valittu',
+    },
+    rate: {
+        error1: 'Arvostelun ei pitäisi olla suurempi kuin yhteenvetosi!',
+        error2: 'Arvostelu on täytettävä vähintään kerran!',
+        error3: 'Arvostelu on osioittain, joten pöllö nukkuu!',
+        error4: 'Arvostelun on oltava yksi parittomista numeroista muuttaakseen sen kiharaksi!',
+        error5: 'Arvostelun korkeus tai leveys on liian pieni puhelimessa!',
+    },
+    timePicker: {
+        defaultTitle: 'Valitse',
+        defaultCancel: 'Peruuta',
+        defaultConfirm: 'OK',
+        defaultYear: 'Vuosi',
+        defaultMonth: 'Kuukausi',
+        defaultDay: 'Päivä',
+        defaultHour: 'Tunti',
+        defaultMinute: 'Minuutti',
+        defaultSecond: 'Sekunti',
+    },
+    calendar: {
+        weekTextList: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'],
+        weekSundayStartTextList: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'],
+        monthTextList: [
+            'Tammikuu',
+            'Helmikuu',
+            'Maaliskuu',
+            'Huhtikuu',
+            'Toukokuu',
+            'Kesäkuu',
+            'Heinäkuu',
+            'Elokuu',
+            'Syyskuu',
+            'Lokakuu',
+            'Marraskuu',
+            'Joulukuu',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Valittu',
+        dayText: 'Päivä',
+        beforeText: 'Ennen',
+        afterText: 'Jälkeen',
+        currentWeekText: 'Nykyinen viikko',
+        currentMonthText: 'Nykyinen kuukausi',
+        currentQuarterText: 'Nykyinen neljännesvuosi',
+    },
+};

+ 88 - 0
components/lang/fr_BE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Emplacement libre!',
+        loading: 'Chargement en cours...',
+        noData: 'Aucune donnée',
+        noMoreData: 'Plus de données',
+    },
+    actionSheet: {
+        cancelText: 'Annuler',
+    },
+    bottomSheet: {
+        title: 'Titre',
+    },
+    dialog: {
+        title: 'Avertissement',
+        content: 'Contenu',
+        primaryText: 'Confirmer',
+        secondaryText: 'Annuler',
+    },
+    input: {
+        pleaseInput: 'Veuillez renseigner',
+    },
+    modal: {
+        title: 'Titre',
+        content: 'Contenu',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titre',
+    },
+    picker: {
+        defaultTitle: 'Choisir',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Sélectionner',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+        defaultNext: 'Suivant',
+        defaultPrev: 'Précédent',
+        defaultSelected: 'Sélectionné',
+    },
+    rate: {
+        error1: "L'évaluation ne doit pas être supérieure à votre résumé !",
+        error2: "L'évaluation doit être remplie au moins une fois !",
+        error3: "L'évaluation est en morceaux, alors la chouette est endormie !",
+        error4: "L'évaluation doit être un nombre impair pour la rendre chouette!",
+        error5: "La hauteur ou la largeur de l'évaluation est trop petite sur un téléphone !",
+    },
+    timePicker: {
+        defaultTitle: 'Choisir',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+        defaultYear: 'Année',
+        defaultMonth: 'Mois',
+        defaultDay: 'Jour',
+        defaultHour: 'Heure',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Seconde',
+    },
+    calendar: {
+        weekTextList: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
+        weekSundayStartTextList: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
+        monthTextList: [
+            'Janvier',
+            'Février',
+            'Mars',
+            'Avril',
+            'Mai',
+            'Juin',
+            'Juillet',
+            'Août',
+            'Septembre',
+            'Octobre',
+            'Novembre',
+            'Décembre',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Sélectionné',
+        dayText: 'Jour',
+        beforeText: 'Avant',
+        afterText: 'Après',
+        currentWeekText: 'Semaine en cours',
+        currentMonthText: 'Mois en cours',
+        currentQuarterText: 'Trimestre en cours',
+    },
+};

+ 88 - 0
components/lang/fr_CA.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Emplacement libre!',
+        loading: 'Chargement en cours...',
+        noData: 'Aucune donnée',
+        noMoreData: 'Plus de données',
+    },
+    actionSheet: {
+        cancelText: 'Annuler',
+    },
+    bottomSheet: {
+        title: 'Titre',
+    },
+    dialog: {
+        title: 'Avertissement',
+        content: 'Contenu',
+        primaryText: 'Confirmer',
+        secondaryText: 'Annuler',
+    },
+    input: {
+        pleaseInput: 'Veuillez renseigner',
+    },
+    modal: {
+        title: 'Titre',
+        content: 'Contenu',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titre',
+    },
+    picker: {
+        defaultTitle: 'Choisir',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Sélectionner',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+        defaultNext: 'Suivant',
+        defaultPrev: 'Précédent',
+        defaultSelected: 'Sélectionné',
+    },
+    rate: {
+        error1: "L'évaluation ne doit pas être supérieure à votre résumé !",
+        error2: "L'évaluation doit être remplie au moins une fois !",
+        error3: "L'évaluation est en morceaux, alors la chouette est endormie !",
+        error4: "L'évaluation doit être un nombre impair pour la rendre chouette!",
+        error5: "La hauteur ou la largeur de l'évaluation est trop petite sur un téléphone !",
+    },
+    timePicker: {
+        defaultTitle: 'Choisir',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+        defaultYear: 'Année',
+        defaultMonth: 'Mois',
+        defaultDay: 'Jour',
+        defaultHour: 'Heure',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Seconde',
+    },
+    calendar: {
+        weekTextList: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
+        weekSundayStartTextList: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
+        monthTextList: [
+            'Janvier',
+            'Février',
+            'Mars',
+            'Avril',
+            'Mai',
+            'Juin',
+            'Juillet',
+            'Août',
+            'Septembre',
+            'Octobre',
+            'Novembre',
+            'Décembre',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Sélectionné',
+        dayText: 'Jour',
+        beforeText: 'Avant',
+        afterText: 'Après',
+        currentWeekText: 'Semaine en cours',
+        currentMonthText: 'Mois en cours',
+        currentQuarterText: 'Trimestre en cours',
+    },
+};

+ 88 - 0
components/lang/fr_FR.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Emplacement libre!',
+        loading: 'Chargement en cours...',
+        noData: 'Aucune donnée',
+        noMoreData: 'Plus de données',
+    },
+    actionSheet: {
+        cancelText: 'Annuler',
+    },
+    bottomSheet: {
+        title: 'Titre',
+    },
+    dialog: {
+        title: 'Avertissement',
+        content: 'Contenu',
+        primaryText: 'Confirmer',
+        secondaryText: 'Annuler',
+    },
+    input: {
+        pleaseInput: 'Veuillez renseigner',
+    },
+    modal: {
+        title: 'Titre',
+        content: 'Contenu',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titre',
+    },
+    picker: {
+        defaultTitle: 'Choisir',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Sélectionner',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+        defaultNext: 'Suivant',
+        defaultPrev: 'Précédent',
+        defaultSelected: 'Sélectionné',
+    },
+    rate: {
+        error1: "L'évaluation ne doit pas être supérieure à votre résumé !",
+        error2: "L'évaluation doit être remplie au moins une fois !",
+        error3: "L'évaluation est en morceaux, alors la chouette est endormie !",
+        error4: "L'évaluation doit être un nombre impair pour la rendre chouette!",
+        error5: "La hauteur ou la largeur de l'évaluation est trop petite sur un téléphone !",
+    },
+    timePicker: {
+        defaultTitle: 'Choisir',
+        defaultCancel: 'Annuler',
+        defaultConfirm: 'OK',
+        defaultYear: 'Année',
+        defaultMonth: 'Mois',
+        defaultDay: 'Jour',
+        defaultHour: 'Heure',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Seconde',
+    },
+    calendar: {
+        weekTextList: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
+        weekSundayStartTextList: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
+        monthTextList: [
+            'Janvier',
+            'Février',
+            'Mars',
+            'Avril',
+            'Mai',
+            'Juin',
+            'Juillet',
+            'Août',
+            'Septembre',
+            'Octobre',
+            'Novembre',
+            'Décembre',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Sélectionné',
+        dayText: 'Jour',
+        beforeText: 'Avant',
+        afterText: 'Après',
+        currentWeekText: 'Semaine en cours',
+        currentMonthText: 'Mois en cours',
+        currentQuarterText: 'Trimestre en cours',
+    },
+};

+ 88 - 0
components/lang/ga_IE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Sábháil oscailte!',
+        loading: 'Lodáil i gceist...',
+        noData: 'Níl aon sonraí ann',
+        noMoreData: 'Níl tuilleadh sonraí',
+    },
+    actionSheet: {
+        cancelText: 'Cealaigh',
+    },
+    bottomSheet: {
+        title: 'Teideal',
+    },
+    dialog: {
+        title: 'Rabhadh',
+        content: 'Ábhar',
+        primaryText: 'Deimhnigh',
+        secondaryText: 'Cealaigh',
+    },
+    input: {
+        pleaseInput: 'Cuir isteach le do thoil',
+    },
+    modal: {
+        title: 'Teideal',
+        content: 'Ábhar',
+        btnText: 'Ceart go leor',
+    },
+    navBar: {
+        title: 'Teideal',
+    },
+    picker: {
+        defaultTitle: 'Roghnaigh',
+        defaultCancel: 'Cealaigh',
+        defaultConfirm: 'Ceart go leor',
+    },
+    asyncPicker: {
+        defaultTitle: 'Roghnaigh',
+        defaultCancel: 'Cealaigh',
+        defaultConfirm: 'Ceart go leor',
+        defaultNext: 'Ar aghaidh',
+        defaultPrev: 'Anois siar',
+        defaultSelected: 'Roghnaithe',
+    },
+    rate: {
+        error1: 'Ní féidir an luacháil a bheith níos mó ná do chuid tuairimí!',
+        error2: 'Caithfidh an luacháil a líonadh ar a laghad amháin!',
+        error3: 'Tá an luacháil briste, is ea, taitníonn an t-úll dom!',
+        error4: 'Ní mór don luacháil a bheith uimhriúil leis an t-úll a dhéanamh astu!',
+        error5: 'Tá an méid nó an leithead an luachála ró-ghairid ar fón póca!',
+    },
+    timePicker: {
+        defaultTitle: 'Roghnaigh',
+        defaultCancel: 'Cealaigh',
+        defaultConfirm: 'Ceart go leor',
+        defaultYear: 'Bliain',
+        defaultMonth: 'Mí',
+        defaultDay: 'Lá',
+        defaultHour: 'Uair',
+        defaultMinute: 'Nóiméad',
+        defaultSecond: 'Soicind',
+    },
+    calendar: {
+        weekTextList: ['Domh', 'Luan', 'Mái', 'Céa', 'Déa', 'Aoi', 'Sat'],
+        weekSundayStartTextList: ['Déa', 'Luan', 'Mái', 'Céa', 'Déa', 'Aoi', 'Sat'],
+        monthTextList: [
+            'Eanáir',
+            'Feabhra',
+            'Márta',
+            'Aibreán',
+            'Bealtaine',
+            'Meitheamh',
+            'Iúil',
+            'Lúnasa',
+            'Meán Fómhair',
+            'Deireadh Fomhair',
+            'Samhain',
+            'Nollaig',
+        ],
+        confirmText: 'Ceart go leor',
+        selectedText: 'Roghnaithe',
+        dayText: 'Lá',
+        beforeText: 'Roimh',
+        afterText: 'Tar éis',
+        currentWeekText: 'Seachtain reatha',
+        currentMonthText: 'Mí reatha',
+        currentQuarterText: 'Ráithe reatha',
+    },
+};

+ 75 - 0
components/lang/gl_ES.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'ranura vacía!',
+        loading: 'Cargando...',
+        noData: 'Ningún dato',
+        noMoreData: 'No hay más datos',
+    },
+    actionSheet: {
+        cancelText: 'Cancelar',
+    },
+    bottomSheet: {
+        title: 'Título',
+    },
+    dialog: {
+        title: 'Aviso',
+        content: 'Contenido',
+        primaryText: 'Confirmar',
+        secondaryText: 'Cancelar',
+    },
+    input: {
+        pleaseInput: 'Por favor introduzca',
+    },
+    modal: {
+        title: 'Título',
+        content: 'Contenido',
+        btnText: 'De acuerdo',
+    },
+    navBar: {
+        title: 'Título',
+    },
+    picker: {
+        defaultTitle: 'Elixir',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'De acuerdo',
+    },
+    asyncPicker: {
+        defaultTitle: 'Seleccionar',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'De acuerdo',
+        defaultNext: 'Próximo',
+        defaultPrev: 'Anterior',
+        defaultSelected: 'Seleccionados',
+    },
+    rate: {
+        error1: '¡La valoración no puede ser mayor que el resumen!',
+        error2: '¡La valoración debe ser completada al menos una vez!',
+        error3: 'La valoración está rota, ¡así que la lechuza está durmiendo!',
+        error4: '¡La valoración debe ser un número impar para hacerla genial!',
+        error5: '¡La altura o ancho de la valoración es demasiado pequeña en un teléfono!',
+    },
+    timePicker: {
+        defaultTitle: 'Elixir',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'De acuerdo',
+        defaultYear: 'Año',
+        defaultMonth: 'Mes',
+        defaultDay: 'Día',
+        defaultHour: 'Hora',
+        defaultMinute: 'Minuto',
+        defaultSecond: 'Segundo',
+    },
+    calendar: {
+        weekTextList: ['Dom', 'Lun', 'Mar', 'Mér', 'Xov', 'Ven', 'Sáb'],
+        weekSundayStartTextList: ['Dom', 'Lun', 'Mar', 'Mér', 'Xob', 'Ven', 'Sáb'],
+        monthTextList: ['Xan', 'Feb', 'Maz', 'Abr', 'Mai', 'Xun', 'Xul', 'Ago', 'Set', 'Out', 'Nov', 'Dec'],
+        confirmText: 'De acuerdo',
+        selectedText: 'Seleccionados',
+        dayText: 'Día',
+        beforeText: 'Antes',
+        afterText: 'Despois',
+        currentWeekText: 'Semana actual',
+        currentMonthText: 'Este mes',
+        currentQuarterText: 'Este cuarto',
+    },
+};

+ 75 - 0
components/lang/he_IL.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'ריק!',
+        loading: 'טוען...',
+        noData: 'אין נתונים',
+        noMoreData: 'אין יותר נתונים',
+    },
+    actionSheet: {
+        cancelText: 'בטל',
+    },
+    bottomSheet: {
+        title: 'כותרת',
+    },
+    dialog: {
+        title: 'הודעה',
+        content: 'תוכן',
+        primaryText: 'אישור',
+        secondaryText: 'בטל',
+    },
+    input: {
+        pleaseInput: 'אנא הזן',
+    },
+    modal: {
+        title: 'כותרת',
+        content: 'תוכן',
+        btnText: 'אישור',
+    },
+    navBar: {
+        title: 'כותרת',
+    },
+    picker: {
+        defaultTitle: 'בחר',
+        defaultCancel: 'בטל',
+        defaultConfirm: 'אישור',
+    },
+    asyncPicker: {
+        defaultTitle: 'בחר',
+        defaultCancel: 'בטל',
+        defaultConfirm: 'אישור',
+        defaultNext: 'הבא',
+        defaultPrev: 'הקודם',
+        defaultSelected: 'נבחרים',
+    },
+    rate: {
+        error1: 'הדירוג לא יכול להיות גבוה יותר מהסיכומים!',
+        error2: 'נדרש להשלים את הדירוג לפחות פעם אחת!',
+        error3: 'הדירוג שבור, לכן אני אוהב את התפוח שלי לישון!',
+        error4: 'הדירוג חייב להיות מספר אי-זוגי כדי להיות מגניב!',
+        error5: 'הגובה או הרוחב של הדירוג קטן מדי בטלפון!',
+    },
+    timePicker: {
+        defaultTitle: 'בחר',
+        defaultCancel: 'בטל',
+        defaultConfirm: 'אישור',
+        defaultYear: 'שנה',
+        defaultMonth: 'חודש',
+        defaultDay: 'יום',
+        defaultHour: 'שעה',
+        defaultMinute: 'דקה',
+        defaultSecond: 'שניה',
+    },
+    calendar: {
+        weekTextList: ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'],
+        weekSundayStartTextList: ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'],
+        monthTextList: ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],
+        confirmText: 'אישור',
+        selectedText: 'נבחרים',
+        dayText: 'יום',
+        beforeText: 'לפני',
+        afterText: 'אחרי',
+        currentWeekText: 'שבוע נוכחי',
+        currentMonthText: 'חודש נוכחי',
+        currentQuarterText: 'רבעון נוכחי',
+    },
+};

+ 75 - 0
components/lang/hi_IN.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'खाली!',
+        loading: 'लोड हो रहा है...',
+        noData: 'कोई डेटा नहीं',
+        noMoreData: 'और डेटा नहीं',
+    },
+    actionSheet: {
+        cancelText: 'रद्द करें',
+    },
+    bottomSheet: {
+        title: 'शीर्षक',
+    },
+    dialog: {
+        title: 'सूचना',
+        content: 'सामग्री',
+        primaryText: 'अभिप्राय दर्ज करें',
+        secondaryText: 'रद्द करें',
+    },
+    input: {
+        pleaseInput: 'कृपया इनपुट करें',
+    },
+    modal: {
+        title: 'शीर्षक',
+        content: 'सामग्री',
+        btnText: 'ठीक है',
+    },
+    navBar: {
+        title: 'शीर्षक',
+    },
+    picker: {
+        defaultTitle: 'चयन करें',
+        defaultCancel: 'रद्द करें',
+        defaultConfirm: 'ठीक है',
+    },
+    asyncPicker: {
+        defaultTitle: 'चयन करें',
+        defaultCancel: 'रद्द करें',
+        defaultConfirm: 'ठीक है',
+        defaultNext: 'अगला',
+        defaultPrev: 'पिछला',
+        defaultSelected: 'चयनित',
+    },
+    rate: {
+        error1: 'रेटिंग जमा आंकड़े से अधिक नहीं हो सकती!',
+        error2: 'कम से कम एक बार रेटिंग पूर्ण करनी चाहिए!',
+        error3: 'रेटिंग टूटी हुई है, इसलिए मैं अपनी गुलाब की नींद को पसंद करता हूँ!',
+        error4: 'रेटिंग केवल विषम संख्या होनी चाहिए ताकि यह ग्रेट हो सके!',
+        error5: 'फोन पर रेटिंग का ऊंचाई या चौड़ाई बहुत कम है!',
+    },
+    timePicker: {
+        defaultTitle: 'चयन करें',
+        defaultCancel: 'रद्द करें',
+        defaultConfirm: 'ठीक है',
+        defaultYear: 'वर्ष',
+        defaultMonth: 'महीना',
+        defaultDay: 'दिन',
+        defaultHour: 'घंटा',
+        defaultMinute: 'मिनट',
+        defaultSecond: 'सेकंड',
+    },
+    calendar: {
+        weekTextList: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+        weekSundayStartTextList: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+        monthTextList: ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
+        confirmText: 'ठीक है',
+        selectedText: 'चयनित',
+        dayText: 'दिन',
+        beforeText: 'पूर्व',
+        afterText: 'बाद',
+        currentWeekText: 'वर्तमान सप्ताह',
+        currentMonthText: 'वर्तमान महीना',
+        currentQuarterText: 'वर्तमान तिमाही',
+    },
+};

+ 88 - 0
components/lang/hr_HR.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Sadržaj ulaza je prazan!',
+        loading: 'Učitavanje...',
+        noData: 'Nema dostupnih podataka',
+        noMoreData: 'Nema više podataka',
+    },
+    actionSheet: {
+        cancelText: 'Otkaži',
+    },
+    bottomSheet: {
+        title: 'Naslov',
+    },
+    dialog: {
+        title: 'Savjet',
+        content: 'Sadržaj',
+        primaryText: 'Potvrdi',
+        secondaryText: 'Otkaži',
+    },
+    input: {
+        pleaseInput: 'Molimo unesite',
+    },
+    modal: {
+        title: 'Naslov',
+        content: 'Sadržaj',
+        btnText: 'Razumijem',
+    },
+    navBar: {
+        title: 'Naslov',
+    },
+    picker: {
+        defaultTitle: 'Odaberite',
+        defaultCancel: 'Otkaži',
+        defaultConfirm: 'Potvrdi',
+    },
+    asyncPicker: {
+        defaultTitle: 'Odaberite',
+        defaultCancel: 'Otkaži',
+        defaultConfirm: 'Potvrdi',
+        defaultNext: 'Sljedeći',
+        defaultPrev: 'Prethodni',
+        defaultSelected: 'Odabran',
+    },
+    rate: {
+        error1: 'Vrijednost ne smije biti veća od Ukupno!',
+        error2: 'Ukupno se mora smanjiti za 1!',
+        error3: 'Vrijednost se mora smanjiti za 1 ako nije pola odabrana!',
+        error4: 'Vrijednost se mora smanjiti za 0,5 ako je pola odabrana!',
+        error5: 'Širina ili visina manja je od 20, što otežava klikanje u mobilnom uređaju!',
+    },
+    timePicker: {
+        defaultTitle: 'Odaberite',
+        defaultCancel: 'Otkaži',
+        defaultConfirm: 'Potvrdi',
+        defaultYear: 'Godina',
+        defaultMonth: 'Mjesec',
+        defaultDay: 'Dan',
+        defaultHour: 'Sat',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Sekunde',
+    },
+    calendar: {
+        weekTextList: ['Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub', 'Ned'],
+        weekSundayStartTextList: ['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub'],
+        monthTextList: [
+            'Siječanj',
+            'Veljača',
+            'Ožujak',
+            'Travanj',
+            'Svibanj',
+            'Lipanj',
+            'Srpanj',
+            'Kolovoz',
+            'Rujan',
+            'Listopad',
+            'Studeni',
+            'Prosinac',
+        ],
+        confirmText: 'Potvrdi',
+        selectedText: 'Odabrano',
+        dayText: 'Dan',
+        beforeText: 'Nedavno',
+        afterText: 'Budućnost',
+        currentWeekText: 'Ovaj tjedan',
+        currentMonthText: 'Ovaj mjesec',
+        currentQuarterText: 'Ovo tromjesečje',
+    },
+};

+ 88 - 0
components/lang/hu_HU.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'A bemenet tartalma üres!',
+        loading: 'Betöltés...',
+        noData: 'Nincsenek adatok',
+        noMoreData: 'Nincs több adat',
+    },
+    actionSheet: {
+        cancelText: 'Mégsem',
+    },
+    bottomSheet: {
+        title: 'Cím',
+    },
+    dialog: {
+        title: 'Tipp',
+        content: 'Tartalom',
+        primaryText: 'Megerősít',
+        secondaryText: 'Mégsem',
+    },
+    input: {
+        pleaseInput: 'Kérem írja be',
+    },
+    modal: {
+        title: 'Cím',
+        content: 'Tartalom',
+        btnText: 'Értettem',
+    },
+    navBar: {
+        title: 'Cím',
+    },
+    picker: {
+        defaultTitle: 'Kérem válasszon',
+        defaultCancel: 'Mégsem',
+        defaultConfirm: 'Megerősít',
+    },
+    asyncPicker: {
+        defaultTitle: 'Kérem válasszon',
+        defaultCancel: 'Mégsem',
+        defaultConfirm: 'Megerősít',
+        defaultNext: 'Következő',
+        defaultPrev: 'Előző',
+        defaultSelected: 'Kiválasztott',
+    },
+    rate: {
+        error1: 'Az érték nem lehet nagyobb, mint az Összeg!',
+        error2: 'Az Összeget 1-gyel csökkenteni kell!',
+        error3: 'Az értéket 1-gyel csökkenteni kell, ha nem félkiválasztva!',
+        error4: 'Az értéknek 0,5-tel kell csökkennie, ha félkiválasztva!',
+        error5: 'A szélesség vagy a magasság 20-nál kisebb, ami nehezíti a mobil eszközön történő kattintást!',
+    },
+    timePicker: {
+        defaultTitle: 'Kérem válasszon',
+        defaultCancel: 'Mégsem',
+        defaultConfirm: 'Megerősít',
+        defaultYear: 'Év',
+        defaultMonth: 'Hónap',
+        defaultDay: 'Nap',
+        defaultHour: 'Óra',
+        defaultMinute: 'Perc',
+        defaultSecond: 'Másodperc',
+    },
+    calendar: {
+        weekTextList: ['Hét', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat', 'Vasárnap'],
+        weekSundayStartTextList: ['Vas', 'Hét', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
+        monthTextList: [
+            'Január',
+            'Február',
+            'Március',
+            'Április',
+            'Május',
+            'Június',
+            'Július',
+            'Augusztus',
+            'Szeptember',
+            'Október',
+            'November',
+            'December',
+        ],
+        confirmText: 'Megerősít',
+        selectedText: 'Kiválasztva',
+        dayText: 'Nap',
+        beforeText: 'Friss',
+        afterText: 'Jövő',
+        currentWeekText: 'Ezen a héten',
+        currentMonthText: 'Ebben a hónapban',
+        currentQuarterText: 'Ebben a negyedévben',
+    },
+};

+ 88 - 0
components/lang/hy_AM.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Մուտքագրման բույլերի պարամետրերը դատարկ են!',
+        loading: 'Բեռնում...',
+        noData: 'Ոչ մի տվյալ',
+        noMoreData: 'Տվյալները ավելի չկան',
+    },
+    actionSheet: {
+        cancelText: 'Չեղարկել',
+    },
+    bottomSheet: {
+        title: 'Գլխավորություն',
+    },
+    dialog: {
+        title: 'Հիշողություն',
+        content: 'Բոլոր բանալիներ՝',
+        primaryText: 'Կատարել',
+        secondaryText: 'Չեղարկել',
+    },
+    input: {
+        pleaseInput: 'Խնդրում եմ մուտքագրել',
+    },
+    modal: {
+        title: 'Վերնագիր',
+        content: 'Բոլոր բանալիներ՝',
+        btnText: 'Ես հասկացավի՞ք',
+    },
+    navBar: {
+        title: 'Վերնագիր',
+    },
+    picker: {
+        defaultTitle: 'Ընտրեք',
+        defaultCancel: 'Չեղարկել',
+        defaultConfirm: 'Կատարել',
+    },
+    asyncPicker: {
+        defaultTitle: 'Ընտրեք',
+        defaultCancel: 'Չեղարկել',
+        defaultConfirm: 'Կատարել',
+        defaultNext: 'Հաջորդը',
+        defaultPrev: 'Նախորդը',
+        defaultSelected: 'Ընտրված',
+    },
+    rate: {
+        error1: 'Արժեքը չի կարող լինել Ընդհանուրից մեծանալուց!',
+        error2: 'Պետք է Հետևանքը մեկով նվազել!',
+        error3: 'Արժեքը պետք է մեկով նվազել, եթե կետը դեռևս ընտրված չէ!',
+        error4: 'Արժեքը պետք է նվազել 0,5-ով, եթե կետը ընտրված է!',
+        error5: 'Շարադաշտը կամ բույլերի բարձրությունը փոքր է 20-ից, որը դանդաղելի է շարադաշտերում!',
+    },
+    timePicker: {
+        defaultTitle: 'Ընտրեք',
+        defaultCancel: 'Չեղարկել',
+        defaultConfirm: 'Կատարել',
+        defaultYear: 'Տարի',
+        defaultMonth: 'Ամիս',
+        defaultDay: 'Օր',
+        defaultHour: 'Ժամ',
+        defaultMinute: 'Րոպե',
+        defaultSecond: 'Վայրկյան',
+    },
+    calendar: {
+        weekTextList: ['Հինգշաբթի', 'երկուշաբթի', 'երեքշաբթի', 'չորեքշաբթի', 'հինգշաբթի', 'ուրբաթ', 'շաբաթ'],
+        weekSundayStartTextList: ['Կիր', 'Երկ', 'Երք', 'Չոր', 'Հնգ', 'Ուրբ', 'Շբթ'],
+        monthTextList: [
+            'Հունվար',
+            'Փետրվար',
+            'Մարտ',
+            'Ապրիլ',
+            'Մայիս',
+            'Հունիս',
+            'Հուլիս',
+            'Օգոստոս',
+            'Սեպտեմբեր',
+            'Հոկտեմբեր',
+            'Նոյեմբեր',
+            'Դեկտեմբեր',
+        ],
+        confirmText: 'Կատարել',
+        selectedText: 'Ընտրված',
+        dayText: 'Օր',
+        beforeText: 'Անձնական',
+        afterText: 'Առաջացած',
+        currentWeekText: 'Այս շաբաթ',
+        currentMonthText: 'Այս ամսվա մեջ',
+        currentQuarterText: 'Այս եռամսյա մեջ',
+    },
+};

+ 88 - 0
components/lang/id_ID.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Isi slot kosong!',
+        loading: 'Sedang memuat...',
+        noData: 'Tidak ada data',
+        noMoreData: 'Tidak ada lagi data',
+    },
+    actionSheet: {
+        cancelText: 'Batal',
+    },
+    bottomSheet: {
+        title: 'Judul',
+    },
+    dialog: {
+        title: 'Petunjuk',
+        content: 'Konten',
+        primaryText: 'Konfirmasi',
+        secondaryText: 'Batal',
+    },
+    input: {
+        pleaseInput: 'Silakan masukkan',
+    },
+    modal: {
+        title: 'Judul',
+        content: 'Konten',
+        btnText: 'Saya mengerti',
+    },
+    navBar: {
+        title: 'Judul',
+    },
+    picker: {
+        defaultTitle: 'Silakan pilih',
+        defaultCancel: 'Batal',
+        defaultConfirm: 'Konfirmasi',
+    },
+    asyncPicker: {
+        defaultTitle: 'Silakan pilih',
+        defaultCancel: 'Batal',
+        defaultConfirm: 'Konfirmasi',
+        defaultNext: 'Berikutnya',
+        defaultPrev: 'Sebelumnya',
+        defaultSelected: 'Terpilih',
+    },
+    rate: {
+        error1: 'Nilai tidak boleh lebih besar dari Total!',
+        error2: 'Total harus dikurangi 1!',
+        error3: 'Nilai harus dikurangi 1 ketika tidak terpilih!',
+        error4: 'Nilai harus dikurangi 0,5 ketika terpilih setengah!',
+        error5: 'Lebar atau tinggi kurang dari 20, yang membuat klik pada terminal seluler sulit!',
+    },
+    timePicker: {
+        defaultTitle: 'Silakan pilih',
+        defaultCancel: 'Batal',
+        defaultConfirm: 'Konfirmasi',
+        defaultYear: 'Tahun',
+        defaultMonth: 'Bulan',
+        defaultDay: 'Hari',
+        defaultHour: 'Jam',
+        defaultMinute: 'Menit',
+        defaultSecond: 'Kedua',
+    },
+    kalender: {
+        weekTextList: ['Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab', 'Ming'],
+        weekSundayStartTextList: ['Ming', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],
+        monthTextList: [
+            'Januari',
+            'Februari',
+            'Maret',
+            'April',
+            'Mei',
+            'Juni',
+            'Juli',
+            'Agustus',
+            'September',
+            'Oktober',
+            'November',
+            'Desember',
+        ],
+        confirmText: 'Konfirmasi',
+        selectedText: 'Terpilih',
+        dayText: 'hari',
+        beforeText: 'Terakhir',
+        afterText: 'Masa depan',
+        currentWeekText: 'Minggu Ini',
+        currentMonthText: 'Bulan Ini',
+        currentQuarterText: 'Kuartal Ini',
+    },
+};

+ 88 - 0
components/lang/is_IS.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Hlaða tómi!',
+        loading: 'Hleður...',
+        noData: 'Engin gögn',
+        noMoreData: 'Engin fleiri gögn',
+    },
+    actionSheet: {
+        cancelText: 'Hætta við',
+    },
+    bottomSheet: {
+        title: 'Titill',
+    },
+    dialog: {
+        title: 'Ábending',
+        content: 'Efni',
+        primaryText: 'Staðfesta',
+        secondaryText: 'Hætta við',
+    },
+    input: {
+        pleaseInput: 'Vinsamlegast sláðu inn',
+    },
+    modal: {
+        title: 'Titill',
+        content: 'Efni',
+        btnText: 'Ég skil',
+    },
+    navBar: {
+        title: 'Titill',
+    },
+    picker: {
+        defaultTitle: 'Veldu vinsamlegast',
+        defaultCancel: 'Hætta við',
+        defaultConfirm: 'Staðfesta',
+    },
+    asyncPicker: {
+        defaultTitle: 'Veldu vinsamlegast',
+        defaultCancel: 'Hætta við',
+        defaultConfirm: 'Staðfesta',
+        defaultNext: 'Næsta',
+        defaultPrev: 'Fyrra',
+        defaultSelected: 'Valinn',
+    },
+    rate: {
+        error1: 'Gildið má ekki vera stærri en Heild!',
+        error2: 'Heild verður þá breytt ef gildi sleppt er!',
+        error3: 'Gildi verður breytt þegar það er ekki valið!',
+        error4: 'Gildi verður breytt þegar það er valið að hálft!',
+        error5: 'Breidd eða hæð minni en 20, sem gerir smella á fararmiða erfið á símanum!',
+    },
+    timePicker: {
+        defaultTitle: 'Veldu vinsamlegast',
+        defaultCancel: 'Hætta við',
+        defaultConfirm: 'Staðfesta',
+        defaultYear: 'Ár',
+        defaultMonth: 'Mánuður',
+        defaultDay: 'Dagur',
+        defaultHour: 'Klst.',
+        defaultMinute: 'Mín.',
+        defaultSecond: 'Sek.',
+    },
+    calendar: {
+        weekTextList: ['Mán', 'Þri', 'Mið', 'Fim', 'Fös', 'Lau', 'Sun'],
+        weekSundayStartTextList: ['Sun', 'Mán', 'Þri', 'Mið', 'Fim', 'Fös', 'Lau'],
+        monthTextList: [
+            'Janúar',
+            'Febrúar',
+            'Mars',
+            'Apríl',
+            'Maí',
+            'Júní',
+            'Júlí',
+            'Ágúst',
+            'September',
+            'Október',
+            'Nóvember',
+            'Desember',
+        ],
+        confirmText: 'Staðfesta',
+        selectedText: 'Valinn',
+        dayText: 'dagur',
+        beforeText: 'Fyrir',
+        afterText: 'Eftir',
+        currentWeekText: 'Þessi vika',
+        currentMonthText: 'Þessi mánuður',
+        currentQuarterText: 'Þessi fjórðungur',
+    },
+};

+ 88 - 0
components/lang/it_IT.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Il contenuto dello slot è vuoto!',
+        loading: 'Caricamento...',
+        noData: 'Nessun dato',
+        noMoreData: 'Non ci sono più dati',
+    },
+    actionSheet: {
+        cancelText: 'Annulla',
+    },
+    bottomSheet: {
+        title: 'Titolo',
+    },
+    dialog: {
+        title: 'Suggerimento',
+        content: 'Contenuto',
+        primaryText: 'Conferma',
+        secondaryText: 'Annulla',
+    },
+    input: {
+        pleaseInput: 'Si prega di inserire',
+    },
+    modal: {
+        title: 'Titolo',
+        content: 'Contenuto',
+        btnText: 'Ho capito',
+    },
+    navBar: {
+        title: 'Titolo',
+    },
+    picker: {
+        defaultTitle: 'Si prega di scegliere',
+        defaultCancel: 'Annulla',
+        defaultConfirm: 'Conferma',
+    },
+    asyncPicker: {
+        defaultTitle: 'Si prega di scegliere',
+        defaultCancel: 'Annulla',
+        defaultConfirm: 'Conferma',
+        defaultNext: 'Successivo',
+        defaultPrev: 'Precedente',
+        defaultSelected: 'Selezionato',
+    },
+    rate: {
+        error1: 'Il valore non può essere maggiore di Totale!',
+        error2: 'Il Totale deve essere sottratto di 1!',
+        error3: 'Il valore deve essere sottratto di 1 quando non selezionato!',
+        error4: 'Il valore deve essere sottratto di 0,5 quando selezionato a metà!',
+        error5: 'Larghezza o altezza inferiore a 20, rende difficoltoso il clic sul terminale mobile!',
+    },
+    timePicker: {
+        defaultTitle: 'Si prega di scegliere',
+        defaultCancel: 'Annulla',
+        defaultConfirm: 'Conferma',
+        defaultYear: 'Anno',
+        defaultMonth: 'Mese',
+        defaultDay: 'Giorno',
+        defaultHour: 'Ora',
+        defaultMinute: 'Minuto',
+        defaultSecond: 'Secondo',
+    },
+    calendar: {
+        weekTextList: ['Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab', 'Dom'],
+        weekSundayStartTextList: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
+        monthTextList: [
+            'Gennaio',
+            'Febbraio',
+            'Marzo',
+            'Aprile',
+            'Maggio',
+            'Giugno',
+            'Luglio',
+            'Agosto',
+            'Settembre',
+            'Ottobre',
+            'Novembre',
+            'Dicembre',
+        ],
+        confirmText: 'Conferma',
+        selectedText: 'Selezionato',
+        dayText: 'giorno',
+        beforeText: 'Recente',
+        afterText: 'Futuro',
+        currentWeekText: 'Questa settimana',
+        currentMonthText: 'Questo mese',
+        currentQuarterText: 'Questo trimestre',
+    },
+};

+ 75 - 0
components/lang/ja_JP.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'スロットの内容が空です!',
+        loading: '読み込み中...',
+        noData: 'データがありません',
+        noMoreData: 'これ以上のデータはありません',
+    },
+    actionSheet: {
+        cancelText: 'キャンセル',
+    },
+    bottomSheet: {
+        title: 'タイトル',
+    },
+    dialog: {
+        title: '注意',
+        content: '内容',
+        primaryText: '確認する',
+        secondaryText: 'キャンセル',
+    },
+    input: {
+        pleaseInput: '入力してください',
+    },
+    modal: {
+        title: 'タイトル',
+        content: '内容',
+        btnText: '了解',
+    },
+    navBar: {
+        title: 'タイトル',
+    },
+    picker: {
+        defaultTitle: '選んでください',
+        defaultCancel: 'キャンセル',
+        defaultConfirm: '確認',
+    },
+    asyncPicker: {
+        defaultTitle: '選んでください',
+        defaultCancel: 'キャンセル',
+        defaultConfirm: '確認',
+        defaultNext: '次へ',
+        defaultPrev: '前へ',
+        defaultSelected: '選択済み',
+    },
+    rate: {
+        error1: 'value は total を上回ることはできません!',
+        error2: 'total は 1 で割り切れる必要があります!',
+        error3: '半選択時、value は 1 で割り切れる必要があります!',
+        error4: '半選択時、value は 0.5 で割り切れる必要があります!',
+        error5: 'width または height が 20 未満の場合、モバイル端末でのクリックが困難になる可能性があります!',
+    },
+    timePicker: {
+        defaultTitle: '選んでください',
+        defaultCancel: 'キャンセル',
+        defaultConfirm: '確認',
+        defaultYear: '年',
+        defaultMonth: '月',
+        defaultDay: '日',
+        defaultHour: '時',
+        defaultMinute: '分',
+        defaultSecond: '秒',
+    },
+    calendar: {
+        weekTextList: ['月', '火', '水', '木', '金', '土', '日'],
+        weekSundayStartTextList: ['日', '月', '火', '水', '木', '金', '土'],
+        monthTextList: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+        confirmText: '確認',
+        selectedText: '選択済み',
+        dayText: '日',
+        beforeText: '最近',
+        afterText: '未来',
+        currentWeekText: '今週',
+        currentMonthText: '今月',
+        currentQuarterText: '今四半期',
+    },
+};

+ 88 - 0
components/lang/ka_GE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'შიდა ლექში არის ცარიელი!',
+        loading: 'იტვირთება...',
+        noData: 'მონაცემები არ არის',
+        noMoreData: 'არ არის უფრო მეტი მონაცემი',
+    },
+    actionSheet: {
+        cancelText: 'გაუქმება',
+    },
+    bottomSheet: {
+        title: 'სათაური',
+    },
+    dialog: {
+        title: 'შეტყობინება',
+        content: 'შინაარსი',
+        primaryText: 'დადასტურება',
+        secondaryText: 'გაუქმება',
+    },
+    input: {
+        pleaseInput: 'შეიყვანეთ',
+    },
+    modal: {
+        title: 'სათაური',
+        content: 'შინაარსი',
+        btnText: 'გაგეცემა',
+    },
+    navBar: {
+        title: 'სათაური',
+    },
+    picker: {
+        defaultTitle: 'აირჩიეთ',
+        defaultCancel: 'გაუქმება',
+        defaultConfirm: 'დადასტურება',
+    },
+    asyncPicker: {
+        defaultTitle: 'აირჩიეთ',
+        defaultCancel: 'გაუქმება',
+        defaultConfirm: 'დადასტურება',
+        defaultNext: 'შემდეგი',
+        defaultPrev: 'წინა',
+        defaultSelected: 'არჩეულია',
+    },
+    rate: {
+        error1: 'value არ შეიძლება დაემატოს total-ზე!',
+        error2: 'total-ის მნიშვნელობა უნდა 1-ით გაყოფილი იყოს!',
+        error3: 'ნახეთ error2-ი!',
+        error4: 'ნახეთ error2-ი!',
+        error5: 'სიგრძის ან სიმაღლის მნიშვნელობა 20-ზე ნაკლები შეიძლება ნაკლები ვიქნებოდეს, რაც მობილურ მოწყობილობებში ბადალაში დაკლიკების შესაძლებლობას უზრუნველყოფს!',
+    },
+    timePicker: {
+        defaultTitle: 'აირჩიეთ',
+        defaultCancel: 'გაუქმება',
+        defaultConfirm: 'დადასტურება',
+        defaultYear: 'წელი',
+        defaultMonth: 'თვე',
+        defaultDay: 'დღე',
+        defaultHour: 'საათი',
+        defaultMinute: 'წუთი',
+        defaultSecond: 'წამი',
+    },
+    calendar: {
+        weekTextList: ['ორ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ', 'კვ'],
+        weekSundayStartTextList: ['კვ', 'ორ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'],
+        monthTextList: [
+            'იანვარი',
+            'თებერვალი',
+            'მარტი',
+            'აპრილი',
+            'მაისი',
+            'ივნისი',
+            'ივლისი',
+            'აგვისტო',
+            'სექტემბერი',
+            'ოქტომბერი',
+            'ნოემბერი',
+            'დეკემბერი',
+        ],
+        confirmText: 'დადასტურება',
+        selectedText: 'არჩეულია',
+        dayText: 'დღე',
+        beforeText: 'უახლესი',
+        afterText: 'მომდევნო',
+        currentWeekText: 'ამ კვირაში',
+        currentMonthText: 'ამ თვეში',
+        currentQuarterText: 'ამ კვარტალში',
+    },
+};

+ 88 - 0
components/lang/kk_KZ.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Слот әдісі бос!',
+        loading: 'Жүктеу...',
+        noData: 'Деректер жоқ',
+        noMoreData: 'Көбірек деректер жоқ',
+    },
+    actionSheet: {
+        cancelText: 'Болдырмау',
+    },
+    bottomSheet: {
+        title: 'Тақырып',
+    },
+    dialog: {
+        title: 'Ескерту',
+        content: 'Мазмұн',
+        primaryText: 'Растау',
+        secondaryText: 'Болдырмау',
+    },
+    input: {
+        pleaseInput: 'Құпия сөзді енгізіңіз',
+    },
+    modal: {
+        title: 'Тақырып',
+        content: 'Мазмұн',
+        btnText: 'Көрдім',
+    },
+    navBar: {
+        title: 'Тақырып',
+    },
+    picker: {
+        defaultTitle: 'Таңдаңыз',
+        defaultCancel: 'Болдырмау',
+        defaultConfirm: 'Растау',
+    },
+    asyncPicker: {
+        defaultTitle: 'Таңдаңыз',
+        defaultCancel: 'Болдырмау',
+        defaultConfirm: 'Растау',
+        defaultNext: 'Келесі',
+        defaultPrev: 'Алдыңғы',
+        defaultSelected: 'Таңдалған',
+    },
+    rate: {
+        error1: 'Құны жиынтықтан үлкен болмауы тиіс!',
+        error2: 'Құны жиынтықты 1-ге бөлу керек!',
+        error3: 'Немесе-таңдалмаған жағдайында құны 1-ге бөлу керек!',
+        error4: 'Немесе-бір орындамаған жағдайында құны 0,5 дейін бөлу керек!',
+        error5: 'Ені-биіктігі 20-тен аз, мобильді терминалда түртіну және басу көзін арттыру мүмкіндігін қамтіды!',
+    },
+    timePicker: {
+        defaultTitle: 'Таңдаңыз',
+        defaultCancel: 'Болдырмау',
+        defaultConfirm: 'Растау',
+        defaultYear: 'Жыл',
+        defaultMonth: 'Ай',
+        defaultDay: 'Күн',
+        defaultHour: 'Сағат',
+        defaultMinute: 'Минут',
+        defaultSecond: 'Секунд',
+    },
+    calendar: {
+        weekTextList: ['Дс', 'Сс', 'Ср', 'Бс', 'Бс', 'Жм', 'Жк'],
+        weekSundayStartTextList: ['Жк', 'Дс', 'Сс', 'Ср', 'Бс', 'Бс', 'Жм'],
+        monthTextList: [
+            'Қаңтар',
+            'Ақпан',
+            'Наурыз',
+            'Сәуір',
+            'Мамыр',
+            'Маусым',
+            'Шілде',
+            'Тамыз',
+            'Қыркүйек',
+            'Қазан',
+            'Қараша',
+            'Желтоқсан',
+        ],
+        confirmText: 'Растау',
+        selectedText: 'Таңдалды',
+        dayText: 'күн',
+        beforeText: 'соңғы',
+        afterText: 'келесі',
+        currentWeekText: 'Бұл апта',
+        currentMonthText: 'Бұл ай',
+        currentQuarterText: 'Бұл тоқсаны',
+    },
+};

+ 88 - 0
components/lang/km_KH.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'គ្មានទិន្នន័យទេ។',
+        loading: 'កំពុងផ្ទុកទិន្នន័យ ...',
+        noData: 'គ្មានទិន្នន័យទេ',
+        noMoreData: 'គ្មានទិន្នន័យផ្សេងទៀតទេ',
+    },
+    actionSheet: {
+        cancelText: 'បោះបង់',
+    },
+    bottomSheet: {
+        title: 'ចំណងជើង',
+    },
+    dialog: {
+        title: 'សារ',
+        content: 'មាតិកាពីរប់ពីវាលបរិបទ។',
+        primaryText: 'យល់ព្រម',
+        secondaryText: 'បោះបង់',
+    },
+    input: {
+        pleaseInput: 'សូមបំពេញ',
+    },
+    modal: {
+        title: 'ចំណងជើង',
+        content: 'មាតិកាពីរប់ពីវាលបរិបទ',
+        btnText: 'ផ្ដល់',
+    },
+    navBar: {
+        title: 'ចំណងជើង',
+    },
+    picker: {
+        defaultTitle: 'ជ្រើសរើស',
+        defaultCancel: 'បោះបង់',
+        defaultConfirm: 'យល់ព្រម',
+    },
+    asyncPicker: {
+        defaultTitle: 'ជ្រើសរើស',
+        defaultCancel: 'បោះបង់',
+        defaultConfirm: 'យល់ព្រម',
+        defaultNext: 'បន្ទាប់',
+        defaultPrev: 'មុន',
+        defaultSelected: 'បានជ្រើសរើស',
+    },
+    rate: {
+        error1: 'មិនអាចបន្ថែមតម្លៃទៅលើសរុបបានទេ!',
+        error2: 'តម្លៃលើសសរុបគឺត្រូវតែស្មើនឹង ១',
+        error3: 'មើល Error2!',
+        error4: 'មើល Error2!',
+        error5: 'ប្រវែងឬកម្រិតអតិបរិមាណ 20 ឬទាប់គ្នា អាចត្រូវបានខូចខាត ។ មាននៅក្នុងទូរស័ព្ទទំនេរ យ៉ាងតិចការស្វែងរកវាបានបញ្ចូល!',
+    },
+    timePicker: {
+        defaultTitle: 'ជ្រើសរើស',
+        defaultCancel: 'បោះបង់',
+        defaultConfirm: 'យល់ព្រម',
+        defaultYear: 'ឆ្នាំ',
+        defaultMonth: 'ខែ',
+        defaultDay: 'ថ្ងៃ',
+        defaultHour: 'ម៉ោង',
+        defaultMinute: 'នាទី',
+        defaultSecond: 'វិនាទីទីមួយ',
+    },
+    calendar: {
+        weekTextList: ['ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៖', 'សុក្រ', 'សៅរ៏', 'អាទិត្យ'],
+        weekSundayStartTextList: ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៖', 'សុក្រ', 'សៅរ៏'],
+        monthTextList: [
+            'មករា',
+            'កុម្ភៈ',
+            'មិនា',
+            'មេសា',
+            'ឧសភា',
+            'មិថុនា',
+            'កក្កដា',
+            'សីហាកុអ្វីស្រា',
+            'កញ្ញា',
+            'តុលា',
+            'វិច្ឆិកា',
+            'ធ្នូ',
+        ],
+        confirmText: 'យល់ព្រម',
+        selectedText: 'បានជ្រើសរើស',
+        dayText: 'ថ្ងៃ',
+        beforeText: 'មុន',
+        afterText: 'បន្ទាប់',
+        currentWeekText: 'សប្តាហ៍នេះ',
+        currentMonthText: 'ខែនេះ',
+        currentQuarterText: 'ត្រីមាសនេះ',
+    },
+};

+ 88 - 0
components/lang/kmr_IQ.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Agahî tune',
+        loading: 'Daxistin...',
+        noData: 'Agahî tune',
+        noMoreData: 'Agahî din tune',
+    },
+    actionSheet: {
+        cancelText: 'Betalke',
+    },
+    bottomSheet: {
+        title: 'Navnîş',
+    },
+    dialog: {
+        title: 'Birêvebirin',
+        content: 'Gotar ji her cihê.',
+        primaryText: 'Bighîje',
+        secondaryText: 'Betalke',
+    },
+    input: {
+        pleaseInput: 'Ji kerema xwe bixwîne',
+    },
+    modal: {
+        title: 'Nav',
+        content: 'Gotar ji her cihê.',
+        btnText: 'Bighîje',
+    },
+    navBar: {
+        title: 'Nav',
+    },
+    picker: {
+        defaultTitle: 'Hilbijêre',
+        defaultCancel: 'Betalke',
+        defaultConfirm: 'Bighîje',
+    },
+    asyncPicker: {
+        defaultTitle: 'Hilbijêre',
+        defaultCancel: 'Betalke',
+        defaultConfirm: 'Bighîje',
+        defaultNext: 'Paşve',
+        defaultPrev: 'Pêşve',
+        defaultSelected: 'Hilbijandin',
+    },
+    rate: {
+        error1: 'Em nikarin hîn bêtir star bidin!',
+        error2: 'Starên ji xwe re dbê ne wek yek tê hesibandin!',
+        error3: 'Di error2 de bifikirin!',
+        error4: 'Di error2 de bifikirin!',
+        error5: 'Di telefonê we de dê klavyeya we jorîn û nîqaşan jî bi rê ve bibe!',
+    },
+    timePicker: {
+        defaultTitle: 'Hilbijêre',
+        defaultCancel: 'Betalke',
+        defaultConfirm: 'Bighîje',
+        defaultYear: 'Sal',
+        defaultMonth: 'Meh',
+        defaultDay: 'Roj',
+        defaultHour: 'Seet',
+        defaultMinute: 'Daqîqey',
+        defaultSecond: 'Second',
+    },
+    calendar: {
+        weekTextList: ['Yekşem', 'Duşem', 'Sêşem', 'Çarşem', 'Pêncşem', 'În', 'Şemî'],
+        weekSundayStartTextList: ['Şemî', 'Yekşem', 'Duşem', 'Sêşem', 'Çarşem', 'Pêncşem', 'În'],
+        monthTextList: [
+            'Rêbendan',
+            'Gulan',
+            'Hezîran',
+            'Tîrmeh',
+            'Tebax',
+            'Tîrmeh',
+            'Tebax',
+            'Rezber',
+            'Kewçêr',
+            'Serewend',
+            'Mijdar',
+            'Kanûn',
+        ],
+        confirmText: 'Bighîje',
+        selectedText: 'Hilbijandin',
+        dayText: 'Roj',
+        beforeText: 'Pêve',
+        afterText: 'Pêş',
+        currentWeekText: 'Ji bo herî dawî ji bo asta',
+        currentMonthText: 'Ji bo herî dawî ji bo asta',
+        currentQuarterText: 'Ji bo herî dawî ji bo asta',
+    },
+};

+ 88 - 0
components/lang/kn_IN.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'ಸ್ಲಾಟ್ ಖಾಲಿಯಾಗಿದೆ!',
+        loading: 'ಲೋಡ್ ಆಗುತ್ತಿದೆ...',
+        noData: 'ಡೇಟಾ ಇಲ್ಲ',
+        noMoreData: 'ಹೆಚ್ಚು ಡೇಟಾ ಇಲ್ಲ',
+    },
+    actionSheet: {
+        cancelText: 'ರದ್ದುಮಾಡಿ',
+    },
+    bottomSheet: {
+        title: 'ಶೀರ್ಷಿಕೆ',
+    },
+    dialog: {
+        title: 'ಎಚ್ಚರಿಕೆ',
+        content: 'ವಿಷಯ',
+        primaryText: 'ಪ್ರಾಥಮಿಕ',
+        secondaryText: 'ರದ್ದುಪಡಿಸಿ',
+    },
+    input: {
+        pleaseInput: 'ದಯವಿಟ್ಟು ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ',
+    },
+    modal: {
+        title: 'ಶೀರ್ಷಿಕೆ',
+        content: 'ವಿಷಯ',
+        btnText: 'ಗ್ರಹಿಸಿ',
+    },
+    navBar: {
+        title: 'ಶೀರ್ಷಿಕೆ',
+    },
+    picker: {
+        defaultTitle: 'ಆಯ್ಕೆ ಮಾಡಿ',
+        defaultCancel: 'ರದ್ದುಮಾಡಿ',
+        defaultConfirm: 'ದೃಢೀಕರಿಸು',
+    },
+    asyncPicker: {
+        defaultTitle: 'ಆಯ್ಕೆ ಮಾಡಿ',
+        defaultCancel: 'ರದ್ದುಮಾಡಿ',
+        defaultConfirm: 'ದೃಢೀಕರಿಸು',
+        defaultNext: 'ಮುಂದಿನ',
+        defaultPrev: 'ಹಿಂದಿನ',
+        defaultSelected: 'ಆಯ್ಕೆಯಾಗಿದೆ',
+    },
+    rate: {
+        error1: 'ಮೊತ್ತವನ್ನು ಕಡಿಮೆಗೊಳಿಸಿ!',
+        error2: 'ಮೊತ್ತವನ್ನು 1 ನಿಂದ ವಿಭಜಿಸಬೇಕು!',
+        error3: 'ಅಥವಾ ಅನುಸ್ತಾಪಿಸಲಾಗದ ಸಂದರ್ಭದಲ್ಲಿ, ಮೊತ್ತವನ್ನು 1 ನಿಂದ ವಿಭಜಿಸಬೇಕು!',
+        error4: 'ಅಥವಾ ಒಂದು ಸ್ಥಾನವನ್ನು ನೀಡಬೇಕಾದ ಸಂದರ್ಭದಲ್ಲಿ, ಮೊತ್ತವನ್ನು 0.5 ರವರೆಗೆ ವಿಭಜಿಸಬೇಕು!',
+        error5: 'ಗಾತ್ರದ ಅಳತೆ 20 ಕ್ಕಿಂತ ಕಡಿಮೆಯಿರಬೇಕು, ಮೊಬೈಲ್ ಟೆರ್ಮಿನಲ್‌ನಲ್ಲಿ ಗುರುತಿಸುವುದು ಮತ್ತು ನೀರ್ಗಲ್ಲಿನ ಮೂಲಕ ಬೇಯಿಸುವುದು ಸಾಧ್ಯವಿಲ್ಲ!',
+    },
+    timePicker: {
+        defaultTitle: 'ಆಯ್ದಿಸಿ',
+        defaultCancel: 'ರದ್ದುಮಾಡಿ',
+        defaultConfirm: 'ದೃಢೀಕರಿಸು',
+        defaultYear: 'ವರ್ಷ',
+        defaultMonth: 'ತಿಂಗಳು',
+        defaultDay: 'ದಿನ',
+        defaultHour: 'ಘಂಟೆ',
+        defaultMinute: 'ನಿಮಿಷ',
+        defaultSecond: 'ಸೆಕೆಂಡ್',
+    },
+    calendar: {
+        weekTextList: ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'],
+        weekSundayStartTextList: ['ಶನಿ', 'ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ'],
+        monthTextList: [
+            'ಜನವರಿ',
+            'ಫೆಬ್ರವರಿ',
+            'ಮಾರ್ಚ್',
+            'ಏಪ್ರಿಲ್',
+            'ಮೇ',
+            'ಜೂನ್',
+            'ಜುಲೈ',
+            'ಆಗಸ್ಟ್',
+            'ಸೆಪ್ಟೆಂಬರ್',
+            'ಅಕ್ಟೋಬರ್',
+            'ನವೆಂಬರ್',
+            'ಡಿಸೆಂಬರ್',
+        ],
+        confirmText: 'ದೃಢೀಕರಿಸು',
+        selectedText: 'ಆಯ್ದಲ್ಲಿದೆ',
+        dayText: 'ದಿನ',
+        beforeText: 'ಕೊನೆಯದೊಂದು',
+        afterText: 'ಮುಂದೆ',
+        currentWeekText: 'ಈ ವಾರ',
+        currentMonthText: 'ಈ ತಿಂಗಳು',
+        currentQuarterText: 'ಈ ತ್ರೈಮಾಸಿಕ',
+    },
+};

+ 75 - 0
components/lang/ko_KR.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: '슬롯이 비어 있습니다!',
+        loading: '로딩 중...',
+        noData: '데이터가 없습니다',
+        noMoreData: '데이터가 더 이상 없습니다',
+    },
+    actionSheet: {
+        cancelText: '취소',
+    },
+    bottomSheet: {
+        title: '제목',
+    },
+    dialog: {
+        title: '경고',
+        content: '내용',
+        primaryText: '확인',
+        secondaryText: '취소',
+    },
+    input: {
+        pleaseInput: '비밀번호를 입력해주세요',
+    },
+    modal: {
+        title: '제목',
+        content: '내용',
+        btnText: '확인',
+    },
+    navBar: {
+        title: '제목',
+    },
+    picker: {
+        defaultTitle: '선택해주세요',
+        defaultCancel: '취소',
+        defaultConfirm: '확인',
+    },
+    asyncPicker: {
+        defaultTitle: '선택해주세요',
+        defaultCancel: '취소',
+        defaultConfirm: '확인',
+        defaultNext: '다음',
+        defaultPrev: '이전',
+        defaultSelected: '선택됨',
+    },
+    rate: {
+        error1: '합계를 감소시키십시오!',
+        error2: '합계를 1로 나누십시오!',
+        error3: '또는 합계를 1로 나눌 수 없는 경우',
+        error4: '또는 값이 0.5 미만인 경우!',
+        error5: '측정 값은 20보다 작아야합니다. 모바일 단말기에서 식별하거나 물을 통해 측정할 수 없습니다!',
+    },
+    timePicker: {
+        defaultTitle: '선택해주세요',
+        defaultCancel: '취소',
+        defaultConfirm: '확인',
+        defaultYear: '년',
+        defaultMonth: '월',
+        defaultDay: '일',
+        defaultHour: '시간',
+        defaultMinute: '분',
+        defaultSecond: '초',
+    },
+    calendar: {
+        weekTextList: ['일', '월', '화', '수', '목', '금', '토'],
+        weekSundayStartTextList: ['토', '일', '월', '화', '수', '목', '금'],
+        monthTextList: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
+        confirmText: '확인',
+        selectedText: '선택됨',
+        dayText: '일',
+        beforeText: '이전',
+        afterText: '이후',
+        currentWeekText: '이번 주',
+        currentMonthText: '이번 달',
+        currentQuarterText: '이번 분기',
+    },
+};

+ 88 - 0
components/lang/lt_LT.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Slotas tuščias!',
+        loading: 'Įkeliama...',
+        noData: 'Nėra duomenų',
+        noMoreData: 'Daugiau duomenų nėra',
+    },
+    actionSheet: {
+        cancelText: 'Atšaukti',
+    },
+    bottomSheet: {
+        title: 'Pavadinimas',
+    },
+    dialog: {
+        title: 'Įspėjimas',
+        content: 'Turinys',
+        primaryText: 'Patvirtinti',
+        secondaryText: 'Atšaukti',
+    },
+    input: {
+        pleaseInput: 'Įveskite slaptažodį',
+    },
+    modal: {
+        title: 'Pavadinimas',
+        content: 'Turinys',
+        btnText: 'Patvirtinti',
+    },
+    navBar: {
+        title: 'Pavadinimas',
+    },
+    picker: {
+        defaultTitle: 'Pasirinkite',
+        defaultCancel: 'Atšaukti',
+        defaultConfirm: 'Patvirtinti',
+    },
+    asyncPicker: {
+        defaultTitle: 'Pasirinkite',
+        defaultCancel: 'Atšaukti',
+        defaultConfirm: 'Patvirtinti',
+        defaultNext: 'Kitas',
+        defaultPrev: 'Ankstesnis',
+        defaultSelected: 'Pasirinkta',
+    },
+    rate: {
+        error1: 'Suma mažesnė už sumą!',
+        error2: 'Suma negali būti padalyta iš 1!',
+        error3: 'Arba suma negali būti padalyta iš 1',
+        error4: 'Arba vertė yra mažesnė nei 0,5!',
+        error5: 'Matavimo vertė turi būti mažesnė nei 20. Ją sunku nustatyti naudojant mobilųjį įrenginį arba per vandenį!',
+    },
+    timePicker: {
+        defaultTitle: 'Pasirinkite',
+        defaultCancel: 'Atšaukti',
+        defaultConfirm: 'Patvirtinti',
+        defaultYear: 'Metai',
+        defaultMonth: 'Mėnesis',
+        defaultDay: 'Diena',
+        defaultHour: 'Valanda',
+        defaultMinute: 'Minutė',
+        defaultSecond: 'Sekundė',
+    },
+    calendar: {
+        weekTextList: ['Se', 'Pr', 'An', 'Tr', 'Ke', 'Pe', 'Še'],
+        weekSundayStartTextList: ['Še', 'Pr', 'An', 'Tr', 'Ke', 'Pe', 'Se'],
+        monthTextList: [
+            'Sausio',
+            'Vasario',
+            'Kovo',
+            'Balandžio',
+            'Gegužės',
+            'Birželio',
+            'Liepos',
+            'Rugpjūčio',
+            'Rugsėjo',
+            'Spalio',
+            'Lapkričio',
+            'Gruodžio',
+        ],
+        confirmText: 'Patvirtinti',
+        selectedText: 'Pasirinkta',
+        dayText: 'Di',
+        beforeText: 'Ankstesnė',
+        afterText: 'Sekanti',
+        currentWeekText: 'Ši savaitė',
+        currentMonthText: 'Šis mėnuo',
+        currentQuarterText: 'Šis ketvirtis',
+    },
+};

+ 88 - 0
components/lang/lv_LV.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Slots ir tukšs!',
+        loading: 'Ielādē...',
+        noData: 'Nav datu',
+        noMoreData: 'Nav vairāk datu',
+    },
+    actionSheet: {
+        cancelText: 'Atcelt',
+    },
+    bottomSheet: {
+        title: 'Nosaukums',
+    },
+    dialog: {
+        title: 'Brīdinājums',
+        content: 'Saturs',
+        primaryText: 'Apstiprināt',
+        secondaryText: 'Atcelt',
+    },
+    input: {
+        pleaseInput: 'Lūdzu, ievadiet paroli',
+    },
+    modal: {
+        title: 'Nosaukums',
+        content: 'Saturs',
+        btnText: 'Apstiprināt',
+    },
+    navBar: {
+        title: 'Nosaukums',
+    },
+    picker: {
+        defaultTitle: 'Izvēlieties',
+        defaultCancel: 'Atcelt',
+        defaultConfirm: 'Apstiprināt',
+    },
+    asyncPicker: {
+        defaultTitle: 'Izvēlieties',
+        defaultCancel: 'Atcelt',
+        defaultConfirm: 'Apstiprināt',
+        defaultNext: 'Nākamais',
+        defaultPrev: 'Iepriekšējais',
+        defaultSelected: 'Izvēlēts',
+    },
+    rate: {
+        error1: 'Summa ir mazāka par summu!',
+        error2: 'Summu nevar dalīt ar 1!',
+        error3: 'Vai arī summu nevar dalīt ar 1',
+        error4: 'Vai vertība ir mazāka par 0,5!',
+        error5: 'Mērījuma vērtībai jābūt mazākai par 20. To ir grūti noteikt, izmantojot mobilos ierīces vai caur ūdeni!',
+    },
+    timePicker: {
+        defaultTitle: 'Izvēlieties',
+        defaultCancel: 'Atcelt',
+        defaultConfirm: 'Apstiprināt',
+        defaultYear: 'Gads',
+        defaultMonth: 'Mēnesis',
+        defaultDay: 'Diena',
+        defaultHour: 'Stunda',
+        defaultMinute: 'Minūte',
+        defaultSecond: 'Sekunde',
+    },
+    calendar: {
+        weekTextList: ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'],
+        weekSundayStartTextList: ['Se', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Sv'],
+        monthTextList: [
+            'Janvāris',
+            'Februāris',
+            'Marts',
+            'Aprīlis',
+            'Maijs',
+            'Jūnijs',
+            'Jūlijs',
+            'Augusts',
+            'Septembris',
+            'Oktobris',
+            'Novembris',
+            'Decembris',
+        ],
+        confirmText: 'Apstiprināt',
+        selectedText: 'Izvēlētais',
+        dayText: 'Di',
+        beforeText: 'Iepriekšējais',
+        afterText: 'Nākamais',
+        currentWeekText: 'Šonedēļ',
+        currentMonthText: 'Šomēnes',
+        currentQuarterText: 'Šajā ceturksnī',
+    },
+};

+ 88 - 0
components/lang/mk_MK.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Слотот е празен!',
+        loading: 'Вчитување...',
+        noData: 'Нема податоци',
+        noMoreData: 'Нема повеќе податоци',
+    },
+    actionSheet: {
+        cancelText: 'Откажи',
+    },
+    bottomSheet: {
+        title: 'Наслов',
+    },
+    dialog: {
+        title: 'Предупредување',
+        content: 'Содржина',
+        primaryText: 'Потврди',
+        secondaryText: 'Откажи',
+    },
+    input: {
+        pleaseInput: 'Внесете лозинка',
+    },
+    modal: {
+        title: 'Наслов',
+        content: 'Содржина',
+        btnText: 'Потврди',
+    },
+    navBar: {
+        title: 'Наслов',
+    },
+    picker: {
+        defaultTitle: 'Избери',
+        defaultCancel: 'Откажи',
+        defaultConfirm: 'Потврди',
+    },
+    asyncPicker: {
+        defaultTitle: 'Избери',
+        defaultCancel: 'Откажи',
+        defaultConfirm: 'Потврди',
+        defaultNext: 'Следно',
+        defaultPrev: 'Претходно',
+        defaultSelected: 'Избрано',
+    },
+    rate: {
+        error1: 'Сумата е помала од дозволената предност!',
+        error2: 'Сумата не може да биде делива со 1!',
+        error3: 'Во спротивно, сумата не може да биде делива со 1',
+        error4: 'Или вредноста е помала од 0,5!',
+        error5: 'Мерната вредност мора да биде помала од 20. Тоа е тешко да се одреди со мобилен уред или преку вода!',
+    },
+    timePicker: {
+        defaultTitle: 'Избери',
+        defaultCancel: 'Откажи',
+        defaultConfirm: 'Потврди',
+        defaultYear: 'Година',
+        defaultMonth: 'Месец',
+        defaultDay: 'Ден',
+        defaultHour: 'Час',
+        defaultMinute: 'Минута',
+        defaultSecond: 'Секунда',
+    },
+    calendar: {
+        weekTextList: ['Не', 'По', 'Вт', 'Ср', 'Че', 'Пе', 'Сабота'],
+        weekSundayStartTextList: ['Сабота', 'Не', 'По', 'Вт', 'Ср', 'Че', 'Пе'],
+        monthTextList: [
+            'Јануари',
+            'Февруари',
+            'Март',
+            'Април',
+            'Мај',
+            'Јуни',
+            'Јули',
+            'Август',
+            'Септември',
+            'Октомври',
+            'Ноември',
+            'Декември',
+        ],
+        confirmText: 'Потврди',
+        selectedText: 'Избрано',
+        dayText: 'Ден',
+        beforeText: 'Претходно',
+        afterText: 'Следно',
+        currentWeekText: 'Оваа недела',
+        currentMonthText: 'Овој месец',
+        currentQuarterText: 'Оваа тромесечје',
+    },
+};

+ 88 - 0
components/lang/ml_IN.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'സ്ലോട്ട് ശൂന്യമാണ്!',
+        loading: 'ലോഡുചെയ്യുന്നു...',
+        noData: 'ഡാറ്റായില്ല',
+        noMoreData: 'കൂടുതൽ ഡാറ്റാ ഇല്ല',
+    },
+    actionSheet: {
+        cancelText: 'റദ്ദാക്കുക',
+    },
+    bottomSheet: {
+        title: 'ശീർഷകം',
+    },
+    dialog: {
+        title: 'മുന്നറിയിപ്പ്',
+        content: 'ഉള്ളടക്കം',
+        primaryText: 'സ്ഥിരീകരിക്കുക',
+        secondaryText: 'റദ്ദാക്കുക',
+    },
+    input: {
+        pleaseInput: 'പാസ്സ്വേഡ് നൽകുക',
+    },
+    modal: {
+        title: 'ശീർഷകം',
+        content: 'ഉള്ളടക്കം',
+        btnText: 'സ്ഥിരീകരിക്കുക',
+    },
+    navBar: {
+        title: 'ശീർഷകം',
+    },
+    picker: {
+        defaultTitle: 'തിരഞ്ഞെടുക്കുക',
+        defaultCancel: 'റദ്ദാക്കുക',
+        defaultConfirm: 'സ്ഥിരീകരിക്കുക',
+    },
+    asyncPicker: {
+        defaultTitle: 'തിരഞ്ഞെടുക്കുക',
+        defaultCancel: 'റദ്ദാക്കുക',
+        defaultConfirm: 'സ്ഥിരീകരിക്കുക',
+        defaultNext: 'അടുത്തത്',
+        defaultPrev: 'മുന്നത്തെ',
+        defaultSelected: 'തിരഞ്ഞെടുത്തു',
+    },
+    rate: {
+        error1: 'മൊത്തം പ്രധാനതയും കുറഞ്ഞ പ്രധാനതയിൽ കൂടാതെ ആണ്!',
+        error2: 'മൂല്യം 1 നോക്കിയാൽ പൂർണ്ണമായി നിർണ്ണയിക്കാം എന്നില്ല!',
+        error3: 'പൂർണ്ണമായോ അല്ലാതെ മൂല്യം 1 നോക്കുക എന്നില്ല',
+        error4: 'അല്പം കൂടാതെ മൂല്യം 0.5 നോക്കുക!',
+        error5: 'കമ്പെർസർ ഇടയ്ക്കാൾ വിളിക്കുന്ന മൊത്തം 20 കൂടുതലാണ്. മൊബൈൽ ഉപകരണങ്ങളോടും ഉൾനാടൻ ഉപകരണങ്ങളോടും അതു പുലർത്തിയിട്ടുള്ളതായിരിക്കും!',
+    },
+    timePicker: {
+        defaultTitle: 'തിരഞ്ഞെടുക്കുക',
+        defaultCancel: 'റദ്ദാക്കുക',
+        defaultConfirm: 'സ്ഥിരീകരിക്കുക',
+        defaultYear: 'വർഷം',
+        defaultMonth: 'മാസം',
+        defaultDay: 'ദിവസം',
+        defaultHour: 'മണിക്കൂർ',
+        defaultMinute: 'മിനിറ്റ്',
+        defaultSecond: 'സെക്കൻഡ്',
+    },
+    calendar: {
+        weekTextList: ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+        weekSundayStartTextList: ['ശനി', 'ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി'],
+        monthTextList: [
+            'ജനുവരി',
+            'ഫെബ്രുവരി',
+            'മാർച്ച്',
+            'ഏപ്രിൽ',
+            'മേയ്',
+            'ജൂൺ',
+            'ജൂലൈ',
+            'ഓഗസ്റ്റ്',
+            'സെപ്റ്റംബർ',
+            'ഒക്ടോബർ',
+            'നവംബർ',
+            'ഡിസംബർ',
+        ],
+        confirmText: 'സ്ഥിരീകരിക്കുക',
+        selectedText: 'തിരഞ്ഞെടുത്തത്',
+        dayText: 'ദിവസം',
+        beforeText: 'മുമ്പത്തെ',
+        afterText: 'പിന്നിടുന്നു',
+        currentWeekText: 'ഈ ആഴ്ച',
+        currentMonthText: 'ഈ മാസം',
+        currentQuarterText: 'ഈ ക്വാർട്ടർ',
+    },
+};

+ 88 - 0
components/lang/mn_MN.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Слот хоосон байна!',
+        loading: 'Уншиж байна ...',
+        noData: 'Өгөгдөл байхгүй байна',
+        noMoreData: 'Дараагийн өгөгдөл байхгүй байна',
+    },
+    actionSheet: {
+        cancelText: 'Цуцлах',
+    },
+    bottomSheet: {
+        title: 'Гарчиг',
+    },
+    dialog: {
+        title: 'Санал хүсэлт',
+        content: 'Агуулга',
+        primaryText: 'Захиалах',
+        secondaryText: 'Цуцлах',
+    },
+    input: {
+        pleaseInput: 'Нууц үгээ оруулна уу',
+    },
+    modal: {
+        title: 'Гарчиг',
+        content: 'Агуулга',
+        btnText: 'Батлах',
+    },
+    navBar: {
+        title: 'Гарчиг',
+    },
+    picker: {
+        defaultTitle: 'Сонгох',
+        defaultCancel: 'Цуцлах',
+        defaultConfirm: 'Батлах',
+    },
+    asyncPicker: {
+        defaultTitle: 'Сонгох',
+        defaultCancel: 'Цуцлах',
+        defaultConfirm: 'Батлах',
+        defaultNext: 'Дараагийн',
+        defaultPrev: 'Өмнөх',
+        defaultSelected: 'Сонгосон',
+    },
+    rate: {
+        error1: 'Нийт түрээсийн тооны улмаас бага байх боломжгүй!',
+        error2: 'Үнэлгээ 1-ээс их аль болохгүй!',
+        error3: '1-ын үнэлгээр хангах эсвэл үнэлэхийн тулд үнэлгээгүй байх ёстой',
+        error4: 'Удаан тохиолдолд 0.5-с ихгүй үнэлгээтэй байх ёстой!',
+        error5: 'Компьютер ашиглахад үр дүнг 20-с ихгүй гаргаж болохгүй. Мобайл эсвэл тухайн оронд ашиглах үйлчилгээний үзүүлэлтүүд дээрээ багтын сайн сайхныг анхаарна уу!',
+    },
+    timePicker: {
+        defaultTitle: 'Сонгох',
+        defaultCancel: 'Цуцлах',
+        defaultConfirm: 'Батлах',
+        defaultYear: 'Жил',
+        defaultMonth: 'Сар',
+        defaultDay: 'Өдөр',
+        defaultHour: 'Цаг',
+        defaultMinute: 'Минут',
+        defaultSecond: 'Секунд',
+    },
+    calendar: {
+        weekTextList: ['Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба', 'Ням'],
+        weekSundayStartTextList: ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'],
+        monthTextList: [
+            'Хулгана',
+            'Үхэр',
+            'Бар',
+            'Туулай',
+            'Луу',
+            'Могой',
+            'Морь',
+            'Найман',
+            'Ес',
+            'Арваннэгүүд',
+            'Арванхоёр',
+            'Арвангахай',
+        ],
+        confirmText: 'Батлах',
+        selectedText: 'Сонгосон',
+        dayText: 'Өдөр',
+        beforeText: 'Өмнөх',
+        afterText: 'Дараах',
+        currentWeekText: 'Энэ долоо хоног',
+        currentMonthText: 'Энэ сар',
+        currentQuarterText: 'Энэ улирал',
+    },
+};

+ 88 - 0
components/lang/ms_MY.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Ruang kosong!',
+        loading: 'Membaca ...',
+        noData: 'Tiada data',
+        noMoreData: 'Tiada lagi data',
+    },
+    actionSheet: {
+        cancelText: 'Batal',
+    },
+    bottomSheet: {
+        title: 'Tajuk',
+    },
+    dialog: {
+        title: 'Permintaan',
+        content: 'Kandungan',
+        primaryText: 'Tempah',
+        secondaryText: 'Batal',
+    },
+    input: {
+        pleaseInput: 'Sila masukkan kata laluan',
+    },
+    modal: {
+        title: 'Tajuk',
+        content: 'Kandungan',
+        btnText: 'Tetapkan',
+    },
+    navBar: {
+        title: 'Tajuk',
+    },
+    picker: {
+        defaultTitle: 'Pilih',
+        defaultCancel: 'Batal',
+        defaultConfirm: 'Sahkan',
+    },
+    asyncPicker: {
+        defaultTitle: 'Pilih',
+        defaultCancel: 'Batal',
+        defaultConfirm: 'Sahkan',
+        defaultNext: 'Seterusnya',
+        defaultPrev: 'Sebelumnya',
+        defaultSelected: 'Dipilih',
+    },
+    rate: {
+        error1: 'Nilai Rating tidak boleh lebih rendah daripada jumlah kelajuan!',
+        error2: 'Komen tidak boleh diikat kepada satu bintang!',
+        error3: 'Komen atau rating perlu diisi',
+        error4: 'Rating perlu diberikan setidaknya setengah bintang!',
+        error5: 'Komputer tidak dapat melaksanakan rating noreview yang lebih besar dari 20, gunakan aplikasi pembantu pada telefon bimbit atau periksa kembali perkhidmatan yang anda gunakan!',
+    },
+    timePicker: {
+        defaultTitle: 'Pilih',
+        defaultCancel: 'Batal',
+        defaultConfirm: 'Sahkan',
+        defaultYear: 'Tahun',
+        defaultMonth: 'Bulan',
+        defaultDay: 'Hari',
+        defaultHour: 'Jam',
+        defaultMinute: 'Minit',
+        defaultSecond: 'Saat',
+    },
+    calendar: {
+        weekTextList: ['Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu', 'Ahad'],
+        weekSundayStartTextList: ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'],
+        monthTextList: [
+            'Januari',
+            'Februari',
+            'Mac',
+            'April',
+            'Mei',
+            'Jun',
+            'Julai',
+            'Ogos',
+            'September',
+            'Oktober',
+            'November',
+            'Disember',
+        ],
+        confirmText: 'Sahkan',
+        selectedText: 'Dipilih',
+        dayText: 'Hari',
+        beforeText: 'Sebelum',
+        afterText: 'Selepas',
+        currentWeekText: 'Minggu ini',
+        currentMonthText: 'Bulan ini',
+        currentQuarterText: 'Suku Tahun Ini',
+    },
+};

+ 88 - 0
components/lang/nb_NO.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Innholdet i sporet er tomt!',
+        loading: 'Laster...',
+        noData: 'Ingen data',
+        noMoreData: 'Ingen flere data',
+    },
+    actionSheet: {
+        cancelText: 'Avbryt',
+    },
+    bottomSheet: {
+        title: 'Tittel',
+    },
+    dialog: {
+        title: 'Hint',
+        content: 'Innhold',
+        primaryText: 'Bekreft',
+        secondaryText: 'Avbryt',
+    },
+    input: {
+        pleaseInput: 'Vennligst skriv inn',
+    },
+    modal: {
+        title: 'Tittel',
+        content: 'Innhold',
+        btnText: 'Jeg forstår',
+    },
+    navBar: {
+        title: 'Tittel',
+    },
+    picker: {
+        defaultTitle: 'Vennligst velg',
+        defaultCancel: 'Avbryt',
+        defaultConfirm: 'Bekreft',
+    },
+    asyncPicker: {
+        defaultTitle: 'Vennligst velg',
+        defaultCancel: 'Avbryt',
+        defaultConfirm: 'Bekreft',
+        defaultNext: 'Neste',
+        defaultPrev: 'Forrige',
+        defaultSelected: 'Valgt',
+    },
+    rate: {
+        error1: 'Verdien kan ikke være større enn totalen!',
+        error2: 'Totalen må være redusert med 1!',
+        error3: 'Verdien må reduseres med 1 når ikke-halvselektiv!',
+        error4: 'Verdien må reduseres med 0,5 når halvselektiv!',
+        error5: 'Bredde eller høyde er mindre enn 20, noe som gjør mobilterminalen vanskelig å klikke!',
+    },
+    timePicker: {
+        defaultTitle: 'Vennligst velg',
+        defaultCancel: 'Avbryt',
+        defaultConfirm: 'Bekreft',
+        defaultYear: 'År',
+        defaultMonth: 'Måned',
+        defaultDay: 'Dag',
+        defaultHour: 'Time',
+        defaultMinute: 'Minutt',
+        defaultSecond: 'Sekund',
+    },
+    calendar: {
+        weekTextList: ['Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Søn'],
+        weekSundayStartTextList: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'],
+        monthTextList: [
+            'januar',
+            'februar',
+            'mars',
+            'april',
+            'mai',
+            'juni',
+            'juli',
+            'august',
+            'september',
+            'oktober',
+            'november',
+            'desember',
+        ],
+        confirmText: 'Bekreft',
+        selectedText: 'Valgt',
+        dayText: 'dag',
+        beforeText: 'Siste',
+        afterText: 'Fremtidig',
+        currentWeekText: 'Denne uken',
+        currentMonthText: 'Denne måneden',
+        currentQuarterText: 'Dette kvartalet',
+    },
+};

+ 88 - 0
components/lang/ne_NP.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'स्लटको सामग्री खाली छ!',
+        loading: 'लोड हुदैछ...',
+        noData: 'कुनै डाटा छैन',
+        noMoreData: 'अझै डेटा छैन',
+    },
+    actionSheet: {
+        cancelText: 'रद्द गर्नुहोस्',
+    },
+    bottomSheet: {
+        title: 'शीर्षक',
+    },
+    dialog: {
+        title: 'संकेत',
+        content: 'सामग्री',
+        primaryText: 'पुष्टि गर्नुहोस्',
+        secondaryText: 'रद्द गर्नुहोस्',
+    },
+    input: {
+        pleaseInput: 'कृपया टाइप गर्नुहोस्',
+    },
+    modal: {
+        title: 'शीर्षक',
+        content: 'सामग्री',
+        btnText: 'मैं समझता हूँ',
+    },
+    navBar: {
+        title: 'शीर्षक',
+    },
+    picker: {
+        defaultTitle: 'कृपया छान्नुहोस्',
+        defaultCancel: 'रद्द गर्नुहोस्',
+        defaultConfirm: 'पुष्टि गर्नुहोस्',
+    },
+    asyncPicker: {
+        defaultTitle: 'कृपया छान्नुहोस्',
+        defaultCancel: 'रद्द गर्नुहोस्',
+        defaultConfirm: 'पुष्टि गर्नुहोस्',
+        defaultNext: 'त्यसपछि',
+        defaultPrev: 'पहिलो',
+        defaultSelected: 'Selected',
+    },
+    rate: {
+        error1: 'मात्रा पूर्णबाट ठुलो हुँदैन!',
+        error2: 'संपूर्ण एकबट कम हुनुपर्छ!',
+        error3: 'गैर-अर्ध चयन गरिएकोमा मान एकबाट कम हुनुपर्छ!',
+        error4: 'अर्ध चयन गरिएकोमा मान अर्धबाट कम हुनुपर्छ!',
+        error5: 'चौड़ाई वा उचाई 20 भन्दा कम छ जस्ले मोबाइल टर्मिनलमा क्लिक गर्न दुखद।',
+    },
+    timePicker: {
+        defaultTitle: 'कृपया छान्नुहोस्',
+        defaultCancel: 'रद्द गर्नुहोस्',
+        defaultConfirm: 'पुष्टि गर्नुहोस्',
+        defaultYear: 'वर्ष',
+        defaultMonth: 'महिना',
+        defaultDay: 'दिन',
+        defaultHour: 'घण्टा',
+        defaultMinute: 'मिनेट',
+        defaultSecond: 'सेकेन्ड',
+    },
+    calendar: {
+        weekTextList: ['सोम', 'मंगल', 'बुध', 'बिही', 'शुक्र', 'शनि', 'आइत'],
+        weekSundayStartTextList: ['आइत', 'सोम', 'मंगल', 'बुध', 'बिही', 'शुक्र', 'शनि'],
+        monthTextList: [
+            'जनवरी',
+            'फरवरी',
+            'मार्च',
+            'अप्रिल',
+            'मे',
+            'जून',
+            'जुलाई',
+            'अगस्त',
+            'सेप्टेम्बर',
+            'अक्टोबर',
+            'नोभेम्बर',
+            'डिसेम्बर',
+        ],
+        confirmText: 'पुष्टि गर्नुहोस्',
+        selectedText: 'चयन गरिएको',
+        dayText: 'दिन',
+        beforeText: 'हालको',
+        afterText: 'भविष्य',
+        currentWeekText: 'यो हप्ता',
+        currentMonthText: 'यो महिना',
+        currentQuarterText: 'यो तिमीहरूको तिमी',
+    },
+};

+ 88 - 0
components/lang/nl_BE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Deze sleuf is leeg!',
+        loading: 'Bezig met laden...',
+        noData: 'Geen gegevens',
+        noMoreData: 'Geen extra gegevens',
+    },
+    actionSheet: {
+        cancelText: 'Annuleren',
+    },
+    bottomSheet: {
+        title: 'Titel',
+    },
+    dialog: {
+        title: 'Titel',
+        content: 'Inhoud',
+        primaryText: 'Bevestigen',
+        secondaryText: 'Annuleren',
+    },
+    input: {
+        pleaseInput: 'Voer in',
+    },
+    modal: {
+        title: 'Titel',
+        content: 'Inhoud',
+        btnText: 'Begrepen',
+    },
+    navBar: {
+        title: 'Titel',
+    },
+    picker: {
+        defaultTitle: 'Selecteer alstublieft',
+        defaultCancel: 'Annuleren',
+        defaultConfirm: 'Bevestigen',
+    },
+    asyncPicker: {
+        defaultTitle: 'Selecteer alstublieft',
+        defaultCancel: 'Annuleren',
+        defaultConfirm: 'Bevestigen',
+        defaultNext: 'Volgende',
+        defaultPrev: 'Vorige',
+        defaultSelected: 'Geselecteerd',
+    },
+    rate: {
+        error1: 'Waardering moet minimaal compleet zijn!',
+        error2: 'Waardering mag niet minder dan één zijn!',
+        error3: 'Een gedeeltelijke selectie moet meer dan 1 waarde hebben!',
+        error4: 'Een gedeeltelijke selectie moet minder dan 1 waarde hebben!',
+        error5: 'Breedte of hoogte kleiner dan 20, niet toegestaan om op mobiel te klikken.',
+    },
+    timePicker: {
+        defaultTitle: 'Selecteer alstublieft',
+        defaultCancel: 'Annuleren',
+        defaultConfirm: 'Bevestigen',
+        defaultYear: 'Jaar',
+        defaultMonth: 'Maand',
+        defaultDay: 'Dag',
+        defaultHour: 'Uur',
+        defaultMinute: 'Minuut',
+        defaultSecond: 'Seconde',
+    },
+    calendar: {
+        weekTextList: ['Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za', 'Zo'],
+        weekSundayStartTextList: ['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'],
+        monthTextList: [
+            'Januari',
+            'Februari',
+            'Maart',
+            'April',
+            'Mei',
+            'Juni',
+            'Juli',
+            'Augustus',
+            'September',
+            'Oktober',
+            'November',
+            'December',
+        ],
+        confirmText: 'Bevestigen',
+        selectedText: 'Geselecteerd',
+        dayText: 'Dag',
+        beforeText: 'Vóór',
+        afterText: 'Na',
+        currentWeekText: 'Deze week',
+        currentMonthText: 'Deze maand',
+        currentQuarterText: 'Dit kwartaal',
+    },
+};

+ 88 - 0
components/lang/nl_NL.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Deze slot is leeg!',
+        loading: 'Laden...',
+        noData: 'Geen data',
+        noMoreData: 'Geen extra data',
+    },
+    actionSheet: {
+        cancelText: 'Annuleren',
+    },
+    bottomSheet: {
+        title: 'Titel',
+    },
+    dialog: {
+        title: 'Titel',
+        content: 'Inhoud',
+        primaryText: 'Bevestigen',
+        secondaryText: 'Annuleren',
+    },
+    input: {
+        pleaseInput: 'Voer in',
+    },
+    modal: {
+        title: 'Titel',
+        content: 'Inhoud',
+        btnText: 'Oké',
+    },
+    navBar: {
+        title: 'Titel',
+    },
+    picker: {
+        defaultTitle: 'Selecteer alstublieft',
+        defaultCancel: 'Annuleren',
+        defaultConfirm: 'Bevestigen',
+    },
+    asyncPicker: {
+        defaultTitle: 'Selecteer alstublieft',
+        defaultCancel: 'Annuleren',
+        defaultConfirm: 'Bevestigen',
+        defaultNext: 'Volgende',
+        defaultPrev: 'Vorige',
+        defaultSelected: 'Geselecteerd',
+    },
+    rate: {
+        error1: 'Waardering mag niet leeg zijn!',
+        error2: 'Waardering moet meer dan 1 zijn!',
+        error3: 'Een gedeeltelijke selectie moet meer dan 1 waarde hebben!',
+        error4: 'Een gedeeltelijke selectie moet minder dan 1 waarde hebben!',
+        error5: 'Breedte of hoogte kleiner dan 20, niet toegestaan om op mobiel te klikken.',
+    },
+    timePicker: {
+        defaultTitle: 'Selecteer alstublieft',
+        defaultCancel: 'Annuleren',
+        defaultConfirm: 'Bevestigen',
+        defaultYear: 'Jaar',
+        defaultMonth: 'Maand',
+        defaultDay: 'Dag',
+        defaultHour: 'Uur',
+        defaultMinute: 'Minuut',
+        defaultSecond: 'Seconde',
+    },
+    calendar: {
+        weekTextList: ['Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za', 'Zo'],
+        weekSundayStartTextList: ['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'],
+        monthTextList: [
+            'Januari',
+            'Februari',
+            'Maart',
+            'April',
+            'Mei',
+            'Juni',
+            'Juli',
+            'Augustus',
+            'September',
+            'Oktober',
+            'November',
+            'December',
+        ],
+        confirmText: 'Bevestigen',
+        selectedText: 'Geselecteerd',
+        dayText: 'Dag',
+        beforeText: 'Vóór',
+        afterText: 'Na',
+        currentWeekText: 'Deze week',
+        currentMonthText: 'Deze maand',
+        currentQuarterText: 'Dit kwartaal',
+    },
+};

+ 88 - 0
components/lang/pl_PL.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'To miejsce jest puste!',
+        loading: 'Wczytywanie...',
+        noData: 'Brak danych',
+        noMoreData: 'Brak dalszych danych',
+    },
+    actionSheet: {
+        cancelText: 'Anuluj',
+    },
+    bottomSheet: {
+        title: 'Tytuł',
+    },
+    dialog: {
+        title: 'Tytuł',
+        content: 'Treść',
+        primaryText: 'Potwierdź',
+        secondaryText: 'Anuluj',
+    },
+    input: {
+        pleaseInput: 'Wprowadź',
+    },
+    modal: {
+        title: 'Tytuł',
+        content: 'Treść',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Tytuł',
+    },
+    picker: {
+        defaultTitle: 'Proszę wybrać',
+        defaultCancel: 'Anuluj',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Proszę wybrać',
+        defaultCancel: 'Anuluj',
+        defaultConfirm: 'OK',
+        defaultNext: 'Następny',
+        defaultPrev: 'Poprzedni',
+        defaultSelected: 'Wybrano',
+    },
+    rate: {
+        error1: 'Ocena nie może być pusta!',
+        error2: 'Ocena musi być większa niż 1!',
+        error3: 'Częściowa ocena musi zawierać co najmniej 1 wartość!',
+        error4: 'Częściowa ocena nie może zawierać więcej niż 1 wartość!',
+        error5: 'Szerokość lub wysokość mniejsza niż 20, nie można kliknąć na urządzeniach mobilnych.',
+    },
+    timePicker: {
+        defaultTitle: 'Proszę wybrać',
+        defaultCancel: 'Anuluj',
+        defaultConfirm: 'OK',
+        defaultYear: 'Rok',
+        defaultMonth: 'Miesiąc',
+        defaultDay: 'Dzień',
+        defaultHour: 'Godzina',
+        defaultMinute: 'Minuta',
+        defaultSecond: 'Sekunda',
+    },
+    calendar: {
+        weekTextList: ['Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob', 'Niedz'],
+        weekSundayStartTextList: ['Niedz', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob'],
+        monthTextList: [
+            'Styczeń',
+            'Luty',
+            'Marzec',
+            'Kwiecień',
+            'Maj',
+            'Czerwiec',
+            'Lipiec',
+            'Sierpień',
+            'Wrzesień',
+            'Październik',
+            'Listopad',
+            'Grudzień',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Wybrano',
+        dayText: 'Dzień',
+        beforeText: 'Przed',
+        afterText: 'Po',
+        currentWeekText: 'Bieżący tydzień',
+        currentMonthText: 'Bieżący miesiąc',
+        currentQuarterText: 'Bieżący kwartał',
+    },
+};

+ 88 - 0
components/lang/pt_BR.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Este espaço está vazio!',
+        loading: 'Carregando...',
+        noData: 'Sem dados',
+        noMoreData: 'Não há mais dados',
+    },
+    actionSheet: {
+        cancelText: 'Cancelar',
+    },
+    bottomSheet: {
+        title: 'Título',
+    },
+    dialog: {
+        title: 'Título',
+        content: 'Conteúdo',
+        primaryText: 'Confirmar',
+        secondaryText: 'Cancelar',
+    },
+    input: {
+        pleaseInput: 'Por favor, insira',
+    },
+    modal: {
+        title: 'Título',
+        content: 'Conteúdo',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Título',
+    },
+    picker: {
+        defaultTitle: 'Por favor selecione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+    },
+    asyncPicker: {
+        defaultTitle: 'Por favor selecione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+        defaultNext: 'Próximo',
+        defaultPrev: 'Anterior',
+        defaultSelected: 'Selecionado',
+    },
+    rate: {
+        error1: 'A avaliação não pode estar vazia!',
+        error2: 'A avaliação precisa ser maior que 1!',
+        error3: 'Uma avaliação parcial deve ter pelo menos 1 valor!',
+        error4: 'Uma avaliação parcial não pode ter mais de 1 valor!',
+        error5: 'Largura ou altura inferior a 20, não permitido clicar em dispositivos móveis.',
+    },
+    timePicker: {
+        defaultTitle: 'Por favor selecione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+        defaultYear: 'Ano',
+        defaultMonth: 'Mês',
+        defaultDay: 'Dia',
+        defaultHour: 'Hora',
+        defaultMinute: 'Minuto',
+        defaultSecond: 'Segundo',
+    },
+    calendar: {
+        weekTextList: ['Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb', 'Dom'],
+        weekSundayStartTextList: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
+        monthTextList: [
+            'Janeiro',
+            'Fevereiro',
+            'Março',
+            'Abril',
+            'Maio',
+            'Junho',
+            'Julho',
+            'Agosto',
+            'Setembro',
+            'Outubro',
+            'Novembro',
+            'Dezembro',
+        ],
+        confirmText: 'Confirmar',
+        selectedText: 'Selecionado',
+        dayText: 'Dia',
+        beforeText: 'Antes',
+        afterText: 'Depois',
+        currentWeekText: 'Esta semana',
+        currentMonthText: 'Este mês',
+        currentQuarterText: 'Este trimestre',
+    },
+};

+ 88 - 0
components/lang/pt_PT.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Este espaço está vazio!',
+        loading: 'A carregar...',
+        noData: 'Sem dados',
+        noMoreData: 'Não há mais dados',
+    },
+    actionSheet: {
+        cancelText: 'Cancelar',
+    },
+    bottomSheet: {
+        title: 'Título',
+    },
+    dialog: {
+        title: 'Título',
+        content: 'Conteúdo',
+        primaryText: 'Confirmar',
+        secondaryText: 'Cancelar',
+    },
+    input: {
+        pleaseInput: 'Por favor, insira',
+    },
+    modal: {
+        title: 'Título',
+        content: 'Conteúdo',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Título',
+    },
+    picker: {
+        defaultTitle: 'Por favor selecione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+    },
+    asyncPicker: {
+        defaultTitle: 'Por favor selecione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+        defaultNext: 'Próximo',
+        defaultPrev: 'Anterior',
+        defaultSelected: 'Selecionado',
+    },
+    rate: {
+        error1: 'A avaliação não pode estar vazia!',
+        error2: 'A avaliação precisa ser maior que 1!',
+        error3: 'Uma avaliação parcial deve ter pelo menos 1 valor!',
+        error4: 'Uma avaliação parcial não pode ter mais de 1 valor!',
+        error5: 'Largura ou altura inferior a 20, não permitido clicar em dispositivos móveis.',
+    },
+    timePicker: {
+        defaultTitle: 'Por favor selecione',
+        defaultCancel: 'Cancelar',
+        defaultConfirm: 'Confirmar',
+        defaultYear: 'Ano',
+        defaultMonth: 'Mês',
+        defaultDay: 'Dia',
+        defaultHour: 'Hora',
+        defaultMinute: 'Minuto',
+        defaultSecond: 'Segundo',
+    },
+    calendar: {
+        weekTextList: ['Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb', 'Dom'],
+        weekSundayStartTextList: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
+        monthTextList: [
+            'Janeiro',
+            'Fevereiro',
+            'Março',
+            'Abril',
+            'Maio',
+            'Junho',
+            'Julho',
+            'Agosto',
+            'Setembro',
+            'Outubro',
+            'Novembro',
+            'Dezembro',
+        ],
+        confirmText: 'Confirmar',
+        selectedText: 'Selecionado',
+        dayText: 'Dia',
+        beforeText: 'Antes',
+        afterText: 'Depois',
+        currentWeekText: 'Esta semana',
+        currentMonthText: 'Este mês',
+        currentQuarterText: 'Este trimestre',
+    },
+};

+ 88 - 0
components/lang/ro_RO.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Acest spațiu este gol!',
+        loading: 'Se încarcă...',
+        noData: 'Fără date',
+        noMoreData: 'Nu mai există date',
+    },
+    actionSheet: {
+        cancelText: 'Anulează',
+    },
+    bottomSheet: {
+        title: 'Titlu',
+    },
+    dialog: {
+        title: 'Titlu',
+        content: 'Conținut',
+        primaryText: 'Confirmă',
+        secondaryText: 'Anulează',
+    },
+    input: {
+        pleaseInput: 'Introduceți',
+    },
+    modal: {
+        title: 'Titlu',
+        content: 'Conținut',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titlu',
+    },
+    picker: {
+        defaultTitle: 'Selectați vă rog',
+        defaultCancel: 'Anulează',
+        defaultConfirm: 'Confirmă',
+    },
+    asyncPicker: {
+        defaultTitle: 'Selectați vă rog',
+        defaultCancel: 'Anulează',
+        defaultConfirm: 'Confirmă',
+        defaultNext: 'Următorul',
+        defaultPrev: 'Anteriorul',
+        defaultSelected: 'Selectat',
+    },
+    rate: {
+        error1: 'Evaluarea nu poate fi goală!',
+        error2: 'Evaluarea trebuie să fie mai mare de 1!',
+        error3: 'O evaluare parțială trebuie să aibă cel puțin 1 valoare!',
+        error4: 'O evaluare parțială nu poate avea mai mult de 1 valoare!',
+        error5: 'Lățimea sau înălțimea este mai mică de 20, fără clic disponibil pe dispozitivele mobile.',
+    },
+    timePicker: {
+        defaultTitle: 'Selectați vă rog',
+        defaultCancel: 'Anulează',
+        defaultConfirm: 'Confirmă',
+        defaultYear: 'An',
+        defaultMonth: 'Lună',
+        defaultDay: 'Zi',
+        defaultHour: 'Oră',
+        defaultMinute: 'Minut',
+        defaultSecond: 'Secundă',
+    },
+    calendar: {
+        weekTextList: ['Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm', 'Dum'],
+        weekSundayStartTextList: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
+        monthTextList: [
+            'Ianuarie',
+            'Februarie',
+            'Martie',
+            'Aprilie',
+            'Mai',
+            'Iunie',
+            'Iulie',
+            'August',
+            'Septembrie',
+            'Octombrie',
+            'Noiembrie',
+            'Decembrie',
+        ],
+        confirmText: 'Confirmă',
+        selectedText: 'Selectat',
+        dayText: 'Zi',
+        beforeText: 'Anterior',
+        afterText: 'Următor',
+        currentWeekText: 'Săptămâna aceasta',
+        currentMonthText: 'Luna aceasta',
+        currentQuarterText: 'Acest trimestru',
+    },
+};

+ 75 - 0
components/lang/ru_RU.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'Это место пустое!',
+        loading: 'Загрузка...',
+        noData: 'Нет данных',
+        noMoreData: 'Больше нет данных',
+    },
+    actionSheet: {
+        cancelText: 'Отмена',
+    },
+    bottomSheet: {
+        title: 'Заголовок',
+    },
+    dialog: {
+        title: 'Заголовок',
+        content: 'Содержание',
+        primaryText: 'Подтвердить',
+        secondaryText: 'Отмена',
+    },
+    input: {
+        pleaseInput: 'Пожалуйста, введите',
+    },
+    modal: {
+        title: 'Заголовок',
+        content: 'Содержание',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Заголовок',
+    },
+    picker: {
+        defaultTitle: 'Пожалуйста, выберите',
+        defaultCancel: 'Отмена',
+        defaultConfirm: 'Подтвердить',
+    },
+    asyncPicker: {
+        defaultTitle: 'Пожалуйста, выберите',
+        defaultCancel: 'Отмена',
+        defaultConfirm: 'Подтвердить',
+        defaultNext: 'Следующий',
+        defaultPrev: 'Предыдущий',
+        defaultSelected: 'Выбрано',
+    },
+    rate: {
+        error1: 'Рейтинг не может быть пустым!',
+        error2: 'Рейтинг должен быть больше 1!',
+        error3: 'Для частичной оценки нужно хотя бы 1 значение!',
+        error4: 'Для частичной оценки не может быть более 1 значения!',
+        error5: 'Ширина или высота меньше 20, на мобильных устройствах нельзя нажать.',
+    },
+    timePicker: {
+        defaultTitle: 'Пожалуйста, выберите',
+        defaultCancel: 'Отмена',
+        defaultConfirm: 'Подтвердить',
+        defaultYear: 'Год',
+        defaultMonth: 'Месяц',
+        defaultDay: 'День',
+        defaultHour: 'Час',
+        defaultMinute: 'Минута',
+        defaultSecond: 'Секунда',
+    },
+    calendar: {
+        weekTextList: ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'],
+        weekSundayStartTextList: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
+        monthTextList: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
+        confirmText: 'Подтвердить',
+        selectedText: 'Выбрано',
+        dayText: 'День',
+        beforeText: 'До',
+        afterText: 'После',
+        currentWeekText: 'Текущая неделя',
+        currentMonthText: 'Текущий месяц',
+        currentQuarterText: 'Текущий квартал',
+    },
+};

+ 88 - 0
components/lang/si_LK.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'මේ ස්මන්තිය හිස් විය!',
+        loading: 'පූරණය වෙමින්...',
+        noData: 'දත්ත නැත',
+        noMoreData: 'තවත් දත්ත නැත',
+    },
+    actionSheet: {
+        cancelText: 'එපා',
+    },
+    bottomSheet: {
+        title: 'මාතෘකාව',
+    },
+    dialog: {
+        title: 'මාතෘකාව',
+        content: 'අන්‍යකාරය',
+        primaryText: 'තහවුරු කරන්න',
+        secondaryText: 'ඉවත් කරන්න',
+    },
+    input: {
+        pleaseInput: 'කරුණාකර ඇතුලත් කරන්න',
+    },
+    modal: {
+        title: 'මාතෘකාව',
+        content: 'අන්‍යකාරය',
+        btnText: 'හරි',
+    },
+    navBar: {
+        title: 'මාතෘකාව',
+    },
+    picker: {
+        defaultTitle: 'කරුණාකර තෝරන්න',
+        defaultCancel: 'අවලංගු කරන්න',
+        defaultConfirm: 'තහවුරු කරන්න',
+    },
+    asyncPicker: {
+        defaultTitle: 'කරුණාකර තෝරන්න',
+        defaultCancel: 'අවලංගු කරන්න',
+        defaultConfirm: 'තහවුරු කරන්න',
+        defaultNext: 'ඊළඟ',
+        defaultPrev: 'පෙර',
+        defaultSelected: 'තෝරා ඇත',
+    },
+    rate: {
+        error1: 'ශීර්ෂය හිස්ව නොවේ!',
+        error2: 'ශීර්ෂය 1 වනිදා වඩාත්ම වැඩි විය යුතුය!',
+        error3: 'පැරණි ශීර්ෂය සඳහා හොඳ අගය 1 ක් වැඩි විය යුතුය!',
+        error4: 'පැරණි ශීර්ෂය සඳහා වැඩි 1 ක් වන විට 1 අගයක්දි විය යුතුය!',
+        error5: 'පළල හෝ උස සීමාව 20 ට වඩා අඩු බව, ජංගම දුරකථන ඇතුළත් සහිතව ඇතිවිය හැකිය.',
+    },
+    timePicker: {
+        defaultTitle: 'කරුණාකර තෝරන්න',
+        defaultCancel: 'අවලංගු කරන්න',
+        defaultConfirm: 'තහවුරු කරන්න',
+        defaultYear: 'වර්ෂය',
+        defaultMonth: 'මාසය',
+        defaultDay: 'දිනය',
+        defaultHour: 'පැය',
+        defaultMinute: 'මිනිත්තුව',
+        defaultSecond: 'තත්පර',
+    },
+    calendar: {
+        weekTextList: ['අඟ', 'අක්ති', 'බදාදා', 'බදාරහත්', 'පෙරවරු', 'සිකුරාදා', 'ඉරිදා'],
+        weekSundayStartTextList: ['ඉරිදා', 'අඟ', 'අක්ති', 'බදාදා', 'බදාරහත්', 'පෙරවරු', 'සිකුරාදා'],
+        monthTextList: [
+            'ජනවාරි',
+            'පෙබරවාරිය',
+            'මාර්තු',
+            'අප්‍රේල්',
+            'මැයි',
+            'ජූනි',
+            'ජූලි',
+            'අගෝස්තු',
+            'සැප්තැම්බර්',
+            'ඔක්තෝබර්',
+            'නොවැම්බර්',
+            'දෙසැම්බර්',
+        ],
+        confirmText: 'තහවුරු කරන්න',
+        selectedText: 'තෝරා ඇත',
+        dayText: 'දිනය',
+        beforeText: 'පෙර',
+        afterText: 'පසුව',
+        currentWeekText: 'මෙම සතිය',
+        currentMonthText: 'මෙම මාසය',
+        currentQuarterText: 'මෙම කාර්තුව',
+    },
+};

+ 88 - 0
components/lang/sk_SK.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Toto miesto je prázdne!',
+        loading: 'Načítavam...',
+        noData: 'Žiadne dáta',
+        noMoreData: 'Žiadne ďalšie dáta',
+    },
+    actionSheet: {
+        cancelText: 'Zrušiť',
+    },
+    bottomSheet: {
+        title: 'Titulok',
+    },
+    dialog: {
+        title: 'Titulok',
+        content: 'Obsah',
+        primaryText: 'Confirm',
+        secondaryText: 'Cancel',
+    },
+    input: {
+        pleaseInput: 'Prosím zadajte',
+    },
+    modal: {
+        title: 'Titulok',
+        content: 'Obsah',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titulok',
+    },
+    picker: {
+        defaultTitle: 'Prosím vyberte',
+        defaultCancel: 'Zrušiť',
+        defaultConfirm: 'Potvrdiť',
+    },
+    asyncPicker: {
+        defaultTitle: 'Prosím vyberte',
+        defaultCancel: 'Zrušiť',
+        defaultConfirm: 'Potvrdiť',
+        defaultNext: 'Ďalšie',
+        defaultPrev: 'Predchádzajúce',
+        defaultSelected: 'Vybrané',
+    },
+    rate: {
+        error1: 'Hodnotenie sa nepodarilo!',
+        error2: 'Hodnotenie musí byť aspoň 1 hviezdička!',
+        error3: 'Dobré hodnotenie musí byť minimálne 1 hviezdička!',
+        error4: 'Priemerné hodnotenie musí byť aspoň 1 hviezdička!',
+        error5: 'Dĺžka komentáru musí byť kratšia ako 20 znakov.',
+    },
+    timePicker: {
+        defaultTitle: 'Vyberte čas',
+        defaultCancel: 'Zrušiť',
+        defaultConfirm: 'Potvrdiť',
+        defaultYear: 'Rok',
+        defaultMonth: 'Mesiac',
+        defaultDay: 'Deň',
+        defaultHour: 'Hodina',
+        defaultMinute: 'Minúta',
+        defaultSecond: 'Sekunda',
+    },
+    calendar: {
+        weekTextList: ['Po', 'Ut', 'St', 'Št', 'Pi', 'So', 'Ne'],
+        weekSundayStartTextList: ['Ne', 'Po', 'Ut', 'St', 'Št', 'Pi', 'So'],
+        monthTextList: [
+            'Január',
+            'Február',
+            'Marec',
+            'Apríl',
+            'Máj',
+            'Jún',
+            'Júl',
+            'August',
+            'September',
+            'Október',
+            'November',
+            'December',
+        ],
+        confirmText: 'Potvrdiť',
+        selectedText: 'Vybrané',
+        dayText: 'Deň',
+        beforeText: 'Pred',
+        afterText: 'Po',
+        currentWeekText: 'Tento týždeň',
+        currentMonthText: 'Tento mesiac',
+        currentQuarterText: 'Tento štvrťrok',
+    },
+};

+ 88 - 0
components/lang/sl_SI.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'To mesto je prazno!',
+        loading: 'Nalaganje ...',
+        noData: 'Ni podatkov',
+        noMoreData: 'Ni več podatkov',
+    },
+    actionSheet: {
+        cancelText: 'Prekliči',
+    },
+    bottomSheet: {
+        title: 'Naslov',
+    },
+    dialog: {
+        title: 'Naslov',
+        content: 'Vsebina',
+        primaryText: 'Potrdi',
+        secondaryText: 'Prekliči',
+    },
+    input: {
+        pleaseInput: 'Prosim vnesite',
+    },
+    modal: {
+        title: 'Naslov',
+        content: 'Vsebina',
+        btnText: 'V redu',
+    },
+    navBar: {
+        title: 'Naslov',
+    },
+    picker: {
+        defaultTitle: 'Prosim izberite',
+        defaultCancel: 'Prekliči',
+        defaultConfirm: 'Potrdi',
+    },
+    asyncPicker: {
+        defaultTitle: 'Prosim izberite',
+        defaultCancel: 'Prekliči',
+        defaultConfirm: 'Potrdi',
+        defaultNext: 'Naslednja',
+        defaultPrev: 'Prejšnja',
+        defaultSelected: 'Izbrano',
+    },
+    rate: {
+        error1: 'Ocenjevanju ni uspelo!',
+        error2: 'Ocena mora biti vsaj 1 zvezdica!',
+        error3: 'Dobra ocena mora biti vsaj 1 zvezdica!',
+        error4: 'Povprečna ocena mora biti vsaj 1 zvezdica!',
+        error5: 'Dolžina komentarja mora biti krajša od 20 znakov.',
+    },
+    timePicker: {
+        defaultTitle: 'Izberite čas',
+        defaultCancel: 'Prekliči',
+        defaultConfirm: 'Potrdi',
+        defaultYear: 'Leto',
+        defaultMonth: 'Mesec',
+        defaultDay: 'Dan',
+        defaultHour: 'Ura',
+        defaultMinute: 'Minuta',
+        defaultSecond: 'Sekunda',
+    },
+    calendar: {
+        weekTextList: ['Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob', 'Ned'],
+        weekSundayStartTextList: ['Ned', 'Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob'],
+        monthTextList: [
+            'Januar',
+            'Februar',
+            'Marec',
+            'April',
+            'Maj',
+            'Junij',
+            'Julij',
+            'Avgust',
+            'September',
+            'Oktober',
+            'November',
+            'December',
+        ],
+        confirmText: 'Potrdi',
+        selectedText: 'Izbrano',
+        dayText: 'Dan',
+        beforeText: 'Pred',
+        afterText: 'Po',
+        currentWeekText: 'Ta teden',
+        currentMonthText: 'Ta mesec',
+        currentQuarterText: 'To četrtletje',
+    },
+};

+ 88 - 0
components/lang/sr_RS.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Ovo mesto je prazno!',
+        loading: 'Učitavam...',
+        noData: 'Nema podataka',
+        noMoreData: 'Nema više podataka',
+    },
+    actionSheet: {
+        cancelText: 'Otkaži',
+    },
+    bottomSheet: {
+        title: 'Naslov',
+    },
+    dialog: {
+        title: 'Naslov',
+        content: 'Sadržaj',
+        primaryText: 'Potvrdi',
+        secondaryText: 'Otkaži',
+    },
+    input: {
+        pleaseInput: 'Molimo unesite',
+    },
+    modal: {
+        title: 'Naslov',
+        content: 'Sadržaj',
+        btnText: 'U redu',
+    },
+    navBar: {
+        title: 'Naslov',
+    },
+    picker: {
+        defaultTitle: 'Molimo odaberite',
+        defaultCancel: 'Otkaži',
+        defaultConfirm: 'Potvrdi',
+    },
+    asyncPicker: {
+        defaultTitle: 'Molimo odaberite',
+        defaultCancel: 'Otkaži',
+        defaultConfirm: 'Potvrdi',
+        defaultNext: 'Sledeće',
+        defaultPrev: 'Pređašnje',
+        defaultSelected: 'Izabrano',
+    },
+    rate: {
+        error1: 'Ocenjivanje nije uspelo!',
+        error2: 'Ocena mora da bude bar 1 zvezdica!',
+        error3: 'Dobra ocena mora da bude minimalno 1 zvezdica!',
+        error4: 'Prosečna ocena mora da bude bar 1 zvezdica!',
+        error5: 'Duljina komentara mora da bude kraća od 20 znakova.',
+    },
+    timePicker: {
+        defaultTitle: 'Odaberite vrijeme',
+        defaultCancel: 'Otkaži',
+        defaultConfirm: 'Potvrdi',
+        defaultYear: 'Godina',
+        defaultMonth: 'Mesec',
+        defaultDay: 'Dan',
+        defaultHour: 'Sati',
+        defaultMinute: 'Minute',
+        defaultSecond: 'Sekunde',
+    },
+    calendar: {
+        weekTextList: ['Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub', 'Ned'],
+        weekSundayStartTextList: ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub'],
+        monthTextList: [
+            'Januar',
+            'Februar',
+            'Mart',
+            'April',
+            'Maj',
+            'Jun',
+            'Jul',
+            'Avgust',
+            'Septembar',
+            'Oktobar',
+            'Novembar',
+            'Decembar',
+        ],
+        confirmText: 'Potvrdi',
+        selectedText: 'Izabrano',
+        dayText: 'Dan',
+        beforeText: 'Pre',
+        afterText: 'Posle',
+        currentWeekText: 'Ovaj tjedan',
+        currentMonthText: 'Ovaj mjesec',
+        currentQuarterText: 'Ovaj kvartal',
+    },
+};

+ 88 - 0
components/lang/sv_SE.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Det finns ingen information att visa!',
+        loading: 'Laddar...',
+        noData: 'Inga data',
+        noMoreData: 'Ingen mer data',
+    },
+    actionSheet: {
+        cancelText: 'Avbryt',
+    },
+    bottomSheet: {
+        title: 'Titel',
+    },
+    dialog: {
+        title: 'Titel',
+        content: 'Innehåll',
+        primaryText: 'Bekräfta',
+        secondaryText: 'Avbryt',
+    },
+    input: {
+        pleaseInput: 'Vänligen fyll i',
+    },
+    modal: {
+        title: 'Titel',
+        content: 'Innehåll',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Titel',
+    },
+    picker: {
+        defaultTitle: 'Vänligen välj',
+        defaultCancel: 'Avbryt',
+        defaultConfirm: 'Bekräfta',
+    },
+    asyncPicker: {
+        defaultTitle: 'Vänligen välj',
+        defaultCancel: 'Avbryt',
+        defaultConfirm: 'Bekräfta',
+        defaultNext: 'Nästa',
+        defaultPrev: 'Föregående',
+        defaultSelected: 'Vald',
+    },
+    rate: {
+        error1: 'Betygsättning misslyckades!',
+        error2: 'Betygsättningen måste vara minst en stjärna!',
+        error3: 'En bra betyg måste vara minst en stjärna!',
+        error4: 'Genomsnittligt betyg måste vara minst en stjärna!',
+        error5: 'Kommentarens längd måste vara mindre än 20 tecken.',
+    },
+    timePicker: {
+        defaultTitle: 'Välj tid',
+        defaultCancel: 'Avbryt',
+        defaultConfirm: 'Bekräfta',
+        defaultYear: 'År',
+        defaultMonth: 'Månad',
+        defaultDay: 'Dag',
+        defaultHour: 'Timme',
+        defaultMinute: 'Minut',
+        defaultSecond: 'Sekund',
+    },
+    calendar: {
+        weekTextList: ['Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör', 'Sön'],
+        weekSundayStartTextList: ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],
+        monthTextList: [
+            'Januari',
+            'Februari',
+            'Mars',
+            'April',
+            'Maj',
+            'Juni',
+            'Juli',
+            'Augusti',
+            'September',
+            'Oktober',
+            'November',
+            'December',
+        ],
+        confirmText: 'Bekräfta',
+        selectedText: 'Vald',
+        dayText: 'Dag',
+        beforeText: 'Före',
+        afterText: 'Efter',
+        currentWeekText: 'Denna vecka',
+        currentMonthText: 'Denna månad',
+        currentQuarterText: 'Detta kvartal',
+    },
+};

+ 88 - 0
components/lang/ta_IN.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'காண்பிக்க தகவல் இல்லை!',
+        loading: 'ஏற்றுகிறது...',
+        noData: 'தரவு இல்லை',
+        noMoreData: 'மேலும் தரவு இல்லை',
+    },
+    actionSheet: {
+        cancelText: 'ரத்துசெய்',
+    },
+    bottomSheet: {
+        title: 'தலைப்பு',
+    },
+    dialog: {
+        title: 'தலைப்பு',
+        content: 'உள்ளீடு',
+        primaryText: 'உறுதிசெய்',
+        secondaryText: 'ரத்துசெய்',
+    },
+    input: {
+        pleaseInput: 'தயவு செய்து உள்ளிடவும்',
+    },
+    modal: {
+        title: 'தலைப்பு',
+        content: 'உள்ளீடு',
+        btnText: 'சரி',
+    },
+    navBar: {
+        title: 'தலைப்பு',
+    },
+    picker: {
+        defaultTitle: 'தயவு செய்து தேர்ந்தெடுக்கவும்',
+        defaultCancel: 'ரத்துசெய்',
+        defaultConfirm: 'உறுதிசெய்',
+    },
+    asyncPicker: {
+        defaultTitle: 'தயவு செய்து தேர்ந்தெடுக்கவும்',
+        defaultCancel: 'ரத்துசெய்',
+        defaultConfirm: 'உறுதிசெய்',
+        defaultNext: 'அடுத்து',
+        defaultPrev: 'முன்',
+        defaultSelected: 'தேர்ந்தெடுக்கப்பட்டது',
+    },
+    rate: {
+        error1: 'மதிப்பீடு தோல்வி!',
+        error2: 'மதிப்பீடு ஒரு ஸ்டார் குறைவாக இருக்க வேண்டும்!',
+        error3: 'ஒரு நல்ல மதிப்பீடு ஒரு ஸ்டார் குறைவாக இருக்க வேண்டும்!',
+        error4: 'சராசரி மதிப்பீடு ஒரு ஸ்டார் குறைவாக இருக்க வேண்டும்!',
+        error5: 'கருத்து முறையும் குறுகியவற்றை விட குறைவுகளை வேண்டுகின்றது.',
+    },
+    timePicker: {
+        defaultTitle: 'நேரத்தை தேர்ந்தெடுக்கவும்',
+        defaultCancel: 'ரத்துசெய்',
+        defaultConfirm: 'உறுதிசெய்',
+        defaultYear: 'ஆண்டு',
+        defaultMonth: 'மாதம்',
+        defaultDay: 'நாள்',
+        defaultHour: 'மணி',
+        defaultMinute: 'நிமிடம்',
+        defaultSecond: 'நொடி',
+    },
+    calendar: {
+        weekTextList: ['திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'வெள்ளிக்கிழமை', 'ஞாயிறு'],
+        weekSundayStartTextList: ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'வெள்ளிக்கிழமை'],
+        monthTextList: [
+            'ஜனவரி',
+            'பிப்ரவரி',
+            'மார்ச்',
+            'ஏப்ரல்',
+            'மே',
+            'ஜூன்',
+            'ஜூலை',
+            'ஆகஸ்ட்',
+            'செப்டம்பர்',
+            'அக்டோபர்',
+            'நவம்பர்',
+            'டிசம்பர்',
+        ],
+        confirmText: 'உறுதிசெய்',
+        selectedText: 'தேர்ந்தெடுக்கப்பட்டது',
+        dayText: 'நாள்',
+        beforeText: 'முன்னுரில்',
+        afterText: 'பின்னுரில்',
+        currentWeekText: 'இந்த வாரம்',
+        currentMonthText: 'இந்த மாதம்',
+        currentQuarterText: 'இந்த காலாண்டு',
+    },
+};

+ 75 - 0
components/lang/th_TH.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'ไม่มีข้อมูล',
+        loading: 'กำลังโหลด...',
+        noData: 'ไม่มีข้อมูล',
+        noMoreData: 'ไม่มีข้อมูลเพิ่มเติม',
+    },
+    actionSheet: {
+        cancelText: 'ยกเลิก',
+    },
+    bottomSheet: {
+        title: 'กรุณาเลือก',
+    },
+    dialog: {
+        title: 'แจ้งเตือน',
+        content: 'ข้อความ',
+        primaryText: 'ตกลง',
+        secondaryText: 'ยกเลิก',
+    },
+    input: {
+        pleaseInput: 'กรุณากรอกข้อมูล',
+    },
+    modal: {
+        title: 'กรุณายืนยัน',
+        content: 'ข้อความ',
+        btnText: 'ตกลง',
+    },
+    navBar: {
+        title: 'หัวเรื่อง',
+    },
+    picker: {
+        defaultTitle: 'กรุณาเลือก',
+        defaultCancel: 'ยกเลิก',
+        defaultConfirm: 'ตกลง',
+    },
+    asyncPicker: {
+        defaultTitle: 'กรุณาเลือก',
+        defaultCancel: 'ยกเลิก',
+        defaultConfirm: 'ตกลง',
+        defaultNext: 'ต่อไป',
+        defaultPrev: 'ก่อนหน้า',
+        defaultSelected: 'เลือกแล้ว',
+    },
+    rate: {
+        error1: 'การประเมินผลล้มเหลว!',
+        error2: 'การประเมินผลต้องมีอย่างน้อย 1 ดาว!',
+        error3: 'การประเมินที่ดีต้องน้อยกว่าหรือเท่ากับ 1 ดาว!',
+        error4: 'การประเมินเฉลี่ยต้องน้อยกว่าหรือเท่ากับ 1 ดาว!',
+        error5: 'การให้คะแนนต้องน้อยกว่าหรือเท่ากับขีดจำกัด!',
+    },
+    timePicker: {
+        defaultTitle: 'กรุณาเลือกเวลา',
+        defaultCancel: 'ยกเลิก',
+        defaultConfirm: 'ตกลง',
+        defaultYear: 'ปี',
+        defaultMonth: 'เดือน',
+        defaultDay: 'วัน',
+        defaultHour: 'ชั่วโมง',
+        defaultMinute: 'นาที',
+        defaultSecond: 'วินาที',
+    },
+    calendar: {
+        weekTextList: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
+        weekSundayStartTextList: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
+        monthTextList: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],
+        confirmText: 'ตกลง',
+        selectedText: 'ที่เลือก',
+        dayText: 'วัน',
+        beforeText: 'ก่อนหน้า',
+        afterText: 'หลังจาก',
+        currentWeekText: 'สัปดาห์นี้',
+        currentMonthText: 'เดือนนี้',
+        currentQuarterText: 'ไตรมาสนี้',
+    },
+};

+ 75 - 0
components/lang/tk_TK.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'Maglumat ýok',
+        loading: 'Ýüklenýär...',
+        noData: 'Maglumat ýok',
+        noMoreData: 'Köp maglumat ýok',
+    },
+    actionSheet: {
+        cancelText: 'Gurnama',
+    },
+    bottomSheet: {
+        title: 'Saýlaň',
+    },
+    dialog: {
+        title: 'Bildiriş',
+        content: 'Mazmun',
+        primaryText: 'OK',
+        secondaryText: 'Gurnama',
+    },
+    input: {
+        pleaseInput: 'Eçow giriziň',
+    },
+    modal: {
+        title: 'Tassyklaň',
+        content: 'Mazmun',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Başlyk',
+    },
+    picker: {
+        defaultTitle: 'Saýlaň',
+        defaultCancel: 'Gurnama',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Saýlaň',
+        defaultCancel: 'Gurnama',
+        defaultConfirm: 'OK',
+        defaultNext: 'Indiki',
+        defaultPrev: 'Öňki',
+        defaultSelected: 'Saýlandy',
+    },
+    rate: {
+        error1: 'Derecelendirme doly bolmady!',
+        error2: 'Iň az bir ýyldyz derejesi gerekli!',
+        error3: 'Dürli derecelendirme-iň az bir ýyldyz derejesi talap edýär!',
+        error4: 'Ýekinç derecelendiriljegine iň az bir ýyldyz derejesi talap edýär!',
+        error5: 'Derecelendirme-gatnaşyklaryň derejeleri pişirilme-gatnaşygyndan ýokarny!',
+    },
+    timePicker: {
+        defaultTitle: 'Zaman saýlaň',
+        defaultCancel: 'Gurnama',
+        defaultConfirm: 'OK',
+        defaultYear: 'Ýyl',
+        defaultMonth: 'Aý',
+        defaultDay: 'Gün',
+        defaultHour: 'Sagat',
+        defaultMinute: 'Munyt',
+        defaultSecond: 'Saniýe',
+    },
+    calendar: {
+        weekTextList: ['Ys', 'Ys', 'Ar', 'Çä', 'Pe', 'Ýa', 'Şe'],
+        weekSundayStartTextList: ['Ýs', 'Ýs', 'Ar', 'Çä', 'Pe', 'Ýa', 'Şe'],
+        monthTextList: ['Ýan', 'Few', 'Mar', 'Apr', 'Maý', 'Iýun', 'Iýul', 'Awg', 'Sen', 'Okt', 'Noý', 'Dek'],
+        confirmText: 'OK',
+        selectedText: 'Saýlandy',
+        dayText: 'Gün',
+        beforeText: 'Öňki',
+        afterText: 'Soňky',
+        currentWeekText: 'Bu hepde',
+        currentMonthText: 'Bu aý',
+        currentQuarterText: 'Bu çärýek',
+    },
+};

+ 75 - 0
components/lang/tr_TR.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'Veri yok',
+        loading: 'Yükleniyor...',
+        noData: 'Veri yok',
+        noMoreData: 'Daha fazla veri yok',
+    },
+    actionSheet: {
+        cancelText: 'İptal',
+    },
+    bottomSheet: {
+        title: 'Lütfen seçiniz',
+    },
+    dialog: {
+        title: 'Uyarı',
+        content: 'İçerik',
+        primaryText: 'Tamam',
+        secondaryText: 'İptal',
+    },
+    input: {
+        pleaseInput: 'Lütfen giriş yapınız',
+    },
+    modal: {
+        title: 'Onay',
+        content: 'İçerik',
+        btnText: 'Tamam',
+    },
+    navBar: {
+        title: 'Başlık',
+    },
+    picker: {
+        defaultTitle: 'Lütfen seçiniz',
+        defaultCancel: 'İptal',
+        defaultConfirm: 'Tamam',
+    },
+    asyncPicker: {
+        defaultTitle: 'Lütfen seçiniz',
+        defaultCancel: 'İptal',
+        defaultConfirm: 'Tamam',
+        defaultNext: 'Sonraki',
+        defaultPrev: 'Önceki',
+        defaultSelected: 'Seçili',
+    },
+    rate: {
+        error1: 'Oylama başarısız oldu!',
+        error2: 'En az 1 yıldız değerlendirmesi gereklidir!',
+        error3: 'İyi bir değerlendirme en az 1 yıldız değerlendirmesi gerektirir!',
+        error4: 'Ortalama derecelendirme 1 yıldızın altında olmalıdır!',
+        error5: 'Oylama, sınırın altında olmalıdır!',
+    },
+    timePicker: {
+        defaultTitle: 'Lütfen bir tarih seçin',
+        defaultCancel: 'İptal',
+        defaultConfirm: 'Tamam',
+        defaultYear: 'Yıl',
+        defaultMonth: 'Ay',
+        defaultDay: 'Gün',
+        defaultHour: 'Saat',
+        defaultMinute: 'Dakika',
+        defaultSecond: 'Saniye',
+    },
+    calendar: {
+        weekTextList: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
+        weekSundayStartTextList: ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
+        monthTextList: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],
+        confirmText: 'Tamam',
+        selectedText: 'Seçildi',
+        dayText: 'Gün',
+        beforeText: 'Önce',
+        afterText: 'Sonra',
+        currentWeekText: 'Bu hafta',
+        currentMonthText: 'Bu ay',
+        currentQuarterText: 'Bu çeyrek',
+    },
+};

+ 88 - 0
components/lang/uk_UA.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Немає даних',
+        loading: 'Завантаження...',
+        noData: 'Немає даних',
+        noMoreData: 'Немає більше даних',
+    },
+    actionSheet: {
+        cancelText: 'Скасувати',
+    },
+    bottomSheet: {
+        title: 'Виберіть',
+    },
+    dialog: {
+        title: 'Повідомлення',
+        content: 'Зміст',
+        primaryText: 'OK',
+        secondaryText: 'Скасувати',
+    },
+    input: {
+        pleaseInput: 'Будь ласка, введіть',
+    },
+    modal: {
+        title: 'Підтвердження',
+        content: 'Зміст',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Назва',
+    },
+    picker: {
+        defaultTitle: 'Виберіть',
+        defaultCancel: 'Скасувати',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Виберіть',
+        defaultCancel: 'Скасувати',
+        defaultConfirm: 'OK',
+        defaultNext: 'Далі',
+        defaultPrev: 'Назад',
+        defaultSelected: 'Обрано',
+    },
+    rate: {
+        error1: 'Невдала оцінка!',
+        error2: 'Необхідно хоча б одну зірку!',
+        error3: 'Для правильної оцінки потрібно хоча б одну зірку!',
+        error4: 'Для середньої оцінки потрібно хоча б одну зірку!',
+        error5: 'Оцінка не відповідає принципам рейтингування!',
+    },
+    timePicker: {
+        defaultTitle: 'Виберіть час',
+        defaultCancel: 'Скасувати',
+        defaultConfirm: 'OK',
+        defaultYear: 'Рік',
+        defaultMonth: 'Місяць',
+        defaultDay: 'День',
+        defaultHour: 'Година',
+        defaultMinute: 'Хвилина',
+        defaultSecond: 'Секунда',
+    },
+    calendar: {
+        weekTextList: ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
+        weekSundayStartTextList: ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
+        monthTextList: [
+            'Січень',
+            'Лютий',
+            'Березень',
+            'Квітень',
+            'Травень',
+            'Червень',
+            'Липень',
+            'Серпень',
+            'Вересень',
+            'Жовтень',
+            'Листопад',
+            'Грудень',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Обрано',
+        dayText: 'День ',
+        beforeText: 'До ',
+        afterText: 'Після ',
+        currentWeekText: 'Поточний тиждень',
+        currentMonthText: 'Поточний місяць',
+        currentQuarterText: 'Поточний квартал',
+    },
+};

+ 75 - 0
components/lang/ur_PK.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: 'کوئی ڈیٹا نہیں',
+        loading: 'لوڈ ہو رہا ہے ...',
+        noData: 'کوئی ڈیٹا نہیں',
+        noMoreData: 'کوئی زیادہ ڈیٹا نہیں',
+    },
+    actionSheet: {
+        cancelText: 'منسوخ',
+    },
+    bottomSheet: {
+        title: 'منتخب کریں',
+    },
+    dialog: {
+        title: 'الرٹ',
+        content: 'مواد',
+        primaryText: 'ٹھیک ہے',
+        secondaryText: 'منسوخ',
+    },
+    input: {
+        pleaseInput: 'براہ کرم انپٹ کریں',
+    },
+    modal: {
+        title: 'تصدیق کریں',
+        content: 'مواد',
+        btnText: 'ٹھیک ہے',
+    },
+    navBar: {
+        title: 'عنوان',
+    },
+    picker: {
+        defaultTitle: 'منتخب کریں',
+        defaultCancel: 'منسوخ',
+        defaultConfirm: 'ٹھیک ہے',
+    },
+    asyncPicker: {
+        defaultTitle: 'منتخب کریں',
+        defaultCancel: 'منسوخ',
+        defaultConfirm: 'ٹھیک ہے',
+        defaultNext: 'اگلا',
+        defaultPrev: 'پچھلا',
+        defaultSelected: 'منتخب',
+    },
+    rate: {
+        error1: 'درجہ بندی ناکام ہوگی!',
+        error2: 'کم از کم ایک ستارہ درجہ ضروری ہے!',
+        error3: 'ایک درست درجہ کے لئے کم از کم ایک ستارہ کی درجہ بندی درکار ہے!',
+        error4: 'ایک اوسط درجہ کے لئے کم از کم ایک ستارہ کی درجہ بندی درکار ہے!',
+        error5: 'ریٹنگ بالکل مناسب نہیں ہے!',
+    },
+    timePicker: {
+        defaultTitle: 'وقت منتخب کریں',
+        defaultCancel: 'منسوخ',
+        defaultConfirm: 'ٹھیک ہے',
+        defaultYear: 'سال',
+        defaultMonth: 'مہینہ',
+        defaultDay: 'دن',
+        defaultHour: 'گھنٹہ',
+        defaultMinute: 'منٹ',
+        defaultSecond: 'سیکنڈ',
+    },
+    calendar: {
+        weekTextList: ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
+        weekSundayStartTextList: ['ایک', 'دو', 'تین', 'چار', 'پانچ', 'چھہ', 'ہفتہ'],
+        monthTextList: ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+        confirmText: 'ٹھیک ہے',
+        selectedText: 'منتخب شدہ',
+        dayText: 'دن',
+        beforeText: 'پہلے',
+        afterText: 'بعد میں',
+        currentWeekText: 'اس ہفتے',
+        currentMonthText: 'اس مہینہ',
+        currentQuarterText: 'اس ترکیب',
+    },
+};

+ 88 - 0
components/lang/vi_VN.js

@@ -0,0 +1,88 @@
+export default {
+    common: {
+        slotEmpty: 'Không có dữ liệu',
+        loading: 'Đang tải...',
+        noData: 'Không có dữ liệu',
+        noMoreData: 'Không còn dữ liệu',
+    },
+    actionSheet: {
+        cancelText: 'Hủy',
+    },
+    bottomSheet: {
+        title: 'Chọn',
+    },
+    dialog: {
+        title: 'Thông báo',
+        content: 'Nội dung',
+        primaryText: 'OK',
+        secondaryText: 'Hủy',
+    },
+    input: {
+        pleaseInput: 'Vui lòng nhập',
+    },
+    modal: {
+        title: 'Xác nhận',
+        content: 'Nội dung',
+        btnText: 'OK',
+    },
+    navBar: {
+        title: 'Tiêu đề',
+    },
+    picker: {
+        defaultTitle: 'Chọn',
+        defaultCancel: 'Hủy',
+        defaultConfirm: 'OK',
+    },
+    asyncPicker: {
+        defaultTitle: 'Chọn',
+        defaultCancel: 'Hủy',
+        defaultConfirm: 'OK',
+        defaultNext: 'Tiếp theo',
+        defaultPrev: 'Trước đó',
+        defaultSelected: 'Đã chọn',
+    },
+    rate: {
+        error1: 'Đánh giá không thành công!',
+        error2: 'Cần ít nhất một sao!',
+        error3: 'Cần ít nhất một sao để đánh giá chính xác!',
+        error4: 'Cần ít nhất một sao để đánh giá trung bình!',
+        error5: 'Đánh giá không phù hợp với nguyên tắc đánh giá!',
+    },
+    timePicker: {
+        defaultTitle: 'Chọn thời gian',
+        defaultCancel: 'Hủy',
+        defaultConfirm: 'OK',
+        defaultYear: 'Năm',
+        defaultMonth: 'Tháng',
+        defaultDay: 'Ngày',
+        defaultHour: 'Giờ',
+        defaultMinute: 'Phút',
+        defaultSecond: 'Giây',
+    },
+    calendar: {
+        weekTextList: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+        weekSundayStartTextList: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+        monthTextList: [
+            'Tháng 1',
+            'Tháng 2',
+            'Tháng 3',
+            'Tháng 4',
+            'Tháng 5',
+            'Tháng 6',
+            'Tháng 7',
+            'Tháng 8',
+            'Tháng 9',
+            'Tháng 10',
+            'Tháng 11',
+            'Tháng 12',
+        ],
+        confirmText: 'OK',
+        selectedText: 'Đã chọn',
+        dayText: 'Ngày ',
+        beforeText: 'Trước ',
+        afterText: 'Sau ',
+        currentWeekText: 'Tuần này',
+        currentMonthText: 'Tháng này',
+        currentQuarterText: 'Quý này',
+    },
+};

+ 75 - 0
components/lang/zh_CN.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: '插槽内容为空!',
+        loading: '加载中...',
+        noData: '暂无数据',
+        noMoreData: '没有更多数据了',
+    },
+    actionSheet: {
+        cancelText: '取消',
+    },
+    bottomSheet: {
+        title: '标题',
+    },
+    dialog: {
+        title: '提示',
+        content: '内容',
+        primaryText: '确定',
+        secondaryText: '取消',
+    },
+    input: {
+        pleaseInput: '请输入',
+    },
+    modal: {
+        title: '标题',
+        content: '内容',
+        btnText: '我知道了',
+    },
+    navBar: {
+        title: '标题',
+    },
+    picker: {
+        defaultTitle: '请选择',
+        defaultCancel: '取消',
+        defaultConfirm: '确定',
+    },
+    asyncPicker: {
+        defaultTitle: '请选择',
+        defaultCancel: '取消',
+        defaultConfirm: '确定',
+        defaultNext: '下一步',
+        defaultPrev: '上一步',
+        defaultSelected: '已选',
+    },
+    rate: {
+        error1: 'value 不能大于 total!',
+        error2: 'total 必须能被 1 整除!',
+        error3: '非半选时 value 必须能被 1 整除!',
+        error4: '半选时 value 必须能被 0.5 整除!',
+        error5: 'width 或 height 小于 20 会使移动端点击困难!',
+    },
+    timePicker: {
+        defaultTitle: '请选择',
+        defaultCancel: '取消',
+        defaultConfirm: '确定',
+        defaultYear: '年',
+        defaultMonth: '月',
+        defaultDay: '日',
+        defaultHour: '时',
+        defaultMinute: '分',
+        defaultSecond: '秒',
+    },
+    calendar: {
+        weekTextList: ['一', '二', '三', '四', '五', '六', '日'],
+        weekSundayStartTextList: ['日', '一', '二', '三', '四', '五', '六'],
+        monthTextList: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+        confirmText: '确认',
+        selectedText: '已选',
+        dayText: '天',
+        beforeText: '最近',
+        afterText: '未来',
+        currentWeekText: '本周',
+        currentMonthText: '本月',
+        currentQuarterText: '本季度',
+    },
+};

+ 75 - 0
components/lang/zh_HK.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: '插槽內容為空!',
+        loading: '載入中...',
+        noData: '暫無數據',
+        noMoreData: '沒有更多數據了',
+    },
+    actionSheet: {
+        cancelText: '取消',
+    },
+    bottomSheet: {
+        title: '標題',
+    },
+    dialog: {
+        title: '提示',
+        content: '內容',
+        primaryText: '確定',
+        secondaryText: '取消',
+    },
+    input: {
+        pleaseInput: '請輸入',
+    },
+    modal: {
+        title: '標題',
+        content: '內容',
+        btnText: '我知道了',
+    },
+    navBar: {
+        title: '標題',
+    },
+    picker: {
+        defaultTitle: '請選擇',
+        defaultCancel: '取消',
+        defaultConfirm: '確定',
+    },
+    asyncPicker: {
+        defaultTitle: '請選擇',
+        defaultCancel: '取消',
+        defaultConfirm: '確定',
+        defaultNext: '下一步',
+        defaultPrev: '上一步',
+        defaultSelected: '已選',
+    },
+    rate: {
+        error1: 'value 不能大於 total !',
+        error2: 'total 必須能被 1 整除!',
+        error3: '非半選時 value 必須能被 1 整除!',
+        error4: '半選時 value 必須能被 0.5 整除!',
+        error5: 'width 或 height 小於 20 會使移動端點擊困難!',
+    },
+    timePicker: {
+        defaultTitle: '請選擇',
+        defaultCancel: '取消',
+        defaultConfirm: '確定',
+        defaultYear: '年',
+        defaultMonth: '月',
+        defaultDay: '日',
+        defaultHour: '時',
+        defaultMinute: '分',
+        defaultSecond: '秒',
+    },
+    calendar: {
+        weekTextList: ['一', '二', '三', '四', '五', '六', '日'],
+        weekSundayStartTextList: ['日', '一', '二', '三', '四', '五', '六'],
+        monthTextList: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+        confirmText: '確認',
+        selectedText: '已選',
+        dayText: '天',
+        beforeText: '最近',
+        afterText: '未來',
+        currentWeekText: '本週',
+        currentMonthText: '本月',
+        currentQuarterText: '本季度',
+    },
+};

+ 75 - 0
components/lang/zh_TW.js

@@ -0,0 +1,75 @@
+export default {
+    common: {
+        slotEmpty: '插槽內容為空!',
+        loading: '載入中...',
+        noData: '暫無數據',
+        noMoreData: '沒有更多數據了',
+    },
+    actionSheet: {
+        cancelText: '取消',
+    },
+    bottomSheet: {
+        title: '標題',
+    },
+    dialog: {
+        title: '提示',
+        content: '內容',
+        primaryText: '確定',
+        secondaryText: '取消',
+    },
+    input: {
+        pleaseInput: '請輸入',
+    },
+    modal: {
+        title: '標題',
+        content: '內容',
+        btnText: '我知道了',
+    },
+    navBar: {
+        title: '標題',
+    },
+    picker: {
+        defaultTitle: '請選擇',
+        defaultCancel: '取消',
+        defaultConfirm: '確定',
+    },
+    asyncPicker: {
+        defaultTitle: '請選擇',
+        defaultCancel: '取消',
+        defaultConfirm: '確定',
+        defaultNext: '下一步',
+        defaultPrev: '上一步',
+        defaultSelected: '已選',
+    },
+    rate: {
+        error1: 'value 不能大於 total !',
+        error2: 'total 必須能被 1 整除!',
+        error3: '非半選時 value 必須能被 1 整除!',
+        error4: '半選時 value 必須能被 0.5 整除!',
+        error5: 'width 或 height 小於 20 會使移動端點擊困難!',
+    },
+    timePicker: {
+        defaultTitle: '請選擇',
+        defaultCancel: '取消',
+        defaultConfirm: '確定',
+        defaultYear: '年',
+        defaultMonth: '月',
+        defaultDay: '日',
+        defaultHour: '時',
+        defaultMinute: '分',
+        defaultSecond: '秒',
+    },
+    calendar: {
+        weekTextList: ['一', '二', '三', '四', '五', '六', '日'],
+        weekSundayStartTextList: ['日', '一', '二', '三', '四', '五', '六'],
+        monthTextList: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+        confirmText: '確認',
+        selectedText: '已選',
+        dayText: '天',
+        beforeText: '最近',
+        afterText: '未來',
+        currentWeekText: '本週',
+        currentMonthText: '本月',
+        currentQuarterText: '本季度',
+    },
+};

+ 25 - 0
components/package.json

@@ -0,0 +1,25 @@
+{
+    "name": "stdf",
+    "version": "0.0.1",
+    "description": "Mobile Web component library based on Svelte and Tailwind",
+    "main": "index.js",
+    "scripts": {
+        "test": "echo \"Error: no test specified\" && exit 1"
+    },
+    "author": "dufu1991",
+    "license": "MIT",
+    "homepage": "https://stdf.design",
+    "keywords": [
+        "svelte",
+        "tailwind",
+        "ui framework",
+        "ui 组件库",
+        "移动组件库",
+        "moblie ui",
+        "web component"
+    ],
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/dufu1991/stdf"
+    }
+}

+ 175 - 0
components/src/actionSheet/ActionSheet.svelte

@@ -0,0 +1,175 @@
+<script>
+    import { createEventDispatcher, getContext } from 'svelte';
+    import Popup from '../popup/Popup.svelte';
+    import zh_CN from '../../lang/zh_CN';
+
+    // 定义事件派发器
+    // Define event dispatcher
+    const dispatch = createEventDispatcher();
+
+    // 当前语言
+    // current language
+    const currentLang = getContext('lang') || zh_CN;
+    const actionSheetLang = currentLang.actionSheet;
+
+    // 是否显示
+    // Whether to show
+    export let visible = false;
+
+    // 标题
+    // Title
+    export let title = '';
+
+    //标题对齐方式
+    //Title alignment
+    export let titleAlign = 'center';
+
+    // 菜单项,style有 normal、theme、danger、disabled
+    // Menu items, style has normal, theme, danger, disabled
+    export let actions = [];
+
+    // 弹出层参数
+    // Popup parameters
+    export let popup = {};
+
+    // 是否显示取消选项。
+    // Whether to show the cancel option.
+    export let showCancel = false;
+
+    // 取消选项文本
+    // Cancel option text
+    export let cancelText = actionSheetLang.cancelText;
+
+    // 点击选项是否关闭
+    // Click option to close
+    export let actionClosable = true;
+
+    // 对齐方式
+    // Alignment
+    export let align = 'center';
+
+    // 标题对齐方式
+    // Title alignment
+    const titleAlignClass = {
+        left: 'text-left',
+        center: 'text-center',
+        right: 'text-right',
+    };
+
+    // 选项样式
+    // Option style
+    const stateClass = {
+        normal: ' ',
+        theme: ' text-primary dark:text-dark ',
+        danger: ' text-error ',
+        disabled: ' text-black/20 dark:text-white/20 ',
+    };
+
+    // 图片圆角
+    // Image radius
+    const imgRadiusClass = {
+        none: 'rounded-none',
+        base: 'rounded',
+        full: 'rounded-full',
+        lg: 'rounded-lg',
+    };
+
+    // 图片对齐方式
+    // Image alignment
+    const alignClass = {
+        left: 'justify-start pl-4',
+        center: 'justify-center',
+        right: 'justify-end pr-4',
+    };
+
+    // 计算弹出层高度
+    // Calculate the height of the popup
+    const getTransitionDistanceunc = (title, showCancel, actions) => {
+        const titleHeight = title ? 40 : 0;
+        const cancelHeight = showCancel ? 56 : 0;
+        // 循环 actions,如果有 desc 高度为 61, 没有 desc 高度为 56,分割线每条1px,计算总高度
+        // Loop actions, if there is desc, the height is 61, if there is no desc, the height is 56, and the divider is 1px each, and the total height is calculated
+        const actionsHeight = actions.reduce((total, item) => {
+            return total + (item.desc ? 60 : 56);
+        }, 0);
+        return titleHeight + cancelHeight + actionsHeight + actions.length - 1;
+    };
+
+    // 取消按钮点击事件
+    // Click event of cancel button
+    const cancelFunc = () => {
+        visible = false;
+        dispatch('cancel'); //派发取消事件
+    };
+
+    // 选项点击事件,如果选项不可点击,不触发事件,如果可点击,触发事件,如果 actionClosable 为 true,关闭弹出层
+    // Click event of action, if the action is not clickable, the event will not be triggered, if it is clickable, the event will be triggered, and if actionClosable is true, the popup will be closed
+    const clickActionFunc = (index, item) => {
+        if (item.style !== 'disabled') {
+            dispatch('clickAction', { index, item }); //派发选项点击事件,返回选项索引和选项对象
+            if (actionClosable) {
+                visible = false;
+            }
+        }
+    };
+
+    // 监听 visible 变化,如果为 true,派发 open 事件,如果为 false,派发 close 事件
+    // Listen to the change of visible, if it is true, dispatch the open event, if it is false, dispatch the close event
+    $: {
+        if (visible) {
+            dispatch('open');
+        } else {
+            dispatch('close');
+        }
+    }
+</script>
+
+<Popup bind:visible size={0} maskClosable transitionDistance={getTransitionDistanceunc(title, showCancel, actions)} {...popup}>
+    {#if title}
+        <div
+            class={`truncate text-xs text-black/50 dark:text-white/50 border-b border-black/5 dark:border-white/5 h-10 flex flex-col justify-center ${
+                titleAlignClass[titleAlign] || titleAlignClass['left']
+            }`}
+        >
+            {title}
+        </div>
+    {/if}
+    <div>
+        {#each actions as item, index}
+            <!-- svelte-ignore a11y-click-events-have-key-events -->
+            <div
+                class={`${item.style !== 'disabled' ? 'active:scale-90 ' : ''}transition-all flex items-center gap-2 ${
+                    alignClass[align] || alignClass['center']
+                }`}
+                on:click={() => clickActionFunc(index, item)}
+            >
+                <!-- 图片 -->
+                {#if item.showImg}
+                    <div class={`w-6 h-6 overflow-hidden ${imgRadiusClass[item.imgRadius] || 'rounded-full'}`}>
+                        <img class="w-full h-full object-cover" src={item.imgSrc} alt="" />
+                    </div>
+                {/if}
+                <div>
+                    <div
+                        class={`truncate text-center font-bold${stateClass[item.style] || stateClass.normal}flex flex-col justify-center${
+                            item.desc ? ' h-10' : ' h-14'
+                        }`}
+                    >
+                        {item.content}
+                    </div>
+                    {#if item.desc}
+                        <div class="truncate text-center text-xs pb-1 text-black/50 dark:text-white/40">{item.desc}</div>
+                    {/if}
+                </div>
+            </div>
+            {#if index !== actions.length - 1}
+                <div class="h-px w-full bg-black/5 dark:bg-white/5" />
+            {/if}
+        {/each}
+    </div>
+    {#if showCancel}
+        <div class="bg-black/5 dark:bg-white/5 h-2" />
+        <!-- svelte-ignore a11y-click-events-have-key-events -->
+        <div class="active:scale-90 transition-all text-center h-12 flex flex-col justify-center" on:click={cancelFunc}>{cancelText}</div>
+    {/if}
+</Popup>

+ 1 - 0
components/src/actionSheet/FAQ.md

@@ -0,0 +1 @@
+

+ 1 - 0
components/src/actionSheet/FAQ_en.md

@@ -0,0 +1 @@
+

+ 33 - 0
components/src/actionSheet/api.md

@@ -0,0 +1,33 @@
+## ActionSheet Props
+
+| 属性           | 类型    | 默认值                            | 可选值                  | 必传 | 说明                                 |
+| -------------- | ------- | --------------------------------- | ----------------------- | ---- | ------------------------------------ |
+| visible        | Boolean | false                             | true/false              | N    | 是否显示。                           |
+| title          | String  | ''                                | -                       | N    | 标题。                               |
+| titleAlign     | String  | 'center'                          | 'left'/'center'/'right' | N    | 标题对齐方式。                       |
+| actions        | Array   | []                                | 参考 Actions Props      | Y    | 菜单选项,Actions Props 组成的数组。 |
+| popup          | Object  | {}                                | 参考 Popup Props        | N    | 弹出层参数。                         |
+| showCancel     | Boolean | false                             | true/false              | N    | 是否显示取消选项。                   |
+| cancelText     | String  | 当前语言的 actionSheet.cancelText | -                       | N    | 取消选项文本。                       |
+| actionClosable | Boolean | true                              | true/false              | N    | 点击选项是否关闭。                   |
+| align          | String  | 'center'                          | 'left'/'center'/'right' | N    | 对齐方式。                           |
+
+## Actions Props
+
+| 属性      | 类型    | 默认值   | 可选值                               | 必传 | 说明           |
+| --------- | ------- | -------- | ------------------------------------ | ---- | -------------- |
+| content   | String  | -        | -                                    | Y    | 选项内容。     |
+| style     | String  | 'normal' | 'normal'/'theme'/'danger'/'disabled' | N    | 选项样式。     |
+| desc      | String  | ''       | -                                    | N    | 选项描述。     |
+| showImg   | Boolean | false    | true/false                           | N    | 是否显示图片。 |
+| imgRadius | String  | 'full'   | 'none'/'base'/'full'/'lg'            | N    | 图片圆角。     |
+| imgSrc    | String  | ''       | -                                    | N    | 图片地址。     |
+
+## ActionSheet Events
+
+| 名称        | 参数                                                                                                           | 描述                                             |
+| ----------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
+| open        | -                                                                                                              | 打开时触发。                                     |
+| close       | -                                                                                                              | 关闭时触发。                                     |
+| cancel      | -                                                                                                              | 点击取消时触发。                                 |
+| clickAction | event:事件对象,其中 detail 内有两个参数:<br />1. index:当前点击索引值;<br />2. item:当前点击选项 Props。 | 点击选项时触发,即使点击选项不允许关闭也会触发。 |

+ 33 - 0
components/src/actionSheet/api_en.md

@@ -0,0 +1,33 @@
+## ActionSheet Props
+
+| Properties     | Type    | Default value                           | optional value          | required | Description                                 |
+| -------------- | ------- | --------------------------------------- | ----------------------- | ----------- | ------------------------------------------- |
+| visible        | Boolean | false                                   | true/false              | N           | Whether to display.                         |
+| title          | String  | ''                                      | -                       | N           | title.                                      |
+| titleAlign     | String  | 'center'                                | 'left'/'center'/'right' | N           | Title alignment method.                     |
+| actions        | Array   | []                                      | refer to Actions Props  | Y           | Menu options, array of Actions Props.       |
+| popup          | Object  | {}                                      | refer to Popup Props    | N           | Popping layer parameters.                   |
+| showCancel     | Boolean | false                                   | true/false              | N           | Whether to display the cancellation option. |
+| cancelText     | String  | Current language actionSheet.cancelText | -                       | N           | Cancel the option text.                     |
+| actionClosable | Boolean | true                                    | true/false              | N           | Click whether the option is closed.         |
+| align          | String  | 'center'                                | 'left'/'center'/'right' | N           | Alignment.                                  |
+
+## Actions Props
+
+| Properties | Type    | Default value | Optional value                       | required | Description                  |
+| ---------- | ------- | ------------- | ------------------------------------ | ----------- | ---------------------------- |
+| content    | String  | -             | -                                    | Y           | Option content.              |
+| style      | String  | 'normal'      | 'normal'/'theme'/'danger'/'disabled' | N           | Option style.                |
+| desc       | String  | ''            | -                                    | N           | Option description.          |
+| showImg    | Boolean | false         | true/false                           | N           | Whether to display pictures. |
+| imgRadius  | String  | 'full'        | 'none'/'base'/'full'/'lg'            | N           | Picture round corner.        |
+| imgSrc     | String  | ''            | -                                    | N           | The map's address.           |
+
+## ActionSheet Events
+
+| Name        | Parameter                                                                                                                                                  | Description                                                                                                    |
+| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
+| open        | -                                                                                                                                                          | Triggered when opening.                                                                                        |
+| close       | -                                                                                                                                                          | Triggered when closed.                                                                                         |
+| cancel      | -                                                                                                                                                          | Click to trigger when cancel.                                                                                  |
+| clickAction | event: Event object, where there are two parameters in Detail:<br />1. index: Currently click the index value;<br />2. item: Current click Options Props。 | Triggered when you click the option, even if you click the option, you will be triggered if it is not allowed. |

+ 19 - 0
components/src/actionSheet/guide.md

@@ -0,0 +1,19 @@
+## 使用
+
+ActionSheet 动作面板一般从页面底部弹出,提供与当前场景相关的操作动作。此操作一般不会携带数据,不用担心误触,默认不显示取消操作项,允许点击遮罩关闭。
+
+## 说明
+
+ActionSheet 动作面板是在 Popup 基础上封装的,通过预先定义一些 Popup 的 Props 实现,因此可以通过传入 Popup 的属性来实现不同的效果。比如示例中通过设置 popup 的 radius 改变圆角风格。
+
+## actions
+
+ActionSheet 的 actions 属性是一个数组,数组中的每一项都是一个对象,对象中的属性参考 Actions Props。
+
+## ActionSheet、Picker、Radio
+
+ActionSheet、Picker、Radio 三者都是给出数据,让用户进行数据选择或执行一些操作,但何时使用哪个组件呢?
+
+-   Radio 一般用于单选数据,数据量固定且较少,需要在 UI 界面上直接展示选项,方便用户在界面交互时对多条数据有个概览,比如性别选择。
+-   ActionSheet 一般用于选择之后立即执行一些操作,选项固定且较少,但不需要在 UI 界面上直接展示选项,比如做一些删除、修改等操作。
+-   Picker 一般用于选择单条或多条数据,数据量较大或无法确定长度的动态数据,或用于一些联动数据的选择,比如省市区选择。

+ 19 - 0
components/src/actionSheet/guide_en.md

@@ -0,0 +1,19 @@
+## Usage
+
+ActionSheet is a panel that pops up from the bottom of the page and provides operation actions related to the current scene. This operation generally does not carry data, so there is no need to worry about accidental touch. The cancel operation item is not displayed by default and clicking the mask can close it.
+
+## Description
+
+ActionSheet is encapsulated based on Popup. By predefining some Props of Popup, different effects can be achieved by passing Popup's properties. For example, in the example, the radius style is changed by setting the radius of popup.
+
+## Actions
+
+The actions property of ActionSheet is an array, and each item in the array is an object. The properties of the object refer to Actions Props.
+
+## ActionSheet, Picker, Radio
+
+ActionSheet, Picker, and Radio all give data for users to select or perform some operations, but when to use which component?
+
+-   Radio is generally used for single selection data, with a fixed and relatively small amount of data. It needs to directly display options on the UI interface, and is convenient for users to have an overview of multiple data when interacting with the interface, such as gender selection.
+-   ActionSheet is generally used to immediately perform some operations after selection. The options are fixed and relatively small, but there is no need to directly display the options on the UI interface, such as deleting and modifying operations.
+-   Picker is generally used to select single or multiple data, dynamic data with a large amount of data or an undetermined length, or for the selection of some linked data, such as province, city, and district selection.

+ 0 - 0
components/src/actionSheet/version.md


+ 0 - 0
components/src/actionSheet/version_en.md


+ 217 - 0
components/src/asyncPicker/AsyncPicker.svelte

@@ -0,0 +1,217 @@
+<script>
+    import { createEventDispatcher, getContext } from 'svelte';
+    import { fly } from 'svelte/transition';
+    import Popup from '../popup/Popup.svelte';
+    import Loading from '../loading/Loading.svelte';
+    import ScrollRadio from '../scrollRadio/ScrollRadio.svelte';
+    import zh_CN from '../../lang/zh_CN';
+
+    // 定义事件派发器
+    // Define event dispatcher
+    const dispatch = createEventDispatcher();
+
+    // 当前语言
+    // current language
+    const currentLang = getContext('lang') || zh_CN;
+    const asyncPickerLang = currentLang.asyncPicker;
+
+    // 是否显示
+    // Whether to show
+    export let visible = false;
+
+    // 列数据
+    // Column data
+    export let data = [];
+
+    // 是否是最后一级
+    // Whether it is the last level
+    export let lastLevel = false;
+
+    // 是否是第一级
+    // Whether it is the first level
+    export let firstLevel = true;
+
+    // 可见行数
+    // Visible rows
+    export let showRow = 5;
+
+    // data 中 label 对应的 key
+    // The key corresponding to label in data
+    export let labelKey = 'label';
+
+    // 对齐方式
+    // Alignment
+    export let align = 'center';
+
+    // 取消选项文本
+    // Cancel option text
+    export let cancelText = asyncPickerLang.defaultCancel;
+
+    // 确定选项文本
+    // Confirm option text
+    export let confirmText = asyncPickerLang.defaultConfirm;
+
+    // 中间选项文本
+    // Middle option text
+    export let title = asyncPickerLang.defaultTitle;
+
+    // 下一步选项文本
+    // Next option text
+    export let nextText = asyncPickerLang.defaultNext;
+
+    // 上一步选项文本
+    // Previous option text
+    export let prevText = asyncPickerLang.defaultPrev;
+
+    // 是否显示已选选项
+    // Whether to show selected options
+    export let showSelected = false;
+
+    // 已选选项文本
+    // Selected option text
+    export let selectedText = asyncPickerLang.defaultSelected;
+
+    // 弹出层参数
+    // Popup parameters
+    export let popup = {};
+
+    // 加载数据时的loading参数
+    // Loading parameters when loading data
+    export let loading = {};
+
+    // 用于存储当前选定的所有项和索引
+    // Used to store all selected items and indexes
+    let items = [];
+    let indexs = [];
+
+    // 当前选中项索引
+    // Current selected item index
+    let currentIndex = 0;
+
+    // 点击左侧按钮
+    // Click left button
+    const clickLeftFunc = () => {
+        if (firstLevel) {
+            visible = false;
+            dispatch('cancel');
+        } else {
+            items = items.slice(0, items.length - 1);
+            indexs.pop();
+            data = [];
+            setTimeout(() => {
+                dispatch('prev');
+                currentIndex = 0;
+            });
+        }
+    };
+
+    // 点击右侧按钮,如果是最后一列,则触发 confirm 事件,否则触发 next 事件
+    // Click the right button, if it is the last column, trigger the confirm event, otherwise trigger the next event
+    const clickRightFunc = () => {
+        if (lastLevel) {
+            items.push(data[currentIndex]);
+            indexs.push(currentIndex);
+            data = [];
+            visible = false;
+            currentIndex = 0;
+            dispatch('confirm', { items, indexs });
+        } else {
+            items = [...items, data[currentIndex]];
+            indexs.push(currentIndex);
+            indexs = indexs;
+            data = [];
+            setTimeout(() => {
+                dispatch('next', { index: currentIndex });
+                currentIndex = 0;
+            });
+        }
+    };
+
+    // 滚动结束
+    // Scroll end
+    const scrollEndFunc = e => {
+        currentIndex = e.detail.index;
+    };
+    $: isLoading = data.length === 0;
+    $: {
+        if (visible) {
+            dispatch('open');
+        } else {
+            currentIndex = 0;
+            items = [];
+            indexs = [];
+            dispatch('close');
+        }
+    }
+</script>
+
+<Popup
+    bind:visible
+    size={0}
+    maskClosable
+    transitionDistance={(showRow === 3 ? 64 : showRow === 5 ? 48 : 32) * showRow + 41 + (showSelected ? 32 : 0)}
+    {...popup}
+>
+    <div class="flex justify-between items-center bg-white dark:bg-black border-b border-black/10 dark:border-white/20">
+        <!-- svelte-ignore a11y-click-events-have-key-events -->
+        <div
+            class="text-black/60 dark:text-white/60 h-10 leading-10 px-4 cursor-pointer"
+            on:click={() => {
+                !isLoading && clickLeftFunc();
+            }}
+        >
+            {#if isLoading}
+                <div class="p-3">
+                    <Loading width="4" height="4" customColor={['#666']} />
+                </div>
+            {:else}
+                {firstLevel ? cancelText : prevText}
+            {/if}
+        </div>
+        <div>{title}</div>
+        <!-- svelte-ignore a11y-click-events-have-key-events -->
+        <div
+            class="text-primary dark:text-dark h-10 leading-10 px-4 cursor-pointer"
+            on:click={() => {
+                !isLoading && clickRightFunc();
+            }}
+        >
+            {#if isLoading}
+                <div class="p-3">
+                    <Loading width="4" height="4" theme />
+                </div>
+            {:else}
+                {lastLevel ? confirmText : nextText}
+            {/if}
+        </div>
+    </div>
+    {#if showSelected}
+        <div class="flex gap-3 w-full overflow-x-hidden px-4 bg-white dark:bg-black">
+            <div class="text-center text-black/60 dark:text-white/60 flex-none h-8 leading-8 text-sm">{selectedText}</div>
+            {#each items as item}
+                {#if !isLoading}
+                    <div
+                        in:fly={{ x: document.documentElement.clientWidth, duration: 300 }}
+                        out:fly={{ x: document.documentElement.clientWidth, duration: 150 }}
+                        class="flex-1 text-center h-8 leading-8 text-sm truncate px-1"
+                    >
+                        {item[labelKey]}
+                    </div>
+                {/if}
+            {/each}
+        </div>
+    {/if}
+    <div class="bg-white dark:bg-black">
+        <div class="truncate">
+            {#if isLoading}
+                <div class="flex justify-center items-center" style="height:{(showRow === 3 ? 64 : showRow === 5 ? 48 : 32) * showRow}px">
+                    <Loading width="28" height="8" type="1_16" theme {...loading} />
+                </div>
+            {:else}
+                <div>
+                    <ScrollRadio {data} {showRow} {labelKey} {align} autoScrollToLast={false} on:scrollEnd={scrollEndFunc} />
+                </div>
+            {/if}
+        </div>
+    </div>
+</Popup>

+ 1 - 0
components/src/asyncPicker/FAQ.md

@@ -0,0 +1 @@
+

+ 1 - 0
components/src/asyncPicker/FAQ_en.md

@@ -0,0 +1 @@
+

+ 31 - 0
components/src/asyncPicker/api.md

@@ -0,0 +1,31 @@
+## AsyncPicker Props
+
+| 属性         | 类型    | 默认值                            | 可选值                  | 必传 | 说明                      |
+| ------------ | ------- | --------------------------------- | ----------------------- | ---- | ------------------------- |
+| visible      | Boolean | false                             | true/false              | N    | 是否显示。                |
+| data         | Array   | []                                | -                       | Y    | 列数据。                  |
+| lastLevel    | Boolean | false                             | true/false              | N    | 是否是最后一级。          |
+| firstLevel   | Boolean | false                             | true/false              | N    | 是否是第一级。            |
+| showRow      | Number  | 5                                 | 3/5/7                   | N    | 列显示行数。              |
+| labelKey     | String  | 'label'                           | -                       | N    | 自定义 label 的 key。     |
+| align        | String  | 'center'                          | 'left'/'center'/'right' | N    | 对齐方式。                |
+| cancelText   | String  | 当前语言的 picker.defaultCancel   | -                       | N    | 取消选项文本。            |
+| confirmText  | String  | 当前语言的 picker.defaultConfirm  | -                       | N    | 确定选项文本。            |
+| title        | String  | 当前语言的 picker.defaultTitle    | -                       | N    | 中间标题文本。            |
+| nextText     | String  | 当前语言的 picker.defaultNext     | -                       | N    | 下一级文本。              |
+| prevText     | String  | 当前语言的 picker.defaultPrev     | -                       | N    | 上一级文本。              |
+| showSelected | Boolean | false                             | true/false              | N    | 是否显示已选项。          |
+| selectedText | String  | 当前语言的 picker.defaultSelected | -                       | N    | 已选文本。                |
+| popup        | Object  | {}                                | 参考 Popup Props        | N    | 弹出层参数。              |
+| loading      | Object  | {}                                | 参考 Loading Props      | N    | 加载数据时 Loading 参数。 |
+
+## AsyncPicker Events
+
+| 名称    | 参数                                                                                                                             | 描述                   |
+| ------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
+| open    | -                                                                                                                                | 打开时触发。           |
+| close   | -                                                                                                                                | 关闭时触发。           |
+| cancel  | -                                                                                                                                | 点击左侧取消时触发。   |
+| prev    | -                                                                                                                                | 点击左侧上一级时触发。 |
+| next    | event:事件对象,其中 detail 内有一个参数 index,当前选定项在所在列的索引。                                                      | 点击右侧下一级时触发。 |
+| confirm | event:事件对象,其中 detail 内有两个参数:<br />1. items:选定多列数据组成的数组;<br />2. indexs:选定多列数据索引组成的数组。 | 点击右侧确定时触发。   |

+ 31 - 0
components/src/asyncPicker/api_en.md

@@ -0,0 +1,31 @@
+## AsyncPicker Props
+
+| Properties   | Type    | Default value                           | Optional value          | required | Description                           |
+| ------------ | ------- | --------------------------------------- | ----------------------- | ----------- | ------------------------------------- |
+| visible      | Boolean | false                                   | true/false              | N           | Whether to display.                   |
+| data         | Array   | []                                      | -                       | Y           | Column data.                          |
+| lastLevel    | Boolean | false                                   | true/false              | N           | Whether it is the last level.         |
+| firstLevel   | Boolean | false                                   | true/false              | N           | Whether it is the first level.        |
+| showRow      | Number  | 5                                       | 3/5/7                   | N           | Line display rows.                    |
+| labelKey     | String  | 'label'                                 | -                       | N           | Custom Label's key.                   |
+| align        | String  | 'center'                                | 'left'/'center'/'right' | N           | Alignment.                            |
+| cancelText   | String  | Current language picker.defaultCancel   | -                       | N           | Cancel the option text.               |
+| confirmText  | String  | Current language picker.defaultConfirm  | -                       | N           | Determine the option text.            |
+| title        | String  | Current language picker.defaultTitle    | -                       | N           | The middle title text.                |
+| nextText     | String  | Current language picker.defaultNext     | -                       | N           | Next text.                            |
+| prevText     | String  | Current language picker.defaultPrev     | -                       | N           | Previous text.                        |
+| showSelected | Boolean | false                                   | true/false              | N           | Whether to display the option.        |
+| selectedText | String  | Current language picker.defaultSelected | -                       | N           | Selected text.                        |
+| popup        | Object  | {}                                      | refer to Popup Props    | N           | Popping layer parameters.             |
+| loading      | Object  | {}                                      | refer to Loading Props  | N           | Loading parameters when loading data. |
+
+## AsyncPicker Events
+
+| Name    | Parameter                                                                                                                                                                                                    | Description                                                  |
+| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ |
+| open    | -                                                                                                                                                                                                            | Triggered when opening.                                      |
+| close   | -                                                                                                                                                                                                            | Triggered when closed.                                       |
+| cancel  | -                                                                                                                                                                                                            | Click on the left to be triggered.                           |
+| prev    | -                                                                                                                                                                                                            | Trip -triggered when you click on the left side of the left. |
+| next    | event: Event object, where there is a parameter INDEX in Detail, the index listed in the current selection item.                                                                                             | Triggered when clicking the next level on the right.         |
+| confirm | event: Event object, where there are two parameters in Detail: <br /> 1. times: Select the array composed of multiple columns of data; <br /> 2. indexs: Select the array of multiple lines of data indexes. | Click on the right side to trigger.                          |

+ 40 - 0
components/src/asyncPicker/guide.md

@@ -0,0 +1,40 @@
+## 使用场景
+
+AsyncPicker 组件使用场景类似于 Picker 多级联动,是为了解决下级数据根据上级数据从服务端查询的情况。例如:选择省级数据后,动态查询对应的市级数据,再选择市级数据后,动态查询对应的区级数据,以此类推。
+
+## 使用方式
+
+AsyncPicker 的使用对比 Picker 多级联动稍微有些复杂,因为数据不是一次性传入,而是通过接口动态获取,所以需要开发者自己处理数据。
+
+通过监听 next 和 prev 方法,更新当前列的新数据 data 并动态绑定至组件内部,同时需要动态绑定当前列是否是第一级 lastLevel,是否是最后一级 firstLevel。
+
+当数据是最后一级时,右侧按钮会触发 confirm 方法,返回选定的数据;当数据不是最后一级时,右侧按钮会触发 next 方法,返回当前选定项的索引值。
+
+## 返回数据
+
+AsyncPicker 组件最终返回的数据有两项,一项是选定的多列数据组成的数组 items,另一项是选定的多列数据的索引组成的数组 indexs,请按照需求选择使用。
+
+其中 items 每一项的数据结构与传入的数据结构一致,也方便开发者直接使用。
+
+## 使用优化
+
+实际开发中,多数情况下 AsyncPicker 的数据都是动态获取的,通常是通过接口获取,一般我们需要对传入的数据进行循环处理,以便于 AsyncPicker 组件能够正常使用。但这是一个比较繁琐且没必要的过程,因此 STDF 对 AsyncPicker 组件的入参作了一些优化,使得开发者可以直接传入接口返回的数据,而不需要做循环处理。
+
+-   可以通过动态绑定每次数据的 labelKey,自定义传入的每列数据 label 属性名,如果不传入则默认使用 'label',请参考示例。
+
+## 说明
+
+AsyncPicker 是在 Popup 基础上封装的,通过预先定义一些 Popup 的 Props 实现,因此可以通过传入 Popup 的属性来实现不同的效果。比如示例中通过设置 popup 的 radius 改变圆角风格。
+
+AsyncPicker 内加载数据时显示的 loading 是在 Loading 组件基础上封装的,可以通过传入 Loading 的属性来实现不同的效果。比如示例中通过设置 loading 的一些参数换了一个 loading 效果。
+
+## Radio、ActionSheet、IndexBar、Picker、AsyncPicker 区别
+
+Radio、Checkbox、ActionSheet、IndexBar、Picker、AsyncPicker 组件本质都是给出一系列数据,让用户进行数据选择或执行一些操作,但在使用上有一些区别:
+
+-   Radio 一般用于单选数据,数据量固定且较少,需要在 UI 界面上直接展示选项,方便用户在界面交互时对备选数据有个概览,比如性别选择。
+-   Checkbox 使用场景类似 Radio,但是可以多选。
+-   ActionSheet 一般用于选择之后立即执行一些操作,选项固定且较少,但不需要在 UI 界面上直接展示选项,比如做一些删除、修改等操作。
+-   IndexBar 一般用于选择单条数据,数据量非常大的动态数据,且已经对数据进行了分类索引,一般会用整个页面来展示。
+-   Picker 一般用于选择单条或多条数据,数据量较大或无法确定长度的动态数据,或用于一些联动数据的选择。**无论是否联动,数据在传入时已经是确定的。**
+-   AsyncPicker 一般用于选择多条数据,下级数据是根据上级数据动态获取的,比如服务端接口单次只返回一级数据,需要根据用户选择的一级数据再次请求接口获取下级数据。

+ 40 - 0
components/src/asyncPicker/guide_en.md

@@ -0,0 +1,40 @@
+## Usage Scenario
+
+The usage scenario of the AsyncPicker component is similar to a Picker with multiple levels of interdependence, which is designed to solve situations where lower level data is queried from the server based on upper level data selection. For example, after selecting data at the provincial level, corresponding data at the city level is queried dynamically, and then, after selecting city-level data, corresponding data at the district level is queried dynamically, and so on.
+
+## Usage
+
+Using the AsyncPicker component requires more steps than a Picker with multiple levels of interdependence, because the data is not passed in at once but rather obtained dynamically through an API, so developers need to handle the data themselves.
+
+By listening to the next and prev methods, update the new data "data" for the current column and dynamically bind it to the component's internal state. At the same time, you also need to dynamically bind whether the current column is the first level "lastLevel" and whether it is the last level "firstLevel".
+
+When the data is at the last level, clicking on the right button triggers the confirm method and returns the selected data. When the data is not at the last level, clicking on the right button triggers the next method and returns the index value of the current selection.
+
+## Returned Data
+
+The AsyncPicker component ultimately returns two pieces of data: an array "items" composed of multiple selected data columns, and another array "indexs" composed of the indexes of the multiple selected data columns. Use as needed.
+
+The data structure of each item in "items" is the same as the data structure passed in, which is convenient for developers to use directly.
+
+## Usage Optimization
+
+In actual development, the data of most AsyncPicker components is dynamically acquired, usually through an API. Normally, we need to loop through the passed-in data to make sure the AsyncPicker component can be used correctly. However, this is a somewhat cumbersome and unnecessary process, so STDF has optimized the input of the AsyncPicker component, allowing developers to directly pass in data returned by an API without needing to do looping themselves.
+
+-   LabelKey for each data item can be dynamically bound to customize the label attribute name for each column of data passed in. If not passed in, it defaults to "label". Please refer to the example.
+
+## Notes
+
+The AsyncPicker is wrapped based on Popup by defining some Popup Props in advance, so you can achieve different effects by passing in Popup properties. For example, in the example, we change the rounded corner style by setting the radius of the popup.
+
+The loading displayed when data is loaded in AsyncPicker is wrapped based on Loading, so you can achieve different effects by passing in Loading properties. For example, in the example, we changed the loading effect by setting some parameters of the loading.
+
+## Difference between Radio, ActionSheet, IndexBar, Picker, and AsyncPicker
+
+Radio, Checkbox, ActionSheet, IndexBar, Picker, and AsyncPicker components all essentially provide a series of data for users to select or perform certain operations, but they differ in usage:
+
+-   Radio is generally used to select a single data item, the number of options is fixed and relatively small. It needs to display the options directly on the UI interface, making it easy for users to have an overview of the available data while interacting with the interface, such as gender selection.
+-   Checkbox is used in a similar way as Radio, but allows multiple selections.
+-   ActionSheet is generally used to choose a set of options that will execute an operation immediately after selection. Options are fixed and relatively small, but do not need to be displayed directly on the UI interface, such as doing some deletion, modification and other operations.
+-   IndexBar is generally used to select a single item of data. It handles large amounts of dynamic data that has been indexed and classified into categories, and is generally reserved for a full webpage display.
+-   Picker is generally used to select one or multiple data items. Used for dynamic data with large or undefined length, or when selecting dependent data. **Regardless of whether it is dependent, the data is already determined when passed in.**
+-   AsyncPicker is generally used to select multiple data. Lower level data is obtained dynamically based on upper level data selection. For example, if the server API returns only one level of data at a time, the next level of data must be requested based on the upper level of data selected by the user.

+ 0 - 0
components/src/asyncPicker/version.md


+ 0 - 0
components/src/asyncPicker/version_en.md


+ 115 - 0
components/src/avatar/Avatar.svelte

@@ -0,0 +1,115 @@
+<script>
+    import Icon from '../icon/Icon.svelte';
+
+    // 图片地址
+    // image url
+    export let image = '';
+
+    // 替换文本
+    // replace text
+    export let alt = '';
+
+    // 替换Icon
+    // replace Icon
+    export let icon = { name: 'ri-user-3-line', theme: true, size: 32 };
+
+    // 替换文本大小
+    // replace text size
+    export let altSize = 'md';
+
+    // 圆角风格:none/base/xl/full
+    // radius style:none/base/xl/full
+    export let radius = 'base';
+
+    // 头像框大小,xs/sm/md/lg/xl
+    // avatar size:xs/sm/md/lg/xl
+    export let size = 'md';
+
+    // 头像图片大小,s/m/l
+    // avatar image size:s/m/l
+    export let imgSize = 'l';
+
+    // 边框风格:none/solid/dashed/dotted
+    // border style:none/solid/dashed/dotted
+    export let line = 'none';
+
+    // 注入CSS
+    // inject CSS
+    export let injClass = '';
+
+    // 圆角风格样式
+    // radius style
+    const radiusObj = {
+        none: 'rounded-none',
+        base: 'rounded',
+        xl: 'rounded-xl',
+        '2xl': 'rounded-2xl',
+        '3xl': 'rounded-3xl',
+        full: 'rounded-full',
+    };
+
+    // 头像框大小样式
+    // avatar size style
+    const sizeObj = {
+        xs: 'w-6 h-6',
+        sm: 'w-10 h-10',
+        md: 'w-16 h-16',
+        lg: 'w-20 h-20',
+        xl: 'w-32 h-32',
+    };
+
+    // 头像图片大小样式
+    // avatar image size style
+    const imgSizeObj = {
+        s: 'h-1/3 w-1/3',
+        m: 'h-2/3 w-2/3',
+        l: 'h-full w-full',
+    };
+
+    // 边框风格样式
+    // border style
+    const lineObj = {
+        none: '',
+        solid: 'border border-solid border-primary dark:border-dark',
+        dashed: 'border border-dashed border-primary dark:border-dark',
+        dotted: 'border border-dotted border-primary dark:border-dark',
+    };
+
+    // 替换文本大小样式
+    // replace text size style
+    const altSizeObj = {
+        xs: 'text-base',
+        sm: 'text-2xl',
+        md: 'text-4xl',
+        lg: 'text-6xl',
+        xl: 'text-8xl',
+    };
+</script>
+
+<div
+    class={`bg-primary/10 dark:bg-dark/20 flex justify-center overflow-hidden relative ${lineObj[line] || ''} ${
+        sizeObj[size] || sizeObj.md
+    } ${radiusObj[radius] || radiusObj.base} ${injClass}`}
+>
+    {#if image === '' && alt === ''}
+        <div class="m-auto">
+            <Icon {...icon} />
+        </div>
+    {:else if image === '' && alt !== ''}
+        <div
+            class={`text-center ${altSizeObj[altSize] || altSizeObj.base}`}
+            style="position: absolute;top: 50%;left:50%;transform: translate(-50%, -50%);"
+        >
+            {alt}
+        </div>
+    {:else}
+        <div class="m-auto text-center">
+            <img
+                src={image}
+                class={`object-cover inline-block ${imgSizeObj[imgSize] || imgSizeObj.l}`}
+                alt=""
+                style="position: absolute;top: 50%;left:50%;transform: translate(-50%, -50%);"
+            />
+        </div>
+    {/if}
+</div>

+ 1 - 0
components/src/avatar/FAQ.md

@@ -0,0 +1 @@
+

+ 1 - 0
components/src/avatar/FAQ_en.md

@@ -0,0 +1 @@
+

+ 19 - 0
components/src/avatar/api.md

@@ -0,0 +1,19 @@
+## Avatar Props
+
+| 属性       | 类型     | 默认值                                               | 可选值                                   | 必传  | 说明                  |
+|----------|--------|---------------------------------------------------|---------------------------------------|-----|---------------------|
+| image    | String | ''                                                | -                                     | N   | 图片路径。               |
+| alt      | String | ''                                                | -                                     | N   | 替换文本,建议单字。          |
+| icon     | Object | { name: 'ri-user-3-line', theme: true, size: 32 } | Icon Props                            | N   | 替换图标,传入 Icon Props。 |
+| altSize  | String | 'md'                                              | 'xs'/'sm'/'md'/'lg'/'xl'              | N   | 替换文本大小。             |
+| radius   | String | 'base'                                            | 'none'/'base'/'xl'/'2xl'/'3xl'/'full' | N   | 圆角风格。               |
+| size     | String | 'md'                                              | 'xs'/'sm'/'md'/'lg'/'xl'              | N   | 头像框大小。              |
+| imgSize  | String | 'l'                                               | 's'/'m'/'l'                           | N   | 头像图片大小。             |
+| line     | String | 'none'                                            | 'none'/'solid'/'dashed'/'dotted'      | N   | 边框风格。               |
+| injClass | String | ''                                                | Class                                 | N   | 注入 CSS 名称。          |
+
+## Avatar Events
+
+| 名称    | 参数  | 描述    |
+|-------|-----|-------|
+| click | -   | 点击触发。 |

+ 19 - 0
components/src/avatar/api_en.md

@@ -0,0 +1,19 @@
+## Avatar Props
+
+| Properties | Type   | Default value                                     | Optional value                        | required | Description                                  |
+| ---------- | ------ | ------------------------------------------------- | ------------------------------------- | ----------- | -------------------------------------------- |
+| image      | String | ''                                                | -                                     | N           | Picture path.                                |
+| alt        | String | ''                                                | -                                     | N           | Replace the text, it is recommended to word. |
+| icon       | Object | { name: 'ri-user-3-line', theme: true, size: 32 } | Icon Props                            | N           | Replace the icon and pass in Icon Props.     |
+| altSize    | String | 'md'                                              | 'xs'/'sm'/'md'/'lg'/'xl'              | N           | Replace the text size.                       |
+| radius     | String | 'base'                                            | 'none'/'base'/'xl'/'2xl'/'3xl'/'full' | N           | Round -corner style.                         |
+| size       | String | 'md'                                              | 'xs'/'sm'/'md'/'lg'/'xl'              | N           | The size of the avatar box.                  |
+| imgSize    | String | 'l'                                               | 's'/'m'/'l'                           | N           | Avatar picture size.                         |
+| line       | String | 'none'                                            | 'none'/'solid'/'dashed'/'dotted'      | N           | Border style.                                |
+| injClass   | String | ''                                                | Class                                 | N           | Inject the CSS name.                         |
+
+## Avatar Events
+
+| Name  | Parameter | Description       |
+| ----- | --------- | ----------------- |
+| click | -         | Click to trigger. |

+ 19 - 0
components/src/avatar/guide.md

@@ -0,0 +1,19 @@
+## 内容说明
+
+image 可以传入图片的相对路径或绝对路径,组件内部将其转换为 img 标签的 src 属性;alt 传入文字将直接显示;icon 传入 Icon Props 将使用 Icon 组件渲染头像框内容,请参考 Icon API;若 image、alt、icon 都不传,Avatar 组件会默认使用 Icon 组件显示一个用户图标。
+
+内容的可配置性结合其他对于样式调整的参数,Avatar 组件不仅仅适用于头像这一种业务场景了,请灵活使用。
+
+## 内容优先级
+
+image > alt > icon。
+
+## imgSize
+
+此参数决定头像框内部的图片占整个头像框的比例,三个档位 s、m、l 分别对应 1/3、2/3、铺满。多数业务场景都是铺满使用的,但是有些界面设计要求使用 png 格式图片,此时可能需要使用此参数调整使页面有呼吸感。
+
+## injClass
+
+通过 injClass 参数可以向组件内部 button 元素注入 CSS 名称(不仅限于 Tailwind CSS),这将使组件样式有更多自定义可能性,示例中通过 injClass 实现了自定义背景色和边框颜色。
+
+若注入的 class 没生效,请在注入的 class 名称前添加“!” ,可参考 [Tailwind Important modifier](https://tailwindcss.com/docs/configuration#important-modifier)。

+ 19 - 0
components/src/avatar/guide_en.md

@@ -0,0 +1,19 @@
+## Description
+
+The `Avatar` component can receive a relative or absolute path for `image`, which will be converted to the `src` attribute of the `img` tag inside the component. If `alt` is passed in, it will be displayed as text. If `icon` is passed in as `Icon Props`, the `Icon` component will be used to render the contents of the avatar. If none of `image`, `alt`, and `icon` are passed in, the `Avatar` component will default to using the `Icon` component to display a user icon.
+
+Combined with other parameters for style adjustments, the configurability of the content means that the `Avatar` component is not only suitable for the specific use case of displaying avatars, but can be used flexibly for other purposes as well.
+
+## Content Priority
+
+`image` > `alt` > `icon`
+
+## `imgSize`
+
+This parameter determines the proportion of the avatar frame that the image inside it takes up. The three levels of `s`, `m`, and `l` correspond to 1/3, 2/3, and full width, respectively. Most use cases require full width, but if the design requires the use of a PNG format image, this parameter may be used to adjust the breathing room of the image within the frame.
+
+## `injClass`
+
+The `injClass` parameter can be used to inject custom CSS class names (not limited to Tailwind CSS) into the `button` element inside the component. This allows for further customization of the component's appearance, as demonstrated in the example using `injClass` to customize the background and border colors.
+
+If the injected class name does not take effect, add a `!` before the class name, as demonstrated in the [Tailwind Important Modifier](https://tailwindcss.com/docs/configuration#important-modifier).

+ 0 - 0
components/src/avatar/version.md


+ 0 - 0
components/src/avatar/version_en.md


+ 74 - 0
components/src/badge/Badge.svelte

@@ -0,0 +1,74 @@
+<script>
+    // 徽标文案
+    // badge text
+    export let text = '';
+
+    // 圆角风格
+    // radius style
+    export let radius = 'full';
+
+    // 是否位于左侧
+    // is on the left
+    export let isLeft = false;
+
+    // 是否显示
+    // is show
+    export let isShow = true;
+
+    // 上下偏移量
+    // offset top
+    export let offsetY = 0;
+
+    // 左右偏移量
+    // offset left
+    export let offsetX = 0;
+
+    // 是否位于内部
+    // is inner
+    export let isInner = false;
+
+    // 注入CSS
+    // inject CSS
+    export let injClass = '';
+
+    // 圆角风格样式
+    // radius style
+    const radiusObj = {
+        full: ' rounded-full',
+        base: ' rounded',
+        none: ' rounded-none',
+        leftLeaf: ' rounded-full rounded-br-none',
+        rightLeaf: ' rounded-full rounded-bl-none',
+    };
+
+    // 通过radius配置圆角风格或叶形
+    // set radius style or leaf style by radius
+    $: radiusClass = radius === 'leaf' ? (isLeft ? radiusObj.leftLeaf : radiusObj.rightLeaf) : radiusObj[radius] || radiusObj.full;
+</script>
+
+{#if isInner}
+    <div
+        class={`px-1 text-xs text-white whitespace-nowrap${radiusClass}${
+            text === '' ? ' w-3 h-3' : ' '
+        } text-center leading-4 transition-all bg-[red]${injClass === '' ? '' : ` ${injClass}`}`}
+        style={`transform:${isShow ? ' scale(1)' : ' scale(0)'}`}
+    >
+        {text}
+    </div>
+{:else}
+    <div class="relative">
+        <slot />
+        <div
+            class={`absolute${text === '' ? ' -top-1.5' : ' -top-2'}${
+                isLeft ? ' left-0' : ' right-0'
+            } px-1 text-xs text-white whitespace-nowrap${radiusClass}${
+                text === '' ? ' w-3 h-3' : ' '
+            } text-center leading-4 transition-all bg-[red]${injClass === '' ? '' : ` ${injClass}`}`}
+            style={`transform: translateX(calc(${isLeft ? '-' : ''}50% ${isLeft ? '+' : '-'} ${offsetX}px)) translateY(${offsetY}px)${
+                isShow ? ' scale(1)' : ' scale(0)'
+            }`}
+        >
+            {text}
+        </div>
+    </div>
+{/if}

+ 1 - 0
components/src/badge/FAQ.md

@@ -0,0 +1 @@
+

+ 1 - 0
components/src/badge/FAQ_en.md

@@ -0,0 +1 @@
+

+ 18 - 0
components/src/badge/api.md

@@ -0,0 +1,18 @@
+## Badge Props
+
+| 属性     | 类型    | 默认值 | 可选值                      | 必传 | 说明                                         |
+| -------- | ------- | ------ | --------------------------- | ---- | -------------------------------------------- |
+| text     | String  | ''     | -                           | N    | 徽标文案。                                   |
+| radius   | String  | 'full' | 'full'/'base'/'none'/'leaf' | N    | 圆角风格。                                   |
+| isShow   | Boolean | true   | true/false                  | N    | 是否显示。                                   |
+| isInner  | Boolean | false  | true/false                  | N    | 是否位于内部。                               |
+| isLeft   | Boolean | false  | true/false                  | N    | 是否位于左侧(仅 isInner 为 false 时生效)。 |
+| offsetY  | Number  | 0      | -                           | N    | 上下偏移量(仅 isInner 为 false 时生效)。   |
+| offsetX  | Number  | 0      | -                           | N    | 左右偏移量(仅 isInner 为 false 时生效)。   |
+| injClass | String  | ''     | Class                       | N    | 注入 CSS 名称。                              |
+
+## Badge Slots
+
+| 名称 | 说 明                                          |
+| ---- | ---------------------------------------------- |
+| -    | isInner 为 false 时作为 Badge 相对位置的内容。 |

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác