// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file has been automatically generated. Please do not edit it manually.
// To regenerate the file, use:
// dart dev/tools/localization/bin/gen_localizations.dart --overwrite

import 'dart:collection';

import 'package:flutter/material.dart';
import 'package:intl/intl.dart' as intl;

import '../material_localizations.dart';

// The classes defined here encode all of the translations found in the
// `flutter_localizations/lib/src/l10n/*.arb` files.
//
// These classes are constructed by the [getMaterialTranslation] method at the
// bottom of this file, and used by the [_MaterialLocalizationsDelegate.load]
// method defined in `flutter_localizations/lib/src/material_localizations.dart`.

/// The translations for Afrikaans (`af`).
class MaterialLocalizationAf extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Afrikaans.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationAf({
    super.localeName = 'af',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Meer oor $applicationName';

  @override
  String get alertDialogLabel => 'Opletberig';

  @override
  String get anteMeridiemAbbreviation => 'vm.';

  @override
  String get backButtonTooltip => 'Terug';

  @override
  String get calendarModeButtonLabel => 'Skakel oor na kalender';

  @override
  String get cancelButtonLabel => 'KANSELLEER';

  @override
  String get closeButtonLabel => 'MAAK TOE';

  @override
  String get closeButtonTooltip => 'Maak toe';

  @override
  String get collapsedIconTapHint => 'Vou uit';

  @override
  String get continueButtonLabel => 'GAAN VOORT';

  @override
  String get copyButtonLabel => 'Kopieer';

  @override
  String get cutButtonLabel => 'Knip';

  @override
  String get dateHelpText => 'dd-mm-jjjj';

  @override
  String get dateInputLabel => 'Voer datum in';

  @override
  String get dateOutOfRangeLabel => 'Buite reeks.';

  @override
  String get datePickerHelpText => 'KIES DATUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Einddatum $fullDate';

  @override
  String get dateRangeEndLabel => 'Einddatum';

  @override
  String get dateRangePickerHelpText => 'KIES REEKS';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Begindatum $fullDate';

  @override
  String get dateRangeStartLabel => 'Begindatum';

  @override
  String get dateSeparator => '-';

  @override
  String get deleteButtonTooltip => 'Vee uit';

  @override
  String get dialModeButtonLabel => 'Skakel oor na wyserplaatkiesermodus';

  @override
  String get dialogLabel => 'Dialoog';

  @override
  String get drawerLabel => 'Navigasiekieslys';

  @override
  String get expandedIconTapHint => 'Vou in';

  @override
  String get firstPageTooltip => 'Eerste bladsy';

  @override
  String get hideAccountsLabel => 'Versteek rekeninge';

  @override
  String get inputDateModeButtonLabel => 'Skakel oor na invoer';

  @override
  String get inputTimeModeButtonLabel => 'Skakel oor na teksinvoermodus';

  @override
  String get invalidDateFormatLabel => 'Ongeldige formaat.';

  @override
  String get invalidDateRangeLabel => 'Ongeldige reeks.';

  @override
  String get invalidTimeLabel => "Voer 'n geldige tyd in";

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Spasie';

  @override
  String get lastPageTooltip => 'Laaste bladsy';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisensie';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisensies';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lisensies';

  @override
  String get menuBarMenuLabel => 'Kieslysbalkkieslys';

  @override
  String get modalBarrierDismissLabel => 'Maak toe';

  @override
  String get moreButtonTooltip => 'Nog';

  @override
  String get nextMonthTooltip => 'Volgende maand';

  @override
  String get nextPageTooltip => 'Volgende bladsy';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Maak navigasiekieslys oop';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow van $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow van ongeveer $rowCount';

  @override
  String get pasteButtonLabel => 'Plak';

  @override
  String get popupMenuLabel => 'Opspringkieslys';

  @override
  String get postMeridiemAbbreviation => 'nm.';

  @override
  String get previousMonthTooltip => 'Vorige maand';

  @override
  String get previousPageTooltip => 'Vorige bladsy';

  @override
  String get refreshIndicatorSemanticLabel => 'Herlaai';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 karakter oor';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount karakters oor';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Skuif af';

  @override
  String get reorderItemLeft => 'Skuif na links';

  @override
  String get reorderItemRight => 'Skuif na regs';

  @override
  String get reorderItemToEnd => 'Skuif na die einde';

  @override
  String get reorderItemToStart => 'Skuif na die begin';

  @override
  String get reorderItemUp => 'Skuif op';

  @override
  String get rowsPerPageTitle => 'Rye per bladsy:';

  @override
  String get saveButtonLabel => 'STOOR';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Soek';

  @override
  String get selectAllButtonLabel => 'Kies alles';

  @override
  String get selectYearSemanticsLabel => 'Kies jaar';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item is gekies';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount items is gekies';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Wys rekeninge';

  @override
  String get showMenuTooltip => 'Wys kieslys';

  @override
  String get signedInLabel => 'Aangemeld';

  @override
  String get tabLabelRaw => r'Oortjie $tabIndex van $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'KIES TYD';

  @override
  String get timePickerHourLabel => 'Uur';

  @override
  String get timePickerHourModeAnnouncement => 'Kies ure';

  @override
  String get timePickerInputHelpText => 'VOER TYD IN';

  @override
  String get timePickerMinuteLabel => 'Minuut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Kies minute';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Datumreeks';

  @override
  String get viewLicensesButtonLabel => 'BEKYK LISENSIES';
}

/// The translations for Amharic (`am`).
class MaterialLocalizationAm extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Amharic.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationAm({
    super.localeName = 'am',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'ስለ $applicationName';

  @override
  String get alertDialogLabel => 'ማንቂያ';

  @override
  String get anteMeridiemAbbreviation => 'ጥዋት';

  @override
  String get backButtonTooltip => 'ተመለስ';

  @override
  String get calendarModeButtonLabel => 'ወደ የቀን መቁጠሪያ ቀይር';

  @override
  String get cancelButtonLabel => 'ይቅር';

  @override
  String get closeButtonLabel => 'ዝጋ';

  @override
  String get closeButtonTooltip => 'ዝጋ';

  @override
  String get collapsedIconTapHint => 'ዘርጋ';

  @override
  String get continueButtonLabel => 'ቀጥል';

  @override
  String get copyButtonLabel => 'ቅዳ';

  @override
  String get cutButtonLabel => 'ቁረጥ';

  @override
  String get dateHelpText => 'ወወ/ቀቀ/ዓዓዓዓ';

  @override
  String get dateInputLabel => 'ቀን ያስገቡ';

  @override
  String get dateOutOfRangeLabel => 'ከክልል ውጪ።';

  @override
  String get datePickerHelpText => 'ቀን ይምረጡ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'የማብቂያ ቀን $fullDate';

  @override
  String get dateRangeEndLabel => 'የመጨረሻ ቀን';

  @override
  String get dateRangePickerHelpText => 'ክልል ይምረጡ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'የመጀመሪያ ቀን $fullDate';

  @override
  String get dateRangeStartLabel => 'የመጀመሪያ ቀን';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ሰርዝ';

  @override
  String get dialModeButtonLabel => 'ወደ መደወያ መራጭ ሁነታ ቀይር';

  @override
  String get dialogLabel => 'መገናኛ';

  @override
  String get drawerLabel => 'የዳሰሳ ምናሌ';

  @override
  String get expandedIconTapHint => 'ሰብስብ';

  @override
  String get firstPageTooltip => 'የመጀመሪያው ገጽ';

  @override
  String get hideAccountsLabel => 'መለያዎችን ደብቅ';

  @override
  String get inputDateModeButtonLabel => 'ወደ ግቤት ቀይር';

  @override
  String get inputTimeModeButtonLabel => 'ወደ ጽሑፍ ግቤት ሁነታ ቀይር';

  @override
  String get invalidDateFormatLabel => 'ልክ ያልሆነ ቅርጸት።';

  @override
  String get invalidDateRangeLabel => 'ልክ ያልኾነ ክልል።';

  @override
  String get invalidTimeLabel => 'የሚሠራ ሰዓት ያስገቡ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'የኋሊት መደምሰሻ';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'ጣቢያ ወደ ታች';

  @override
  String get keyboardKeyChannelUp => 'ጣቢያ ወደ ላይ';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'አስወጣ';

  @override
  String get keyboardKeyEnd => 'ጨርስ';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'መነሻ';

  @override
  String get keyboardKeyInsert => 'አስገባ';

  @override
  String get keyboardKeyMeta => 'ሜታ';

  @override
  String get keyboardKeyMetaMacOs => 'ትዕዛዝ';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => '+NUM';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'ኃይል';

  @override
  String get keyboardKeyPowerOff => 'ኃይል አጥፋ';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'ምረጥ';

  @override
  String get keyboardKeySpace => 'ክፍተት';

  @override
  String get lastPageTooltip => 'የመጨረሻው ገጽ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 ፈቃድ';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ፈቃዶች';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ፈቃዶች';

  @override
  String get menuBarMenuLabel => 'የምናሌ አሞሌ ምናሌ';

  @override
  String get modalBarrierDismissLabel => 'አሰናብት';

  @override
  String get moreButtonTooltip => 'ተጨማሪ';

  @override
  String get nextMonthTooltip => 'ቀጣይ ወር';

  @override
  String get nextPageTooltip => 'ቀጣይ ገጽ';

  @override
  String get okButtonLabel => 'እሺ';

  @override
  String get openAppDrawerTooltip => 'የዳሰሳ ምናሌን ክፈት';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow ከ$rowCount ውስጥ';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow ከ$rowCount ያህል ውስጥ';

  @override
  String get pasteButtonLabel => 'ለጥፍ';

  @override
  String get popupMenuLabel => 'የብቅ-ባይ ምናሌ';

  @override
  String get postMeridiemAbbreviation => 'ከሰዓት';

  @override
  String get previousMonthTooltip => 'ቀዳሚ ወር';

  @override
  String get previousPageTooltip => 'ቀዳሚ ገጽ';

  @override
  String get refreshIndicatorSemanticLabel => 'አድስ';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 ቁምፊ ይቀራል';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount ቁምፊዎች ይቀራሉ';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'ወደ ታች ውሰድ';

  @override
  String get reorderItemLeft => 'ወደ ግራ ውሰድ';

  @override
  String get reorderItemRight => 'ወደ ቀኝ ውሰድ';

  @override
  String get reorderItemToEnd => 'ወደ መጨረሻ ውሰድ';

  @override
  String get reorderItemToStart => 'ወደ መጀመሪያ ውሰድ';

  @override
  String get reorderItemUp => 'ወደ ላይ ውሰድ';

  @override
  String get rowsPerPageTitle => 'ረድፎች በገጽ፦';

  @override
  String get saveButtonLabel => 'አስቀምጥ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'ይፈልጉ';

  @override
  String get selectAllButtonLabel => 'ሁሉንም ምረጥ';

  @override
  String get selectYearSemanticsLabel => 'ዓመት ይምረጡ';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 ንጥል ተመርጧል';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount ንጥሎች ተመርጠዋል';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'መለያዎችን አሳይ';

  @override
  String get showMenuTooltip => 'ምናሌን አሳይ';

  @override
  String get signedInLabel => 'በመለያ ገብቷል';

  @override
  String get tabLabelRaw => r'ትር $tabIndex ከ$tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ጊዜ ይምረጡ';

  @override
  String get timePickerHourLabel => 'ሰዓት';

  @override
  String get timePickerHourModeAnnouncement => 'ሰዓታትን ምረጥ';

  @override
  String get timePickerInputHelpText => 'ሰዓት ያስገቡ';

  @override
  String get timePickerMinuteLabel => 'ደቂቃ';

  @override
  String get timePickerMinuteModeAnnouncement => 'ደቂቃዎችን ይምረጡ';

  @override
  String get unspecifiedDate => 'ቀን';

  @override
  String get unspecifiedDateRange => 'የቀኖች ርዝመት';

  @override
  String get viewLicensesButtonLabel => 'ፈቃዶችን ይመልከቱ';
}

/// The translations for Arabic (`ar`).
class MaterialLocalizationAr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Arabic.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationAr({
    super.localeName = 'ar',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'لمحة عن "$applicationName"';

  @override
  String get alertDialogLabel => 'تنبيه';

  @override
  String get anteMeridiemAbbreviation => 'ص';

  @override
  String get backButtonTooltip => 'رجوع';

  @override
  String get calendarModeButtonLabel => 'التبديل إلى التقويم';

  @override
  String get cancelButtonLabel => 'إلغاء';

  @override
  String get closeButtonLabel => 'إغلاق';

  @override
  String get closeButtonTooltip => 'إغلاق';

  @override
  String get collapsedIconTapHint => 'توسيع';

  @override
  String get continueButtonLabel => 'متابعة';

  @override
  String get copyButtonLabel => 'نسخ';

  @override
  String get cutButtonLabel => 'قص';

  @override
  String get dateHelpText => 'yyyy/mm/dd';

  @override
  String get dateInputLabel => 'إدخال التاريخ';

  @override
  String get dateOutOfRangeLabel => 'التاريخ خارج النطاق.';

  @override
  String get datePickerHelpText => 'اختيار التاريخ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'تاريخ الانتهاء $fullDate';

  @override
  String get dateRangeEndLabel => 'تاريخ الانتهاء';

  @override
  String get dateRangePickerHelpText => 'اختيار النطاق';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'تاريخ البدء $fullDate';

  @override
  String get dateRangeStartLabel => 'تاريخ البدء';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'حذف';

  @override
  String get dialModeButtonLabel => 'التبديل إلى وضع "منتقي قُرص الساعة"';

  @override
  String get dialogLabel => 'مربع حوار';

  @override
  String get drawerLabel => 'قائمة تنقل';

  @override
  String get expandedIconTapHint => 'تصغير';

  @override
  String get firstPageTooltip => 'الصفحة الأولى';

  @override
  String get hideAccountsLabel => 'إخفاء الحسابات';

  @override
  String get inputDateModeButtonLabel => 'التبديل إلى الإدخال';

  @override
  String get inputTimeModeButtonLabel => 'التبديل إلى وضع "إدخال النص"';

  @override
  String get invalidDateFormatLabel => 'التنسيق غير صالح.';

  @override
  String get invalidDateRangeLabel => 'النطاق غير صالح.';

  @override
  String get invalidTimeLabel => 'يُرجى إدخال وقت صالح.';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'القناة التالية';

  @override
  String get keyboardKeyChannelUp => 'القناة السابقة';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'الرقم 0';

  @override
  String get keyboardKeyNumpad1 => 'الرقم 1';

  @override
  String get keyboardKeyNumpad2 => 'الرقم 2';

  @override
  String get keyboardKeyNumpad3 => 'الرقم 3';

  @override
  String get keyboardKeyNumpad4 => 'الرقم 4';

  @override
  String get keyboardKeyNumpad5 => 'الرقم 5';

  @override
  String get keyboardKeyNumpad6 => 'الرقم 6';

  @override
  String get keyboardKeyNumpad7 => 'الرقم 7';

  @override
  String get keyboardKeyNumpad8 => 'الرقم 8';

  @override
  String get keyboardKeyNumpad9 => 'الرقم 9';

  @override
  String get keyboardKeyNumpadAdd => 'علامة الجمع +';

  @override
  String get keyboardKeyNumpadComma => 'الفاصلة ,';

  @override
  String get keyboardKeyNumpadDecimal => 'النقطة .';

  @override
  String get keyboardKeyNumpadDivide => 'علامة القسمة /';

  @override
  String get keyboardKeyNumpadEnter => 'المفتاح Enter';

  @override
  String get keyboardKeyNumpadEqual => 'علامة التساوي =';

  @override
  String get keyboardKeyNumpadMultiply => 'علامة الضرب *';

  @override
  String get keyboardKeyNumpadParenLeft => 'القوس الأيسر )';

  @override
  String get keyboardKeyNumpadParenRight => 'القوس الأيمن (';

  @override
  String get keyboardKeyNumpadSubtract => 'علامة الطرح -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'زر التشغيل';

  @override
  String get keyboardKeyPowerOff => 'زر الإطفاء';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'مفتاح الاختيار';

  @override
  String get keyboardKeySpace => 'مفتاح المسافة';

  @override
  String get lastPageTooltip => 'الصفحة الأخيرة';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount تراخيص';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount ترخيصًا';

  @override
  String? get licensesPackageDetailTextOne => 'ترخيص واحد';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ترخيص';

  @override
  String? get licensesPackageDetailTextTwo => r'ترخيصان ($licenseCount)';

  @override
  String? get licensesPackageDetailTextZero => 'ما مِن تراخيص';

  @override
  String get licensesPageTitle => 'التراخيص';

  @override
  String get menuBarMenuLabel => 'قائمة شريط القوائم';

  @override
  String get modalBarrierDismissLabel => 'رفض';

  @override
  String get moreButtonTooltip => 'المزيد';

  @override
  String get nextMonthTooltip => 'الشهر التالي';

  @override
  String get nextPageTooltip => 'الصفحة التالية';

  @override
  String get okButtonLabel => 'حسنًا';

  @override
  String get openAppDrawerTooltip => 'فتح قائمة التنقل';

  @override
  String get pageRowsInfoTitleRaw => r'من $firstRow إلى $lastRow من إجمالي $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'من $firstRow إلى $lastRow من إجمالي $rowCount تقريبًا';

  @override
  String get pasteButtonLabel => 'لصق';

  @override
  String get popupMenuLabel => 'قائمة منبثقة';

  @override
  String get postMeridiemAbbreviation => 'م';

  @override
  String get previousMonthTooltip => 'الشهر السابق';

  @override
  String get previousPageTooltip => 'الصفحة السابقة';

  @override
  String get refreshIndicatorSemanticLabel => 'إعادة تحميل';

  @override
  String? get remainingTextFieldCharacterCountFew => r'$remainingCount أحرف متبقية';

  @override
  String? get remainingTextFieldCharacterCountMany => r'$remainingCount حرفًا متبقيًا';

  @override
  String? get remainingTextFieldCharacterCountOne => 'حرف واحد متبقٍ';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount حرف متبقٍ';

  @override
  String? get remainingTextFieldCharacterCountTwo => r'حرفان ($remainingCount) متبقيان';

  @override
  String? get remainingTextFieldCharacterCountZero => 'لا أحرف متبقية';

  @override
  String get reorderItemDown => 'نقل لأسفل';

  @override
  String get reorderItemLeft => 'نقل لليمين';

  @override
  String get reorderItemRight => 'نقل لليسار';

  @override
  String get reorderItemToEnd => 'نقل إلى نهاية القائمة';

  @override
  String get reorderItemToStart => 'نقل إلى بداية القائمة';

  @override
  String get reorderItemUp => 'نقل لأعلى';

  @override
  String get rowsPerPageTitle => 'عدد الصفوف في الصفحة:';

  @override
  String get saveButtonLabel => 'حفظ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'بحث';

  @override
  String get selectAllButtonLabel => 'اختيار الكل';

  @override
  String get selectYearSemanticsLabel => 'اختيار العام';

  @override
  String? get selectedRowCountTitleFew => r'تم اختيار $selectedRowCount عنصر';

  @override
  String? get selectedRowCountTitleMany => r'تم اختيار $selectedRowCount عنصرًا';

  @override
  String? get selectedRowCountTitleOne => 'تم اختيار عنصر واحد';

  @override
  String get selectedRowCountTitleOther => r'تم اختيار $selectedRowCount عنصر';

  @override
  String? get selectedRowCountTitleTwo => r'تم اختيار عنصرين ($selectedRowCount)';

  @override
  String? get selectedRowCountTitleZero => 'لم يتم اختيار أي عنصر';

  @override
  String get showAccountsLabel => 'إظهار الحسابات';

  @override
  String get showMenuTooltip => 'عرض القائمة';

  @override
  String get signedInLabel => 'تم تسجيل الدخول';

  @override
  String get tabLabelRaw => r'علامة التبويب $tabIndex من $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'اختيار الوقت';

  @override
  String get timePickerHourLabel => 'ساعة';

  @override
  String get timePickerHourModeAnnouncement => 'اختيار الساعات';

  @override
  String get timePickerInputHelpText => 'إدخال الوقت';

  @override
  String get timePickerMinuteLabel => 'دقيقة';

  @override
  String get timePickerMinuteModeAnnouncement => 'اختيار الدقائق';

  @override
  String get unspecifiedDate => 'التاريخ';

  @override
  String get unspecifiedDateRange => 'النطاق الزمني';

  @override
  String get viewLicensesButtonLabel => 'الاطّلاع على التراخيص';
}

/// The translations for Assamese (`as`).
class MaterialLocalizationAs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Assamese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationAs({
    super.localeName = 'as',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationNameৰ বিষয়ে';

  @override
  String get alertDialogLabel => 'সতৰ্কবাৰ্তা';

  @override
  String get anteMeridiemAbbreviation => 'পূৰ্বাহ্ন';

  @override
  String get backButtonTooltip => 'উভতি যাওক';

  @override
  String get calendarModeButtonLabel => 'কেলেণ্ডাৰলৈ সলনি কৰক';

  @override
  String get cancelButtonLabel => 'বাতিল কৰক';

  @override
  String get closeButtonLabel => 'বন্ধ কৰক';

  @override
  String get closeButtonTooltip => 'বন্ধ কৰক';

  @override
  String get collapsedIconTapHint => 'বিস্তাৰ কৰক';

  @override
  String get continueButtonLabel => 'অব্যাহত ৰাখক';

  @override
  String get copyButtonLabel => 'প্ৰতিলিপি কৰক';

  @override
  String get cutButtonLabel => 'কাট কৰক';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'তাৰিখটো দিয়ক';

  @override
  String get dateOutOfRangeLabel => 'সীমাৰ বাহিৰত।';

  @override
  String get datePickerHelpText => 'তাৰিখ বাছনি কৰক';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'সমাপ্তিৰ তাৰিখ $fullDate';

  @override
  String get dateRangeEndLabel => 'সমাপ্তিৰ তাৰিখ';

  @override
  String get dateRangePickerHelpText => 'পৰিসৰ বাছনি কৰক';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'আৰম্ভণিৰ তাৰিখ $fullDate';

  @override
  String get dateRangeStartLabel => 'আৰম্ভণিৰ তাৰিখ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'মচক';

  @override
  String get dialModeButtonLabel => 'ডায়েল বাছনিকৰ্তাৰ ম’ডলৈ সলনি কৰক';

  @override
  String get dialogLabel => "ডায়ল'গ";

  @override
  String get drawerLabel => 'নেভিগেশ্বন মেনু';

  @override
  String get expandedIconTapHint => 'সংকোচন কৰক';

  @override
  String get firstPageTooltip => 'প্রথম পৃষ্ঠা';

  @override
  String get hideAccountsLabel => 'একাউণ্টসমূহ লুকুৱাওক';

  @override
  String get inputDateModeButtonLabel => 'ইনপুটলৈ সলনি কৰক';

  @override
  String get inputTimeModeButtonLabel => 'পাঠ ইনপুটৰ ম’ডলৈ সলনি কৰক';

  @override
  String get invalidDateFormatLabel => 'অমান্য ফৰ্মেট।';

  @override
  String get invalidDateRangeLabel => 'অমান্য পৰিসৰ।';

  @override
  String get invalidTimeLabel => 'এটা মান্য সময় দিয়ক';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'বেকস্পেচ';

  @override
  String get keyboardKeyCapsLock => 'কেপ্‌ছ লক';

  @override
  String get keyboardKeyChannelDown => 'চেনেল ডাউন';

  @override
  String get keyboardKeyChannelUp => 'চেনেল আপ';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'ইজেক্ট';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'মেটা';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'নং ০';

  @override
  String get keyboardKeyNumpad1 => 'নং ১';

  @override
  String get keyboardKeyNumpad2 => 'নং ২';

  @override
  String get keyboardKeyNumpad3 => 'নং ৩';

  @override
  String get keyboardKeyNumpad4 => 'নং ৪';

  @override
  String get keyboardKeyNumpad5 => 'নং ৫';

  @override
  String get keyboardKeyNumpad6 => 'নং ৬';

  @override
  String get keyboardKeyNumpad7 => 'নং ৭';

  @override
  String get keyboardKeyNumpad8 => 'নং ৮';

  @override
  String get keyboardKeyNumpad9 => 'নং ৯';

  @override
  String get keyboardKeyNumpadAdd => 'নং +';

  @override
  String get keyboardKeyNumpadComma => 'নং ,';

  @override
  String get keyboardKeyNumpadDecimal => 'নং .';

  @override
  String get keyboardKeyNumpadDivide => 'নং /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'নং =';

  @override
  String get keyboardKeyNumpadMultiply => 'নং *';

  @override
  String get keyboardKeyNumpadParenLeft => 'নং (';

  @override
  String get keyboardKeyNumpadParenRight => 'নং )';

  @override
  String get keyboardKeyNumpadSubtract => 'নং -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'পাৱাৰ';

  @override
  String get keyboardKeyPowerOff => 'পাৱাৰ অফ';

  @override
  String get keyboardKeyPrintScreen => 'প্ৰিণ্ট স্ক্ৰীন';

  @override
  String get keyboardKeyScrollLock => 'স্ক্ৰ’ল লক';

  @override
  String get keyboardKeySelect => 'ছিলেক্ট';

  @override
  String get keyboardKeySpace => 'স্পেচ';

  @override
  String get lastPageTooltip => 'অন্তিম পৃষ্ঠা';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '১ খন অনুজ্ঞাপত্ৰ';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount খন অনুজ্ঞাপত্ৰ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'অনুজ্ঞাপত্ৰসমূহ';

  @override
  String get menuBarMenuLabel => 'মেনু বাৰ মেনু';

  @override
  String get modalBarrierDismissLabel => 'অগ্ৰাহ্য কৰক';

  @override
  String get moreButtonTooltip => 'অধিক';

  @override
  String get nextMonthTooltip => 'পৰৱৰ্তী মাহ';

  @override
  String get nextPageTooltip => 'পৰৱৰ্তী পৃষ্ঠা';

  @override
  String get okButtonLabel => 'ঠিক আছে';

  @override
  String get openAppDrawerTooltip => 'নেভিগেশ্বন মেনু খোলক';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCountৰ $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$rowCountৰ $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => "পে'ষ্ট কৰক";

  @override
  String get popupMenuLabel => "প'পআপ মেনু";

  @override
  String get postMeridiemAbbreviation => 'অপৰাহ্ন';

  @override
  String get previousMonthTooltip => 'পূৰ্বৱৰ্তী মাহ';

  @override
  String get previousPageTooltip => 'পূৰ্বৱৰ্তী পৃষ্ঠা';

  @override
  String get refreshIndicatorSemanticLabel => 'ৰিফ্ৰেশ্ব কৰক';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '১টা বর্ণ বাকী আছে';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCountটা বর্ণ বাকী আছে';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'তললৈ স্থানান্তৰ কৰক';

  @override
  String get reorderItemLeft => 'বাওঁফাললৈ স্থানান্তৰ কৰক';

  @override
  String get reorderItemRight => 'সোঁফাললৈ স্থানান্তৰ কৰক';

  @override
  String get reorderItemToEnd => 'শেষলৈ স্থানান্তৰ কৰক';

  @override
  String get reorderItemToStart => 'আৰম্ভণিলৈ স্থানান্তৰ কৰক';

  @override
  String get reorderItemUp => 'ওপৰলৈ নিয়ক';

  @override
  String get rowsPerPageTitle => 'প্ৰতিটো পৃষ্ঠাত থকা শাৰী:';

  @override
  String get saveButtonLabel => 'ছেভ কৰক';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'সন্ধান কৰক';

  @override
  String get selectAllButtonLabel => 'সকলো বাছনি কৰক';

  @override
  String get selectYearSemanticsLabel => 'বছৰ বাছনি কৰক';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => "১টা বস্তু বাছনি কৰা হ'ল";

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCountটা বস্তু বাছনি কৰা হ’ল';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'একাউণ্টসমূহ দেখুৱাওক';

  @override
  String get showMenuTooltip => 'মেনুখন দেখুৱাওক';

  @override
  String get signedInLabel => 'ছাইন ইন কৰা হ’ল';

  @override
  String get tabLabelRaw => r'$tabCountৰ $tabIndexটা টেব';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'সময় বাছনি কৰক';

  @override
  String get timePickerHourLabel => 'ঘণ্টা';

  @override
  String get timePickerHourModeAnnouncement => 'সময় বাছনি কৰক';

  @override
  String get timePickerInputHelpText => 'সময় দিয়ক';

  @override
  String get timePickerMinuteLabel => 'মিনিট';

  @override
  String get timePickerMinuteModeAnnouncement => 'মিনিট বাছনি কৰক';

  @override
  String get unspecifiedDate => 'তাৰিখ';

  @override
  String get unspecifiedDateRange => 'তাৰিখৰ পৰিসৰ';

  @override
  String get viewLicensesButtonLabel => 'অনুজ্ঞাপত্ৰসমূহ চাওক';
}

/// The translations for Azerbaijani (`az`).
class MaterialLocalizationAz extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Azerbaijani.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationAz({
    super.localeName = 'az',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName haqqında';

  @override
  String get alertDialogLabel => 'Bildiriş';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Geri';

  @override
  String get calendarModeButtonLabel => 'Təqvimə keçin';

  @override
  String get cancelButtonLabel => 'LƏĞV EDİN';

  @override
  String get closeButtonLabel => 'BAĞLAYIN';

  @override
  String get closeButtonTooltip => 'Bağlayın';

  @override
  String get collapsedIconTapHint => 'Genişləndirin';

  @override
  String get continueButtonLabel => 'DAVAM EDİN';

  @override
  String get copyButtonLabel => 'Kopyalayın';

  @override
  String get cutButtonLabel => 'Kəsin';

  @override
  String get dateHelpText => 'aa.gg.iiii';

  @override
  String get dateInputLabel => 'Tarix daxil edin';

  @override
  String get dateOutOfRangeLabel => 'Aralıqdan kənar.';

  @override
  String get datePickerHelpText => 'TARİX SEÇİN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Bitmə tarixi: $fullDate';

  @override
  String get dateRangeEndLabel => 'Bitmə tarixi';

  @override
  String get dateRangePickerHelpText => 'ARALIQ SEÇİN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Başlama tarixi: $fullDate';

  @override
  String get dateRangeStartLabel => 'Başlama tarixi';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Silin';

  @override
  String get dialModeButtonLabel => 'Yığım seçici rejiminə keçin';

  @override
  String get dialogLabel => 'Dialoq';

  @override
  String get drawerLabel => 'Naviqasiya menyusu';

  @override
  String get expandedIconTapHint => 'Yığcamlaşdırın';

  @override
  String get firstPageTooltip => 'Birinci səhifə';

  @override
  String get hideAccountsLabel => 'Hesabları gizlədin';

  @override
  String get inputDateModeButtonLabel => 'Daxiletməyə keçin';

  @override
  String get inputTimeModeButtonLabel => 'Mətn daxiletmə rejiminə keçin';

  @override
  String get invalidDateFormatLabel => 'Yanlış format.';

  @override
  String get invalidDateRangeLabel => 'Yanlış aralıq.';

  @override
  String get invalidTimeLabel => 'Düzgün vaxt daxil edin';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Böyük Hərf';

  @override
  String get keyboardKeyChannelDown => 'Aşağıdakı kanala keçin';

  @override
  String get keyboardKeyChannelUp => 'Yuxarıdakı kanala keçin';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Çıxarın';

  @override
  String get keyboardKeyEnd => 'Son';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Əsas səhifə';

  @override
  String get keyboardKeyInsert => 'Daxil edin';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Əmr';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Rəqəm';

  @override
  String get keyboardKeyNumpad0 => 'Rəq 0';

  @override
  String get keyboardKeyNumpad1 => 'Rəq 1';

  @override
  String get keyboardKeyNumpad2 => 'Rəq 2';

  @override
  String get keyboardKeyNumpad3 => 'Rəq 3';

  @override
  String get keyboardKeyNumpad4 => 'Rəq 4';

  @override
  String get keyboardKeyNumpad5 => 'Rəq 5';

  @override
  String get keyboardKeyNumpad6 => 'Rəq 6';

  @override
  String get keyboardKeyNumpad7 => 'Rəq 7';

  @override
  String get keyboardKeyNumpad8 => 'Rəq 8';

  @override
  String get keyboardKeyNumpad9 => 'Rəq 9';

  @override
  String get keyboardKeyNumpadAdd => 'Rəq +';

  @override
  String get keyboardKeyNumpadComma => 'Rəq ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Rəq .';

  @override
  String get keyboardKeyNumpadDivide => 'Rəq /';

  @override
  String get keyboardKeyNumpadEnter => 'Rəqəm Daxiletmə';

  @override
  String get keyboardKeyNumpadEqual => 'Rəq =';

  @override
  String get keyboardKeyNumpadMultiply => 'Rəq *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Rəq (';

  @override
  String get keyboardKeyNumpadParenRight => 'Rəq )';

  @override
  String get keyboardKeyNumpadSubtract => 'Rəq -';

  @override
  String get keyboardKeyPageDown => 'Aşağı Səhifə';

  @override
  String get keyboardKeyPageUp => 'Yuxarı Səhifə';

  @override
  String get keyboardKeyPower => 'Qidalanma';

  @override
  String get keyboardKeyPowerOff => 'Söndürmə';

  @override
  String get keyboardKeyPrintScreen => 'Ekran Çapı';

  @override
  String get keyboardKeyScrollLock => 'Sürüşdürmə';

  @override
  String get keyboardKeySelect => 'Seçin';

  @override
  String get keyboardKeySpace => 'Boşluq';

  @override
  String get lastPageTooltip => 'Son səhifə';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisenziya';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisenziya';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lisenziyalar';

  @override
  String get menuBarMenuLabel => 'Menyu paneli menyusu';

  @override
  String get modalBarrierDismissLabel => 'İmtina edin';

  @override
  String get moreButtonTooltip => 'Daha çox';

  @override
  String get nextMonthTooltip => 'Növbəti ay';

  @override
  String get nextPageTooltip => 'Növbəti səhifə';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Naviqasiya menyusunu açın';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow/$rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow/ təxminən $rowCount';

  @override
  String get pasteButtonLabel => 'Yerləşdirin';

  @override
  String get popupMenuLabel => 'Popap menyusu';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Keçən ay';

  @override
  String get previousPageTooltip => 'Əvvəlki səhifə';

  @override
  String get refreshIndicatorSemanticLabel => 'Yeniləyin';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 simvol qalır';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount simvol qalır';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Aşağı köçürün';

  @override
  String get reorderItemLeft => 'Sola köçürün';

  @override
  String get reorderItemRight => 'Sağa köçürün';

  @override
  String get reorderItemToEnd => 'Sona köçürün';

  @override
  String get reorderItemToStart => 'Əvvələ köçürün';

  @override
  String get reorderItemUp => 'Yuxarı köçürün';

  @override
  String get rowsPerPageTitle => 'Hər səhifə üzrə sıra:';

  @override
  String get saveButtonLabel => 'YADDA SAXLAYIN';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Axtarın';

  @override
  String get selectAllButtonLabel => 'Hamısını seçin';

  @override
  String get selectYearSemanticsLabel => 'İl seçin';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 element seçildi';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount element seçildi';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Hesabları göstərin';

  @override
  String get showMenuTooltip => 'Menyunu göstərin';

  @override
  String get signedInLabel => 'Daxil olundu';

  @override
  String get tabLabelRaw => r'$tabIndex/$tabCount tab';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'VAXT SEÇİN';

  @override
  String get timePickerHourLabel => 'Saat';

  @override
  String get timePickerHourModeAnnouncement => 'Saat seçin';

  @override
  String get timePickerInputHelpText => 'VAXTI DAXİL EDİN';

  @override
  String get timePickerMinuteLabel => 'Dəqiqə';

  @override
  String get timePickerMinuteModeAnnouncement => 'Dəqiqə seçin';

  @override
  String get unspecifiedDate => 'Tarix';

  @override
  String get unspecifiedDateRange => 'Tarix aralığı';

  @override
  String get viewLicensesButtonLabel => 'LİSENZİYALARA BAXIN';
}

/// The translations for Belarusian (`be`).
class MaterialLocalizationBe extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Belarusian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationBe({
    super.localeName = 'be',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Інфармацыя пра праграму "$applicationName"';

  @override
  String get alertDialogLabel => 'Абвестка';

  @override
  String get anteMeridiemAbbreviation => 'раніцы';

  @override
  String get backButtonTooltip => 'Назад';

  @override
  String get calendarModeButtonLabel => 'Пераключыцца на каляндар';

  @override
  String get cancelButtonLabel => 'СКАСАВАЦЬ';

  @override
  String get closeButtonLabel => 'ЗАКРЫЦЬ';

  @override
  String get closeButtonTooltip => 'Закрыць';

  @override
  String get collapsedIconTapHint => 'Разгарнуць';

  @override
  String get continueButtonLabel => 'ПРАЦЯГНУЦЬ';

  @override
  String get copyButtonLabel => 'Капіраваць';

  @override
  String get cutButtonLabel => 'Выразаць';

  @override
  String get dateHelpText => 'дд.мм.гггг';

  @override
  String get dateInputLabel => 'Увядзіце дату';

  @override
  String get dateOutOfRangeLabel => 'Па-за межамі дыяпазону.';

  @override
  String get datePickerHelpText => 'ВЫБАР ДАТЫ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Дата заканчэння: $fullDate';

  @override
  String get dateRangeEndLabel => 'Дата заканчэння';

  @override
  String get dateRangePickerHelpText => 'ВЫБАР ДЫЯПАЗОНУ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Дата пачатку: $fullDate';

  @override
  String get dateRangeStartLabel => 'Дата пачатку';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Выдаліць';

  @override
  String get dialModeButtonLabel => 'Пераход у рэжым выбару часу';

  @override
  String get dialogLabel => 'Дыялогавае акно';

  @override
  String get drawerLabel => 'Меню навігацыі';

  @override
  String get expandedIconTapHint => 'Згарнуць';

  @override
  String get firstPageTooltip => 'На першую старонку';

  @override
  String get hideAccountsLabel => 'Схаваць уліковыя запісы';

  @override
  String get inputDateModeButtonLabel => 'Пераключыцца на ўвод тэксту';

  @override
  String get inputTimeModeButtonLabel => 'Пераход у рэжым уводу тэксту';

  @override
  String get invalidDateFormatLabel => 'Няправільны фармат.';

  @override
  String get invalidDateRangeLabel => 'Няправільны дыяпазон.';

  @override
  String get invalidTimeLabel => 'Увядзіце дапушчальны час';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Наступны канал';

  @override
  String get keyboardKeyChannelUp => 'Папярэдні канал';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Выняць';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Сілкаванне';

  @override
  String get keyboardKeyPowerOff => 'Выключыць';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Выбраць';

  @override
  String get keyboardKeySpace => 'Прабел';

  @override
  String get lastPageTooltip => 'На апошнюю старонку';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount ліцэнзіі';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount ліцэнзій';

  @override
  String? get licensesPackageDetailTextOne => '1 ліцэнзія';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ліцэнзіі';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Ліцэнзіі';

  @override
  String get menuBarMenuLabel => 'Меню "Панэль меню"';

  @override
  String get modalBarrierDismissLabel => 'Адхіліць';

  @override
  String get moreButtonTooltip => 'Яшчэ';

  @override
  String get nextMonthTooltip => 'Наступны месяц';

  @override
  String get nextPageTooltip => 'Наступная старонка';

  @override
  String get okButtonLabel => 'ОК';

  @override
  String get openAppDrawerTooltip => 'Адкрыць меню навігацыі';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow з $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow з прыблізна $rowCount';

  @override
  String get pasteButtonLabel => 'Уставіць';

  @override
  String get popupMenuLabel => 'Меню ўсплывальнага акна';

  @override
  String get postMeridiemAbbreviation => 'вечара';

  @override
  String get previousMonthTooltip => 'Папярэдні месяц';

  @override
  String get previousPageTooltip => 'Папярэдняя старонка';

  @override
  String get refreshIndicatorSemanticLabel => 'Абнавіць';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Засталося $remainingCount сімвалы';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Засталося $remainingCount сімвалаў';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Застаўся 1 сімвал';

  @override
  String get remainingTextFieldCharacterCountOther => r'Засталося $remainingCount сімвала';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Перамясціць уніз';

  @override
  String get reorderItemLeft => 'Перамясціць улева';

  @override
  String get reorderItemRight => 'Перамясціць управа';

  @override
  String get reorderItemToEnd => 'Перамясціць у канец';

  @override
  String get reorderItemToStart => 'Перамясціць у пачатак';

  @override
  String get reorderItemUp => 'Перамясціць уверх';

  @override
  String get rowsPerPageTitle => 'Радкоў на старонку:';

  @override
  String get saveButtonLabel => 'ЗАХАВАЦЬ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Пошук';

  @override
  String get selectAllButtonLabel => 'Выбраць усе';

  @override
  String get selectYearSemanticsLabel => 'Выберыце год';

  @override
  String? get selectedRowCountTitleFew => r'Выбрана $selectedRowCount элементы';

  @override
  String? get selectedRowCountTitleMany => r'Выбрана $selectedRowCount элементаў';

  @override
  String? get selectedRowCountTitleOne => 'Выбраны 1 элемент';

  @override
  String get selectedRowCountTitleOther => r'Выбрана $selectedRowCount элемента';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Паказаць уліковыя запісы';

  @override
  String get showMenuTooltip => 'Паказаць меню';

  @override
  String get signedInLabel => 'Уваход выкананы';

  @override
  String get tabLabelRaw => r'Укладка $tabIndex з $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ВЫБЕРЫЦЕ ЧАС';

  @override
  String get timePickerHourLabel => 'Гадзіна';

  @override
  String get timePickerHourModeAnnouncement => 'Выберыце гадзіны';

  @override
  String get timePickerInputHelpText => 'УВЯДЗІЦЕ ЧАС';

  @override
  String get timePickerMinuteLabel => 'Хвіліна';

  @override
  String get timePickerMinuteModeAnnouncement => 'Выберыце хвіліны';

  @override
  String get unspecifiedDate => 'Дата';

  @override
  String get unspecifiedDateRange => 'Дыяпазон дат';

  @override
  String get viewLicensesButtonLabel => 'ПАКАЗАЦЬ ЛІЦЭНЗІІ';
}

/// The translations for Bulgarian (`bg`).
class MaterialLocalizationBg extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Bulgarian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationBg({
    super.localeName = 'bg',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Всичко за $applicationName';

  @override
  String get alertDialogLabel => 'Сигнал';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Назад';

  @override
  String get calendarModeButtonLabel => 'Превключване към календара';

  @override
  String get cancelButtonLabel => 'ОТКАЗ';

  @override
  String get closeButtonLabel => 'ЗАТВАРЯНЕ';

  @override
  String get closeButtonTooltip => 'Затваряне';

  @override
  String get collapsedIconTapHint => 'Разгъване';

  @override
  String get continueButtonLabel => 'НАПРЕД';

  @override
  String get copyButtonLabel => 'Копиране';

  @override
  String get cutButtonLabel => 'Изрязване';

  @override
  String get dateHelpText => 'дд.мм.гггг';

  @override
  String get dateInputLabel => 'Въвеждане на дата';

  @override
  String get dateOutOfRangeLabel => 'Извън валидния период от време.';

  @override
  String get datePickerHelpText => 'ИЗБИРАНЕ НА ДАТА';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Крайна дата: $fullDate';

  @override
  String get dateRangeEndLabel => 'Крайна дата';

  @override
  String get dateRangePickerHelpText => 'ИЗБИРАНЕ НА ПЕРИОД ОТ ВРЕМЕ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Начална дата: $fullDate';

  @override
  String get dateRangeStartLabel => 'Начална дата';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Изтриване';

  @override
  String get dialModeButtonLabel => 'Превключване към режим за избор на циферблат';

  @override
  String get dialogLabel => 'Диалогов прозорец';

  @override
  String get drawerLabel => 'Меню за навигация';

  @override
  String get expandedIconTapHint => 'Свиване';

  @override
  String get firstPageTooltip => 'Първа страница';

  @override
  String get hideAccountsLabel => 'Скриване на профилите';

  @override
  String get inputDateModeButtonLabel => 'Превключване към въвеждане';

  @override
  String get inputTimeModeButtonLabel => 'Превключване към режим за въвеждане на текст';

  @override
  String get invalidDateFormatLabel => 'Невалиден формат.';

  @override
  String get invalidDateRangeLabel => 'Невалиден период от време.';

  @override
  String get invalidTimeLabel => 'Въведете валиден час';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Последна страница';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 лиценз';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount лиценза';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Лицензи';

  @override
  String get menuBarMenuLabel => 'Меню на лентата с менюта';

  @override
  String get modalBarrierDismissLabel => 'Отхвърляне';

  @override
  String get moreButtonTooltip => 'Още';

  @override
  String get nextMonthTooltip => 'Следващият месец';

  @override
  String get nextPageTooltip => 'Следващата страница';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Отваряне на менюто за навигация';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow от $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow от около $rowCount';

  @override
  String get pasteButtonLabel => 'Поставяне';

  @override
  String get popupMenuLabel => 'Изскачащо меню';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Предишният месец';

  @override
  String get previousPageTooltip => 'Предишната страница';

  @override
  String get refreshIndicatorSemanticLabel => 'Опресняване';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Остава 1 знак';

  @override
  String get remainingTextFieldCharacterCountOther => r'Остават $remainingCount знака';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Преместване надолу';

  @override
  String get reorderItemLeft => 'Преместване наляво';

  @override
  String get reorderItemRight => 'Преместване надясно';

  @override
  String get reorderItemToEnd => 'Преместване в края';

  @override
  String get reorderItemToStart => 'Преместване в началото';

  @override
  String get reorderItemUp => 'Преместване нагоре';

  @override
  String get rowsPerPageTitle => 'Редове на страница:';

  @override
  String get saveButtonLabel => 'ЗАПАЗВАНЕ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Търсене';

  @override
  String get selectAllButtonLabel => 'Избиране на всички';

  @override
  String get selectYearSemanticsLabel => 'Избиране на година';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Избран е 1 елемент';

  @override
  String get selectedRowCountTitleOther => r'Избрани са $selectedRowCount елемента';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Показване на профилите';

  @override
  String get showMenuTooltip => 'Показване на менюто';

  @override
  String get signedInLabel => 'В профила си сте';

  @override
  String get tabLabelRaw => r'Раздел $tabIndex от $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ИЗБЕРЕТЕ ЧАС';

  @override
  String get timePickerHourLabel => 'Час';

  @override
  String get timePickerHourModeAnnouncement => 'Избиране на часове';

  @override
  String get timePickerInputHelpText => 'ВЪВЕДЕТЕ ЧАС';

  @override
  String get timePickerMinuteLabel => 'Минута';

  @override
  String get timePickerMinuteModeAnnouncement => 'Избиране на минути';

  @override
  String get unspecifiedDate => 'Дата';

  @override
  String get unspecifiedDateRange => 'Период от време';

  @override
  String get viewLicensesButtonLabel => 'ПРЕГЛЕД НА ЛИЦЕНЗИТЕ';
}

/// The translations for Bengali Bangla (`bn`).
class MaterialLocalizationBn extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Bengali Bangla.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationBn({
    super.localeName = 'bn',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName সম্পর্কে';

  @override
  String get alertDialogLabel => 'সতর্কতা';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'ফিরে যান';

  @override
  String get calendarModeButtonLabel => 'ক্যালেন্ডার মোডে বদল করুন';

  @override
  String get cancelButtonLabel => 'বাতিল করুন';

  @override
  String get closeButtonLabel => 'বন্ধ করুন';

  @override
  String get closeButtonTooltip => 'বন্ধ করুন';

  @override
  String get collapsedIconTapHint => 'বড় করুন';

  @override
  String get continueButtonLabel => 'চালিয়ে যান';

  @override
  String get copyButtonLabel => 'কপি করুন';

  @override
  String get cutButtonLabel => 'কাট করুন';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => 'তারিখ লিখুন';

  @override
  String get dateOutOfRangeLabel => 'তারিখের ব্যাপ্তির বাইরে।';

  @override
  String get datePickerHelpText => 'তারিখ বেছে নিন';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'শেষ হওয়ার তারিখ $fullDate';

  @override
  String get dateRangeEndLabel => 'শেষ হওয়ার তারিখ';

  @override
  String get dateRangePickerHelpText => 'তারিখের ব্যাপ্তি বেছে নিন';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'শুরুর তারিখ $fullDate';

  @override
  String get dateRangeStartLabel => 'শুরুর তারিখ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'মুছে দিন';

  @override
  String get dialModeButtonLabel => 'ডায়াল বেছে নেওয়ার মোডে পাল্টান';

  @override
  String get dialogLabel => 'ডায়ালগ';

  @override
  String get drawerLabel => 'নেভিগেশান মেনু';

  @override
  String get expandedIconTapHint => 'আড়াল করুন';

  @override
  String get firstPageTooltip => 'প্রথম পৃষ্ঠা';

  @override
  String get hideAccountsLabel => 'অ্যাকাউন্টগুলি লুকান';

  @override
  String get inputDateModeButtonLabel => 'ইনপুট মোডে বদল করুন';

  @override
  String get inputTimeModeButtonLabel => 'টেক্সট ইনপুট মোডে পাল্টান';

  @override
  String get invalidDateFormatLabel => 'ভুল ফর্ম্যাট।';

  @override
  String get invalidDateRangeLabel => 'তারিখ সঠিক নয়।';

  @override
  String get invalidTimeLabel => 'সঠিক সময় লিখুন';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'আগের চ্যানেলে যান';

  @override
  String get keyboardKeyChannelUp => 'পরের চ্যানেলে যান';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'ইজেক্ট করুন';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'মেটা';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'বেছে নিন';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'শেষ পৃষ্ঠা';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '১টি লাইসেন্স';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCountটি লাইসেন্স';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'লাইসেন্স';

  @override
  String get menuBarMenuLabel => 'মেনু বার মেনু';

  @override
  String get modalBarrierDismissLabel => 'খারিজ করুন';

  @override
  String get moreButtonTooltip => 'আরও';

  @override
  String get nextMonthTooltip => 'পরের মাস';

  @override
  String get nextPageTooltip => 'পরের পৃষ্ঠা';

  @override
  String get okButtonLabel => 'ঠিক আছে';

  @override
  String get openAppDrawerTooltip => 'নেভিগেশন মেনু খুলুন';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCountটির মধ্যে $firstRow-$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'প্রায় $rowCountটির মধ্যে $firstRow-$lastRow নম্বর';

  @override
  String get pasteButtonLabel => 'পেস্ট করুন';

  @override
  String get popupMenuLabel => 'পপ-আপ মেনু';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'আগের মাস';

  @override
  String get previousPageTooltip => 'আগের পৃষ্ঠা';

  @override
  String get refreshIndicatorSemanticLabel => 'রিফ্রেশ করুন';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'আর ১টি অক্ষর লেখা যাবে';

  @override
  String get remainingTextFieldCharacterCountOther => r'আর $remainingCountটি অক্ষর লেখা যাবে';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'নিচের দিকে সরান';

  @override
  String get reorderItemLeft => 'বাঁদিকে সরান';

  @override
  String get reorderItemRight => 'ডানদিকে সরান';

  @override
  String get reorderItemToEnd => 'একদম শেষের দিকে যান';

  @override
  String get reorderItemToStart => 'চালু করতে সরান';

  @override
  String get reorderItemUp => 'উপরের দিকে সরান';

  @override
  String get rowsPerPageTitle => 'প্রতি পৃষ্ঠায় সারির সংখ্যা:';

  @override
  String get saveButtonLabel => 'সেভ করুন';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'খুঁজুন';

  @override
  String get selectAllButtonLabel => 'সব বেছে নিন';

  @override
  String get selectYearSemanticsLabel => 'বছর বেছে নিন';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '১টি আইটেম বেছে নেওয়া হয়েছে';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCountটি আইটেম বেছে নেওয়া হয়েছে';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'অ্যাকাউন্টগুলি দেখান';

  @override
  String get showMenuTooltip => 'মেনু দেখান';

  @override
  String get signedInLabel => 'সাইন-ইন করা হয়েছে';

  @override
  String get tabLabelRaw => r'$tabCount-এর মধ্যে $tabIndexটি ট্যাব';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'সময় বেছে নিন';

  @override
  String get timePickerHourLabel => 'ঘণ্টা';

  @override
  String get timePickerHourModeAnnouncement => 'ঘণ্টা বেছে নিন';

  @override
  String get timePickerInputHelpText => 'সময় লিখুন';

  @override
  String get timePickerMinuteLabel => 'মিনিট';

  @override
  String get timePickerMinuteModeAnnouncement => 'মিনিট বেছে নিন';

  @override
  String get unspecifiedDate => 'তারিখ';

  @override
  String get unspecifiedDateRange => 'তারিখের ব্যাপ্তি';

  @override
  String get viewLicensesButtonLabel => 'লাইসেন্স দেখুন';
}

/// The translations for Bosnian (`bs`).
class MaterialLocalizationBs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Bosnian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationBs({
    super.localeName = 'bs',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'O aplikaciji $applicationName';

  @override
  String get alertDialogLabel => 'Upozorenje';

  @override
  String get anteMeridiemAbbreviation => 'prijepodne';

  @override
  String get backButtonTooltip => 'Nazad';

  @override
  String get calendarModeButtonLabel => 'Prebacite na kalendar';

  @override
  String get cancelButtonLabel => 'OTKAŽI';

  @override
  String get closeButtonLabel => 'ZATVORI';

  @override
  String get closeButtonTooltip => 'Zatvaranje';

  @override
  String get collapsedIconTapHint => 'Proširi';

  @override
  String get continueButtonLabel => 'NASTAVI';

  @override
  String get copyButtonLabel => 'Kopiraj';

  @override
  String get cutButtonLabel => 'Izreži';

  @override
  String get dateHelpText => 'dd. mm. gggg.';

  @override
  String get dateInputLabel => 'Unesite datum';

  @override
  String get dateOutOfRangeLabel => 'Izvan raspona.';

  @override
  String get datePickerHelpText => 'ODABERITE DATUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Datum završetka: $fullDate';

  @override
  String get dateRangeEndLabel => 'Datum završetka';

  @override
  String get dateRangePickerHelpText => 'ODABERITE RASPON';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Datum početka: $fullDate';

  @override
  String get dateRangeStartLabel => 'Datum početka';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Brisanje';

  @override
  String get dialModeButtonLabel => 'Prebacivanje na način rada alata za biranje';

  @override
  String get dialogLabel => 'Dijaloški okvir';

  @override
  String get drawerLabel => 'Meni za navigaciju';

  @override
  String get expandedIconTapHint => 'Suzi';

  @override
  String get firstPageTooltip => 'Prva stranica';

  @override
  String get hideAccountsLabel => 'Sakrij račune';

  @override
  String get inputDateModeButtonLabel => 'Prebacite na unos teksta';

  @override
  String get inputTimeModeButtonLabel => 'Prebacivanje na način rada unosa teksta';

  @override
  String get invalidDateFormatLabel => 'Nevažeći format.';

  @override
  String get invalidDateRangeLabel => 'Nevažeći raspon.';

  @override
  String get invalidTimeLabel => 'Unesite ispravno vrijeme';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'prethodni kanal';

  @override
  String get keyboardKeyChannelUp => 'sljedeći kanal';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Pg Down';

  @override
  String get keyboardKeyPageUp => 'Pg Up';

  @override
  String get keyboardKeyPower => 'tipka za uključivanje';

  @override
  String get keyboardKeyPowerOff => 'tipka za isključivanje';

  @override
  String get keyboardKeyPrintScreen => 'Prt Sc';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'tipka za razmak';

  @override
  String get lastPageTooltip => 'Posljednja stranica';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licence';

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licenca';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenci';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licence';

  @override
  String get menuBarMenuLabel => 'Meni trake menija';

  @override
  String get modalBarrierDismissLabel => 'Odbaci';

  @override
  String get moreButtonTooltip => 'Više';

  @override
  String get nextMonthTooltip => 'Sljedeći mjesec';

  @override
  String get nextPageTooltip => 'Sljedeća stranica';

  @override
  String get okButtonLabel => 'Uredu';

  @override
  String get openAppDrawerTooltip => 'Otvorite meni za navigaciju';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow od $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow od oko $rowCount';

  @override
  String get pasteButtonLabel => 'Zalijepi';

  @override
  String get popupMenuLabel => 'Skočni meni';

  @override
  String get postMeridiemAbbreviation => 'poslijepodne';

  @override
  String get previousMonthTooltip => 'Prethodni mjesec';

  @override
  String get previousPageTooltip => 'Prethodna stranica';

  @override
  String get refreshIndicatorSemanticLabel => 'Osvježi';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Još $remainingCount znaka';

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Još jedan znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Još $remainingCount znakova';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Pomjeri nadolje';

  @override
  String get reorderItemLeft => 'Pomjeri lijevo';

  @override
  String get reorderItemRight => 'Pomjeri desno';

  @override
  String get reorderItemToEnd => 'Pomjerite na kraj';

  @override
  String get reorderItemToStart => 'Pomjerite na početak';

  @override
  String get reorderItemUp => 'Pomjeri nagore';

  @override
  String get rowsPerPageTitle => 'Broj redova po stranici:';

  @override
  String get saveButtonLabel => 'SAČUVAJ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Pretražite';

  @override
  String get selectAllButtonLabel => 'Odaberi sve';

  @override
  String get selectYearSemanticsLabel => 'Odaberite godinu';

  @override
  String? get selectedRowCountTitleFew => r'Odabrane su $selectedRowCount stavke';

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Odabrana je jedna stavka';

  @override
  String get selectedRowCountTitleOther => r'Odabrano je $selectedRowCount stavki';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Prikaži račune';

  @override
  String get showMenuTooltip => 'Prikaži meni';

  @override
  String get signedInLabel => 'Prijavljeni ste';

  @override
  String get tabLabelRaw => r'$tabIndex. kartica od $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ODABERITE VRIJEME';

  @override
  String get timePickerHourLabel => 'Sat';

  @override
  String get timePickerHourModeAnnouncement => 'Odaberite sat';

  @override
  String get timePickerInputHelpText => 'UNESITE VRIJEME';

  @override
  String get timePickerMinuteLabel => 'Minuta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Odaberite minute';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Raspon datuma';

  @override
  String get viewLicensesButtonLabel => 'PRIKAŽI LICENCE';
}

/// The translations for Catalan Valencian (`ca`).
class MaterialLocalizationCa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Catalan Valencian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationCa({
    super.localeName = 'ca',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Sobre $applicationName';

  @override
  String get alertDialogLabel => 'Alerta';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Enrere';

  @override
  String get calendarModeButtonLabel => 'Canvia al calendari';

  @override
  String get cancelButtonLabel => 'CANCEL·LA';

  @override
  String get closeButtonLabel => 'TANCA';

  @override
  String get closeButtonTooltip => 'Tanca';

  @override
  String get collapsedIconTapHint => 'Desplega';

  @override
  String get continueButtonLabel => 'CONTINUA';

  @override
  String get copyButtonLabel => 'Copia';

  @override
  String get cutButtonLabel => 'Retalla';

  @override
  String get dateHelpText => 'mm/dd/aaaa';

  @override
  String get dateInputLabel => 'Introdueix una data';

  @override
  String get dateOutOfRangeLabel => "Fora de l'abast.";

  @override
  String get datePickerHelpText => 'SELECCIONA LA DATA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data de finalització $fullDate';

  @override
  String get dateRangeEndLabel => 'Data de finalització';

  @override
  String get dateRangePickerHelpText => "SELECCIONA L'INTERVAL";

  @override
  String get dateRangeStartDateSemanticLabelRaw => r"Data d'inici $fullDate";

  @override
  String get dateRangeStartLabel => "Data d'inici";

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Suprimeix';

  @override
  String get dialModeButtonLabel => 'Canvia al mode de selector de dial';

  @override
  String get dialogLabel => 'Diàleg';

  @override
  String get drawerLabel => 'Menú de navegació';

  @override
  String get expandedIconTapHint => 'Replega';

  @override
  String get firstPageTooltip => 'Primera pàgina';

  @override
  String get hideAccountsLabel => 'Amaga els comptes';

  @override
  String get inputDateModeButtonLabel => 'Canvia a introducció de text';

  @override
  String get inputTimeModeButtonLabel => "Canvia al mode d'introducció de text";

  @override
  String get invalidDateFormatLabel => 'El format no és vàlid.';

  @override
  String get invalidDateRangeLabel => "L'interval no és vàlid.";

  @override
  String get invalidTimeLabel => 'Introdueix una hora vàlida';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Retrocés';

  @override
  String get keyboardKeyCapsLock => 'Bloq Maj';

  @override
  String get keyboardKeyChannelDown => 'Canal següent';

  @override
  String get keyboardKeyChannelUp => 'Canal anterior';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Supr';

  @override
  String get keyboardKeyEject => 'Expulsa';

  @override
  String get keyboardKeyEnd => 'Fi';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Inici';

  @override
  String get keyboardKeyInsert => 'Inser';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Ordre';

  @override
  String get keyboardKeyMetaWindows => 'Windows';

  @override
  String get keyboardKeyNumLock => 'Bloq Núm';

  @override
  String get keyboardKeyNumpad0 => 'Núm. 0';

  @override
  String get keyboardKeyNumpad1 => 'Núm. 1';

  @override
  String get keyboardKeyNumpad2 => 'Núm. 2';

  @override
  String get keyboardKeyNumpad3 => 'Núm. 3';

  @override
  String get keyboardKeyNumpad4 => 'Núm. 4';

  @override
  String get keyboardKeyNumpad5 => 'Núm. 5';

  @override
  String get keyboardKeyNumpad6 => 'Núm. 6';

  @override
  String get keyboardKeyNumpad7 => 'Núm. 7';

  @override
  String get keyboardKeyNumpad8 => 'Núm. 8';

  @override
  String get keyboardKeyNumpad9 => 'Núm. 9';

  @override
  String get keyboardKeyNumpadAdd => 'Núm. +';

  @override
  String get keyboardKeyNumpadComma => 'Núm. ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Núm. .';

  @override
  String get keyboardKeyNumpadDivide => 'Núm. /';

  @override
  String get keyboardKeyNumpadEnter => 'Núm. Retorn';

  @override
  String get keyboardKeyNumpadEqual => 'Núm. =';

  @override
  String get keyboardKeyNumpadMultiply => 'Núm. *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Núm. (';

  @override
  String get keyboardKeyNumpadParenRight => 'Núm. )';

  @override
  String get keyboardKeyNumpadSubtract => 'Núm. -';

  @override
  String get keyboardKeyPageDown => 'Av Pàg';

  @override
  String get keyboardKeyPageUp => 'Re Pàg';

  @override
  String get keyboardKeyPower => 'Engegada';

  @override
  String get keyboardKeyPowerOff => 'Apagada';

  @override
  String get keyboardKeyPrintScreen => 'Impr Pant';

  @override
  String get keyboardKeyScrollLock => 'Bloq Despl';

  @override
  String get keyboardKeySelect => 'Selecciona';

  @override
  String get keyboardKeySpace => 'Espai';

  @override
  String get lastPageTooltip => 'Darrera pàgina';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 llicència';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount llicències';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Llicències';

  @override
  String get menuBarMenuLabel => 'Menú de la barra de menú';

  @override
  String get modalBarrierDismissLabel => 'Ignora';

  @override
  String get moreButtonTooltip => 'Més';

  @override
  String get nextMonthTooltip => 'Mes següent';

  @override
  String get nextPageTooltip => 'Pàgina següent';

  @override
  String get okButtonLabel => "D'ACORD";

  @override
  String get openAppDrawerTooltip => 'Obre el menú de navegació';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r"$firstRow-$lastRow d'aproximadament $rowCount";

  @override
  String get pasteButtonLabel => 'Enganxa';

  @override
  String get popupMenuLabel => 'Menú emergent';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Mes anterior';

  @override
  String get previousPageTooltip => 'Pàgina anterior';

  @override
  String get refreshIndicatorSemanticLabel => 'Actualitza';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Queda 1 caràcter';

  @override
  String get remainingTextFieldCharacterCountOther => r'Queden $remainingCount caràcters';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Mou avall';

  @override
  String get reorderItemLeft => "Mou cap a l'esquerra";

  @override
  String get reorderItemRight => 'Mou cap a la dreta';

  @override
  String get reorderItemToEnd => 'Mou al final';

  @override
  String get reorderItemToStart => 'Mou al principi';

  @override
  String get reorderItemUp => 'Mou amunt';

  @override
  String get rowsPerPageTitle => 'Files per pàgina:';

  @override
  String get saveButtonLabel => 'DESA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Cerca';

  @override
  String get selectAllButtonLabel => 'Selecciona-ho tot';

  @override
  String get selectYearSemanticsLabel => 'Selecciona un any';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => "S'ha seleccionat 1 element";

  @override
  String get selectedRowCountTitleOther => r"S'han seleccionat $selectedRowCount elements";

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Mostra els comptes';

  @override
  String get showMenuTooltip => 'Mostra el menú';

  @override
  String get signedInLabel => 'Sessió iniciada';

  @override
  String get tabLabelRaw => r'Pestanya $tabIndex de $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => "SELECCIONA L'HORA";

  @override
  String get timePickerHourLabel => 'Hora';

  @override
  String get timePickerHourModeAnnouncement => 'Selecciona les hores';

  @override
  String get timePickerInputHelpText => "INTRODUEIX L'HORA";

  @override
  String get timePickerMinuteLabel => 'Minut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Selecciona els minuts';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Interval de dates';

  @override
  String get viewLicensesButtonLabel => 'MOSTRA LES LLICÈNCIES';
}

/// The translations for Czech (`cs`).
class MaterialLocalizationCs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Czech.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationCs({
    super.localeName = 'cs',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'O aplikaci $applicationName';

  @override
  String get alertDialogLabel => 'Upozornění';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Zpět';

  @override
  String get calendarModeButtonLabel => 'Přepnout na kalendář';

  @override
  String get cancelButtonLabel => 'ZRUŠIT';

  @override
  String get closeButtonLabel => 'ZAVŘÍT';

  @override
  String get closeButtonTooltip => 'Zavřít';

  @override
  String get collapsedIconTapHint => 'Rozbalit';

  @override
  String get continueButtonLabel => 'POKRAČOVAT';

  @override
  String get copyButtonLabel => 'Kopírovat';

  @override
  String get cutButtonLabel => 'Vyjmout';

  @override
  String get dateHelpText => 'mm.dd.rrrr';

  @override
  String get dateInputLabel => 'Zadejte datum';

  @override
  String get dateOutOfRangeLabel => 'Mimo rozsah.';

  @override
  String get datePickerHelpText => 'VYBERTE DATUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Datum ukončení $fullDate';

  @override
  String get dateRangeEndLabel => 'Datum ukončení';

  @override
  String get dateRangePickerHelpText => 'VYBERTE ROZSAH';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Datum zahájení $fullDate';

  @override
  String get dateRangeStartLabel => 'Datum zahájení';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Smazat';

  @override
  String get dialModeButtonLabel => 'Přepnout na režim výběru času';

  @override
  String get dialogLabel => 'Dialogové okno';

  @override
  String get drawerLabel => 'Navigační nabídka';

  @override
  String get expandedIconTapHint => 'Sbalit';

  @override
  String get firstPageTooltip => 'První stránka';

  @override
  String get hideAccountsLabel => 'Skrýt účty';

  @override
  String get inputDateModeButtonLabel => 'Přepnout na zadávání';

  @override
  String get inputTimeModeButtonLabel => 'Přepnout na režim zadávání textu';

  @override
  String get invalidDateFormatLabel => 'Neplatný formát.';

  @override
  String get invalidDateRangeLabel => 'Neplatný rozsah.';

  @override
  String get invalidTimeLabel => 'Zadejte platný čas';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'O kanál dolů';

  @override
  String get keyboardKeyChannelUp => 'O kanál nahoru';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Odpojit';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Vypínač';

  @override
  String get keyboardKeyPowerOff => 'Vypnout';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Vybrat';

  @override
  String get keyboardKeySpace => 'Mezera';

  @override
  String get lastPageTooltip => 'Poslední stránka';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licence';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount licence';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencí';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licence';

  @override
  String get menuBarMenuLabel => 'Nabídka na liště s nabídkou';

  @override
  String get modalBarrierDismissLabel => 'Zavřít';

  @override
  String get moreButtonTooltip => 'Více';

  @override
  String get nextMonthTooltip => 'Další měsíc';

  @override
  String get nextPageTooltip => 'Další stránka';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Otevřít navigační nabídku';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow z $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow z asi $rowCount';

  @override
  String get pasteButtonLabel => 'Vložit';

  @override
  String get popupMenuLabel => 'Vyskakovací nabídka';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Předchozí měsíc';

  @override
  String get previousPageTooltip => 'Předchozí stránka';

  @override
  String get refreshIndicatorSemanticLabel => 'Obnovit';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Zbývají $remainingCount znaky';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Zbývá $remainingCount znaku';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Zbývá 1 znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Zbývá $remainingCount znaků';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Přesunout dolů';

  @override
  String get reorderItemLeft => 'Přesunout doleva';

  @override
  String get reorderItemRight => 'Přesunout doprava';

  @override
  String get reorderItemToEnd => 'Přesunout na konec';

  @override
  String get reorderItemToStart => 'Přesunout na začátek';

  @override
  String get reorderItemUp => 'Přesunout nahoru';

  @override
  String get rowsPerPageTitle => 'Počet řádků na stránku:';

  @override
  String get saveButtonLabel => 'ULOŽIT';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Hledat';

  @override
  String get selectAllButtonLabel => 'Vybrat vše';

  @override
  String get selectYearSemanticsLabel => 'Vyberte rok';

  @override
  String? get selectedRowCountTitleFew => r'Jsou vybrány $selectedRowCount položky';

  @override
  String? get selectedRowCountTitleMany => r'Je vybráno $selectedRowCount položky';

  @override
  String? get selectedRowCountTitleOne => 'Je vybrána 1 položka';

  @override
  String get selectedRowCountTitleOther => r'Je vybráno $selectedRowCount položek';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Zobrazit účty';

  @override
  String get showMenuTooltip => 'Zobrazit nabídku';

  @override
  String get signedInLabel => 'Uživatel přihlášen';

  @override
  String get tabLabelRaw => r'Karta $tabIndex z $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VYBERTE ČAS';

  @override
  String get timePickerHourLabel => 'Hodina';

  @override
  String get timePickerHourModeAnnouncement => 'Vyberte hodiny';

  @override
  String get timePickerInputHelpText => 'ZADEJTE ČAS';

  @override
  String get timePickerMinuteLabel => 'Minuta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Vyberte minuty';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Období';

  @override
  String get viewLicensesButtonLabel => 'ZOBRAZIT LICENCE';
}

/// The translations for Danish (`da`).
class MaterialLocalizationDa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Danish.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationDa({
    super.localeName = 'da',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Om $applicationName';

  @override
  String get alertDialogLabel => 'Underretning';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Tilbage';

  @override
  String get calendarModeButtonLabel => 'Skift til kalender';

  @override
  String get cancelButtonLabel => 'ANNULLER';

  @override
  String get closeButtonLabel => 'LUK';

  @override
  String get closeButtonTooltip => 'Luk';

  @override
  String get collapsedIconTapHint => 'Udvid';

  @override
  String get continueButtonLabel => 'FORTSÆT';

  @override
  String get copyButtonLabel => 'Kopiér';

  @override
  String get cutButtonLabel => 'Klip';

  @override
  String get dateHelpText => 'dd/mm/åååå';

  @override
  String get dateInputLabel => 'Angiv en dato';

  @override
  String get dateOutOfRangeLabel => 'Uden for rækkevidde.';

  @override
  String get datePickerHelpText => 'VÆLG DATO';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Slutdato $fullDate';

  @override
  String get dateRangeEndLabel => 'Slutdato';

  @override
  String get dateRangePickerHelpText => 'VÆLG OMRÅDE';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdato $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdato';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Slet';

  @override
  String get dialModeButtonLabel => 'Skift til urskivevælger';

  @override
  String get dialogLabel => 'Dialogboks';

  @override
  String get drawerLabel => 'Navigationsmenu';

  @override
  String get expandedIconTapHint => 'Skjul';

  @override
  String get firstPageTooltip => 'Første side';

  @override
  String get hideAccountsLabel => 'Skjul konti';

  @override
  String get inputDateModeButtonLabel => 'Skift til input';

  @override
  String get inputTimeModeButtonLabel => 'Skift til indtastning';

  @override
  String get invalidDateFormatLabel => 'Ugyldigt format.';

  @override
  String get invalidDateRangeLabel => 'Ugyldigt interval.';

  @override
  String get invalidTimeLabel => 'Angiv et gyldigt tidspunkt';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Skub ud';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDn';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Strøm';

  @override
  String get keyboardKeyPowerOff => 'Sluk';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Vælg';

  @override
  String get keyboardKeySpace => 'Mellemrumstasten';

  @override
  String get lastPageTooltip => 'Sidste side';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licens';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenser';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenser';

  @override
  String get menuBarMenuLabel => 'Menuen for menulinjen';

  @override
  String get modalBarrierDismissLabel => 'Afvis';

  @override
  String get moreButtonTooltip => 'Mere';

  @override
  String get nextMonthTooltip => 'Næste måned';

  @override
  String get nextPageTooltip => 'Næste side';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Åbn navigationsmenuen';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow af $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow af ca. $rowCount';

  @override
  String get pasteButtonLabel => 'Indsæt';

  @override
  String get popupMenuLabel => 'Pop op-menu';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Forrige måned';

  @override
  String get previousPageTooltip => 'Forrige side';

  @override
  String get refreshIndicatorSemanticLabel => 'Opdater';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Ét tegn tilbage';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount tegn tilbage';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Flyt ned';

  @override
  String get reorderItemLeft => 'Flyt til venstre';

  @override
  String get reorderItemRight => 'Flyt til højre';

  @override
  String get reorderItemToEnd => 'Flyt til sidst på listen';

  @override
  String get reorderItemToStart => 'Flyt til først på listen';

  @override
  String get reorderItemUp => 'Flyt op';

  @override
  String get rowsPerPageTitle => 'Rækker pr. side:';

  @override
  String get saveButtonLabel => 'GEM';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Søg';

  @override
  String get selectAllButtonLabel => 'Markér alt';

  @override
  String get selectYearSemanticsLabel => 'Vælg år';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 element er valgt';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elementer er valgt';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Vis konti';

  @override
  String get showMenuTooltip => 'Vis menu';

  @override
  String get signedInLabel => 'Logget ind';

  @override
  String get tabLabelRaw => r'Fane $tabIndex af $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VÆLG TIDSPUNKT';

  @override
  String get timePickerHourLabel => 'Time';

  @override
  String get timePickerHourModeAnnouncement => 'Vælg timer';

  @override
  String get timePickerInputHelpText => 'ANGIV TIDSPUNKT';

  @override
  String get timePickerMinuteLabel => 'Minut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Vælg minutter';

  @override
  String get unspecifiedDate => 'Dato';

  @override
  String get unspecifiedDateRange => 'Datointerval';

  @override
  String get viewLicensesButtonLabel => 'SE LICENSER';
}

/// The translations for German (`de`).
class MaterialLocalizationDe extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for German.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationDe({
    super.localeName = 'de',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Über $applicationName';

  @override
  String get alertDialogLabel => 'Benachrichtigung';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Zurück';

  @override
  String get calendarModeButtonLabel => 'Zum Kalender wechseln';

  @override
  String get cancelButtonLabel => 'ABBRECHEN';

  @override
  String get closeButtonLabel => 'SCHLIEẞEN';

  @override
  String get closeButtonTooltip => 'Schließen';

  @override
  String get collapsedIconTapHint => 'Maximieren';

  @override
  String get continueButtonLabel => 'WEITER';

  @override
  String get copyButtonLabel => 'Kopieren';

  @override
  String get cutButtonLabel => 'Ausschneiden';

  @override
  String get dateHelpText => 'tt.mm.jjjj';

  @override
  String get dateInputLabel => 'Datum eingeben';

  @override
  String get dateOutOfRangeLabel => 'Außerhalb des Zeitraums.';

  @override
  String get datePickerHelpText => 'DATUM AUSWÄHLEN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Enddatum $fullDate';

  @override
  String get dateRangeEndLabel => 'Enddatum';

  @override
  String get dateRangePickerHelpText => 'ZEITRAUM AUSWÄHLEN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdatum $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdatum';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Löschen';

  @override
  String get dialModeButtonLabel => 'Zur Uhrzeitauswahl wechseln';

  @override
  String get dialogLabel => 'Dialogfeld';

  @override
  String get drawerLabel => 'Navigationsmenü';

  @override
  String get expandedIconTapHint => 'Minimieren';

  @override
  String get firstPageTooltip => 'Erste Seite';

  @override
  String get hideAccountsLabel => 'Konten ausblenden';

  @override
  String get inputDateModeButtonLabel => 'Zur Texteingabe wechseln';

  @override
  String get inputTimeModeButtonLabel => 'Zum Texteingabemodus wechseln';

  @override
  String get invalidDateFormatLabel => 'Ungültiges Format.';

  @override
  String get invalidDateRangeLabel => 'Ungültiger Zeitraum.';

  @override
  String get invalidTimeLabel => 'Geben Sie eine gültige Uhrzeit ein';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Rücktaste';

  @override
  String get keyboardKeyCapsLock => 'Feststelltaste';

  @override
  String get keyboardKeyChannelDown => 'Vorheriger Kanal';

  @override
  String get keyboardKeyChannelUp => 'Nächster Kanal';

  @override
  String get keyboardKeyControl => 'Strg';

  @override
  String get keyboardKeyDelete => 'Entf';

  @override
  String get keyboardKeyEject => 'Auswerfen';

  @override
  String get keyboardKeyEnd => 'Ende';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Pos1';

  @override
  String get keyboardKeyInsert => 'Einfg';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Befehl';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Eingabetaste';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Bild ab';

  @override
  String get keyboardKeyPageUp => 'Bild auf';

  @override
  String get keyboardKeyPower => 'Ein/Aus';

  @override
  String get keyboardKeyPowerOff => 'Aus';

  @override
  String get keyboardKeyPrintScreen => 'Druck';

  @override
  String get keyboardKeyScrollLock => 'Rollen';

  @override
  String get keyboardKeySelect => 'Auswählen';

  @override
  String get keyboardKeySpace => 'Leertaste';

  @override
  String get lastPageTooltip => 'Letzte Seite';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 Lizenz';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount Lizenzen';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lizenzen';

  @override
  String get menuBarMenuLabel => 'Menü in der Menüleiste';

  @override
  String get modalBarrierDismissLabel => 'Schließen';

  @override
  String get moreButtonTooltip => 'Mehr';

  @override
  String get nextMonthTooltip => 'Nächster Monat';

  @override
  String get nextPageTooltip => 'Nächste Seite';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Navigationsmenü öffnen';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow von $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow von etwa $rowCount';

  @override
  String get pasteButtonLabel => 'Einsetzen';

  @override
  String get popupMenuLabel => 'Pop-up-Menü';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Vorheriger Monat';

  @override
  String get previousPageTooltip => 'Vorherige Seite';

  @override
  String get refreshIndicatorSemanticLabel => 'Aktualisieren';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Noch 1 Zeichen';

  @override
  String get remainingTextFieldCharacterCountOther => r'Noch $remainingCount Zeichen';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Nach unten verschieben';

  @override
  String get reorderItemLeft => 'Nach links verschieben';

  @override
  String get reorderItemRight => 'Nach rechts verschieben';

  @override
  String get reorderItemToEnd => 'An das Ende verschieben';

  @override
  String get reorderItemToStart => 'An den Anfang verschieben';

  @override
  String get reorderItemUp => 'Nach oben verschieben';

  @override
  String get rowsPerPageTitle => 'Zeilen pro Seite:';

  @override
  String get saveButtonLabel => 'SPEICHERN';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Suchen';

  @override
  String get selectAllButtonLabel => 'Alle auswählen';

  @override
  String get selectYearSemanticsLabel => 'Jahr auswählen';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 Element ausgewählt';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount Elemente ausgewählt';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Keine Objekte ausgewählt';

  @override
  String get showAccountsLabel => 'Konten anzeigen';

  @override
  String get showMenuTooltip => 'Menü anzeigen';

  @override
  String get signedInLabel => 'Angemeldet';

  @override
  String get tabLabelRaw => r'Tab $tabIndex von $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'UHRZEIT AUSWÄHLEN';

  @override
  String get timePickerHourLabel => 'Stunde';

  @override
  String get timePickerHourModeAnnouncement => 'Stunden auswählen';

  @override
  String get timePickerInputHelpText => 'ZEIT EINGEBEN';

  @override
  String get timePickerMinuteLabel => 'Minute';

  @override
  String get timePickerMinuteModeAnnouncement => 'Minuten auswählen';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Zeitraum';

  @override
  String get viewLicensesButtonLabel => 'LIZENZEN ANZEIGEN';
}

/// The translations for German, as used in Switzerland (`de_CH`).
class MaterialLocalizationDeCh extends MaterialLocalizationDe {
  /// Create an instance of the translation bundle for German, as used in Switzerland.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationDeCh({
    super.localeName = 'de_CH',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get invalidTimeLabel => 'Gib eine gültige Uhrzeit ein';

  @override
  String get dateOutOfRangeLabel => 'Ausserhalb des Zeitraums.';

  @override
  String get closeButtonTooltip => 'Schliessen';

  @override
  String get firstPageTooltip => 'First page';

  @override
  String get lastPageTooltip => 'Last page';

  @override
  String get modalBarrierDismissLabel => 'Schliessen';
}

/// The translations for Modern Greek (`el`).
class MaterialLocalizationEl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Modern Greek.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEl({
    super.localeName = 'el',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Σχετικά με την εφαρμογή $applicationName';

  @override
  String get alertDialogLabel => 'Ειδοποίηση';

  @override
  String get anteMeridiemAbbreviation => 'π.μ.';

  @override
  String get backButtonTooltip => 'Πίσω';

  @override
  String get calendarModeButtonLabel => 'Εναλλαγή σε ημερολόγιο';

  @override
  String get cancelButtonLabel => 'ΑΚΥΡΩΣΗ';

  @override
  String get closeButtonLabel => 'ΚΛΕΙΣΙΜΟ';

  @override
  String get closeButtonTooltip => 'Κλείσιμο';

  @override
  String get collapsedIconTapHint => 'Ανάπτυξη';

  @override
  String get continueButtonLabel => 'ΣΥΝΕΧΕΙΑ';

  @override
  String get copyButtonLabel => 'Αντιγραφή';

  @override
  String get cutButtonLabel => 'Αποκοπή';

  @override
  String get dateHelpText => 'μμ/ηη/εεεε';

  @override
  String get dateInputLabel => 'Εισαγωγή ημερομηνίας';

  @override
  String get dateOutOfRangeLabel => 'Εκτός εύρους τιμών.';

  @override
  String get datePickerHelpText => 'ΕΠΙΛΟΓΗ ΗΜΕΡΟΜΗΝΙΑΣ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Ημερομηνία λήξης $fullDate';

  @override
  String get dateRangeEndLabel => 'Ημερομηνία λήξης';

  @override
  String get dateRangePickerHelpText => 'ΕΠΙΛΟΓΗ ΕΥΡΟΥΣ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Ημερομηνία έναρξης $fullDate';

  @override
  String get dateRangeStartLabel => 'Ημερομηνία έναρξης';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Διαγραφή';

  @override
  String get dialModeButtonLabel => 'Εναλλαγή στη λειτουργία επιλογέα κλήσης';

  @override
  String get dialogLabel => 'Παράθυρο διαλόγου';

  @override
  String get drawerLabel => 'Μενού πλοήγησης';

  @override
  String get expandedIconTapHint => 'Σύμπτυξη';

  @override
  String get firstPageTooltip => 'Πρώτη σελίδα';

  @override
  String get hideAccountsLabel => 'Απόκρυψη λογαριασμών';

  @override
  String get inputDateModeButtonLabel => 'Εναλλαγή σε καταχώριση';

  @override
  String get inputTimeModeButtonLabel => 'Εναλλαγή στη λειτουργία εισαγωγής κειμένου';

  @override
  String get invalidDateFormatLabel => 'Μη έγκυρη μορφή.';

  @override
  String get invalidDateRangeLabel => 'Μη έγκυρο εύρος.';

  @override
  String get invalidTimeLabel => 'Εισαγάγετε μια έγκυρη ώρα';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Επόμενο κανάλι';

  @override
  String get keyboardKeyChannelUp => 'Προηγούμενο κανάλι';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Εξαγωγή';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Ενεργοποίηση';

  @override
  String get keyboardKeyPowerOff => 'Απενεργοποίηση';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Επιλογή';

  @override
  String get keyboardKeySpace => 'Διάστημα';

  @override
  String get lastPageTooltip => 'Τελευταία σελίδα';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 άδεια';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount άδειες';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Άδειες';

  @override
  String get menuBarMenuLabel => 'Μενού γραμμής μενού';

  @override
  String get modalBarrierDismissLabel => 'Παράβλεψη';

  @override
  String get moreButtonTooltip => 'Περισσότερα';

  @override
  String get nextMonthTooltip => 'Επόμενος μήνας';

  @override
  String get nextPageTooltip => 'Επόμενη σελίδα';

  @override
  String get okButtonLabel => 'ΟΚ';

  @override
  String get openAppDrawerTooltip => 'Άνοιγμα μενού πλοήγησης';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow από $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow από περίπου $rowCount';

  @override
  String get pasteButtonLabel => 'Επικόλληση';

  @override
  String get popupMenuLabel => 'Αναδυόμενο μενού';

  @override
  String get postMeridiemAbbreviation => 'μ.μ.';

  @override
  String get previousMonthTooltip => 'Προηγούμενος μήνας';

  @override
  String get previousPageTooltip => 'Προηγούμενη σελίδα';

  @override
  String get refreshIndicatorSemanticLabel => 'Ανανέωση';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'απομένει 1 χαρακτήρας';

  @override
  String get remainingTextFieldCharacterCountOther => r'απομένουν $remainingCount χαρακτήρες';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Μετακίνηση προς τα κάτω';

  @override
  String get reorderItemLeft => 'Μετακίνηση αριστερά';

  @override
  String get reorderItemRight => 'Μετακίνηση δεξιά';

  @override
  String get reorderItemToEnd => 'Μετακίνηση στο τέλος';

  @override
  String get reorderItemToStart => 'Μετακίνηση στην αρχή';

  @override
  String get reorderItemUp => 'Μετακίνηση προς τα πάνω';

  @override
  String get rowsPerPageTitle => 'Σειρές ανά σελίδα:';

  @override
  String get saveButtonLabel => 'ΑΠΟΘΗΚΕΥΣΗ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Αναζήτηση';

  @override
  String get selectAllButtonLabel => 'Επιλογή όλων';

  @override
  String get selectYearSemanticsLabel => 'Επιλογή έτους';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Επιλέχθηκε 1 στοιχείο';

  @override
  String get selectedRowCountTitleOther => r'Επιλέχθηκαν $selectedRowCount στοιχεία';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Εμφάνιση λογαριασμών';

  @override
  String get showMenuTooltip => 'Εμφάνιση μενού';

  @override
  String get signedInLabel => 'Σε σύνδεση';

  @override
  String get tabLabelRaw => r'Καρτέλα $tabIndex από $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ΕΠΙΛΟΓΗ ΩΡΑΣ';

  @override
  String get timePickerHourLabel => 'Ώρα';

  @override
  String get timePickerHourModeAnnouncement => 'Επιλογή ωρών';

  @override
  String get timePickerInputHelpText => 'ΕΙΣΑΓΩΓΗ ΩΡΑΣ';

  @override
  String get timePickerMinuteLabel => 'Λεπτό';

  @override
  String get timePickerMinuteModeAnnouncement => 'Επιλογή λεπτών';

  @override
  String get unspecifiedDate => 'Ημερομηνία';

  @override
  String get unspecifiedDateRange => 'Εύρος ημερομηνιών';

  @override
  String get viewLicensesButtonLabel => 'ΠΡΟΒΟΛΗ ΑΔΕΙΩΝ';
}

/// The translations for English (`en`).
class MaterialLocalizationEn extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for English.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEn({
    super.localeName = 'en',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'About $applicationName';

  @override
  String get alertDialogLabel => 'Alert';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Back';

  @override
  String get calendarModeButtonLabel => 'Switch to calendar';

  @override
  String get cancelButtonLabel => 'CANCEL';

  @override
  String get closeButtonLabel => 'CLOSE';

  @override
  String get closeButtonTooltip => 'Close';

  @override
  String get collapsedIconTapHint => 'Expand';

  @override
  String get continueButtonLabel => 'CONTINUE';

  @override
  String get copyButtonLabel => 'Copy';

  @override
  String get cutButtonLabel => 'Cut';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Enter Date';

  @override
  String get dateOutOfRangeLabel => 'Out of range.';

  @override
  String get datePickerHelpText => 'SELECT DATE';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'End date $fullDate';

  @override
  String get dateRangeEndLabel => 'End Date';

  @override
  String get dateRangePickerHelpText => 'SELECT RANGE';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Start date $fullDate';

  @override
  String get dateRangeStartLabel => 'Start Date';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Delete';

  @override
  String get dialModeButtonLabel => 'Switch to dial picker mode';

  @override
  String get dialogLabel => 'Dialog';

  @override
  String get drawerLabel => 'Navigation menu';

  @override
  String get expandedIconTapHint => 'Collapse';

  @override
  String get firstPageTooltip => 'First page';

  @override
  String get hideAccountsLabel => 'Hide accounts';

  @override
  String get inputDateModeButtonLabel => 'Switch to input';

  @override
  String get inputTimeModeButtonLabel => 'Switch to text input mode';

  @override
  String get invalidDateFormatLabel => 'Invalid format.';

  @override
  String get invalidDateRangeLabel => 'Invalid range.';

  @override
  String get invalidTimeLabel => 'Enter a valid time';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Last page';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 license';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenses';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenses';

  @override
  String get menuBarMenuLabel => 'Menu bar menu';

  @override
  String get modalBarrierDismissLabel => 'Dismiss';

  @override
  String get moreButtonTooltip => 'More';

  @override
  String get nextMonthTooltip => 'Next month';

  @override
  String get nextPageTooltip => 'Next page';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Open navigation menu';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow of $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow of about $rowCount';

  @override
  String get pasteButtonLabel => 'Paste';

  @override
  String get popupMenuLabel => 'Popup menu';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Previous month';

  @override
  String get previousPageTooltip => 'Previous page';

  @override
  String get refreshIndicatorSemanticLabel => 'Refresh';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 character remaining';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount characters remaining';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'No characters remaining';

  @override
  String get reorderItemDown => 'Move down';

  @override
  String get reorderItemLeft => 'Move left';

  @override
  String get reorderItemRight => 'Move right';

  @override
  String get reorderItemToEnd => 'Move to the end';

  @override
  String get reorderItemToStart => 'Move to the start';

  @override
  String get reorderItemUp => 'Move up';

  @override
  String get rowsPerPageTitle => 'Rows per page:';

  @override
  String get saveButtonLabel => 'SAVE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Search';

  @override
  String get selectAllButtonLabel => 'Select all';

  @override
  String get selectYearSemanticsLabel => 'Select year';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item selected';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount items selected';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'No items selected';

  @override
  String get showAccountsLabel => 'Show accounts';

  @override
  String get showMenuTooltip => 'Show menu';

  @override
  String get signedInLabel => 'Signed in';

  @override
  String get tabLabelRaw => r'Tab $tabIndex of $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'SELECT TIME';

  @override
  String get timePickerHourLabel => 'Hour';

  @override
  String get timePickerHourModeAnnouncement => 'Select hours';

  @override
  String get timePickerInputHelpText => 'ENTER TIME';

  @override
  String get timePickerMinuteLabel => 'Minute';

  @override
  String get timePickerMinuteModeAnnouncement => 'Select minutes';

  @override
  String get unspecifiedDate => 'Date';

  @override
  String get unspecifiedDateRange => 'Date Range';

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENSES';
}

/// The translations for English, as used in Australia (`en_AU`).
class MaterialLocalizationEnAu extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in Australia.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnAu({
    super.localeName = 'en_AU',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in Canada (`en_CA`).
class MaterialLocalizationEnCa extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in Canada.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnCa({
    super.localeName = 'en_CA',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in the United Kingdom (`en_GB`).
class MaterialLocalizationEnGb extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in the United Kingdom.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnGb({
    super.localeName = 'en_GB',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in Ireland (`en_IE`).
class MaterialLocalizationEnIe extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in Ireland.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnIe({
    super.localeName = 'en_IE',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in India (`en_IN`).
class MaterialLocalizationEnIn extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in India.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnIn({
    super.localeName = 'en_IN',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in New Zealand (`en_NZ`).
class MaterialLocalizationEnNz extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in New Zealand.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnNz({
    super.localeName = 'en_NZ',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in Singapore (`en_SG`).
class MaterialLocalizationEnSg extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in Singapore.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnSg({
    super.localeName = 'en_SG',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for English, as used in South Africa (`en_ZA`).
class MaterialLocalizationEnZa extends MaterialLocalizationEn {
  /// Create an instance of the translation bundle for English, as used in South Africa.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEnZa({
    super.localeName = 'en_ZA',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyCapsLock => 'Caps lock';

  @override
  String get keyboardKeyChannelUp => 'Channel up';

  @override
  String get keyboardKeyChannelDown => 'Channel down';

  @override
  String get keyboardKeyNumLock => 'Num lock';

  @override
  String get keyboardKeyScrollLock => 'Scroll lock';

  @override
  String get keyboardKeyPrintScreen => 'Print screen';

  @override
  String get keyboardKeyPowerOff => 'Power off';

  @override
  String get keyboardKeyNumpadEnter => 'Num enter';

  @override
  String get dateInputLabel => 'Enter date';

  @override
  String get dateRangeEndLabel => 'End date';

  @override
  String get dateRangeStartLabel => 'Start date';

  @override
  String get unspecifiedDateRange => 'Date range';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get viewLicensesButtonLabel => 'VIEW LICENCES';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String? get licensesPackageDetailTextZero => 'No licences';

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String get popupMenuLabel => 'Pop-up menu';

  @override
  String get dialogLabel => 'Dialogue';

  @override
  String get reorderItemLeft => 'Move to the left';

  @override
  String get reorderItemRight => 'Move to the right';
}

/// The translations for Spanish Castilian (`es`).
class MaterialLocalizationEs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Spanish Castilian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEs({
    super.localeName = 'es',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Sobre $applicationName';

  @override
  String get alertDialogLabel => 'Alerta';

  @override
  String get anteMeridiemAbbreviation => 'a. m.';

  @override
  String get backButtonTooltip => 'Atrás';

  @override
  String get calendarModeButtonLabel => 'Cambiar a calendario';

  @override
  String get cancelButtonLabel => 'CANCELAR';

  @override
  String get closeButtonLabel => 'CERRAR';

  @override
  String get closeButtonTooltip => 'Cerrar';

  @override
  String get collapsedIconTapHint => 'Mostrar';

  @override
  String get continueButtonLabel => 'CONTINUAR';

  @override
  String get copyButtonLabel => 'Copiar';

  @override
  String get cutButtonLabel => 'Cortar';

  @override
  String get dateHelpText => 'mm/dd/aaaa';

  @override
  String get dateInputLabel => 'Introduce una fecha';

  @override
  String get dateOutOfRangeLabel => 'Fuera del periodo válido.';

  @override
  String get datePickerHelpText => 'SELECCIONAR FECHA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización $fullDate';

  @override
  String get dateRangeEndLabel => 'Fecha de finalización';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERIODO';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio $fullDate';

  @override
  String get dateRangeStartLabel => 'Fecha de inicio';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Eliminar';

  @override
  String get dialModeButtonLabel => 'Cambiar al modo de selección de hora';

  @override
  String get dialogLabel => 'Cuadro de diálogo';

  @override
  String get drawerLabel => 'Menú de navegación';

  @override
  String get expandedIconTapHint => 'Ocultar';

  @override
  String get firstPageTooltip => 'Primera página';

  @override
  String get hideAccountsLabel => 'Ocultar cuentas';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a cuadro de texto';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de introducción de texto';

  @override
  String get invalidDateFormatLabel => 'Formato no válido.';

  @override
  String get invalidDateRangeLabel => 'Periodo no válido.';

  @override
  String get invalidTimeLabel => 'Indica una hora válida';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Retroceso';

  @override
  String get keyboardKeyCapsLock => 'Bloq Mayús';

  @override
  String get keyboardKeyChannelDown => 'Canal siguiente';

  @override
  String get keyboardKeyChannelUp => 'Canal anterior';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Supr';

  @override
  String get keyboardKeyEject => 'Expulsar';

  @override
  String get keyboardKeyEnd => 'Fin';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Inicio';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Comando';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Bloq Num';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Intro';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Av Pág';

  @override
  String get keyboardKeyPageUp => 'Re Pág';

  @override
  String get keyboardKeyPower => 'Encendido';

  @override
  String get keyboardKeyPowerOff => 'Apagado';

  @override
  String get keyboardKeyPrintScreen => 'Impr Pant';

  @override
  String get keyboardKeyScrollLock => 'Bloq Despl';

  @override
  String get keyboardKeySelect => 'Selección';

  @override
  String get keyboardKeySpace => 'Espacio';

  @override
  String get lastPageTooltip => 'Última página';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licencias';

  @override
  String get menuBarMenuLabel => 'Menú de la barra de menú';

  @override
  String get modalBarrierDismissLabel => 'Cerrar';

  @override
  String get moreButtonTooltip => 'Más';

  @override
  String get nextMonthTooltip => 'Mes siguiente';

  @override
  String get nextPageTooltip => 'Página siguiente';

  @override
  String get okButtonLabel => 'ACEPTAR';

  @override
  String get openAppDrawerTooltip => 'Abrir el menú de navegación';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow‑$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow‑$lastRow de aproximadamente $rowCount';

  @override
  String get pasteButtonLabel => 'Pegar';

  @override
  String get popupMenuLabel => 'Menú emergente';

  @override
  String get postMeridiemAbbreviation => 'p. m.';

  @override
  String get previousMonthTooltip => 'Mes anterior';

  @override
  String get previousPageTooltip => 'Página anterior';

  @override
  String get refreshIndicatorSemanticLabel => 'Actualizar';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Queda 1 carácter.';

  @override
  String get remainingTextFieldCharacterCountOther => r'Quedan $remainingCount caracteres';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Mover hacia abajo';

  @override
  String get reorderItemLeft => 'Mover hacia la izquierda';

  @override
  String get reorderItemRight => 'Mover hacia la derecha';

  @override
  String get reorderItemToEnd => 'Mover al final';

  @override
  String get reorderItemToStart => 'Mover al principio';

  @override
  String get reorderItemUp => 'Mover hacia arriba';

  @override
  String get rowsPerPageTitle => 'Filas por página:';

  @override
  String get saveButtonLabel => 'GUARDAR';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Buscar';

  @override
  String get selectAllButtonLabel => 'Seleccionar todo';

  @override
  String get selectYearSemanticsLabel => 'Seleccionar año';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 elemento seleccionado';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elementos seleccionados';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'No se han seleccionado elementos';

  @override
  String get showAccountsLabel => 'Mostrar cuentas';

  @override
  String get showMenuTooltip => 'Mostrar menú';

  @override
  String get signedInLabel => 'Sesión iniciada';

  @override
  String get tabLabelRaw => r'Pestaña $tabIndex de $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'SELECCIONAR HORA';

  @override
  String get timePickerHourLabel => 'Hora';

  @override
  String get timePickerHourModeAnnouncement => 'Seleccionar horas';

  @override
  String get timePickerInputHelpText => 'INTRODUCIR HORA';

  @override
  String get timePickerMinuteLabel => 'Minuto';

  @override
  String get timePickerMinuteModeAnnouncement => 'Seleccionar minutos';

  @override
  String get unspecifiedDate => 'Fecha';

  @override
  String get unspecifiedDateRange => 'Periodo';

  @override
  String get viewLicensesButtonLabel => 'VER LICENCIAS';
}

/// The translations for Spanish Castilian, as used in Latin America and the Caribbean (`es_419`).
class MaterialLocalizationEs419 extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Latin America and the Caribbean.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEs419({
    super.localeName = 'es_419',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Argentina (`es_AR`).
class MaterialLocalizationEsAr extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Argentina.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsAr({
    super.localeName = 'es_AR',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Bolivia (`es_BO`).
class MaterialLocalizationEsBo extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Bolivia.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsBo({
    super.localeName = 'es_BO',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Chile (`es_CL`).
class MaterialLocalizationEsCl extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Chile.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsCl({
    super.localeName = 'es_CL',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Colombia (`es_CO`).
class MaterialLocalizationEsCo extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Colombia.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsCo({
    super.localeName = 'es_CO',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Costa Rica (`es_CR`).
class MaterialLocalizationEsCr extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Costa Rica.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsCr({
    super.localeName = 'es_CR',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in the Dominican Republic (`es_DO`).
class MaterialLocalizationEsDo extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in the Dominican Republic.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsDo({
    super.localeName = 'es_DO',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Ecuador (`es_EC`).
class MaterialLocalizationEsEc extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Ecuador.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsEc({
    super.localeName = 'es_EC',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Guatemala (`es_GT`).
class MaterialLocalizationEsGt extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Guatemala.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsGt({
    super.localeName = 'es_GT',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Honduras (`es_HN`).
class MaterialLocalizationEsHn extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Honduras.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsHn({
    super.localeName = 'es_HN',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Mexico (`es_MX`).
class MaterialLocalizationEsMx extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Mexico.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsMx({
    super.localeName = 'es_MX',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Nicaragua (`es_NI`).
class MaterialLocalizationEsNi extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Nicaragua.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsNi({
    super.localeName = 'es_NI',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Panama (`es_PA`).
class MaterialLocalizationEsPa extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Panama.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsPa({
    super.localeName = 'es_PA',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Peru (`es_PE`).
class MaterialLocalizationEsPe extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Peru.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsPe({
    super.localeName = 'es_PE',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Puerto Rico (`es_PR`).
class MaterialLocalizationEsPr extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Puerto Rico.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsPr({
    super.localeName = 'es_PR',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Paraguay (`es_PY`).
class MaterialLocalizationEsPy extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Paraguay.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsPy({
    super.localeName = 'es_PY',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in El Salvador (`es_SV`).
class MaterialLocalizationEsSv extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in El Salvador.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsSv({
    super.localeName = 'es_SV',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in the United States (`es_US`).
class MaterialLocalizationEsUs extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in the United States.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsUs({
    super.localeName = 'es_US',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Uruguay (`es_UY`).
class MaterialLocalizationEsUy extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Uruguay.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsUy({
    super.localeName = 'es_UY',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Spanish Castilian, as used in Venezuela (`es_VE`).
class MaterialLocalizationEsVe extends MaterialLocalizationEs {
  /// Create an instance of the translation bundle for Spanish Castilian, as used in Venezuela.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEsVe({
    super.localeName = 'es_VE',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyChannelUp => 'Canal siguiente';

  @override
  String get keyboardKeyCapsLock => 'Bloqueo de mayúscula';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyNumLock => 'Bloqueo numérico';

  @override
  String get keyboardKeyPageDown => 'AvPág';

  @override
  String get keyboardKeySpace => 'Barra espaciadora';

  @override
  String get keyboardKeyScrollLock => 'Bloqueo de desplazamiento';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPower => 'Encender';

  @override
  String get keyboardKeyPageUp => 'RePág';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get timePickerInputHelpText => 'INGRESAR HORA';

  @override
  String get invalidTimeLabel => 'Ingresa una hora válida';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencias';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar al modo de entrada de texto';

  @override
  String get dateInputLabel => 'Ingresar fecha';

  @override
  String get calendarModeButtonLabel => 'Cambiar al calendario';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR PERÍODO';

  @override
  String get dateOutOfRangeLabel => 'Fuera de rango';

  @override
  String get invalidDateRangeLabel => 'El rango no es válido.';

  @override
  String get invalidDateFormatLabel => 'El formato no es válido.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Fecha de finalización: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Fecha de inicio: $fullDate';

  @override
  String get inputDateModeButtonLabel => 'Cambiar a modo de entrada';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get reorderItemToStart => 'Mover al inicio';

  @override
  String get modalBarrierDismissLabel => 'Descartar';

  @override
  String get signedInLabel => 'Cuenta con la que accediste';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get deleteButtonTooltip => 'Borrar';

  @override
  String get nextMonthTooltip => 'Próximo mes';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow de aproximadamente $rowCount';

  @override
  String? get selectedRowCountTitleOne => 'Se seleccionó 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Se seleccionaron $selectedRowCount elementos';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get dialogLabel => 'Diálogo';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get collapsedIconTapHint => 'Expandir';
}

/// The translations for Estonian (`et`).
class MaterialLocalizationEt extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Estonian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEt({
    super.localeName = 'et',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Teave rakenduse $applicationName kohta';

  @override
  String get alertDialogLabel => 'Märguanne';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Tagasi';

  @override
  String get calendarModeButtonLabel => 'Kalendrile lülitumine';

  @override
  String get cancelButtonLabel => 'TÜHISTA';

  @override
  String get closeButtonLabel => 'SULE';

  @override
  String get closeButtonTooltip => 'Sule';

  @override
  String get collapsedIconTapHint => 'Laienda';

  @override
  String get continueButtonLabel => 'JÄTKA';

  @override
  String get copyButtonLabel => 'Kopeeri';

  @override
  String get cutButtonLabel => 'Lõika';

  @override
  String get dateHelpText => 'pp.kk.aaaa';

  @override
  String get dateInputLabel => 'Sisestage kuupäev';

  @override
  String get dateOutOfRangeLabel => 'Vahemikust väljas.';

  @override
  String get datePickerHelpText => 'VALIGE KUUPÄEV';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Lõppkuupäev: $fullDate';

  @override
  String get dateRangeEndLabel => 'Lõppkuupäev';

  @override
  String get dateRangePickerHelpText => 'VALIGE VAHEMIK';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Alguskuupäev: $fullDate';

  @override
  String get dateRangeStartLabel => 'Alguskuupäev';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Kustuta';

  @override
  String get dialModeButtonLabel => 'Lülitumine valikuketta režiimile';

  @override
  String get dialogLabel => 'Dialoog';

  @override
  String get drawerLabel => 'Navigeerimismenüü';

  @override
  String get expandedIconTapHint => 'Ahenda';

  @override
  String get firstPageTooltip => 'Esimene leht';

  @override
  String get hideAccountsLabel => 'Peida kontod';

  @override
  String get inputDateModeButtonLabel => 'Sisestusrežiimile lülitumine';

  @override
  String get inputTimeModeButtonLabel => 'Lülitumine tekstisisestusrežiimile';

  @override
  String get invalidDateFormatLabel => 'Sobimatu vorming.';

  @override
  String get invalidDateRangeLabel => 'Sobimatu vahemik.';

  @override
  String get invalidTimeLabel => 'Sisestage sobiv kellaaeg';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Tagasilüke';

  @override
  String get keyboardKeyCapsLock => 'Suurtähelukk';

  @override
  String get keyboardKeyChannelDown => 'Kanal madalamale';

  @override
  String get keyboardKeyChannelUp => 'Kanal kõrgemale';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Väljuta';

  @override
  String get keyboardKeyEnd => 'Lõpp';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Avaleht';

  @override
  String get keyboardKeyInsert => 'Sisesta';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Käsk';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Numbrilukk';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Lehe võrra alla';

  @override
  String get keyboardKeyPageUp => 'Lehe võrra üles';

  @override
  String get keyboardKeyPower => 'Toide';

  @override
  String get keyboardKeyPowerOff => 'Väljalülitamine';

  @override
  String get keyboardKeyPrintScreen => 'Jäädvusta ekraanikuva';

  @override
  String get keyboardKeyScrollLock => 'Kerimislukk';

  @override
  String get keyboardKeySelect => 'Vali';

  @override
  String get keyboardKeySpace => 'Tühik';

  @override
  String get lastPageTooltip => 'Viimane leht';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 litsents';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount litsentsi';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Litsentsid';

  @override
  String get menuBarMenuLabel => 'Menüüriba menüü';

  @override
  String get modalBarrierDismissLabel => 'Loobu';

  @override
  String get moreButtonTooltip => 'Rohkem';

  @override
  String get nextMonthTooltip => 'Järgmine kuu';

  @override
  String get nextPageTooltip => 'Järgmine leht';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Ava navigeerimismenüü';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow $rowCount-st';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow umbes $rowCount-st';

  @override
  String get pasteButtonLabel => 'Kleebi';

  @override
  String get popupMenuLabel => 'Hüpikmenüü';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Eelmine kuu';

  @override
  String get previousPageTooltip => 'Eelmine leht';

  @override
  String get refreshIndicatorSemanticLabel => 'Värskendamine';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Jäänud on 1 tähemärk';

  @override
  String get remainingTextFieldCharacterCountOther => r'Jäänud on $remainingCount tähemärki';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Teisalda alla';

  @override
  String get reorderItemLeft => 'Teisalda vasakule';

  @override
  String get reorderItemRight => 'Teisalda paremale';

  @override
  String get reorderItemToEnd => 'Teisalda lõppu';

  @override
  String get reorderItemToStart => 'Teisalda algusesse';

  @override
  String get reorderItemUp => 'Teisalda üles';

  @override
  String get rowsPerPageTitle => 'Ridu lehe kohta:';

  @override
  String get saveButtonLabel => 'SALVESTA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Otsing';

  @override
  String get selectAllButtonLabel => 'Vali kõik';

  @override
  String get selectYearSemanticsLabel => 'Valige aasta';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Valitud on 1 üksus';

  @override
  String get selectedRowCountTitleOther => r'Valitud on $selectedRowCount üksust';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Kuva kontod';

  @override
  String get showMenuTooltip => 'Kuva menüü';

  @override
  String get signedInLabel => 'Sisse logitud';

  @override
  String get tabLabelRaw => r'$tabIndex. vahekaart $tabCount-st';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VALIGE AEG';

  @override
  String get timePickerHourLabel => 'Tund';

  @override
  String get timePickerHourModeAnnouncement => 'Tundide valimine';

  @override
  String get timePickerInputHelpText => 'SISESTAGE AEG';

  @override
  String get timePickerMinuteLabel => 'Minut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Minutite valimine';

  @override
  String get unspecifiedDate => 'Kuupäev';

  @override
  String get unspecifiedDateRange => 'Kuupäevavahemik';

  @override
  String get viewLicensesButtonLabel => 'KUVA LITSENTSID';
}

/// The translations for Basque (`eu`).
class MaterialLocalizationEu extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Basque.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationEu({
    super.localeName = 'eu',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName aplikazioari buruz';

  @override
  String get alertDialogLabel => 'Alerta';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Atzera';

  @override
  String get calendarModeButtonLabel => 'Aldatu egutegiaren modura';

  @override
  String get cancelButtonLabel => 'UTZI';

  @override
  String get closeButtonLabel => 'ITXI';

  @override
  String get closeButtonTooltip => 'Itxi';

  @override
  String get collapsedIconTapHint => 'Zabaldu';

  @override
  String get continueButtonLabel => 'EGIN AURRERA';

  @override
  String get copyButtonLabel => 'Kopiatu';

  @override
  String get cutButtonLabel => 'Ebaki';

  @override
  String get dateHelpText => 'uuuu/hh/ee';

  @override
  String get dateInputLabel => 'Idatzi data';

  @override
  String get dateOutOfRangeLabel => 'Barrutitik kanpo.';

  @override
  String get datePickerHelpText => 'HAUTATU DATA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Amaiera-data: $fullDate';

  @override
  String get dateRangeEndLabel => 'Amaiera-data';

  @override
  String get dateRangePickerHelpText => 'HAUTATU BARRUTIA';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Hasiera-data: $fullDate';

  @override
  String get dateRangeStartLabel => 'Hasiera-data';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Ezabatu';

  @override
  String get dialModeButtonLabel => 'Aldatu esfera hautatzeko modura';

  @override
  String get dialogLabel => 'Leihoa';

  @override
  String get drawerLabel => 'Nabigazio-menua';

  @override
  String get expandedIconTapHint => 'Tolestu';

  @override
  String get firstPageTooltip => 'Lehenengo orria';

  @override
  String get hideAccountsLabel => 'Ezkutatu kontuak';

  @override
  String get inputDateModeButtonLabel => 'Aldatu datak aukeratzeko modura';

  @override
  String get inputTimeModeButtonLabel => 'Aldatu testua idazteko modura';

  @override
  String get invalidDateFormatLabel => 'Formatuak ez du balio.';

  @override
  String get invalidDateRangeLabel => 'Tarteak ez du balio.';

  @override
  String get invalidTimeLabel => 'Idatzi balio duen ordu bat';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Atzera tekla';

  @override
  String get keyboardKeyCapsLock => 'Blok Maius';

  @override
  String get keyboardKeyChannelDown => 'Jaitsi kanal bat';

  @override
  String get keyboardKeyChannelUp => 'Igo kanal bat';

  @override
  String get keyboardKeyControl => 'Ktrl';

  @override
  String get keyboardKeyDelete => 'Ezab';

  @override
  String get keyboardKeyEject => 'Kanporatu';

  @override
  String get keyboardKeyEnd => 'Amaiera';

  @override
  String get keyboardKeyEscape => 'Ihes';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Hasi';

  @override
  String get keyboardKeyInsert => 'Txertatu';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Komandoa';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Blok Zenb';

  @override
  String get keyboardKeyNumpad0 => 'Zenbakizko teklatuko 0';

  @override
  String get keyboardKeyNumpad1 => 'Zenbakizko teklatuko 1';

  @override
  String get keyboardKeyNumpad2 => 'Zenbakizko teklatuko 2';

  @override
  String get keyboardKeyNumpad3 => 'Zenbakizko teklatuko 3';

  @override
  String get keyboardKeyNumpad4 => 'Zenbakizko teklatuko 4';

  @override
  String get keyboardKeyNumpad5 => 'Zenbakizko teklatuko 5';

  @override
  String get keyboardKeyNumpad6 => 'Zenbakizko teklatuko 6';

  @override
  String get keyboardKeyNumpad7 => 'Zenbakizko teklatuko 7';

  @override
  String get keyboardKeyNumpad8 => 'Zenbakizko teklatuko 8';

  @override
  String get keyboardKeyNumpad9 => 'Zenbakizko teklatuko 9';

  @override
  String get keyboardKeyNumpadAdd => 'Zenbakizko teklatuko +';

  @override
  String get keyboardKeyNumpadComma => 'Zenbakizko teklatuko ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Zenbakizko teklatuko .';

  @override
  String get keyboardKeyNumpadDivide => 'Zenbakizko teklatuko /';

  @override
  String get keyboardKeyNumpadEnter => 'Zenbakizko teklatuko Sartu';

  @override
  String get keyboardKeyNumpadEqual => 'Zenbakizko teklatuko =';

  @override
  String get keyboardKeyNumpadMultiply => 'Zenbakizko teklatuko *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Zenbakizko teklatuko (';

  @override
  String get keyboardKeyNumpadParenRight => 'Zenbakizko teklatuko )';

  @override
  String get keyboardKeyNumpadSubtract => 'Zenbakizko teklatuko -';

  @override
  String get keyboardKeyPageDown => 'OrBeh';

  @override
  String get keyboardKeyPageUp => 'OrGo';

  @override
  String get keyboardKeyPower => 'Piztu/Itzali';

  @override
  String get keyboardKeyPowerOff => 'Itzali';

  @override
  String get keyboardKeyPrintScreen => 'Inp pant';

  @override
  String get keyboardKeyScrollLock => 'Blok Korr';

  @override
  String get keyboardKeySelect => 'Hautatu';

  @override
  String get keyboardKeySpace => 'Zuriune-barra';

  @override
  String get lastPageTooltip => 'Azken orria';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lizentzia';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lizentzia';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lizentziak';

  @override
  String get menuBarMenuLabel => 'Menu-barraren menua';

  @override
  String get modalBarrierDismissLabel => 'Baztertu';

  @override
  String get moreButtonTooltip => 'Gehiago';

  @override
  String get nextMonthTooltip => 'Hurrengo hilabetea';

  @override
  String get nextPageTooltip => 'Hurrengo orria';

  @override
  String get okButtonLabel => 'Ados';

  @override
  String get openAppDrawerTooltip => 'Ireki nabigazio-menua';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow - $lastRow / $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow - $lastRow / $rowCount';

  @override
  String get pasteButtonLabel => 'Itsatsi';

  @override
  String get popupMenuLabel => 'Menu gainerakorra';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Aurreko hilabetea';

  @override
  String get previousPageTooltip => 'Aurreko orria';

  @override
  String get refreshIndicatorSemanticLabel => 'Freskatu';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 karaktere geratzen da';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount karaktere geratzen dira';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Eraman behera';

  @override
  String get reorderItemLeft => 'Eraman ezkerrera';

  @override
  String get reorderItemRight => 'Eraman eskuinera';

  @override
  String get reorderItemToEnd => 'Eraman amaierara';

  @override
  String get reorderItemToStart => 'Eraman hasierara';

  @override
  String get reorderItemUp => 'Eraman gora';

  @override
  String get rowsPerPageTitle => 'Errenkadak orriko:';

  @override
  String get saveButtonLabel => 'GORDE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Bilatu';

  @override
  String get selectAllButtonLabel => 'Hautatu guztiak';

  @override
  String get selectYearSemanticsLabel => 'Hautatu urtea';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 elementu hautatu da';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elementu hautatu dira';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Erakutsi kontuak';

  @override
  String get showMenuTooltip => 'Erakutsi menua';

  @override
  String get signedInLabel => 'Hasi da saioa';

  @override
  String get tabLabelRaw => r'$tabIndex/$tabCount fitxa';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'HAUTATU ORDUA';

  @override
  String get timePickerHourLabel => 'Ordua';

  @override
  String get timePickerHourModeAnnouncement => 'Hautatu orduak';

  @override
  String get timePickerInputHelpText => 'IDATZI ORDUA';

  @override
  String get timePickerMinuteLabel => 'Minutua';

  @override
  String get timePickerMinuteModeAnnouncement => 'Hautatu minutuak';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Data tartea';

  @override
  String get viewLicensesButtonLabel => 'IKUSI LIZENTZIAK';
}

/// The translations for Persian (`fa`).
class MaterialLocalizationFa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Persian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationFa({
    super.localeName = 'fa',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'درباره $applicationName';

  @override
  String get alertDialogLabel => 'هشدار';

  @override
  String get anteMeridiemAbbreviation => 'ق.ظ.';

  @override
  String get backButtonTooltip => 'برگشت';

  @override
  String get calendarModeButtonLabel => 'رفتن به تقویم';

  @override
  String get cancelButtonLabel => 'لغو';

  @override
  String get closeButtonLabel => 'بستن';

  @override
  String get closeButtonTooltip => 'بستن';

  @override
  String get collapsedIconTapHint => 'بزرگ کردن';

  @override
  String get continueButtonLabel => 'ادامه';

  @override
  String get copyButtonLabel => 'کپی';

  @override
  String get cutButtonLabel => 'برش';

  @override
  String get dateHelpText => 'روز/ماه/سال';

  @override
  String get dateInputLabel => 'تاریخ را وارد کنید';

  @override
  String get dateOutOfRangeLabel => 'خارج از محدوده.';

  @override
  String get datePickerHelpText => 'انتخاب تاریخ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'تاریخ پایان $fullDate';

  @override
  String get dateRangeEndLabel => 'تاریخ پایان';

  @override
  String get dateRangePickerHelpText => 'انتخاب محدوده';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'تاریخ شروع $fullDate';

  @override
  String get dateRangeStartLabel => 'تاریخ شروع';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'حذف';

  @override
  String get dialModeButtonLabel => 'رفتن به حالت انتخابگر صفحه ساعت';

  @override
  String get dialogLabel => 'کادر گفتگو';

  @override
  String get drawerLabel => 'منوی پیمایش';

  @override
  String get expandedIconTapHint => 'کوچک کردن';

  @override
  String get firstPageTooltip => 'صفحه اول';

  @override
  String get hideAccountsLabel => 'پنهان کردن حساب‌ها';

  @override
  String get inputDateModeButtonLabel => 'رفتن به ورودی';

  @override
  String get inputTimeModeButtonLabel => 'رفتن به حالت ورودی نوشتاری';

  @override
  String get invalidDateFormatLabel => 'قالب نامعتبر است.';

  @override
  String get invalidDateRangeLabel => 'محدوده نامعتبر است.';

  @override
  String get invalidTimeLabel => 'زمان معتبری وارد کنید';

  @override
  String get keyboardKeyAlt => 'دگرساز';

  @override
  String get keyboardKeyAltGraph => 'دگرساز راست';

  @override
  String get keyboardKeyBackspace => 'پس‌بَر';

  @override
  String get keyboardKeyCapsLock => 'حالت حروف بزرگ';

  @override
  String get keyboardKeyChannelDown => 'کانال پایین';

  @override
  String get keyboardKeyChannelUp => 'کانال بالا';

  @override
  String get keyboardKeyControl => 'مهار';

  @override
  String get keyboardKeyDelete => 'حذف';

  @override
  String get keyboardKeyEject => 'خارج کردن';

  @override
  String get keyboardKeyEnd => 'پایان';

  @override
  String get keyboardKeyEscape => 'گریز';

  @override
  String get keyboardKeyFn => 'عملکرد';

  @override
  String get keyboardKeyHome => 'صفحه اصلی';

  @override
  String get keyboardKeyInsert => 'درج';

  @override
  String get keyboardKeyMeta => 'متا';

  @override
  String get keyboardKeyMetaMacOs => 'فرمان';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'قفل اعداد';

  @override
  String get keyboardKeyNumpad0 => 'عدد ۰';

  @override
  String get keyboardKeyNumpad1 => 'عدد ۱';

  @override
  String get keyboardKeyNumpad2 => 'عدد ۲';

  @override
  String get keyboardKeyNumpad3 => 'عدد ۳';

  @override
  String get keyboardKeyNumpad4 => 'عدد ۴';

  @override
  String get keyboardKeyNumpad5 => 'عدد ۵';

  @override
  String get keyboardKeyNumpad6 => 'عدد ۶';

  @override
  String get keyboardKeyNumpad7 => 'عدد ۷';

  @override
  String get keyboardKeyNumpad8 => 'عدد ۸';

  @override
  String get keyboardKeyNumpad9 => 'عدد ۹';

  @override
  String get keyboardKeyNumpadAdd => 'عدد +';

  @override
  String get keyboardKeyNumpadComma => 'عدد ,';

  @override
  String get keyboardKeyNumpadDecimal => 'عدد .';

  @override
  String get keyboardKeyNumpadDivide => 'عدد /';

  @override
  String get keyboardKeyNumpadEnter => 'ورود اعداد';

  @override
  String get keyboardKeyNumpadEqual => 'عدد =';

  @override
  String get keyboardKeyNumpadMultiply => 'عدد *';

  @override
  String get keyboardKeyNumpadParenLeft => 'عدد (';

  @override
  String get keyboardKeyNumpadParenRight => 'عدد )';

  @override
  String get keyboardKeyNumpadSubtract => 'عدد -';

  @override
  String get keyboardKeyPageDown => 'صفحه پایین';

  @override
  String get keyboardKeyPageUp => 'صفحه بالا';

  @override
  String get keyboardKeyPower => 'روشن/ خاموش';

  @override
  String get keyboardKeyPowerOff => 'خاموش کردن';

  @override
  String get keyboardKeyPrintScreen => 'چاپ صفحه';

  @override
  String get keyboardKeyScrollLock => 'قفل پیمایش';

  @override
  String get keyboardKeySelect => 'انتخاب';

  @override
  String get keyboardKeySpace => 'فاصله';

  @override
  String get lastPageTooltip => 'صفحه آخر';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '۱ پروانه';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount پروانه';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'مجوزها';

  @override
  String get menuBarMenuLabel => 'منوی نوار منو';

  @override
  String get modalBarrierDismissLabel => 'نپذیرفتن';

  @override
  String get moreButtonTooltip => 'بیشتر';

  @override
  String get nextMonthTooltip => 'ماه بعد';

  @override
  String get nextPageTooltip => 'صفحه بعد';

  @override
  String get okButtonLabel => 'تأیید';

  @override
  String get openAppDrawerTooltip => 'باز کردن منوی پیمایش';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow از $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow از حدود $rowCount';

  @override
  String get pasteButtonLabel => 'جای‌گذاری';

  @override
  String get popupMenuLabel => 'منوی بازشو';

  @override
  String get postMeridiemAbbreviation => 'ب.ظ.';

  @override
  String get previousMonthTooltip => 'ماه قبل';

  @override
  String get previousPageTooltip => 'صفحه قبل';

  @override
  String get refreshIndicatorSemanticLabel => 'بازخوانی';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '۱ نویسه باقی مانده است';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount نویسه باقی مانده است';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'انتقال به پایین';

  @override
  String get reorderItemLeft => 'انتقال به راست';

  @override
  String get reorderItemRight => 'انتقال به چپ';

  @override
  String get reorderItemToEnd => 'انتقال به انتها';

  @override
  String get reorderItemToStart => 'انتقال به ابتدا';

  @override
  String get reorderItemUp => 'انتقال به بالا';

  @override
  String get rowsPerPageTitle => 'ردیف در هر صفحه:';

  @override
  String get saveButtonLabel => 'ذخیره';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'جستجو';

  @override
  String get selectAllButtonLabel => 'انتخاب همه';

  @override
  String get selectYearSemanticsLabel => 'انتخاب سال';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '۱ مورد انتخاب شد';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount مورد انتخاب شدند';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'نشان دادن حساب‌ها';

  @override
  String get showMenuTooltip => 'نمایش منو';

  @override
  String get signedInLabel => 'واردشده به سیستم';

  @override
  String get tabLabelRaw => r'برگه $tabIndex از $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'انتخاب زمان';

  @override
  String get timePickerHourLabel => 'ساعت';

  @override
  String get timePickerHourModeAnnouncement => 'انتخاب ساعت';

  @override
  String get timePickerInputHelpText => 'زمان را وارد کنید';

  @override
  String get timePickerMinuteLabel => 'دقیقه';

  @override
  String get timePickerMinuteModeAnnouncement => 'انتخاب دقیقه';

  @override
  String get unspecifiedDate => 'تاریخ';

  @override
  String get unspecifiedDateRange => 'محدوده تاریخ';

  @override
  String get viewLicensesButtonLabel => 'مشاهده مجوزها';
}

/// The translations for Finnish (`fi`).
class MaterialLocalizationFi extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Finnish.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationFi({
    super.localeName = 'fi',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Tietoja: $applicationName';

  @override
  String get alertDialogLabel => 'Ilmoitus';

  @override
  String get anteMeridiemAbbreviation => 'ap';

  @override
  String get backButtonTooltip => 'Takaisin';

  @override
  String get calendarModeButtonLabel => 'Vaihda kalenteriin';

  @override
  String get cancelButtonLabel => 'PERUUTA';

  @override
  String get closeButtonLabel => 'SULJE';

  @override
  String get closeButtonTooltip => 'Sulje';

  @override
  String get collapsedIconTapHint => 'Laajenna';

  @override
  String get continueButtonLabel => 'JATKA';

  @override
  String get copyButtonLabel => 'Kopioi';

  @override
  String get cutButtonLabel => 'Leikkaa';

  @override
  String get dateHelpText => 'pp/kk/vvvv';

  @override
  String get dateInputLabel => 'Lisää päivämäärä';

  @override
  String get dateOutOfRangeLabel => 'Päivämäärä ei kelpaa';

  @override
  String get datePickerHelpText => 'VALITSE PÄIVÄMÄÄRÄ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Päättymispäivä $fullDate';

  @override
  String get dateRangeEndLabel => 'Päättymispäivä';

  @override
  String get dateRangePickerHelpText => 'VALITSE PÄIVÄMÄÄRÄVÄLI';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Alkamispäivä $fullDate';

  @override
  String get dateRangeStartLabel => 'Alkamispäivä';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Poista';

  @override
  String get dialModeButtonLabel => 'Valitse kellotauluvalitsin';

  @override
  String get dialogLabel => 'Valintaikkuna';

  @override
  String get drawerLabel => 'Navigointivalikko';

  @override
  String get expandedIconTapHint => 'Tiivistä';

  @override
  String get firstPageTooltip => 'Ensimmäinen sivu';

  @override
  String get hideAccountsLabel => 'Piilota tilit';

  @override
  String get inputDateModeButtonLabel => 'Vaihda tekstinsyöttöön';

  @override
  String get inputTimeModeButtonLabel => 'Valitse syöttötavaksi teksti';

  @override
  String get invalidDateFormatLabel => 'Virheellinen muoto';

  @override
  String get invalidDateRangeLabel => 'Virheellinen päivämääräväli';

  @override
  String get invalidTimeLabel => 'Lisää kelvollinen aika';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Askelpalautin';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Edellinen kanava';

  @override
  String get keyboardKeyChannelUp => 'Seuraava kanava';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Poista';

  @override
  String get keyboardKeyEnd => 'Lopeta';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Etusivu';

  @override
  String get keyboardKeyInsert => 'Lisää';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Komento';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Virta';

  @override
  String get keyboardKeyPowerOff => 'Virta pois';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Valitse';

  @override
  String get keyboardKeySpace => 'Välilyönti';

  @override
  String get lastPageTooltip => 'Viimeinen sivu';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisenssi';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisenssiä';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lisenssit';

  @override
  String get menuBarMenuLabel => 'Valikkopalkki';

  @override
  String get modalBarrierDismissLabel => 'Ohita';

  @override
  String get moreButtonTooltip => 'Lisää';

  @override
  String get nextMonthTooltip => 'Seuraava kuukausi';

  @override
  String get nextPageTooltip => 'Seuraava sivu';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Avaa navigointivalikko';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow/$rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow/~$rowCount';

  @override
  String get pasteButtonLabel => 'Liitä';

  @override
  String get popupMenuLabel => 'Ponnahdusvalikko';

  @override
  String get postMeridiemAbbreviation => 'ip';

  @override
  String get previousMonthTooltip => 'Edellinen kuukausi';

  @override
  String get previousPageTooltip => 'Edellinen sivu';

  @override
  String get refreshIndicatorSemanticLabel => 'Päivitys';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 merkki jäljellä';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount merkkiä jäljellä';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Siirrä alas';

  @override
  String get reorderItemLeft => 'Siirrä vasemmalle';

  @override
  String get reorderItemRight => 'Siirrä oikealle';

  @override
  String get reorderItemToEnd => 'Siirrä loppuun';

  @override
  String get reorderItemToStart => 'Siirrä alkuun';

  @override
  String get reorderItemUp => 'Siirrä ylös';

  @override
  String get rowsPerPageTitle => 'Riviä/sivu:';

  @override
  String get saveButtonLabel => 'TALLENNA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Haku';

  @override
  String get selectAllButtonLabel => 'Valitse kaikki';

  @override
  String get selectYearSemanticsLabel => 'Valitse vuosi';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 kohde valittu';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount kohdetta valittu';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Näytä tilit';

  @override
  String get showMenuTooltip => 'Näytä valikko';

  @override
  String get signedInLabel => 'Kirjautunut sisään';

  @override
  String get tabLabelRaw => r'Välilehti $tabIndex/$tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VALITSE AIKA';

  @override
  String get timePickerHourLabel => 'Tunti';

  @override
  String get timePickerHourModeAnnouncement => 'Valitse tunnit';

  @override
  String get timePickerInputHelpText => 'LISÄÄ AIKA';

  @override
  String get timePickerMinuteLabel => 'Minuutti';

  @override
  String get timePickerMinuteModeAnnouncement => 'Valitse minuutit';

  @override
  String get unspecifiedDate => 'Päivämäärä';

  @override
  String get unspecifiedDateRange => 'Ajanjakso';

  @override
  String get viewLicensesButtonLabel => 'NÄYTÄ KÄYTTÖOIKEUDET';
}

/// The translations for Filipino Pilipino (`fil`).
class MaterialLocalizationFil extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Filipino Pilipino.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationFil({
    super.localeName = 'fil',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Tungkol sa $applicationName';

  @override
  String get alertDialogLabel => 'Alerto';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Bumalik';

  @override
  String get calendarModeButtonLabel => 'Lumipat sa kalendaryo';

  @override
  String get cancelButtonLabel => 'KANSELAHIN';

  @override
  String get closeButtonLabel => 'ISARA';

  @override
  String get closeButtonTooltip => 'Isara';

  @override
  String get collapsedIconTapHint => 'I-expand';

  @override
  String get continueButtonLabel => 'MAGPATULOY';

  @override
  String get copyButtonLabel => 'Kopyahin';

  @override
  String get cutButtonLabel => 'I-cut';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Ilagay ang Petsa';

  @override
  String get dateOutOfRangeLabel => 'Wala sa hanay.';

  @override
  String get datePickerHelpText => 'PUMILI NG PETSA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Petsa ng pagtatapos $fullDate';

  @override
  String get dateRangeEndLabel => 'Petsa ng Pagtatapos';

  @override
  String get dateRangePickerHelpText => 'PUMILI NG HANAY';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Petsa ng pagsisimula $fullDate';

  @override
  String get dateRangeStartLabel => 'Petsa ng Pagsisimula';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'I-delete';

  @override
  String get dialModeButtonLabel => 'Lumipat sa dial picker mode';

  @override
  String get dialogLabel => 'Dialog';

  @override
  String get drawerLabel => 'Menu ng navigation';

  @override
  String get expandedIconTapHint => 'I-collapse';

  @override
  String get firstPageTooltip => 'Unang page';

  @override
  String get hideAccountsLabel => 'Itago ang mga account';

  @override
  String get inputDateModeButtonLabel => 'Lumipat sa input';

  @override
  String get inputTimeModeButtonLabel => 'Lumipat sa text input mode';

  @override
  String get invalidDateFormatLabel => 'Invalid ang format.';

  @override
  String get invalidDateRangeLabel => 'Invalid ang hanay.';

  @override
  String get invalidTimeLabel => 'Maglagay ng valid na oras';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'I-off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Piliin';

  @override
  String get keyboardKeySpace => 'Puwang';

  @override
  String get lastPageTooltip => 'Huling page';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisensya';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount na lisensya';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Mga Lisensya';

  @override
  String get menuBarMenuLabel => 'Menu sa menu bar';

  @override
  String get modalBarrierDismissLabel => 'I-dismiss';

  @override
  String get moreButtonTooltip => 'Higit Pa';

  @override
  String get nextMonthTooltip => 'Susunod na buwan';

  @override
  String get nextPageTooltip => 'Susunod na page';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Buksan ang menu ng navigation';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow ng $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow ng humigit kumulang $rowCount';

  @override
  String get pasteButtonLabel => 'I-paste';

  @override
  String get popupMenuLabel => 'Popup na menu';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Nakaraang buwan';

  @override
  String get previousPageTooltip => 'Nakaraang page';

  @override
  String get refreshIndicatorSemanticLabel => 'Nagre-refresh';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 character ang natitira';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount na character ang natitira';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Ilipat pababa';

  @override
  String get reorderItemLeft => 'Ilipat pakaliwa';

  @override
  String get reorderItemRight => 'Ilipat pakanan';

  @override
  String get reorderItemToEnd => 'Ilipat sa dulo';

  @override
  String get reorderItemToStart => 'Ilipat sa simula';

  @override
  String get reorderItemUp => 'Ilipat pataas';

  @override
  String get rowsPerPageTitle => 'Mga row bawat page:';

  @override
  String get saveButtonLabel => 'I-SAVE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Maghanap';

  @override
  String get selectAllButtonLabel => 'Piliin lahat';

  @override
  String get selectYearSemanticsLabel => 'Pumili ng taon';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item ang napili';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount na item ang napili';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Ipakita ang mga account';

  @override
  String get showMenuTooltip => 'Ipakita ang menu';

  @override
  String get signedInLabel => 'Naka-sign in';

  @override
  String get tabLabelRaw => r'Tab $tabIndex ng $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'PUMILI NG ORAS';

  @override
  String get timePickerHourLabel => 'Oras';

  @override
  String get timePickerHourModeAnnouncement => 'Pumili ng mga oras';

  @override
  String get timePickerInputHelpText => 'MAGLAGAY NG ORAS';

  @override
  String get timePickerMinuteLabel => 'Minuto';

  @override
  String get timePickerMinuteModeAnnouncement => 'Pumili ng mga minuto';

  @override
  String get unspecifiedDate => 'Petsa';

  @override
  String get unspecifiedDateRange => 'Hanay ng Petsa';

  @override
  String get viewLicensesButtonLabel => 'TINGNAN ANG MGA LISENSYA';
}

/// The translations for French (`fr`).
class MaterialLocalizationFr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for French.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationFr({
    super.localeName = 'fr',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'À propos de $applicationName';

  @override
  String get alertDialogLabel => 'Alerte';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Retour';

  @override
  String get calendarModeButtonLabel => "Passer à l'agenda";

  @override
  String get cancelButtonLabel => 'ANNULER';

  @override
  String get closeButtonLabel => 'FERMER';

  @override
  String get closeButtonTooltip => 'Fermer';

  @override
  String get collapsedIconTapHint => 'Développer';

  @override
  String get continueButtonLabel => 'CONTINUER';

  @override
  String get copyButtonLabel => 'Copier';

  @override
  String get cutButtonLabel => 'Couper';

  @override
  String get dateHelpText => 'jj/mm/aaaa';

  @override
  String get dateInputLabel => 'Saisir une date';

  @override
  String get dateOutOfRangeLabel => 'Hors de portée.';

  @override
  String get datePickerHelpText => 'SÉLECTIONNER UNE DATE';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Date de fin : $fullDate';

  @override
  String get dateRangeEndLabel => 'Date de fin';

  @override
  String get dateRangePickerHelpText => 'SÉLECTIONNER UNE PLAGE';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Date de début : $fullDate';

  @override
  String get dateRangeStartLabel => 'Date de début';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Supprimer';

  @override
  String get dialModeButtonLabel => 'Passer au mode de sélection via le cadran';

  @override
  String get dialogLabel => 'Boîte de dialogue';

  @override
  String get drawerLabel => 'Menu de navigation';

  @override
  String get expandedIconTapHint => 'Réduire';

  @override
  String get firstPageTooltip => 'Première page';

  @override
  String get hideAccountsLabel => 'Masquer les comptes';

  @override
  String get inputDateModeButtonLabel => 'Passer à la saisie';

  @override
  String get inputTimeModeButtonLabel => 'Passer au mode de saisie au format texte';

  @override
  String get invalidDateFormatLabel => 'Format non valide.';

  @override
  String get invalidDateRangeLabel => 'Plage non valide.';

  @override
  String get invalidTimeLabel => 'Veuillez indiquer une heure valide';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Retour arrière';

  @override
  String get keyboardKeyCapsLock => 'Verr Maj';

  @override
  String get keyboardKeyChannelDown => 'Chaîne suivante';

  @override
  String get keyboardKeyChannelUp => 'Chaîne précédente';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Suppr';

  @override
  String get keyboardKeyEject => 'Éjecter';

  @override
  String get keyboardKeyEnd => 'Fin';

  @override
  String get keyboardKeyEscape => 'Échap';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Accueil';

  @override
  String get keyboardKeyInsert => 'Insérer';

  @override
  String get keyboardKeyMeta => 'Méta';

  @override
  String get keyboardKeyMetaMacOs => 'Commande';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Verr Num';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Entrée';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgSuiv';

  @override
  String get keyboardKeyPageUp => 'PgPréc';

  @override
  String get keyboardKeyPower => 'Puissance';

  @override
  String get keyboardKeyPowerOff => 'Éteindre';

  @override
  String get keyboardKeyPrintScreen => 'Impr. écran';

  @override
  String get keyboardKeyScrollLock => 'Arrêt défil';

  @override
  String get keyboardKeySelect => 'Sélectionner';

  @override
  String get keyboardKeySpace => 'Espace';

  @override
  String get lastPageTooltip => 'Dernière page';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String get menuBarMenuLabel => 'Menu de la barre de menu';

  @override
  String get modalBarrierDismissLabel => 'Ignorer';

  @override
  String get moreButtonTooltip => 'Plus';

  @override
  String get nextMonthTooltip => 'Mois suivant';

  @override
  String get nextPageTooltip => 'Page suivante';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Ouvrir le menu de navigation';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow sur $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow sur environ $rowCount';

  @override
  String get pasteButtonLabel => 'Coller';

  @override
  String get popupMenuLabel => 'Menu contextuel';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Mois précédent';

  @override
  String get previousPageTooltip => 'Page précédente';

  @override
  String get refreshIndicatorSemanticLabel => 'Actualiser';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 caractère restant';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount caractères restants';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Déplacer vers le bas';

  @override
  String get reorderItemLeft => 'Déplacer vers la gauche';

  @override
  String get reorderItemRight => 'Déplacer vers la droite';

  @override
  String get reorderItemToEnd => 'Déplacer vers la fin';

  @override
  String get reorderItemToStart => 'Déplacer vers le début';

  @override
  String get reorderItemUp => 'Déplacer vers le haut';

  @override
  String get rowsPerPageTitle => 'Lignes par page :';

  @override
  String get saveButtonLabel => 'ENREGISTRER';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Rechercher';

  @override
  String get selectAllButtonLabel => 'Tout sélectionner';

  @override
  String get selectYearSemanticsLabel => 'Sélectionner une année';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 élément sélectionné';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount éléments sélectionnés';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Aucun élément sélectionné';

  @override
  String get showAccountsLabel => 'Afficher les comptes';

  @override
  String get showMenuTooltip => 'Afficher le menu';

  @override
  String get signedInLabel => 'Connecté';

  @override
  String get tabLabelRaw => r'Onglet $tabIndex sur $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'SÉLECTIONNER UNE HEURE';

  @override
  String get timePickerHourLabel => 'Heure';

  @override
  String get timePickerHourModeAnnouncement => 'Sélectionner une heure';

  @override
  String get timePickerInputHelpText => 'SAISIR UNE HEURE';

  @override
  String get timePickerMinuteLabel => 'Minute';

  @override
  String get timePickerMinuteModeAnnouncement => 'Sélectionner des minutes';

  @override
  String get unspecifiedDate => 'Date';

  @override
  String get unspecifiedDateRange => 'Plage de dates';

  @override
  String get viewLicensesButtonLabel => 'AFFICHER LES LICENCES';
}

/// The translations for French, as used in Canada (`fr_CA`).
class MaterialLocalizationFrCa extends MaterialLocalizationFr {
  /// Create an instance of the translation bundle for French, as used in Canada.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationFrCa({
    super.localeName = 'fr_CA',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get keyboardKeyChannelDown => 'Chaîne préc.';

  @override
  String get keyboardKeyCapsLock => 'Verr. maj.';

  @override
  String get keyboardKeyNumLock => 'Verr. num.';

  @override
  String get keyboardKeyPrintScreen => "Impression de l'écran";

  @override
  String get keyboardKeyNumpadEnter => 'Num Entrée';

  @override
  String get keyboardKeyInsert => 'Insér.';

  @override
  String get keyboardKeyEscape => 'Échapp.';

  @override
  String get keyboardKeyEject => 'Éject.';

  @override
  String get keyboardKeyChannelUp => 'Chaîne suiv.';

  @override
  String get keyboardKeyPower => 'Alimentation';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeySelect => 'Sélect.';

  @override
  String get keyboardKeyScrollLock => 'Arrêt défilement';

  @override
  String get keyboardKeyPageUp => 'Bas page';

  @override
  String get keyboardKeyPageDown => 'Haut page';

  @override
  String get invalidTimeLabel => 'Entrez une heure valide';

  @override
  String get timePickerDialHelpText => "SÉLECTIONNER L'HEURE";

  @override
  String get timePickerInputHelpText => "ENTRER L'HEURE";

  @override
  String get timePickerMinuteLabel => 'Minutes';

  @override
  String get dialModeButtonLabel => 'Passer au mode de sélection du cadran';

  @override
  String get inputTimeModeButtonLabel => "Passer au mode d'entrée Texte";

  @override
  String get dateRangePickerHelpText => 'SÉLECTIONNER LA PLAGE';

  @override
  String get datePickerHelpText => 'SÉLECTIONNER LA DATE';

  @override
  String get invalidDateRangeLabel => 'Plage incorrecte.';

  @override
  String get invalidDateFormatLabel => 'Format incorrect';

  @override
  String get inputDateModeButtonLabel => "Passer à l'entrée";

  @override
  String get dateInputLabel => 'Entrer une date';

  @override
  String get unspecifiedDateRange => 'Période';

  @override
  String get dateHelpText => 'jj-mm-aaaa';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow à $lastRow sur $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow à $lastRow sur environ $rowCount';

  @override
  String get tabLabelRaw => r'Onglet $tabIndex sur $tabCount';

  @override
  String get anteMeridiemAbbreviation => 'am';

  @override
  String get postMeridiemAbbreviation => 'pm';

  @override
  String get timePickerHourModeAnnouncement => 'Sélectionnez les heures';

  @override
  String get timePickerMinuteModeAnnouncement => 'Sélectionnez les minutes';

  @override
  String get reorderItemToStart => 'Déplacer au début';

  @override
  String get reorderItemToEnd => 'Déplacer à la fin';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.frenchCanadian;
}

/// The translations for Galician (`gl`).
class MaterialLocalizationGl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Galician.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationGl({
    super.localeName = 'gl',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Acerca de: $applicationName';

  @override
  String get alertDialogLabel => 'Alerta';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get backButtonTooltip => 'Atrás';

  @override
  String get calendarModeButtonLabel => 'Cambiar ao modo de calendario';

  @override
  String get cancelButtonLabel => 'CANCELAR';

  @override
  String get closeButtonLabel => 'PECHAR';

  @override
  String get closeButtonTooltip => 'Pechar';

  @override
  String get collapsedIconTapHint => 'Despregar';

  @override
  String get continueButtonLabel => 'CONTINUAR';

  @override
  String get copyButtonLabel => 'Copiar';

  @override
  String get cutButtonLabel => 'Cortar';

  @override
  String get dateHelpText => 'mm/dd/aaaa';

  @override
  String get dateInputLabel => 'Introduce a data';

  @override
  String get dateOutOfRangeLabel => 'A data está fóra do intervalo.';

  @override
  String get datePickerHelpText => 'SELECCIONAR UNHA DATA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data de finalización: $fullDate';

  @override
  String get dateRangeEndLabel => 'Data de finalización';

  @override
  String get dateRangePickerHelpText => 'SELECCIONAR UN INTERVALO DE DATAS';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data de inicio: $fullDate';

  @override
  String get dateRangeStartLabel => 'Data de inicio';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Eliminar';

  @override
  String get dialModeButtonLabel => 'Cambiar a modo de selector en esfera';

  @override
  String get dialogLabel => 'Cadro de diálogo';

  @override
  String get drawerLabel => 'Menú de navegación';

  @override
  String get expandedIconTapHint => 'Contraer';

  @override
  String get firstPageTooltip => 'Primeira páxina';

  @override
  String get hideAccountsLabel => 'Ocultar contas';

  @override
  String get inputDateModeButtonLabel => 'Cambiar ao modo de introdución de texto';

  @override
  String get inputTimeModeButtonLabel => 'Cambiar ao modo de escritura dos números';

  @override
  String get invalidDateFormatLabel => 'O formato non é válido.';

  @override
  String get invalidDateRangeLabel => 'O intervalo de datas non é válido.';

  @override
  String get invalidTimeLabel => 'Escribe unha hora válida';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Retroceso';

  @override
  String get keyboardKeyCapsLock => 'Bloq Maiús';

  @override
  String get keyboardKeyChannelDown => 'Canle abaixo';

  @override
  String get keyboardKeyChannelUp => 'Canle arriba';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Supr';

  @override
  String get keyboardKeyEject => 'Expulsar';

  @override
  String get keyboardKeyEnd => 'Fin';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Inicio';

  @override
  String get keyboardKeyInsert => 'Inserir';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Comando';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Bloq Num';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Intro';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'AvPáx';

  @override
  String get keyboardKeyPageUp => 'RePáx';

  @override
  String get keyboardKeyPower => 'Acender';

  @override
  String get keyboardKeyPowerOff => 'Apagar';

  @override
  String get keyboardKeyPrintScreen => 'Imprimir pantalla';

  @override
  String get keyboardKeyScrollLock => 'Bloq Despr';

  @override
  String get keyboardKeySelect => 'Seleccionar';

  @override
  String get keyboardKeySpace => 'Espazo';

  @override
  String get lastPageTooltip => 'Última páxina';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licenza';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenzas';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenzas';

  @override
  String get menuBarMenuLabel => 'Menú da barra de menú';

  @override
  String get modalBarrierDismissLabel => 'Ignorar';

  @override
  String get moreButtonTooltip => 'Máis';

  @override
  String get nextMonthTooltip => 'Mes seguinte';

  @override
  String get nextPageTooltip => 'Páxina seguinte';

  @override
  String get okButtonLabel => 'Aceptar';

  @override
  String get openAppDrawerTooltip => 'Abrir menú de navegación';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow de aproximadamente $rowCount';

  @override
  String get pasteButtonLabel => 'Pegar';

  @override
  String get popupMenuLabel => 'Menú emerxente';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get previousMonthTooltip => 'Mes anterior';

  @override
  String get previousPageTooltip => 'Páxina anterior';

  @override
  String get refreshIndicatorSemanticLabel => 'Actualizar';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 carácter restante';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount caracteres restantes';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Mover cara abaixo';

  @override
  String get reorderItemLeft => 'Mover cara á esquerda';

  @override
  String get reorderItemRight => 'Mover cara á dereita';

  @override
  String get reorderItemToEnd => 'Mover ao final';

  @override
  String get reorderItemToStart => 'Mover ao inicio';

  @override
  String get reorderItemUp => 'Mover cara arriba';

  @override
  String get rowsPerPageTitle => 'Filas por páxina:';

  @override
  String get saveButtonLabel => 'GARDAR';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Buscar';

  @override
  String get selectAllButtonLabel => 'Seleccionar todo';

  @override
  String get selectYearSemanticsLabel => 'Seleccionar ano';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Seleccionouse 1 elemento';

  @override
  String get selectedRowCountTitleOther => r'Seleccionáronse $selectedRowCount elementos';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Non se seleccionaron elementos';

  @override
  String get showAccountsLabel => 'Mostrar contas';

  @override
  String get showMenuTooltip => 'Mostrar menú';

  @override
  String get signedInLabel => 'Sesión iniciada';

  @override
  String get tabLabelRaw => r'Pestana $tabIndex de $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'SELECCIONA A HORA';

  @override
  String get timePickerHourLabel => 'Hora';

  @override
  String get timePickerHourModeAnnouncement => 'Seleccionar horas';

  @override
  String get timePickerInputHelpText => 'INDICA A HORA';

  @override
  String get timePickerMinuteLabel => 'Minuto';

  @override
  String get timePickerMinuteModeAnnouncement => 'Seleccionar minutos';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Intervalo de datas';

  @override
  String get viewLicensesButtonLabel => 'VER LICENZAS';
}

/// The translations for Swiss German Alemannic Alsatian (`gsw`).
class MaterialLocalizationGsw extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Swiss German Alemannic Alsatian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationGsw({
    super.localeName = 'gsw',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Über $applicationName';

  @override
  String get alertDialogLabel => 'Benachrichtigung';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Zurück';

  @override
  String get calendarModeButtonLabel => 'Zum Kalender wechseln';

  @override
  String get cancelButtonLabel => 'ABBRECHEN';

  @override
  String get closeButtonLabel => 'SCHLIEẞEN';

  @override
  String get closeButtonTooltip => 'Schließen';

  @override
  String get collapsedIconTapHint => 'Maximieren';

  @override
  String get continueButtonLabel => 'WEITER';

  @override
  String get copyButtonLabel => 'Kopieren';

  @override
  String get cutButtonLabel => 'Ausschneiden';

  @override
  String get dateHelpText => 'tt.mm.jjjj';

  @override
  String get dateInputLabel => 'Datum eingeben';

  @override
  String get dateOutOfRangeLabel => 'Außerhalb des Zeitraums.';

  @override
  String get datePickerHelpText => 'DATUM AUSWÄHLEN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Enddatum $fullDate';

  @override
  String get dateRangeEndLabel => 'Enddatum';

  @override
  String get dateRangePickerHelpText => 'ZEITRAUM AUSWÄHLEN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdatum $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdatum';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Löschen';

  @override
  String get dialModeButtonLabel => 'Zur Uhrzeitauswahl wechseln';

  @override
  String get dialogLabel => 'Dialogfeld';

  @override
  String get drawerLabel => 'Navigationsmenü';

  @override
  String get expandedIconTapHint => 'Minimieren';

  @override
  String get firstPageTooltip => 'Erste Seite';

  @override
  String get hideAccountsLabel => 'Konten ausblenden';

  @override
  String get inputDateModeButtonLabel => 'Zur Texteingabe wechseln';

  @override
  String get inputTimeModeButtonLabel => 'Zum Texteingabemodus wechseln';

  @override
  String get invalidDateFormatLabel => 'Ungültiges Format.';

  @override
  String get invalidDateRangeLabel => 'Ungültiger Zeitraum.';

  @override
  String get invalidTimeLabel => 'Geben Sie eine gültige Uhrzeit ein';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Rücktaste';

  @override
  String get keyboardKeyCapsLock => 'Feststelltaste';

  @override
  String get keyboardKeyChannelDown => 'Vorheriger Kanal';

  @override
  String get keyboardKeyChannelUp => 'Nächster Kanal';

  @override
  String get keyboardKeyControl => 'Strg';

  @override
  String get keyboardKeyDelete => 'Entf';

  @override
  String get keyboardKeyEject => 'Auswerfen';

  @override
  String get keyboardKeyEnd => 'Ende';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Pos1';

  @override
  String get keyboardKeyInsert => 'Einfg';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Befehl';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Eingabetaste';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Bild ab';

  @override
  String get keyboardKeyPageUp => 'Bild auf';

  @override
  String get keyboardKeyPower => 'Ein/Aus';

  @override
  String get keyboardKeyPowerOff => 'Aus';

  @override
  String get keyboardKeyPrintScreen => 'Druck';

  @override
  String get keyboardKeyScrollLock => 'Rollen';

  @override
  String get keyboardKeySelect => 'Auswählen';

  @override
  String get keyboardKeySpace => 'Leertaste';

  @override
  String get lastPageTooltip => 'Letzte Seite';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 Lizenz';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount Lizenzen';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lizenzen';

  @override
  String get menuBarMenuLabel => 'Menü in der Menüleiste';

  @override
  String get modalBarrierDismissLabel => 'Schließen';

  @override
  String get moreButtonTooltip => 'Mehr';

  @override
  String get nextMonthTooltip => 'Nächster Monat';

  @override
  String get nextPageTooltip => 'Nächste Seite';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Navigationsmenü öffnen';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow von $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow von etwa $rowCount';

  @override
  String get pasteButtonLabel => 'Einsetzen';

  @override
  String get popupMenuLabel => 'Pop-up-Menü';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Vorheriger Monat';

  @override
  String get previousPageTooltip => 'Vorherige Seite';

  @override
  String get refreshIndicatorSemanticLabel => 'Aktualisieren';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Noch 1 Zeichen';

  @override
  String get remainingTextFieldCharacterCountOther => r'Noch $remainingCount Zeichen';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Nach unten verschieben';

  @override
  String get reorderItemLeft => 'Nach links verschieben';

  @override
  String get reorderItemRight => 'Nach rechts verschieben';

  @override
  String get reorderItemToEnd => 'An das Ende verschieben';

  @override
  String get reorderItemToStart => 'An den Anfang verschieben';

  @override
  String get reorderItemUp => 'Nach oben verschieben';

  @override
  String get rowsPerPageTitle => 'Zeilen pro Seite:';

  @override
  String get saveButtonLabel => 'SPEICHERN';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Suchen';

  @override
  String get selectAllButtonLabel => 'Alle auswählen';

  @override
  String get selectYearSemanticsLabel => 'Jahr auswählen';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 Element ausgewählt';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount Elemente ausgewählt';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Konten anzeigen';

  @override
  String get showMenuTooltip => 'Menü anzeigen';

  @override
  String get signedInLabel => 'Angemeldet';

  @override
  String get tabLabelRaw => r'Tab $tabIndex von $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'UHRZEIT AUSWÄHLEN';

  @override
  String get timePickerHourLabel => 'Stunde';

  @override
  String get timePickerHourModeAnnouncement => 'Stunden auswählen';

  @override
  String get timePickerInputHelpText => 'ZEIT EINGEBEN';

  @override
  String get timePickerMinuteLabel => 'Minute';

  @override
  String get timePickerMinuteModeAnnouncement => 'Minuten auswählen';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Zeitraum';

  @override
  String get viewLicensesButtonLabel => 'LIZENZEN ANZEIGEN';
}

/// The translations for Gujarati (`gu`).
class MaterialLocalizationGu extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Gujarati.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationGu({
    super.localeName = 'gu',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName વિશે';

  @override
  String get alertDialogLabel => 'અલર્ટ';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'પાછળ';

  @override
  String get calendarModeButtonLabel => 'કૅલેન્ડર મોડ પર સ્વિચ કરો';

  @override
  String get cancelButtonLabel => 'રદ કરો';

  @override
  String get closeButtonLabel => 'બંધ કરો';

  @override
  String get closeButtonTooltip => 'બંધ કરો';

  @override
  String get collapsedIconTapHint => 'વિસ્તૃત કરો';

  @override
  String get continueButtonLabel => 'ચાલુ રાખો';

  @override
  String get copyButtonLabel => 'કૉપિ કરો';

  @override
  String get cutButtonLabel => 'કાપો';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => 'તારીખ દાખલ કરો';

  @override
  String get dateOutOfRangeLabel => 'રેંજમાં નથી.';

  @override
  String get datePickerHelpText => 'તારીખ પસંદ કરો';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'સમાપ્તિની તારીખ $fullDate';

  @override
  String get dateRangeEndLabel => 'સમાપ્તિની તારીખ';

  @override
  String get dateRangePickerHelpText => 'રેંજ પસંદ કરો';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'શરૂ કરવાની તારીખ $fullDate';

  @override
  String get dateRangeStartLabel => 'શરૂ કરવાની તારીખ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ડિલીટ કરો';

  @override
  String get dialModeButtonLabel => 'ડાયલ પિકર મોડ પર સ્વિચ કરો';

  @override
  String get dialogLabel => 'સંવાદ';

  @override
  String get drawerLabel => 'નૅવિગેશન મેનૂ';

  @override
  String get expandedIconTapHint => 'સંકુચિત કરો';

  @override
  String get firstPageTooltip => 'પહેલું પેજ';

  @override
  String get hideAccountsLabel => 'એકાઉન્ટ છુપાવો';

  @override
  String get inputDateModeButtonLabel => 'ઇનપુટ મોડ પર સ્વિચ કરો';

  @override
  String get inputTimeModeButtonLabel => 'ટેક્સ્ટ ઇનપુટ મોડ પર સ્વિચ કરો';

  @override
  String get invalidDateFormatLabel => 'અમાન્ય ફોર્મેટ.';

  @override
  String get invalidDateRangeLabel => 'અમાન્ય રેંજ.';

  @override
  String get invalidTimeLabel => 'માન્ય સમય દાખલ કરો';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'છેલ્લું પેજ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 લાઇસન્સ';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount લાઇસન્સ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'લાઇસન્સ';

  @override
  String get menuBarMenuLabel => 'મેનૂ બાર મેનૂ';

  @override
  String get modalBarrierDismissLabel => 'છોડી દો';

  @override
  String get moreButtonTooltip => 'વધુ';

  @override
  String get nextMonthTooltip => 'આગલો મહિનો';

  @override
  String get nextPageTooltip => 'આગલું પેજ';

  @override
  String get okButtonLabel => 'ઓકે';

  @override
  String get openAppDrawerTooltip => 'નૅવિગેશન મેનૂ ખોલો';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCountમાંથી $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'આશરે $rowCountમાંથી $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'પેસ્ટ કરો';

  @override
  String get popupMenuLabel => 'પૉપઅપ મેનૂ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'પાછલો મહિનો';

  @override
  String get previousPageTooltip => 'પાછલું પેજ';

  @override
  String get refreshIndicatorSemanticLabel => 'રિફ્રેશ કરો';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 અક્ષર બાકી';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount અક્ષર બાકી';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'નીચે ખસેડો';

  @override
  String get reorderItemLeft => 'ડાબે ખસેડો';

  @override
  String get reorderItemRight => 'જમણે ખસેડો';

  @override
  String get reorderItemToEnd => 'અંતમાં ખસેડો';

  @override
  String get reorderItemToStart => 'પ્રારંભમાં ખસેડો';

  @override
  String get reorderItemUp => 'ઉપર ખસેડો';

  @override
  String get rowsPerPageTitle => 'પેજ દીઠ પંક્તિઓ:';

  @override
  String get saveButtonLabel => 'સાચવો';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'શોધો';

  @override
  String get selectAllButtonLabel => 'બધા પસંદ કરો';

  @override
  String get selectYearSemanticsLabel => 'વર્ષ પસંદ કરો';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 આઇટમ પસંદ કરી';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount આઇટમ પસંદ કરી';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'એકાઉન્ટ બતાવો';

  @override
  String get showMenuTooltip => 'મેનૂ બતાવો';

  @override
  String get signedInLabel => 'આમાં સાઇન ઇન કર્યું છે';

  @override
  String get tabLabelRaw => r'$tabCountમાંથી $tabIndex ટૅબ';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'સમય પસંદ કરો';

  @override
  String get timePickerHourLabel => 'કલાક';

  @override
  String get timePickerHourModeAnnouncement => 'કલાક પસંદ કરો';

  @override
  String get timePickerInputHelpText => 'સમય દાખલ કરો';

  @override
  String get timePickerMinuteLabel => 'મિનિટ';

  @override
  String get timePickerMinuteModeAnnouncement => 'મિનિટ પસંદ કરો';

  @override
  String get unspecifiedDate => 'તારીખ';

  @override
  String get unspecifiedDateRange => 'તારીખ રેંજ';

  @override
  String get viewLicensesButtonLabel => 'લાઇસન્સ જુઓ';
}

/// The translations for Hebrew (`he`).
class MaterialLocalizationHe extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Hebrew.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationHe({
    super.localeName = 'he',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'מידע על $applicationName';

  @override
  String get alertDialogLabel => 'התראה';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'הקודם';

  @override
  String get calendarModeButtonLabel => 'מעבר למצב היומן';

  @override
  String get cancelButtonLabel => 'ביטול';

  @override
  String get closeButtonLabel => 'סגירה';

  @override
  String get closeButtonTooltip => 'סגירה';

  @override
  String get collapsedIconTapHint => 'הרחבה';

  @override
  String get continueButtonLabel => 'המשך';

  @override
  String get copyButtonLabel => 'העתקה';

  @override
  String get cutButtonLabel => 'גזירה';

  @override
  String get dateHelpText => 'dd.mm.yyyy';

  @override
  String get dateInputLabel => 'יש להזין תאריך';

  @override
  String get dateOutOfRangeLabel => 'מחוץ לטווח.';

  @override
  String get datePickerHelpText => 'בחירת תאריך';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'תאריך סיום: $fullDate';

  @override
  String get dateRangeEndLabel => 'תאריך סיום';

  @override
  String get dateRangePickerHelpText => 'בחירת טווח';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'תאריך התחלה: $fullDate';

  @override
  String get dateRangeStartLabel => 'תאריך התחלה';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'מחיקה';

  @override
  String get dialModeButtonLabel => 'מעבר לבחירה באמצעות חוגה';

  @override
  String get dialogLabel => 'תיבת דו-שיח';

  @override
  String get drawerLabel => 'תפריט ניווט';

  @override
  String get expandedIconTapHint => 'כיווץ';

  @override
  String get firstPageTooltip => 'לדף הראשון';

  @override
  String get hideAccountsLabel => 'הסתרת החשבונות';

  @override
  String get inputDateModeButtonLabel => 'מעבר למצב הקלט';

  @override
  String get inputTimeModeButtonLabel => 'מעבר להזנת טקסט';

  @override
  String get invalidDateFormatLabel => 'פורמט לא חוקי.';

  @override
  String get invalidDateRangeLabel => 'טווח לא תקף.';

  @override
  String get invalidTimeLabel => 'יש להזין שעה תקינה';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => '+ ‏Num';

  @override
  String get keyboardKeyNumpadComma => ', ‏Num';

  @override
  String get keyboardKeyNumpadDecimal => '. ‏Num';

  @override
  String get keyboardKeyNumpadDivide => '/ ‏Num';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => '= ‏Num';

  @override
  String get keyboardKeyNumpadMultiply => '* ‏Num';

  @override
  String get keyboardKeyNumpadParenLeft => ') ‏Num';

  @override
  String get keyboardKeyNumpadParenRight => '( ‏Num';

  @override
  String get keyboardKeyNumpadSubtract => '- ‏Num';

  @override
  String get keyboardKeyPageDown => 'Page Down';

  @override
  String get keyboardKeyPageUp => 'Page Up';

  @override
  String get keyboardKeyPower => 'הפעלה';

  @override
  String get keyboardKeyPowerOff => 'כיבוי';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'רווח';

  @override
  String get lastPageTooltip => 'לדף האחרון';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount רישיונות';

  @override
  String? get licensesPackageDetailTextOne => 'רישיון אחד';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount רישיונות';

  @override
  String? get licensesPackageDetailTextTwo => r'$licenseCount רישיונות';

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'רישיונות';

  @override
  String get menuBarMenuLabel => 'תפריט בסרגל התפריטים';

  @override
  String get modalBarrierDismissLabel => 'סגירה';

  @override
  String get moreButtonTooltip => 'עוד';

  @override
  String get nextMonthTooltip => 'החודש הבא';

  @override
  String get nextPageTooltip => 'הדף הבא';

  @override
  String get okButtonLabel => 'אישור';

  @override
  String get openAppDrawerTooltip => 'פתיחה של תפריט הניווט';

  @override
  String get pageRowsInfoTitleRaw => r'$lastRow–$firstRow מתוך $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$lastRow–$firstRow מתוך כ-$rowCount';

  @override
  String get pasteButtonLabel => 'הדבקה';

  @override
  String get popupMenuLabel => 'תפריט קופץ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'החודש הקודם';

  @override
  String get previousPageTooltip => 'הדף הקודם';

  @override
  String get refreshIndicatorSemanticLabel => 'רענון';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => r'נותרו $remainingCount תווים';

  @override
  String? get remainingTextFieldCharacterCountOne => 'נותר תו אחד';

  @override
  String get remainingTextFieldCharacterCountOther => r'נותרו $remainingCount תווים';

  @override
  String? get remainingTextFieldCharacterCountTwo => r'נותרו $remainingCount תווים';

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'העברה למטה';

  @override
  String get reorderItemLeft => 'העברה שמאלה';

  @override
  String get reorderItemRight => 'העברה ימינה';

  @override
  String get reorderItemToEnd => 'העברה לסוף';

  @override
  String get reorderItemToStart => 'העברה להתחלה';

  @override
  String get reorderItemUp => 'העברה למעלה';

  @override
  String get rowsPerPageTitle => 'שורות בכל דף:';

  @override
  String get saveButtonLabel => 'שמירה';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'חיפוש';

  @override
  String get selectAllButtonLabel => 'בחירת הכול';

  @override
  String get selectYearSemanticsLabel => 'בחירת שנה';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => r'$selectedRowCount פריטים נבחרו';

  @override
  String? get selectedRowCountTitleOne => 'פריט אחד נבחר';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount פריטים נבחרו';

  @override
  String? get selectedRowCountTitleTwo => r'$selectedRowCount פריטים נבחרו';

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'הצגת החשבונות';

  @override
  String get showMenuTooltip => 'הצגת התפריט';

  @override
  String get signedInLabel => 'מחובר';

  @override
  String get tabLabelRaw => r'כרטיסייה $tabIndex מתוך $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'בחירת שעה';

  @override
  String get timePickerHourLabel => 'שעה';

  @override
  String get timePickerHourModeAnnouncement => 'בחירת שעות';

  @override
  String get timePickerInputHelpText => 'הזנת שעה';

  @override
  String get timePickerMinuteLabel => 'דקות';

  @override
  String get timePickerMinuteModeAnnouncement => 'בחירת דקות';

  @override
  String get unspecifiedDate => 'תאריך';

  @override
  String get unspecifiedDateRange => 'טווח תאריכים';

  @override
  String get viewLicensesButtonLabel => 'הצגת הרישיונות';
}

/// The translations for Hindi (`hi`).
class MaterialLocalizationHi extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Hindi.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationHi({
    super.localeName = 'hi',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName के बारे में जानकारी';

  @override
  String get alertDialogLabel => 'अलर्ट';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'वापस जाएं';

  @override
  String get calendarModeButtonLabel => 'कैलेंडर पर जाएं';

  @override
  String get cancelButtonLabel => 'रद्द करें';

  @override
  String get closeButtonLabel => 'बंद करें';

  @override
  String get closeButtonTooltip => 'बंद करें';

  @override
  String get collapsedIconTapHint => 'बड़ा करें';

  @override
  String get continueButtonLabel => 'जारी रखें';

  @override
  String get copyButtonLabel => 'कॉपी करें';

  @override
  String get cutButtonLabel => 'काटें';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => 'तारीख डालें';

  @override
  String get dateOutOfRangeLabel => 'सीमा से ज़्यादा.';

  @override
  String get datePickerHelpText => 'तारीख चुनें';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'खत्म होने की तारीख $fullDate';

  @override
  String get dateRangeEndLabel => 'खत्म होने की तारीख';

  @override
  String get dateRangePickerHelpText => 'सीमा चुनें';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'शुरू होने की तारीख $fullDate';

  @override
  String get dateRangeStartLabel => 'शुरू होने की तारीख';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'मिटाएं';

  @override
  String get dialModeButtonLabel => 'डायल पिकर मोड पर स्विच करें';

  @override
  String get dialogLabel => 'संवाद';

  @override
  String get drawerLabel => 'नेविगेशन मेन्यू';

  @override
  String get expandedIconTapHint => 'छोटा करें';

  @override
  String get firstPageTooltip => 'पहला पेज';

  @override
  String get hideAccountsLabel => 'खाते छिपाएं';

  @override
  String get inputDateModeButtonLabel => 'इनपुट पर जाएं';

  @override
  String get inputTimeModeButtonLabel => 'टेक्स्ट के इनपुट मोड पर स्विच करें';

  @override
  String get invalidDateFormatLabel => 'अमान्य फ़ॉर्मैट.';

  @override
  String get invalidDateRangeLabel => 'तारीख की अमान्य सीमा.';

  @override
  String get invalidTimeLabel => 'मान्य समय डालें';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'आखिरी पेज';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 लाइसेंस';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount लाइसेंस';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'लाइसेंस';

  @override
  String get menuBarMenuLabel => 'मेन्यू बार का मेन्यू';

  @override
  String get modalBarrierDismissLabel => 'खारिज करें';

  @override
  String get moreButtonTooltip => 'ज़्यादा';

  @override
  String get nextMonthTooltip => 'अगला महीना';

  @override
  String get nextPageTooltip => 'अगला पेज';

  @override
  String get okButtonLabel => 'ठीक है';

  @override
  String get openAppDrawerTooltip => 'नेविगेशन मेन्यू खोलें';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount का $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$rowCount में से करीब $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'चिपकाएं';

  @override
  String get popupMenuLabel => 'पॉपअप मेन्यू';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'पिछला महीना';

  @override
  String get previousPageTooltip => 'पिछला पेज';

  @override
  String get refreshIndicatorSemanticLabel => 'रीफ़्रेश करें';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'एक वर्ण आैर डाला जा सकता है';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount वर्ण आैर डाले जा सकते हैं';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'नीचे ले जाएं';

  @override
  String get reorderItemLeft => 'बाएं ले जाएं';

  @override
  String get reorderItemRight => 'दाएं ले जाएं';

  @override
  String get reorderItemToEnd => 'आखिर में ले जाएं';

  @override
  String get reorderItemToStart => 'शुरुआत पर ले जाएं';

  @override
  String get reorderItemUp => 'ऊपर ले जाएं';

  @override
  String get rowsPerPageTitle => 'हर पेज में पंक्तियों की संख्या:';

  @override
  String get saveButtonLabel => 'सेव करें';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => 'खोजें';

  @override
  String get selectAllButtonLabel => 'सभी को चुनें';

  @override
  String get selectYearSemanticsLabel => 'साल चुनें';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 चीज़ चुनी गई';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount चीज़ें चुनी गईं';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'खाते दिखाएं';

  @override
  String get showMenuTooltip => 'मेन्यू दिखाएं';

  @override
  String get signedInLabel => 'साइन इन किया हुआ है';

  @override
  String get tabLabelRaw => r'$tabCount का टैब $tabIndex';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.a_space_h_colon_mm;

  @override
  String get timePickerDialHelpText => 'समय क्षेत्र चुनें';

  @override
  String get timePickerHourLabel => 'घंटा';

  @override
  String get timePickerHourModeAnnouncement => 'घंटे के हिसाब से समय चुनें';

  @override
  String get timePickerInputHelpText => 'समय डालें';

  @override
  String get timePickerMinuteLabel => 'मिनट';

  @override
  String get timePickerMinuteModeAnnouncement => 'मिनट के हिसाब से समय चुनें';

  @override
  String get unspecifiedDate => 'तारीख';

  @override
  String get unspecifiedDateRange => 'तारीख की सीमा';

  @override
  String get viewLicensesButtonLabel => 'लाइसेंस देखें';
}

/// The translations for Croatian (`hr`).
class MaterialLocalizationHr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Croatian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationHr({
    super.localeName = 'hr',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'O aplikaciji $applicationName';

  @override
  String get alertDialogLabel => 'Upozorenje';

  @override
  String get anteMeridiemAbbreviation => 'prijepodne';

  @override
  String get backButtonTooltip => 'Natrag';

  @override
  String get calendarModeButtonLabel => 'Prijeđite na kalendar';

  @override
  String get cancelButtonLabel => 'ODUSTANI';

  @override
  String get closeButtonLabel => 'ZATVORI';

  @override
  String get closeButtonTooltip => 'Zatvaranje';

  @override
  String get collapsedIconTapHint => 'Proširi';

  @override
  String get continueButtonLabel => 'NASTAVI';

  @override
  String get copyButtonLabel => 'Kopiraj';

  @override
  String get cutButtonLabel => 'Izreži';

  @override
  String get dateHelpText => 'dd. mm. gggg.';

  @override
  String get dateInputLabel => 'Unesite datum';

  @override
  String get dateOutOfRangeLabel => 'Izvan raspona.';

  @override
  String get datePickerHelpText => 'ODABERITE DATUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Datum završetka $fullDate';

  @override
  String get dateRangeEndLabel => 'Datum završetka';

  @override
  String get dateRangePickerHelpText => 'ODABERITE RASPON';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Datum početka $fullDate';

  @override
  String get dateRangeStartLabel => 'Datum početka';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Brisanje';

  @override
  String get dialModeButtonLabel => 'Prijelaz na način alata za odabir biranja';

  @override
  String get dialogLabel => 'Dijalog';

  @override
  String get drawerLabel => 'Navigacijski izbornik';

  @override
  String get expandedIconTapHint => 'Sažmi';

  @override
  String get firstPageTooltip => 'Prva stranica';

  @override
  String get hideAccountsLabel => 'Sakrijte račune';

  @override
  String get inputDateModeButtonLabel => 'Prijeđite na unos';

  @override
  String get inputTimeModeButtonLabel => 'Prijelaz na način unosa teksta';

  @override
  String get invalidDateFormatLabel => 'Format nije važeći.';

  @override
  String get invalidDateRangeLabel => 'Raspon nije važeći.';

  @override
  String get invalidTimeLabel => 'Unesite važeće vrijeme';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Kanal prema dolje';

  @override
  String get keyboardKeyChannelUp => 'Kanal prema gore';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Izbaci';

  @override
  String get keyboardKeyEnd => 'Kraj';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Umetni';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Naredba';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Broj 0';

  @override
  String get keyboardKeyNumpad1 => 'Broj 1';

  @override
  String get keyboardKeyNumpad2 => 'Broj 2';

  @override
  String get keyboardKeyNumpad3 => 'Broj 3';

  @override
  String get keyboardKeyNumpad4 => 'Broj 4';

  @override
  String get keyboardKeyNumpad5 => 'Broj 5';

  @override
  String get keyboardKeyNumpad6 => 'Broj 6';

  @override
  String get keyboardKeyNumpad7 => 'Broj 7';

  @override
  String get keyboardKeyNumpad8 => 'Broj 8';

  @override
  String get keyboardKeyNumpad9 => 'Broj 9';

  @override
  String get keyboardKeyNumpadAdd => 'Broj +';

  @override
  String get keyboardKeyNumpadComma => 'Broj ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Broj .';

  @override
  String get keyboardKeyNumpadDivide => 'Broj /';

  @override
  String get keyboardKeyNumpadEnter => 'Broj Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Broj =';

  @override
  String get keyboardKeyNumpadMultiply => 'Broj *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Broj (';

  @override
  String get keyboardKeyNumpadParenRight => 'Broj )';

  @override
  String get keyboardKeyNumpadSubtract => 'Broj -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Napajanje';

  @override
  String get keyboardKeyPowerOff => 'Isključivanje';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Odaberi';

  @override
  String get keyboardKeySpace => 'Razmaknica';

  @override
  String get lastPageTooltip => 'Posljednja stranica';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licence';

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licenca';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenci';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licence';

  @override
  String get menuBarMenuLabel => 'Izbornik trake izbornika';

  @override
  String get modalBarrierDismissLabel => 'Odbaci';

  @override
  String get moreButtonTooltip => 'Više';

  @override
  String get nextMonthTooltip => 'Sljedeći mjesec';

  @override
  String get nextPageTooltip => 'Sljedeća stranica';

  @override
  String get okButtonLabel => 'U REDU';

  @override
  String get openAppDrawerTooltip => 'Otvaranje izbornika za navigaciju';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow od $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow od otprilike $rowCount';

  @override
  String get pasteButtonLabel => 'Zalijepi';

  @override
  String get popupMenuLabel => 'Skočni izbornik';

  @override
  String get postMeridiemAbbreviation => 'popodne';

  @override
  String get previousMonthTooltip => 'Prethodni mjesec';

  @override
  String get previousPageTooltip => 'Prethodna stranica';

  @override
  String get refreshIndicatorSemanticLabel => 'Osvježi';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Preostala su $remainingCount znaka';

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Preostao je 1 znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Preostalo je $remainingCount znakova';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Pomakni prema dolje';

  @override
  String get reorderItemLeft => 'Pomakni ulijevo';

  @override
  String get reorderItemRight => 'Pomakni udesno';

  @override
  String get reorderItemToEnd => 'Premjesti na kraj';

  @override
  String get reorderItemToStart => 'Premjesti na početak';

  @override
  String get reorderItemUp => 'Pomakni prema gore';

  @override
  String get rowsPerPageTitle => 'Redaka po stranici:';

  @override
  String get saveButtonLabel => 'SPREMI';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Pretražite';

  @override
  String get selectAllButtonLabel => 'Odaberi sve';

  @override
  String get selectYearSemanticsLabel => 'Odaberite godinu';

  @override
  String? get selectedRowCountTitleFew => r'Odabrane su $selectedRowCount stavke';

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Odabrana je jedna stavka';

  @override
  String get selectedRowCountTitleOther => r'Odabrano je $selectedRowCount stavki';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Prikažite račune';

  @override
  String get showMenuTooltip => 'Prikaz izbornika';

  @override
  String get signedInLabel => 'Prijavljeni korisnik';

  @override
  String get tabLabelRaw => r'Kartica $tabIndex od $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ODABERITE VRIJEME';

  @override
  String get timePickerHourLabel => 'Sat';

  @override
  String get timePickerHourModeAnnouncement => 'Odaberite sate';

  @override
  String get timePickerInputHelpText => 'UNESITE VRIJEME';

  @override
  String get timePickerMinuteLabel => 'Minuta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Odaberite minute';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Datumski raspon';

  @override
  String get viewLicensesButtonLabel => 'PRIKAŽI LICENCE';
}

/// The translations for Hungarian (`hu`).
class MaterialLocalizationHu extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Hungarian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationHu({
    super.localeName = 'hu',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'A(z) $applicationName névjegye';

  @override
  String get alertDialogLabel => 'Értesítés';

  @override
  String get anteMeridiemAbbreviation => 'de.';

  @override
  String get backButtonTooltip => 'Vissza';

  @override
  String get calendarModeButtonLabel => 'Váltás naptárra';

  @override
  String get cancelButtonLabel => 'MÉGSE';

  @override
  String get closeButtonLabel => 'BEZÁRÁS';

  @override
  String get closeButtonTooltip => 'Bezárás';

  @override
  String get collapsedIconTapHint => 'Kibontás';

  @override
  String get continueButtonLabel => 'TOVÁBB';

  @override
  String get copyButtonLabel => 'Másolás';

  @override
  String get cutButtonLabel => 'Kivágás';

  @override
  String get dateHelpText => 'éééé. hh. nn.';

  @override
  String get dateInputLabel => 'Adja meg a dátumot';

  @override
  String get dateOutOfRangeLabel => 'Tartományon kívül.';

  @override
  String get datePickerHelpText => 'DÁTUM KIVÁLASZTÁSA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Befejezés dátuma: $fullDate';

  @override
  String get dateRangeEndLabel => 'Befejezés dátuma';

  @override
  String get dateRangePickerHelpText => 'TARTOMÁNY KIJELÖLÉSE';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Kezdés dátuma: $fullDate';

  @override
  String get dateRangeStartLabel => 'Kezdés dátuma';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Törlés';

  @override
  String get dialModeButtonLabel => 'Váltás időpontválasztó módra';

  @override
  String get dialogLabel => 'Párbeszédablak';

  @override
  String get drawerLabel => 'Navigációs menü';

  @override
  String get expandedIconTapHint => 'Összecsukás';

  @override
  String get firstPageTooltip => 'Első oldal';

  @override
  String get hideAccountsLabel => 'Fiókok elrejtése';

  @override
  String get inputDateModeButtonLabel => 'Váltás bevitelre';

  @override
  String get inputTimeModeButtonLabel => 'Váltás szövegbeviteli módra';

  @override
  String get invalidDateFormatLabel => 'Érvénytelen formátum.';

  @override
  String get invalidDateRangeLabel => 'Érvénytelen tartomány.';

  @override
  String get invalidTimeLabel => 'Érvényes formátumban adja meg az időt';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Csatorna – le';

  @override
  String get keyboardKeyChannelUp => 'Csatorna – fel';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Kiadás';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Bekapcsolás';

  @override
  String get keyboardKeyPowerOff => 'Kikapcsolás';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Kiválasztás';

  @override
  String get keyboardKeySpace => 'Szóköz';

  @override
  String get lastPageTooltip => 'Utolsó oldal';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licenc';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenc';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licencek';

  @override
  String get menuBarMenuLabel => 'Menüsor menüje';

  @override
  String get modalBarrierDismissLabel => 'Elvetés';

  @override
  String get moreButtonTooltip => 'Több';

  @override
  String get nextMonthTooltip => 'Következő hónap';

  @override
  String get nextPageTooltip => 'Következő oldal';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Navigációs menü megnyitása';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount/$firstRow–$lastRow.';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'Körülbelül $rowCount/$firstRow–$lastRow.';

  @override
  String get pasteButtonLabel => 'Beillesztés';

  @override
  String get popupMenuLabel => 'Előugró menü';

  @override
  String get postMeridiemAbbreviation => 'du.';

  @override
  String get previousMonthTooltip => 'Előző hónap';

  @override
  String get previousPageTooltip => 'Előző oldal';

  @override
  String get refreshIndicatorSemanticLabel => 'Frissítés';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 karakter maradt';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount karakter maradt';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Áthelyezés lefelé';

  @override
  String get reorderItemLeft => 'Áthelyezés balra';

  @override
  String get reorderItemRight => 'Áthelyezés jobbra';

  @override
  String get reorderItemToEnd => 'Áthelyezés a végére';

  @override
  String get reorderItemToStart => 'Áthelyezés az elejére';

  @override
  String get reorderItemUp => 'Áthelyezés felfelé';

  @override
  String get rowsPerPageTitle => 'Oldalankénti sorszám:';

  @override
  String get saveButtonLabel => 'MENTÉS';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Keresés';

  @override
  String get selectAllButtonLabel => 'Összes kijelölése';

  @override
  String get selectYearSemanticsLabel => 'Válassza ki az évet';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 elem kiválasztva';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elem kiválasztva';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Fiókok megjelenítése';

  @override
  String get showMenuTooltip => 'Menü megjelenítése';

  @override
  String get signedInLabel => 'Bejelentkezve';

  @override
  String get tabLabelRaw => r'$tabCount/$tabIndex. lap';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'IDŐPONT KIVÁLASZTÁSA';

  @override
  String get timePickerHourLabel => 'Óra';

  @override
  String get timePickerHourModeAnnouncement => 'Óra kiválasztása';

  @override
  String get timePickerInputHelpText => 'IDŐPONT MEGADÁSA';

  @override
  String get timePickerMinuteLabel => 'Perc';

  @override
  String get timePickerMinuteModeAnnouncement => 'Perc kiválasztása';

  @override
  String get unspecifiedDate => 'Dátum';

  @override
  String get unspecifiedDateRange => 'Dátumtartomány';

  @override
  String get viewLicensesButtonLabel => 'LICENCEK MEGTEKINTÉSE';
}

/// The translations for Armenian (`hy`).
class MaterialLocalizationHy extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Armenian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationHy({
    super.localeName = 'hy',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName հավելվածի մասին';

  @override
  String get alertDialogLabel => 'Ծանուցում';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Հետ';

  @override
  String get calendarModeButtonLabel => 'Անցնել օրացույցին';

  @override
  String get cancelButtonLabel => 'ՉԵՂԱՐԿԵԼ';

  @override
  String get closeButtonLabel => 'ՓԱԿԵԼ';

  @override
  String get closeButtonTooltip => 'Փակել';

  @override
  String get collapsedIconTapHint => 'Ծավալել';

  @override
  String get continueButtonLabel => 'ՇԱՐՈՒՆԱԿԵԼ';

  @override
  String get copyButtonLabel => 'Պատճենել';

  @override
  String get cutButtonLabel => 'Կտրել';

  @override
  String get dateHelpText => 'օօ.աա.տտտտ';

  @override
  String get dateInputLabel => 'Մուտքագրել ամսաթիվ';

  @override
  String get dateOutOfRangeLabel => 'Թույլատրելի ընդգրկույթից դուրս է։';

  @override
  String get datePickerHelpText => 'ԸՆՏՐԵԼ ԱՄՍԱԹԻՎ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Ավարտի ամսաթիվը՝ $fullDate';

  @override
  String get dateRangeEndLabel => 'Ավարտի ամսաթիվը';

  @override
  String get dateRangePickerHelpText => 'ԸՆՏՐԵԼ ԺԱՄԱՆԱԿԱՀԱՏՎԱԾ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Մեկնարկի ամսաթիվը՝ $fullDate';

  @override
  String get dateRangeStartLabel => 'Մեկնարկի ամսաթիվը';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Ջնջել';

  @override
  String get dialModeButtonLabel => 'Անցնել թվերի ընտրման ռեժիմին';

  @override
  String get dialogLabel => 'Երկխոսության պատուհան';

  @override
  String get drawerLabel => 'Նավիգացիայի ընտրացանկ';

  @override
  String get expandedIconTapHint => 'Ծալել';

  @override
  String get firstPageTooltip => 'Առաջին էջ';

  @override
  String get hideAccountsLabel => 'Թաքցնել հաշիվները';

  @override
  String get inputDateModeButtonLabel => 'Անցնել ներածման ռեժիմին';

  @override
  String get inputTimeModeButtonLabel => 'Անցնել տեքստի մուտքագրման ռեժիմին';

  @override
  String get invalidDateFormatLabel => 'Ձևաչափն անվավեր է։';

  @override
  String get invalidDateRangeLabel => 'Ժամանակահատվածն անվավեր է:';

  @override
  String get invalidTimeLabel => 'Մուտքագրեք վավեր ժամ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Հաջորդ ալիքը';

  @override
  String get keyboardKeyChannelUp => 'Նախորդ ալիքը';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Սնուցում';

  @override
  String get keyboardKeyPowerOff => 'Անջատել';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Ընտրել';

  @override
  String get keyboardKeySpace => 'Բացատ';

  @override
  String get lastPageTooltip => 'Վերջին էջ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 լիցենզիա';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount լիցենզիա';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Արտոնագրեր';

  @override
  String get menuBarMenuLabel => 'Ընտրացանկի գոտու ընտրացանկ';

  @override
  String get modalBarrierDismissLabel => 'Փակել';

  @override
  String get moreButtonTooltip => 'Այլ';

  @override
  String get nextMonthTooltip => 'Հաջորդ ամիս';

  @override
  String get nextPageTooltip => 'Հաջորդ էջ';

  @override
  String get okButtonLabel => 'Եղավ';

  @override
  String get openAppDrawerTooltip => 'Բացել նավիգացիայի ընտրացանկը';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow $rowCount-ից';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow մոտավորապես $rowCount-ից';

  @override
  String get pasteButtonLabel => 'Տեղադրել';

  @override
  String get popupMenuLabel => 'Ելնող ընտրացանկ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Նախորդ ամիս';

  @override
  String get previousPageTooltip => 'Նախորդ էջ';

  @override
  String get refreshIndicatorSemanticLabel => 'Թարմացնել';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Մնաց $remainingCount նիշ';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Մնաց $remainingCount նիշ';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Մնացել է 1 նիշ';

  @override
  String get remainingTextFieldCharacterCountOther => r'Մնացել է $remainingCount նիշ';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'Նիշի հնարավորություն չկա';

  @override
  String get reorderItemDown => 'Տեղափոխել ներքև';

  @override
  String get reorderItemLeft => 'Տեղափոխել ձախ';

  @override
  String get reorderItemRight => 'Տեղափոխել աջ';

  @override
  String get reorderItemToEnd => 'Տեղափոխել վերջ';

  @override
  String get reorderItemToStart => 'Տեղափոխել սկիզբ';

  @override
  String get reorderItemUp => 'Տեղափոխել վերև';

  @override
  String get rowsPerPageTitle => 'Մեկ էջի տողերը՝';

  @override
  String get saveButtonLabel => 'ՊԱՀԵԼ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Որոնել';

  @override
  String get selectAllButtonLabel => 'Նշել բոլորը';

  @override
  String get selectYearSemanticsLabel => 'Ընտրել տարին';

  @override
  String? get selectedRowCountTitleFew => r'Ընտրված է $selectedRowCount օբյեկտ';

  @override
  String? get selectedRowCountTitleMany => r'Ընտրված է $selectedRowCount օբյեկտ';

  @override
  String? get selectedRowCountTitleOne => 'Ընտրվել է 1 տարր';

  @override
  String get selectedRowCountTitleOther => r'Ընտրվել է $selectedRowCount տարր';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Տողերը ընտրված չեն';

  @override
  String get showAccountsLabel => 'Ցույց տալ հաշիվները';

  @override
  String get showMenuTooltip => 'Ցույց տալ ընտրացանկը';

  @override
  String get signedInLabel => 'Դուք մուտք եք գործել';

  @override
  String get tabLabelRaw => r'Ներդիր $tabIndex՝ $tabCount-ից';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ԸՆՏՐԵՔ ԺԱՄԸ';

  @override
  String get timePickerHourLabel => 'Ժամ';

  @override
  String get timePickerHourModeAnnouncement => 'Ընտրեք ժամը';

  @override
  String get timePickerInputHelpText => 'ՄՈՒՏՔԱԳՐԵՔ ԺԱՄԸ';

  @override
  String get timePickerMinuteLabel => 'Րոպե';

  @override
  String get timePickerMinuteModeAnnouncement => 'Ընտրեք րոպեները';

  @override
  String get unspecifiedDate => 'Ամսաթիվ';

  @override
  String get unspecifiedDateRange => 'Ժամանակահատված';

  @override
  String get viewLicensesButtonLabel => 'ԴԻՏԵԼ ԱՐՏՈՆԱԳՐԵՐԸ';
}

/// The translations for Indonesian (`id`).
class MaterialLocalizationId extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Indonesian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationId({
    super.localeName = 'id',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Tentang $applicationName';

  @override
  String get alertDialogLabel => 'Notifikasi';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Kembali';

  @override
  String get calendarModeButtonLabel => 'Beralih ke kalender';

  @override
  String get cancelButtonLabel => 'BATAL';

  @override
  String get closeButtonLabel => 'TUTUP';

  @override
  String get closeButtonTooltip => 'Tutup';

  @override
  String get collapsedIconTapHint => 'Luaskan';

  @override
  String get continueButtonLabel => 'LANJUTKAN';

  @override
  String get copyButtonLabel => 'Salin';

  @override
  String get cutButtonLabel => 'Potong';

  @override
  String get dateHelpText => 'hh/bb/tttt';

  @override
  String get dateInputLabel => 'Masukkan Tanggal';

  @override
  String get dateOutOfRangeLabel => 'Di luar rentang.';

  @override
  String get datePickerHelpText => 'PILIH TANGGAL';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Tanggal akhir $fullDate';

  @override
  String get dateRangeEndLabel => 'Tanggal Akhir';

  @override
  String get dateRangePickerHelpText => 'PILIH RENTANG';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Tanggal mulai $fullDate';

  @override
  String get dateRangeStartLabel => 'Tanggal Mulai';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Hapus';

  @override
  String get dialModeButtonLabel => 'Beralih ke mode tampilan jam';

  @override
  String get dialogLabel => 'Dialog';

  @override
  String get drawerLabel => 'Menu navigasi';

  @override
  String get expandedIconTapHint => 'Ciutkan';

  @override
  String get firstPageTooltip => 'Halaman pertama';

  @override
  String get hideAccountsLabel => 'Sembunyikan akun';

  @override
  String get inputDateModeButtonLabel => 'Beralih ke masukan';

  @override
  String get inputTimeModeButtonLabel => 'Beralih ke mode input teks';

  @override
  String get invalidDateFormatLabel => 'Format tidak valid.';

  @override
  String get invalidDateRangeLabel => 'Rentang tidak valid.';

  @override
  String get invalidTimeLabel => 'Masukkan waktu yang valid';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Halaman terakhir';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisensi';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisensi';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lisensi';

  @override
  String get menuBarMenuLabel => 'Menu panel menu';

  @override
  String get modalBarrierDismissLabel => 'Tutup';

  @override
  String get moreButtonTooltip => 'Lainnya';

  @override
  String get nextMonthTooltip => 'Bulan berikutnya';

  @override
  String get nextPageTooltip => 'Halaman berikutnya';

  @override
  String get okButtonLabel => 'OKE';

  @override
  String get openAppDrawerTooltip => 'Buka menu navigasi';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow dari $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow dari kira-kira $rowCount';

  @override
  String get pasteButtonLabel => 'Tempel';

  @override
  String get popupMenuLabel => 'Menu pop-up';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Bulan sebelumnya';

  @override
  String get previousPageTooltip => 'Halaman sebelumnya';

  @override
  String get refreshIndicatorSemanticLabel => 'Memuat ulang';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Sisa 1 karakter';

  @override
  String get remainingTextFieldCharacterCountOther => r'Sisa $remainingCount karakter';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Turunkan';

  @override
  String get reorderItemLeft => 'Pindahkan ke kiri';

  @override
  String get reorderItemRight => 'Pindahkan ke kanan';

  @override
  String get reorderItemToEnd => 'Pindahkan ke akhir';

  @override
  String get reorderItemToStart => 'Pindahkan ke awal';

  @override
  String get reorderItemUp => 'Naikkan';

  @override
  String get rowsPerPageTitle => 'Baris per halaman:';

  @override
  String get saveButtonLabel => 'SIMPAN';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Telusuri';

  @override
  String get selectAllButtonLabel => 'Pilih semua';

  @override
  String get selectYearSemanticsLabel => 'Pilih tahun';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item dipilih';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount item dipilih';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Tampilkan akun';

  @override
  String get showMenuTooltip => 'Tampilkan menu';

  @override
  String get signedInLabel => 'Telah login';

  @override
  String get tabLabelRaw => r'Tab $tabIndex dari $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_dot_mm;

  @override
  String get timePickerDialHelpText => 'PILIH WAKTU';

  @override
  String get timePickerHourLabel => 'Jam';

  @override
  String get timePickerHourModeAnnouncement => 'Pilih jam';

  @override
  String get timePickerInputHelpText => 'MASUKKAN WAKTU';

  @override
  String get timePickerMinuteLabel => 'Menit';

  @override
  String get timePickerMinuteModeAnnouncement => 'Pilih menit';

  @override
  String get unspecifiedDate => 'Tanggal';

  @override
  String get unspecifiedDateRange => 'Rentang tanggal';

  @override
  String get viewLicensesButtonLabel => 'LIHAT LISENSI';
}

/// The translations for Icelandic (`is`).
class MaterialLocalizationIs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Icelandic.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationIs({
    super.localeName = 'is',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Um $applicationName';

  @override
  String get alertDialogLabel => 'Tilkynning';

  @override
  String get anteMeridiemAbbreviation => 'f.h.';

  @override
  String get backButtonTooltip => 'Til baka';

  @override
  String get calendarModeButtonLabel => 'Skipta yfir í dagatal';

  @override
  String get cancelButtonLabel => 'HÆTTA';

  @override
  String get closeButtonLabel => 'LOKA';

  @override
  String get closeButtonTooltip => 'Loka';

  @override
  String get collapsedIconTapHint => 'Stækka';

  @override
  String get continueButtonLabel => 'HALDA ÁFRAM';

  @override
  String get copyButtonLabel => 'Afrita';

  @override
  String get cutButtonLabel => 'Klippa';

  @override
  String get dateHelpText => 'dd.mm.áááá';

  @override
  String get dateInputLabel => 'Slá inn dagsetningu';

  @override
  String get dateOutOfRangeLabel => 'Utan sviðs.';

  @override
  String get datePickerHelpText => 'VELJA DAGSETNINGU';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Lokadagur $fullDate';

  @override
  String get dateRangeEndLabel => 'Lokadagur';

  @override
  String get dateRangePickerHelpText => 'VELJA SVIÐ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Upphafsdagur $fullDate';

  @override
  String get dateRangeStartLabel => 'Upphafsdagur';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Eyða';

  @override
  String get dialModeButtonLabel => 'Skiptu yfir í skífuval';

  @override
  String get dialogLabel => 'Gluggi';

  @override
  String get drawerLabel => 'Yfirlitsvalmynd';

  @override
  String get expandedIconTapHint => 'Draga saman';

  @override
  String get firstPageTooltip => 'Fyrsta síða';

  @override
  String get hideAccountsLabel => 'Fela reikninga';

  @override
  String get inputDateModeButtonLabel => 'Skipta yfir í innslátt';

  @override
  String get inputTimeModeButtonLabel => 'Skiptu yfir í textainnslátt';

  @override
  String get invalidDateFormatLabel => 'Ógilt snið.';

  @override
  String get invalidDateRangeLabel => 'Ógilt svið.';

  @override
  String get invalidTimeLabel => 'Færðu inn gildan tíma';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Bakklykill';

  @override
  String get keyboardKeyCapsLock => 'Hástafalás';

  @override
  String get keyboardKeyChannelDown => 'Niður um rás';

  @override
  String get keyboardKeyChannelUp => 'Upp um rás';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Fjarlægja';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Aflrofi';

  @override
  String get keyboardKeyPowerOff => 'Slökkva';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Velja';

  @override
  String get keyboardKeySpace => 'Bil';

  @override
  String get lastPageTooltip => 'Síðasta síða';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 leyfi';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount leyfi';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Leyfi';

  @override
  String get menuBarMenuLabel => 'Valmyndarstika';

  @override
  String get modalBarrierDismissLabel => 'Hunsa';

  @override
  String get moreButtonTooltip => 'Meira';

  @override
  String get nextMonthTooltip => 'Næsti mánuður';

  @override
  String get nextPageTooltip => 'Næsta síða';

  @override
  String get okButtonLabel => 'Í lagi';

  @override
  String get openAppDrawerTooltip => 'Opna yfirlitsvalmynd';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow af $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow af um það bil $rowCount';

  @override
  String get pasteButtonLabel => 'Líma';

  @override
  String get popupMenuLabel => 'Sprettivalmynd';

  @override
  String get postMeridiemAbbreviation => 'e.h.';

  @override
  String get previousMonthTooltip => 'Fyrri mánuður';

  @override
  String get previousPageTooltip => 'Fyrri síða';

  @override
  String get refreshIndicatorSemanticLabel => 'Endurnýja';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 stafur eftir';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount stafir eftir';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Færa niður';

  @override
  String get reorderItemLeft => 'Færa til vinstri';

  @override
  String get reorderItemRight => 'Færa til hægri';

  @override
  String get reorderItemToEnd => 'Færa aftast';

  @override
  String get reorderItemToStart => 'Færa fremst';

  @override
  String get reorderItemUp => 'Færa upp';

  @override
  String get rowsPerPageTitle => 'Línur á síðu:';

  @override
  String get saveButtonLabel => 'VISTA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Leit';

  @override
  String get selectAllButtonLabel => 'Velja allt';

  @override
  String get selectYearSemanticsLabel => 'Velja ár';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 atriði valið';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount atriði valin';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Sýna reikninga';

  @override
  String get showMenuTooltip => 'Sýna valmynd';

  @override
  String get signedInLabel => 'Innskráð(ur)';

  @override
  String get tabLabelRaw => r'Flipi $tabIndex af $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'VELJA TÍMA';

  @override
  String get timePickerHourLabel => 'Klukkustund';

  @override
  String get timePickerHourModeAnnouncement => 'Velja klukkustundir';

  @override
  String get timePickerInputHelpText => 'FÆRA INN TÍMA';

  @override
  String get timePickerMinuteLabel => 'Mínúta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Velja mínútur';

  @override
  String get unspecifiedDate => 'Dagsetning';

  @override
  String get unspecifiedDateRange => 'Tímabil';

  @override
  String get viewLicensesButtonLabel => 'SKOÐA LEYFI';
}

/// The translations for Italian (`it`).
class MaterialLocalizationIt extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Italian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationIt({
    super.localeName = 'it',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Informazioni su $applicationName';

  @override
  String get alertDialogLabel => 'Avviso';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Indietro';

  @override
  String get calendarModeButtonLabel => 'Passa al calendario';

  @override
  String get cancelButtonLabel => 'ANNULLA';

  @override
  String get closeButtonLabel => 'CHIUDI';

  @override
  String get closeButtonTooltip => 'Chiudi';

  @override
  String get collapsedIconTapHint => 'Espandi';

  @override
  String get continueButtonLabel => 'CONTINUA';

  @override
  String get copyButtonLabel => 'Copia';

  @override
  String get cutButtonLabel => 'Taglia';

  @override
  String get dateHelpText => 'mm/gg/aaaa';

  @override
  String get dateInputLabel => 'Inserisci data';

  @override
  String get dateOutOfRangeLabel => 'Fuori intervallo.';

  @override
  String get datePickerHelpText => 'SELEZIONA DATA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data di fine $fullDate';

  @override
  String get dateRangeEndLabel => 'Data di fine';

  @override
  String get dateRangePickerHelpText => 'SELEZIONA INTERVALLO';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data di inizio $fullDate';

  @override
  String get dateRangeStartLabel => 'Data di inizio';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Elimina';

  @override
  String get dialModeButtonLabel => 'Passa alla modalità selettore del quadrante';

  @override
  String get dialogLabel => 'Finestra di dialogo';

  @override
  String get drawerLabel => 'Menu di navigazione';

  @override
  String get expandedIconTapHint => 'Comprimi';

  @override
  String get firstPageTooltip => 'Prima pagina';

  @override
  String get hideAccountsLabel => 'Nascondi account';

  @override
  String get inputDateModeButtonLabel => 'Passa alla modalità di immissione';

  @override
  String get inputTimeModeButtonLabel => 'Passa alla modalità immissione testo';

  @override
  String get invalidDateFormatLabel => 'Formato non valido.';

  @override
  String get invalidDateRangeLabel => 'Intervallo non valido.';

  @override
  String get invalidTimeLabel => 'Inserisci un orario valido';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Bloc Maiusc';

  @override
  String get keyboardKeyChannelDown => 'Canale giù';

  @override
  String get keyboardKeyChannelUp => 'Canale su';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Canc';

  @override
  String get keyboardKeyEject => 'Espelli';

  @override
  String get keyboardKeyEnd => 'Fine';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Ins';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Comando';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Bloc Num';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Invio';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Pag giù';

  @override
  String get keyboardKeyPageUp => 'Pag su';

  @override
  String get keyboardKeyPower => 'Spegni/Accendi';

  @override
  String get keyboardKeyPowerOff => 'Spegni';

  @override
  String get keyboardKeyPrintScreen => 'Stamp';

  @override
  String get keyboardKeyScrollLock => 'Bloc Scorr';

  @override
  String get keyboardKeySelect => 'Seleziona';

  @override
  String get keyboardKeySpace => 'Barra spaziatrice';

  @override
  String get lastPageTooltip => 'Ultima pagina';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licenza';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenze';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenze';

  @override
  String get menuBarMenuLabel => 'Menu barra dei menu';

  @override
  String get modalBarrierDismissLabel => 'Ignora';

  @override
  String get moreButtonTooltip => 'Altro';

  @override
  String get nextMonthTooltip => 'Mese successivo';

  @override
  String get nextPageTooltip => 'Pagina successiva';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Apri il menu di navigazione';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow di $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow di circa $rowCount';

  @override
  String get pasteButtonLabel => 'Incolla';

  @override
  String get popupMenuLabel => 'Menu popup';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Mese precedente';

  @override
  String get previousPageTooltip => 'Pagina precedente';

  @override
  String get refreshIndicatorSemanticLabel => 'Aggiorna';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 carattere rimanente';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount caratteri rimanenti';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Sposta giù';

  @override
  String get reorderItemLeft => 'Sposta a sinistra';

  @override
  String get reorderItemRight => 'Sposta a destra';

  @override
  String get reorderItemToEnd => 'Sposta alla fine';

  @override
  String get reorderItemToStart => "Sposta all'inizio";

  @override
  String get reorderItemUp => 'Sposta su';

  @override
  String get rowsPerPageTitle => 'Righe per pagina:';

  @override
  String get saveButtonLabel => 'SALVA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Cerca';

  @override
  String get selectAllButtonLabel => 'Seleziona tutto';

  @override
  String get selectYearSemanticsLabel => 'Seleziona anno';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 elemento selezionato';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elementi selezionati';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Mostra account';

  @override
  String get showMenuTooltip => 'Mostra il menu';

  @override
  String get signedInLabel => 'Connesso';

  @override
  String get tabLabelRaw => r'Scheda $tabIndex di $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => "SELEZIONA L'ORA";

  @override
  String get timePickerHourLabel => 'Ora';

  @override
  String get timePickerHourModeAnnouncement => 'Seleziona le ore';

  @override
  String get timePickerInputHelpText => "INSERISCI L'ORA";

  @override
  String get timePickerMinuteLabel => 'Minuto';

  @override
  String get timePickerMinuteModeAnnouncement => 'Seleziona i minuti';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Intervallo di date';

  @override
  String get viewLicensesButtonLabel => 'VISUALIZZA LICENZE';
}

/// The translations for Japanese (`ja`).
class MaterialLocalizationJa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Japanese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationJa({
    super.localeName = 'ja',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName について';

  @override
  String get alertDialogLabel => '通知';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => '戻る';

  @override
  String get calendarModeButtonLabel => 'カレンダーに切り替え';

  @override
  String get cancelButtonLabel => 'キャンセル';

  @override
  String get closeButtonLabel => '閉じる';

  @override
  String get closeButtonTooltip => '閉じる';

  @override
  String get collapsedIconTapHint => '展開';

  @override
  String get continueButtonLabel => '続行';

  @override
  String get copyButtonLabel => 'コピー';

  @override
  String get cutButtonLabel => '切り取り';

  @override
  String get dateHelpText => 'yyyy/mm/dd';

  @override
  String get dateInputLabel => '日付を入力';

  @override
  String get dateOutOfRangeLabel => '範囲外です。';

  @override
  String get datePickerHelpText => '日付の選択';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'終了日 $fullDate';

  @override
  String get dateRangeEndLabel => '終了日';

  @override
  String get dateRangePickerHelpText => '期間の選択';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'開始日 $fullDate';

  @override
  String get dateRangeStartLabel => '開始日';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => '削除';

  @override
  String get dialModeButtonLabel => 'ダイヤル選択ツール モードに切り替えます';

  @override
  String get dialogLabel => 'ダイアログ';

  @override
  String get drawerLabel => 'ナビゲーション メニュー';

  @override
  String get expandedIconTapHint => '折りたたむ';

  @override
  String get firstPageTooltip => '最初のページ';

  @override
  String get hideAccountsLabel => 'アカウントを非表示';

  @override
  String get inputDateModeButtonLabel => '入力に切り替え';

  @override
  String get inputTimeModeButtonLabel => 'テキスト入力モードに切り替えます';

  @override
  String get invalidDateFormatLabel => '形式が無効です。';

  @override
  String get invalidDateRangeLabel => '範囲が無効です。';

  @override
  String get invalidTimeLabel => '有効な時刻を入力してください';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'CapsLock';

  @override
  String get keyboardKeyChannelDown => '次のチャンネル';

  @override
  String get keyboardKeyChannelUp => '前のチャンネル';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'NumLock';

  @override
  String get keyboardKeyNumpad0 => 'テンキー 0';

  @override
  String get keyboardKeyNumpad1 => 'テンキー 1';

  @override
  String get keyboardKeyNumpad2 => 'テンキー 2';

  @override
  String get keyboardKeyNumpad3 => 'テンキー 3';

  @override
  String get keyboardKeyNumpad4 => 'テンキー 4';

  @override
  String get keyboardKeyNumpad5 => 'テンキー 5';

  @override
  String get keyboardKeyNumpad6 => 'テンキー 6';

  @override
  String get keyboardKeyNumpad7 => 'テンキー 7';

  @override
  String get keyboardKeyNumpad8 => 'テンキー 8';

  @override
  String get keyboardKeyNumpad9 => 'テンキー 9';

  @override
  String get keyboardKeyNumpadAdd => 'テンキー +';

  @override
  String get keyboardKeyNumpadComma => 'テンキー ,';

  @override
  String get keyboardKeyNumpadDecimal => 'テンキー .';

  @override
  String get keyboardKeyNumpadDivide => 'テンキー /';

  @override
  String get keyboardKeyNumpadEnter => 'テンキー Enter';

  @override
  String get keyboardKeyNumpadEqual => 'テンキー =';

  @override
  String get keyboardKeyNumpadMultiply => 'テンキー *';

  @override
  String get keyboardKeyNumpadParenLeft => 'テンキー (';

  @override
  String get keyboardKeyNumpadParenRight => 'テンキー )';

  @override
  String get keyboardKeyNumpadSubtract => 'テンキー -';

  @override
  String get keyboardKeyPageDown => 'PageDown';

  @override
  String get keyboardKeyPageUp => 'PageUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Printscreen';

  @override
  String get keyboardKeyScrollLock => 'ScrollLock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => '最後のページ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'ライセンス: 1 件';

  @override
  String get licensesPackageDetailTextOther => r'ライセンス: $licenseCount 件';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ライセンス';

  @override
  String get menuBarMenuLabel => 'メニューバーのメニュー';

  @override
  String get modalBarrierDismissLabel => '閉じる';

  @override
  String get moreButtonTooltip => 'その他';

  @override
  String get nextMonthTooltip => '来月';

  @override
  String get nextPageTooltip => '次のページ';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'ナビゲーション メニューを開く';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow - $lastRow 行（合計 $rowCount 行）';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow 行（合計約 $rowCount 行）';

  @override
  String get pasteButtonLabel => '貼り付け';

  @override
  String get popupMenuLabel => 'ポップアップ メニュー';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => '前月';

  @override
  String get previousPageTooltip => '前のページ';

  @override
  String get refreshIndicatorSemanticLabel => '更新';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '残り 1 文字（半角相当）';

  @override
  String get remainingTextFieldCharacterCountOther => r'残り $remainingCount 文字（半角相当）';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => '下に移動';

  @override
  String get reorderItemLeft => '左に移動';

  @override
  String get reorderItemRight => '右に移動';

  @override
  String get reorderItemToEnd => '最後に移動';

  @override
  String get reorderItemToStart => '先頭に移動';

  @override
  String get reorderItemUp => '上に移動';

  @override
  String get rowsPerPageTitle => 'ページあたりの行数:';

  @override
  String get saveButtonLabel => '保存';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => '検索';

  @override
  String get selectAllButtonLabel => 'すべて選択';

  @override
  String get selectYearSemanticsLabel => '年を選択';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 件のアイテムを選択中';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount 件のアイテムを選択中';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'アカウントを表示';

  @override
  String get showMenuTooltip => 'メニューを表示';

  @override
  String get signedInLabel => 'ログイン中';

  @override
  String get tabLabelRaw => r'タブ: $tabIndex/$tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => '時刻の選択';

  @override
  String get timePickerHourLabel => '時';

  @override
  String get timePickerHourModeAnnouncement => '時間を選択';

  @override
  String get timePickerInputHelpText => '時刻の入力';

  @override
  String get timePickerMinuteLabel => '分';

  @override
  String get timePickerMinuteModeAnnouncement => '分を選択';

  @override
  String get unspecifiedDate => '日付';

  @override
  String get unspecifiedDateRange => '期間';

  @override
  String get viewLicensesButtonLabel => 'ライセンスを表示';
}

/// The translations for Georgian (`ka`).
class MaterialLocalizationKa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Georgian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationKa({
    super.localeName = 'ka',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName-ის შესახებ';

  @override
  String get alertDialogLabel => 'გაფრთხილება';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'უკან';

  @override
  String get calendarModeButtonLabel => 'კალენდარზე გადართვა';

  @override
  String get cancelButtonLabel => 'გაუქმება';

  @override
  String get closeButtonLabel => 'დახურვა';

  @override
  String get closeButtonTooltip => 'დახურვა';

  @override
  String get collapsedIconTapHint => 'გაშლა';

  @override
  String get continueButtonLabel => 'გაგრძელება';

  @override
  String get copyButtonLabel => 'კოპირება';

  @override
  String get cutButtonLabel => 'ამოჭრა';

  @override
  String get dateHelpText => 'დდ.თთ.წწწწ';

  @override
  String get dateInputLabel => 'შეიყვანეთ თარიღი';

  @override
  String get dateOutOfRangeLabel => 'დიაპაზონს მიღმაა.';

  @override
  String get datePickerHelpText => 'აირჩიეთ თარიღი';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'დასრულების თარიღია $fullDate';

  @override
  String get dateRangeEndLabel => 'დასრულების თარიღი';

  @override
  String get dateRangePickerHelpText => 'აირჩიეთ დიაპაზონი';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'დაწყების თარიღია $fullDate';

  @override
  String get dateRangeStartLabel => 'დაწყების თარიღი';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'წაშლა';

  @override
  String get dialModeButtonLabel => 'ციფერბლატის რეჟიმზე გადართვა';

  @override
  String get dialogLabel => 'დიალოგი';

  @override
  String get drawerLabel => 'ნავიგაციის მენიუ';

  @override
  String get expandedIconTapHint => 'ჩაკეცვა';

  @override
  String get firstPageTooltip => 'პირველი გვერდი';

  @override
  String get hideAccountsLabel => 'ანგარიშების დამალვა';

  @override
  String get inputDateModeButtonLabel => 'შეყვანაზე გადართვა';

  @override
  String get inputTimeModeButtonLabel => 'ტექსტის შეყვანის რეჟიმზე გადართვა';

  @override
  String get invalidDateFormatLabel => 'ფორმატი არასწორია.';

  @override
  String get invalidDateRangeLabel => 'დიაპაზონი არასწორია.';

  @override
  String get invalidTimeLabel => 'შეიყვანეთ სწორი დრო';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'ჩართვა';

  @override
  String get keyboardKeyPowerOff => 'გამორთვა';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'ბოლო გვერდი';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 ლიცენზია';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ლიცენზია';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ლიცენზიები';

  @override
  String get menuBarMenuLabel => 'მენიუს ზოლის მენიუ';

  @override
  String get modalBarrierDismissLabel => 'დახურვა';

  @override
  String get moreButtonTooltip => 'მეტი';

  @override
  String get nextMonthTooltip => 'შემდეგი თვე';

  @override
  String get nextPageTooltip => 'შემდეგი გვერდი';

  @override
  String get okButtonLabel => 'კარგი';

  @override
  String get openAppDrawerTooltip => 'სანავიგაციო მენიუს გახსნა';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow / $rowCount-დან';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow / დაახლოებით $rowCount-დან';

  @override
  String get pasteButtonLabel => 'ჩასმა';

  @override
  String get popupMenuLabel => 'ამომხტარი მენიუ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'წინა თვე';

  @override
  String get previousPageTooltip => 'წინა გვერდი';

  @override
  String get refreshIndicatorSemanticLabel => 'განახლება';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'დარჩა 1 სიმბოლო';

  @override
  String get remainingTextFieldCharacterCountOther => r'დარჩა $remainingCount სიმბოლო';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'ქვემოთ გადატანა';

  @override
  String get reorderItemLeft => 'მარცხნივ გადატანა';

  @override
  String get reorderItemRight => 'მარჯვნივ გადატანა';

  @override
  String get reorderItemToEnd => 'ბოლოში გადატანა';

  @override
  String get reorderItemToStart => 'დასაწყისში გადატანა';

  @override
  String get reorderItemUp => 'ზემოთ გადატანა';

  @override
  String get rowsPerPageTitle => 'მწკრივი გვერდზე:';

  @override
  String get saveButtonLabel => 'შენახვა';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'ძიება';

  @override
  String get selectAllButtonLabel => 'ყველას არჩევა';

  @override
  String get selectYearSemanticsLabel => 'აირჩიეთ წელი';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'არჩეულია 1 ერთეული';

  @override
  String get selectedRowCountTitleOther => r'არჩეულია $selectedRowCount ერთეული';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'ანგარიშების ჩვენება';

  @override
  String get showMenuTooltip => 'მენიუს ჩვენება';

  @override
  String get signedInLabel => 'შესული';

  @override
  String get tabLabelRaw => r'ჩანართი $tabIndex / $tabCount-დან';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'აირჩიეთ დრო';

  @override
  String get timePickerHourLabel => 'საათი';

  @override
  String get timePickerHourModeAnnouncement => 'აირჩიეთ საათები';

  @override
  String get timePickerInputHelpText => 'შეიყვანეთ დრო';

  @override
  String get timePickerMinuteLabel => 'წუთი';

  @override
  String get timePickerMinuteModeAnnouncement => 'აირჩიეთ წუთები';

  @override
  String get unspecifiedDate => 'თარიღი';

  @override
  String get unspecifiedDateRange => 'თარიღების დიაპაზონი';

  @override
  String get viewLicensesButtonLabel => 'ლიცენზიების ნახვა';
}

/// The translations for Kazakh (`kk`).
class MaterialLocalizationKk extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Kazakh.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationKk({
    super.localeName = 'kk',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName туралы';

  @override
  String get alertDialogLabel => 'Дабыл';

  @override
  String get anteMeridiemAbbreviation => 'түстен кейін';

  @override
  String get backButtonTooltip => 'Артқа';

  @override
  String get calendarModeButtonLabel => 'Күнтізбеге ауысу';

  @override
  String get cancelButtonLabel => 'БАС ТАРТУ';

  @override
  String get closeButtonLabel => 'ЖАБУ';

  @override
  String get closeButtonTooltip => 'Жабу';

  @override
  String get collapsedIconTapHint => 'Жаю';

  @override
  String get continueButtonLabel => 'ЖАЛҒАСТЫРУ';

  @override
  String get copyButtonLabel => 'Көшіру';

  @override
  String get cutButtonLabel => 'Қию';

  @override
  String get dateHelpText => 'кк.аа.жжжж';

  @override
  String get dateInputLabel => 'Күнді енгізу';

  @override
  String get dateOutOfRangeLabel => 'Ауқымнан тыc.';

  @override
  String get datePickerHelpText => 'КҮНДІ ТАҢДАУ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Аяқталу күні $fullDate';

  @override
  String get dateRangeEndLabel => 'Аяқталу күні';

  @override
  String get dateRangePickerHelpText => 'АУҚЫМДЫ ТАҢДАУ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Басталу күні $fullDate';

  @override
  String get dateRangeStartLabel => 'Басталу күні';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Жою';

  @override
  String get dialModeButtonLabel => 'Таңдау режиміне ауысу';

  @override
  String get dialogLabel => 'Диалогтық терезе';

  @override
  String get drawerLabel => 'Навигация мәзірі';

  @override
  String get expandedIconTapHint => 'Жию';

  @override
  String get firstPageTooltip => 'Бірінші бет';

  @override
  String get hideAccountsLabel => 'Аккаунттарды жасыру';

  @override
  String get inputDateModeButtonLabel => 'Мәтін енгізуге ауысу';

  @override
  String get inputTimeModeButtonLabel => 'Мәтін енгізу режиміне ауысу';

  @override
  String get invalidDateFormatLabel => 'Формат жарамсыз.';

  @override
  String get invalidDateRangeLabel => 'Ауқым жарамсыз.';

  @override
  String get invalidTimeLabel => 'Жарамды уақыт мәліметін енгізіңіз.';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Келесі арна';

  @override
  String get keyboardKeyChannelUp => 'Алдыңғы арна';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Қуат';

  @override
  String get keyboardKeyPowerOff => 'Қуатты өшіру';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Бос орын';

  @override
  String get lastPageTooltip => 'Соңғы бет';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 лицензия';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount лицензия';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Лицензиялар';

  @override
  String get menuBarMenuLabel => 'Мәзір жолағының мәзірі';

  @override
  String get modalBarrierDismissLabel => 'Жабу';

  @override
  String get moreButtonTooltip => 'Жаю';

  @override
  String get nextMonthTooltip => 'Келесі ай';

  @override
  String get nextPageTooltip => 'Келесі бет';

  @override
  String get okButtonLabel => 'Иә';

  @override
  String get openAppDrawerTooltip => 'Навигация мәзірін ашу';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount ішінен $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'Шамамен $rowCount ішінен $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'Қою';

  @override
  String get popupMenuLabel => 'Қалқымалы терезе мәзірі';

  @override
  String get postMeridiemAbbreviation => 'түстен кейін';

  @override
  String get previousMonthTooltip => 'Өткен ай';

  @override
  String get previousPageTooltip => 'Алдыңғы бет';

  @override
  String get refreshIndicatorSemanticLabel => 'Жаңарту';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 таңба қалды.';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount таңба қалды.';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'Таңбалар қалмады';

  @override
  String get reorderItemDown => 'Төменге жылжыту';

  @override
  String get reorderItemLeft => 'Солға жылжыту';

  @override
  String get reorderItemRight => 'Оңға жылжыту';

  @override
  String get reorderItemToEnd => 'Соңына өту';

  @override
  String get reorderItemToStart => 'Басына өту';

  @override
  String get reorderItemUp => 'Жоғарыға жылжыту';

  @override
  String get rowsPerPageTitle => 'Әр беттегі жолдар саны:';

  @override
  String get saveButtonLabel => 'САҚТАУ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Іздеу';

  @override
  String get selectAllButtonLabel => 'Барлығын таңдау';

  @override
  String get selectYearSemanticsLabel => 'Жылды таңдау';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 элемент таңдалды.';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount элемент таңдалды.';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Тармақ таңдалмаған';

  @override
  String get showAccountsLabel => 'Аккаунттарды көрсету';

  @override
  String get showMenuTooltip => 'Мәзірді көрсету';

  @override
  String get signedInLabel => 'Аккаунтқа кірген';

  @override
  String get tabLabelRaw => r'$tabCount/$tabIndex қойынды';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'УАҚЫТТЫ ТАҢДАҢЫЗ';

  @override
  String get timePickerHourLabel => 'Сағат';

  @override
  String get timePickerHourModeAnnouncement => 'Сағаттарды таңдаңыз';

  @override
  String get timePickerInputHelpText => 'УАҚЫТТЫ ЕНГІЗІҢІЗ';

  @override
  String get timePickerMinuteLabel => 'Mинут';

  @override
  String get timePickerMinuteModeAnnouncement => 'Минуттарды таңдаңыз';

  @override
  String get unspecifiedDate => 'Күн';

  @override
  String get unspecifiedDateRange => 'Күндер ауқымы';

  @override
  String get viewLicensesButtonLabel => 'ЛИЦЕНЗИЯЛАРДЫ КӨРУ';
}

/// The translations for Khmer Central Khmer (`km`).
class MaterialLocalizationKm extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Khmer Central Khmer.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationKm({
    super.localeName = 'km',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'អំពី $applicationName';

  @override
  String get alertDialogLabel => 'ជូនដំណឹង';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'ថយក្រោយ';

  @override
  String get calendarModeButtonLabel => 'ប្ដូរទៅ​ប្រតិទិន';

  @override
  String get cancelButtonLabel => 'បោះបង់';

  @override
  String get closeButtonLabel => 'បិទ';

  @override
  String get closeButtonTooltip => 'បិទ';

  @override
  String get collapsedIconTapHint => 'ពង្រីក';

  @override
  String get continueButtonLabel => 'បន្ត';

  @override
  String get copyButtonLabel => 'ចម្លង';

  @override
  String get cutButtonLabel => 'កាត់';

  @override
  String get dateHelpText => 'ថ្ងៃ/ខែ/ឆ្នាំ';

  @override
  String get dateInputLabel => 'បញ្ចូល​កាលបរិច្ឆេទ';

  @override
  String get dateOutOfRangeLabel => 'ក្រៅចន្លោះ។';

  @override
  String get datePickerHelpText => 'ជ្រើសរើស​កាល​បរិច្ឆេទ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'កាលបរិច្ឆេទ​បញ្ចប់ $fullDate';

  @override
  String get dateRangeEndLabel => 'កាលបរិច្ឆេទ​បញ្ចប់';

  @override
  String get dateRangePickerHelpText => 'ជ្រើស​រើស​ចន្លោះ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'កាលបរិច្ឆេទ​ចាប់ផ្ដើម $fullDate';

  @override
  String get dateRangeStartLabel => 'កាលបរិច្ឆេទ​ចាប់ផ្ដើម';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'លុប';

  @override
  String get dialModeButtonLabel => 'ប្ដូរទៅមុខងារផ្ទាំង​ជ្រើសរើសលេខ';

  @override
  String get dialogLabel => 'ប្រអប់';

  @override
  String get drawerLabel => 'ម៉ឺនុយរុករក';

  @override
  String get expandedIconTapHint => 'បង្រួម';

  @override
  String get firstPageTooltip => 'ទំព័រ​ដំបូង';

  @override
  String get hideAccountsLabel => 'លាក់គណនី';

  @override
  String get inputDateModeButtonLabel => 'ប្ដូរទៅ​ការបញ្ចូល';

  @override
  String get inputTimeModeButtonLabel => 'ប្ដូរទៅ​មុខងារ​បញ្ចូល​អក្សរ';

  @override
  String get invalidDateFormatLabel => 'ទម្រង់មិន​ត្រឹមត្រូវទេ។';

  @override
  String get invalidDateRangeLabel => 'ចន្លោះ​មិនត្រឹមត្រូវទេ។';

  @override
  String get invalidTimeLabel => 'បញ្ចូលពេលវេលា​ដែល​ត្រឹមត្រូវ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'ទំព័រ​ចុង​ក្រោយ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'អាជ្ញាបណ្ណ 1';

  @override
  String get licensesPackageDetailTextOther => r'អាជ្ញាបណ្ណ $licenseCount';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'អាជ្ញាបណ្ណ';

  @override
  String get menuBarMenuLabel => 'ម៉ឺនុយរបារម៉ឺនុយ';

  @override
  String get modalBarrierDismissLabel => 'ច្រាន​ចោល';

  @override
  String get moreButtonTooltip => 'ច្រើន​ទៀត';

  @override
  String get nextMonthTooltip => 'ខែ​​ក្រោយ';

  @override
  String get nextPageTooltip => 'ទំព័របន្ទាប់';

  @override
  String get okButtonLabel => 'យល់ព្រម';

  @override
  String get openAppDrawerTooltip => 'បើក​ម៉ឺនុយរុករក';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow ក្នុង​ចំណោម​ $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow ក្នុង​ចំណោម​ប្រហែល $rowCount';

  @override
  String get pasteButtonLabel => 'ដាក់​ចូល';

  @override
  String get popupMenuLabel => '​ម៉ឺនុយ​លោត​ឡើង';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'ខែមុន';

  @override
  String get previousPageTooltip => 'ទំព័រមុន';

  @override
  String get refreshIndicatorSemanticLabel => 'ផ្ទុកឡើងវិញ';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'នៅសល់​ 1 តួ​ទៀត';

  @override
  String get remainingTextFieldCharacterCountOther => r'នៅសល់ $remainingCount តួ​ទៀត';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'ផ្លាស់ទី​ចុះ​ក្រោម';

  @override
  String get reorderItemLeft => 'ផ្លាស់ទី​ទៅ​ឆ្វេង';

  @override
  String get reorderItemRight => 'ផ្លាស់ទីទៅ​ស្តាំ';

  @override
  String get reorderItemToEnd => 'ផ្លាស់ទីទៅ​ចំណុចបញ្ចប់';

  @override
  String get reorderItemToStart => 'ផ្លាស់ទីទៅ​ចំណុច​ចាប់ផ្ដើម';

  @override
  String get reorderItemUp => 'ផ្លាស់ទី​ឡើង​លើ';

  @override
  String get rowsPerPageTitle => 'ជួរ​ដេក​ក្នុង​មួយ​ទំព័រ៖';

  @override
  String get saveButtonLabel => 'រក្សាទុក';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => 'ស្វែងរក';

  @override
  String get selectAllButtonLabel => 'ជ្រើសរើស​ទាំងអស់';

  @override
  String get selectYearSemanticsLabel => 'ជ្រើសរើសឆ្នាំ';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'បាន​ជ្រើស​រើស​ធាតុ 1';

  @override
  String get selectedRowCountTitleOther => r'បាន​ជ្រើស​រើស​ធាតុ $selectedRowCount';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'បង្ហាញគណនី';

  @override
  String get showMenuTooltip => 'បង្ហាញ​ម៉ឺនុយ';

  @override
  String get signedInLabel => 'បានចូល​គណនី';

  @override
  String get tabLabelRaw => r'ផ្ទាំង $tabIndex ក្នុង​ចំណោម​ $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'ជ្រើសរើស​ពេលវេលា';

  @override
  String get timePickerHourLabel => 'ម៉ោង';

  @override
  String get timePickerHourModeAnnouncement => 'ជ្រើសរើស​ម៉ោង';

  @override
  String get timePickerInputHelpText => 'បញ្ចូលពេលវេលា';

  @override
  String get timePickerMinuteLabel => 'នាទី​';

  @override
  String get timePickerMinuteModeAnnouncement => 'ជ្រើសរើស​នាទី';

  @override
  String get unspecifiedDate => 'កាលបរិច្ឆេទ';

  @override
  String get unspecifiedDateRange => 'ចន្លោះ​កាលបរិច្ឆេទ';

  @override
  String get viewLicensesButtonLabel => 'មើលអាជ្ញាបណ្ណ';
}

/// The translations for Kannada (`kn`).
class MaterialLocalizationKn extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Kannada.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationKn({
    super.localeName = 'kn',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => '\u{24}\u{61}\u{70}\u{70}\u{6c}\u{69}\u{63}\u{61}\u{74}\u{69}\u{6f}\u{6e}\u{4e}\u{61}\u{6d}\u{65}\u{20}\u{cac}\u{c97}\u{ccd}\u{c97}\u{cc6}';

  @override
  String get alertDialogLabel => '\u{c8e}\u{c9a}\u{ccd}\u{c9a}\u{cb0}\u{cbf}\u{c95}\u{cc6}';

  @override
  String get anteMeridiemAbbreviation => '\u{cac}\u{cc6}\u{cb3}\u{cbf}\u{c97}\u{ccd}\u{c97}\u{cc6}';

  @override
  String get backButtonTooltip => '\u{cb9}\u{cbf}\u{c82}\u{ca4}\u{cbf}\u{cb0}\u{cc1}\u{c97}\u{cbf}';

  @override
  String get calendarModeButtonLabel => '\u{c95}\u{ccd}\u{caf}\u{cbe}\u{cb2}\u{cc6}\u{c82}\u{ca1}\u{cb0}\u{ccd}\u{200c}\u{c97}\u{cc6}\u{20}\u{cac}\u{ca6}\u{cb2}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get cancelButtonLabel => '\u{cb0}\u{ca6}\u{ccd}\u{ca6}\u{cc1}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get closeButtonLabel => '\u{cae}\u{cc1}\u{c9a}\u{ccd}\u{c9a}\u{cbf}\u{cb0}\u{cbf}';

  @override
  String get closeButtonTooltip => '\u{cae}\u{cc1}\u{c9a}\u{ccd}\u{c9a}\u{cbf}\u{cb0}\u{cbf}';

  @override
  String get collapsedIconTapHint => '\u{cb5}\u{cbf}\u{cb8}\u{ccd}\u{ca4}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get continueButtonLabel => '\u{cae}\u{cc1}\u{c82}\u{ca6}\u{cc1}\u{cb5}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get copyButtonLabel => '\u{ca8}\u{c95}\u{cb2}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get cutButtonLabel => '\u{c95}\u{ca4}\u{ccd}\u{ca4}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => '\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}\u{20}\u{ca8}\u{cae}\u{cc2}\u{ca6}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get dateOutOfRangeLabel => '\u{cb5}\u{ccd}\u{caf}\u{cbe}\u{caa}\u{ccd}\u{ca4}\u{cbf}\u{caf}\u{20}\u{cb9}\u{cca}\u{cb0}\u{c97}\u{cbf}\u{ca6}\u{cc6}';

  @override
  String get datePickerHelpText => '\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}\u{cb5}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get dateRangeEndDateSemanticLabelRaw => '\u{cae}\u{cc1}\u{c95}\u{ccd}\u{ca4}\u{cbe}\u{caf}\u{20}\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}\u{20}\u{24}\u{66}\u{75}\u{6c}\u{6c}\u{44}\u{61}\u{74}\u{65}';

  @override
  String get dateRangeEndLabel => '\u{c85}\u{c82}\u{ca4}\u{cbf}\u{cae}\u{20}\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}';

  @override
  String get dateRangePickerHelpText => '\u{cb6}\u{ccd}\u{cb0}\u{cc7}\u{ca3}\u{cbf}\u{caf}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get dateRangeStartDateSemanticLabelRaw => '\u{caa}\u{ccd}\u{cb0}\u{cbe}\u{cb0}\u{c82}\u{cad}\u{20}\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}\u{20}\u{24}\u{66}\u{75}\u{6c}\u{6c}\u{44}\u{61}\u{74}\u{65}';

  @override
  String get dateRangeStartLabel => '\u{caa}\u{ccd}\u{cb0}\u{cbe}\u{cb0}\u{c82}\u{cad}\u{20}\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => '\u{c85}\u{cb3}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get dialModeButtonLabel => '\u{ca1}\u{caf}\u{cb2}\u{ccd}\u{20}\u{caa}\u{cbf}\u{c95}\u{cb0}\u{ccd}\u{200c}\u{20}\u{cae}\u{ccb}\u{ca1}\u{ccd}\u{200c}\u{c97}\u{cc6}\u{20}\u{cac}\u{ca6}\u{cb2}\u{cbe}\u{caf}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get dialogLabel => '\u{ca1}\u{cc8}\u{cb2}\u{cbe}\u{c97}\u{ccd}';

  @override
  String get drawerLabel => '\u{ca8}\u{ccd}\u{caf}\u{cbe}\u{cb5}\u{cbf}\u{c97}\u{cc7}\u{cb6}\u{ca8}\u{ccd}\u{200c}\u{20}\u{cae}\u{cc6}\u{ca8}\u{cc1}';

  @override
  String get expandedIconTapHint => '\u{c95}\u{cc1}\u{c97}\u{ccd}\u{c97}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get firstPageTooltip => '\u{cae}\u{cca}\u{ca6}\u{cb2}\u{20}\u{caa}\u{cc1}\u{c9f}';

  @override
  String get hideAccountsLabel => '\u{c96}\u{cbe}\u{ca4}\u{cc6}\u{c97}\u{cb3}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{cae}\u{cb0}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get inputDateModeButtonLabel => '\u{c87}\u{ca8}\u{ccd}\u{200c}\u{caa}\u{cc1}\u{c9f}\u{ccd}\u{200c}\u{c97}\u{cc6}\u{20}\u{cac}\u{ca6}\u{cb2}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get inputTimeModeButtonLabel => '\u{caa}\u{ca0}\u{ccd}\u{caf}\u{20}\u{c87}\u{ca8}\u{ccd}\u{200c}\u{caa}\u{cc1}\u{c9f}\u{ccd}\u{20}\u{cae}\u{ccb}\u{ca1}\u{ccd}\u{200c}\u{c97}\u{cc6}\u{20}\u{cac}\u{ca6}\u{cb2}\u{cbe}\u{caf}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get invalidDateFormatLabel => '\u{c85}\u{cae}\u{cbe}\u{ca8}\u{ccd}\u{caf}\u{cb5}\u{cbe}\u{ca6}\u{20}\u{cab}\u{cbe}\u{cb0}\u{ccd}\u{cae}\u{ccd}\u{caf}\u{cbe}\u{c9f}\u{ccd}\u{2e}';

  @override
  String get invalidDateRangeLabel => '\u{c85}\u{cae}\u{cbe}\u{ca8}\u{ccd}\u{caf}\u{20}\u{cb6}\u{ccd}\u{cb0}\u{cc7}\u{ca3}\u{cbf}\u{2e}';

  @override
  String get invalidTimeLabel => '\u{cae}\u{cbe}\u{ca8}\u{ccd}\u{caf}\u{cb5}\u{cbe}\u{ca6}\u{20}\u{cb8}\u{cae}\u{caf}\u{cb5}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{ca8}\u{cae}\u{cc2}\u{ca6}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => '\u{c95}\u{cca}\u{ca8}\u{cc6}\u{caf}\u{20}\u{caa}\u{cc1}\u{c9f}';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '\u{31}\u{20}\u{caa}\u{cb0}\u{cb5}\u{cbe}\u{ca8}\u{c97}\u{cbf}';

  @override
  String get licensesPackageDetailTextOther => '\u{24}\u{6c}\u{69}\u{63}\u{65}\u{6e}\u{73}\u{65}\u{43}\u{6f}\u{75}\u{6e}\u{74}\u{20}\u{caa}\u{cb0}\u{cb5}\u{cbe}\u{ca8}\u{c97}\u{cbf}\u{c97}\u{cb3}\u{cc1}';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => '\u{caa}\u{cb0}\u{cb5}\u{cbe}\u{ca8}\u{c97}\u{cbf}\u{c97}\u{cb3}\u{cc1}';

  @override
  String get menuBarMenuLabel => '\u{cae}\u{cc6}\u{ca8}\u{cc1}\u{20}\u{cac}\u{cbe}\u{cb0}\u{ccd}\u{200c}\u{20}\u{cae}\u{cc6}\u{ca8}\u{cc1}';

  @override
  String get modalBarrierDismissLabel => '\u{cb5}\u{c9c}\u{cbe}\u{c97}\u{cca}\u{cb3}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get moreButtonTooltip => '\u{c87}\u{ca8}\u{ccd}\u{ca8}\u{cb7}\u{ccd}\u{c9f}\u{cc1}';

  @override
  String get nextMonthTooltip => '\u{cae}\u{cc1}\u{c82}\u{ca6}\u{cbf}\u{ca8}\u{20}\u{ca4}\u{cbf}\u{c82}\u{c97}\u{cb3}\u{cc1}';

  @override
  String get nextPageTooltip => '\u{cae}\u{cc1}\u{c82}\u{ca6}\u{cbf}\u{ca8}\u{20}\u{caa}\u{cc1}\u{c9f}';

  @override
  String get okButtonLabel => '\u{cb8}\u{cb0}\u{cbf}';

  @override
  String get openAppDrawerTooltip => '\u{ca8}\u{ccd}\u{caf}\u{cbe}\u{cb5}\u{cbf}\u{c97}\u{cc7}\u{cb6}\u{ca8}\u{ccd}\u{200c}\u{20}\u{cae}\u{cc6}\u{ca8}\u{cc1}\u{20}\u{ca4}\u{cc6}\u{cb0}\u{cc6}\u{caf}\u{cbf}\u{cb0}\u{cbf}';

  @override
  String get pageRowsInfoTitleRaw => '\u{24}\u{72}\u{6f}\u{77}\u{43}\u{6f}\u{75}\u{6e}\u{74}\u{20}\u{cb0}\u{cb2}\u{ccd}\u{cb2}\u{cbf}\u{20}\u{24}\u{66}\u{69}\u{72}\u{73}\u{74}\u{52}\u{6f}\u{77}\u{2013}\u{24}\u{6c}\u{61}\u{73}\u{74}\u{52}\u{6f}\u{77}';

  @override
  String get pageRowsInfoTitleApproximateRaw => '\u{24}\u{72}\u{6f}\u{77}\u{43}\u{6f}\u{75}\u{6e}\u{74}\u{20}\u{cb0}\u{cb2}\u{ccd}\u{cb2}\u{cbf}\u{20}\u{24}\u{66}\u{69}\u{72}\u{73}\u{74}\u{52}\u{6f}\u{77}\u{2013}\u{24}\u{6c}\u{61}\u{73}\u{74}\u{52}\u{6f}\u{77}';

  @override
  String get pasteButtonLabel => '\u{c85}\u{c82}\u{c9f}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get popupMenuLabel => '\u{caa}\u{cbe}\u{caa}\u{ccd}\u{c85}\u{caa}\u{ccd}\u{20}\u{cae}\u{cc6}\u{ca8}\u{cc1}';

  @override
  String get postMeridiemAbbreviation => '\u{cb8}\u{c82}\u{c9c}\u{cc6}';

  @override
  String get previousMonthTooltip => '\u{cb9}\u{cbf}\u{c82}\u{ca6}\u{cbf}\u{ca8}\u{20}\u{ca4}\u{cbf}\u{c82}\u{c97}\u{cb3}\u{cc1}';

  @override
  String get previousPageTooltip => '\u{cb9}\u{cbf}\u{c82}\u{ca6}\u{cbf}\u{ca8}\u{20}\u{caa}\u{cc1}\u{c9f}';

  @override
  String get refreshIndicatorSemanticLabel => '\u{cb0}\u{cbf}\u{cab}\u{ccd}\u{cb0}\u{cc6}\u{cb6}\u{ccd}\u{20}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '\u{31}\u{20}\u{c85}\u{c95}\u{ccd}\u{cb7}\u{cb0}\u{20}\u{c89}\u{cb3}\u{cbf}\u{ca6}\u{cbf}\u{ca6}\u{cc6}';

  @override
  String get remainingTextFieldCharacterCountOther => '\u{24}\u{72}\u{65}\u{6d}\u{61}\u{69}\u{6e}\u{69}\u{6e}\u{67}\u{43}\u{6f}\u{75}\u{6e}\u{74}\u{20}\u{c85}\u{c95}\u{ccd}\u{cb7}\u{cb0}\u{c97}\u{cb3}\u{cc1}\u{20}\u{c89}\u{cb3}\u{cbf}\u{ca6}\u{cbf}\u{cb5}\u{cc6}';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => '\u{c95}\u{cc6}\u{cb3}\u{c97}\u{cc6}\u{20}\u{cb8}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get reorderItemLeft => '\u{c8e}\u{ca1}\u{c95}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cb8}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get reorderItemRight => '\u{cac}\u{cb2}\u{c95}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cb8}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get reorderItemToEnd => '\u{c95}\u{cca}\u{ca8}\u{cc6}\u{c97}\u{cc6}\u{20}\u{cb8}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get reorderItemToStart => '\u{caa}\u{ccd}\u{cb0}\u{cbe}\u{cb0}\u{c82}\u{cad}\u{c95}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cb8}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get reorderItemUp => '\u{cae}\u{cc7}\u{cb2}\u{cc6}\u{20}\u{cb8}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get rowsPerPageTitle => '\u{caa}\u{ccd}\u{cb0}\u{ca4}\u{cbf}\u{20}\u{caa}\u{cc1}\u{c9f}\u{c95}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cb8}\u{cbe}\u{cb2}\u{cc1}\u{c97}\u{cb3}\u{cc1}\u{3a}';

  @override
  String get saveButtonLabel => '\u{c89}\u{cb3}\u{cbf}\u{cb8}\u{cbf}';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => '\u{cb9}\u{cc1}\u{ca1}\u{cc1}\u{c95}\u{cbf}';

  @override
  String get selectAllButtonLabel => '\u{c8e}\u{cb2}\u{ccd}\u{cb2}\u{cb5}\u{ca8}\u{ccd}\u{ca8}\u{cc2}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get selectYearSemanticsLabel => '\u{cb5}\u{cb0}\u{ccd}\u{cb7}\u{cb5}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '\u{31}\u{20}\u{c90}\u{c9f}\u{c82}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cae}\u{cbe}\u{ca1}\u{cb2}\u{cbe}\u{c97}\u{cbf}\u{ca6}\u{cc6}';

  @override
  String get selectedRowCountTitleOther => '\u{24}\u{73}\u{65}\u{6c}\u{65}\u{63}\u{74}\u{65}\u{64}\u{52}\u{6f}\u{77}\u{43}\u{6f}\u{75}\u{6e}\u{74}\u{20}\u{c90}\u{c9f}\u{c82}\u{c97}\u{cb3}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{20}\u{cae}\u{cbe}\u{ca1}\u{cb2}\u{cbe}\u{c97}\u{cbf}\u{ca6}\u{cc6}';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => '\u{c96}\u{cbe}\u{ca4}\u{cc6}\u{c97}\u{cb3}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{ca4}\u{ccb}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get showMenuTooltip => '\u{cae}\u{cc6}\u{ca8}\u{cc1}\u{20}\u{ca4}\u{ccb}\u{cb0}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get signedInLabel => '\u{cb8}\u{cc8}\u{ca8}\u{ccd}\u{20}\u{c87}\u{ca8}\u{ccd}\u{20}\u{cae}\u{cbe}\u{ca1}\u{cb2}\u{cbe}\u{c97}\u{cbf}\u{ca6}\u{cc6}';

  @override
  String get tabLabelRaw => '\u{24}\u{74}\u{61}\u{62}\u{43}\u{6f}\u{75}\u{6e}\u{74}\u{20}\u{cb0}\u{cb2}\u{ccd}\u{cb2}\u{cbf}\u{ca8}\u{20}\u{24}\u{74}\u{61}\u{62}\u{49}\u{6e}\u{64}\u{65}\u{78}\u{20}\u{c9f}\u{ccd}\u{caf}\u{cbe}\u{cac}\u{ccd}';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => '\u{cb8}\u{cae}\u{caf}\u{cb5}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get timePickerHourLabel => '\u{c97}\u{c82}\u{c9f}\u{cc6}';

  @override
  String get timePickerHourModeAnnouncement => '\u{c97}\u{c82}\u{c9f}\u{cc6}\u{c97}\u{cb3}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get timePickerInputHelpText => '\u{cb8}\u{cae}\u{caf}\u{cb5}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{ca8}\u{cae}\u{cc2}\u{ca6}\u{cbf}\u{cb8}\u{cbf}';

  @override
  String get timePickerMinuteLabel => '\u{ca8}\u{cbf}\u{cae}\u{cbf}\u{cb7}';

  @override
  String get timePickerMinuteModeAnnouncement => '\u{ca8}\u{cbf}\u{cae}\u{cbf}\u{cb7}\u{c97}\u{cb3}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{c86}\u{caf}\u{ccd}\u{c95}\u{cc6}\u{cae}\u{cbe}\u{ca1}\u{cbf}';

  @override
  String get unspecifiedDate => '\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}';

  @override
  String get unspecifiedDateRange => '\u{ca6}\u{cbf}\u{ca8}\u{cbe}\u{c82}\u{c95}\u{20}\u{cb5}\u{ccd}\u{caf}\u{cbe}\u{caa}\u{ccd}\u{ca4}\u{cbf}';

  @override
  String get viewLicensesButtonLabel => '\u{caa}\u{cb0}\u{cb5}\u{cbe}\u{ca8}\u{c97}\u{cbf}\u{c97}\u{cb3}\u{ca8}\u{ccd}\u{ca8}\u{cc1}\u{20}\u{cb5}\u{cbf}\u{cd5}\u{c95}\u{ccd}\u{cb7}\u{cbf}\u{cb8}\u{cbf}';
}

/// The translations for Korean (`ko`).
class MaterialLocalizationKo extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Korean.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationKo({
    super.localeName = 'ko',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName 정보';

  @override
  String get alertDialogLabel => '알림';

  @override
  String get anteMeridiemAbbreviation => '오전';

  @override
  String get backButtonTooltip => '뒤로';

  @override
  String get calendarModeButtonLabel => '캘린더 모드로 전환';

  @override
  String get cancelButtonLabel => '취소';

  @override
  String get closeButtonLabel => '닫기';

  @override
  String get closeButtonTooltip => '닫기';

  @override
  String get collapsedIconTapHint => '펼치기';

  @override
  String get continueButtonLabel => '계속';

  @override
  String get copyButtonLabel => '복사';

  @override
  String get cutButtonLabel => '잘라냄';

  @override
  String get dateHelpText => 'yyyy.mm.dd';

  @override
  String get dateInputLabel => '날짜 입력';

  @override
  String get dateOutOfRangeLabel => '범위를 벗어났습니다.';

  @override
  String get datePickerHelpText => '날짜 선택';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'종료일 $fullDate';

  @override
  String get dateRangeEndLabel => '종료일';

  @override
  String get dateRangePickerHelpText => '범위 선택';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'시작일 $fullDate';

  @override
  String get dateRangeStartLabel => '시작일';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => '삭제';

  @override
  String get dialModeButtonLabel => '다이얼 선택 모드로 전환';

  @override
  String get dialogLabel => '대화상자';

  @override
  String get drawerLabel => '탐색 메뉴';

  @override
  String get expandedIconTapHint => '접기';

  @override
  String get firstPageTooltip => '첫 페이지';

  @override
  String get hideAccountsLabel => '계정 숨기기';

  @override
  String get inputDateModeButtonLabel => '입력 모드로 전환';

  @override
  String get inputTimeModeButtonLabel => '텍스트 입력 모드로 전환';

  @override
  String get invalidDateFormatLabel => '형식이 잘못되었습니다.';

  @override
  String get invalidDateRangeLabel => '날짜 범위가 잘못되었습니다.';

  @override
  String get invalidTimeLabel => '유효한 시간을 입력하세요.';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => '백스페이스';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => '채널 아래로';

  @override
  String get keyboardKeyChannelUp => '채널 위로';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => '꺼내기';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => '메타';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PageUp';

  @override
  String get keyboardKeyPower => '전원';

  @override
  String get keyboardKeyPowerOff => '종료';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => '선택';

  @override
  String get keyboardKeySpace => '스페이스';

  @override
  String get lastPageTooltip => '마지막 페이지';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '라이선스 1개';

  @override
  String get licensesPackageDetailTextOther => r'라이선스 $licenseCount개';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => '라이선스';

  @override
  String get menuBarMenuLabel => '메뉴 바 메뉴';

  @override
  String get modalBarrierDismissLabel => '닫기';

  @override
  String get moreButtonTooltip => '더보기';

  @override
  String get nextMonthTooltip => '다음 달';

  @override
  String get nextPageTooltip => '다음 페이지';

  @override
  String get okButtonLabel => '확인';

  @override
  String get openAppDrawerTooltip => '탐색 메뉴 열기';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount행 중 $firstRow~$lastRow행';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'약 $rowCount행 중 $firstRow~$lastRow행';

  @override
  String get pasteButtonLabel => '붙여넣기';

  @override
  String get popupMenuLabel => '팝업 메뉴';

  @override
  String get postMeridiemAbbreviation => '오후';

  @override
  String get previousMonthTooltip => '지난달';

  @override
  String get previousPageTooltip => '이전 페이지';

  @override
  String get refreshIndicatorSemanticLabel => '새로고침';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1자 남음';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount자 남음';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => '아래로 이동';

  @override
  String get reorderItemLeft => '왼쪽으로 이동';

  @override
  String get reorderItemRight => '오른쪽으로 이동';

  @override
  String get reorderItemToEnd => '끝으로 이동';

  @override
  String get reorderItemToStart => '시작으로 이동';

  @override
  String get reorderItemUp => '위로 이동';

  @override
  String get rowsPerPageTitle => '페이지당 행 수:';

  @override
  String get saveButtonLabel => '저장';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => '검색';

  @override
  String get selectAllButtonLabel => '전체 선택';

  @override
  String get selectYearSemanticsLabel => '연도 선택';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '항목 1개 선택됨';

  @override
  String get selectedRowCountTitleOther => r'항목 $selectedRowCount개 선택됨';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => '계정 표시';

  @override
  String get showMenuTooltip => '메뉴 표시';

  @override
  String get signedInLabel => '로그인됨';

  @override
  String get tabLabelRaw => r'탭 $tabCount개 중 $tabIndex번째';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.a_space_h_colon_mm;

  @override
  String get timePickerDialHelpText => '시간 선택';

  @override
  String get timePickerHourLabel => '시간';

  @override
  String get timePickerHourModeAnnouncement => '시간 선택';

  @override
  String get timePickerInputHelpText => '시간 입력';

  @override
  String get timePickerMinuteLabel => '분';

  @override
  String get timePickerMinuteModeAnnouncement => '분 선택';

  @override
  String get unspecifiedDate => '날짜';

  @override
  String get unspecifiedDateRange => '기간';

  @override
  String get viewLicensesButtonLabel => '라이선스 보기';
}

/// The translations for Kirghiz Kyrgyz (`ky`).
class MaterialLocalizationKy extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Kirghiz Kyrgyz.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationKy({
    super.localeName = 'ky',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName каналы жөнүндө';

  @override
  String get alertDialogLabel => 'Эскертүү';

  @override
  String get anteMeridiemAbbreviation => 'түшкө чейин';

  @override
  String get backButtonTooltip => 'Артка';

  @override
  String get calendarModeButtonLabel => 'Жылнаамага которулуңуз';

  @override
  String get cancelButtonLabel => 'ЖОККО ЧЫГАРУУ';

  @override
  String get closeButtonLabel => 'ЖАБУУ';

  @override
  String get closeButtonTooltip => 'Жабуу';

  @override
  String get collapsedIconTapHint => 'Жайып көрсөтүү';

  @override
  String get continueButtonLabel => 'УЛАНТУУ';

  @override
  String get copyButtonLabel => 'Көчүрүү';

  @override
  String get cutButtonLabel => 'Кесүү';

  @override
  String get dateHelpText => 'кк.аа.жжжж';

  @override
  String get dateInputLabel => 'Күндү киргизүү';

  @override
  String get dateOutOfRangeLabel => 'Аракет чегинен тышкары.';

  @override
  String get datePickerHelpText => 'КҮНДҮ ТАНДОО';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Аяктоо күнү $fullDate';

  @override
  String get dateRangeEndLabel => 'Аяктоо күнү';

  @override
  String get dateRangePickerHelpText => 'ДИАПАЗОНДУ ТАНДОО';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Баштоо күнү $fullDate';

  @override
  String get dateRangeStartLabel => 'Баштоо күнү';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Жок кылуу';

  @override
  String get dialModeButtonLabel => 'Терүүнү тандагыч режимине которулуу';

  @override
  String get dialogLabel => 'Диалог';

  @override
  String get drawerLabel => 'Чабыттоо менюсу';

  @override
  String get expandedIconTapHint => 'Жыйыштыруу';

  @override
  String get firstPageTooltip => 'Биринчи бет';

  @override
  String get hideAccountsLabel => 'Аккаунттарды жашыруу';

  @override
  String get inputDateModeButtonLabel => 'Терип киргизүү режимине которулуңуз';

  @override
  String get inputTimeModeButtonLabel => 'Текст киргизүү режимине которулуу';

  @override
  String get invalidDateFormatLabel => 'Жараксыз формат.';

  @override
  String get invalidDateRangeLabel => 'Жараксыз диапазон.';

  @override
  String get invalidTimeLabel => 'Убакытты туура көрсөтүңүз';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Мета';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Тандоо';

  @override
  String get keyboardKeySpace => 'Боштук';

  @override
  String get lastPageTooltip => 'Акыркы бет';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 уруксаттама';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount уруксаттама';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Уруксаттамалар';

  @override
  String get menuBarMenuLabel => 'Меню тилкеси менюсу';

  @override
  String get modalBarrierDismissLabel => 'Жабуу';

  @override
  String get moreButtonTooltip => 'Дагы';

  @override
  String get nextMonthTooltip => 'Кийинки ай';

  @override
  String get nextPageTooltip => 'Кийинки бет';

  @override
  String get okButtonLabel => 'Макул';

  @override
  String get openAppDrawerTooltip => 'Чабыттоо менюсун ачуу';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount ичинен $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'Болжол менен $rowCount ичинен $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'Чаптоо';

  @override
  String get popupMenuLabel => 'Калкып чыгуучу меню';

  @override
  String get postMeridiemAbbreviation => 'түштөн кийин';

  @override
  String get previousMonthTooltip => 'Мурунку ай';

  @override
  String get previousPageTooltip => 'Мурунку бет';

  @override
  String get refreshIndicatorSemanticLabel => 'Жаңыртуу';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 белги калды';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount белги калды';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Төмөн жылдыруу';

  @override
  String get reorderItemLeft => 'Солго жылдыруу';

  @override
  String get reorderItemRight => 'Оңго жылдыруу';

  @override
  String get reorderItemToEnd => 'Аягына жылдыруу';

  @override
  String get reorderItemToStart => 'Башына жылдыруу';

  @override
  String get reorderItemUp => 'Жогору жылдыруу';

  @override
  String get rowsPerPageTitle => 'Бир бетте көрсөтүлүүчү саптардын саны:';

  @override
  String get saveButtonLabel => 'САКТОО';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Издөө';

  @override
  String get selectAllButtonLabel => 'Баарын тандоо';

  @override
  String get selectYearSemanticsLabel => 'Жылды тандоо';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 нерсе тандалды';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount нерсе тандалды';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Аккаунттарды көрсөтүү';

  @override
  String get showMenuTooltip => 'Менюну көрсөтүү';

  @override
  String get signedInLabel => 'Аккаунтуңузга кирдиңиз';

  @override
  String get tabLabelRaw => r'$tabCount кыналма ичинен $tabIndex';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'УБАКЫТ ТАНДОО';

  @override
  String get timePickerHourLabel => 'Саат';

  @override
  String get timePickerHourModeAnnouncement => 'Саатты тандаңыз';

  @override
  String get timePickerInputHelpText => 'УБАКЫТ КИРГИЗҮҮ';

  @override
  String get timePickerMinuteLabel => 'Мүнөт';

  @override
  String get timePickerMinuteModeAnnouncement => 'Мүнөттөрдү тандаңыз';

  @override
  String get unspecifiedDate => 'Күн';

  @override
  String get unspecifiedDateRange => 'Даталар диапазону';

  @override
  String get viewLicensesButtonLabel => 'УРУКСАТТАМАЛАРДЫ КӨРҮҮ';
}

/// The translations for Lao (`lo`).
class MaterialLocalizationLo extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Lao.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationLo({
    super.localeName = 'lo',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'ກ່ຽວກັບ $applicationName';

  @override
  String get alertDialogLabel => 'ການເຕືອນ';

  @override
  String get anteMeridiemAbbreviation => 'ກ່ອນທ່ຽງ';

  @override
  String get backButtonTooltip => 'ກັບຄືນ';

  @override
  String get calendarModeButtonLabel => 'ສະຫຼັບໄປປະຕິທິນ';

  @override
  String get cancelButtonLabel => 'ຍົກເລີກ';

  @override
  String get closeButtonLabel => 'ປິດ';

  @override
  String get closeButtonTooltip => 'ປິດ';

  @override
  String get collapsedIconTapHint => 'ຂະຫຍາຍ';

  @override
  String get continueButtonLabel => 'ສືບຕໍ່';

  @override
  String get copyButtonLabel => 'ສຳເນົາ';

  @override
  String get cutButtonLabel => 'ຕັດ';

  @override
  String get dateHelpText => 'ດດ/ວວ/ປປປປ';

  @override
  String get dateInputLabel => 'ໃສ່ວັນທີ';

  @override
  String get dateOutOfRangeLabel => 'ຢູ່ນອກໄລຍະ.';

  @override
  String get datePickerHelpText => 'ເລືອກວັນທີ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'ວັນທີສິ້ນສຸດ $fullDate';

  @override
  String get dateRangeEndLabel => 'ວັນທີສິ້ນສຸດ';

  @override
  String get dateRangePickerHelpText => 'ເລືອກໄລຍະ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'ວັນທີເລີ່ມຕົ້ນ $fullDate';

  @override
  String get dateRangeStartLabel => 'ວັນທີເລີ່ມຕົ້ນ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ລຶບ';

  @override
  String get dialModeButtonLabel => 'ສະຫຼັບໄປໃຊ້ໂໝດເລືອກຕົວເລກ';

  @override
  String get dialogLabel => 'ຂໍ້ຄວາມ';

  @override
  String get drawerLabel => 'ເມນູນຳທາງ';

  @override
  String get expandedIconTapHint => 'ຫຍໍ້ເຂົ້າ';

  @override
  String get firstPageTooltip => 'ໜ້າທຳອິດ';

  @override
  String get hideAccountsLabel => 'ເຊື່ອງບັນຊີ';

  @override
  String get inputDateModeButtonLabel => 'ສະຫຼັບໄປການປ້ອນຂໍ້ມູນ';

  @override
  String get inputTimeModeButtonLabel => 'ສະຫຼັບໄປໃຊ້ໂໝດປ້ອນຂໍ້ຄວາມ';

  @override
  String get invalidDateFormatLabel => 'ຮູບແບບບໍ່ຖືກຕ້ອງ.';

  @override
  String get invalidDateRangeLabel => 'ໄລຍະບໍ່ຖືກຕ້ອງ.';

  @override
  String get invalidTimeLabel => 'ລະບຸເວລາທີ່ຖືກຕ້ອງ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'ເລກ 0';

  @override
  String get keyboardKeyNumpad1 => 'ເລກ 1';

  @override
  String get keyboardKeyNumpad2 => 'ເລກ 2';

  @override
  String get keyboardKeyNumpad3 => 'ເລກ 3';

  @override
  String get keyboardKeyNumpad4 => 'ເລກ 4';

  @override
  String get keyboardKeyNumpad5 => 'ເລກ 5';

  @override
  String get keyboardKeyNumpad6 => 'ເລກ 6';

  @override
  String get keyboardKeyNumpad7 => 'ເລກ 7';

  @override
  String get keyboardKeyNumpad8 => 'ເລກ 8';

  @override
  String get keyboardKeyNumpad9 => 'ເລກ 9';

  @override
  String get keyboardKeyNumpadAdd => 'ປຸ່ມ +';

  @override
  String get keyboardKeyNumpadComma => 'ປຸ່ມ ,';

  @override
  String get keyboardKeyNumpadDecimal => 'ປຸ່ມ .';

  @override
  String get keyboardKeyNumpadDivide => 'ປຸ່ມ /';

  @override
  String get keyboardKeyNumpadEnter => 'ປຸ່ມ Enter';

  @override
  String get keyboardKeyNumpadEqual => 'ປຸ່ມ =';

  @override
  String get keyboardKeyNumpadMultiply => 'ປຸ່ມ *';

  @override
  String get keyboardKeyNumpadParenLeft => 'ປຸ່ມ (';

  @override
  String get keyboardKeyNumpadParenRight => 'ປຸ່ມ )';

  @override
  String get keyboardKeyNumpadSubtract => 'ປຸ່ມ -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'ເປີດປິດ';

  @override
  String get keyboardKeyPowerOff => 'ປິດເຄື່ອງ';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'ໜ້າສຸດທ້າຍ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 ໃບອະນຸຍາດ';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ໃບອະນຸຍາດ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ໃບອະນຸຍາດ';

  @override
  String get menuBarMenuLabel => 'ເມນູແຖບເມນູ';

  @override
  String get modalBarrierDismissLabel => 'ປິດໄວ້';

  @override
  String get moreButtonTooltip => 'ເພີ່ມເຕີມ';

  @override
  String get nextMonthTooltip => 'ເດືອນໜ້າ';

  @override
  String get nextPageTooltip => 'ໜ້າຕໍ່ໄປ';

  @override
  String get okButtonLabel => 'ຕົກລົງ';

  @override
  String get openAppDrawerTooltip => 'ເປີດເມນູການນຳທາງ';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow ຈາກທັງໝົດ $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow ຈາກປະມານ $rowCount';

  @override
  String get pasteButtonLabel => 'ວາງ';

  @override
  String get popupMenuLabel => 'ເມນູປັອບອັບ';

  @override
  String get postMeridiemAbbreviation => 'ຫຼັງທ່ຽງ';

  @override
  String get previousMonthTooltip => 'ເດືອນແລ້ວ';

  @override
  String get previousPageTooltip => 'ໜ້າກ່ອນໜ້າ';

  @override
  String get refreshIndicatorSemanticLabel => 'ໂຫຼດຄືນໃໝ່';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'ຍັງອີກ 1 ຕົວອັກສອນ';

  @override
  String get remainingTextFieldCharacterCountOther => r'ຍັງອີກ $remainingCount ຕົວອັກສອນ';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'ຍ້າຍລົງ';

  @override
  String get reorderItemLeft => 'ຍ້າຍໄປຊ້າຍ';

  @override
  String get reorderItemRight => 'ຍ້າຍໄປຂວາ';

  @override
  String get reorderItemToEnd => 'ຍ້າຍໄປສິ້ນສຸດ';

  @override
  String get reorderItemToStart => 'ຍ້າຍໄປເລີ່ມຕົ້ນ';

  @override
  String get reorderItemUp => 'ຍ້າຍຂຶ້ນ';

  @override
  String get rowsPerPageTitle => 'ແຖວຕໍ່ໜ້າ:';

  @override
  String get saveButtonLabel => 'ບັນທຶກ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'ຊອກຫາ';

  @override
  String get selectAllButtonLabel => 'ເລືອກທັງໝົດ';

  @override
  String get selectYearSemanticsLabel => 'ເລືອກ​ປີ';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'ເລືອກ 1 ລາຍການແລ້ວ';

  @override
  String get selectedRowCountTitleOther => r'ເລືອກ $selectedRowCount ລາຍການແລ້ວ';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'ສະແດງບັນຊີ';

  @override
  String get showMenuTooltip => 'ສະແດງເມນູ';

  @override
  String get signedInLabel => 'ເຂົ້າສູ່ລະບົບແລ້ວ';

  @override
  String get tabLabelRaw => r'ແຖບທີ $tabIndex ຈາກທັງໝົດ $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ເລືອກເວລາ';

  @override
  String get timePickerHourLabel => 'ຊົ່ວໂມງ';

  @override
  String get timePickerHourModeAnnouncement => 'ເລືອກໂມງ';

  @override
  String get timePickerInputHelpText => 'ລະບຸເວລາ';

  @override
  String get timePickerMinuteLabel => 'ນາທີ';

  @override
  String get timePickerMinuteModeAnnouncement => 'ເລືອກນາທີ';

  @override
  String get unspecifiedDate => 'ວັນທີ';

  @override
  String get unspecifiedDateRange => 'ຊ່ວງວັນທີ';

  @override
  String get viewLicensesButtonLabel => 'ເບິ່ງໃບອະນຸຍາດ';
}

/// The translations for Lithuanian (`lt`).
class MaterialLocalizationLt extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Lithuanian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationLt({
    super.localeName = 'lt',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Apie „$applicationName“';

  @override
  String get alertDialogLabel => 'Įspėjimas';

  @override
  String get anteMeridiemAbbreviation => 'priešpiet';

  @override
  String get backButtonTooltip => 'Atgal';

  @override
  String get calendarModeButtonLabel => 'Perjungti į kalendorių';

  @override
  String get cancelButtonLabel => 'ATŠAUKTI';

  @override
  String get closeButtonLabel => 'UŽDARYTI';

  @override
  String get closeButtonTooltip => 'Uždaryti';

  @override
  String get collapsedIconTapHint => 'Išskleisti';

  @override
  String get continueButtonLabel => 'TĘSTI';

  @override
  String get copyButtonLabel => 'Kopijuoti';

  @override
  String get cutButtonLabel => 'Iškirpti';

  @override
  String get dateHelpText => 'yyyy/mm/dd/';

  @override
  String get dateInputLabel => 'Įveskite datą';

  @override
  String get dateOutOfRangeLabel => 'Nepatenka į diapazoną.';

  @override
  String get datePickerHelpText => 'PASIRINKITE DATĄ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Pabaigos data: $fullDate';

  @override
  String get dateRangeEndLabel => 'Pabaigos data';

  @override
  String get dateRangePickerHelpText => 'PASIRINKITE DIAPAZONĄ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Pradžios data: $fullDate';

  @override
  String get dateRangeStartLabel => 'Pradžios data';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Ištrinti';

  @override
  String get dialModeButtonLabel => 'Perjungti į ciferblato parinkiklio režimą';

  @override
  String get dialogLabel => 'Dialogo langas';

  @override
  String get drawerLabel => 'Naršymo meniu';

  @override
  String get expandedIconTapHint => 'Sutraukti';

  @override
  String get firstPageTooltip => 'Pirmas puslapis';

  @override
  String get hideAccountsLabel => 'Slėpti paskyras';

  @override
  String get inputDateModeButtonLabel => 'Perjungti į įvestį';

  @override
  String get inputTimeModeButtonLabel => 'Perjungti į teksto įvesties režimą';

  @override
  String get invalidDateFormatLabel => 'Netinkamas formatas.';

  @override
  String get invalidDateRangeLabel => 'Netinkamas diapazonas.';

  @override
  String get invalidTimeLabel => 'Įveskite tinkamą laiką';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Naikinimo klavišas';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Ankstesnis kanalas';

  @override
  String get keyboardKeyChannelUp => 'Kitas kanalas';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Išimti';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Skaitm 0';

  @override
  String get keyboardKeyNumpad1 => 'Skaitm 1';

  @override
  String get keyboardKeyNumpad2 => 'Skaitm 2';

  @override
  String get keyboardKeyNumpad3 => 'Skaitm 3';

  @override
  String get keyboardKeyNumpad4 => 'Skaitm 4';

  @override
  String get keyboardKeyNumpad5 => 'Skaitm 5';

  @override
  String get keyboardKeyNumpad6 => 'Skaitm 6';

  @override
  String get keyboardKeyNumpad7 => 'Skaitm 7';

  @override
  String get keyboardKeyNumpad8 => 'Skaitm 8';

  @override
  String get keyboardKeyNumpad9 => 'Skaitm 9';

  @override
  String get keyboardKeyNumpadAdd => 'Skaitm +';

  @override
  String get keyboardKeyNumpadComma => 'Skaitm ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Skaitm .';

  @override
  String get keyboardKeyNumpadDivide => 'Skaitm /';

  @override
  String get keyboardKeyNumpadEnter => 'Skaitm „Enter“';

  @override
  String get keyboardKeyNumpadEqual => 'Skaitm =';

  @override
  String get keyboardKeyNumpadMultiply => 'Skaitm *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Skaitm (';

  @override
  String get keyboardKeyNumpadParenRight => 'Skaitm )';

  @override
  String get keyboardKeyNumpadSubtract => 'Skaitm -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Maitinimas';

  @override
  String get keyboardKeyPowerOff => 'Išjungti';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Tarpas';

  @override
  String get lastPageTooltip => 'Paskutinis puslapis';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licencijos';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount licencijos';

  @override
  String? get licensesPackageDetailTextOne => '1 licencija';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencijų';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licencijos';

  @override
  String get menuBarMenuLabel => 'Meniu juostos meniu';

  @override
  String get modalBarrierDismissLabel => 'Atsisakyti';

  @override
  String get moreButtonTooltip => 'Daugiau';

  @override
  String get nextMonthTooltip => 'Kitas mėnuo';

  @override
  String get nextPageTooltip => 'Kitas puslapis';

  @override
  String get okButtonLabel => 'GERAI';

  @override
  String get openAppDrawerTooltip => 'Atidaryti naršymo meniu';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow iš $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow iš maždaug $rowCount';

  @override
  String get pasteButtonLabel => 'Įklijuoti';

  @override
  String get popupMenuLabel => 'Iššokantysis meniu';

  @override
  String get postMeridiemAbbreviation => 'popiet';

  @override
  String get previousMonthTooltip => 'Ankstesnis mėnuo';

  @override
  String get previousPageTooltip => 'Ankstesnis puslapis';

  @override
  String get refreshIndicatorSemanticLabel => 'Atnaujinti';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Liko $remainingCount simboliai';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Liko $remainingCount simbolio';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Liko 1 simbolis';

  @override
  String get remainingTextFieldCharacterCountOther => r'Liko $remainingCount simbolių';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Perkelti žemyn';

  @override
  String get reorderItemLeft => 'Perkelti kairėn';

  @override
  String get reorderItemRight => 'Perkelti dešinėn';

  @override
  String get reorderItemToEnd => 'Perkelti į pabaigą';

  @override
  String get reorderItemToStart => 'Perkelti į pradžią';

  @override
  String get reorderItemUp => 'Perkelti aukštyn';

  @override
  String get rowsPerPageTitle => 'Eilučių puslapyje:';

  @override
  String get saveButtonLabel => 'IŠSAUGOTI';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Paieška';

  @override
  String get selectAllButtonLabel => 'Pasirinkti viską';

  @override
  String get selectYearSemanticsLabel => 'Pasirinkite metus';

  @override
  String? get selectedRowCountTitleFew => r'Pasirinkti $selectedRowCount elementai';

  @override
  String? get selectedRowCountTitleMany => r'Pasirinkta $selectedRowCount elemento';

  @override
  String? get selectedRowCountTitleOne => 'Pasirinktas 1 elementas';

  @override
  String get selectedRowCountTitleOther => r'Pasirinkta $selectedRowCount elementų';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Rodyti paskyras';

  @override
  String get showMenuTooltip => 'Rodyti meniu';

  @override
  String get signedInLabel => 'Prisijungta';

  @override
  String get tabLabelRaw => r'$tabIndex skirtukas iš $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'PASIRINKITE LAIKĄ';

  @override
  String get timePickerHourLabel => 'Valandos';

  @override
  String get timePickerHourModeAnnouncement => 'Pasirinkite valandas';

  @override
  String get timePickerInputHelpText => 'ĮVESKITE LAIKĄ';

  @override
  String get timePickerMinuteLabel => 'Minutės';

  @override
  String get timePickerMinuteModeAnnouncement => 'Pasirinkite minutes';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Dienų seka';

  @override
  String get viewLicensesButtonLabel => 'PERŽIŪRĖTI LICENCIJAS';
}

/// The translations for Latvian (`lv`).
class MaterialLocalizationLv extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Latvian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationLv({
    super.localeName = 'lv',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Par $applicationName';

  @override
  String get alertDialogLabel => 'Brīdinājums';

  @override
  String get anteMeridiemAbbreviation => 'priekšpusdienā';

  @override
  String get backButtonTooltip => 'Atpakaļ';

  @override
  String get calendarModeButtonLabel => 'Pārslēgties uz kalendāru';

  @override
  String get cancelButtonLabel => 'ATCELT';

  @override
  String get closeButtonLabel => 'AIZVĒRT';

  @override
  String get closeButtonTooltip => 'Aizvērt';

  @override
  String get collapsedIconTapHint => 'Izvērst';

  @override
  String get continueButtonLabel => 'TURPINĀT';

  @override
  String get copyButtonLabel => 'Kopēt';

  @override
  String get cutButtonLabel => 'Izgriezt';

  @override
  String get dateHelpText => 'dd/mm/gggg';

  @override
  String get dateInputLabel => 'Ievadiet datumu';

  @override
  String get dateOutOfRangeLabel => 'Ārpus diapazona.';

  @override
  String get datePickerHelpText => 'ATLASIET DATUMU';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Beigu datums: $fullDate';

  @override
  String get dateRangeEndLabel => 'Beigu datums';

  @override
  String get dateRangePickerHelpText => 'ATLASIET DIAPAZONU';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Sākuma datums: $fullDate';

  @override
  String get dateRangeStartLabel => 'Sākuma datums';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Dzēst';

  @override
  String get dialModeButtonLabel => 'Pārslēgties uz ciparnīcas atlasītāja režīmu';

  @override
  String get dialogLabel => 'Dialoglodziņš';

  @override
  String get drawerLabel => 'Navigācijas izvēlne';

  @override
  String get expandedIconTapHint => 'Sakļaut';

  @override
  String get firstPageTooltip => 'Pirmā lapa';

  @override
  String get hideAccountsLabel => 'Slēpt kontus';

  @override
  String get inputDateModeButtonLabel => 'Pārslēgties uz ievadi';

  @override
  String get inputTimeModeButtonLabel => 'Pārslēgties uz teksta ievades režīmu';

  @override
  String get invalidDateFormatLabel => 'Nederīgs formāts.';

  @override
  String get invalidDateRangeLabel => 'Nederīgs diapazons.';

  @override
  String get invalidTimeLabel => 'Ievadiet derīgu laiku.';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Nākamais kanāls';

  @override
  String get keyboardKeyChannelUp => 'Iepriekšējais kanāls';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Izstumt';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Windows';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Ieslēgt';

  @override
  String get keyboardKeyPowerOff => 'Izslēgt';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Atlasīt';

  @override
  String get keyboardKeySpace => 'Atstarpes taustiņš';

  @override
  String get lastPageTooltip => 'Pēdējā lapa';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licence';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licences';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'Nav licenču';

  @override
  String get licensesPageTitle => 'Licences';

  @override
  String get menuBarMenuLabel => 'Izvēļņu joslas izvēlne';

  @override
  String get modalBarrierDismissLabel => 'Nerādīt';

  @override
  String get moreButtonTooltip => 'Vairāk';

  @override
  String get nextMonthTooltip => 'Nākamais mēnesis';

  @override
  String get nextPageTooltip => 'Nākamā lapa';

  @override
  String get okButtonLabel => 'LABI';

  @override
  String get openAppDrawerTooltip => 'Atvērt navigācijas izvēlni';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow.–$lastRow. no $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow.–$lastRow. no aptuveni $rowCount';

  @override
  String get pasteButtonLabel => 'Ielīmēt';

  @override
  String get popupMenuLabel => 'Uznirstošā izvēlne';

  @override
  String get postMeridiemAbbreviation => 'pēcpusdienā';

  @override
  String get previousMonthTooltip => 'Iepriekšējais mēnesis';

  @override
  String get previousPageTooltip => 'Iepriekšējā lapa';

  @override
  String get refreshIndicatorSemanticLabel => 'Atsvaidzināt';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Atlikusi 1 rakstzīme.';

  @override
  String get remainingTextFieldCharacterCountOther => r'Atlikušas $remainingCount rakstzīmes.';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'Nav atlikusi neviena rakstzīme.';

  @override
  String get reorderItemDown => 'Pārvietot uz leju';

  @override
  String get reorderItemLeft => 'Pārvietot pa kreisi';

  @override
  String get reorderItemRight => 'Pārvietot pa labi';

  @override
  String get reorderItemToEnd => 'Pārvietot uz beigām';

  @override
  String get reorderItemToStart => 'Pārvietot uz sākumu';

  @override
  String get reorderItemUp => 'Pārvietot uz augšu';

  @override
  String get rowsPerPageTitle => 'Rindas lapā:';

  @override
  String get saveButtonLabel => 'SAGLABĀT';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Meklēt';

  @override
  String get selectAllButtonLabel => 'Atlasīt visu';

  @override
  String get selectYearSemanticsLabel => 'Atlasiet gadu';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Atlasīts 1 vienums';

  @override
  String get selectedRowCountTitleOther => r'Atlasīti $selectedRowCount vienumi';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Nav atlasītu vienumu';

  @override
  String get showAccountsLabel => 'Rādīt kontus';

  @override
  String get showMenuTooltip => 'Rādīt izvēlni';

  @override
  String get signedInLabel => 'Esat pierakstījies';

  @override
  String get tabLabelRaw => r'$tabIndex. cilne no $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ATLASIET LAIKU';

  @override
  String get timePickerHourLabel => 'Stunda';

  @override
  String get timePickerHourModeAnnouncement => 'Atlasiet stundas';

  @override
  String get timePickerInputHelpText => 'IEVADIET LAIKU';

  @override
  String get timePickerMinuteLabel => 'Minūte';

  @override
  String get timePickerMinuteModeAnnouncement => 'Atlasiet minūtes';

  @override
  String get unspecifiedDate => 'Datums';

  @override
  String get unspecifiedDateRange => 'Datumu diapazons';

  @override
  String get viewLicensesButtonLabel => 'SKATĪT LICENCES';
}

/// The translations for Macedonian (`mk`).
class MaterialLocalizationMk extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Macedonian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationMk({
    super.localeName = 'mk',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'За $applicationName';

  @override
  String get alertDialogLabel => 'Предупредување';

  @override
  String get anteMeridiemAbbreviation => 'ПРЕТПЛАДНЕ';

  @override
  String get backButtonTooltip => 'Назад';

  @override
  String get calendarModeButtonLabel => 'Префрли на календар';

  @override
  String get cancelButtonLabel => 'ОТКАЖИ';

  @override
  String get closeButtonLabel => 'ЗАТВОРИ';

  @override
  String get closeButtonTooltip => 'Затвори';

  @override
  String get collapsedIconTapHint => 'Прошири';

  @override
  String get continueButtonLabel => 'ПРОДОЛЖИ';

  @override
  String get copyButtonLabel => 'Копирај';

  @override
  String get cutButtonLabel => 'Исечи';

  @override
  String get dateHelpText => 'dd.mm.yyyy';

  @override
  String get dateInputLabel => 'Внесете датум';

  @override
  String get dateOutOfRangeLabel => 'Надвор од опсег.';

  @override
  String get datePickerHelpText => 'ИЗБЕРЕТЕ ДАТУМ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Краен датум $fullDate';

  @override
  String get dateRangeEndLabel => 'Краен датум';

  @override
  String get dateRangePickerHelpText => 'ИЗБЕРЕТЕ ОПСЕГ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Датум на започнување $fullDate';

  @override
  String get dateRangeStartLabel => 'Датум на започнување';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Избриши';

  @override
  String get dialModeButtonLabel => 'Префрлете се на режим на избирач';

  @override
  String get dialogLabel => 'Дијалог';

  @override
  String get drawerLabel => 'Мени за навигација';

  @override
  String get expandedIconTapHint => 'Собери';

  @override
  String get firstPageTooltip => 'Прва страница';

  @override
  String get hideAccountsLabel => 'Сокриј сметки';

  @override
  String get inputDateModeButtonLabel => 'Префрли на внесување';

  @override
  String get inputTimeModeButtonLabel => 'Префрлете се на режим за внесување текст';

  @override
  String get invalidDateFormatLabel => 'Неважечки формат.';

  @override
  String get invalidDateRangeLabel => 'Погрешен опсег.';

  @override
  String get invalidTimeLabel => 'Внесете важечко време';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Последна страница';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 лиценца';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount лиценци';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Лиценци';

  @override
  String get menuBarMenuLabel => 'Мени на лентата со мени';

  @override
  String get modalBarrierDismissLabel => 'Отфрли';

  @override
  String get moreButtonTooltip => 'Уште';

  @override
  String get nextMonthTooltip => 'Следниот месец';

  @override
  String get nextPageTooltip => 'Следна страница';

  @override
  String get okButtonLabel => 'Во ред';

  @override
  String get openAppDrawerTooltip => 'Отворете го менито за навигација';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow - $lastRow од $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow - $lastRow од приближно $rowCount';

  @override
  String get pasteButtonLabel => 'Залепи';

  @override
  String get popupMenuLabel => 'Скокачко мени';

  @override
  String get postMeridiemAbbreviation => 'ПОПЛАДНЕ';

  @override
  String get previousMonthTooltip => 'Претходниот месец';

  @override
  String get previousPageTooltip => 'Претходна страница';

  @override
  String get refreshIndicatorSemanticLabel => 'Освежи';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Преостанува уште 1 знак';

  @override
  String get remainingTextFieldCharacterCountOther => r'Преостануваат уште $remainingCount знаци';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Преместете надолу';

  @override
  String get reorderItemLeft => 'Преместете налево';

  @override
  String get reorderItemRight => 'Преместете надесно';

  @override
  String get reorderItemToEnd => 'Преместете на крајот';

  @override
  String get reorderItemToStart => 'Преместете на почеток';

  @override
  String get reorderItemUp => 'Преместете нагоре';

  @override
  String get rowsPerPageTitle => 'Редови на страница:';

  @override
  String get saveButtonLabel => 'ЗАЧУВАЈ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Пребарувајте';

  @override
  String get selectAllButtonLabel => 'Избери ги сите';

  @override
  String get selectYearSemanticsLabel => 'Изберете година';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Избрана е 1 ставка';

  @override
  String get selectedRowCountTitleOther => r'Избрани се $selectedRowCount ставки';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Прикажи сметки';

  @override
  String get showMenuTooltip => 'Прикажи мени';

  @override
  String get signedInLabel => 'Најавени сте';

  @override
  String get tabLabelRaw => r'Картичка $tabIndex од $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ИЗБЕРЕТЕ ВРЕМЕ';

  @override
  String get timePickerHourLabel => 'Час';

  @override
  String get timePickerHourModeAnnouncement => 'Изберете часови';

  @override
  String get timePickerInputHelpText => 'ВНЕСЕТЕ ВРЕМЕ';

  @override
  String get timePickerMinuteLabel => 'Минута';

  @override
  String get timePickerMinuteModeAnnouncement => 'Изберете минути';

  @override
  String get unspecifiedDate => 'Датум';

  @override
  String get unspecifiedDateRange => 'Временски период';

  @override
  String get viewLicensesButtonLabel => 'ПРИКАЖИ ЛИЦЕНЦИ';
}

/// The translations for Malayalam (`ml`).
class MaterialLocalizationMl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Malayalam.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationMl({
    super.localeName = 'ml',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName എന്നതിനെക്കുറിച്ച്';

  @override
  String get alertDialogLabel => 'മുന്നറിയിപ്പ്';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'മടങ്ങുക';

  @override
  String get calendarModeButtonLabel => 'കലണ്ടറിലേക്ക് മാറുക';

  @override
  String get cancelButtonLabel => 'റദ്ദാക്കുക';

  @override
  String get closeButtonLabel => 'അടയ്‌ക്കുക';

  @override
  String get closeButtonTooltip => 'അടയ്‌ക്കുക';

  @override
  String get collapsedIconTapHint => 'വികസിപ്പിക്കുക';

  @override
  String get continueButtonLabel => 'തുടരുക';

  @override
  String get copyButtonLabel => 'പകർത്തുക';

  @override
  String get cutButtonLabel => 'മുറിക്കുക';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'തീയതി നൽകുക';

  @override
  String get dateOutOfRangeLabel => 'സാധുവായ ശ്രേണിക്ക് പുറത്താണ്.';

  @override
  String get datePickerHelpText => 'തീയതി തിരഞ്ഞെടുക്കുക';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'അവസാനിക്കുന്ന തീയതി $fullDate';

  @override
  String get dateRangeEndLabel => 'അവസാനിക്കുന്ന തീയതി';

  @override
  String get dateRangePickerHelpText => 'ശ്രേണി തിരഞ്ഞെടുക്കുക';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'ആരംഭിക്കുന്ന തീയതി $fullDate';

  @override
  String get dateRangeStartLabel => 'ആരംഭിക്കുന്ന തീയതി';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ഇല്ലാതാക്കുക';

  @override
  String get dialModeButtonLabel => 'ഡയൽ പിക്കർ മോഡിലേക്ക് മാറുക';

  @override
  String get dialogLabel => 'ഡയലോഗ്';

  @override
  String get drawerLabel => 'നാവിഗേഷൻ മെനു';

  @override
  String get expandedIconTapHint => 'ചുരുക്കുക';

  @override
  String get firstPageTooltip => 'ആദ്യ പേജ്';

  @override
  String get hideAccountsLabel => 'അക്കൗണ്ടുകൾ മറയ്‌ക്കുക';

  @override
  String get inputDateModeButtonLabel => 'ഇൻപുട്ടിലേക്ക് മാറുക';

  @override
  String get inputTimeModeButtonLabel => 'ടെക്‌സ്‌റ്റ് ഇൻപുട്ട് മോഡിലേക്ക് മാറുക';

  @override
  String get invalidDateFormatLabel => 'തെറ്റായ ഫോർമാറ്റ്.';

  @override
  String get invalidDateRangeLabel => 'തെറ്റായ ശ്രേണി.';

  @override
  String get invalidTimeLabel => 'സാധുവായ സമയം നൽകുക';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'അവസാന പേജ്';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'ഒരു ലൈസൻസ്';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ലൈസൻസുകൾ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ലൈസൻസുകൾ';

  @override
  String get menuBarMenuLabel => 'മെനു ബാർ മെനു';

  @override
  String get modalBarrierDismissLabel => 'നിരസിക്കുക';

  @override
  String get moreButtonTooltip => 'കൂടുതൽ';

  @override
  String get nextMonthTooltip => 'അടുത്ത മാസം';

  @override
  String get nextPageTooltip => 'അടുത്ത പേജ്';

  @override
  String get okButtonLabel => 'ശരി';

  @override
  String get openAppDrawerTooltip => 'നാവിഗേഷൻ മെനു തുറക്കുക';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount-ൽ $firstRow –$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'ഏകദേശം $rowCount-ൽ $firstRow –$lastRow';

  @override
  String get pasteButtonLabel => 'ഒട്ടിക്കുക';

  @override
  String get popupMenuLabel => 'പോപ്പ് അപ്പ് മെനു';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'മുമ്പത്തെ മാസം';

  @override
  String get previousPageTooltip => 'മുമ്പത്തെ പേജ്';

  @override
  String get refreshIndicatorSemanticLabel => 'റീഫ്രഷ് ചെയ്യുക';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'ഒരു പ്രതീകം ശേഷിക്കുന്നു';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount പ്രതീകങ്ങൾ ശേഷിക്കുന്നു';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'താഴോട്ട് നീക്കുക';

  @override
  String get reorderItemLeft => 'ഇടത്തോട്ട് നീക്കുക';

  @override
  String get reorderItemRight => 'വലത്തോട്ട് നീക്കുക';

  @override
  String get reorderItemToEnd => 'അവസാന ഭാഗത്തേക്ക് പോവുക';

  @override
  String get reorderItemToStart => 'തുടക്കത്തിലേക്ക് പോവുക';

  @override
  String get reorderItemUp => 'മുകളിലോട്ട് നീക്കുക';

  @override
  String get rowsPerPageTitle => 'ഓരോ പേജിലുമുള്ള വരികൾ:';

  @override
  String get saveButtonLabel => 'സംരക്ഷിക്കുക';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'തിരയുക';

  @override
  String get selectAllButtonLabel => 'എല്ലാം തിരഞ്ഞെടുക്കുക';

  @override
  String get selectYearSemanticsLabel => 'വർഷം തിരഞ്ഞെടുക്കുക';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'ഒരു ഇനം തിരഞ്ഞെടുത്തു';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount ഇനങ്ങൾ തിരഞ്ഞെടുത്തു';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'അക്കൗണ്ടുകൾ കാണിക്കുക';

  @override
  String get showMenuTooltip => 'മെനു കാണിക്കുക';

  @override
  String get signedInLabel => 'സൈൻ ഇൻ ചെയ്‌തു';

  @override
  String get tabLabelRaw => r'$tabCount-ൽ $tabIndex';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'സമയം തിരഞ്ഞെടുക്കുക';

  @override
  String get timePickerHourLabel => 'മണിക്കൂർ';

  @override
  String get timePickerHourModeAnnouncement => 'മണിക്കൂർ തിരഞ്ഞെടുക്കുക';

  @override
  String get timePickerInputHelpText => 'സമയം നൽകുക';

  @override
  String get timePickerMinuteLabel => 'മിനിറ്റ്';

  @override
  String get timePickerMinuteModeAnnouncement => 'മിനിറ്റ് തിരഞ്ഞെടുക്കുക';

  @override
  String get unspecifiedDate => 'തീയതി';

  @override
  String get unspecifiedDateRange => 'തീയതി ശ്രേണി';

  @override
  String get viewLicensesButtonLabel => 'ലൈസൻസുകൾ കാണുക';
}

/// The translations for Mongolian (`mn`).
class MaterialLocalizationMn extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Mongolian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationMn({
    super.localeName = 'mn',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName-н тухай';

  @override
  String get alertDialogLabel => 'Сэрэмжлүүлэг';

  @override
  String get anteMeridiemAbbreviation => 'ӨГЛӨӨ';

  @override
  String get backButtonTooltip => 'Буцах';

  @override
  String get calendarModeButtonLabel => 'Календарь луу сэлгэх';

  @override
  String get cancelButtonLabel => 'БОЛИХ';

  @override
  String get closeButtonLabel => 'ХААХ';

  @override
  String get closeButtonTooltip => 'Хаах';

  @override
  String get collapsedIconTapHint => 'Дэлгэх';

  @override
  String get continueButtonLabel => 'ҮРГЭЛЖЛҮҮЛЭХ';

  @override
  String get copyButtonLabel => 'Хуулах';

  @override
  String get cutButtonLabel => 'Таслах';

  @override
  String get dateHelpText => 'жжжж.сс.өө';

  @override
  String get dateInputLabel => 'Огноо оруулах';

  @override
  String get dateOutOfRangeLabel => 'Интервалаас гадуур байна.';

  @override
  String get datePickerHelpText => 'ОГНОО СОНГОХ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Дуусах огноо $fullDate';

  @override
  String get dateRangeEndLabel => 'Дуусах огноо';

  @override
  String get dateRangePickerHelpText => 'ИНТЕРВАЛ СОНГОХ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Эхлэх огноо $fullDate';

  @override
  String get dateRangeStartLabel => 'Эхлэх огноо';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Устгах';

  @override
  String get dialModeButtonLabel => 'Цаг сонгогч горим руу сэлгэх';

  @override
  String get dialogLabel => 'Харилцах цонх';

  @override
  String get drawerLabel => 'Навигацын цэс';

  @override
  String get expandedIconTapHint => 'Буулгах';

  @override
  String get firstPageTooltip => 'Эхний хуудас';

  @override
  String get hideAccountsLabel => 'Бүртгэлүүдийг нуух';

  @override
  String get inputDateModeButtonLabel => 'Оролт руу сэлгэх';

  @override
  String get inputTimeModeButtonLabel => 'Текст оруулах горим руу сэлгэх';

  @override
  String get invalidDateFormatLabel => 'Буруу формат байна.';

  @override
  String get invalidDateRangeLabel => 'Буруу интервал байна.';

  @override
  String get invalidTimeLabel => 'Цагийг зөв оруулна уу';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Гэр';

  @override
  String get keyboardKeyInsert => 'Оруулах';

  @override
  String get keyboardKeyMeta => 'Мета';

  @override
  String get keyboardKeyMetaMacOs => 'Тушаал';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Асаах/унтраах товч';

  @override
  String get keyboardKeyPowerOff => 'Унтраах';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Сонгох';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Сүүлийн хуудас';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 лиценз';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount лиценз';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Лиценз';

  @override
  String get menuBarMenuLabel => 'Цэсний талбарын цэс';

  @override
  String get modalBarrierDismissLabel => 'Үл хэрэгсэх';

  @override
  String get moreButtonTooltip => 'Бусад';

  @override
  String get nextMonthTooltip => 'Дараах сар';

  @override
  String get nextPageTooltip => 'Дараах хуудас';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Навигацын цэсийг нээх';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount-н $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'Ойролцоогоор $rowCount-н $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'Буулгах';

  @override
  String get popupMenuLabel => 'Попап цэс';

  @override
  String get postMeridiemAbbreviation => 'ОРОЙ';

  @override
  String get previousMonthTooltip => 'Өмнөх сар';

  @override
  String get previousPageTooltip => 'Өмнөх хуудас';

  @override
  String get refreshIndicatorSemanticLabel => 'Сэргээх';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 тэмдэгт үлдсэн';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount тэмдэгт үлдсэн';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'No characters remaining';

  @override
  String get reorderItemDown => 'Доош зөөх';

  @override
  String get reorderItemLeft => 'Зүүн тийш зөөх';

  @override
  String get reorderItemRight => 'Баруун тийш зөөх';

  @override
  String get reorderItemToEnd => 'Төгсгөл рүү зөөх';

  @override
  String get reorderItemToStart => 'Эхлэл рүү зөөх';

  @override
  String get reorderItemUp => 'Дээш зөөх';

  @override
  String get rowsPerPageTitle => 'Хуудсан дахь мөрийн тоо:';

  @override
  String get saveButtonLabel => 'ХАДГАЛАХ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Хайх';

  @override
  String get selectAllButtonLabel => 'Бүгдийг сонгох';

  @override
  String get selectYearSemanticsLabel => 'Жил сонгох';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 зүйл сонгосон';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount зүйл сонгосон';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Бичлэг сонгоогүй байна';

  @override
  String get showAccountsLabel => 'Бүртгэлүүдийг харуулах';

  @override
  String get showMenuTooltip => 'Цэсийг харуулах';

  @override
  String get signedInLabel => 'Нэвтэрсэн';

  @override
  String get tabLabelRaw => r'$tabCount-н $tabIndex-р таб';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ЦАГ СОНГОХ';

  @override
  String get timePickerHourLabel => 'Цаг';

  @override
  String get timePickerHourModeAnnouncement => 'Цаг сонгоно уу';

  @override
  String get timePickerInputHelpText => 'ЦАГ ОРУУЛАХ';

  @override
  String get timePickerMinuteLabel => 'Минут';

  @override
  String get timePickerMinuteModeAnnouncement => 'Минут сонгоно уу';

  @override
  String get unspecifiedDate => 'Огноо';

  @override
  String get unspecifiedDateRange => 'Хугацааны интервал';

  @override
  String get viewLicensesButtonLabel => 'ЛИЦЕНЗИЙГ ХАРАХ';
}

/// The translations for Marathi (`mr`).
class MaterialLocalizationMr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Marathi.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationMr({
    super.localeName = 'mr',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName बद्दल';

  @override
  String get alertDialogLabel => 'सूचना';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'मागे';

  @override
  String get calendarModeButtonLabel => 'कॅलेंडरवर स्विच करा';

  @override
  String get cancelButtonLabel => 'रद्द करा';

  @override
  String get closeButtonLabel => 'बंद करा';

  @override
  String get closeButtonTooltip => 'बंद करा';

  @override
  String get collapsedIconTapHint => 'विस्तार करा';

  @override
  String get continueButtonLabel => 'सुरू ठेवा';

  @override
  String get copyButtonLabel => 'कॉपी करा';

  @override
  String get cutButtonLabel => 'कट करा';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => 'तारीख एंटर करा';

  @override
  String get dateOutOfRangeLabel => 'श्रेणीच्या बाहेर आहे.';

  @override
  String get datePickerHelpText => 'तारीख निवडा';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'संपण्याची तारीख $fullDate';

  @override
  String get dateRangeEndLabel => 'संपण्याची तारीख';

  @override
  String get dateRangePickerHelpText => 'श्रेणी निवडा';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'सुरू होण्याची तारीख $fullDate';

  @override
  String get dateRangeStartLabel => 'सुरू होण्याची तारीख';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'हटवा';

  @override
  String get dialModeButtonLabel => 'डायल पिकर मोडवर स्विच करा';

  @override
  String get dialogLabel => 'डायलॉग';

  @override
  String get drawerLabel => 'नेव्हिगेशन मेनू';

  @override
  String get expandedIconTapHint => 'कोलॅप्स करा';

  @override
  String get firstPageTooltip => 'पहिले पेज';

  @override
  String get hideAccountsLabel => 'खाती लपवा';

  @override
  String get inputDateModeButtonLabel => 'इनपुटवर स्विच करा';

  @override
  String get inputTimeModeButtonLabel => 'मजकूर इनपुट मोडवर स्विच करा';

  @override
  String get invalidDateFormatLabel => 'फॉरमॅट चुकीचा आहे.';

  @override
  String get invalidDateRangeLabel => 'श्रेणी चुकीची आहे.';

  @override
  String get invalidTimeLabel => 'योग्य वेळ एंटर करा';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'बॅकस्पेस';

  @override
  String get keyboardKeyCapsLock => 'कॅप्स लॉक';

  @override
  String get keyboardKeyChannelDown => 'चॅनल डाउन';

  @override
  String get keyboardKeyChannelUp => 'चॅनल अप';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'इजेक्ट';

  @override
  String get keyboardKeyEnd => 'एंड';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'होम';

  @override
  String get keyboardKeyInsert => 'इन्सर्ट';

  @override
  String get keyboardKeyMeta => 'मेटा';

  @override
  String get keyboardKeyMetaMacOs => 'कमांड';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'पॉवर';

  @override
  String get keyboardKeyPowerOff => 'पॉवर ऑफ';

  @override
  String get keyboardKeyPrintScreen => 'प्रिंट स्क्रीन';

  @override
  String get keyboardKeyScrollLock => 'स्क्रोल लॉक';

  @override
  String get keyboardKeySelect => 'निवडा';

  @override
  String get keyboardKeySpace => 'स्पेस';

  @override
  String get lastPageTooltip => 'शेवटचे पेज';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'एक परवाना';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount परवाने';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'परवाने';

  @override
  String get menuBarMenuLabel => 'मेनू बार मेनू';

  @override
  String get modalBarrierDismissLabel => 'डिसमिस करा';

  @override
  String get moreButtonTooltip => 'आणखी';

  @override
  String get nextMonthTooltip => 'पुढील महिना';

  @override
  String get nextPageTooltip => 'पुढील पेज';

  @override
  String get okButtonLabel => 'ओके';

  @override
  String get openAppDrawerTooltip => 'नेव्हिगेशन मेनू उघडा';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount पैकी $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$rowCount च्या बद्दल $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'पेस्ट करा';

  @override
  String get popupMenuLabel => 'पॉपअप मेनू';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'मागील महिना';

  @override
  String get previousPageTooltip => 'मागील पेज';

  @override
  String get refreshIndicatorSemanticLabel => 'रिफ्रेश करा';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'एक वर्ण शिल्लक';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount वर्ण शिल्लक';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'कोणतेही वर्ण शिल्लक नाहीत';

  @override
  String get reorderItemDown => 'खाली हलवा';

  @override
  String get reorderItemLeft => 'डावीकडे हलवा';

  @override
  String get reorderItemRight => 'उजवीकडे हलवा';

  @override
  String get reorderItemToEnd => 'शेवटाकडे हलवा';

  @override
  String get reorderItemToStart => 'सुरुवातीला हलवा';

  @override
  String get reorderItemUp => 'वर हलवा';

  @override
  String get rowsPerPageTitle => 'प्रति पेज पंक्ती:';

  @override
  String get saveButtonLabel => 'सेव्ह करा';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => 'शोध';

  @override
  String get selectAllButtonLabel => 'सर्व निवडा';

  @override
  String get selectYearSemanticsLabel => 'वर्ष निवडा';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'एक आयटम निवडला';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount आयटम निवडले';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'कोणतेही आयटम निवडलेले नाहीत';

  @override
  String get showAccountsLabel => 'खाती दर्शवा';

  @override
  String get showMenuTooltip => 'मेनू दाखवा';

  @override
  String get signedInLabel => 'साइन इन केले आहे';

  @override
  String get tabLabelRaw => r'$tabCount पैकी $tabIndex टॅब';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'वेळ निवडा';

  @override
  String get timePickerHourLabel => 'तास';

  @override
  String get timePickerHourModeAnnouncement => 'तास निवडा';

  @override
  String get timePickerInputHelpText => 'वेळ एंटर करा';

  @override
  String get timePickerMinuteLabel => 'मिनिट';

  @override
  String get timePickerMinuteModeAnnouncement => 'मिनिटे निवडा';

  @override
  String get unspecifiedDate => 'तारीख';

  @override
  String get unspecifiedDateRange => 'तारीख श्रेणी';

  @override
  String get viewLicensesButtonLabel => 'परवाने पहा';
}

/// The translations for Malay (`ms`).
class MaterialLocalizationMs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Malay.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationMs({
    super.localeName = 'ms',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Perihal $applicationName';

  @override
  String get alertDialogLabel => 'Makluman';

  @override
  String get anteMeridiemAbbreviation => 'PG';

  @override
  String get backButtonTooltip => 'Kembali';

  @override
  String get calendarModeButtonLabel => 'Tukar kepada kalendar';

  @override
  String get cancelButtonLabel => 'BATAL';

  @override
  String get closeButtonLabel => 'TUTUP';

  @override
  String get closeButtonTooltip => 'Tutup';

  @override
  String get collapsedIconTapHint => 'Kembangkan';

  @override
  String get continueButtonLabel => 'TERUSKAN';

  @override
  String get copyButtonLabel => 'Salin';

  @override
  String get cutButtonLabel => 'Potong';

  @override
  String get dateHelpText => 'bb/hh/tttt';

  @override
  String get dateInputLabel => 'Masukkan Tarikh';

  @override
  String get dateOutOfRangeLabel => 'Di luar julat.';

  @override
  String get datePickerHelpText => 'PILIH TARIKH';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Tarikh tamat ialah $fullDate';

  @override
  String get dateRangeEndLabel => 'Tarikh Tamat';

  @override
  String get dateRangePickerHelpText => 'PILIH JULAT';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Tarikh mula ialah $fullDate';

  @override
  String get dateRangeStartLabel => 'Tarikh Mula';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Padam';

  @override
  String get dialModeButtonLabel => 'Beralih kepada mod pemilih dail';

  @override
  String get dialogLabel => 'Dialog';

  @override
  String get drawerLabel => 'Menu navigasi';

  @override
  String get expandedIconTapHint => 'Runtuhkan';

  @override
  String get firstPageTooltip => 'Halaman pertama';

  @override
  String get hideAccountsLabel => 'Sembunyikan akaun';

  @override
  String get inputDateModeButtonLabel => 'Tukar kepada input';

  @override
  String get inputTimeModeButtonLabel => 'Beralih kepada mod input teks';

  @override
  String get invalidDateFormatLabel => 'Format tidak sah.';

  @override
  String get invalidDateRangeLabel => 'Julat tidak sah.';

  @override
  String get invalidTimeLabel => 'Masukkan masa yang sah';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Saluran Bawah';

  @override
  String get keyboardKeyChannelUp => 'Saluran ke Atas';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Keluarkan';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Perintah';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Kuasa';

  @override
  String get keyboardKeyPowerOff => 'Matikan';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Pilih';

  @override
  String get keyboardKeySpace => 'Ruang';

  @override
  String get lastPageTooltip => 'Halaman terakhir';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lesen';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lesen';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lesen';

  @override
  String get menuBarMenuLabel => 'Menu bar menu';

  @override
  String get modalBarrierDismissLabel => 'Tolak';

  @override
  String get moreButtonTooltip => 'Lagi';

  @override
  String get nextMonthTooltip => 'Bulan depan';

  @override
  String get nextPageTooltip => 'Halaman seterusnya';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Buka menu navigasi';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow dari $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow dari kira-kira $rowCount';

  @override
  String get pasteButtonLabel => 'Tampal';

  @override
  String get popupMenuLabel => 'Menu pop timbul';

  @override
  String get postMeridiemAbbreviation => 'PTG';

  @override
  String get previousMonthTooltip => 'Bulan sebelumnya';

  @override
  String get previousPageTooltip => 'Halaman sebelumnya';

  @override
  String get refreshIndicatorSemanticLabel => 'Muat semula';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 aksara lagi';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount aksara lagi';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Alih ke bawah';

  @override
  String get reorderItemLeft => 'Alih ke kiri';

  @override
  String get reorderItemRight => 'Alih ke kanan';

  @override
  String get reorderItemToEnd => 'Alih ke penghujung';

  @override
  String get reorderItemToStart => 'Alih ke permulaan';

  @override
  String get reorderItemUp => 'Alih ke atas';

  @override
  String get rowsPerPageTitle => 'Baris setiap halaman:';

  @override
  String get saveButtonLabel => 'SIMPAN';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Cari';

  @override
  String get selectAllButtonLabel => 'Pilih semua';

  @override
  String get selectYearSemanticsLabel => 'Pilih tahun';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item dipilih';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount item dipilih';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Tiada item dipilih';

  @override
  String get showAccountsLabel => 'Tunjukkan akaun';

  @override
  String get showMenuTooltip => 'Tunjukkan menu';

  @override
  String get signedInLabel => 'Dilog masuk';

  @override
  String get tabLabelRaw => r'Tab $tabIndex dari $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'PILIH MASA';

  @override
  String get timePickerHourLabel => 'Jam';

  @override
  String get timePickerHourModeAnnouncement => 'Pilih jam';

  @override
  String get timePickerInputHelpText => 'MASUKKAN MASA';

  @override
  String get timePickerMinuteLabel => 'Minit';

  @override
  String get timePickerMinuteModeAnnouncement => 'Pilih minit';

  @override
  String get unspecifiedDate => 'Tarikh';

  @override
  String get unspecifiedDateRange => 'Julat Tarikh';

  @override
  String get viewLicensesButtonLabel => 'LIHAT LESEN';
}

/// The translations for Burmese (`my`).
class MaterialLocalizationMy extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Burmese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationMy({
    super.localeName = 'my',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName အကြောင်း';

  @override
  String get alertDialogLabel => 'သတိပေးချက်';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'နောက်သို့';

  @override
  String get calendarModeButtonLabel => 'ပြက္ခဒိန်သို့ ပြောင်းရန်';

  @override
  String get cancelButtonLabel => 'မလုပ်တော့';

  @override
  String get closeButtonLabel => 'ပိတ်ရန်';

  @override
  String get closeButtonTooltip => 'ပိတ်ရန်';

  @override
  String get collapsedIconTapHint => 'ချဲ့ရန်';

  @override
  String get continueButtonLabel => 'ရှေ့ဆက်ရန်';

  @override
  String get copyButtonLabel => 'မိတ္တူကူးရန်';

  @override
  String get cutButtonLabel => 'ဖြတ်ယူရန်';

  @override
  String get dateHelpText => 'dd-mm-yyyy';

  @override
  String get dateInputLabel => 'ရက်စွဲ ထည့်ရန်';

  @override
  String get dateOutOfRangeLabel => 'အပိုင်းအခြား ပြင်ပတွင်ဖြစ်နေသည်။';

  @override
  String get datePickerHelpText => 'ရက်စွဲရွေးပါ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'ပြီးဆုံးရက်စွဲ $fullDate';

  @override
  String get dateRangeEndLabel => 'ပြီးဆုံးရက်စွဲ';

  @override
  String get dateRangePickerHelpText => 'အပိုင်းအခြား ရွေးရန်';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'စတင်သည့် ရက်စွဲ $fullDate';

  @override
  String get dateRangeStartLabel => 'စတင်သည့် ရက်စွဲ';

  @override
  String get dateSeparator => '-';

  @override
  String get deleteButtonTooltip => 'ဖျက်ရန်';

  @override
  String get dialModeButtonLabel => 'နံပါတ်ရွေးချယ်ခြင်းမုဒ်သို့ ပြောင်းရန်';

  @override
  String get dialogLabel => 'ဒိုင်ယာလော့';

  @override
  String get drawerLabel => 'လမ်းညွှန် မီနူး';

  @override
  String get expandedIconTapHint => 'လျှော့ပြရန်';

  @override
  String get firstPageTooltip => 'ပထမ စာမျက်နှာ';

  @override
  String get hideAccountsLabel => 'အကောင့်များကို ဝှက်ရန်';

  @override
  String get inputDateModeButtonLabel => 'ထည့်သွင်းမှုသို့ ပြောင်းရန်';

  @override
  String get inputTimeModeButtonLabel => 'စာသား ထည့်သွင်းမှုမုဒ်သို့ ပြောင်းရန်';

  @override
  String get invalidDateFormatLabel => 'ဖော်မက် မမှန်ကန်ပါ။';

  @override
  String get invalidDateRangeLabel => 'အပိုင်းအခြား မမှန်ပါ။';

  @override
  String get invalidTimeLabel => 'မှန်ကန်သည့်အချိန် ထည့်ပါ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'နောက်ပြန်ခလုတ်';

  @override
  String get keyboardKeyCapsLock => 'စားလုံးကြီးလော့ခ်';

  @override
  String get keyboardKeyChannelDown => 'ချန်နယ်အောက်';

  @override
  String get keyboardKeyChannelUp => 'ချန်နယ်အပေါ်';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'ထုတ်ရန်';

  @override
  String get keyboardKeyEnd => 'အဆုံး';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'ပင်မခလုတ်';

  @override
  String get keyboardKeyInsert => 'ထည့်သွင်းခလုတ်';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'ကွန်မန်း';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'နံပါတ်လော့ခ်';

  @override
  String get keyboardKeyNumpad0 => 'နံပါတ် ၀';

  @override
  String get keyboardKeyNumpad1 => 'နံပါတ် ၁';

  @override
  String get keyboardKeyNumpad2 => 'နံပါတ် ၂';

  @override
  String get keyboardKeyNumpad3 => 'နံပါတ် ၃';

  @override
  String get keyboardKeyNumpad4 => 'နံပါတ် ၄';

  @override
  String get keyboardKeyNumpad5 => 'နံပါတ် ၅';

  @override
  String get keyboardKeyNumpad6 => 'နံပါတ် ၆';

  @override
  String get keyboardKeyNumpad7 => 'နံပါတ် ၇';

  @override
  String get keyboardKeyNumpad8 => 'နံပါတ် ၈';

  @override
  String get keyboardKeyNumpad9 => 'နံပါတ် ၉';

  @override
  String get keyboardKeyNumpadAdd => 'နံပါတ် +';

  @override
  String get keyboardKeyNumpadComma => 'နံပါတ် ၊';

  @override
  String get keyboardKeyNumpadDecimal => 'နံပါတ် ။';

  @override
  String get keyboardKeyNumpadDivide => 'နံပါတ် /';

  @override
  String get keyboardKeyNumpadEnter => 'နံပါတ် Enter ခလုတ်';

  @override
  String get keyboardKeyNumpadEqual => 'နံပါတ် =';

  @override
  String get keyboardKeyNumpadMultiply => 'နံပါတ် *';

  @override
  String get keyboardKeyNumpadParenLeft => 'နံပါတ် (';

  @override
  String get keyboardKeyNumpadParenRight => 'နံပါတ် )';

  @override
  String get keyboardKeyNumpadSubtract => 'နံပါတ် -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'ပါဝါခလုတ်';

  @override
  String get keyboardKeyPowerOff => 'စက်ပိတ်ရန်';

  @override
  String get keyboardKeyPrintScreen => 'ပရင့်စခရင်';

  @override
  String get keyboardKeyScrollLock => 'လှိမ့်သည့်လော့ခ်';

  @override
  String get keyboardKeySelect => 'ရွေးရန်';

  @override
  String get keyboardKeySpace => 'နေရာခြားခလုတ်';

  @override
  String get lastPageTooltip => 'နောက်ဆုံး စာမျက်နှာ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'လိုင်စင် 1 ခု';

  @override
  String get licensesPackageDetailTextOther => r'လိုင်စင် $licenseCount ခု';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'လိုင်စင်များ';

  @override
  String get menuBarMenuLabel => 'မီနူးဘား မီနူး';

  @override
  String get modalBarrierDismissLabel => 'ပယ်ရန်';

  @override
  String get moreButtonTooltip => 'နောက်ထပ်';

  @override
  String get nextMonthTooltip => 'နောက်လ';

  @override
  String get nextPageTooltip => 'နောက်စာမျက်နှာ';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'လမ်းညွှန်မီနူးကို ဖွင့်ရန်';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount အနက် $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$rowCount ခန့်မှ $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'ကူးထည့်ရန်';

  @override
  String get popupMenuLabel => 'ပေါ့ပ်အပ်မီနူး';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'ယခင်လ';

  @override
  String get previousPageTooltip => 'ယခင်စာမျက်နှာ';

  @override
  String get refreshIndicatorSemanticLabel => 'ပြန်လည်စတင်ရန်';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'အက္ခရာ ၁ လုံးကျန်သည်';

  @override
  String get remainingTextFieldCharacterCountOther => r'အက္ခရာ $remainingCount လုံးကျန်သည်';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'အောက်သို့ရွှေ့ရန်';

  @override
  String get reorderItemLeft => 'ဘယ်ဘက်သို့ရွှေ့ရန်';

  @override
  String get reorderItemRight => 'ညာဘက်သို့ရွှေ့ရန်';

  @override
  String get reorderItemToEnd => 'အဆုံးသို့ ‌ရွှေ့ရန်';

  @override
  String get reorderItemToStart => 'အစသို့ ရွှေ့ရန်';

  @override
  String get reorderItemUp => 'အပေါ်သို့ ရွှေ့ရန်';

  @override
  String get rowsPerPageTitle => 'စာတစ်မျက်နှာပါ လိုင်းအရေအတွက်−';

  @override
  String get saveButtonLabel => 'သိမ်းရန်';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'ရှာဖွေရန်';

  @override
  String get selectAllButtonLabel => 'အားလုံး ရွေးရန်';

  @override
  String get selectYearSemanticsLabel => 'ခုနှစ် ရွေးရန်';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '၁ ခု ရွေးထားသည်';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount ခု ရွေးထားသည်';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'အကောင့်များကို ပြရန်';

  @override
  String get showMenuTooltip => 'မီနူး ပြရန်';

  @override
  String get signedInLabel => 'လက်မှတ်ထိုး ဝင်ထားသည်';

  @override
  String get tabLabelRaw => r'တဘ် $tabCount အနက် $tabIndex ခု';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'အချိန်ရွေးရန်';

  @override
  String get timePickerHourLabel => 'နာရီ';

  @override
  String get timePickerHourModeAnnouncement => 'နာရီကို ရွေးပါ';

  @override
  String get timePickerInputHelpText => 'အချိန်ထည့်ရန်';

  @override
  String get timePickerMinuteLabel => 'မိနစ်';

  @override
  String get timePickerMinuteModeAnnouncement => 'မိနစ်ကို ရွေးပါ';

  @override
  String get unspecifiedDate => 'ရက်စွဲ';

  @override
  String get unspecifiedDateRange => 'ရက်အပိုင်းအခြား';

  @override
  String get viewLicensesButtonLabel => 'လိုင်စင်များကို ကြည့်ရန်';
}

/// The translations for Norwegian Bokmål (`nb`).
class MaterialLocalizationNb extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Norwegian Bokmål.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationNb({
    super.localeName = 'nb',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Om $applicationName';

  @override
  String get alertDialogLabel => 'Varsel';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Tilbake';

  @override
  String get calendarModeButtonLabel => 'Bytt til kalender';

  @override
  String get cancelButtonLabel => 'AVBRYT';

  @override
  String get closeButtonLabel => 'LUKK';

  @override
  String get closeButtonTooltip => 'Lukk';

  @override
  String get collapsedIconTapHint => 'Vis';

  @override
  String get continueButtonLabel => 'FORTSETT';

  @override
  String get copyButtonLabel => 'Kopiér';

  @override
  String get cutButtonLabel => 'Klipp ut';

  @override
  String get dateHelpText => 'dd.mm.åååå';

  @override
  String get dateInputLabel => 'Skriv inn datoen';

  @override
  String get dateOutOfRangeLabel => 'Utenfor perioden.';

  @override
  String get datePickerHelpText => 'VELG DATOEN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Sluttdato $fullDate';

  @override
  String get dateRangeEndLabel => 'Sluttdato';

  @override
  String get dateRangePickerHelpText => 'VELG PERIODEN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdato $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdato';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Slett';

  @override
  String get dialModeButtonLabel => 'Bytt til modus for valg fra urskive';

  @override
  String get dialogLabel => 'Dialogboks';

  @override
  String get drawerLabel => 'Navigasjonsmeny';

  @override
  String get expandedIconTapHint => 'Skjul';

  @override
  String get firstPageTooltip => 'Første side';

  @override
  String get hideAccountsLabel => 'Skjul kontoer';

  @override
  String get inputDateModeButtonLabel => 'Bytt til innskriving';

  @override
  String get inputTimeModeButtonLabel => 'Bytt til tekstinndatamodus';

  @override
  String get invalidDateFormatLabel => 'Ugyldig format.';

  @override
  String get invalidDateRangeLabel => 'Ugyldig periode.';

  @override
  String get invalidTimeLabel => 'Angi et gyldig klokkeslett';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Tilbaketast';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Forrige kanal';

  @override
  String get keyboardKeyChannelUp => 'Neste kanal';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Løs ut';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Kommando';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Av/på';

  @override
  String get keyboardKeyPowerOff => 'Slå av';

  @override
  String get keyboardKeyPrintScreen => 'PrtScn';

  @override
  String get keyboardKeyScrollLock => 'ScrLk';

  @override
  String get keyboardKeySelect => 'Velg';

  @override
  String get keyboardKeySpace => 'Mellomrom';

  @override
  String get lastPageTooltip => 'Siste side';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisens';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisenser';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => null;

  @override
  String get licensesPageTitle => 'Lisenser';

  @override
  String get menuBarMenuLabel => 'Meny med menylinje';

  @override
  String get modalBarrierDismissLabel => 'Avvis';

  @override
  String get moreButtonTooltip => 'Mer';

  @override
  String get nextMonthTooltip => 'Neste måned';

  @override
  String get nextPageTooltip => 'Neste side';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Åpne navigasjonsmenyen';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow av $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow av omtrent $rowCount';

  @override
  String get pasteButtonLabel => 'Lim inn';

  @override
  String get popupMenuLabel => 'Forgrunnsmeny';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Forrige måned';

  @override
  String get previousPageTooltip => 'Forrige side';

  @override
  String get refreshIndicatorSemanticLabel => 'Laster inn på nytt';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 tegn gjenstår';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount tegn gjenstår';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Flytt ned';

  @override
  String get reorderItemLeft => 'Flytt til venstre';

  @override
  String get reorderItemRight => 'Flytt til høyre';

  @override
  String get reorderItemToEnd => 'Flytt til slutten';

  @override
  String get reorderItemToStart => 'Flytt til starten';

  @override
  String get reorderItemUp => 'Flytt opp';

  @override
  String get rowsPerPageTitle => 'Rader per side:';

  @override
  String get saveButtonLabel => 'LAGRE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Søk';

  @override
  String get selectAllButtonLabel => 'Velg alle';

  @override
  String get selectYearSemanticsLabel => 'Velg året';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 element er valgt';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elementer er valgt';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Vis kontoer';

  @override
  String get showMenuTooltip => 'Vis meny';

  @override
  String get signedInLabel => 'Pålogget';

  @override
  String get tabLabelRaw => r'Fane $tabIndex av $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VELG KLOKKESLETT';

  @override
  String get timePickerHourLabel => 'Time';

  @override
  String get timePickerHourModeAnnouncement => 'Angi timer';

  @override
  String get timePickerInputHelpText => 'ANGI ET KLOKKESLETT';

  @override
  String get timePickerMinuteLabel => 'Minutt';

  @override
  String get timePickerMinuteModeAnnouncement => 'Angi minutter';

  @override
  String get unspecifiedDate => 'Dato';

  @override
  String get unspecifiedDateRange => 'Datoperiode';

  @override
  String get viewLicensesButtonLabel => 'SE LISENSER';
}

/// The translations for Nepali (`ne`).
class MaterialLocalizationNe extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Nepali.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationNe({
    super.localeName = 'ne',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName बारे';

  @override
  String get alertDialogLabel => 'अलर्ट';

  @override
  String get anteMeridiemAbbreviation => 'पूर्वाह्न';

  @override
  String get backButtonTooltip => 'पछाडि जानुहोस्';

  @override
  String get calendarModeButtonLabel => 'पात्रो मोड प्रयोग गर्नुहोस्';

  @override
  String get cancelButtonLabel => 'रद्द गर्नुहोस्';

  @override
  String get closeButtonLabel => 'बन्द गर्नुहोस्';

  @override
  String get closeButtonTooltip => 'बन्द गर्नुहोस्';

  @override
  String get collapsedIconTapHint => 'विस्तार गर्नुहोस्';

  @override
  String get continueButtonLabel => 'जारी राख्नुहोस्';

  @override
  String get copyButtonLabel => 'प्रतिलिपि गर्नुहोस्';

  @override
  String get cutButtonLabel => 'काट्नुहोस्';

  @override
  String get dateHelpText => 'yyyy/mm/dd';

  @override
  String get dateInputLabel => 'मिति प्रविष्टि गर्नुहोस्';

  @override
  String get dateOutOfRangeLabel => 'दायराभन्दा बाहिर';

  @override
  String get datePickerHelpText => 'मिति चयन गर्नुहोस्';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'समाप्त हुने मिति $fullDate';

  @override
  String get dateRangeEndLabel => 'समाप्त हुने मिति';

  @override
  String get dateRangePickerHelpText => 'दायरा चयन गर्नुहोस्';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'सुरु हुने मिति $fullDate';

  @override
  String get dateRangeStartLabel => 'सुरु हुने मिति';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'मेट्नुहोस्';

  @override
  String get dialModeButtonLabel => 'डायल चयनकर्ता मोड प्रयोग गर्नुहोस्';

  @override
  String get dialogLabel => 'संवाद';

  @override
  String get drawerLabel => 'नेभिगेसन मेनु';

  @override
  String get expandedIconTapHint => 'संक्षिप्त गर्नुहोस्';

  @override
  String get firstPageTooltip => 'प्रथम पेज';

  @override
  String get hideAccountsLabel => 'खाताहरू लुकाउनुहोस्';

  @override
  String get inputDateModeButtonLabel => 'इनपुट मोड प्रयोग गर्नुहोस्';

  @override
  String get inputTimeModeButtonLabel => 'पाठ इनपुट मोड प्रयोग गर्नुहोस्';

  @override
  String get invalidDateFormatLabel => 'अवैध ढाँचा।';

  @override
  String get invalidDateRangeLabel => 'अवैध दायरा।';

  @override
  String get invalidTimeLabel => 'वैध समय प्रविष्टि गर्नुहोस्';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'अन्तिम पेज';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'एउटा इजाजतपत्र';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount वटा इजाजतपत्र';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'इजाजतपत्रहरू';

  @override
  String get menuBarMenuLabel => '"मेनु बार" मेनु';

  @override
  String get modalBarrierDismissLabel => 'खारेज गर्नुहोस्';

  @override
  String get moreButtonTooltip => 'थप';

  @override
  String get nextMonthTooltip => 'अर्को महिना';

  @override
  String get nextPageTooltip => 'अर्को पृष्ठ';

  @override
  String get okButtonLabel => 'ठिक छ';

  @override
  String get openAppDrawerTooltip => 'नेभिगेसन मेनु खोल्नुहोस्';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount मध्ये $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'लगभग $rowCount को $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'टाँस्नुहोस्';

  @override
  String get popupMenuLabel => 'पपअप मेनु';

  @override
  String get postMeridiemAbbreviation => 'अपराह्न';

  @override
  String get previousMonthTooltip => 'अघिल्लो महिना';

  @override
  String get previousPageTooltip => 'अघिल्लो पृष्ठ';

  @override
  String get refreshIndicatorSemanticLabel => 'पुनः ताजा गर्नुहोस्';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '१ वर्ण बाँकी';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount वर्णहरू बाँकी';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'तल सार्नुहोस्';

  @override
  String get reorderItemLeft => 'बायाँ सार्नुहोस्';

  @override
  String get reorderItemRight => 'दायाँ सार्नुहोस्';

  @override
  String get reorderItemToEnd => 'अन्त्यमा जानुहोस्';

  @override
  String get reorderItemToStart => 'सुरुमा सार्नुहोस्';

  @override
  String get reorderItemUp => 'माथि सार्नुहोस्';

  @override
  String get rowsPerPageTitle => 'प्रत्येक पृष्ठमा रहेका पङ्क्तिहरूको सङ्ख्या:';

  @override
  String get saveButtonLabel => 'सेभ गर्नुहोस्';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'खोज्नुहोस्';

  @override
  String get selectAllButtonLabel => 'सबै बटनहरू चयन गर्नुहोस्';

  @override
  String get selectYearSemanticsLabel => 'वर्ष छान्नुहोस्';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '१ वस्तु चयन गरियो';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount वस्तुहरू चयन गरिए';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'खाताहरू देखाउनुहोस्';

  @override
  String get showMenuTooltip => 'मेनु देखाउनुहोस्';

  @override
  String get signedInLabel => 'साइन इन गरियो';

  @override
  String get tabLabelRaw => r'$tabCount मध्ये $tabIndex ट्याब';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'समय चयन गर्नुहोस्';

  @override
  String get timePickerHourLabel => 'घन्टा';

  @override
  String get timePickerHourModeAnnouncement => 'घन्टा चयन गर्नुहोस्';

  @override
  String get timePickerInputHelpText => 'समय प्रविष्टि गर्नुहोस्';

  @override
  String get timePickerMinuteLabel => 'मिनेट';

  @override
  String get timePickerMinuteModeAnnouncement => 'मिनेट चयन गर्नुहोस्';

  @override
  String get unspecifiedDate => 'मिति';

  @override
  String get unspecifiedDateRange => 'मितिको दायरा';

  @override
  String get viewLicensesButtonLabel => 'इजाजतपत्रहरू हेर्नुहोस्';
}

/// The translations for Dutch Flemish (`nl`).
class MaterialLocalizationNl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Dutch Flemish.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationNl({
    super.localeName = 'nl',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Over $applicationName';

  @override
  String get alertDialogLabel => 'Melding';

  @override
  String get anteMeridiemAbbreviation => 'am';

  @override
  String get backButtonTooltip => 'Terug';

  @override
  String get calendarModeButtonLabel => 'Overschakelen naar kalender';

  @override
  String get cancelButtonLabel => 'ANNULEREN';

  @override
  String get closeButtonLabel => 'SLUITEN';

  @override
  String get closeButtonTooltip => 'Sluiten';

  @override
  String get collapsedIconTapHint => 'Uitvouwen';

  @override
  String get continueButtonLabel => 'DOORGAAN';

  @override
  String get copyButtonLabel => 'Kopiëren';

  @override
  String get cutButtonLabel => 'Knippen';

  @override
  String get dateHelpText => 'dd-mm-jjjj';

  @override
  String get dateInputLabel => 'Datum opgeven';

  @override
  String get dateOutOfRangeLabel => 'Buiten bereik.';

  @override
  String get datePickerHelpText => 'DATUM SELECTEREN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Einddatum $fullDate';

  @override
  String get dateRangeEndLabel => 'Einddatum';

  @override
  String get dateRangePickerHelpText => 'PERIODE SELECTEREN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdatum $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdatum';

  @override
  String get dateSeparator => '-';

  @override
  String get deleteButtonTooltip => 'Verwijderen';

  @override
  String get dialModeButtonLabel => 'Overschakelen naar klok';

  @override
  String get dialogLabel => 'Dialoogvenster';

  @override
  String get drawerLabel => 'Navigatiemenu';

  @override
  String get expandedIconTapHint => 'Samenvouwen';

  @override
  String get firstPageTooltip => 'Eerste pagina';

  @override
  String get hideAccountsLabel => 'Accounts verbergen';

  @override
  String get inputDateModeButtonLabel => 'Overschakelen naar invoer';

  @override
  String get inputTimeModeButtonLabel => 'Overschakelen naar tekstinvoer';

  @override
  String get invalidDateFormatLabel => 'Ongeldige indeling.';

  @override
  String get invalidDateRangeLabel => 'Ongeldige periode.';

  @override
  String get invalidTimeLabel => 'Geef een geldige tijd op';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Kanaal omlaag';

  @override
  String get keyboardKeyChannelUp => 'Kanaal omhoog';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Uitwerpen';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Aan/uit';

  @override
  String get keyboardKeyPowerOff => 'Uit';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Selecteren';

  @override
  String get keyboardKeySpace => 'Spatie';

  @override
  String get lastPageTooltip => 'Laatste pagina';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licentie';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenties';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenties';

  @override
  String get menuBarMenuLabel => 'Menu van menubalk';

  @override
  String get modalBarrierDismissLabel => 'Sluiten';

  @override
  String get moreButtonTooltip => 'Meer';

  @override
  String get nextMonthTooltip => 'Volgende maand';

  @override
  String get nextPageTooltip => 'Volgende pagina';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Navigatiemenu openen';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow van $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow van ongeveer $rowCount';

  @override
  String get pasteButtonLabel => 'Plakken';

  @override
  String get popupMenuLabel => 'Pop-upmenu';

  @override
  String get postMeridiemAbbreviation => 'pm';

  @override
  String get previousMonthTooltip => 'Vorige maand';

  @override
  String get previousPageTooltip => 'Vorige pagina';

  @override
  String get refreshIndicatorSemanticLabel => 'Vernieuwen';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 teken resterend';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount tekens resterend';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Omlaag verplaatsen';

  @override
  String get reorderItemLeft => 'Naar links verplaatsen';

  @override
  String get reorderItemRight => 'Naar rechts verplaatsen';

  @override
  String get reorderItemToEnd => 'Naar het einde verplaatsen';

  @override
  String get reorderItemToStart => 'Naar het begin verplaatsen';

  @override
  String get reorderItemUp => 'Omhoog verplaatsen';

  @override
  String get rowsPerPageTitle => 'Rijen per pagina:';

  @override
  String get saveButtonLabel => 'OPSLAAN';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Zoeken';

  @override
  String get selectAllButtonLabel => 'Alles selecteren';

  @override
  String get selectYearSemanticsLabel => 'Jaar selecteren';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item geselecteerd';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount items geselecteerd';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Accounts tonen';

  @override
  String get showMenuTooltip => 'Menu tonen';

  @override
  String get signedInLabel => 'Ingelogd';

  @override
  String get tabLabelRaw => r'Tabblad $tabIndex van $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'TIJD SELECTEREN';

  @override
  String get timePickerHourLabel => 'Uur';

  @override
  String get timePickerHourModeAnnouncement => 'Uren selecteren';

  @override
  String get timePickerInputHelpText => 'TIJD OPGEVEN';

  @override
  String get timePickerMinuteLabel => 'Minuut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Minuten selecteren';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Periode';

  @override
  String get viewLicensesButtonLabel => 'LICENTIES BEKIJKEN';
}

/// The translations for Norwegian (`no`).
class MaterialLocalizationNo extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Norwegian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationNo({
    super.localeName = 'no',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Om $applicationName';

  @override
  String get alertDialogLabel => 'Varsel';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Tilbake';

  @override
  String get calendarModeButtonLabel => 'Bytt til kalender';

  @override
  String get cancelButtonLabel => 'AVBRYT';

  @override
  String get closeButtonLabel => 'LUKK';

  @override
  String get closeButtonTooltip => 'Lukk';

  @override
  String get collapsedIconTapHint => 'Vis';

  @override
  String get continueButtonLabel => 'FORTSETT';

  @override
  String get copyButtonLabel => 'Kopiér';

  @override
  String get cutButtonLabel => 'Klipp ut';

  @override
  String get dateHelpText => 'dd.mm.åååå';

  @override
  String get dateInputLabel => 'Skriv inn datoen';

  @override
  String get dateOutOfRangeLabel => 'Utenfor perioden.';

  @override
  String get datePickerHelpText => 'VELG DATOEN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Sluttdato $fullDate';

  @override
  String get dateRangeEndLabel => 'Sluttdato';

  @override
  String get dateRangePickerHelpText => 'VELG PERIODEN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdato $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdato';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Slett';

  @override
  String get dialModeButtonLabel => 'Bytt til modus for valg fra urskive';

  @override
  String get dialogLabel => 'Dialogboks';

  @override
  String get drawerLabel => 'Navigasjonsmeny';

  @override
  String get expandedIconTapHint => 'Skjul';

  @override
  String get firstPageTooltip => 'Første side';

  @override
  String get hideAccountsLabel => 'Skjul kontoer';

  @override
  String get inputDateModeButtonLabel => 'Bytt til innskriving';

  @override
  String get inputTimeModeButtonLabel => 'Bytt til tekstinndatamodus';

  @override
  String get invalidDateFormatLabel => 'Ugyldig format.';

  @override
  String get invalidDateRangeLabel => 'Ugyldig periode.';

  @override
  String get invalidTimeLabel => 'Angi et gyldig klokkeslett';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'Alt Gr';

  @override
  String get keyboardKeyBackspace => 'Tilbaketast';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Forrige kanal';

  @override
  String get keyboardKeyChannelUp => 'Neste kanal';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Løs ut';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Kommando';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Av/på';

  @override
  String get keyboardKeyPowerOff => 'Slå av';

  @override
  String get keyboardKeyPrintScreen => 'PrtScn';

  @override
  String get keyboardKeyScrollLock => 'ScrLk';

  @override
  String get keyboardKeySelect => 'Velg';

  @override
  String get keyboardKeySpace => 'Mellomrom';

  @override
  String get lastPageTooltip => 'Siste side';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisens';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisenser';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => null;

  @override
  String get licensesPageTitle => 'Lisenser';

  @override
  String get menuBarMenuLabel => 'Meny med menylinje';

  @override
  String get modalBarrierDismissLabel => 'Avvis';

  @override
  String get moreButtonTooltip => 'Mer';

  @override
  String get nextMonthTooltip => 'Neste måned';

  @override
  String get nextPageTooltip => 'Neste side';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Åpne navigasjonsmenyen';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow av $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow av omtrent $rowCount';

  @override
  String get pasteButtonLabel => 'Lim inn';

  @override
  String get popupMenuLabel => 'Forgrunnsmeny';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Forrige måned';

  @override
  String get previousPageTooltip => 'Forrige side';

  @override
  String get refreshIndicatorSemanticLabel => 'Laster inn på nytt';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 tegn gjenstår';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount tegn gjenstår';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Flytt ned';

  @override
  String get reorderItemLeft => 'Flytt til venstre';

  @override
  String get reorderItemRight => 'Flytt til høyre';

  @override
  String get reorderItemToEnd => 'Flytt til slutten';

  @override
  String get reorderItemToStart => 'Flytt til starten';

  @override
  String get reorderItemUp => 'Flytt opp';

  @override
  String get rowsPerPageTitle => 'Rader per side:';

  @override
  String get saveButtonLabel => 'LAGRE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Søk';

  @override
  String get selectAllButtonLabel => 'Velg alle';

  @override
  String get selectYearSemanticsLabel => 'Velg året';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 element er valgt';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount elementer er valgt';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Vis kontoer';

  @override
  String get showMenuTooltip => 'Vis meny';

  @override
  String get signedInLabel => 'Pålogget';

  @override
  String get tabLabelRaw => r'Fane $tabIndex av $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VELG KLOKKESLETT';

  @override
  String get timePickerHourLabel => 'Time';

  @override
  String get timePickerHourModeAnnouncement => 'Angi timer';

  @override
  String get timePickerInputHelpText => 'ANGI ET KLOKKESLETT';

  @override
  String get timePickerMinuteLabel => 'Minutt';

  @override
  String get timePickerMinuteModeAnnouncement => 'Angi minutter';

  @override
  String get unspecifiedDate => 'Dato';

  @override
  String get unspecifiedDateRange => 'Datoperiode';

  @override
  String get viewLicensesButtonLabel => 'SE LISENSER';
}

/// The translations for Oriya (`or`).
class MaterialLocalizationOr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Oriya.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationOr({
    super.localeName = 'or',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName ବିଷୟରେ';

  @override
  String get alertDialogLabel => 'ଆଲର୍ଟ';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'ପଛକୁ ଫେରନ୍ତୁ';

  @override
  String get calendarModeButtonLabel => 'କ୍ୟାଲେଣ୍ଡରକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ';

  @override
  String get cancelButtonLabel => 'ବାତିଲ୍ କରନ୍ତୁ';

  @override
  String get closeButtonLabel => 'ବନ୍ଦ କରନ୍ତୁ';

  @override
  String get closeButtonTooltip => 'ବନ୍ଦ କରନ୍ତୁ';

  @override
  String get collapsedIconTapHint => 'ପ୍ରସାରିତ କରନ୍ତୁ';

  @override
  String get continueButtonLabel => 'ଜାରି ରଖନ୍ତୁ';

  @override
  String get copyButtonLabel => 'କପି କରନ୍ତୁ';

  @override
  String get cutButtonLabel => 'କଟ୍ କରନ୍ତୁ';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'ତାରିଖ ଲେଖନ୍ତୁ';

  @override
  String get dateOutOfRangeLabel => 'ସୀମା ବାହାରେ।';

  @override
  String get datePickerHelpText => 'ତାରିଖ ଚୟନ କରନ୍ତୁ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'ଶେଷ ତାରିଖ $fullDate';

  @override
  String get dateRangeEndLabel => 'ଶେଷ ତାରିଖ';

  @override
  String get dateRangePickerHelpText => 'ସୀମା ଚୟନ କରନ୍ତୁ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'ଆରମ୍ଭ ତାରିଖ $fullDate';

  @override
  String get dateRangeStartLabel => 'ଆରମ୍ଭ ତାରିଖ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ଡିଲିଟ୍ କରନ୍ତୁ';

  @override
  String get dialModeButtonLabel => 'ଡାଏଲ୍ ପିକର୍ ମୋଡକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ';

  @override
  String get dialogLabel => 'ଡାୟଲଗ୍';

  @override
  String get drawerLabel => 'ନେଭିଗେସନ୍ ମେନୁ';

  @override
  String get expandedIconTapHint => 'ସଙ୍କୁଚିତ କରନ୍ତୁ';

  @override
  String get firstPageTooltip => 'ପ୍ରଥମ ପୃଷ୍ଠା';

  @override
  String get hideAccountsLabel => 'ଆକାଉଣ୍ଟଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ';

  @override
  String get inputDateModeButtonLabel => 'ଇନପୁଟକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ';

  @override
  String get inputTimeModeButtonLabel => 'ଟେକ୍ସଟ୍ ଇନପୁଟ୍ ମୋଡକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ';

  @override
  String get invalidDateFormatLabel => 'ଅବୈଧ ଫର୍ମାଟ୍।';

  @override
  String get invalidDateRangeLabel => 'ଅବୈଧ ସୀମା।';

  @override
  String get invalidTimeLabel => 'ଏକ ବୈଧ ସମୟ ଲେଖନ୍ତୁ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'ଶେଷ ପୃଷ୍ଠା';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1ଟି ଲାଇସେନ୍ସ';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCountଟି ଲାଇସେନ୍ସ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ଲାଇସେନ୍ସଗୁଡ଼କ';

  @override
  String get menuBarMenuLabel => 'ମେନୁ ବାର ମେନୁ';

  @override
  String get modalBarrierDismissLabel => 'ଖାରଜ କରନ୍ତୁ';

  @override
  String get moreButtonTooltip => 'ଅଧିକ';

  @override
  String get nextMonthTooltip => 'ପରବର୍ତ୍ତୀ ମାସ';

  @override
  String get nextPageTooltip => 'ପରବର୍ତ୍ତୀ ପେଜ୍';

  @override
  String get okButtonLabel => 'ଠିକ୍ ଅଛି';

  @override
  String get openAppDrawerTooltip => 'ନାଭିଗେସନ୍ ମେନୁ ଖୋଲନ୍ତୁ';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCountର $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'ପାଖାପାଖି $rowCountର $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'ପେଷ୍ଟ କରନ୍ତୁ';

  @override
  String get popupMenuLabel => 'ପପ୍-ଅପ୍ ମେନୁ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'ପୂର୍ବ ମାସ';

  @override
  String get previousPageTooltip => 'ପୂର୍ବବର୍ତ୍ତୀ ପେଜ୍';

  @override
  String get refreshIndicatorSemanticLabel => 'ରିଫ୍ରେସ୍ କରନ୍ତୁ';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1ଟି ଅକ୍ଷର ବାକି ଅଛି';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCountଟି ଅକ୍ଷର ବାକି ଅଛି';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'ତଳକୁ ଯାଆନ୍ତୁ';

  @override
  String get reorderItemLeft => 'ବାମକୁ ଯାଆନ୍ତୁ';

  @override
  String get reorderItemRight => 'ଡାହାଣକୁ ଯାଆନ୍ତୁ';

  @override
  String get reorderItemToEnd => 'ଶେଷକୁ ଯାଆନ୍ତୁ';

  @override
  String get reorderItemToStart => 'ଆରମ୍ଭକୁ ଯାଆନ୍ତୁ';

  @override
  String get reorderItemUp => 'ଉପରକୁ ନିଅନ୍ତୁ';

  @override
  String get rowsPerPageTitle => 'ପୃଷ୍ଠା ପିଛା ଧାଡ଼ି:';

  @override
  String get saveButtonLabel => 'ସେଭ୍ କରନ୍ତୁ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'ସନ୍ଧାନ କରନ୍ତୁ';

  @override
  String get selectAllButtonLabel => 'ସବୁ ଚୟନ କରନ୍ତୁ';

  @override
  String get selectYearSemanticsLabel => 'ବର୍ଷ ଚୟନ କରନ୍ତୁ';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1ଟି ଆଇଟମ୍ ଚୟନ କରାଯାଇଛି';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCountଟି ଆଇଟମ୍ ଚୟନ କରାଯାଇଛି';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'ଆକାଉଣ୍ଟ ଦେଖାନ୍ତୁ';

  @override
  String get showMenuTooltip => 'ମେନୁ ଦେଖାନ୍ତୁ';

  @override
  String get signedInLabel => 'ସାଇନ୍ ଇନ୍ କରାଯାଇଛି';

  @override
  String get tabLabelRaw => r'$tabCountର $tabIndex ଟାବ୍';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ସମୟ ଚୟନ କରନ୍ତୁ';

  @override
  String get timePickerHourLabel => 'ଘଣ୍ଟା';

  @override
  String get timePickerHourModeAnnouncement => 'ଘଣ୍ଟା ଚୟନ କରନ୍ତୁ';

  @override
  String get timePickerInputHelpText => 'ସମୟ ଲେଖନ୍ତୁ';

  @override
  String get timePickerMinuteLabel => 'ମିନିଟ୍';

  @override
  String get timePickerMinuteModeAnnouncement => 'ମିନିଟ୍ ଚୟନ କରନ୍ତୁ';

  @override
  String get unspecifiedDate => 'ତାରିଖ';

  @override
  String get unspecifiedDateRange => 'ତାରିଖ ସୀମା';

  @override
  String get viewLicensesButtonLabel => 'ଲାଇସେନ୍ସ ଦେଖାନ୍ତୁ';
}

/// The translations for Panjabi Punjabi (`pa`).
class MaterialLocalizationPa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Panjabi Punjabi.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationPa({
    super.localeName = 'pa',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName ਬਾਰੇ';

  @override
  String get alertDialogLabel => 'ਸੁਚੇਤਨਾ';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'ਪਿੱਛੇ';

  @override
  String get calendarModeButtonLabel => "ਕੈਲੰਡਰ 'ਤੇ ਜਾਓ";

  @override
  String get cancelButtonLabel => 'ਰੱਦ ਕਰੋ';

  @override
  String get closeButtonLabel => 'ਬੰਦ ਕਰੋ';

  @override
  String get closeButtonTooltip => 'ਬੰਦ ਕਰੋ';

  @override
  String get collapsedIconTapHint => 'ਵਿਸਤਾਰ ਕਰੋ';

  @override
  String get continueButtonLabel => 'ਜਾਰੀ ਰੱਖੋ';

  @override
  String get copyButtonLabel => 'ਕਾਪੀ ਕਰੋ';

  @override
  String get cutButtonLabel => 'ਕੱਟ ਕਰੋ';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'ਤਾਰੀਖ ਦਾਖਲ ਕਰੋ';

  @override
  String get dateOutOfRangeLabel => 'ਰੇਂਜ-ਤੋਂ-ਬਾਹਰ।';

  @override
  String get datePickerHelpText => 'ਤਾਰੀਖ ਚੁਣੋ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'ਸਮਾਪਤੀ ਦੀ ਤਾਰੀਖ $fullDate';

  @override
  String get dateRangeEndLabel => 'ਸਮਾਪਤੀ ਦੀ ਤਾਰੀਖ';

  @override
  String get dateRangePickerHelpText => 'ਰੇਂਜ ਚੁਣੋ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'ਸ਼ੁਰੂਆਤੀ ਤਾਰੀਖ $fullDate';

  @override
  String get dateRangeStartLabel => 'ਸ਼ੁਰੂਆਤੀ ਤਾਰੀਖ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ਮਿਟਾਓ';

  @override
  String get dialModeButtonLabel => "ਡਾਇਲ ਚੋਣਕਾਰ ਮੋਡ 'ਤੇ ਜਾਓ";

  @override
  String get dialogLabel => 'ਵਿੰਡੋ';

  @override
  String get drawerLabel => 'ਨੈਵੀਗੇਸ਼ਨ ਮੀਨੂ';

  @override
  String get expandedIconTapHint => 'ਸਮੇਟੋ';

  @override
  String get firstPageTooltip => 'ਪਹਿਲਾ ਪੰਨਾ';

  @override
  String get hideAccountsLabel => 'ਖਾਤੇ ਲੁਕਾਓ';

  @override
  String get inputDateModeButtonLabel => "ਇਨਪੁੱਟ 'ਤੇ ਜਾਓ";

  @override
  String get inputTimeModeButtonLabel => "ਲਿਖਤ ਇਨਪੁੱਟ ਮੋਡ 'ਤੇ ਜਾਓ";

  @override
  String get invalidDateFormatLabel => 'ਅਵੈਧ ਫਾਰਮੈਟ।';

  @override
  String get invalidDateRangeLabel => 'ਅਵੈਧ ਰੇਂਜ।';

  @override
  String get invalidTimeLabel => 'ਵੈਧ ਸਮਾਂ ਦਾਖਲ ਕਰੋ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'ਆਖਰੀ ਪੰਨਾ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 ਲਾਇਸੰਸ';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ਲਾਇਸੰਸ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ਲਾਇਸੰਸ';

  @override
  String get menuBarMenuLabel => 'ਮੀਨੂ ਬਾਰ ਮੀਨੂ';

  @override
  String get modalBarrierDismissLabel => 'ਖਾਰਜ ਕਰੋ';

  @override
  String get moreButtonTooltip => 'ਹੋਰ';

  @override
  String get nextMonthTooltip => 'ਅਗਲਾ ਮਹੀਨਾ';

  @override
  String get nextPageTooltip => 'ਅਗਲਾ ਪੰਨਾ';

  @override
  String get okButtonLabel => 'ਠੀਕ ਹੈ';

  @override
  String get openAppDrawerTooltip => 'ਨੈਵੀਗੇਸ਼ਨ ਮੀਨੂ ਖੋਲ੍ਹੋ';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCount ਵਿੱਚੋਂ $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'ਲਗਭਗ $rowCount ਵਿੱਚੋਂ $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'ਪੇਸਟ ਕਰੋ';

  @override
  String get popupMenuLabel => 'ਪੌਪਅੱਪ ਮੀਨੂ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'ਪਿਛਲਾ ਮਹੀਨਾ';

  @override
  String get previousPageTooltip => 'ਪਿਛਲਾ ਪੰਨਾ';

  @override
  String get refreshIndicatorSemanticLabel => 'ਰਿਫ੍ਰੈਸ਼ ਕਰੋ';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 ਅੱਖਰ-ਚਿੰਨ੍ਹ ਬਾਕੀ';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount ਅੱਖਰ-ਚਿੰਨ੍ਹ ਬਾਕੀ';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'ਹੇਠਾਂ ਲਿਜਾਓ';

  @override
  String get reorderItemLeft => 'ਖੱਬੇ ਲਿਜਾਓ';

  @override
  String get reorderItemRight => 'ਸੱਜੇ ਲਿਜਾਓ';

  @override
  String get reorderItemToEnd => 'ਅੰਤ ਵਿੱਚ ਲਿਜਾਓ';

  @override
  String get reorderItemToStart => 'ਸ਼ੁਰੂ ਵਿੱਚ ਲਿਜਾਓ';

  @override
  String get reorderItemUp => 'ਉੱਪਰ ਲਿਜਾਓ';

  @override
  String get rowsPerPageTitle => "ਹਰ ਪੰਨੇ 'ਤੇ ਕਤਾਰਾਂ:";

  @override
  String get saveButtonLabel => 'ਰੱਖਿਅਤ ਕਰੋ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'ਖੋਜੋ';

  @override
  String get selectAllButtonLabel => 'ਸਭ ਚੁਣੋ';

  @override
  String get selectYearSemanticsLabel => 'ਸਾਲ ਚੁਣੋ';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 ਆਈਟਮ ਚੁਣੀ ਗਈ';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount ਆਈਟਮਾਂ ਚੁਣੀਆਂ ਗਈਆਂ';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'ਖਾਤੇ ਦਿਖਾਓ';

  @override
  String get showMenuTooltip => 'ਮੀਨੂ ਦਿਖਾਓ';

  @override
  String get signedInLabel => 'ਸਾਈਨ-ਇਨ ਕੀਤਾ ਗਿਆ';

  @override
  String get tabLabelRaw => r'$tabCount ਵਿੱਚੋਂ $tabIndex ਟੈਬ';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ਸਮਾਂ ਚੁਣੋ';

  @override
  String get timePickerHourLabel => 'ਘੰਟਾ';

  @override
  String get timePickerHourModeAnnouncement => 'ਘੰਟੇ ਚੁਣੋ';

  @override
  String get timePickerInputHelpText => 'ਸਮਾਂ ਦਾਖਲ ਕਰੋ';

  @override
  String get timePickerMinuteLabel => 'ਮਿੰਟ';

  @override
  String get timePickerMinuteModeAnnouncement => 'ਮਿੰਟ ਚੁਣੋ';

  @override
  String get unspecifiedDate => 'ਤਾਰੀਖ';

  @override
  String get unspecifiedDateRange => 'ਤਾਰੀਖ ਦੀ ਰੇਂਜ';

  @override
  String get viewLicensesButtonLabel => 'ਲਾਇਸੰਸ ਦੇਖੋ';
}

/// The translations for Polish (`pl`).
class MaterialLocalizationPl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Polish.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationPl({
    super.localeName = 'pl',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName – informacje';

  @override
  String get alertDialogLabel => 'Alert';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Wstecz';

  @override
  String get calendarModeButtonLabel => 'Przełącz na kalendarz';

  @override
  String get cancelButtonLabel => 'ANULUJ';

  @override
  String get closeButtonLabel => 'ZAMKNIJ';

  @override
  String get closeButtonTooltip => 'Zamknij';

  @override
  String get collapsedIconTapHint => 'Rozwiń';

  @override
  String get continueButtonLabel => 'DALEJ';

  @override
  String get copyButtonLabel => 'Kopiuj';

  @override
  String get cutButtonLabel => 'Wytnij';

  @override
  String get dateHelpText => 'dd.mm.rrrr';

  @override
  String get dateInputLabel => 'Wpisz datę';

  @override
  String get dateOutOfRangeLabel => 'Poza zakresem.';

  @override
  String get datePickerHelpText => 'WYBIERZ DATĘ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data zakończenia: $fullDate';

  @override
  String get dateRangeEndLabel => 'Data zakończenia';

  @override
  String get dateRangePickerHelpText => 'WYBIERZ ZAKRES';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data rozpoczęcia: $fullDate';

  @override
  String get dateRangeStartLabel => 'Data rozpoczęcia';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Usuń';

  @override
  String get dialModeButtonLabel => 'Włącz tryb selektora';

  @override
  String get dialogLabel => 'Okno dialogowe';

  @override
  String get drawerLabel => 'Menu nawigacyjne';

  @override
  String get expandedIconTapHint => 'Zwiń';

  @override
  String get firstPageTooltip => 'Pierwsza strona';

  @override
  String get hideAccountsLabel => 'Ukryj konta';

  @override
  String get inputDateModeButtonLabel => 'Przełącz na wpisywanie';

  @override
  String get inputTimeModeButtonLabel => 'Włącz tryb wprowadzania tekstu';

  @override
  String get invalidDateFormatLabel => 'Nieprawidłowy format.';

  @override
  String get invalidDateRangeLabel => 'Nieprawidłowy zakres.';

  @override
  String get invalidTimeLabel => 'Wpisz prawidłową godzinę';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Poprzedni kanał';

  @override
  String get keyboardKeyChannelUp => 'Następny kanał';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Wysuń';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDn';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Zasilanie';

  @override
  String get keyboardKeyPowerOff => 'Wyłącz zasilanie';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Spacja';

  @override
  String get lastPageTooltip => 'Ostatnia strona';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licencje';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount licencji';

  @override
  String? get licensesPackageDetailTextOne => '1 licencja';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencji';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licencje';

  @override
  String get menuBarMenuLabel => 'Pasek menu';

  @override
  String get modalBarrierDismissLabel => 'Zamknij';

  @override
  String get moreButtonTooltip => 'Więcej';

  @override
  String get nextMonthTooltip => 'Następny miesiąc';

  @override
  String get nextPageTooltip => 'Następna strona';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Otwórz menu nawigacyjne';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow z $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow z około $rowCount';

  @override
  String get pasteButtonLabel => 'Wklej';

  @override
  String get popupMenuLabel => 'Menu kontekstowe';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Poprzedni miesiąc';

  @override
  String get previousPageTooltip => 'Poprzednia strona';

  @override
  String get refreshIndicatorSemanticLabel => 'Odśwież';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Pozostały $remainingCount znaki';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Pozostało $remainingCount znaków';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Jeszcze 1 znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Pozostało $remainingCount znaków';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Przenieś w dół';

  @override
  String get reorderItemLeft => 'Przenieś w lewo';

  @override
  String get reorderItemRight => 'Przenieś w prawo';

  @override
  String get reorderItemToEnd => 'Przenieś na koniec';

  @override
  String get reorderItemToStart => 'Przenieś na początek';

  @override
  String get reorderItemUp => 'Przenieś w górę';

  @override
  String get rowsPerPageTitle => 'Wiersze na stronie:';

  @override
  String get saveButtonLabel => 'ZAPISZ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Szukaj';

  @override
  String get selectAllButtonLabel => 'Zaznacz wszystko';

  @override
  String get selectYearSemanticsLabel => 'Wybierz rok';

  @override
  String? get selectedRowCountTitleFew => r'$selectedRowCount wybrane elementy';

  @override
  String? get selectedRowCountTitleMany => r'$selectedRowCount wybranych elementów';

  @override
  String? get selectedRowCountTitleOne => '1 wybrany element';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount wybranych elementów';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Pokaż konta';

  @override
  String get showMenuTooltip => 'Pokaż menu';

  @override
  String get signedInLabel => 'Zalogowani użytkownicy';

  @override
  String get tabLabelRaw => r'Karta $tabIndex z $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'WYBIERZ GODZINĘ';

  @override
  String get timePickerHourLabel => 'Godzina';

  @override
  String get timePickerHourModeAnnouncement => 'Wybierz godziny';

  @override
  String get timePickerInputHelpText => 'WPISZ GODZINĘ';

  @override
  String get timePickerMinuteLabel => 'Minuta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Wybierz minuty';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Zakres dat';

  @override
  String get viewLicensesButtonLabel => 'WYŚWIETL LICENCJE';
}

/// The translations for Pushto Pashto (`ps`).
class MaterialLocalizationPs extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Pushto Pashto.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationPs({
    super.localeName = 'ps',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'د $applicationName په اړه';

  @override
  String get alertDialogLabel => 'خبرتیا';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'شاته';

  @override
  String get calendarModeButtonLabel => 'Switch to calendar';

  @override
  String get cancelButtonLabel => 'لغوه کول';

  @override
  String get closeButtonLabel => 'تړل';

  @override
  String get closeButtonTooltip => 'بنده';

  @override
  String get collapsedIconTapHint => 'Expand';

  @override
  String get continueButtonLabel => 'منځپانګې';

  @override
  String get copyButtonLabel => 'کاپی';

  @override
  String get cutButtonLabel => 'کم کړئ';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Enter Date';

  @override
  String get dateOutOfRangeLabel => 'Out of range.';

  @override
  String get datePickerHelpText => 'SELECT DATE';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'End date $fullDate';

  @override
  String get dateRangeEndLabel => 'End Date';

  @override
  String get dateRangePickerHelpText => 'SELECT RANGE';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Start date $fullDate';

  @override
  String get dateRangeStartLabel => 'Start Date';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => '';

  @override
  String get dialModeButtonLabel => 'Switch to dial picker mode';

  @override
  String get dialogLabel => 'خبرې اترې';

  @override
  String get drawerLabel => 'د نیویگیشن مینو';

  @override
  String get expandedIconTapHint => 'Collapse';

  @override
  String get firstPageTooltip => 'First page';

  @override
  String get hideAccountsLabel => 'حسابونه پټ کړئ';

  @override
  String get inputDateModeButtonLabel => 'Switch to input';

  @override
  String get inputTimeModeButtonLabel => 'Switch to text input mode';

  @override
  String get invalidDateFormatLabel => 'Invalid format.';

  @override
  String get invalidDateRangeLabel => 'Invalid range.';

  @override
  String get invalidTimeLabel => 'Enter a valid time';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Last page';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 license';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenses';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'جوازونه';

  @override
  String get menuBarMenuLabel => 'Menu bar menu';

  @override
  String get modalBarrierDismissLabel => 'رد کړه';

  @override
  String get moreButtonTooltip => 'More';

  @override
  String get nextMonthTooltip => 'بله میاشت';

  @override
  String get nextPageTooltip => 'بله پاڼه';

  @override
  String get okButtonLabel => 'سمه ده';

  @override
  String get openAppDrawerTooltip => 'د پرانیستی نیینګ مینو';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow د $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow څخه $rowCount د';

  @override
  String get pasteButtonLabel => 'پیټ کړئ';

  @override
  String get popupMenuLabel => 'د پاپ اپ مینو';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'تیره میاشت';

  @override
  String get previousPageTooltip => 'مخکینی مخ';

  @override
  String get refreshIndicatorSemanticLabel => 'Refresh';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 character remaining';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount characters remaining';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'No characters remaining';

  @override
  String get reorderItemDown => 'Move down';

  @override
  String get reorderItemLeft => 'Move left';

  @override
  String get reorderItemRight => 'Move right';

  @override
  String get reorderItemToEnd => 'Move to the end';

  @override
  String get reorderItemToStart => 'Move to the start';

  @override
  String get reorderItemUp => 'Move up';

  @override
  String get rowsPerPageTitle => 'د هرې پاڼې پاڼې:';

  @override
  String get saveButtonLabel => 'SAVE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'لټون';

  @override
  String get selectAllButtonLabel => 'غوره کړئ';

  @override
  String get selectYearSemanticsLabel => 'Select year';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => null;

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount توکي غوره شوي';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'حسابونه ښکاره کړئ';

  @override
  String get showMenuTooltip => 'غورنۍ ښودل';

  @override
  String get signedInLabel => 'ننوتل';

  @override
  String get tabLabelRaw => r'$tabIndex د $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'SELECT TIME';

  @override
  String get timePickerHourLabel => 'Hour';

  @override
  String get timePickerHourModeAnnouncement => 'وختونه وټاکئ';

  @override
  String get timePickerInputHelpText => 'ENTER TIME';

  @override
  String get timePickerMinuteLabel => 'Minute';

  @override
  String get timePickerMinuteModeAnnouncement => 'منې غوره کړئ';

  @override
  String get unspecifiedDate => 'Date';

  @override
  String get unspecifiedDateRange => 'Date Range';

  @override
  String get viewLicensesButtonLabel => 'لیدلس وګورئ';
}

/// The translations for Portuguese (`pt`).
class MaterialLocalizationPt extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Portuguese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationPt({
    super.localeName = 'pt',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Sobre o app $applicationName';

  @override
  String get alertDialogLabel => 'Alerta';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Voltar';

  @override
  String get calendarModeButtonLabel => 'Mudar para agenda';

  @override
  String get cancelButtonLabel => 'CANCELAR';

  @override
  String get closeButtonLabel => 'FECHAR';

  @override
  String get closeButtonTooltip => 'Fechar';

  @override
  String get collapsedIconTapHint => 'Abrir';

  @override
  String get continueButtonLabel => 'CONTINUAR';

  @override
  String get copyButtonLabel => 'Copiar';

  @override
  String get cutButtonLabel => 'Cortar';

  @override
  String get dateHelpText => 'dd/mm/aaaa';

  @override
  String get dateInputLabel => 'Inserir data';

  @override
  String get dateOutOfRangeLabel => 'Fora de alcance.';

  @override
  String get datePickerHelpText => 'SELECIONAR DATA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data de término $fullDate';

  @override
  String get dateRangeEndLabel => 'Data de término';

  @override
  String get dateRangePickerHelpText => 'SELECIONAR INTERVALO';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data de início $fullDate';

  @override
  String get dateRangeStartLabel => 'Data de início';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Excluir';

  @override
  String get dialModeButtonLabel => 'Alternar para o modo de seleção de discagem';

  @override
  String get dialogLabel => 'Caixa de diálogo';

  @override
  String get drawerLabel => 'Menu de navegação';

  @override
  String get expandedIconTapHint => 'Recolher';

  @override
  String get firstPageTooltip => 'Primeira página';

  @override
  String get hideAccountsLabel => 'Ocultar contas';

  @override
  String get inputDateModeButtonLabel => 'Mudar para modo de entrada';

  @override
  String get inputTimeModeButtonLabel => 'Alternar para o modo de entrada de texto';

  @override
  String get invalidDateFormatLabel => 'Formato inválido.';

  @override
  String get invalidDateRangeLabel => 'Intervalo inválido.';

  @override
  String get invalidTimeLabel => 'Insira um horário válido';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Canais para baixo';

  @override
  String get keyboardKeyChannelUp => 'Canais para cima';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Ejetar';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Liga/desliga';

  @override
  String get keyboardKeyPowerOff => 'Desligar';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Selecionar';

  @override
  String get keyboardKeySpace => 'Espaço';

  @override
  String get lastPageTooltip => 'Última página';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licença';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenças';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenças';

  @override
  String get menuBarMenuLabel => 'Menu da barra de menus';

  @override
  String get modalBarrierDismissLabel => 'Dispensar';

  @override
  String get moreButtonTooltip => 'Mais';

  @override
  String get nextMonthTooltip => 'Próximo mês';

  @override
  String get nextPageTooltip => 'Próxima página';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Abrir menu de navegação';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow de aproximadamente $rowCount';

  @override
  String get pasteButtonLabel => 'Colar';

  @override
  String get popupMenuLabel => 'Menu pop-up';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Mês anterior';

  @override
  String get previousPageTooltip => 'Página anterior';

  @override
  String get refreshIndicatorSemanticLabel => 'Atualizar';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 caractere restante';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount caracteres restantes';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Mover para baixo';

  @override
  String get reorderItemLeft => 'Mover para a esquerda';

  @override
  String get reorderItemRight => 'Mover para a direita';

  @override
  String get reorderItemToEnd => 'Mover para o final';

  @override
  String get reorderItemToStart => 'Mover para o início';

  @override
  String get reorderItemUp => 'Mover para cima';

  @override
  String get rowsPerPageTitle => 'Linhas por página:';

  @override
  String get saveButtonLabel => 'SALVAR';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Pesquisa';

  @override
  String get selectAllButtonLabel => 'Selecionar tudo';

  @override
  String get selectYearSemanticsLabel => 'Selecione o ano';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item selecionado';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount itens selecionados';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Mostrar contas';

  @override
  String get showMenuTooltip => 'Mostrar menu';

  @override
  String get signedInLabel => 'Conectado a';

  @override
  String get tabLabelRaw => r'Guia $tabIndex de $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'SELECIONAR HORÁRIO';

  @override
  String get timePickerHourLabel => 'Hora';

  @override
  String get timePickerHourModeAnnouncement => 'Selecione as horas';

  @override
  String get timePickerInputHelpText => 'INSERIR HORÁRIO';

  @override
  String get timePickerMinuteLabel => 'Minuto';

  @override
  String get timePickerMinuteModeAnnouncement => 'Selecione os minutos';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Período';

  @override
  String get viewLicensesButtonLabel => 'VER LICENÇAS';
}

/// The translations for Portuguese, as used in Portugal (`pt_PT`).
class MaterialLocalizationPtPt extends MaterialLocalizationPt {
  /// Create an instance of the translation bundle for Portuguese, as used in Portugal.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationPtPt({
    super.localeName = 'pt_PT',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get menuBarMenuLabel => 'Menu da barra de menu';

  @override
  String get keyboardKeyChannelDown => 'Canal anterior';

  @override
  String get keyboardKeyBackspace => 'Retrocesso';

  @override
  String get keyboardKeyInsert => 'Inserir';

  @override
  String get keyboardKeyHome => 'Início';

  @override
  String get keyboardKeyEnd => 'Fim';

  @override
  String get keyboardKeyChannelUp => 'Canal seguinte';

  @override
  String get keyboardKeyPower => 'Alimentação';

  @override
  String get dialModeButtonLabel => 'Mude para o modo de seletor de mostrador';

  @override
  String get timePickerDialHelpText => 'SELECIONAR HORA';

  @override
  String get timePickerInputHelpText => 'INTRODUZIR HORA';

  @override
  String get invalidTimeLabel => 'Introduza uma hora válida.';

  @override
  String get inputTimeModeButtonLabel => 'Mude para o método de introdução de texto';

  @override
  String get dateInputLabel => 'Introduzir data';

  @override
  String get calendarModeButtonLabel => 'Mude para o calendário';

  @override
  String get saveButtonLabel => 'GUARDAR';

  @override
  String get dateOutOfRangeLabel => 'Fora do intervalo.';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data de conclusão: $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data de início: $fullDate';

  @override
  String get dateRangeEndLabel => 'Data de conclusão';

  @override
  String get inputDateModeButtonLabel => 'Mude para a introdução';

  @override
  String get unspecifiedDateRange => 'Intervalo de datas';

  @override
  String get selectYearSemanticsLabel => 'Selecionar ano';

  @override
  String get tabLabelRaw => r'Separador $tabIndex de $tabCount';

  @override
  String get signedInLabel => 'Com sessão iniciada';

  @override
  String get timePickerMinuteModeAnnouncement => 'Selecionar minutos';

  @override
  String get timePickerHourModeAnnouncement => 'Selecionar horas';

  @override
  String get deleteButtonTooltip => 'Eliminar';

  @override
  String get nextMonthTooltip => 'Mês seguinte';

  @override
  String get nextPageTooltip => 'Página seguinte';

  @override
  String get aboutListTileTitleRaw => r'Acerca de $applicationName';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow a $lastRow de $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow a $lastRow de cerca de $rowCount';

  @override
  String get modalBarrierDismissLabel => 'Ignorar';

  @override
  String get searchFieldLabel => 'Pesquisar';

  @override
  String get reorderItemToEnd => 'Mover para o fim';

  @override
  String get expandedIconTapHint => 'Reduzir';

  @override
  String get collapsedIconTapHint => 'Expandir';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Resta 1 caráter';

  @override
  String get remainingTextFieldCharacterCountOther => r'Restam $remainingCount carateres';
}

/// The translations for Romanian Moldavian Moldovan (`ro`).
class MaterialLocalizationRo extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Romanian Moldavian Moldovan.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationRo({
    super.localeName = 'ro',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Despre $applicationName';

  @override
  String get alertDialogLabel => 'Alertă';

  @override
  String get anteMeridiemAbbreviation => 'a.m.';

  @override
  String get backButtonTooltip => 'Înapoi';

  @override
  String get calendarModeButtonLabel => 'Comutați la calendar';

  @override
  String get cancelButtonLabel => 'ANULAȚI';

  @override
  String get closeButtonLabel => 'ÎNCHIDEȚI';

  @override
  String get closeButtonTooltip => 'Închideți';

  @override
  String get collapsedIconTapHint => 'Extindeți';

  @override
  String get continueButtonLabel => 'CONTINUAȚI';

  @override
  String get copyButtonLabel => 'Copiați';

  @override
  String get cutButtonLabel => 'Decupați';

  @override
  String get dateHelpText => 'zz.ll.aaaa';

  @override
  String get dateInputLabel => 'Introduceți data';

  @override
  String get dateOutOfRangeLabel => 'Fără acoperire.';

  @override
  String get datePickerHelpText => 'SELECTAȚI DATA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data de încheiere: $fullDate';

  @override
  String get dateRangeEndLabel => 'Data de încheiere';

  @override
  String get dateRangePickerHelpText => 'SELECTAȚI UN INTERVAL';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data de începere: $fullDate';

  @override
  String get dateRangeStartLabel => 'Data de începere';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Ștergeți';

  @override
  String get dialModeButtonLabel => 'Comutați la modul selector cadran';

  @override
  String get dialogLabel => 'Casetă de dialog';

  @override
  String get drawerLabel => 'Meniu de navigare';

  @override
  String get expandedIconTapHint => 'Restrângeți';

  @override
  String get firstPageTooltip => 'Prima pagină';

  @override
  String get hideAccountsLabel => 'Ascundeți conturile';

  @override
  String get inputDateModeButtonLabel => 'Comutați la introducerea textului';

  @override
  String get inputTimeModeButtonLabel => 'Comutați la modul de introducere a textului';

  @override
  String get invalidDateFormatLabel => 'Format nevalid.';

  @override
  String get invalidDateRangeLabel => 'Interval nevalid.';

  @override
  String get invalidTimeLabel => 'Introduceți o oră validă';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Înapoi';

  @override
  String get keyboardKeyChannelUp => 'Înainte';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => '0 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad1 => '1 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad2 => '2 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad3 => '3 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad4 => '4 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad5 => '5 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad6 => '6 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad7 => '7 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad8 => '8 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpad9 => '9 de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadAdd => '+ de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadComma => ', de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadDecimal => '. de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadDivide => '/ de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadEnter => 'Enter de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadEqual => '= de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadMultiply => '* de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadParenLeft => '( de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadParenRight => ') de pe tastatura numerică';

  @override
  String get keyboardKeyNumpadSubtract => '- de pe tastatura numerică';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Spațiu';

  @override
  String get lastPageTooltip => 'Ultima pagină';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licențe';

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'O licență';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount de licențe';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licențe';

  @override
  String get menuBarMenuLabel => 'Bară de meniu';

  @override
  String get modalBarrierDismissLabel => 'Închideți';

  @override
  String get moreButtonTooltip => 'Mai multe';

  @override
  String get nextMonthTooltip => 'Luna viitoare';

  @override
  String get nextPageTooltip => 'Pagina următoare';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Deschideți meniul de navigare';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow din $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow din aproximativ $rowCount';

  @override
  String get pasteButtonLabel => 'Inserați';

  @override
  String get popupMenuLabel => 'Meniu pop-up';

  @override
  String get postMeridiemAbbreviation => 'p.m.';

  @override
  String get previousMonthTooltip => 'Luna trecută';

  @override
  String get previousPageTooltip => 'Pagina anterioară';

  @override
  String get refreshIndicatorSemanticLabel => 'Actualizați';

  @override
  String? get remainingTextFieldCharacterCountFew => r'$remainingCount caractere rămase';

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'un caracter rămas';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount de caractere rămase';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Mutați în jos';

  @override
  String get reorderItemLeft => 'Mutați la stânga';

  @override
  String get reorderItemRight => 'Mutați la dreapta';

  @override
  String get reorderItemToEnd => 'Mutați la sfârșit';

  @override
  String get reorderItemToStart => 'Mutați la început';

  @override
  String get reorderItemUp => 'Mutați în sus';

  @override
  String get rowsPerPageTitle => 'Rânduri pe pagină:';

  @override
  String get saveButtonLabel => 'SALVAȚI';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Căutați';

  @override
  String get selectAllButtonLabel => 'Selectați tot';

  @override
  String get selectYearSemanticsLabel => 'Selectați anul';

  @override
  String? get selectedRowCountTitleFew => r'$selectedRowCount articole selectate';

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Un articol selectat';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount de articole selectate';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Nu există elemente selectate';

  @override
  String get showAccountsLabel => 'Afișați conturile';

  @override
  String get showMenuTooltip => 'Afișați meniul';

  @override
  String get signedInLabel => 'V-ați conectat';

  @override
  String get tabLabelRaw => r'Fila $tabIndex din $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'SELECTAȚI ORA';

  @override
  String get timePickerHourLabel => 'Oră';

  @override
  String get timePickerHourModeAnnouncement => 'Selectați orele';

  @override
  String get timePickerInputHelpText => 'INTRODUCEȚI ORA';

  @override
  String get timePickerMinuteLabel => 'Minut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Selectați minutele';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Interval de date';

  @override
  String get viewLicensesButtonLabel => 'VEDEȚI LICENȚELE';
}

/// The translations for Russian (`ru`).
class MaterialLocalizationRu extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Russian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationRu({
    super.localeName = 'ru',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName: сведения';

  @override
  String get alertDialogLabel => 'Оповещение';

  @override
  String get anteMeridiemAbbreviation => 'АМ';

  @override
  String get backButtonTooltip => 'Назад';

  @override
  String get calendarModeButtonLabel => 'Переключиться на календарь';

  @override
  String get cancelButtonLabel => 'ОТМЕНА';

  @override
  String get closeButtonLabel => 'ЗАКРЫТЬ';

  @override
  String get closeButtonTooltip => 'Закрыть';

  @override
  String get collapsedIconTapHint => 'Развернуть';

  @override
  String get continueButtonLabel => 'ПРОДОЛЖИТЬ';

  @override
  String get copyButtonLabel => 'Копировать';

  @override
  String get cutButtonLabel => 'Вырезать';

  @override
  String get dateHelpText => 'дд.мм.гггг';

  @override
  String get dateInputLabel => 'Введите дату';

  @override
  String get dateOutOfRangeLabel => 'Дата находится вне допустимого диапазона.';

  @override
  String get datePickerHelpText => 'ВЫБЕРИТЕ ДАТУ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Дата окончания: $fullDate';

  @override
  String get dateRangeEndLabel => 'Дата окончания';

  @override
  String get dateRangePickerHelpText => 'ВЫБЕРИТЕ ДИАПАЗОН ДАТ';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Дата начала: $fullDate';

  @override
  String get dateRangeStartLabel => 'Дата начала';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Удалить';

  @override
  String get dialModeButtonLabel => 'Перейти в режим выбора времени';

  @override
  String get dialogLabel => 'Диалоговое окно';

  @override
  String get drawerLabel => 'Меню навигации';

  @override
  String get expandedIconTapHint => 'Свернуть';

  @override
  String get firstPageTooltip => 'Первая страница';

  @override
  String get hideAccountsLabel => 'Скрыть аккаунты';

  @override
  String get inputDateModeButtonLabel => 'Переключиться на ручной ввод';

  @override
  String get inputTimeModeButtonLabel => 'Перейти в режим ввода текста';

  @override
  String get invalidDateFormatLabel => 'Недопустимый формат даты.';

  @override
  String get invalidDateRangeLabel => 'Недопустимый диапазон.';

  @override
  String get invalidTimeLabel => 'Указано недопустимое время.';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Следующий канал';

  @override
  String get keyboardKeyChannelUp => 'Предыдущий канал';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Извлечь';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Ввод';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Питание';

  @override
  String get keyboardKeyPowerOff => 'Отключить питание';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Выбрать';

  @override
  String get keyboardKeySpace => 'Пробел';

  @override
  String get lastPageTooltip => 'Последняя страница';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount лицензии';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount лицензий';

  @override
  String? get licensesPackageDetailTextOne => '1 лицензия';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount лицензии';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Лицензии';

  @override
  String get menuBarMenuLabel => 'Строка меню';

  @override
  String get modalBarrierDismissLabel => 'Закрыть';

  @override
  String get moreButtonTooltip => 'Ещё';

  @override
  String get nextMonthTooltip => 'Следующий месяц';

  @override
  String get nextPageTooltip => 'Следующая страница';

  @override
  String get okButtonLabel => 'ОК';

  @override
  String get openAppDrawerTooltip => 'Открыть меню навигации';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow из $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow из примерно $rowCount';

  @override
  String get pasteButtonLabel => 'Вставить';

  @override
  String get popupMenuLabel => 'Всплывающее меню';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Предыдущий месяц';

  @override
  String get previousPageTooltip => 'Предыдущая страница';

  @override
  String get refreshIndicatorSemanticLabel => 'Обновление';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Осталось $remainingCount символа';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Осталось $remainingCount символов';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Остался 1 символ';

  @override
  String get remainingTextFieldCharacterCountOther => r'Осталось $remainingCount символа';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Переместить вниз';

  @override
  String get reorderItemLeft => 'Переместить влево';

  @override
  String get reorderItemRight => 'Переместить вправо';

  @override
  String get reorderItemToEnd => 'Переместить в конец';

  @override
  String get reorderItemToStart => 'Переместить в начало';

  @override
  String get reorderItemUp => 'Переместить вверх';

  @override
  String get rowsPerPageTitle => 'Строк на странице:';

  @override
  String get saveButtonLabel => 'СОХРАНИТЬ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Поиск';

  @override
  String get selectAllButtonLabel => 'Выбрать все';

  @override
  String get selectYearSemanticsLabel => 'Выберите год';

  @override
  String? get selectedRowCountTitleFew => r'Выбрано $selectedRowCount объекта';

  @override
  String? get selectedRowCountTitleMany => r'Выбрано $selectedRowCount объектов';

  @override
  String? get selectedRowCountTitleOne => 'Выбран 1 объект';

  @override
  String get selectedRowCountTitleOther => r'Выбрано $selectedRowCount объекта';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Строки не выбраны';

  @override
  String get showAccountsLabel => 'Показать аккаунты';

  @override
  String get showMenuTooltip => 'Показать меню';

  @override
  String get signedInLabel => 'Вход выполнен';

  @override
  String get tabLabelRaw => r'Вкладка $tabIndex из $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ВЫБЕРИТЕ ВРЕМЯ';

  @override
  String get timePickerHourLabel => 'Часы';

  @override
  String get timePickerHourModeAnnouncement => 'Выберите часы';

  @override
  String get timePickerInputHelpText => 'ВВЕДИТЕ ВРЕМЯ';

  @override
  String get timePickerMinuteLabel => 'Минуты';

  @override
  String get timePickerMinuteModeAnnouncement => 'Выберите минуты';

  @override
  String get unspecifiedDate => 'Дата';

  @override
  String get unspecifiedDateRange => 'Диапазон дат';

  @override
  String get viewLicensesButtonLabel => 'ЛИЦЕНЗИИ';
}

/// The translations for Sinhala Sinhalese (`si`).
class MaterialLocalizationSi extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Sinhala Sinhalese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSi({
    super.localeName = 'si',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName ගැන';

  @override
  String get alertDialogLabel => 'ඇඟවීම';

  @override
  String get anteMeridiemAbbreviation => 'පෙ.ව.';

  @override
  String get backButtonTooltip => 'ආපසු';

  @override
  String get calendarModeButtonLabel => 'දින දර්ශනය වෙත මාරු වන්න';

  @override
  String get cancelButtonLabel => 'අවලංගු කරන්න';

  @override
  String get closeButtonLabel => 'වසන්න';

  @override
  String get closeButtonTooltip => 'වසන්න';

  @override
  String get collapsedIconTapHint => 'දිග හරින්න';

  @override
  String get continueButtonLabel => 'ඉදිරියට';

  @override
  String get copyButtonLabel => 'පිටපත් කරන්න';

  @override
  String get cutButtonLabel => 'කපන්න';

  @override
  String get dateHelpText => 'mm.dd.yyyy';

  @override
  String get dateInputLabel => 'දිනය ඇතුළු කරන්න';

  @override
  String get dateOutOfRangeLabel => 'පරාසයෙන් පිටත.';

  @override
  String get datePickerHelpText => 'දිනය තෝරන්න';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'අවසන් වන දිනය $fullDate';

  @override
  String get dateRangeEndLabel => 'අවසන් වන දිනය';

  @override
  String get dateRangePickerHelpText => 'පරාසය තෝරන්න';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'ආරම්භක දිනය $fullDate';

  @override
  String get dateRangeStartLabel => 'ආරම්භක දිනය';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'මකන්න';

  @override
  String get dialModeButtonLabel => 'ඩයලන තෝරක ප්‍රකාරයට මාරු කරන්න';

  @override
  String get dialogLabel => 'සංවාදය';

  @override
  String get drawerLabel => 'සංචාලන මෙනුව';

  @override
  String get expandedIconTapHint => 'හකුළන්න';

  @override
  String get firstPageTooltip => 'පළමු පිටුව';

  @override
  String get hideAccountsLabel => 'ගිණුම් සඟවන්න';

  @override
  String get inputDateModeButtonLabel => 'ආදානය වෙත මාරු වන්න';

  @override
  String get inputTimeModeButtonLabel => 'පෙළ ආදාන ප්‍රකාරයට මාරු කරන්න';

  @override
  String get invalidDateFormatLabel => 'අවලංගු ආකෘතියකි.';

  @override
  String get invalidDateRangeLabel => 'අවලංගු පරාසයකි.';

  @override
  String get invalidTimeLabel => 'වලංගු වේලාවක් ඇතුළු කරන්න';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'අවසන් පිටුව';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'බලපත්‍ර 1';

  @override
  String get licensesPackageDetailTextOther => r'බලපත්‍ර $licenseCount';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'බලපත්‍ර';

  @override
  String get menuBarMenuLabel => 'මෙනු තීරු මෙනුව';

  @override
  String get modalBarrierDismissLabel => 'ඉවත ලන්න';

  @override
  String get moreButtonTooltip => 'තව';

  @override
  String get nextMonthTooltip => 'ඊළඟ මාසය';

  @override
  String get nextPageTooltip => 'ඊළඟ පිටුව';

  @override
  String get okButtonLabel => 'හරි';

  @override
  String get openAppDrawerTooltip => 'සංචාලන මෙනුව විවෘත කරන්න';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCountන් $firstRow–$lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$rowCountකින් පමණ $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'අලවන්න';

  @override
  String get popupMenuLabel => 'උත්පතන මෙනුව';

  @override
  String get postMeridiemAbbreviation => 'ප.ව.';

  @override
  String get previousMonthTooltip => 'පෙර මාසය';

  @override
  String get previousPageTooltip => 'පෙර පිටුව';

  @override
  String get refreshIndicatorSemanticLabel => 'නැවුම් කරන්න';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'අනුලකුණු 1ක් ඉතිරිය';

  @override
  String get remainingTextFieldCharacterCountOther => r'අනුලකුණු $remainingCountක් ඉතිරිය';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'පහළට ගෙන යන්න';

  @override
  String get reorderItemLeft => 'වමට ගෙන යන්න';

  @override
  String get reorderItemRight => 'දකුණට ගෙන යන්න';

  @override
  String get reorderItemToEnd => 'අවසානයට යන්න';

  @override
  String get reorderItemToStart => 'ආරම්භය වෙත යන්න';

  @override
  String get reorderItemUp => 'ඉහළට ගෙන යන්න';

  @override
  String get rowsPerPageTitle => 'පිටුවකට පේළි:';

  @override
  String get saveButtonLabel => 'සුරකින්න';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'සෙවීම';

  @override
  String get selectAllButtonLabel => 'සියල්ල තෝරන්න';

  @override
  String get selectYearSemanticsLabel => 'වර්ෂය තෝරන්න';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'අයිතම 1ක් තෝරන ලදී';

  @override
  String get selectedRowCountTitleOther => r'අයිතම $selectedRowCountක් තෝරන ලදී';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'ගිණුම් පෙන්වන්න';

  @override
  String get showMenuTooltip => 'මෙනුව පෙන්වන්න';

  @override
  String get signedInLabel => 'පුරන ලදී';

  @override
  String get tabLabelRaw => r'ටැබ $tabIndexකින් $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'වේලාව තෝරන්න';

  @override
  String get timePickerHourLabel => 'පැය';

  @override
  String get timePickerHourModeAnnouncement => 'පැය ගණන තෝරන්න';

  @override
  String get timePickerInputHelpText => 'දිනය ඇතුළු කරන්න';

  @override
  String get timePickerMinuteLabel => 'මිනිත්තු';

  @override
  String get timePickerMinuteModeAnnouncement => 'මිනිත්තු ගණන තෝරන්න';

  @override
  String get unspecifiedDate => 'දිනය';

  @override
  String get unspecifiedDateRange => 'දින පරාසය';

  @override
  String get viewLicensesButtonLabel => 'බලපත්‍ර බලන්න';
}

/// The translations for Slovak (`sk`).
class MaterialLocalizationSk extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Slovak.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSk({
    super.localeName = 'sk',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName – informácie';

  @override
  String get alertDialogLabel => 'Upozornenie';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Späť';

  @override
  String get calendarModeButtonLabel => 'Prepnúť na kalendár';

  @override
  String get cancelButtonLabel => 'ZRUŠIŤ';

  @override
  String get closeButtonLabel => 'ZAVRIEŤ';

  @override
  String get closeButtonTooltip => 'Zavrieť';

  @override
  String get collapsedIconTapHint => 'Rozbaliť';

  @override
  String get continueButtonLabel => 'POKRAČOVAŤ';

  @override
  String get copyButtonLabel => 'Kopírovať';

  @override
  String get cutButtonLabel => 'Vystrihnúť';

  @override
  String get dateHelpText => 'mm.dd.yyyy';

  @override
  String get dateInputLabel => 'Zadajte dátum';

  @override
  String get dateOutOfRangeLabel => 'Mimo rozsahu.';

  @override
  String get datePickerHelpText => 'VYBERTE DÁTUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Dátum ukončenia $fullDate';

  @override
  String get dateRangeEndLabel => 'Dátum ukončenia';

  @override
  String get dateRangePickerHelpText => 'VYBERTE ROZSAH';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Dátum začatia $fullDate';

  @override
  String get dateRangeStartLabel => 'Dátum začatia';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Odstrániť';

  @override
  String get dialModeButtonLabel => 'Prepnúť na režim výberu času';

  @override
  String get dialogLabel => 'Dialógové okno';

  @override
  String get drawerLabel => 'Navigačná ponuka';

  @override
  String get expandedIconTapHint => 'Zbaliť';

  @override
  String get firstPageTooltip => 'Prvá strana';

  @override
  String get hideAccountsLabel => 'Skryť účty';

  @override
  String get inputDateModeButtonLabel => 'Prepnúť na zadávanie';

  @override
  String get inputTimeModeButtonLabel => 'Prepnúť na textový režim vstupu';

  @override
  String get invalidDateFormatLabel => 'Neplatný formát.';

  @override
  String get invalidDateRangeLabel => 'Neplatný rozsah.';

  @override
  String get invalidTimeLabel => 'Zadajte platný čas';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'O kanál nižšie';

  @override
  String get keyboardKeyChannelUp => 'O kanál vyššie';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Odpojiť';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Vypínač';

  @override
  String get keyboardKeyPowerOff => 'Vypnúť';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Medzerník';

  @override
  String get lastPageTooltip => 'Posledná strana';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licencie';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount licenses';

  @override
  String? get licensesPackageDetailTextOne => '1 licencia';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licencií';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licencie';

  @override
  String get menuBarMenuLabel => 'Ponuka panela s ponukami';

  @override
  String get modalBarrierDismissLabel => 'Odmietnuť';

  @override
  String get moreButtonTooltip => 'Viac';

  @override
  String get nextMonthTooltip => 'Budúci mesiac';

  @override
  String get nextPageTooltip => 'Ďalšia strana';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Otvoriť navigačnú ponuku';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow z $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow z približne $rowCount';

  @override
  String get pasteButtonLabel => 'Prilepiť';

  @override
  String get popupMenuLabel => 'Kontextová ponuka';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Predošlý mesiac';

  @override
  String get previousPageTooltip => 'Predchádzajúca stránka';

  @override
  String get refreshIndicatorSemanticLabel => 'Obnoviť';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Zostávajú $remainingCount znaky';

  @override
  String? get remainingTextFieldCharacterCountMany => r'$remainingCount characters remaining';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Zostáva 1 znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Zostáva $remainingCount znakov';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Presunúť nadol';

  @override
  String get reorderItemLeft => 'Presunúť doľava';

  @override
  String get reorderItemRight => 'Presunúť doprava';

  @override
  String get reorderItemToEnd => 'Presunúť na koniec';

  @override
  String get reorderItemToStart => 'Presunúť na začiatok';

  @override
  String get reorderItemUp => 'Presunúť nahor';

  @override
  String get rowsPerPageTitle => 'Počet riadkov na stránku:';

  @override
  String get saveButtonLabel => 'ULOŽIŤ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Hľadať';

  @override
  String get selectAllButtonLabel => 'Vybrať všetko';

  @override
  String get selectYearSemanticsLabel => 'Vyberte rok';

  @override
  String? get selectedRowCountTitleFew => r'$selectedRowCount vybraté položky';

  @override
  String? get selectedRowCountTitleMany => r'$selectedRowCount items selected';

  @override
  String? get selectedRowCountTitleOne => '1 vybratá položka';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount vybratých položiek';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Zobraziť účty';

  @override
  String get showMenuTooltip => 'Zobraziť ponuku';

  @override
  String get signedInLabel => 'Prihlásili ste sa';

  @override
  String get tabLabelRaw => r'Karta $tabIndex z $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VYBERTE ČAS';

  @override
  String get timePickerHourLabel => 'Hodina';

  @override
  String get timePickerHourModeAnnouncement => 'Vybrať hodiny';

  @override
  String get timePickerInputHelpText => 'ZADAJTE ČAS';

  @override
  String get timePickerMinuteLabel => 'Minúta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Vybrať minúty';

  @override
  String get unspecifiedDate => 'Dátum';

  @override
  String get unspecifiedDateRange => 'Obdobie';

  @override
  String get viewLicensesButtonLabel => 'ZOBRAZIŤ LICENCIE';
}

/// The translations for Slovenian (`sl`).
class MaterialLocalizationSl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Slovenian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSl({
    super.localeName = 'sl',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'O aplikaciji $applicationName';

  @override
  String get alertDialogLabel => 'Opozorilo';

  @override
  String get anteMeridiemAbbreviation => 'DOP.';

  @override
  String get backButtonTooltip => 'Nazaj';

  @override
  String get calendarModeButtonLabel => 'Preklop na koledar';

  @override
  String get cancelButtonLabel => 'PREKLIČI';

  @override
  String get closeButtonLabel => 'ZAPRI';

  @override
  String get closeButtonTooltip => 'Zapiranje';

  @override
  String get collapsedIconTapHint => 'Razširiti';

  @override
  String get continueButtonLabel => 'NAPREJ';

  @override
  String get copyButtonLabel => 'Kopiraj';

  @override
  String get cutButtonLabel => 'Izreži';

  @override
  String get dateHelpText => 'dd. mm. llll';

  @override
  String get dateInputLabel => 'Vnesite datum';

  @override
  String get dateOutOfRangeLabel => 'Zunaj dovoljenega obdobja';

  @override
  String get datePickerHelpText => 'IZBIRA DATUMA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Končni datum $fullDate';

  @override
  String get dateRangeEndLabel => 'Končni datum';

  @override
  String get dateRangePickerHelpText => 'IZBIRA OBDOBJA';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Začetni datum $fullDate';

  @override
  String get dateRangeStartLabel => 'Začetni datum';

  @override
  String get dateSeparator => '. ';

  @override
  String get deleteButtonTooltip => 'Brisanje';

  @override
  String get dialModeButtonLabel => 'Preklop na način izbirnika s številčnico';

  @override
  String get dialogLabel => 'Pogovorno okno';

  @override
  String get drawerLabel => 'Meni za krmarjenje';

  @override
  String get expandedIconTapHint => 'Strniti';

  @override
  String get firstPageTooltip => 'Prva stran';

  @override
  String get hideAccountsLabel => 'Skrivanje računov';

  @override
  String get inputDateModeButtonLabel => 'Preklop na vnos';

  @override
  String get inputTimeModeButtonLabel => 'Preklop na način vnosa besedila';

  @override
  String get invalidDateFormatLabel => 'Neveljavna oblika';

  @override
  String get invalidDateRangeLabel => 'Neveljavno obdobje';

  @override
  String get invalidTimeLabel => 'Vnesite veljaven čas';

  @override
  String get keyboardKeyAlt => 'Alt.';

  @override
  String get keyboardKeyAltGraph => 'Alt. gr.';

  @override
  String get keyboardKeyBackspace => 'Vračalka';

  @override
  String get keyboardKeyCapsLock => 'Velike črke';

  @override
  String get keyboardKeyChannelDown => 'Kanal dol';

  @override
  String get keyboardKeyChannelUp => 'Kanal gor';

  @override
  String get keyboardKeyControl => 'Ktrl';

  @override
  String get keyboardKeyDelete => 'Odstrani';

  @override
  String get keyboardKeyEject => 'Izvrzi';

  @override
  String get keyboardKeyEnd => 'Konec';

  @override
  String get keyboardKeyEscape => 'Izhod';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Začetek';

  @override
  String get keyboardKeyInsert => 'Vstavi';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Vklopi štev.';

  @override
  String get keyboardKeyNumpad0 => 'Štev. 0';

  @override
  String get keyboardKeyNumpad1 => 'Štev. 1';

  @override
  String get keyboardKeyNumpad2 => 'Štev. 2';

  @override
  String get keyboardKeyNumpad3 => 'Štev. 3';

  @override
  String get keyboardKeyNumpad4 => 'Štev. 4';

  @override
  String get keyboardKeyNumpad5 => 'Štev. 5';

  @override
  String get keyboardKeyNumpad6 => 'Štev. 6';

  @override
  String get keyboardKeyNumpad7 => 'Štev. 7';

  @override
  String get keyboardKeyNumpad8 => 'Štev. 8';

  @override
  String get keyboardKeyNumpad9 => 'Štev. 9';

  @override
  String get keyboardKeyNumpadAdd => 'Štev. +';

  @override
  String get keyboardKeyNumpadComma => 'Štev. ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Štev. .';

  @override
  String get keyboardKeyNumpadDivide => 'Štev. /';

  @override
  String get keyboardKeyNumpadEnter => 'Štev. Vnos';

  @override
  String get keyboardKeyNumpadEqual => 'Štev. =';

  @override
  String get keyboardKeyNumpadMultiply => 'Štev. *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Štev. (';

  @override
  String get keyboardKeyNumpadParenRight => 'Štev. )';

  @override
  String get keyboardKeyNumpadSubtract => 'Štev. -';

  @override
  String get keyboardKeyPageDown => 'Stran dol';

  @override
  String get keyboardKeyPageUp => 'Stran gor';

  @override
  String get keyboardKeyPower => 'Vklop';

  @override
  String get keyboardKeyPowerOff => 'Izklop';

  @override
  String get keyboardKeyPrintScreen => 'Zajem zaslona';

  @override
  String get keyboardKeyScrollLock => 'Vklopi drsenje';

  @override
  String get keyboardKeySelect => 'Izberi';

  @override
  String get keyboardKeySpace => 'Preslednica';

  @override
  String get lastPageTooltip => 'Zadnja stran';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licence';

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licenca';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenc';

  @override
  String? get licensesPackageDetailTextTwo => r'$licenseCount licenci';

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licence';

  @override
  String get menuBarMenuLabel => 'Meni menijske vrstice';

  @override
  String get modalBarrierDismissLabel => 'Opusti';

  @override
  String get moreButtonTooltip => 'Več';

  @override
  String get nextMonthTooltip => 'Naslednji mesec';

  @override
  String get nextPageTooltip => 'Naslednja stran';

  @override
  String get okButtonLabel => 'V REDU';

  @override
  String get openAppDrawerTooltip => 'Odpiranje menija za krmarjenje';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow od $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow od približno $rowCount';

  @override
  String get pasteButtonLabel => 'Prilepi';

  @override
  String get popupMenuLabel => 'Pojavni meni';

  @override
  String get postMeridiemAbbreviation => 'POP.';

  @override
  String get previousMonthTooltip => 'Prejšnji mesec';

  @override
  String get previousPageTooltip => 'Prejšnja stran';

  @override
  String get refreshIndicatorSemanticLabel => 'Osveži';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Še $remainingCount znaki';

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Še 1 znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Še $remainingCount znakov';

  @override
  String? get remainingTextFieldCharacterCountTwo => r'Še $remainingCount znaka';

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Premakni navzdol';

  @override
  String get reorderItemLeft => 'Premakni levo';

  @override
  String get reorderItemRight => 'Premakni desno';

  @override
  String get reorderItemToEnd => 'Premakni na konec';

  @override
  String get reorderItemToStart => 'Premakni na začetek';

  @override
  String get reorderItemUp => 'Premakni navzgor';

  @override
  String get rowsPerPageTitle => 'Vrstice na stran:';

  @override
  String get saveButtonLabel => 'SHRANI';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Iskanje';

  @override
  String get selectAllButtonLabel => 'Izberi vse';

  @override
  String get selectYearSemanticsLabel => 'Izberite leto';

  @override
  String? get selectedRowCountTitleFew => r'Izbrani so $selectedRowCount elementi';

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Izbran je 1 element';

  @override
  String get selectedRowCountTitleOther => r'Izbranih je $selectedRowCount elementov';

  @override
  String? get selectedRowCountTitleTwo => r'Izbrana sta $selectedRowCount elementa';

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Prikaz računov';

  @override
  String get showMenuTooltip => 'Prikaz menija';

  @override
  String get signedInLabel => 'Prijavljen';

  @override
  String get tabLabelRaw => r'Zavihek $tabIndex od $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'IZBERITE ČAS';

  @override
  String get timePickerHourLabel => 'Ura';

  @override
  String get timePickerHourModeAnnouncement => 'Izberite ure';

  @override
  String get timePickerInputHelpText => 'VNESITE ČAS';

  @override
  String get timePickerMinuteLabel => 'Minuta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Izberite minute';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Časovno obdobje';

  @override
  String get viewLicensesButtonLabel => 'PRIKAŽI LICENCE';
}

/// The translations for Albanian (`sq`).
class MaterialLocalizationSq extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Albanian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSq({
    super.localeName = 'sq',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Rreth $applicationName';

  @override
  String get alertDialogLabel => 'Sinjalizim';

  @override
  String get anteMeridiemAbbreviation => 'paradite';

  @override
  String get backButtonTooltip => 'Prapa';

  @override
  String get calendarModeButtonLabel => 'Kalo te kalendari';

  @override
  String get cancelButtonLabel => 'ANULO';

  @override
  String get closeButtonLabel => 'MBYLL';

  @override
  String get closeButtonTooltip => 'Mbyll';

  @override
  String get collapsedIconTapHint => 'Zgjero';

  @override
  String get continueButtonLabel => 'VAZHDO';

  @override
  String get copyButtonLabel => 'Kopjo';

  @override
  String get cutButtonLabel => 'Prit';

  @override
  String get dateHelpText => 'dd.mm.yyyy';

  @override
  String get dateInputLabel => 'Vendos datën';

  @override
  String get dateOutOfRangeLabel => 'Jashtë rrezes.';

  @override
  String get datePickerHelpText => 'ZGJIDH DATËN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Data e mbarimit: $fullDate';

  @override
  String get dateRangeEndLabel => 'Data e mbarimit';

  @override
  String get dateRangePickerHelpText => 'ZGJIDH GAMËN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Data e fillimit: $fullDate';

  @override
  String get dateRangeStartLabel => 'Data e fillimit';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Fshi';

  @override
  String get dialModeButtonLabel => 'Kalo te modaliteti i zgjedhësit të orës';

  @override
  String get dialogLabel => 'Dialogu';

  @override
  String get drawerLabel => 'Menyja e navigimit';

  @override
  String get expandedIconTapHint => 'Palos';

  @override
  String get firstPageTooltip => 'Faqja e parë';

  @override
  String get hideAccountsLabel => 'Fshih llogaritë';

  @override
  String get inputDateModeButtonLabel => 'Kalo te hyrja';

  @override
  String get inputTimeModeButtonLabel => 'Kalo te modaliteti i hyrjes së tekstit';

  @override
  String get invalidDateFormatLabel => 'Format i pavlefshëm.';

  @override
  String get invalidDateRangeLabel => 'Gamë e pavlefshme.';

  @override
  String get invalidTimeLabel => 'Fut një kohë të vlefshme';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Delete';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Faqja e fundit';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licencë';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenca';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licencat';

  @override
  String get menuBarMenuLabel => 'Menyja e shiritit të menysë';

  @override
  String get modalBarrierDismissLabel => 'Hiq';

  @override
  String get moreButtonTooltip => 'Më shumë';

  @override
  String get nextMonthTooltip => 'Muaji i ardhshëm';

  @override
  String get nextPageTooltip => 'Faqja tjetër';

  @override
  String get okButtonLabel => 'Në rregull';

  @override
  String get openAppDrawerTooltip => 'Hap menynë e navigimit';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow nga $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow nga rreth $rowCount';

  @override
  String get pasteButtonLabel => 'Ngjit';

  @override
  String get popupMenuLabel => 'Menyja kërcyese';

  @override
  String get postMeridiemAbbreviation => 'pasdite';

  @override
  String get previousMonthTooltip => 'Muaji i mëparshëm';

  @override
  String get previousPageTooltip => 'Faqja e mëparshme';

  @override
  String get refreshIndicatorSemanticLabel => 'Rifresko';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 karakter i mbetur';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount karaktere të mbetura';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Lëvize poshtë';

  @override
  String get reorderItemLeft => 'Lëvize majtas';

  @override
  String get reorderItemRight => 'Lëvize djathtas';

  @override
  String get reorderItemToEnd => 'Lëvize në fund';

  @override
  String get reorderItemToStart => 'Lëvize në fillim';

  @override
  String get reorderItemUp => 'Lëvize lart';

  @override
  String get rowsPerPageTitle => 'Rreshtat për faqe:';

  @override
  String get saveButtonLabel => 'RUAJ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Kërko';

  @override
  String get selectAllButtonLabel => 'Zgjidh të gjitha';

  @override
  String get selectYearSemanticsLabel => 'Zgjidh vitin';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'U zgjodh 1 artikull';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount artikuj u zgjodhën';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Shfaq llogaritë';

  @override
  String get showMenuTooltip => 'Shfaq menynë';

  @override
  String get signedInLabel => 'Je identifikuar';

  @override
  String get tabLabelRaw => r'Skeda $tabIndex nga $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'ZGJIDH ORËN';

  @override
  String get timePickerHourLabel => 'Ora';

  @override
  String get timePickerHourModeAnnouncement => 'Zgjidh orët';

  @override
  String get timePickerInputHelpText => 'VENDOS ORËN';

  @override
  String get timePickerMinuteLabel => 'Minuta';

  @override
  String get timePickerMinuteModeAnnouncement => 'Zgjidh minutat';

  @override
  String get unspecifiedDate => 'Data';

  @override
  String get unspecifiedDateRange => 'Gama e datave';

  @override
  String get viewLicensesButtonLabel => 'SHIKO LICENCAT';
}

/// The translations for Serbian (`sr`).
class MaterialLocalizationSr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Serbian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSr({
    super.localeName = 'sr',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'О апликацији $applicationName';

  @override
  String get alertDialogLabel => 'Обавештење';

  @override
  String get anteMeridiemAbbreviation => 'пре подне';

  @override
  String get backButtonTooltip => 'Назад';

  @override
  String get calendarModeButtonLabel => 'Пређите на календар';

  @override
  String get cancelButtonLabel => 'ОТКАЖИ';

  @override
  String get closeButtonLabel => 'ЗАТВОРИ';

  @override
  String get closeButtonTooltip => 'Затворите';

  @override
  String get collapsedIconTapHint => 'Прошири';

  @override
  String get continueButtonLabel => 'НАСТАВИ';

  @override
  String get copyButtonLabel => 'Копирај';

  @override
  String get cutButtonLabel => 'Исеци';

  @override
  String get dateHelpText => 'дд.мм.гггг.';

  @override
  String get dateInputLabel => 'Унесите датум';

  @override
  String get dateOutOfRangeLabel => 'Изван периода.';

  @override
  String get datePickerHelpText => 'ИЗАБЕРИТЕ ДАТУМ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Датум завршетка: $fullDate';

  @override
  String get dateRangeEndLabel => 'Датум завршетка';

  @override
  String get dateRangePickerHelpText => 'ИЗАБЕРИТЕ ПЕРИОД';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Датум почетка: $fullDate';

  @override
  String get dateRangeStartLabel => 'Датум почетка';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Избришите';

  @override
  String get dialModeButtonLabel => 'Пређите на режим бирача бројчаника';

  @override
  String get dialogLabel => 'Дијалог';

  @override
  String get drawerLabel => 'Мени за навигацију';

  @override
  String get expandedIconTapHint => 'Скупи';

  @override
  String get firstPageTooltip => 'Прва страница';

  @override
  String get hideAccountsLabel => 'Сакриј налоге';

  @override
  String get inputDateModeButtonLabel => 'Пређите на унос';

  @override
  String get inputTimeModeButtonLabel => 'Пређите на режим уноса текста';

  @override
  String get invalidDateFormatLabel => 'Формат је неважећи.';

  @override
  String get invalidDateRangeLabel => 'Период је неважећи.';

  @override
  String get invalidTimeLabel => 'Унесите важеће време';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Претходни канал';

  @override
  String get keyboardKeyChannelUp => 'Следећи канал';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Дугме за укључивање';

  @override
  String get keyboardKeyPowerOff => 'Дугме за искључивање';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Тастер за размак';

  @override
  String get lastPageTooltip => 'Последња страница';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount лиценце';

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 лиценца';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount лиценци';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Лиценце';

  @override
  String get menuBarMenuLabel => 'Мени трака менија';

  @override
  String get modalBarrierDismissLabel => 'Одбаци';

  @override
  String get moreButtonTooltip => 'Још';

  @override
  String get nextMonthTooltip => 'Следећи месец';

  @override
  String get nextPageTooltip => 'Следећа страница';

  @override
  String get okButtonLabel => 'Потврди';

  @override
  String get openAppDrawerTooltip => 'Отворите мени за навигацију';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow oд $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow oд приближно $rowCount';

  @override
  String get pasteButtonLabel => 'Налепи';

  @override
  String get popupMenuLabel => 'Искачући мени';

  @override
  String get postMeridiemAbbreviation => 'по подне';

  @override
  String get previousMonthTooltip => 'Претходни месец';

  @override
  String get previousPageTooltip => 'Претходна страница';

  @override
  String get refreshIndicatorSemanticLabel => 'Освежи';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Преостала су $remainingCount знака';

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Преостао је 1 знак';

  @override
  String get remainingTextFieldCharacterCountOther => r'Преостало је $remainingCount знакова';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Померите надоле';

  @override
  String get reorderItemLeft => 'Померите улево';

  @override
  String get reorderItemRight => 'Померите удесно';

  @override
  String get reorderItemToEnd => 'Померите на крај';

  @override
  String get reorderItemToStart => 'Померите на почетак';

  @override
  String get reorderItemUp => 'Померите нагоре';

  @override
  String get rowsPerPageTitle => 'Редова по страници:';

  @override
  String get saveButtonLabel => 'САЧУВАЈ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Претражите';

  @override
  String get selectAllButtonLabel => 'Изабери све';

  @override
  String get selectYearSemanticsLabel => 'Изаберите годину';

  @override
  String? get selectedRowCountTitleFew => r'Изабране су $selectedRowCount ставке';

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Изабрана је 1 ставка';

  @override
  String get selectedRowCountTitleOther => r'Изабрано је $selectedRowCount ставки';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Прикажи налоге';

  @override
  String get showMenuTooltip => 'Прикажи мени';

  @override
  String get signedInLabel => 'Пријављени сте';

  @override
  String get tabLabelRaw => r'$tabIndex. картица од $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ИЗАБЕРИТЕ ВРЕМЕ';

  @override
  String get timePickerHourLabel => 'Сат';

  @override
  String get timePickerHourModeAnnouncement => 'Изаберите сате';

  @override
  String get timePickerInputHelpText => 'УНЕСИТЕ ВРЕМЕ';

  @override
  String get timePickerMinuteLabel => 'Минут';

  @override
  String get timePickerMinuteModeAnnouncement => 'Изаберите минуте';

  @override
  String get unspecifiedDate => 'Датум';

  @override
  String get unspecifiedDateRange => 'Период';

  @override
  String get viewLicensesButtonLabel => 'ПРИКАЖИ ЛИЦЕНЦЕ';
}

/// The translations for Serbian, using the Cyrillic script (`sr_Cyrl`).
class MaterialLocalizationSrCyrl extends MaterialLocalizationSr {
  /// Create an instance of the translation bundle for Serbian, using the Cyrillic script.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSrCyrl({
    super.localeName = 'sr_Cyrl',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });
}

/// The translations for Serbian, using the Latin script (`sr_Latn`).
class MaterialLocalizationSrLatn extends MaterialLocalizationSr {
  /// Create an instance of the translation bundle for Serbian, using the Latin script.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSrLatn({
    super.localeName = 'sr_Latn',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'O aplikaciji $applicationName';

  @override
  String get alertDialogLabel => 'Obaveštenje';

  @override
  String get anteMeridiemAbbreviation => 'pre podne';

  @override
  String get backButtonTooltip => 'Nazad';

  @override
  String get calendarModeButtonLabel => 'Pređite na kalendar';

  @override
  String get cancelButtonLabel => 'OTKAŽI';

  @override
  String get closeButtonLabel => 'ZATVORI';

  @override
  String get closeButtonTooltip => 'Zatvorite';

  @override
  String get collapsedIconTapHint => 'Proširi';

  @override
  String get continueButtonLabel => 'NASTAVI';

  @override
  String get copyButtonLabel => 'Kopiraj';

  @override
  String get cutButtonLabel => 'Iseci';

  @override
  String get dateHelpText => 'dd.mm.gggg.';

  @override
  String get dateInputLabel => 'Unesite datum';

  @override
  String get dateOutOfRangeLabel => 'Izvan perioda.';

  @override
  String get datePickerHelpText => 'IZABERITE DATUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Datum završetka: $fullDate';

  @override
  String get dateRangeEndLabel => 'Datum završetka';

  @override
  String get dateRangePickerHelpText => 'IZABERITE PERIOD';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Datum početka: $fullDate';

  @override
  String get dateRangeStartLabel => 'Datum početka';

  @override
  String get deleteButtonTooltip => 'Izbrišite';

  @override
  String get dialModeButtonLabel => 'Pređite na režim birača brojčanika';

  @override
  String get dialogLabel => 'Dijalog';

  @override
  String get drawerLabel => 'Meni za navigaciju';

  @override
  String get expandedIconTapHint => 'Skupi';

  @override
  String get firstPageTooltip => 'Prva stranica';

  @override
  String get hideAccountsLabel => 'Sakrij naloge';

  @override
  String get inputDateModeButtonLabel => 'Pređite na unos';

  @override
  String get inputTimeModeButtonLabel => 'Pređite na režim unosa teksta';

  @override
  String get invalidDateFormatLabel => 'Format je nevažeći.';

  @override
  String get invalidDateRangeLabel => 'Period je nevažeći.';

  @override
  String get invalidTimeLabel => 'Unesite važeće vreme';

  @override
  String get keyboardKeyChannelDown => 'Prethodni kanal';

  @override
  String get keyboardKeyChannelUp => 'Sledeći kanal';

  @override
  String get keyboardKeyPower => 'Dugme za uključivanje';

  @override
  String get keyboardKeyPowerOff => 'Dugme za isključivanje';

  @override
  String get keyboardKeySpace => 'Taster za razmak';

  @override
  String get lastPageTooltip => 'Poslednja stranica';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount licence';

  @override
  String? get licensesPackageDetailTextOne => '1 licenca';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenci';

  @override
  String get licensesPageTitle => 'Licence';

  @override
  String get menuBarMenuLabel => 'Meni traka menija';

  @override
  String get modalBarrierDismissLabel => 'Odbaci';

  @override
  String get moreButtonTooltip => 'Još';

  @override
  String get nextMonthTooltip => 'Sledeći mesec';

  @override
  String get nextPageTooltip => 'Sledeća stranica';

  @override
  String get okButtonLabel => 'Potvrdi';

  @override
  String get openAppDrawerTooltip => 'Otvorite meni za navigaciju';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow – $lastRow od $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow – $lastRow od približno $rowCount';

  @override
  String get pasteButtonLabel => 'Nalepi';

  @override
  String get popupMenuLabel => 'Iskačući meni';

  @override
  String get postMeridiemAbbreviation => 'po podne';

  @override
  String get previousMonthTooltip => 'Prethodni mesec';

  @override
  String get previousPageTooltip => 'Prethodna stranica';

  @override
  String get refreshIndicatorSemanticLabel => 'Osveži';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Preostala su $remainingCount znaka';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Preostao je 1 znak';

  @override
  String get remainingTextFieldCharacterCountOther => r'Preostalo je $remainingCount znakova';

  @override
  String get reorderItemDown => 'Pomerite nadole';

  @override
  String get reorderItemLeft => 'Pomerite ulevo';

  @override
  String get reorderItemRight => 'Pomerite udesno';

  @override
  String get reorderItemToEnd => 'Pomerite na kraj';

  @override
  String get reorderItemToStart => 'Pomerite na početak';

  @override
  String get reorderItemUp => 'Pomerite nagore';

  @override
  String get rowsPerPageTitle => 'Redova po stranici:';

  @override
  String get saveButtonLabel => 'SAČUVAJ';

  @override
  String get searchFieldLabel => 'Pretražite';

  @override
  String get selectAllButtonLabel => 'Izaberi sve';

  @override
  String get selectYearSemanticsLabel => 'Izaberite godinu';

  @override
  String? get selectedRowCountTitleFew => r'Izabrane su $selectedRowCount stavke';

  @override
  String? get selectedRowCountTitleOne => 'Izabrana je 1 stavka';

  @override
  String get selectedRowCountTitleOther => r'Izabrano je $selectedRowCount stavki';

  @override
  String get showAccountsLabel => 'Prikaži naloge';

  @override
  String get showMenuTooltip => 'Prikaži meni';

  @override
  String get signedInLabel => 'Prijavljeni ste';

  @override
  String get tabLabelRaw => r'$tabIndex. kartica od $tabCount';

  @override
  String get timePickerDialHelpText => 'IZABERITE VREME';

  @override
  String get timePickerHourLabel => 'Sat';

  @override
  String get timePickerHourModeAnnouncement => 'Izaberite sate';

  @override
  String get timePickerInputHelpText => 'UNESITE VREME';

  @override
  String get timePickerMinuteLabel => 'Minut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Izaberite minute';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Period';

  @override
  String get viewLicensesButtonLabel => 'PRIKAŽI LICENCE';
}

/// The translations for Swedish (`sv`).
class MaterialLocalizationSv extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Swedish.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSv({
    super.localeName = 'sv',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Om $applicationName';

  @override
  String get alertDialogLabel => 'Varning';

  @override
  String get anteMeridiemAbbreviation => 'FM';

  @override
  String get backButtonTooltip => 'Tillbaka';

  @override
  String get calendarModeButtonLabel => 'Byt till kalender';

  @override
  String get cancelButtonLabel => 'AVBRYT';

  @override
  String get closeButtonLabel => 'STÄNG';

  @override
  String get closeButtonTooltip => 'Stäng';

  @override
  String get collapsedIconTapHint => 'Utöka';

  @override
  String get continueButtonLabel => 'FORTSÄTT';

  @override
  String get copyButtonLabel => 'Kopiera';

  @override
  String get cutButtonLabel => 'Klipp ut';

  @override
  String get dateHelpText => 'åååå-mm-dd';

  @override
  String get dateInputLabel => 'Ange datum';

  @override
  String get dateOutOfRangeLabel => 'Utanför intervallet.';

  @override
  String get datePickerHelpText => 'VÄLJ DATUM';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Slutdatum $fullDate';

  @override
  String get dateRangeEndLabel => 'Slutdatum';

  @override
  String get dateRangePickerHelpText => 'VÄLJ INTERVALL';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Startdatum $fullDate';

  @override
  String get dateRangeStartLabel => 'Startdatum';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Radera';

  @override
  String get dialModeButtonLabel => 'Byt till läget urtavleväljare';

  @override
  String get dialogLabel => 'Dialogruta';

  @override
  String get drawerLabel => 'Navigeringsmeny';

  @override
  String get expandedIconTapHint => 'Dölj';

  @override
  String get firstPageTooltip => 'Första sidan';

  @override
  String get hideAccountsLabel => 'Dölj konton';

  @override
  String get inputDateModeButtonLabel => 'Byt till inmatning';

  @override
  String get inputTimeModeButtonLabel => 'Byt till text som inmatningsläge';

  @override
  String get invalidDateFormatLabel => 'Ogiltigt format.';

  @override
  String get invalidDateRangeLabel => 'Ogiltigt intervall.';

  @override
  String get invalidTimeLabel => 'Ange en giltig tid';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backsteg';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Byt kanal nedåt';

  @override
  String get keyboardKeyChannelUp => 'Byt kanal uppåt';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Mata ut';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Hem';

  @override
  String get keyboardKeyInsert => 'Infoga';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Kommando';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Strömbrytare';

  @override
  String get keyboardKeyPowerOff => 'Stäng av';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Välj';

  @override
  String get keyboardKeySpace => 'Blanksteg';

  @override
  String get lastPageTooltip => 'Sista sidan';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 licens';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount licenser';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Licenser';

  @override
  String get menuBarMenuLabel => 'Menyrad';

  @override
  String get modalBarrierDismissLabel => 'Stäng';

  @override
  String get moreButtonTooltip => 'Mer';

  @override
  String get nextMonthTooltip => 'Nästa månad';

  @override
  String get nextPageTooltip => 'Nästa sida';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Öppna navigeringsmenyn';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow av $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow av ungefär $rowCount';

  @override
  String get pasteButtonLabel => 'Klistra in';

  @override
  String get popupMenuLabel => 'Popup-meny';

  @override
  String get postMeridiemAbbreviation => 'EM';

  @override
  String get previousMonthTooltip => 'Föregående månad';

  @override
  String get previousPageTooltip => 'Föregående sida';

  @override
  String get refreshIndicatorSemanticLabel => 'Uppdatera';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 tecken kvar';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount tecken kvar';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Flytta nedåt';

  @override
  String get reorderItemLeft => 'Flytta åt vänster';

  @override
  String get reorderItemRight => 'Flytta åt höger';

  @override
  String get reorderItemToEnd => 'Flytta till slutet';

  @override
  String get reorderItemToStart => 'Flytta till början';

  @override
  String get reorderItemUp => 'Flytta uppåt';

  @override
  String get rowsPerPageTitle => 'Rader per sida:';

  @override
  String get saveButtonLabel => 'SPARA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Sök';

  @override
  String get selectAllButtonLabel => 'Markera allt';

  @override
  String get selectYearSemanticsLabel => 'Välj år';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 objekt har markerats';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount objekt har markerats';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Visa konton';

  @override
  String get showMenuTooltip => 'Visa meny';

  @override
  String get signedInLabel => 'Inloggad';

  @override
  String get tabLabelRaw => r'Flik $tabIndex av $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'VÄLJ TID';

  @override
  String get timePickerHourLabel => 'Timme';

  @override
  String get timePickerHourModeAnnouncement => 'Välj timmar';

  @override
  String get timePickerInputHelpText => 'ANGE TID';

  @override
  String get timePickerMinuteLabel => 'Minut';

  @override
  String get timePickerMinuteModeAnnouncement => 'Välj minuter';

  @override
  String get unspecifiedDate => 'Datum';

  @override
  String get unspecifiedDateRange => 'Datumintervall';

  @override
  String get viewLicensesButtonLabel => 'VISA LICENSER';
}

/// The translations for Swahili (`sw`).
class MaterialLocalizationSw extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Swahili.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationSw({
    super.localeName = 'sw',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Kuhusu $applicationName';

  @override
  String get alertDialogLabel => 'Arifa';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Rudi Nyuma';

  @override
  String get calendarModeButtonLabel => 'Badili utumie hali ya kalenda';

  @override
  String get cancelButtonLabel => 'GHAIRI';

  @override
  String get closeButtonLabel => 'FUNGA';

  @override
  String get closeButtonTooltip => 'Funga';

  @override
  String get collapsedIconTapHint => 'Panua';

  @override
  String get continueButtonLabel => 'ENDELEA';

  @override
  String get copyButtonLabel => 'Nakili';

  @override
  String get cutButtonLabel => 'Kata';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => 'Weka Tarehe';

  @override
  String get dateOutOfRangeLabel => 'Umechagua tarehe iliyo nje ya kipindi.';

  @override
  String get datePickerHelpText => 'CHAGUA TAREHE';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Tarehe ya kumalizika $fullDate';

  @override
  String get dateRangeEndLabel => 'Tarehe ya Kumalizika';

  @override
  String get dateRangePickerHelpText => 'CHAGUA KIPINDI';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Tarehe ya kuanza $fullDate';

  @override
  String get dateRangeStartLabel => 'Tarehe ya Kuanza';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Futa';

  @override
  String get dialModeButtonLabel => 'Badilisha ili utumie hali ya kiteuzi cha kupiga simu';

  @override
  String get dialogLabel => 'Kidirisha';

  @override
  String get drawerLabel => 'Menyu ya kusogeza';

  @override
  String get expandedIconTapHint => 'Kunja';

  @override
  String get firstPageTooltip => 'Ukurasa wa kwanza';

  @override
  String get hideAccountsLabel => 'Ficha akaunti';

  @override
  String get inputDateModeButtonLabel => 'Badili utumie hali ya kuweka maandishi';

  @override
  String get inputTimeModeButtonLabel => 'Tumia programu ya kuingiza data ya maandishi';

  @override
  String get invalidDateFormatLabel => 'Muundo si sahihi.';

  @override
  String get invalidDateRangeLabel => 'Kipindi si sahihi.';

  @override
  String get invalidTimeLabel => 'Weka saa sahihi';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'Pg-down';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Ukurasa wa mwisho';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'Leseni moja';

  @override
  String get licensesPackageDetailTextOther => r'Leseni $licenseCount';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Leseni';

  @override
  String get menuBarMenuLabel => 'Menyu ya upau wa menyu';

  @override
  String get modalBarrierDismissLabel => 'Ondoa';

  @override
  String get moreButtonTooltip => 'Zaidi';

  @override
  String get nextMonthTooltip => 'Mwezi ujao';

  @override
  String get nextPageTooltip => 'Ukurasa unaofuata';

  @override
  String get okButtonLabel => 'Sawa';

  @override
  String get openAppDrawerTooltip => 'Fungua menyu ya kusogeza';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow hadi $lastRow kati ya $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow hadi $lastRow kati ya takriban $rowCount';

  @override
  String get pasteButtonLabel => 'Bandika';

  @override
  String get popupMenuLabel => 'Menyu ibukizi';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Mwezi uliopita';

  @override
  String get previousPageTooltip => 'Ukurasa uliotangulia';

  @override
  String get refreshIndicatorSemanticLabel => 'Onyesha upya';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Imesalia herufi 1';

  @override
  String get remainingTextFieldCharacterCountOther => r'Zimesalia herufi $remainingCount';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'Hapana herufi zilizo baki';

  @override
  String get reorderItemDown => 'Sogeza chini';

  @override
  String get reorderItemLeft => 'Sogeza kushoto';

  @override
  String get reorderItemRight => 'Sogeza kulia';

  @override
  String get reorderItemToEnd => 'Sogeza hadi mwisho';

  @override
  String get reorderItemToStart => 'Sogeza hadi mwanzo';

  @override
  String get reorderItemUp => 'Sogeza juu';

  @override
  String get rowsPerPageTitle => 'Safu mlalo kwa kila ukurasa:';

  @override
  String get saveButtonLabel => 'HIFADHI';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Tafuta';

  @override
  String get selectAllButtonLabel => 'Chagua vyote';

  @override
  String get selectYearSemanticsLabel => 'Chagua mwaka';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Umechagua kipengee 1';

  @override
  String get selectedRowCountTitleOther => r'Umechagua vipengee $selectedRowCount';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'Hamna kilicho chaguliwa';

  @override
  String get showAccountsLabel => 'Onyesha akaunti';

  @override
  String get showMenuTooltip => 'Onyesha menyu';

  @override
  String get signedInLabel => 'Umeingia katika akaunti';

  @override
  String get tabLabelRaw => r'Kichupo cha $tabIndex kati ya $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'CHAGUA SAA';

  @override
  String get timePickerHourLabel => 'Saa';

  @override
  String get timePickerHourModeAnnouncement => 'Chagua saa';

  @override
  String get timePickerInputHelpText => 'WEKA SAA';

  @override
  String get timePickerMinuteLabel => 'Dakika';

  @override
  String get timePickerMinuteModeAnnouncement => 'Chagua dakika';

  @override
  String get unspecifiedDate => 'Tarehe';

  @override
  String get unspecifiedDateRange => 'Kipindi';

  @override
  String get viewLicensesButtonLabel => 'ANGALIA LESENI';
}

/// The translations for Tamil (`ta`).
class MaterialLocalizationTa extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Tamil.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationTa({
    super.localeName = 'ta',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName பற்றி';

  @override
  String get alertDialogLabel => 'விழிப்பூட்டல்';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'முந்தைய பக்கம்';

  @override
  String get calendarModeButtonLabel => 'கேலெண்டருக்கு மாற்று';

  @override
  String get cancelButtonLabel => 'ரத்துசெய்';

  @override
  String get closeButtonLabel => 'மூடுக';

  @override
  String get closeButtonTooltip => 'மூடுக';

  @override
  String get collapsedIconTapHint => 'விரிக்கும்';

  @override
  String get continueButtonLabel => 'தொடர்க';

  @override
  String get copyButtonLabel => 'நகலெடு';

  @override
  String get cutButtonLabel => 'வெட்டு';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'தேதியை உள்ளிடுக';

  @override
  String get dateOutOfRangeLabel => 'வரம்பிற்கு வெளியே உள்ளது.';

  @override
  String get datePickerHelpText => 'தேதியைத் தேர்ந்தெடுக்கவும்';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'முடிவுத் தேதி $fullDate';

  @override
  String get dateRangeEndLabel => 'முடிவுத் தேதி';

  @override
  String get dateRangePickerHelpText => 'வரம்பைத் தேர்ந்தெடுக்கவும்';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'தொடங்கும் தேதி $fullDate';

  @override
  String get dateRangeStartLabel => 'தொடங்கும் தேதி';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'நீக்கு';

  @override
  String get dialModeButtonLabel => 'டயல் தேர்வுக் கருவி பயன்முறைக்கு மாற்றும்';

  @override
  String get dialogLabel => 'உரையாடல்';

  @override
  String get drawerLabel => 'வழிசெலுத்தல் மெனு';

  @override
  String get expandedIconTapHint => 'சுருக்கும்';

  @override
  String get firstPageTooltip => 'முதல் பக்கத்திற்குச் செல்லும்';

  @override
  String get hideAccountsLabel => 'கணக்குகளை மறைக்கும்';

  @override
  String get inputDateModeButtonLabel => 'உள்ளீட்டுக்கு மாற்று';

  @override
  String get inputTimeModeButtonLabel => 'உரை உள்ளீட்டு முறைக்கு மாற்றும்';

  @override
  String get invalidDateFormatLabel => 'தவறான வடிவம்.';

  @override
  String get invalidDateRangeLabel => 'தவறான வரம்பு.';

  @override
  String get invalidTimeLabel => 'சரியான நேரத்தை உள்ளிடவும்';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'கடைசிப் பக்கத்திற்குச் செல்லும்';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 உரிமம்';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount உரிமங்கள்';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'உரிமங்கள்';

  @override
  String get menuBarMenuLabel => 'மெனு பட்டியின் மெனு';

  @override
  String get modalBarrierDismissLabel => 'நிராகரிக்கும்';

  @override
  String get moreButtonTooltip => 'மேலும்';

  @override
  String get nextMonthTooltip => 'அடுத்த மாதம்';

  @override
  String get nextPageTooltip => 'அடுத்த பக்கம்';

  @override
  String get okButtonLabel => 'சரி';

  @override
  String get openAppDrawerTooltip => 'வழிசெலுத்தல் மெனுவைத் திற';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow / $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow / $rowCount';

  @override
  String get pasteButtonLabel => 'ஒட்டு';

  @override
  String get popupMenuLabel => 'பாப்-அப் மெனு';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'முந்தைய மாதம்';

  @override
  String get previousPageTooltip => 'முந்தைய பக்கம்';

  @override
  String get refreshIndicatorSemanticLabel => 'ரெஃப்ரெஷ் செய்யும்';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 எழுத்து மீதமுள்ளது';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount எழுத்துகள் மீதமுள்ளன';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'எழுத்துக்கள் எதுவும் இல்லை';

  @override
  String get reorderItemDown => 'கீழே நகர்த்தவும்';

  @override
  String get reorderItemLeft => 'இடப்புறம் நகர்த்தவும்';

  @override
  String get reorderItemRight => 'வலப்புறம் நகர்த்தவும்';

  @override
  String get reorderItemToEnd => 'இறுதிக்கு நகர்த்தவும்';

  @override
  String get reorderItemToStart => 'தொடக்கத்திற்கு நகர்த்தவும்';

  @override
  String get reorderItemUp => 'மேலே நகர்த்தவும்';

  @override
  String get rowsPerPageTitle => 'ஒரு பக்கத்திற்கான வரிசைகள்:';

  @override
  String get saveButtonLabel => 'சேமி';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => 'தேடல்';

  @override
  String get selectAllButtonLabel => 'அனைத்தையும் தேர்ந்தெடு';

  @override
  String get selectYearSemanticsLabel => 'ஆண்டைத் தேர்ந்தெடுக்கவும்';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 வரிசை தேர்ந்தெடுக்கப்பட்டது';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount வரிசைகள் தேர்ந்தெடுக்கப்பட்டன';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => 'எந்த வரிசையும் தேர்ந்தெடுக்கவில்லை';

  @override
  String get showAccountsLabel => 'கணக்குகளைக் காட்டும்';

  @override
  String get showMenuTooltip => 'மெனுவைக் காட்டு';

  @override
  String get signedInLabel => 'உள்நுழைந்துள்ளீர்கள்';

  @override
  String get tabLabelRaw => r'தாவல் $tabIndex / $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.a_space_h_colon_mm;

  @override
  String get timePickerDialHelpText => 'நேரத்தைத் தேர்வுசெய்க';

  @override
  String get timePickerHourLabel => 'மணிநேரம்';

  @override
  String get timePickerHourModeAnnouncement => 'மணிநேரத்தைத் தேர்ந்தெடுக்கவும்';

  @override
  String get timePickerInputHelpText => 'நேரத்தை உள்ளிடுக';

  @override
  String get timePickerMinuteLabel => 'நிமிடம்';

  @override
  String get timePickerMinuteModeAnnouncement => 'நிமிடங்களைத் தேர்ந்தெடுக்கவும்';

  @override
  String get unspecifiedDate => 'தேதி';

  @override
  String get unspecifiedDateRange => 'தேதி வரம்பு';

  @override
  String get viewLicensesButtonLabel => 'உரிமங்களைக் காட்டு';
}

/// The translations for Telugu (`te`).
class MaterialLocalizationTe extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Telugu.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationTe({
    super.localeName = 'te',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName గురించి';

  @override
  String get alertDialogLabel => 'అలర్ట్';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'వెనుకకు';

  @override
  String get calendarModeButtonLabel => 'క్యాలెండర్‌కు మారండి';

  @override
  String get cancelButtonLabel => 'రద్దు చేయి';

  @override
  String get closeButtonLabel => 'మూసివేయి';

  @override
  String get closeButtonTooltip => 'మూసివేయి';

  @override
  String get collapsedIconTapHint => 'విస్తరించు';

  @override
  String get continueButtonLabel => 'కొనసాగించు';

  @override
  String get copyButtonLabel => 'కాపీ చేయి';

  @override
  String get cutButtonLabel => 'కత్తిరించు';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'తేదీని ఎంటర్ చేయండి';

  @override
  String get dateOutOfRangeLabel => 'పరిధి వెలుపల ఉంది.';

  @override
  String get datePickerHelpText => 'తేదీని ఎంచుకోండి';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'ముగింపు తేదీ $fullDate';

  @override
  String get dateRangeEndLabel => 'ముగింపు తేదీ';

  @override
  String get dateRangePickerHelpText => 'పరిధిని ఎంచుకోండి';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'ప్రారంభ తేదీ $fullDate';

  @override
  String get dateRangeStartLabel => 'ప్రారంభ తేదీ';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'తొలగించు';

  @override
  String get dialModeButtonLabel => 'డయల్ పికర్ మోడ్‌కు మారుస్తుంది';

  @override
  String get dialogLabel => 'డైలాగ్';

  @override
  String get drawerLabel => 'నావిగేషన్ మెనూ';

  @override
  String get expandedIconTapHint => 'కుదించు';

  @override
  String get firstPageTooltip => 'మొదటి పేజీ';

  @override
  String get hideAccountsLabel => 'ఖాతాలను దాచు';

  @override
  String get inputDateModeButtonLabel => 'ఇన్‌పుట్‌కు మారండి';

  @override
  String get inputTimeModeButtonLabel => 'టెక్స్ట్ ఇన్‌పుట్ మోడ్‌కు మారుస్తుంది';

  @override
  String get invalidDateFormatLabel => 'ఫార్మాట్ చెల్లదు.';

  @override
  String get invalidDateRangeLabel => 'పరిధి చెల్లదు.';

  @override
  String get invalidTimeLabel => 'చెల్లుబాటు అయ్యే సమయాన్ని ఎంటర్ చేయండి';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'చివరి పేజీ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 లైసెన్స్';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount లైసెన్స్‌లు';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'లైసెన్స్‌లు';

  @override
  String get menuBarMenuLabel => 'మెనూ బార్ మెనూ';

  @override
  String get modalBarrierDismissLabel => 'విస్మరించు';

  @override
  String get moreButtonTooltip => 'మరిన్ని';

  @override
  String get nextMonthTooltip => 'తర్వాత నెల';

  @override
  String get nextPageTooltip => 'తర్వాత పేజీ';

  @override
  String get okButtonLabel => 'సరే';

  @override
  String get openAppDrawerTooltip => 'నావిగేషన్ మెనూను తెరువు';

  @override
  String get pageRowsInfoTitleRaw => r'$rowCountలో $firstRow - $lastRow';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$rowCountలో $firstRow–$lastRow';

  @override
  String get pasteButtonLabel => 'అతికించు';

  @override
  String get popupMenuLabel => 'పాప్‌అప్ మెనూ';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'మునుపటి నెల';

  @override
  String get previousPageTooltip => 'మునుపటి పేజీ';

  @override
  String get refreshIndicatorSemanticLabel => 'రిఫ్రెష్ చేయి';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 అక్షరం మిగిలి ఉంది';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount అక్షరాలు మిగిలి ఉన్నాయి';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'కిందికు జరుపు';

  @override
  String get reorderItemLeft => 'ఎడమవైపుగా జరపండి';

  @override
  String get reorderItemRight => 'కుడివైపుగా జరపండి';

  @override
  String get reorderItemToEnd => 'చివరకు తరలించండి';

  @override
  String get reorderItemToStart => 'ప్రారంభానికి తరలించండి';

  @override
  String get reorderItemUp => 'పైకి జరపండి';

  @override
  String get rowsPerPageTitle => 'పేజీకి ఉండే అడ్డు వరుసలు:';

  @override
  String get saveButtonLabel => 'సేవ్ చేయి';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'వెతుకు';

  @override
  String get selectAllButtonLabel => 'అన్నింటినీ ఎంచుకోండి';

  @override
  String get selectYearSemanticsLabel => 'సంవత్సరాన్ని ఎంచుకోండి';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 అంశం ఎంచుకోబడింది';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount అంశాలు ఎంచుకోబడ్డాయి';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'ఖాతాలను చూపు';

  @override
  String get showMenuTooltip => 'మెనూను చూపు';

  @override
  String get signedInLabel => 'సైన్ ఇన్ చేశారు';

  @override
  String get tabLabelRaw => r'$tabCountలో $tabIndexవ ట్యాబ్';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'సమయాన్ని ఎంచుకోండి';

  @override
  String get timePickerHourLabel => 'గంట';

  @override
  String get timePickerHourModeAnnouncement => 'గంటలను ఎంచుకోండి';

  @override
  String get timePickerInputHelpText => 'సమయాన్ని ఎంటర్ చేయండి';

  @override
  String get timePickerMinuteLabel => 'నిమిషం';

  @override
  String get timePickerMinuteModeAnnouncement => 'నిమిషాలను ఎంచుకోండి';

  @override
  String get unspecifiedDate => 'తేదీ';

  @override
  String get unspecifiedDateRange => 'తేదీల పరిధి';

  @override
  String get viewLicensesButtonLabel => 'లైసెన్స్‌లను చూడండి';
}

/// The translations for Thai (`th`).
class MaterialLocalizationTh extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Thai.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationTh({
    super.localeName = 'th',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'เกี่ยวกับ $applicationName';

  @override
  String get alertDialogLabel => 'การแจ้งเตือน';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'กลับ';

  @override
  String get calendarModeButtonLabel => 'เปลี่ยนเป็นปฏิทิน';

  @override
  String get cancelButtonLabel => 'ยกเลิก';

  @override
  String get closeButtonLabel => 'ปิด';

  @override
  String get closeButtonTooltip => 'ปิด';

  @override
  String get collapsedIconTapHint => 'ขยาย';

  @override
  String get continueButtonLabel => 'ต่อไป';

  @override
  String get copyButtonLabel => 'คัดลอก';

  @override
  String get cutButtonLabel => 'ตัด';

  @override
  String get dateHelpText => 'ดด/วว/ปปปป';

  @override
  String get dateInputLabel => 'ป้อนวันที่';

  @override
  String get dateOutOfRangeLabel => 'ไม่อยู่ในช่วง';

  @override
  String get datePickerHelpText => 'เลือกวันที่';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'วันที่สิ้นสุด $fullDate';

  @override
  String get dateRangeEndLabel => 'วันที่สิ้นสุด';

  @override
  String get dateRangePickerHelpText => 'เลือกช่วง';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'วันที่เริ่มต้น $fullDate';

  @override
  String get dateRangeStartLabel => 'วันที่เริ่มต้น';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'ลบ';

  @override
  String get dialModeButtonLabel => 'สลับไปใช้โหมดเครื่องมือเลือกแบบหมุน';

  @override
  String get dialogLabel => 'กล่องโต้ตอบ';

  @override
  String get drawerLabel => 'เมนูการนำทาง';

  @override
  String get expandedIconTapHint => 'ยุบ';

  @override
  String get firstPageTooltip => 'หน้าแรก';

  @override
  String get hideAccountsLabel => 'ซ่อนบัญชี';

  @override
  String get inputDateModeButtonLabel => 'เปลี่ยนเป็นโหมดป้อนข้อความ';

  @override
  String get inputTimeModeButtonLabel => 'สลับไปใช้โหมดป้อนข้อมูลข้อความ';

  @override
  String get invalidDateFormatLabel => 'รูปแบบไม่ถูกต้อง';

  @override
  String get invalidDateRangeLabel => 'ช่วงไม่ถูกต้อง';

  @override
  String get invalidTimeLabel => 'ป้อนเวลาที่ถูกต้อง';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'เลข 0';

  @override
  String get keyboardKeyNumpad1 => 'เลข 1';

  @override
  String get keyboardKeyNumpad2 => 'เลข 2';

  @override
  String get keyboardKeyNumpad3 => 'เลข 3';

  @override
  String get keyboardKeyNumpad4 => 'เลข 4';

  @override
  String get keyboardKeyNumpad5 => 'เลข 5';

  @override
  String get keyboardKeyNumpad6 => 'เลข 6';

  @override
  String get keyboardKeyNumpad7 => 'เลข 7';

  @override
  String get keyboardKeyNumpad8 => 'เลข 8';

  @override
  String get keyboardKeyNumpad9 => 'เลข 9';

  @override
  String get keyboardKeyNumpadAdd => 'เลข +';

  @override
  String get keyboardKeyNumpadComma => 'เลข ,';

  @override
  String get keyboardKeyNumpadDecimal => 'เลข .';

  @override
  String get keyboardKeyNumpadDivide => 'เลข /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'เลข =';

  @override
  String get keyboardKeyNumpadMultiply => 'เลข *';

  @override
  String get keyboardKeyNumpadParenLeft => 'เลข (';

  @override
  String get keyboardKeyNumpadParenRight => 'เลข )';

  @override
  String get keyboardKeyNumpadSubtract => 'เลข -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'เปิด/ปิด';

  @override
  String get keyboardKeyPowerOff => 'ปิดเครื่อง';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'หน้าสุดท้าย';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'ใบอนุญาต 1 ใบ';

  @override
  String get licensesPackageDetailTextOther => r'ใบอนุญาต $licenseCount ใบ';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'ใบอนุญาต';

  @override
  String get menuBarMenuLabel => 'เมนูในแถบเมนู';

  @override
  String get modalBarrierDismissLabel => 'ปิด';

  @override
  String get moreButtonTooltip => 'เพิ่มเติม';

  @override
  String get nextMonthTooltip => 'เดือนหน้า';

  @override
  String get nextPageTooltip => 'หน้าถัดไป';

  @override
  String get okButtonLabel => 'ตกลง';

  @override
  String get openAppDrawerTooltip => 'เปิดเมนูการนำทาง';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow จาก $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow จากประมาณ $rowCount';

  @override
  String get pasteButtonLabel => 'วาง';

  @override
  String get popupMenuLabel => 'เมนูป๊อปอัป';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'เดือนที่แล้ว';

  @override
  String get previousPageTooltip => 'หน้าก่อน';

  @override
  String get refreshIndicatorSemanticLabel => 'รีเฟรช';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'เหลือ 1 อักขระ';

  @override
  String get remainingTextFieldCharacterCountOther => r'เหลือ $remainingCount อักขระ';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'ย้ายลง';

  @override
  String get reorderItemLeft => 'ย้ายไปทางซ้าย';

  @override
  String get reorderItemRight => 'ย้ายไปทางขวา';

  @override
  String get reorderItemToEnd => 'ย้ายไปท้ายรายการ';

  @override
  String get reorderItemToStart => 'ย้ายไปต้นรายการ';

  @override
  String get reorderItemUp => 'ย้ายขึ้น';

  @override
  String get rowsPerPageTitle => 'แถวต่อหน้า:';

  @override
  String get saveButtonLabel => 'บันทึก';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'ค้นหา';

  @override
  String get selectAllButtonLabel => 'เลือกทั้งหมด';

  @override
  String get selectYearSemanticsLabel => 'เลือกปี';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'เลือกแล้ว 1 รายการ';

  @override
  String get selectedRowCountTitleOther => r'เลือกแล้ว $selectedRowCount รายการ';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'แสดงบัญชี';

  @override
  String get showMenuTooltip => 'แสดงเมนู';

  @override
  String get signedInLabel => 'ลงชื่อเข้าใช้';

  @override
  String get tabLabelRaw => r'แท็บที่ $tabIndex จาก $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.a_space_h_colon_mm;

  @override
  String get timePickerDialHelpText => 'เลือกเวลา';

  @override
  String get timePickerHourLabel => 'ชั่วโมง';

  @override
  String get timePickerHourModeAnnouncement => 'เลือกชั่วโมง';

  @override
  String get timePickerInputHelpText => 'ป้อนเวลา';

  @override
  String get timePickerMinuteLabel => 'นาที';

  @override
  String get timePickerMinuteModeAnnouncement => 'เลือกนาที';

  @override
  String get unspecifiedDate => 'วันที่';

  @override
  String get unspecifiedDateRange => 'ช่วงวันที่';

  @override
  String get viewLicensesButtonLabel => 'ดูใบอนุญาต';
}

/// The translations for Tagalog (`tl`).
class MaterialLocalizationTl extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Tagalog.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationTl({
    super.localeName = 'tl',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Tungkol sa $applicationName';

  @override
  String get alertDialogLabel => 'Alerto';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Bumalik';

  @override
  String get calendarModeButtonLabel => 'Lumipat sa kalendaryo';

  @override
  String get cancelButtonLabel => 'KANSELAHIN';

  @override
  String get closeButtonLabel => 'ISARA';

  @override
  String get closeButtonTooltip => 'Isara';

  @override
  String get collapsedIconTapHint => 'I-expand';

  @override
  String get continueButtonLabel => 'MAGPATULOY';

  @override
  String get copyButtonLabel => 'Kopyahin';

  @override
  String get cutButtonLabel => 'I-cut';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Ilagay ang Petsa';

  @override
  String get dateOutOfRangeLabel => 'Wala sa hanay.';

  @override
  String get datePickerHelpText => 'PUMILI NG PETSA';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Petsa ng pagtatapos $fullDate';

  @override
  String get dateRangeEndLabel => 'Petsa ng Pagtatapos';

  @override
  String get dateRangePickerHelpText => 'PUMILI NG HANAY';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Petsa ng pagsisimula $fullDate';

  @override
  String get dateRangeStartLabel => 'Petsa ng Pagsisimula';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'I-delete';

  @override
  String get dialModeButtonLabel => 'Lumipat sa dial picker mode';

  @override
  String get dialogLabel => 'Dialog';

  @override
  String get drawerLabel => 'Menu ng navigation';

  @override
  String get expandedIconTapHint => 'I-collapse';

  @override
  String get firstPageTooltip => 'Unang page';

  @override
  String get hideAccountsLabel => 'Itago ang mga account';

  @override
  String get inputDateModeButtonLabel => 'Lumipat sa input';

  @override
  String get inputTimeModeButtonLabel => 'Lumipat sa text input mode';

  @override
  String get invalidDateFormatLabel => 'Invalid ang format.';

  @override
  String get invalidDateRangeLabel => 'Invalid ang hanay.';

  @override
  String get invalidTimeLabel => 'Maglagay ng valid na oras';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'I-off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Piliin';

  @override
  String get keyboardKeySpace => 'Puwang';

  @override
  String get lastPageTooltip => 'Huling page';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisensya';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount na lisensya';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Mga Lisensya';

  @override
  String get menuBarMenuLabel => 'Menu sa menu bar';

  @override
  String get modalBarrierDismissLabel => 'I-dismiss';

  @override
  String get moreButtonTooltip => 'Higit Pa';

  @override
  String get nextMonthTooltip => 'Susunod na buwan';

  @override
  String get nextPageTooltip => 'Susunod na page';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Buksan ang menu ng navigation';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow ng $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow ng humigit kumulang $rowCount';

  @override
  String get pasteButtonLabel => 'I-paste';

  @override
  String get popupMenuLabel => 'Popup na menu';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Nakaraang buwan';

  @override
  String get previousPageTooltip => 'Nakaraang page';

  @override
  String get refreshIndicatorSemanticLabel => 'Nagre-refresh';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 character ang natitira';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount na character ang natitira';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Ilipat pababa';

  @override
  String get reorderItemLeft => 'Ilipat pakaliwa';

  @override
  String get reorderItemRight => 'Ilipat pakanan';

  @override
  String get reorderItemToEnd => 'Ilipat sa dulo';

  @override
  String get reorderItemToStart => 'Ilipat sa simula';

  @override
  String get reorderItemUp => 'Ilipat pataas';

  @override
  String get rowsPerPageTitle => 'Mga row bawat page:';

  @override
  String get saveButtonLabel => 'I-SAVE';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Maghanap';

  @override
  String get selectAllButtonLabel => 'Piliin lahat';

  @override
  String get selectYearSemanticsLabel => 'Pumili ng taon';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 item ang napili';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount na item ang napili';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Ipakita ang mga account';

  @override
  String get showMenuTooltip => 'Ipakita ang menu';

  @override
  String get signedInLabel => 'Naka-sign in';

  @override
  String get tabLabelRaw => r'Tab $tabIndex ng $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'PUMILI NG ORAS';

  @override
  String get timePickerHourLabel => 'Oras';

  @override
  String get timePickerHourModeAnnouncement => 'Pumili ng mga oras';

  @override
  String get timePickerInputHelpText => 'MAGLAGAY NG ORAS';

  @override
  String get timePickerMinuteLabel => 'Minuto';

  @override
  String get timePickerMinuteModeAnnouncement => 'Pumili ng mga minuto';

  @override
  String get unspecifiedDate => 'Petsa';

  @override
  String get unspecifiedDateRange => 'Hanay ng Petsa';

  @override
  String get viewLicensesButtonLabel => 'TINGNAN ANG MGA LISENSYA';
}

/// The translations for Turkish (`tr`).
class MaterialLocalizationTr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Turkish.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationTr({
    super.localeName = 'tr',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName Hakkında';

  @override
  String get alertDialogLabel => 'Uyarı';

  @override
  String get anteMeridiemAbbreviation => 'ÖÖ';

  @override
  String get backButtonTooltip => 'Geri';

  @override
  String get calendarModeButtonLabel => 'Takvime geç';

  @override
  String get cancelButtonLabel => 'İPTAL';

  @override
  String get closeButtonLabel => 'KAPAT';

  @override
  String get closeButtonTooltip => 'Kapat';

  @override
  String get collapsedIconTapHint => 'Genişlet';

  @override
  String get continueButtonLabel => 'DEVAM';

  @override
  String get copyButtonLabel => 'Kopyala';

  @override
  String get cutButtonLabel => 'Kes';

  @override
  String get dateHelpText => 'gg.aa.yyyy';

  @override
  String get dateInputLabel => 'Tarih Girin';

  @override
  String get dateOutOfRangeLabel => 'Kapsama alanı dışında.';

  @override
  String get datePickerHelpText => 'TARİH SEÇİN';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Bitiş tarihi $fullDate';

  @override
  String get dateRangeEndLabel => 'Bitiş Tarihi';

  @override
  String get dateRangePickerHelpText => 'ARALIK SEÇİN';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Başlangıç tarihi $fullDate';

  @override
  String get dateRangeStartLabel => 'Başlangıç Tarihi';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Sil';

  @override
  String get dialModeButtonLabel => 'Dairesel seçici moduna geç';

  @override
  String get dialogLabel => 'İletişim kutusu';

  @override
  String get drawerLabel => 'Gezinme menüsü';

  @override
  String get expandedIconTapHint => 'Daralt';

  @override
  String get firstPageTooltip => 'İlk sayfa';

  @override
  String get hideAccountsLabel => 'Hesapları gizle';

  @override
  String get inputDateModeButtonLabel => 'Girişe geç';

  @override
  String get inputTimeModeButtonLabel => 'Metin giriş moduna geç';

  @override
  String get invalidDateFormatLabel => 'Geçersiz biçim.';

  @override
  String get invalidDateRangeLabel => 'Geçersiz aralık.';

  @override
  String get invalidTimeLabel => 'Geçerli bir saat girin';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Geri Tuşu';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Kanal Aşağı';

  @override
  String get keyboardKeyChannelUp => 'Kanal Yukarı';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Çıkar';

  @override
  String get keyboardKeyEnd => 'Son';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Komut';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Güç';

  @override
  String get keyboardKeyPowerOff => 'Kapat';

  @override
  String get keyboardKeyPrintScreen => 'Ekranı Yazdır';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Seç';

  @override
  String get keyboardKeySpace => 'Boşluk';

  @override
  String get lastPageTooltip => 'Son sayfa';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 lisans';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount lisans';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Lisanslar';

  @override
  String get menuBarMenuLabel => 'Menü çubuğu menüsü';

  @override
  String get modalBarrierDismissLabel => 'Kapat';

  @override
  String get moreButtonTooltip => 'Diğer';

  @override
  String get nextMonthTooltip => 'Gelecek ay';

  @override
  String get nextPageTooltip => 'Sonraki sayfa';

  @override
  String get okButtonLabel => 'Tamam';

  @override
  String get openAppDrawerTooltip => 'Gezinme menüsünü aç';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow-$lastRow / $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow-$lastRow / $rowCount';

  @override
  String get pasteButtonLabel => 'Yapıştır';

  @override
  String get popupMenuLabel => 'Popup menü';

  @override
  String get postMeridiemAbbreviation => 'ÖS';

  @override
  String get previousMonthTooltip => 'Önceki ay';

  @override
  String get previousPageTooltip => 'Önceki sayfa';

  @override
  String get refreshIndicatorSemanticLabel => 'Yenile';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 karakter kaldı';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount karakter kaldı';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Aşağı taşı';

  @override
  String get reorderItemLeft => 'Sola taşı';

  @override
  String get reorderItemRight => 'Sağa taşı';

  @override
  String get reorderItemToEnd => 'Sona taşı';

  @override
  String get reorderItemToStart => 'Başa taşı';

  @override
  String get reorderItemUp => 'Yukarı taşı';

  @override
  String get rowsPerPageTitle => 'Sayfa başına satır sayısı:';

  @override
  String get saveButtonLabel => 'KAYDET';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Ara';

  @override
  String get selectAllButtonLabel => 'Tümünü seç';

  @override
  String get selectYearSemanticsLabel => 'Yılı seçin';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 öğe seçildi';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount öğe seçildi';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Hesapları göster';

  @override
  String get showMenuTooltip => 'Menüyü göster';

  @override
  String get signedInLabel => 'Oturum açıldı';

  @override
  String get tabLabelRaw => r'Sekme $tabIndex / $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'SAATİ SEÇİN';

  @override
  String get timePickerHourLabel => 'Saat';

  @override
  String get timePickerHourModeAnnouncement => 'Saati seçin';

  @override
  String get timePickerInputHelpText => 'SAATİ GİRİN';

  @override
  String get timePickerMinuteLabel => 'Dakika';

  @override
  String get timePickerMinuteModeAnnouncement => 'Dakikayı seçin';

  @override
  String get unspecifiedDate => 'Tarih';

  @override
  String get unspecifiedDateRange => 'Tarih Aralığı';

  @override
  String get viewLicensesButtonLabel => 'LİSANSLARI GÖSTER';
}

/// The translations for Ukrainian (`uk`).
class MaterialLocalizationUk extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Ukrainian.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationUk({
    super.localeName = 'uk',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Про додаток $applicationName';

  @override
  String get alertDialogLabel => 'Сповіщення';

  @override
  String get anteMeridiemAbbreviation => 'дп';

  @override
  String get backButtonTooltip => 'Назад';

  @override
  String get calendarModeButtonLabel => 'Перейти до календаря';

  @override
  String get cancelButtonLabel => 'СКАСУВАТИ';

  @override
  String get closeButtonLabel => 'ЗАКРИТИ';

  @override
  String get closeButtonTooltip => 'Закрити';

  @override
  String get collapsedIconTapHint => 'Розгорнути';

  @override
  String get continueButtonLabel => 'ПРОДОВЖИТИ';

  @override
  String get copyButtonLabel => 'Копіювати';

  @override
  String get cutButtonLabel => 'Вирізати';

  @override
  String get dateHelpText => 'дд.мм.рррр';

  @override
  String get dateInputLabel => 'Введіть дату';

  @override
  String get dateOutOfRangeLabel => 'За межами діапазону.';

  @override
  String get datePickerHelpText => 'ВИБРАТИ ДАТУ';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Дата завершення $fullDate';

  @override
  String get dateRangeEndLabel => 'Дата завершення';

  @override
  String get dateRangePickerHelpText => 'ВИБРАТИ ДІАПАЗОН';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Дата початку $fullDate';

  @override
  String get dateRangeStartLabel => 'Дата початку';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Видалити';

  @override
  String get dialModeButtonLabel => 'Перейти в режим вибору на циферблаті';

  @override
  String get dialogLabel => 'Вікно';

  @override
  String get drawerLabel => 'Меню навігації';

  @override
  String get expandedIconTapHint => 'Згорнути';

  @override
  String get firstPageTooltip => 'Перша сторінка';

  @override
  String get hideAccountsLabel => 'Сховати облікові записи';

  @override
  String get inputDateModeButtonLabel => 'Ввести вручну';

  @override
  String get inputTimeModeButtonLabel => 'Перейти в режим введення цифр';

  @override
  String get invalidDateFormatLabel => 'Недійсний формат.';

  @override
  String get invalidDateRangeLabel => 'Недійсний діапазон.';

  @override
  String get invalidTimeLabel => 'Введіть дійсний час';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Канал униз';

  @override
  String get keyboardKeyChannelUp => 'Канал угору';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Вийняти';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Кнопка живлення';

  @override
  String get keyboardKeyPowerOff => 'Вимкнути живлення';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Пробіл';

  @override
  String get lastPageTooltip => 'Остання сторінка';

  @override
  String? get licensesPackageDetailTextFew => r'$licenseCount ліцензії';

  @override
  String? get licensesPackageDetailTextMany => r'$licenseCount ліцензій';

  @override
  String? get licensesPackageDetailTextOne => '1 ліцензія';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ліцензії';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Ліцензії';

  @override
  String get menuBarMenuLabel => 'Панель меню';

  @override
  String get modalBarrierDismissLabel => 'Закрити';

  @override
  String get moreButtonTooltip => 'Інші';

  @override
  String get nextMonthTooltip => 'Наступний місяць';

  @override
  String get nextPageTooltip => 'Наступна сторінка';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Відкрити меню навігації';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow з $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow з приблизно $rowCount';

  @override
  String get pasteButtonLabel => 'Вставити';

  @override
  String get popupMenuLabel => 'Спливаюче меню';

  @override
  String get postMeridiemAbbreviation => 'пп';

  @override
  String get previousMonthTooltip => 'Попередній місяць';

  @override
  String get previousPageTooltip => 'Попередня сторінка';

  @override
  String get refreshIndicatorSemanticLabel => 'Оновити';

  @override
  String? get remainingTextFieldCharacterCountFew => r'Залишилося $remainingCount символи';

  @override
  String? get remainingTextFieldCharacterCountMany => r'Залишилося $remainingCount символів';

  @override
  String? get remainingTextFieldCharacterCountOne => 'Залишився 1 символ';

  @override
  String get remainingTextFieldCharacterCountOther => r'Залишилося $remainingCount символу';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Перемістити вниз';

  @override
  String get reorderItemLeft => 'Перемістити ліворуч';

  @override
  String get reorderItemRight => 'Перемістити праворуч';

  @override
  String get reorderItemToEnd => 'Перемістити в кінець';

  @override
  String get reorderItemToStart => 'Перемістити на початок';

  @override
  String get reorderItemUp => 'Перемістити вгору';

  @override
  String get rowsPerPageTitle => 'Рядків на сторінці:';

  @override
  String get saveButtonLabel => 'ЗБЕРЕГТИ';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Пошук';

  @override
  String get selectAllButtonLabel => 'Вибрати всі';

  @override
  String get selectYearSemanticsLabel => 'Виберіть рік';

  @override
  String? get selectedRowCountTitleFew => r'Вибрано $selectedRowCount елементи';

  @override
  String? get selectedRowCountTitleMany => r'Вибрано $selectedRowCount елементів';

  @override
  String? get selectedRowCountTitleOne => 'Вибрано 1 елемент';

  @override
  String get selectedRowCountTitleOther => r'Вибрано $selectedRowCount елемента';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Показати облікові записи';

  @override
  String get showMenuTooltip => 'Показати меню';

  @override
  String get signedInLabel => 'Ви ввійшли';

  @override
  String get tabLabelRaw => r'Вкладка $tabIndex з $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'ВИБЕРІТЬ ЧАС';

  @override
  String get timePickerHourLabel => 'Години';

  @override
  String get timePickerHourModeAnnouncement => 'Виберіть години';

  @override
  String get timePickerInputHelpText => 'ВВЕДІТЬ ЧАС';

  @override
  String get timePickerMinuteLabel => 'Хвилини';

  @override
  String get timePickerMinuteModeAnnouncement => 'Виберіть хвилини';

  @override
  String get unspecifiedDate => 'Дата';

  @override
  String get unspecifiedDateRange => 'Діапазон дат';

  @override
  String get viewLicensesButtonLabel => 'ПЕРЕГЛЯНУТИ ЛІЦЕНЗІЇ';
}

/// The translations for Urdu (`ur`).
class MaterialLocalizationUr extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Urdu.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationUr({
    super.localeName = 'ur',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName کے بارے میں';

  @override
  String get alertDialogLabel => 'الرٹ';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'پیچھے';

  @override
  String get calendarModeButtonLabel => 'کیلنڈر پر سوئچ کریں';

  @override
  String get cancelButtonLabel => 'منسوخ کریں';

  @override
  String get closeButtonLabel => 'بند کریں';

  @override
  String get closeButtonTooltip => 'بند کریں';

  @override
  String get collapsedIconTapHint => 'پھیلائیں';

  @override
  String get continueButtonLabel => 'جاری رکھیں';

  @override
  String get copyButtonLabel => 'کاپی کریں';

  @override
  String get cutButtonLabel => 'کٹ کریں';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => 'تاریخ درج کریں';

  @override
  String get dateOutOfRangeLabel => 'حد سے باہر۔';

  @override
  String get datePickerHelpText => 'تاریخ منتخب کریں';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'تاریخ اختتام $fullDate';

  @override
  String get dateRangeEndLabel => 'تاریخ اختتام';

  @override
  String get dateRangePickerHelpText => 'حد منتخب کریں';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'تاریخ آغاز $fullDate';

  @override
  String get dateRangeStartLabel => 'تاریخ آغاز';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'حذف کریں';

  @override
  String get dialModeButtonLabel => 'ڈائل منتخب کنندہ وضع پر سوئچ کریں';

  @override
  String get dialogLabel => 'ڈائلاگ';

  @override
  String get drawerLabel => 'نیویگیشن مینو';

  @override
  String get expandedIconTapHint => 'سکیڑیں';

  @override
  String get firstPageTooltip => 'پہلا صفحہ';

  @override
  String get hideAccountsLabel => 'اکاؤنٹس چھپائیں';

  @override
  String get inputDateModeButtonLabel => 'ان پٹ پر سوئچ کریں';

  @override
  String get inputTimeModeButtonLabel => 'ٹیکسٹ ان پٹ وضع پر سوئچ کریں';

  @override
  String get invalidDateFormatLabel => 'غلط فارمیٹ۔';

  @override
  String get invalidDateRangeLabel => 'غلط رینج۔';

  @override
  String get invalidTimeLabel => 'درست وقت درج کریں';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => '+ Num';

  @override
  String get keyboardKeyNumpadComma => 'Num ,‎';

  @override
  String get keyboardKeyNumpadDecimal => '. Num';

  @override
  String get keyboardKeyNumpadDivide => 'Num /‎';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =‎';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *‎';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (‎';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )‎';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -‎';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'آخری صفحہ';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 لائسنس';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount لائسنسز';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'لائسنسز';

  @override
  String get menuBarMenuLabel => 'مینو بار کا مینو';

  @override
  String get modalBarrierDismissLabel => 'برخاست کریں';

  @override
  String get moreButtonTooltip => 'مزید';

  @override
  String get nextMonthTooltip => 'اگلا مہینہ';

  @override
  String get nextPageTooltip => 'اگلا صفحہ';

  @override
  String get okButtonLabel => 'ٹھیک ہے';

  @override
  String get openAppDrawerTooltip => 'نیویگیشن مینو کھولیں';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow از $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow $rowCount میں سے تقریباً';

  @override
  String get pasteButtonLabel => 'پیسٹ کریں';

  @override
  String get popupMenuLabel => 'پاپ اپ مینو';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'پچھلا مہینہ';

  @override
  String get previousPageTooltip => 'گزشتہ صفحہ';

  @override
  String get refreshIndicatorSemanticLabel => 'ریفریش کریں';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 حرف باقی ہے';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount حروف باقی ہیں';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'نیچے منتقل کریں';

  @override
  String get reorderItemLeft => 'بائیں منتقل کریں';

  @override
  String get reorderItemRight => 'دائیں منتقل کریں';

  @override
  String get reorderItemToEnd => 'آخر میں منتقل کریں';

  @override
  String get reorderItemToStart => 'شروع میں منتقل کریں';

  @override
  String get reorderItemUp => 'اوپر منتقل کریں';

  @override
  String get rowsPerPageTitle => 'قطاریں فی صفحہ:';

  @override
  String get saveButtonLabel => 'محفوظ کریں';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.tall;

  @override
  String get searchFieldLabel => 'تلاش';

  @override
  String get selectAllButtonLabel => 'سبھی کو منتخب کریں';

  @override
  String get selectYearSemanticsLabel => 'سال منتخب کریں';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 آئٹم منتخب کیا گیا';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount آئٹمز منتخب کیے گئے';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'اکاؤنٹس دکھائیں';

  @override
  String get showMenuTooltip => 'مینو دکھائیں';

  @override
  String get signedInLabel => 'سائن ان کردہ ہے';

  @override
  String get tabLabelRaw => r'$tabCount میں سے $tabIndex ٹیب';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a;

  @override
  String get timePickerDialHelpText => 'وقت منتخب کریں';

  @override
  String get timePickerHourLabel => 'گھنٹہ';

  @override
  String get timePickerHourModeAnnouncement => 'گھنٹے منتخب کریں';

  @override
  String get timePickerInputHelpText => 'وقت درج کریں';

  @override
  String get timePickerMinuteLabel => 'منٹ';

  @override
  String get timePickerMinuteModeAnnouncement => 'منٹ منتخب کریں';

  @override
  String get unspecifiedDate => 'تاریخ';

  @override
  String get unspecifiedDateRange => 'تاریخ کی حد';

  @override
  String get viewLicensesButtonLabel => 'لائسنسز دیکھیں';
}

/// The translations for Uzbek (`uz`).
class MaterialLocalizationUz extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Uzbek.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationUz({
    super.localeName = 'uz',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'$applicationName haqida';

  @override
  String get alertDialogLabel => 'Ogohlantirish';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Orqaga';

  @override
  String get calendarModeButtonLabel => 'Taqvimda ochish';

  @override
  String get cancelButtonLabel => 'BEKOR QILISH';

  @override
  String get closeButtonLabel => 'YOPISH';

  @override
  String get closeButtonTooltip => 'Yopish';

  @override
  String get collapsedIconTapHint => 'Yoyish';

  @override
  String get continueButtonLabel => 'DAVOM ETISH';

  @override
  String get copyButtonLabel => 'Nusxa olish';

  @override
  String get cutButtonLabel => 'Kesib olish';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Sanani kiriting';

  @override
  String get dateOutOfRangeLabel => 'Diapazondan tashqarida.';

  @override
  String get datePickerHelpText => 'SANANI TANLANG';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Tugash sanasi: $fullDate';

  @override
  String get dateRangeEndLabel => 'Tugash sanasi';

  @override
  String get dateRangePickerHelpText => 'ORALIQNI TANLANG';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Boshlanish sanasi: $fullDate';

  @override
  String get dateRangeStartLabel => 'Boshlanish sanasi';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Olib tashlash';

  @override
  String get dialModeButtonLabel => 'Vaqtni burab tanlash rejimi';

  @override
  String get dialogLabel => 'Muloqot oynasi';

  @override
  String get drawerLabel => 'Navigatsiya menyusi';

  @override
  String get expandedIconTapHint => 'Kichraytirish';

  @override
  String get firstPageTooltip => 'Birinchi sahifa';

  @override
  String get hideAccountsLabel => 'Hisoblarni berkitish';

  @override
  String get inputDateModeButtonLabel => 'Mustaqil kiritish';

  @override
  String get inputTimeModeButtonLabel => 'Vaqtni yozib tanlash rejimi';

  @override
  String get invalidDateFormatLabel => 'Yaroqsiz format.';

  @override
  String get invalidDateRangeLabel => 'Yaroqsiz oraliq.';

  @override
  String get invalidTimeLabel => 'Vaqt xato kiritildi';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Keyingi kanal';

  @override
  String get keyboardKeyChannelUp => 'Avvalgi kanal';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Power';

  @override
  String get keyboardKeyPowerOff => 'Power Off';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Boʻsh joy';

  @override
  String get lastPageTooltip => 'Oxirgi sahifa';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 ta litsenziya';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount ta litsenziya';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Litsenziyalar';

  @override
  String get menuBarMenuLabel => 'Menyu paneli';

  @override
  String get modalBarrierDismissLabel => 'Yopish';

  @override
  String get moreButtonTooltip => 'Yana';

  @override
  String get nextMonthTooltip => 'Keyingi oy';

  @override
  String get nextPageTooltip => 'Keyingi sahifa';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Navigatsiya menyusini ochish';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow, jami: $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow, jami: $rowCount';

  @override
  String get pasteButtonLabel => 'Joylash';

  @override
  String get popupMenuLabel => 'Pop-ap menyusi';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Avvalgi oy';

  @override
  String get previousPageTooltip => 'Avvalgi sahifa';

  @override
  String get refreshIndicatorSemanticLabel => 'Yangilash';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 ta belgi qoldi';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount ta belgi qoldi';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Pastga siljitish';

  @override
  String get reorderItemLeft => 'Chapga siljitish';

  @override
  String get reorderItemRight => 'Oʻngga siljitish';

  @override
  String get reorderItemToEnd => 'Oxiriga siljitish';

  @override
  String get reorderItemToStart => 'Boshiga siljitish';

  @override
  String get reorderItemUp => 'Tepaga siljitish';

  @override
  String get rowsPerPageTitle => 'Har bir sahifadagi qatorlar soni:';

  @override
  String get saveButtonLabel => 'SAQLASH';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Qidirish';

  @override
  String get selectAllButtonLabel => 'Hammasi';

  @override
  String get selectYearSemanticsLabel => 'Yilni tanlang';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 ta element tanlandi';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount ta element tanlandi';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Hisoblarni koʻrsatish';

  @override
  String get showMenuTooltip => 'Menyuni koʻrsatish';

  @override
  String get signedInLabel => 'Hisobingizga kirgansiz';

  @override
  String get tabLabelRaw => r'$tabCount varaqdan $tabIndex';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'VAQTNI TANLANG';

  @override
  String get timePickerHourLabel => 'Soat';

  @override
  String get timePickerHourModeAnnouncement => 'Soatni tanlang';

  @override
  String get timePickerInputHelpText => 'VAQTNI KIRITING';

  @override
  String get timePickerMinuteLabel => 'Daqiqa';

  @override
  String get timePickerMinuteModeAnnouncement => 'Daqiqani tanlang';

  @override
  String get unspecifiedDate => 'Sana';

  @override
  String get unspecifiedDateRange => 'Sana oraligʻi';

  @override
  String get viewLicensesButtonLabel => 'Litsenziyalarni koʻrish';
}

/// The translations for Vietnamese (`vi`).
class MaterialLocalizationVi extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Vietnamese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationVi({
    super.localeName = 'vi',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Giới thiệu về $applicationName';

  @override
  String get alertDialogLabel => 'Thông báo';

  @override
  String get anteMeridiemAbbreviation => 'SÁNG';

  @override
  String get backButtonTooltip => 'Quay lại';

  @override
  String get calendarModeButtonLabel => 'Chuyển sang lịch';

  @override
  String get cancelButtonLabel => 'HỦY';

  @override
  String get closeButtonLabel => 'ĐÓNG';

  @override
  String get closeButtonTooltip => 'Đóng';

  @override
  String get collapsedIconTapHint => 'Mở rộng';

  @override
  String get continueButtonLabel => 'TIẾP TỤC';

  @override
  String get copyButtonLabel => 'Sao chép';

  @override
  String get cutButtonLabel => 'Cắt';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Nhập ngày';

  @override
  String get dateOutOfRangeLabel => 'Ngoài phạm vi.';

  @override
  String get datePickerHelpText => 'CHỌN NGÀY';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Ngày kết thúc $fullDate';

  @override
  String get dateRangeEndLabel => 'Ngày kết thúc';

  @override
  String get dateRangePickerHelpText => 'CHỌN PHẠM VI';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Ngày bắt đầu $fullDate';

  @override
  String get dateRangeStartLabel => 'Ngày bắt đầu';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => 'Xóa';

  @override
  String get dialModeButtonLabel => 'Chuyển sang chế độ chọn mặt đồng hồ';

  @override
  String get dialogLabel => 'Hộp thoại';

  @override
  String get drawerLabel => 'Menu di chuyển';

  @override
  String get expandedIconTapHint => 'Thu gọn';

  @override
  String get firstPageTooltip => 'Trang đầu';

  @override
  String get hideAccountsLabel => 'Ẩn tài khoản';

  @override
  String get inputDateModeButtonLabel => 'Chuyển sang chế độ nhập';

  @override
  String get inputTimeModeButtonLabel => 'Chuyển sang chế độ nhập văn bản';

  @override
  String get invalidDateFormatLabel => 'Định dạng không hợp lệ.';

  @override
  String get invalidDateRangeLabel => 'Phạm vi không hợp lệ.';

  @override
  String get invalidTimeLabel => 'Nhập thời gian hợp lệ';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Giảm kênh';

  @override
  String get keyboardKeyChannelUp => 'Tăng kênh';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Phím số 0';

  @override
  String get keyboardKeyNumpad1 => 'Phím số 1';

  @override
  String get keyboardKeyNumpad2 => 'Phím số 2';

  @override
  String get keyboardKeyNumpad3 => 'Phím số 3';

  @override
  String get keyboardKeyNumpad4 => 'Phím số 4';

  @override
  String get keyboardKeyNumpad5 => 'Phím số 5';

  @override
  String get keyboardKeyNumpad6 => 'Phím số 6';

  @override
  String get keyboardKeyNumpad7 => 'Phím số 7';

  @override
  String get keyboardKeyNumpad8 => 'Phím số 8';

  @override
  String get keyboardKeyNumpad9 => 'Phím số 9';

  @override
  String get keyboardKeyNumpadAdd => 'Phím +';

  @override
  String get keyboardKeyNumpadComma => 'Phím ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Phím .';

  @override
  String get keyboardKeyNumpadDivide => 'Phím /';

  @override
  String get keyboardKeyNumpadEnter => 'Phím Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Phím =';

  @override
  String get keyboardKeyNumpadMultiply => 'Phím *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Phím (';

  @override
  String get keyboardKeyNumpadParenRight => 'Phím )';

  @override
  String get keyboardKeyNumpadSubtract => 'Phím -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Nguồn';

  @override
  String get keyboardKeyPowerOff => 'Tắt nguồn';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => 'Phím cách';

  @override
  String get lastPageTooltip => 'Trang cuối';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 giấy phép';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount giấy phép';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Giấy phép';

  @override
  String get menuBarMenuLabel => 'Trình đơn của thanh trình đơn';

  @override
  String get modalBarrierDismissLabel => 'Bỏ qua';

  @override
  String get moreButtonTooltip => 'Thêm';

  @override
  String get nextMonthTooltip => 'Tháng sau';

  @override
  String get nextPageTooltip => 'Trang tiếp theo';

  @override
  String get okButtonLabel => 'OK';

  @override
  String get openAppDrawerTooltip => 'Mở menu di chuyển';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow trong tổng số $rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow trong tổng số khoảng $rowCount';

  @override
  String get pasteButtonLabel => 'Dán';

  @override
  String get popupMenuLabel => 'Menu bật lên';

  @override
  String get postMeridiemAbbreviation => 'CHIỀU';

  @override
  String get previousMonthTooltip => 'Tháng trước';

  @override
  String get previousPageTooltip => 'Trang trước';

  @override
  String get refreshIndicatorSemanticLabel => 'Làm mới';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => 'Còn lại 1 ký tự';

  @override
  String get remainingTextFieldCharacterCountOther => r'Còn lại $remainingCount ký tự';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => 'Di chuyển xuống';

  @override
  String get reorderItemLeft => 'Di chuyển sang trái';

  @override
  String get reorderItemRight => 'Di chuyển sang phải';

  @override
  String get reorderItemToEnd => 'Di chuyển xuống cuối danh sách';

  @override
  String get reorderItemToStart => 'Di chuyển lên đầu danh sách';

  @override
  String get reorderItemUp => 'Di chuyển lên';

  @override
  String get rowsPerPageTitle => 'Số hàng mỗi trang:';

  @override
  String get saveButtonLabel => 'LƯU';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Tìm kiếm';

  @override
  String get selectAllButtonLabel => 'Chọn tất cả';

  @override
  String get selectYearSemanticsLabel => 'Chọn năm';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => 'Đã chọn 1 mục';

  @override
  String get selectedRowCountTitleOther => r'Đã chọn $selectedRowCount mục';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Hiển thị tài khoản';

  @override
  String get showMenuTooltip => 'Hiển thị menu';

  @override
  String get signedInLabel => 'Đã đăng nhập';

  @override
  String get tabLabelRaw => r'Tab $tabIndex trong tổng số $tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.HH_colon_mm;

  @override
  String get timePickerDialHelpText => 'CHỌN THỜI GIAN';

  @override
  String get timePickerHourLabel => 'Giờ';

  @override
  String get timePickerHourModeAnnouncement => 'Chọn giờ';

  @override
  String get timePickerInputHelpText => 'NHẬP THỜI GIAN';

  @override
  String get timePickerMinuteLabel => 'Phút';

  @override
  String get timePickerMinuteModeAnnouncement => 'Chọn phút';

  @override
  String get unspecifiedDate => 'Ngày';

  @override
  String get unspecifiedDateRange => 'Phạm vi ngày';

  @override
  String get viewLicensesButtonLabel => 'XEM GIẤY PHÉP';
}

/// The translations for Chinese (`zh`).
class MaterialLocalizationZh extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Chinese.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationZh({
    super.localeName = 'zh',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'关于$applicationName';

  @override
  String get alertDialogLabel => '提醒';

  @override
  String get anteMeridiemAbbreviation => '上午';

  @override
  String get backButtonTooltip => '返回';

  @override
  String get calendarModeButtonLabel => '切换到日历模式';

  @override
  String get cancelButtonLabel => '取消';

  @override
  String get closeButtonLabel => '关闭';

  @override
  String get closeButtonTooltip => '关闭';

  @override
  String get collapsedIconTapHint => '展开';

  @override
  String get continueButtonLabel => '继续';

  @override
  String get copyButtonLabel => '复制';

  @override
  String get cutButtonLabel => '剪切';

  @override
  String get dateHelpText => 'yyyy/mm/dd';

  @override
  String get dateInputLabel => '输入日期';

  @override
  String get dateOutOfRangeLabel => '超出范围。';

  @override
  String get datePickerHelpText => '选择日期';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'结束日期为 $fullDate';

  @override
  String get dateRangeEndLabel => '结束日期';

  @override
  String get dateRangePickerHelpText => '选择范围';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'开始日期为 $fullDate';

  @override
  String get dateRangeStartLabel => '开始日期';

  @override
  String get dateSeparator => '/';

  @override
  String get deleteButtonTooltip => '删除';

  @override
  String get dialModeButtonLabel => '切换到表盘选择器模式';

  @override
  String get dialogLabel => '对话框';

  @override
  String get drawerLabel => '导航菜单';

  @override
  String get expandedIconTapHint => '收起';

  @override
  String get firstPageTooltip => '第一页';

  @override
  String get hideAccountsLabel => '隐藏帐号';

  @override
  String get inputDateModeButtonLabel => '切换到输入模式';

  @override
  String get inputTimeModeButtonLabel => '切换到文本输入模式';

  @override
  String get invalidDateFormatLabel => '格式无效。';

  @override
  String get invalidDateRangeLabel => '范围无效。';

  @override
  String get invalidTimeLabel => '请输入有效的时间';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => '退格键';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'Channel Down';

  @override
  String get keyboardKeyChannelUp => 'Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => '弹出';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'Meta';

  @override
  String get keyboardKeyMetaMacOs => '⌘';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => '数字键盘 0';

  @override
  String get keyboardKeyNumpad1 => '数字键盘 1';

  @override
  String get keyboardKeyNumpad2 => '数字键盘 2';

  @override
  String get keyboardKeyNumpad3 => '数字键盘 3';

  @override
  String get keyboardKeyNumpad4 => '数字键盘 4';

  @override
  String get keyboardKeyNumpad5 => '数字键盘 5';

  @override
  String get keyboardKeyNumpad6 => '数字键盘 6';

  @override
  String get keyboardKeyNumpad7 => '数字键盘 7';

  @override
  String get keyboardKeyNumpad8 => '数字键盘 8';

  @override
  String get keyboardKeyNumpad9 => '数字键盘 9';

  @override
  String get keyboardKeyNumpadAdd => '数字键盘 +';

  @override
  String get keyboardKeyNumpadComma => '数字键盘 ,';

  @override
  String get keyboardKeyNumpadDecimal => '数字键盘 .';

  @override
  String get keyboardKeyNumpadDivide => '数字键盘 /';

  @override
  String get keyboardKeyNumpadEnter => '数字键盘 Enter';

  @override
  String get keyboardKeyNumpadEqual => '数字键盘 =';

  @override
  String get keyboardKeyNumpadMultiply => '数字键盘 *';

  @override
  String get keyboardKeyNumpadParenLeft => '数字键盘 (';

  @override
  String get keyboardKeyNumpadParenRight => '数字键盘 )';

  @override
  String get keyboardKeyNumpadSubtract => '数字键盘 -';

  @override
  String get keyboardKeyPageDown => 'PgDn';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => '电源';

  @override
  String get keyboardKeyPowerOff => '关机';

  @override
  String get keyboardKeyPrintScreen => 'Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => '选择';

  @override
  String get keyboardKeySpace => '空格键';

  @override
  String get lastPageTooltip => '最后一页';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => '1 份许可';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount 份许可';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => '许可';

  @override
  String get menuBarMenuLabel => '菜单栏的菜单';

  @override
  String get modalBarrierDismissLabel => '关闭';

  @override
  String get moreButtonTooltip => '更多';

  @override
  String get nextMonthTooltip => '下个月';

  @override
  String get nextPageTooltip => '下一页';

  @override
  String get okButtonLabel => '确定';

  @override
  String get openAppDrawerTooltip => '打开导航菜单';

  @override
  String get pageRowsInfoTitleRaw => r'第 $firstRow-$lastRow 行（共 $rowCount 行）';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'第 $firstRow-$lastRow 行（共约 $rowCount 行）';

  @override
  String get pasteButtonLabel => '粘贴';

  @override
  String get popupMenuLabel => '弹出菜单';

  @override
  String get postMeridiemAbbreviation => '下午';

  @override
  String get previousMonthTooltip => '上个月';

  @override
  String get previousPageTooltip => '上一页';

  @override
  String get refreshIndicatorSemanticLabel => '刷新';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '还可输入 1 个字符';

  @override
  String get remainingTextFieldCharacterCountOther => r'还可输入 $remainingCount 个字符';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => 'TBD';

  @override
  String get reorderItemDown => '下移';

  @override
  String get reorderItemLeft => '左移';

  @override
  String get reorderItemRight => '右移';

  @override
  String get reorderItemToEnd => '移到末尾';

  @override
  String get reorderItemToStart => '移到开头';

  @override
  String get reorderItemUp => '上移';

  @override
  String get rowsPerPageTitle => '每页行数：';

  @override
  String get saveButtonLabel => '保存';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.dense;

  @override
  String get searchFieldLabel => '搜索';

  @override
  String get selectAllButtonLabel => '全选';

  @override
  String get selectYearSemanticsLabel => '选择年份';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '已选择 1 项内容';

  @override
  String get selectedRowCountTitleOther => r'已选择 $selectedRowCount 项内容';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => '显示帐号';

  @override
  String get showMenuTooltip => '显示菜单';

  @override
  String get signedInLabel => '已登录';

  @override
  String get tabLabelRaw => r'第 $tabIndex 个标签，共 $tabCount 个';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.a_space_h_colon_mm;

  @override
  String get timePickerDialHelpText => '选择时间';

  @override
  String get timePickerHourLabel => '小时';

  @override
  String get timePickerHourModeAnnouncement => '选择小时';

  @override
  String get timePickerInputHelpText => '输入时间';

  @override
  String get timePickerMinuteLabel => '分钟';

  @override
  String get timePickerMinuteModeAnnouncement => '选择分钟';

  @override
  String get unspecifiedDate => '日期';

  @override
  String get unspecifiedDateRange => '日期范围';

  @override
  String get viewLicensesButtonLabel => '查看许可';
}

/// The translations for Chinese, using the Han script (`zh_Hans`).
class MaterialLocalizationZhHans extends MaterialLocalizationZh {
  /// Create an instance of the translation bundle for Chinese, using the Han script.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationZhHans({
    super.localeName = 'zh_Hans',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });
}

/// The translations for Chinese, using the Han script (`zh_Hant`).
class MaterialLocalizationZhHant extends MaterialLocalizationZh {
  /// Create an instance of the translation bundle for Chinese, using the Han script.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationZhHant({
    super.localeName = 'zh_Hant',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'關於$applicationName';

  @override
  String get alertDialogLabel => '通知';

  @override
  String get calendarModeButtonLabel => '切換至日曆';

  @override
  String get closeButtonLabel => '關閉';

  @override
  String get closeButtonTooltip => '關閉';

  @override
  String get collapsedIconTapHint => '展開';

  @override
  String get continueButtonLabel => '繼續';

  @override
  String get copyButtonLabel => '複製';

  @override
  String get cutButtonLabel => '剪下';

  @override
  String get dateHelpText => 'dd/mm/yyyy';

  @override
  String get dateInputLabel => '輸入日期';

  @override
  String get dateOutOfRangeLabel => '超出範圍。';

  @override
  String get datePickerHelpText => '選取日期';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'結束日期係 $fullDate';

  @override
  String get dateRangeEndLabel => '結束日期';

  @override
  String get dateRangePickerHelpText => '選取範圍';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'開始日期係 $fullDate';

  @override
  String get dateRangeStartLabel => '開始日期';

  @override
  String get deleteButtonTooltip => '刪除';

  @override
  String get dialModeButtonLabel => '切換至鐘面點選器模式';

  @override
  String get dialogLabel => '對話方塊';

  @override
  String get drawerLabel => '導覽選單';

  @override
  String get expandedIconTapHint => '收合';

  @override
  String get firstPageTooltip => '第一頁';

  @override
  String get hideAccountsLabel => '隱藏帳戶';

  @override
  String get inputDateModeButtonLabel => '切換至輸入';

  @override
  String get inputTimeModeButtonLabel => '切換至文字輸入模式';

  @override
  String get invalidDateFormatLabel => '格式無效。';

  @override
  String get invalidDateRangeLabel => '範圍無效。';

  @override
  String get invalidTimeLabel => '請輸入有效的時間';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyChannelDown => '下一個頻道';

  @override
  String get keyboardKeyChannelUp => '上一個頻道';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyNumpad0 => '數字鍵盤 0';

  @override
  String get keyboardKeyNumpad1 => '數字鍵盤 1';

  @override
  String get keyboardKeyNumpad2 => '數字鍵盤 2';

  @override
  String get keyboardKeyNumpad3 => '數字鍵盤 3';

  @override
  String get keyboardKeyNumpad4 => '數字鍵盤 4';

  @override
  String get keyboardKeyNumpad5 => '數字鍵盤 5';

  @override
  String get keyboardKeyNumpad6 => '數字鍵盤 6';

  @override
  String get keyboardKeyNumpad7 => '數字鍵盤 7';

  @override
  String get keyboardKeyNumpad8 => '數字鍵盤 8';

  @override
  String get keyboardKeyNumpad9 => '數字鍵盤 9';

  @override
  String get keyboardKeyNumpadAdd => '數字鍵盤 +';

  @override
  String get keyboardKeyNumpadComma => '數字鍵盤 ,';

  @override
  String get keyboardKeyNumpadDecimal => '數字鍵盤 .';

  @override
  String get keyboardKeyNumpadDivide => '數字鍵盤 /';

  @override
  String get keyboardKeyNumpadEnter => '數字鍵盤 Enter';

  @override
  String get keyboardKeyNumpadEqual => '數字鍵盤 =';

  @override
  String get keyboardKeyNumpadMultiply => '數字鍵盤 *';

  @override
  String get keyboardKeyNumpadParenLeft => '數字鍵盤 (';

  @override
  String get keyboardKeyNumpadParenRight => '數字鍵盤 )';

  @override
  String get keyboardKeyNumpadSubtract => '數字鍵盤 -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPower => '電源';

  @override
  String get keyboardKeyPowerOff => '關機';

  @override
  String get keyboardKeySelect => 'Select';

  @override
  String get keyboardKeySpace => '空格';

  @override
  String get lastPageTooltip => '最後一頁';

  @override
  String? get licensesPackageDetailTextOne => '1 項授權';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount 項授權';

  @override
  String get licensesPageTitle => '授權';

  @override
  String get menuBarMenuLabel => '選單列選單';

  @override
  String get modalBarrierDismissLabel => '拒絕';

  @override
  String get nextMonthTooltip => '下個月';

  @override
  String get nextPageTooltip => '下一頁';

  @override
  String get okButtonLabel => '確定';

  @override
  String get openAppDrawerTooltip => '開啟導覽選單';

  @override
  String get pageRowsInfoTitleRaw => r'第 $firstRow 至 $lastRow 列，共 $rowCount 列';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'第 $firstRow 至 $lastRow 列，共約 $rowCount 列';

  @override
  String get pasteButtonLabel => '貼上';

  @override
  String get popupMenuLabel => '彈出式選單';

  @override
  String get previousMonthTooltip => '上個月';

  @override
  String get previousPageTooltip => '上一頁';

  @override
  String get refreshIndicatorSemanticLabel => '重新整理';

  @override
  String? get remainingTextFieldCharacterCountOne => '尚餘 1 個字元';

  @override
  String get remainingTextFieldCharacterCountOther => r'尚餘 $remainingCount 個字元';

  @override
  String get reorderItemDown => '向下移';

  @override
  String get reorderItemLeft => '向左移';

  @override
  String get reorderItemRight => '向右移';

  @override
  String get reorderItemToEnd => '移到最後';

  @override
  String get reorderItemToStart => '移到開頭';

  @override
  String get reorderItemUp => '向上移';

  @override
  String get rowsPerPageTitle => '每頁列數：';

  @override
  String get saveButtonLabel => '儲存';

  @override
  String get searchFieldLabel => '搜尋';

  @override
  String get selectAllButtonLabel => '全部選取';

  @override
  String get selectYearSemanticsLabel => '揀年份';

  @override
  String? get selectedRowCountTitleOne => '已選取 1 個項目';

  @override
  String get selectedRowCountTitleOther => r'已選取 $selectedRowCount 個項目';

  @override
  String get showAccountsLabel => '顯示帳戶';

  @override
  String get showMenuTooltip => '顯示選單';

  @override
  String get signedInLabel => '已登入';

  @override
  String get tabLabelRaw => r'第 $tabIndex 個標籤，總共 $tabCount 個';

  @override
  String get timePickerDialHelpText => '選取時間';

  @override
  String get timePickerHourLabel => '小時';

  @override
  String get timePickerHourModeAnnouncement => '揀選小時';

  @override
  String get timePickerInputHelpText => '輸入時間';

  @override
  String get timePickerMinuteLabel => '分鐘';

  @override
  String get timePickerMinuteModeAnnouncement => '揀選分鐘';

  @override
  String get unspecifiedDateRange => '日期範圍';

  @override
  String get viewLicensesButtonLabel => '查看授權';
}

/// The translations for Chinese, as used in Hong Kong, using the Han script (`zh_Hant_HK`).
class MaterialLocalizationZhHantHk extends MaterialLocalizationZhHant {
  /// Create an instance of the translation bundle for Chinese, as used in Hong Kong, using the Han script.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationZhHantHk({
    super.localeName = 'zh_Hant_HK',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });
}

/// The translations for Chinese, as used in Taiwan, using the Han script (`zh_Hant_TW`).
class MaterialLocalizationZhHantTw extends MaterialLocalizationZhHant {
  /// Create an instance of the translation bundle for Chinese, as used in Taiwan, using the Han script.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationZhHantTw({
    super.localeName = 'zh_Hant_TW',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get dialModeButtonLabel => '切換至鐘面挑選器模式';

  @override
  String? get licensesPackageDetailTextOne => '1 個授權';

  @override
  String get timePickerHourLabel => '時';

  @override
  String get timePickerMinuteLabel => '分';

  @override
  String get licensesPackageDetailTextOther => r'$licenseCount 個授權';

  @override
  String get calendarModeButtonLabel => '切換到日曆模式';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'結束日期為 $fullDate';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'開始日期為 $fullDate';

  @override
  String get inputDateModeButtonLabel => '切換到輸入模式';

  @override
  String get selectYearSemanticsLabel => '選取年份';

  @override
  String get dateHelpText => 'yyyy/mm/dd';

  @override
  String get tabLabelRaw => r'第 $tabIndex 個分頁 (共 $tabCount 個)';

  @override
  String get modalBarrierDismissLabel => '關閉';

  @override
  String get signedInLabel => '已登入帳戶';

  @override
  String get aboutListTileTitleRaw => r'關於「$applicationName」';

  @override
  String get pageRowsInfoTitleRaw => r'第 $firstRow - $lastRow 列 (總共 $rowCount 列)';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'第 $firstRow - $lastRow 列 (總共約 $rowCount 列)';

  @override
  String get selectAllButtonLabel => '全選';

  @override
  String get timePickerHourModeAnnouncement => '選取小時數';

  @override
  String get timePickerMinuteModeAnnouncement => '選取分鐘數';

  @override
  String get alertDialogLabel => '快訊';

  @override
  String get reorderItemToStart => '移至開頭';

  @override
  String get reorderItemToEnd => '移至結尾';

  @override
  String? get remainingTextFieldCharacterCountOne => '還可輸入 1 個字元';

  @override
  String get remainingTextFieldCharacterCountOther => r'還可輸入 $remainingCount 個字元';
}

/// The translations for Zulu (`zu`).
class MaterialLocalizationZu extends GlobalMaterialLocalizations {
  /// Create an instance of the translation bundle for Zulu.
  ///
  /// For details on the meaning of the arguments, see [GlobalMaterialLocalizations].
  const MaterialLocalizationZu({
    super.localeName = 'zu',
    required super.fullYearFormat,
    required super.compactDateFormat,
    required super.shortDateFormat,
    required super.mediumDateFormat,
    required super.longDateFormat,
    required super.yearMonthFormat,
    required super.shortMonthDayFormat,
    required super.decimalFormat,
    required super.twoDigitZeroPaddedFormat,
  });

  @override
  String get aboutListTileTitleRaw => r'Mayelana no-$applicationName';

  @override
  String get alertDialogLabel => 'Isexwayiso';

  @override
  String get anteMeridiemAbbreviation => 'AM';

  @override
  String get backButtonTooltip => 'Emuva';

  @override
  String get calendarModeButtonLabel => 'Shintshela kukhalenda';

  @override
  String get cancelButtonLabel => 'KHANSELA';

  @override
  String get closeButtonLabel => 'VALA';

  @override
  String get closeButtonTooltip => 'Vala';

  @override
  String get collapsedIconTapHint => 'Nweba';

  @override
  String get continueButtonLabel => 'QHUBEKA';

  @override
  String get copyButtonLabel => 'Kopisha';

  @override
  String get cutButtonLabel => 'Sika';

  @override
  String get dateHelpText => 'mm/dd/yyyy';

  @override
  String get dateInputLabel => 'Faka idethi';

  @override
  String get dateOutOfRangeLabel => 'Ikude kubanga.';

  @override
  String get datePickerHelpText => 'KHETHA IDETHI';

  @override
  String get dateRangeEndDateSemanticLabelRaw => r'Idethi yokuphela umhla ka-$fullDate';

  @override
  String get dateRangeEndLabel => 'Idethi yokugcina';

  @override
  String get dateRangePickerHelpText => 'KHETHA IBANGA';

  @override
  String get dateRangeStartDateSemanticLabelRaw => r'Idethi yokuqala umhla ka-$fullDate';

  @override
  String get dateRangeStartLabel => 'Idethi yokuqala';

  @override
  String get dateSeparator => '.';

  @override
  String get deleteButtonTooltip => 'Susa';

  @override
  String get dialModeButtonLabel => 'Shintshela kwimodi yesikhi sokudayela';

  @override
  String get dialogLabel => 'Ingxoxo';

  @override
  String get drawerLabel => 'Imenyu yokuzulazula';

  @override
  String get expandedIconTapHint => 'Goqa';

  @override
  String get firstPageTooltip => 'Ikhasi lokuqala';

  @override
  String get hideAccountsLabel => 'Fihla ama-akhawunti';

  @override
  String get inputDateModeButtonLabel => 'Shintshela kokokufaka';

  @override
  String get inputTimeModeButtonLabel => 'Shintshela kwimodi yokufaka yombhalo';

  @override
  String get invalidDateFormatLabel => 'Ifomethi engavumelekile.';

  @override
  String get invalidDateRangeLabel => 'Ibanga elingavumelekile.';

  @override
  String get invalidTimeLabel => 'Faka igama elivumelekile';

  @override
  String get keyboardKeyAlt => 'Alt';

  @override
  String get keyboardKeyAltGraph => 'AltGr';

  @override
  String get keyboardKeyBackspace => 'Backspace';

  @override
  String get keyboardKeyCapsLock => 'Caps Lock';

  @override
  String get keyboardKeyChannelDown => 'I-Channel Down';

  @override
  String get keyboardKeyChannelUp => 'I-Channel Up';

  @override
  String get keyboardKeyControl => 'Ctrl';

  @override
  String get keyboardKeyDelete => 'Del';

  @override
  String get keyboardKeyEject => 'Eject';

  @override
  String get keyboardKeyEnd => 'End';

  @override
  String get keyboardKeyEscape => 'Esc';

  @override
  String get keyboardKeyFn => 'Fn';

  @override
  String get keyboardKeyHome => 'Home';

  @override
  String get keyboardKeyInsert => 'Insert';

  @override
  String get keyboardKeyMeta => 'I-Meta';

  @override
  String get keyboardKeyMetaMacOs => 'Command';

  @override
  String get keyboardKeyMetaWindows => 'Win';

  @override
  String get keyboardKeyNumLock => 'Num Lock';

  @override
  String get keyboardKeyNumpad0 => 'Num 0';

  @override
  String get keyboardKeyNumpad1 => 'Num 1';

  @override
  String get keyboardKeyNumpad2 => 'Num 2';

  @override
  String get keyboardKeyNumpad3 => 'Num 3';

  @override
  String get keyboardKeyNumpad4 => 'Num 4';

  @override
  String get keyboardKeyNumpad5 => 'Num 5';

  @override
  String get keyboardKeyNumpad6 => 'Num 6';

  @override
  String get keyboardKeyNumpad7 => 'Num 7';

  @override
  String get keyboardKeyNumpad8 => 'Num 8';

  @override
  String get keyboardKeyNumpad9 => 'Num 9';

  @override
  String get keyboardKeyNumpadAdd => 'Num +';

  @override
  String get keyboardKeyNumpadComma => 'Num ,';

  @override
  String get keyboardKeyNumpadDecimal => 'Num .';

  @override
  String get keyboardKeyNumpadDivide => 'Num /';

  @override
  String get keyboardKeyNumpadEnter => 'Num Enter';

  @override
  String get keyboardKeyNumpadEqual => 'Num =';

  @override
  String get keyboardKeyNumpadMultiply => 'Num *';

  @override
  String get keyboardKeyNumpadParenLeft => 'Num (';

  @override
  String get keyboardKeyNumpadParenRight => 'Num )';

  @override
  String get keyboardKeyNumpadSubtract => 'Num -';

  @override
  String get keyboardKeyPageDown => 'PgDown';

  @override
  String get keyboardKeyPageUp => 'PgUp';

  @override
  String get keyboardKeyPower => 'Amandla';

  @override
  String get keyboardKeyPowerOff => 'Cisha';

  @override
  String get keyboardKeyPrintScreen => '-Print Screen';

  @override
  String get keyboardKeyScrollLock => 'Scroll Lock';

  @override
  String get keyboardKeySelect => 'Khetha';

  @override
  String get keyboardKeySpace => 'Space';

  @override
  String get lastPageTooltip => 'Ikhasi lokugcina';

  @override
  String? get licensesPackageDetailTextFew => null;

  @override
  String? get licensesPackageDetailTextMany => null;

  @override
  String? get licensesPackageDetailTextOne => 'ilayisense e-1';

  @override
  String get licensesPackageDetailTextOther => r'amalayisense angu-$licenseCount';

  @override
  String? get licensesPackageDetailTextTwo => null;

  @override
  String? get licensesPackageDetailTextZero => 'No licenses';

  @override
  String get licensesPageTitle => 'Amalayisense';

  @override
  String get menuBarMenuLabel => 'Imenyu yebha yemenyu';

  @override
  String get modalBarrierDismissLabel => 'Cashisa';

  @override
  String get moreButtonTooltip => 'Okuningi';

  @override
  String get nextMonthTooltip => 'Inyanga ezayo';

  @override
  String get nextPageTooltip => 'Ikhasi elilandelayo';

  @override
  String get okButtonLabel => 'KULUNGILE';

  @override
  String get openAppDrawerTooltip => 'Vula imenyu yokuzulazula';

  @override
  String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow kokungu-$rowCount';

  @override
  String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow cishe kokungu-$rowCount';

  @override
  String get pasteButtonLabel => 'Namathisela';

  @override
  String get popupMenuLabel => 'Imenyu ye-popup';

  @override
  String get postMeridiemAbbreviation => 'PM';

  @override
  String get previousMonthTooltip => 'Inyanga edlule';

  @override
  String get previousPageTooltip => 'Ikhasi elidlule';

  @override
  String get refreshIndicatorSemanticLabel => 'Vuselela';

  @override
  String? get remainingTextFieldCharacterCountFew => null;

  @override
  String? get remainingTextFieldCharacterCountMany => null;

  @override
  String? get remainingTextFieldCharacterCountOne => '1 uhlamvu olusele';

  @override
  String get remainingTextFieldCharacterCountOther => r'$remainingCount izinhlamvu ezisele';

  @override
  String? get remainingTextFieldCharacterCountTwo => null;

  @override
  String? get remainingTextFieldCharacterCountZero => null;

  @override
  String get reorderItemDown => 'Iya phansi';

  @override
  String get reorderItemLeft => 'Hambisa kwesokunxele';

  @override
  String get reorderItemRight => 'Yisa kwesokudla';

  @override
  String get reorderItemToEnd => 'Yisa ekugcineni';

  @override
  String get reorderItemToStart => 'Yisa ekuqaleni';

  @override
  String get reorderItemUp => 'Iya phezulu';

  @override
  String get rowsPerPageTitle => 'Imigqa ekhasini ngalinye:';

  @override
  String get saveButtonLabel => 'LONDOLOZA';

  @override
  ScriptCategory get scriptCategory => ScriptCategory.englishLike;

  @override
  String get searchFieldLabel => 'Sesha';

  @override
  String get selectAllButtonLabel => 'Khetha konke';

  @override
  String get selectYearSemanticsLabel => 'Khetha unyaka';

  @override
  String? get selectedRowCountTitleFew => null;

  @override
  String? get selectedRowCountTitleMany => null;

  @override
  String? get selectedRowCountTitleOne => '1 into ekhethiwe';

  @override
  String get selectedRowCountTitleOther => r'$selectedRowCount izinto ezikhethiwe';

  @override
  String? get selectedRowCountTitleTwo => null;

  @override
  String? get selectedRowCountTitleZero => null;

  @override
  String get showAccountsLabel => 'Bonisa ama-akhawunti';

  @override
  String get showMenuTooltip => 'Bonisa imenyu';

  @override
  String get signedInLabel => 'Ungene ngemvume';

  @override
  String get tabLabelRaw => r'Ithebhu $tabIndex kwangu-$tabCount';

  @override
  TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.H_colon_mm;

  @override
  String get timePickerDialHelpText => 'KHETHA ISIKHATHI';

  @override
  String get timePickerHourLabel => 'Ihora';

  @override
  String get timePickerHourModeAnnouncement => 'Khetha amahora';

  @override
  String get timePickerInputHelpText => 'FAKA ISIKHATHI';

  @override
  String get timePickerMinuteLabel => 'Iminithi';

  @override
  String get timePickerMinuteModeAnnouncement => 'Khetha amaminithi';

  @override
  String get unspecifiedDate => 'Idethi';

  @override
  String get unspecifiedDateRange => 'Ibanga ledethi';

  @override
  String get viewLicensesButtonLabel => 'Buka amalayisense';
}

/// The set of supported languages, as language code strings.
///
/// The [GlobalMaterialLocalizations.delegate] can generate localizations for
/// any [Locale] with a language code from this set, regardless of the region.
/// Some regions have specific support (e.g. `de` covers all forms of German,
/// but there is support for `de-CH` specifically to override some of the
/// translations for Switzerland).
///
/// See also:
///
///  * [getMaterialTranslation], whose documentation describes these values.
final Set<String> kMaterialSupportedLanguages = HashSet<String>.from(const <String>[
  'af', // Afrikaans
  'am', // Amharic
  'ar', // Arabic
  'as', // Assamese
  'az', // Azerbaijani
  'be', // Belarusian
  'bg', // Bulgarian
  'bn', // Bengali Bangla
  'bs', // Bosnian
  'ca', // Catalan Valencian
  'cs', // Czech
  'da', // Danish
  'de', // German
  'el', // Modern Greek
  'en', // English
  'es', // Spanish Castilian
  'et', // Estonian
  'eu', // Basque
  'fa', // Persian
  'fi', // Finnish
  'fil', // Filipino Pilipino
  'fr', // French
  'gl', // Galician
  'gsw', // Swiss German Alemannic Alsatian
  'gu', // Gujarati
  'he', // Hebrew
  'hi', // Hindi
  'hr', // Croatian
  'hu', // Hungarian
  'hy', // Armenian
  'id', // Indonesian
  'is', // Icelandic
  'it', // Italian
  'ja', // Japanese
  'ka', // Georgian
  'kk', // Kazakh
  'km', // Khmer Central Khmer
  'kn', // Kannada
  'ko', // Korean
  'ky', // Kirghiz Kyrgyz
  'lo', // Lao
  'lt', // Lithuanian
  'lv', // Latvian
  'mk', // Macedonian
  'ml', // Malayalam
  'mn', // Mongolian
  'mr', // Marathi
  'ms', // Malay
  'my', // Burmese
  'nb', // Norwegian Bokmål
  'ne', // Nepali
  'nl', // Dutch Flemish
  'no', // Norwegian
  'or', // Oriya
  'pa', // Panjabi Punjabi
  'pl', // Polish
  'ps', // Pushto Pashto
  'pt', // Portuguese
  'ro', // Romanian Moldavian Moldovan
  'ru', // Russian
  'si', // Sinhala Sinhalese
  'sk', // Slovak
  'sl', // Slovenian
  'sq', // Albanian
  'sr', // Serbian
  'sv', // Swedish
  'sw', // Swahili
  'ta', // Tamil
  'te', // Telugu
  'th', // Thai
  'tl', // Tagalog
  'tr', // Turkish
  'uk', // Ukrainian
  'ur', // Urdu
  'uz', // Uzbek
  'vi', // Vietnamese
  'zh', // Chinese
  'zu', // Zulu
]);

/// Creates a [GlobalMaterialLocalizations] instance for the given `locale`.
///
/// All of the function's arguments except `locale` will be passed to the [
/// GlobalMaterialLocalizations] constructor. (The `localeName` argument of that
/// constructor is specified by the actual subclass constructor by this
/// function.)
///
/// The following locales are supported by this package:
///
/// {@template flutter.localizations.material.languages}
///  * `af` - Afrikaans
///  * `am` - Amharic
///  * `ar` - Arabic
///  * `as` - Assamese
///  * `az` - Azerbaijani
///  * `be` - Belarusian
///  * `bg` - Bulgarian
///  * `bn` - Bengali Bangla
///  * `bs` - Bosnian
///  * `ca` - Catalan Valencian
///  * `cs` - Czech
///  * `da` - Danish
///  * `de` - German (plus one country variation)
///  * `el` - Modern Greek
///  * `en` - English (plus 8 country variations)
///  * `es` - Spanish Castilian (plus 20 country variations)
///  * `et` - Estonian
///  * `eu` - Basque
///  * `fa` - Persian
///  * `fi` - Finnish
///  * `fil` - Filipino Pilipino
///  * `fr` - French (plus one country variation)
///  * `gl` - Galician
///  * `gsw` - Swiss German Alemannic Alsatian
///  * `gu` - Gujarati
///  * `he` - Hebrew
///  * `hi` - Hindi
///  * `hr` - Croatian
///  * `hu` - Hungarian
///  * `hy` - Armenian
///  * `id` - Indonesian
///  * `is` - Icelandic
///  * `it` - Italian
///  * `ja` - Japanese
///  * `ka` - Georgian
///  * `kk` - Kazakh
///  * `km` - Khmer Central Khmer
///  * `kn` - Kannada
///  * `ko` - Korean
///  * `ky` - Kirghiz Kyrgyz
///  * `lo` - Lao
///  * `lt` - Lithuanian
///  * `lv` - Latvian
///  * `mk` - Macedonian
///  * `ml` - Malayalam
///  * `mn` - Mongolian
///  * `mr` - Marathi
///  * `ms` - Malay
///  * `my` - Burmese
///  * `nb` - Norwegian Bokmål
///  * `ne` - Nepali
///  * `nl` - Dutch Flemish
///  * `no` - Norwegian
///  * `or` - Oriya
///  * `pa` - Panjabi Punjabi
///  * `pl` - Polish
///  * `ps` - Pushto Pashto
///  * `pt` - Portuguese (plus one country variation)
///  * `ro` - Romanian Moldavian Moldovan
///  * `ru` - Russian
///  * `si` - Sinhala Sinhalese
///  * `sk` - Slovak
///  * `sl` - Slovenian
///  * `sq` - Albanian
///  * `sr` - Serbian (plus 2 scripts)
///  * `sv` - Swedish
///  * `sw` - Swahili
///  * `ta` - Tamil
///  * `te` - Telugu
///  * `th` - Thai
///  * `tl` - Tagalog
///  * `tr` - Turkish
///  * `uk` - Ukrainian
///  * `ur` - Urdu
///  * `uz` - Uzbek
///  * `vi` - Vietnamese
///  * `zh` - Chinese (plus 2 country variations and 2 scripts)
///  * `zu` - Zulu
/// {@endtemplate}
///
/// Generally speaking, this method is only intended to be used by
/// [GlobalMaterialLocalizations.delegate].
GlobalMaterialLocalizations? getMaterialTranslation(
  Locale locale,
  intl.DateFormat fullYearFormat,
  intl.DateFormat compactDateFormat,
  intl.DateFormat shortDateFormat,
  intl.DateFormat mediumDateFormat,
  intl.DateFormat longDateFormat,
  intl.DateFormat yearMonthFormat,
  intl.DateFormat shortMonthDayFormat,
  intl.NumberFormat decimalFormat,
  intl.NumberFormat twoDigitZeroPaddedFormat,
) {
  switch (locale.languageCode) {
    case 'af':
      return MaterialLocalizationAf(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'am':
      return MaterialLocalizationAm(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ar':
      return MaterialLocalizationAr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'as':
      return MaterialLocalizationAs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'az':
      return MaterialLocalizationAz(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'be':
      return MaterialLocalizationBe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'bg':
      return MaterialLocalizationBg(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'bn':
      return MaterialLocalizationBn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'bs':
      return MaterialLocalizationBs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ca':
      return MaterialLocalizationCa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'cs':
      return MaterialLocalizationCs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'da':
      return MaterialLocalizationDa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'de': {
      switch (locale.countryCode) {
        case 'CH':
          return MaterialLocalizationDeCh(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
      }
      return MaterialLocalizationDe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'el':
      return MaterialLocalizationEl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'en': {
      switch (locale.countryCode) {
        case 'AU':
          return MaterialLocalizationEnAu(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'CA':
          return MaterialLocalizationEnCa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'GB':
          return MaterialLocalizationEnGb(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'IE':
          return MaterialLocalizationEnIe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'IN':
          return MaterialLocalizationEnIn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'NZ':
          return MaterialLocalizationEnNz(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'SG':
          return MaterialLocalizationEnSg(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'ZA':
          return MaterialLocalizationEnZa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
      }
      return MaterialLocalizationEn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'es': {
      switch (locale.countryCode) {
        case '419':
          return MaterialLocalizationEs419(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'AR':
          return MaterialLocalizationEsAr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'BO':
          return MaterialLocalizationEsBo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'CL':
          return MaterialLocalizationEsCl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'CO':
          return MaterialLocalizationEsCo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'CR':
          return MaterialLocalizationEsCr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'DO':
          return MaterialLocalizationEsDo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'EC':
          return MaterialLocalizationEsEc(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'GT':
          return MaterialLocalizationEsGt(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'HN':
          return MaterialLocalizationEsHn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'MX':
          return MaterialLocalizationEsMx(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'NI':
          return MaterialLocalizationEsNi(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'PA':
          return MaterialLocalizationEsPa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'PE':
          return MaterialLocalizationEsPe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'PR':
          return MaterialLocalizationEsPr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'PY':
          return MaterialLocalizationEsPy(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'SV':
          return MaterialLocalizationEsSv(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'US':
          return MaterialLocalizationEsUs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'UY':
          return MaterialLocalizationEsUy(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'VE':
          return MaterialLocalizationEsVe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
      }
      return MaterialLocalizationEs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'et':
      return MaterialLocalizationEt(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'eu':
      return MaterialLocalizationEu(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'fa':
      return MaterialLocalizationFa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'fi':
      return MaterialLocalizationFi(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'fil':
      return MaterialLocalizationFil(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'fr': {
      switch (locale.countryCode) {
        case 'CA':
          return MaterialLocalizationFrCa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
      }
      return MaterialLocalizationFr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'gl':
      return MaterialLocalizationGl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'gsw':
      return MaterialLocalizationGsw(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'gu':
      return MaterialLocalizationGu(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'he':
      return MaterialLocalizationHe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'hi':
      return MaterialLocalizationHi(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'hr':
      return MaterialLocalizationHr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'hu':
      return MaterialLocalizationHu(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'hy':
      return MaterialLocalizationHy(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'id':
      return MaterialLocalizationId(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'is':
      return MaterialLocalizationIs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'it':
      return MaterialLocalizationIt(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ja':
      return MaterialLocalizationJa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ka':
      return MaterialLocalizationKa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'kk':
      return MaterialLocalizationKk(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'km':
      return MaterialLocalizationKm(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'kn':
      return MaterialLocalizationKn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ko':
      return MaterialLocalizationKo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ky':
      return MaterialLocalizationKy(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'lo':
      return MaterialLocalizationLo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'lt':
      return MaterialLocalizationLt(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'lv':
      return MaterialLocalizationLv(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'mk':
      return MaterialLocalizationMk(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ml':
      return MaterialLocalizationMl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'mn':
      return MaterialLocalizationMn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'mr':
      return MaterialLocalizationMr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ms':
      return MaterialLocalizationMs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'my':
      return MaterialLocalizationMy(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'nb':
      return MaterialLocalizationNb(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ne':
      return MaterialLocalizationNe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'nl':
      return MaterialLocalizationNl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'no':
      return MaterialLocalizationNo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'or':
      return MaterialLocalizationOr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'pa':
      return MaterialLocalizationPa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'pl':
      return MaterialLocalizationPl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ps':
      return MaterialLocalizationPs(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'pt': {
      switch (locale.countryCode) {
        case 'PT':
          return MaterialLocalizationPtPt(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
      }
      return MaterialLocalizationPt(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'ro':
      return MaterialLocalizationRo(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ru':
      return MaterialLocalizationRu(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'si':
      return MaterialLocalizationSi(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'sk':
      return MaterialLocalizationSk(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'sl':
      return MaterialLocalizationSl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'sq':
      return MaterialLocalizationSq(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'sr': {
      switch (locale.scriptCode) {
        case 'Cyrl': {
          return MaterialLocalizationSrCyrl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        }
        case 'Latn': {
          return MaterialLocalizationSrLatn(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        }
      }
      return MaterialLocalizationSr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'sv':
      return MaterialLocalizationSv(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'sw':
      return MaterialLocalizationSw(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ta':
      return MaterialLocalizationTa(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'te':
      return MaterialLocalizationTe(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'th':
      return MaterialLocalizationTh(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'tl':
      return MaterialLocalizationTl(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'tr':
      return MaterialLocalizationTr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'uk':
      return MaterialLocalizationUk(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'ur':
      return MaterialLocalizationUr(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'uz':
      return MaterialLocalizationUz(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'vi':
      return MaterialLocalizationVi(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    case 'zh': {
      switch (locale.scriptCode) {
        case 'Hans': {
          return MaterialLocalizationZhHans(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        }
        case 'Hant': {
          switch (locale.countryCode) {
            case 'HK':
              return MaterialLocalizationZhHantHk(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
            case 'TW':
              return MaterialLocalizationZhHantTw(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
          }
          return MaterialLocalizationZhHant(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        }
      }
      switch (locale.countryCode) {
        case 'HK':
          return MaterialLocalizationZhHantHk(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
        case 'TW':
          return MaterialLocalizationZhHantTw(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
      }
      return MaterialLocalizationZh(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
    }
    case 'zu':
      return MaterialLocalizationZu(fullYearFormat: fullYearFormat, compactDateFormat: compactDateFormat, shortDateFormat: shortDateFormat, mediumDateFormat: mediumDateFormat, longDateFormat: longDateFormat, yearMonthFormat: yearMonthFormat, shortMonthDayFormat: shortMonthDayFormat, decimalFormat: decimalFormat, twoDigitZeroPaddedFormat: twoDigitZeroPaddedFormat);
  }
  assert(false, 'getMaterialTranslation() called for unsupported locale "$locale"');
  return null;
}
