Localizations.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_localizations/flutter_localizations.dart';
  5. class ChineseCupertinoLocalizations implements CupertinoLocalizations {
  6. final LocalizationsDelegate<dynamic> materialDelegate = GlobalMaterialLocalizations.delegate;
  7. final LocalizationsDelegate<dynamic> widgetsDelegate = GlobalWidgetsLocalizations.delegate;
  8. final Locale local = const Locale('zh');
  9. MaterialLocalizations ml;
  10. Future<dynamic> init() async {
  11. ml = await materialDelegate.load(local);
  12. print(ml.pasteButtonLabel);
  13. }
  14. @override
  15. String get alertDialogLabel => ml.alertDialogLabel;
  16. @override
  17. String get anteMeridiemAbbreviation => ml.anteMeridiemAbbreviation;
  18. @override
  19. String get copyButtonLabel => ml.copyButtonLabel;
  20. @override
  21. String get cutButtonLabel => ml.cutButtonLabel;
  22. @override
  23. DatePickerDateOrder get datePickerDateOrder => DatePickerDateOrder.mdy;
  24. @override
  25. DatePickerDateTimeOrder get datePickerDateTimeOrder => DatePickerDateTimeOrder.date_time_dayPeriod;
  26. @override
  27. String datePickerDayOfMonth(int dayIndex) {
  28. return dayIndex.toString() + '日';
  29. }
  30. @override
  31. String datePickerHour(int hour) {
  32. return hour.toString().padLeft(2, '0');
  33. }
  34. @override
  35. String datePickerHourSemanticsLabel(int hour) {
  36. return '$hour' '时';
  37. }
  38. @override
  39. String datePickerMediumDate(DateTime date) {
  40. return ml.formatMediumDate(date);
  41. }
  42. @override
  43. String datePickerMinute(int minute) {
  44. return minute.toString().padLeft(2, '0');
  45. }
  46. @override
  47. String datePickerMinuteSemanticsLabel(int minute) {
  48. return '$minute' '分';
  49. }
  50. @override
  51. String datePickerMonth(int monthIndex) {
  52. return '$monthIndex' '月';
  53. }
  54. @override
  55. String datePickerYear(int yearIndex) {
  56. return yearIndex.toString() + '年';
  57. }
  58. @override
  59. String get pasteButtonLabel => ml.pasteButtonLabel;
  60. @override
  61. String get postMeridiemAbbreviation => ml.postMeridiemAbbreviation;
  62. @override
  63. String get selectAllButtonLabel => ml.selectAllButtonLabel;
  64. @override
  65. String timerPickerHour(int hour) {
  66. return hour.toString().padLeft(2, '0');
  67. }
  68. @override
  69. String timerPickerHourLabel(int hour) {
  70. return '$hour'.toString().padLeft(2, '0') + '时';
  71. }
  72. @override
  73. String timerPickerMinute(int minute) {
  74. return minute.toString().padLeft(2, '0');
  75. }
  76. @override
  77. String timerPickerMinuteLabel(int minute) {
  78. return minute.toString().padLeft(2, '0') + '分';
  79. }
  80. @override
  81. String timerPickerSecond(int second) {
  82. return second.toString().padLeft(2, '0');
  83. }
  84. @override
  85. String timerPickerSecondLabel(int second) {
  86. return second.toString().padLeft(2, '0') + '秒';
  87. }
  88. static const LocalizationsDelegate<CupertinoLocalizations> delegate = _ChineseDelegate();
  89. static Future<CupertinoLocalizations> load(Locale locale) async {
  90. final ChineseCupertinoLocalizations localizaltions = ChineseCupertinoLocalizations();
  91. await localizaltions.init();
  92. return SynchronousFuture<CupertinoLocalizations>(localizaltions);
  93. }
  94. }
  95. class _ChineseDelegate extends LocalizationsDelegate<CupertinoLocalizations> {
  96. const _ChineseDelegate();
  97. @override
  98. bool isSupported(Locale locale) {
  99. return locale.languageCode == 'zh';
  100. }
  101. @override
  102. Future<CupertinoLocalizations> load(Locale locale) {
  103. return ChineseCupertinoLocalizations.load(locale);
  104. }
  105. @override
  106. bool shouldReload(LocalizationsDelegate<CupertinoLocalizations> old) {
  107. return false;
  108. }
  109. }