chenrizhang hace 7 años
padre
commit
e1c90c46cb
Se han modificado 1 ficheros con 362 adiciones y 0 borrados
  1. 362 0
      lib/localizations.dart

+ 362 - 0
lib/localizations.dart

@@ -0,0 +1,362 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:async';
+
+import 'package:flutter/foundation.dart';
+import 'package:flutter/widgets.dart';
+
+/// Determines the order of the columns inside [CupertinoDatePicker] in
+/// time and date time mode.
+enum DatePickerDateTimeOrder {
+  /// Order of the columns, from left to right: date, hour, minute, am/pm.
+  ///
+  /// Example: [Fri Aug 31 | 02 | 08 | PM].
+  date_time_dayPeriod,
+  /// Order of the columns, from left to right: date, am/pm, hour, minute.
+  ///
+  /// Example: [Fri Aug 31 | PM | 02 | 08].
+  date_dayPeriod_time,
+  /// Order of the columns, from left to right: hour, minute, am/pm, date.
+  ///
+  /// Example: [02 | 08 | PM | Fri Aug 31].
+  time_dayPeriod_date,
+  /// Order of the columns, from left to right: am/pm, hour, minute, date.
+  ///
+  /// Example: [PM | 02 | 08 | Fri Aug 31].
+  dayPeriod_time_date,
+}
+
+/// Determines the order of the columns inside [CupertinoDatePicker] in date mode.
+enum DatePickerDateOrder {
+  /// Order of the columns, from left to right: day, month, year.
+  ///
+  /// Example: [12 | March | 1996]
+  dmy,
+  /// Order of the columns, from left to right: month, day, year.
+  ///
+  /// Example: [March | 12 | 1996]
+  mdy,
+  /// Order of the columns, from left to right: year, month, day.
+  ///
+  /// Example: [1996 | March | 12]
+  ymd,
+  /// Order of the columns, from left to right: year, day, month.
+  ///
+  /// Example: [1996 | 12 | March]
+  ydm,
+}
+
+/// Defines the localized resource values used by the Cupertino widgets.
+///
+/// See also:
+///
+///  * [DefaultCupertinoLocalizations], the default, English-only, implementation
+///    of this interface.
+// TODO(xster): Supply non-english strings.
+abstract class CupertinoLocalizations {
+  /// Year that is shown in [CupertinoDatePicker] spinner corresponding to the
+  /// given year index.
+  ///
+  /// Examples: datePickerYear(1) in:
+  ///
+  ///  - US English: 2018
+  ///  - Korean: 2018년
+  String datePickerYear(int yearIndex);
+
+  /// Month that is shown in [CupertinoDatePicker] spinner corresponding to
+  /// the given month index.
+  ///
+  /// Examples: datePickerMonth(1) in:
+  ///
+  ///  - US English: January
+  ///  - Korean: 1월
+  String datePickerMonth(int monthIndex);
+
+  /// Day of month that is shown in [CupertinoDatePicker] spinner corresponding
+  /// to the given day index.
+  ///
+  /// Examples: datePickerDayOfMonth(1) in:
+  ///
+  ///  - US English: 1
+  ///  - Korean: 1일
+  String datePickerDayOfMonth(int dayIndex);
+
+  /// The medium-width date format that is shown in [CupertinoDatePicker]
+  /// spinner. Abbreviates month and days of week.
+  ///
+  /// Examples:
+  ///
+  /// - US English: Wed Sep 27
+  /// - Russian: ср сент. 27
+  String datePickerMediumDate(DateTime date);
+
+  /// Hour that is shown in [CupertinoDatePicker] spinner corresponding
+  /// to the given hour value.
+  ///
+  /// Examples: datePickerHour(1) in:
+  ///
+  ///  - US English: 1
+  ///  - Arabic: ٠١
+  String datePickerHour(int hour);
+
+  /// Semantics label for the given hour value in [CupertinoDatePicker].
+  String datePickerHourSemanticsLabel(int hour);
+
+  /// Minute that is shown in [CupertinoDatePicker] spinner corresponding
+  /// to the given minute value.
+  ///
+  /// Examples: datePickerMinute(1) in:
+  ///
+  ///  - US English: 01
+  ///  - Arabic: ٠١
+  String datePickerMinute(int minute);
+
+  /// Semantics label for the given minute value in [CupertinoDatePicker].
+  String datePickerMinuteSemanticsLabel(int minute);
+
+  /// The order of the date elements that will be shown in [CupertinoDatePicker].
+  DatePickerDateOrder get datePickerDateOrder;
+
+  /// The order of the time elements that will be shown in [CupertinoDatePicker].
+  DatePickerDateTimeOrder get datePickerDateTimeOrder;
+
+  /// The abbreviation for ante meridiem (before noon) shown in the time picker.
+  String get anteMeridiemAbbreviation;
+
+  /// The abbreviation for post meridiem (after noon) shown in the time picker.
+  String get postMeridiemAbbreviation;
+
+  /// The term used by the system to announce dialog alerts.
+  String get alertDialogLabel;
+
+  /// Hour that is shown in [CupertinoCountdownTimerPicker] corresponding to
+  /// the given hour value.
+  ///
+  /// Examples: timerPickerHour(1) in:
+  ///
+  ///  - US English: 1
+  ///  - Arabic: ١
+  String timerPickerHour(int hour);
+
+  /// Minute that is shown in [CupertinoCountdownTimerPicker] corresponding to
+  /// the given minute value.
+  ///
+  /// Examples: timerPickerMinute(1) in:
+  ///
+  ///  - US English: 1
+  ///  - Arabic: ١
+  String timerPickerMinute(int minute);
+
+  /// Second that is shown in [CupertinoCountdownTimerPicker] corresponding to
+  /// the given second value.
+  ///
+  /// Examples: timerPickerSecond(1) in:
+  ///
+  ///  - US English: 1
+  ///  - Arabic: ١
+  String timerPickerSecond(int second);
+
+  /// Label that appears next to the hour picker in
+  /// [CupertinoCountdownTimerPicker] when selected hour value is `hour`.
+  /// This function will deal with pluralization based on the `hour` parameter.
+  String timerPickerHourLabel(int hour);
+
+  /// Label that appears next to the minute picker in
+  /// [CupertinoCountdownTimerPicker] when selected minute value is `minute`.
+  /// This function will deal with pluralization based on the `minute` parameter.
+  String timerPickerMinuteLabel(int minute);
+
+  /// Label that appears next to the minute picker in
+  /// [CupertinoCountdownTimerPicker] when selected minute value is `second`.
+  /// This function will deal with pluralization based on the `second` parameter.
+  String timerPickerSecondLabel(int second);
+
+  /// The term used for cutting
+  String get cutButtonLabel;
+
+  /// The term used for copying
+  String get copyButtonLabel;
+
+  /// The term used for pasting
+  String get pasteButtonLabel;
+
+  /// The term used for selecting everything
+  String get selectAllButtonLabel;
+
+  /// The `CupertinoLocalizations` from the closest [Localizations] instance
+  /// that encloses the given context.
+  ///
+  /// This method is just a convenient shorthand for:
+  /// `Localizations.of<CupertinoLocalizations>(context, CupertinoLocalizations)`.
+  ///
+  /// References to the localized resources defined by this class are typically
+  /// written in terms of this method. For example:
+  ///
+  /// ```dart
+  /// CupertinoLocalizations.of(context).anteMeridiemAbbreviation;
+  /// ```
+  static CupertinoLocalizations of(BuildContext context) {
+    return Localizations.of<CupertinoLocalizations>(context, CupertinoLocalizations);
+  }
+}
+
+class _CupertinoLocalizationsDelegate extends LocalizationsDelegate<CupertinoLocalizations> {
+  const _CupertinoLocalizationsDelegate();
+
+  @override
+  bool isSupported(Locale locale) => locale.languageCode == 'en';
+
+  @override
+  Future<CupertinoLocalizations> load(Locale locale) => DefaultCupertinoLocalizations.load(locale);
+
+  @override
+  bool shouldReload(_CupertinoLocalizationsDelegate old) => false;
+
+  @override
+  String toString() => 'DefaultCupertinoLocalizations.delegate(en_US)';
+}
+
+/// US English strings for the cupertino widgets.
+class DefaultCupertinoLocalizations implements CupertinoLocalizations {
+  /// Constructs an object that defines the cupertino widgets' localized strings
+  /// for US English (only).
+  ///
+  /// [LocalizationsDelegate] implementations typically call the static [load]
+  /// function, rather than constructing this class directly.
+  const DefaultCupertinoLocalizations();
+
+  static const List<String> _shortWeekdays = <String>[
+    'Mon',
+    'Tue',
+    'Wed',
+    'Thu',
+    'Fri',
+    'Sat',
+    'Sun',
+  ];
+
+  static const List<String> _shortMonths = <String>[
+    'Jan',
+    'Feb',
+    'Mar',
+    'Apr',
+    'May',
+    'Jun',
+    'Jul',
+    'Aug',
+    'Sep',
+    'Oct',
+    'Nov',
+    'Dec',
+  ];
+
+  static const List<String> _months = <String>[
+    'January',
+    'February',
+    'March',
+    'April',
+    'May',
+    'June',
+    'July',
+    'August',
+    'September',
+    'October',
+    'November',
+    'December',
+  ];
+
+
+
+  @override
+  String datePickerYear(int yearIndex) => yearIndex.toString();
+
+  @override
+  String datePickerMonth(int monthIndex) => _months[monthIndex - 1];
+
+  @override
+  String datePickerDayOfMonth(int dayIndex) => dayIndex.toString();
+
+  @override
+  String datePickerHour(int hour) => hour.toString();
+
+  @override
+  String datePickerHourSemanticsLabel(int hour) => hour.toString() + " o'clock";
+
+  @override
+  String datePickerMinute(int minute) => minute.toString().padLeft(2, '0');
+
+  @override
+  String datePickerMinuteSemanticsLabel(int minute) {
+    if (minute == 1)
+       return '1 minute';
+    return minute.toString() + ' minutes';
+  }
+
+  @override
+  String datePickerMediumDate(DateTime date) {
+    return '${_shortWeekdays[date.weekday - DateTime.monday]} '
+      '${_shortMonths[date.month - DateTime.january]} '
+      '${date.day.toString().padRight(2)}';
+  }
+
+  @override
+  DatePickerDateOrder get datePickerDateOrder => DatePickerDateOrder.mdy;
+
+  @override
+  DatePickerDateTimeOrder get datePickerDateTimeOrder => DatePickerDateTimeOrder.date_time_dayPeriod;
+
+  @override
+  String get anteMeridiemAbbreviation => 'AM';
+
+  @override
+  String get postMeridiemAbbreviation => 'PM';
+
+  @override
+  String get alertDialogLabel => 'Alert';
+
+  @override
+  String timerPickerHour(int hour) => hour.toString();
+
+  @override
+  String timerPickerMinute(int minute) => minute.toString();
+
+  @override
+  String timerPickerSecond(int second) => second.toString();
+
+  @override
+  String timerPickerHourLabel(int hour) => hour == 1 ? 'hour' : 'hours';
+
+  @override
+  String timerPickerMinuteLabel(int minute) => 'min';
+
+  @override
+  String timerPickerSecondLabel(int second) => 'sec';
+
+  @override
+  String get cutButtonLabel => 'Cut';
+
+  @override
+  String get copyButtonLabel => 'Copy';
+
+  @override
+  String get pasteButtonLabel => 'Paste';
+
+  @override
+  String get selectAllButtonLabel => 'Select All';
+
+  /// Creates an object that provides US English resource values for the
+  /// cupertino library widgets.
+  ///
+  /// The [locale] parameter is ignored.
+  ///
+  /// This method is typically used to create a [LocalizationsDelegate].
+  static Future<CupertinoLocalizations> load(Locale locale) {
+    return SynchronousFuture<CupertinoLocalizations>(const DefaultCupertinoLocalizations());
+  }
+
+  /// A [LocalizationsDelegate] that uses [DefaultCupertinoLocalizations.load]
+  /// to create an instance of this class.
+  static const LocalizationsDelegate<CupertinoLocalizations> delegate = _CupertinoLocalizationsDelegate();
+}