You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

209 lines
6.0 KiB

import 'package:flutter/cupertino.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter/cupertino.dart';
class MyCupertinoLocalizations implements CupertinoLocalizations {
final CupertinoLocalizations _base;
MyCupertinoLocalizations(this._base);
// ✅ 只改这里:月份改阿拉伯数字
@override
String datePickerMonth(int monthIndex) => '$monthIndex月';
// ✅ 关键:日期顺序等必须继续用 zh_CN 的实现
@override
DatePickerDateOrder get datePickerDateOrder => _base.datePickerDateOrder;
@override
DatePickerDateTimeOrder get datePickerDateTimeOrder => _base.datePickerDateTimeOrder;
// ——下面全部转发给 _base(只列一部分示例,其余用 IDE 一键生成)——
@override
String get todayLabel => _base.todayLabel;
@override
String get alertDialogLabel => _base.alertDialogLabel;
@override
String get anteMeridiemAbbreviation => _base.anteMeridiemAbbreviation;
@override
String get postMeridiemAbbreviation => _base.postMeridiemAbbreviation;
@override
String get copyButtonLabel => _base.copyButtonLabel;
@override
String get cutButtonLabel => _base.cutButtonLabel;
@override
String get pasteButtonLabel => _base.pasteButtonLabel;
@override
String get selectAllButtonLabel => _base.selectAllButtonLabel;
@override
String get modalBarrierDismissLabel => _base.modalBarrierDismissLabel;
@override
String tabSemanticsLabel({required int tabIndex, required int tabCount}) =>
_base.tabSemanticsLabel(tabIndex: tabIndex, tabCount: tabCount);
@override
String datePickerDayOfMonth(int dayIndex, [int? weekDay]) =>
_base.datePickerDayOfMonth(dayIndex, weekDay);
@override
String datePickerYear(int yearIndex) => _base.datePickerYear(yearIndex);
@override
String datePickerMediumDate(DateTime date) => _base.datePickerMediumDate(date);
@override
String datePickerHour(int hour) => _base.datePickerHour(hour);
@override
String datePickerMinute(int minute) => _base.datePickerMinute(minute);
@override
String? datePickerHourSemanticsLabel(int hour) =>
_base.datePickerHourSemanticsLabel(hour);
@override
String? datePickerMinuteSemanticsLabel(int minute) =>
_base.datePickerMinuteSemanticsLabel(minute);
@override
String get searchTextFieldPlaceholderLabel => _base.searchTextFieldPlaceholderLabel;
@override
String get cancelButtonLabel => _base.cancelButtonLabel;
@override
// TODO: implement backButtonLabel
String get backButtonLabel => throw UnimplementedError();
@override
// TODO: implement clearButtonLabel
String get clearButtonLabel => throw UnimplementedError();
@override
String datePickerStandaloneMonth(int monthIndex) {
// TODO: implement datePickerStandaloneMonth
throw UnimplementedError();
}
@override
// TODO: implement lookUpButtonLabel
String get lookUpButtonLabel => throw UnimplementedError();
@override
// TODO: implement menuDismissLabel
String get menuDismissLabel => throw UnimplementedError();
@override
// TODO: implement noSpellCheckReplacementsLabel
String get noSpellCheckReplacementsLabel => throw UnimplementedError();
@override
// TODO: implement searchWebButtonLabel
String get searchWebButtonLabel => throw UnimplementedError();
@override
// TODO: implement shareButtonLabel
String get shareButtonLabel => throw UnimplementedError();
@override
String timerPickerHour(int hour) {
// TODO: implement timerPickerHour
throw UnimplementedError();
}
@override
String? timerPickerHourLabel(int hour) {
// TODO: implement timerPickerHourLabel
throw UnimplementedError();
}
@override
// TODO: implement timerPickerHourLabels
List<String> get timerPickerHourLabels => throw UnimplementedError();
@override
String timerPickerMinute(int minute) {
// TODO: implement timerPickerMinute
throw UnimplementedError();
}
@override
String? timerPickerMinuteLabel(int minute) {
// TODO: implement timerPickerMinuteLabel
throw UnimplementedError();
}
@override
// TODO: implement timerPickerMinuteLabels
List<String> get timerPickerMinuteLabels => throw UnimplementedError();
@override
String timerPickerSecond(int second) {
// TODO: implement timerPickerSecond
throw UnimplementedError();
}
@override
String? timerPickerSecondLabel(int second) {
// TODO: implement timerPickerSecondLabel
throw UnimplementedError();
}
@override
// TODO: implement timerPickerSecondLabels
List<String> get timerPickerSecondLabels => throw UnimplementedError();
@override
// TODO: implement collapsedHint
String get collapsedHint => throw UnimplementedError();
@override
// TODO: implement expandedHint
String get expandedHint => throw UnimplementedError();
@override
// TODO: implement expansionTileCollapsedHint
String get expansionTileCollapsedHint => throw UnimplementedError();
@override
// TODO: implement expansionTileCollapsedTapHint
String get expansionTileCollapsedTapHint => throw UnimplementedError();
@override
// TODO: implement expansionTileExpandedHint
String get expansionTileExpandedHint => throw UnimplementedError();
@override
// TODO: implement expansionTileExpandedTapHint
String get expansionTileExpandedTapHint => throw UnimplementedError();
// …其余所有成员:全部 `=> _base.xxx`
}
class ChineseArabicMonthDelegate extends LocalizationsDelegate<CupertinoLocalizations> {
const ChineseArabicMonthDelegate();
@override
bool isSupported(Locale locale) => locale.languageCode == 'zh';
@override
Future<CupertinoLocalizations> load(Locale locale) async {
// 这里的 GlobalCupertinoLocalizations.delegate 是 Flutter 官方提供的中文实现
// 我们先加载它,然后用我们的类包装一层
final CupertinoLocalizations delegate = await GlobalCupertinoLocalizations.delegate.load(locale);
return MyCupertinoLocalizations(delegate);
}
@override
bool shouldReload(ChineseArabicMonthDelegate old) => false;
}