// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'gallery_localizations.dart';

// ignore_for_file: unnecessary_brace_in_string_interps

/// The translations for Filipino Pilipino (`fil`).
class GalleryLocalizationsFil extends GalleryLocalizations {
  GalleryLocalizationsFil([String locale = 'fil']) : super(locale);

  @override
  String githubRepo(Object repoName) {
    return 'Repository ng GitHub ng ${repoName}';
  }

  @override
  String aboutDialogDescription(Object repoLink) {
    return 'Para makita ang source code para sa app na ito, pakibisita ang ${repoLink}.';
  }

  @override
  String get signIn => 'MAG-SIGN IN';

  @override
  String get bannerDemoText =>
      'Na-update ang iyong password sa iba mo pang device. Mag-sign in ulit.';

  @override
  String get bannerDemoResetText => 'I-reset ang banner';

  @override
  String get bannerDemoMultipleText => 'Maraming pagkilos';

  @override
  String get bannerDemoLeadingText => 'Nangungunang Icon';

  @override
  String get dismiss => 'I-DISMISS';

  @override
  String get backToGallery => 'Bumalik sa Gallery';

  @override
  String get cardsDemoTappable => 'Nata-tap';

  @override
  String get cardsDemoSelectable => 'Napipili (matagal na pagpindot)';

  @override
  String get cardsDemoExplore => 'I-explore';

  @override
  String cardsDemoExploreSemantics(Object destinationName) {
    return 'I-explore ang ${destinationName}';
  }

  @override
  String cardsDemoShareSemantics(Object destinationName) {
    return 'Ibahagi ang ${destinationName}';
  }

  @override
  String get cardsDemoTravelDestinationTitle1 =>
      'Nangungunang 10 Lungsod na Mabibisita sa Tamil Nadu';

  @override
  String get cardsDemoTravelDestinationDescription1 => 'Ika-10';

  @override
  String get cardsDemoTravelDestinationCity1 => 'Thanjavur';

  @override
  String get cardsDemoTravelDestinationLocation1 => 'Thanjavur, Tamil Nadu';

  @override
  String get cardsDemoTravelDestinationTitle2 =>
      'Mga Artisan ng Southern India';

  @override
  String get cardsDemoTravelDestinationDescription2 => 'Mga Silk Spinner';

  @override
  String get cardsDemoTravelDestinationCity2 => 'Chettinad';

  @override
  String get cardsDemoTravelDestinationLocation2 => 'Sivaganga, Tamil Nadu';

  @override
  String get cardsDemoTravelDestinationTitle3 => 'Brihadisvara Temple';

  @override
  String get cardsDemoTravelDestinationDescription3 => 'Mga Templo';

  @override
  String get homeHeaderGallery => 'Gallery';

  @override
  String get homeHeaderCategories => 'Mga Kategorya';

  @override
  String get shrineDescription => 'Isang fashionable na retail app';

  @override
  String get fortnightlyDescription =>
      'Isang app ng balita na nakatuon sa content';

  @override
  String get rallyDescription => 'Isang personal na finance app';

  @override
  String get rallyAccountDataChecking => 'Checking';

  @override
  String get rallyAccountDataHomeSavings => 'Mga Ipon sa Bahay';

  @override
  String get rallyAccountDataCarSavings => 'Mga Ipon sa Kotse';

  @override
  String get rallyAccountDataVacation => 'Bakasyon';

  @override
  String get rallyAccountDetailDataAnnualPercentageYield =>
      'Taunang Percentage Yield';

  @override
  String get rallyAccountDetailDataInterestRate => 'Rate ng Interes';

  @override
  String get rallyAccountDetailDataInterestYtd => 'YTD ng Interes';

  @override
  String get rallyAccountDetailDataInterestPaidLastYear =>
      'Interes na Binayaran Noong Nakaraang Taon';

  @override
  String get rallyAccountDetailDataNextStatement => 'Susunod na Pahayag';

  @override
  String get rallyAccountDetailDataAccountOwner => 'May-ari ng Account';

  @override
  String get rallyBillDetailTotalAmount => 'Kabuuang Halaga';

  @override
  String get rallyBillDetailAmountPaid => 'Halagang Ibinayad';

  @override
  String get rallyBillDetailAmountDue => 'Halagang Kailangang Bayaran';

  @override
  String get rallyBudgetCategoryCoffeeShops => 'Mga Kapihan';

  @override
  String get rallyBudgetCategoryGroceries => 'Mga Grocery';

  @override
  String get rallyBudgetCategoryRestaurants => 'Mga Restaurant';

  @override
  String get rallyBudgetCategoryClothing => 'Damit';

  @override
  String get rallyBudgetDetailTotalCap => 'Kabuuang Cap';

  @override
  String get rallyBudgetDetailAmountUsed => 'Halagang Nagamit';

  @override
  String get rallyBudgetDetailAmountLeft => 'Halagang Natitira';

  @override
  String get rallySettingsManageAccounts => 'Pamahalaan ang Mga Account';

  @override
  String get rallySettingsTaxDocuments => 'Mga Dokumento ng Buwis';

  @override
  String get rallySettingsPasscodeAndTouchId => 'Passcode at Touch ID';

  @override
  String get rallySettingsNotifications => 'Mga Notification';

  @override
  String get rallySettingsPersonalInformation => 'Personal na Impormasyon';

  @override
  String get rallySettingsPaperlessSettings => 'Mga Paperless na Setting';

  @override
  String get rallySettingsFindAtms => 'Maghanap ng mga ATM';

  @override
  String get rallySettingsHelp => 'Tulong';

  @override
  String get rallySettingsSignOut => 'Mag-sign out';

  @override
  String get rallyAccountTotal => 'Kabuuan';

  @override
  String get rallyBillsDue => 'Nakatakda';

  @override
  String get rallyBudgetLeft => 'Natitira';

  @override
  String get rallyAccounts => 'Mga Account';

  @override
  String get rallyBills => 'Mga Bill';

  @override
  String get rallyBudgets => 'Mga Badyet';

  @override
  String get rallyAlerts => 'Mga Alerto';

  @override
  String get rallySeeAll => 'TINGNAN LAHAT';

  @override
  String get rallyFinanceLeft => 'NATITIRA';

  @override
  String get rallyTitleOverview => 'PANGKALAHATANG-IDEYA';

  @override
  String get rallyTitleAccounts => 'MGA ACCOUNT';

  @override
  String get rallyTitleBills => 'MGA BILL';

  @override
  String get rallyTitleBudgets => 'MGA BADYET';

  @override
  String get rallyTitleSettings => 'MGA SETTING';

  @override
  String get rallyLoginLoginToRally => 'Mag-log in sa Rally';

  @override
  String get rallyLoginNoAccount => 'Walang account?';

  @override
  String get rallyLoginSignUp => 'MAG-SIGN UP';

  @override
  String get rallyLoginUsername => 'Username';

  @override
  String get rallyLoginPassword => 'Password';

  @override
  String get rallyLoginLabelLogin => 'Mag-log in';

  @override
  String get rallyLoginRememberMe => 'Tandaan Ako';

  @override
  String get rallyLoginButtonLogin => 'MAG-LOG IN';

  @override
  String rallyAlertsMessageHeadsUpShopping(Object percent) {
    return 'Babala, nagamit mo na ang ${percent} ng iyong Badyet sa pamimili para sa buwang ito.';
  }

  @override
  String rallyAlertsMessageSpentOnRestaurants(Object amount) {
    return 'Gumastos ka ng ${amount} sa Mga Restaurant ngayong linggo.';
  }

  @override
  String rallyAlertsMessageATMFees(Object amount) {
    return 'Gumastos ka ng ${amount} sa mga bayarin sa ATM ngayong buwan';
  }

  @override
  String rallyAlertsMessageCheckingAccount(Object percent) {
    return 'Magaling! Mas mataas nang ${percent} ang iyong checking account kaysa sa nakaraang buwan.';
  }

  @override
  String rallyAlertsMessageUnassignedTransactions(int count) {
    return intl.Intl.pluralLogic(
      count,
      locale: localeName,
      one:
          'Lakihan ang puwedeng mabawas sa iyong buwis! Magtalaga ng mga kategorya sa 1 transaksyong hindi nakatalaga.',
      other:
          'Lakihan ang puwedeng mabawas sa iyong buwis! Magtalaga ng mga kategorya sa ${count} na transaksyong hindi nakatalaga.',
    );
  }

  @override
  String get rallySeeAllAccounts => 'Tingnan ang lahat ng account';

  @override
  String get rallySeeAllBills => 'Tingnan ang lahat ng bill';

  @override
  String get rallySeeAllBudgets => 'Tingnan ang lahat ng badyet';

  @override
  String rallyAccountAmount(
      Object accountName, Object accountNumber, Object amount) {
    return '${accountName} account ${accountNumber} na may ${amount}.';
  }

  @override
  String rallyBillAmount(Object billName, Object date, Object amount) {
    return 'Bill sa ${billName} na nagkakahalagang ${amount} na dapat bayaran bago ang ${date}.';
  }

  @override
  String rallyBudgetAmount(Object budgetName, Object amountUsed,
      Object amountTotal, Object amountLeft) {
    return 'Badyet sa ${budgetName} na may nagamit nang ${amountUsed} sa ${amountTotal}, ${amountLeft} ang natitira';
  }

  @override
  String get craneDescription => 'Isang naka-personalize na travel app';

  @override
  String get homeCategoryReference => 'MGA ISTILO AT IBA PA';

  @override
  String get demoInvalidURL => 'Hindi maipakita ang URL:';

  @override
  String get demoOptionsTooltip => 'Mga Opsyon';

  @override
  String get demoInfoTooltip => 'Impormasyon';

  @override
  String get demoCodeTooltip => 'Demo Code';

  @override
  String get demoDocumentationTooltip => 'Dokumentasyon ng API';

  @override
  String get demoFullscreenTooltip => 'Buong Screen';

  @override
  String get demoCodeViewerCopyAll => 'KOPYAHIN LAHAT';

  @override
  String get demoCodeViewerCopiedToClipboardMessage => 'Kinopya sa clipboard.';

  @override
  String demoCodeViewerFailedToCopyToClipboardMessage(Object error) {
    return 'Hindi nakopya sa clipboard: ${error}';
  }

  @override
  String get demoOptionsFeatureTitle => 'Mga opsyon sa view';

  @override
  String get demoOptionsFeatureDescription =>
      'Mag-tap dito para makita ang mga available na opsyon para sa demo na ito.';

  @override
  String get settingsTitle => 'Mga Setting';

  @override
  String get settingsButtonLabel => 'Mga Setting';

  @override
  String get settingsButtonCloseLabel => 'Isara ang mga setting';

  @override
  String get settingsSystemDefault => 'System';

  @override
  String get settingsTextScaling => 'Pagsukat ng text';

  @override
  String get settingsTextScalingSmall => 'Maliit';

  @override
  String get settingsTextScalingNormal => 'Normal';

  @override
  String get settingsTextScalingLarge => 'Malaki';

  @override
  String get settingsTextScalingHuge => 'Napakalaki';

  @override
  String get settingsTextDirection => 'Direksyon ng text';

  @override
  String get settingsTextDirectionLocaleBased => 'Batay sa lokalidad';

  @override
  String get settingsTextDirectionLTR => 'LTR';

  @override
  String get settingsTextDirectionRTL => 'RTL';

  @override
  String get settingsLocale => 'Wika';

  @override
  String get settingsPlatformMechanics => 'Mechanics ng platform';

  @override
  String get settingsTheme => 'Tema';

  @override
  String get settingsDarkTheme => 'Madilim';

  @override
  String get settingsLightTheme => 'Maliwanag';

  @override
  String get settingsSlowMotion => 'Slow motion';

  @override
  String get settingsAbout => 'Tungkol sa Gallery ng Flutter';

  @override
  String get settingsFeedback => 'Magpadala ng feedback';

  @override
  String get settingsAttribution => 'Idinisenyo ng TOASTER sa London';

  @override
  String get demoBottomAppBarTitle => 'Bar ng app sa ibaba';

  @override
  String get demoBottomAppBarSubtitle =>
      'Nagpapakita ng navigation at mga pagkilos sa ibaba';

  @override
  String get demoBottomAppBarDescription =>
      'Nagbibigay ang mga bar ng app sa ibaba ng access sa navigation drawer sa ibaba at sa hanggang apat na pagkilos, kasama ang floating action button.';

  @override
  String get bottomAppBarNotch => 'Notch';

  @override
  String get bottomAppBarPosition => 'Posisyon ng Floating Action Button';

  @override
  String get bottomAppBarPositionDockedEnd => 'Naka-dock - Dulo';

  @override
  String get bottomAppBarPositionDockedCenter => 'Naka-dock - Gitna';

  @override
  String get bottomAppBarPositionFloatingEnd => 'Floating - Dulo';

  @override
  String get bottomAppBarPositionFloatingCenter => 'Floating - Gitna';

  @override
  String get demoBannerTitle => 'Banner';

  @override
  String get demoBannerSubtitle => 'Nagpapakita ng banner sa isang listahan';

  @override
  String get demoBannerDescription =>
      'Ang isang banner ay nagpapakita ng mahalaga at malinaw na mensahe at nagbibigay ito ng mga pagkilos para sa mga user para tugunan (o i-dismiss ang banner). Kinakailangan ng pagkilos ng user para ma-dismiss ito.';

  @override
  String get demoBottomNavigationTitle => 'Navigation sa ibaba';

  @override
  String get demoBottomNavigationSubtitle =>
      'Navigation sa ibaba na may mga cross-fading na view';

  @override
  String get demoBottomNavigationPersistentLabels => 'Mga persistent na label';

  @override
  String get demoBottomNavigationSelectedLabel => 'Napiling label';

  @override
  String get demoBottomNavigationDescription =>
      'Nagpapakita ang mga navigation bar sa ibaba ng tatlo hanggang limang patutunguhan sa ibaba ng screen. Ang bawat patutunguhan ay kinakatawan ng isang icon at ng isang opsyonal na text na label. Kapag na-tap ang icon ng navigation sa ibaba, mapupunta ang user sa pinakamataas na antas na patutunguhan ng navigation na nauugnay sa icon na iyon.';

  @override
  String get demoButtonTitle => 'Mga Button';

  @override
  String get demoButtonSubtitle => 'Flat, nakaangat, outline, at higit pa';

  @override
  String get demoFlatButtonTitle => 'Flat na Button';

  @override
  String get demoFlatButtonDescription =>
      'Isang flat na button na nagpapakita ng pagtalsik ng tinta kapag pinindot pero hindi umaangat. Gamitin ang mga flat na button sa mga toolbar, sa mga dialog, at inline nang may padding';

  @override
  String get demoRaisedButtonTitle => 'Nakaangat na Button';

  @override
  String get demoRaisedButtonDescription =>
      'Nagdaragdag ng dimensyon ang mga nakaangat na button sa mga layout na puro flat. Binibigyang-diin ng mga ito ang mga function sa mga lugar na maraming nakalagay o malawak.';

  @override
  String get demoOutlineButtonTitle => 'Outline na Button';

  @override
  String get demoOutlineButtonDescription =>
      'Magiging opaque at aangat ang mga outline na button kapag pinindot. Kadalasang isinasama ang mga ito sa mga nakaangat na button para magsaad ng alternatibo at pangalawang pagkilos.';

  @override
  String get demoToggleButtonTitle => 'Mga Toggle Button';

  @override
  String get demoToggleButtonDescription =>
      'Magagamit ang mga toggle button para pagpangkatin ang magkakaugnay na opsyon. Para bigyang-diin ang mga pangkat ng magkakaugnay na toggle button, dapat may iisang container ang isang pangkat';

  @override
  String get demoFloatingButtonTitle => 'Floating na Action Button';

  @override
  String get demoFloatingButtonDescription =>
      'Ang floating na action button ay isang bilog na button na may icon na nasa ibabaw ng content na nagpo-promote ng pangunahing pagkilos sa application.';

  @override
  String get demoCardTitle => 'Mga Card';

  @override
  String get demoCardSubtitle =>
      'Mga baseline na card na may mga pakurbang kanto';

  @override
  String get demoChipTitle => 'Mga Chip';

  @override
  String get demoCardDescription =>
      'Ang card ay isang sheet ng Materyal na ginagamit para katawanin ang ilang nauugnay na impormasyon, halimbawa, isang album, isang pangheyograpiyang lokasyon, isang pagkain, mga detalye sa pakikipag-ugnayan, atbp.';

  @override
  String get demoChipSubtitle =>
      'Mga compact na elemento na kumakatawan sa isang input, attribute, o pagkilos';

  @override
  String get demoActionChipTitle => 'Action Chip';

  @override
  String get demoActionChipDescription =>
      'Ang mga action chip ay isang hanay ng mga opsyon na nagti-trigger ng pagkilos na nauugnay sa pangunahing content. Dapat dynamic at ayon sa konteksto lumabas ang mga action chip sa UI.';

  @override
  String get demoChoiceChipTitle => 'Choice Chip';

  @override
  String get demoChoiceChipDescription =>
      'Kumakatawan ang mga choice chip sa isang opsyon sa isang hanay. Naglalaman ng nauugnay na naglalarawang text o mga kategorya ang mga choice chip.';

  @override
  String get demoFilterChipTitle => 'Filter Chip';

  @override
  String get demoFilterChipDescription =>
      'Gumagamit ang mga filter chip ng mga tag o naglalarawang salita para mag-filter ng content.';

  @override
  String get demoInputChipTitle => 'Input Chip';

  @override
  String get demoInputChipDescription =>
      'Kumakatawan ang mga input chip sa isang kumplikadong impormasyon, gaya ng entity (tao, lugar, o bagay) o text ng pag-uusap, sa compact na anyo.';

  @override
  String get demoDataTableTitle => 'Mga Talahanayan ng Data';

  @override
  String get demoDataTableSubtitle => 'Mga row at column ng impormasyon';

  @override
  String get demoDataTableDescription =>
      'Ang mga talahanyan ng data ay nagpapakita ng impormasyon sa format ng mga row at column na parang grid. Isinasaayos ng mga ito ang impormasyon sa paraang madaling suriin para makahanap ng mga pattern at insight ang mga user.';

  @override
  String get dataTableHeader => 'Nutrisyon';

  @override
  String get dataTableColumnDessert => 'Panghimagas (1 serving)';

  @override
  String get dataTableColumnCalories => 'Mga Calorie';

  @override
  String get dataTableColumnFat => 'Fat (g)';

  @override
  String get dataTableColumnCarbs => 'Mga Carb (g)';

  @override
  String get dataTableColumnProtein => 'Protein (g)';

  @override
  String get dataTableColumnSodium => 'Sodium (mg)';

  @override
  String get dataTableColumnCalcium => 'Calcium (%)';

  @override
  String get dataTableColumnIron => 'Iron (%)';

  @override
  String get dataTableRowFrozenYogurt => 'Frozen yogurt';

  @override
  String get dataTableRowIceCreamSandwich => 'Ice cream sandwich';

  @override
  String get dataTableRowEclair => 'Eclair';

  @override
  String get dataTableRowCupcake => 'Cupcake';

  @override
  String get dataTableRowGingerbread => 'Gingerbread';

  @override
  String get dataTableRowJellyBean => 'Jelly bean';

  @override
  String get dataTableRowLollipop => 'Lollipop';

  @override
  String get dataTableRowHoneycomb => 'Honeycomb';

  @override
  String get dataTableRowDonut => 'Donut';

  @override
  String get dataTableRowApplePie => 'Apple pie';

  @override
  String dataTableRowWithSugar(Object value) {
    return '${value} na may asukal';
  }

  @override
  String dataTableRowWithHoney(Object value) {
    return '${value} na may honey';
  }

  @override
  String get demoDialogTitle => 'Mga Dialog';

  @override
  String get demoDialogSubtitle => 'Simple, alerto, at fullscreen';

  @override
  String get demoAlertDialogTitle => 'Alerto';

  @override
  String get demoAlertDialogDescription =>
      'Ipinapaalam ng dialog ng alerto sa user ang tungkol sa mga sitwasyong nangangailangan ng pagkilala. May opsyonal na pamagat at opsyonal na listahan ng mga pagkilos ang dialog ng alerto.';

  @override
  String get demoAlertTitleDialogTitle => 'Alertong May Pamagat';

  @override
  String get demoSimpleDialogTitle => 'Simple';

  @override
  String get demoSimpleDialogDescription =>
      'Isang simpleng dialog na nag-aalok sa user na pumili sa pagitan ng ilang opsyon. May opsyonal na pamagat ang simpleng dialog na ipinapakita sa itaas ng mga opsyon.';

  @override
  String get demoGridListsTitle => 'Mga Grid na Listahan';

  @override
  String get demoGridListsSubtitle => 'Layout ng row at column';

  @override
  String get demoGridListsDescription =>
      'Pinakaangkop na gamitin ang mga Grid na Listahan para magpakita ng magkakatulad na data, kadalasan mga larawan. Tinatawag na tile ang bawat item na nasa grid na listahan.';

  @override
  String get demoGridListsImageOnlyTitle => 'Larawan lang';

  @override
  String get demoGridListsHeaderTitle => 'May header';

  @override
  String get demoGridListsFooterTitle => 'May footer';

  @override
  String get demoSlidersTitle => 'Mga Slider';

  @override
  String get demoSlidersSubtitle =>
      'Mga widget para sa pagpili ng value sa pamamagitan ng pag-swipe';

  @override
  String get demoSlidersDescription =>
      'Nagpapakita ang mga slider ng isang hanay ng mga value sa isang bar, kung saan puwedeng pumili ng isang value ang mga user. Mainam ang mga ito para sa pagsasaayos ng mga setting tulad ng volume, liwanag, o paglalapat ng mga filter ng larawan.';

  @override
  String get demoRangeSlidersTitle => 'Mga Slider ng Hanay';

  @override
  String get demoRangeSlidersDescription =>
      'Nagpapakita ang mga slider ng isang hanay ng mga value sa isang bar. Puwedeng may mga icon ang mga ito sa magkabilang dulo ng bar na nagpapakita ng isang hanay ng mga value. Mainam ang mga ito para sa pagsasaayos ng mga setting tulad ng volume, liwanag, o paglalapat ng mga filter ng larawan.';

  @override
  String get demoCustomSlidersTitle => 'Mga Custom na Slider';

  @override
  String get demoCustomSlidersDescription =>
      'Nagpapakita ang mga slider ng isang hanay ng mga value sa isang bar, kung saan puwedeng pumili ng isang value o isang hanay ng mga value ang mga user. Puwedeng lagyan ng tema at i-customize ang mga slider.';

  @override
  String get demoSlidersContinuousWithEditableNumericalValue =>
      'Tuloy-tuloy na may Nae-edit na Numerong Value';

  @override
  String get demoSlidersDiscrete => 'Discrete';

  @override
  String get demoSlidersDiscreteSliderWithCustomTheme =>
      'Discrete Slider na may Custom na Tema';

  @override
  String get demoSlidersContinuousRangeSliderWithCustomTheme =>
      'Tuloy-tuloy na Slider ng Hanay na may Custom na Tema';

  @override
  String get demoSlidersContinuous => 'Tuloy-tuloy';

  @override
  String get demoSlidersEditableNumericalValue => 'Nae-edit na numerong value';

  @override
  String get demoMenuTitle => 'Menu';

  @override
  String get demoContextMenuTitle => 'Menu ng konteksto';

  @override
  String get demoSectionedMenuTitle => 'Nakaseksyong menu';

  @override
  String get demoSimpleMenuTitle => 'Simpleng menu';

  @override
  String get demoChecklistMenuTitle => 'Checklist na menu';

  @override
  String get demoMenuSubtitle => 'Mga button ng menu at simpleng menu';

  @override
  String get demoMenuDescription =>
      'Nagpapakita ang menu ng listahan ng mga pagpipilian sa isang pansamantalang lugar. Lumalabas ang mga ito kapag nakipag-ugnayan ang mga user gamit ang button, pagkilos, o iba pang kontrol.';

  @override
  String get demoMenuItemValueOne => 'Unang item sa menu';

  @override
  String get demoMenuItemValueTwo => 'Pangalawang item sa menu';

  @override
  String get demoMenuItemValueThree => 'Pangatlong item sa menu';

  @override
  String get demoMenuOne => 'Isa';

  @override
  String get demoMenuTwo => 'Dalawa';

  @override
  String get demoMenuThree => 'Tatlo';

  @override
  String get demoMenuFour => 'Apat';

  @override
  String get demoMenuAnItemWithAContextMenuButton =>
      'Isang item na may menu ng konteksto';

  @override
  String get demoMenuContextMenuItemOne => 'Unang item sa menu ng konteksto';

  @override
  String get demoMenuADisabledMenuItem => 'Na-disable na item sa menu';

  @override
  String get demoMenuContextMenuItemThree =>
      'Pangatlong item sa menu ng konteksto';

  @override
  String get demoMenuAnItemWithASectionedMenu =>
      'Isang item na may nakaseksyong menu';

  @override
  String get demoMenuPreview => 'I-preview';

  @override
  String get demoMenuShare => 'Ibahagi';

  @override
  String get demoMenuGetLink => 'Kumuha ng link';

  @override
  String get demoMenuRemove => 'Alisin';

  @override
  String demoMenuSelected(Object value) {
    return 'Napili: ${value}';
  }

  @override
  String demoMenuChecked(Object value) {
    return 'Nasuri: ${value}';
  }

  @override
  String get demoMenuAnItemWithASimpleMenu => 'Isang item na may simpleng menu';

  @override
  String get demoMenuAnItemWithAChecklistMenu =>
      'Isang item na may checklist na menu';

  @override
  String get demoFullscreenDialogTitle => 'Fullscreen';

  @override
  String get demoFullscreenDialogDescription =>
      'Tinutukoy ng property na fullscreenDialog kung fullscreen na modal dialog ang paparating na page';

  @override
  String get demoCupertinoActivityIndicatorTitle => 'Indicator ng aktibidad';

  @override
  String get demoCupertinoActivityIndicatorSubtitle =>
      'Mga iOS-style na indicator ng aktibidad';

  @override
  String get demoCupertinoActivityIndicatorDescription =>
      'Isang iOS-style na indicator ng aktibidad na umiikot nang clockwise.';

  @override
  String get demoCupertinoButtonsTitle => 'Mga Button';

  @override
  String get demoCupertinoButtonsSubtitle =>
      'Mga button na may istilong pang-iOS';

  @override
  String get demoCupertinoButtonsDescription =>
      'Button na may istilong pang-iOS. Kumukuha ito ng text at/o icon na nagfe-fade out at nagfe-fade in kapag pinindot. Puwede ring may background ito.';

  @override
  String get demoCupertinoAlertsTitle => 'Mga Alerto';

  @override
  String get demoCupertinoAlertsSubtitle =>
      'Mga dialog ng alerto na may istilong pang-iOS';

  @override
  String get demoCupertinoAlertTitle => 'Alerto';

  @override
  String get demoCupertinoAlertDescription =>
      'Ipinapaalam ng dialog ng alerto sa user ang tungkol sa mga sitwasyong nangangailangan ng pagkilala. May opsyonal na pamagat, opsyonal na content, at opsyonal na listahan ng mga pagkilos ang dialog ng alerto. Ipapakita ang pamagat sa itaas ng content at ipapakita ang mga pagkilos sa ibaba ng content.';

  @override
  String get demoCupertinoAlertWithTitleTitle => 'Alertong May Pamagat';

  @override
  String get demoCupertinoAlertButtonsTitle => 'Alertong May Mga Button';

  @override
  String get demoCupertinoAlertButtonsOnlyTitle => 'Mga Button ng Alerto Lang';

  @override
  String get demoCupertinoActionSheetTitle => 'Sheet ng Pagkilos';

  @override
  String get demoCupertinoActionSheetDescription =>
      'Ang sheet ng pagkilos ay isang partikular na istilo ng alerto na nagpapakita sa user ng isang hanay ng dalawa o higit pang opsyong nauugnay sa kasalukuyang konteksto. Puwedeng may pamagat, karagdagang mensahe, at listahan ng mga pagkilos ang sheet ng pagkilos.';

  @override
  String get demoCupertinoNavigationBarTitle => 'Navigation bar';

  @override
  String get demoCupertinoNavigationBarSubtitle =>
      'iOS-style na navigation bar';

  @override
  String get demoCupertinoNavigationBarDescription =>
      'Isang iOS-style na navigation bar. Ang navigation bar ay isang toolbar na sa minimum ay may pamagat ng page na nasa gitna ng toolbar.';

  @override
  String get demoCupertinoPickerTitle => 'Mga Picker';

  @override
  String get demoCupertinoPickerSubtitle =>
      'Mga picker ng petsa at oras na may istilong pang-iOS';

  @override
  String get demoCupertinoPickerDescription =>
      'Widget ng picker na may istilong pang-iOS na magagamit para pumili ng mga petsa, mga oras, o petsa at oras.';

  @override
  String get demoCupertinoPickerTimer => 'Timer';

  @override
  String get demoCupertinoPickerDate => 'Petsa';

  @override
  String get demoCupertinoPickerTime => 'Oras';

  @override
  String get demoCupertinoPickerDateTime => 'Petsa at Oras';

  @override
  String get demoCupertinoPullToRefreshTitle => 'Hilahin para i-refresh';

  @override
  String get demoCupertinoPullToRefreshSubtitle =>
      'iOS-style na kontrol na hilahin para i-refresh';

  @override
  String get demoCupertinoPullToRefreshDescription =>
      'Isang widget na nagpapatupad sa iOS-style na kontrol na hilahin para irefresh';

  @override
  String get demoCupertinoSegmentedControlTitle => 'Naka-segment na kontrol';

  @override
  String get demoCupertinoSegmentedControlSubtitle =>
      'iOS-style na naka-segment na control';

  @override
  String get demoCupertinoSegmentedControlDescription =>
      'Ginagamit para sa pagpiling may ilang opsyong hindi puwedeng mapili nang sabay. Kapag pinili ang isang opsyong nasa naka-segment na control, hindi na mapipili ang iba pang opsyong nasa naka-segment na control.';

  @override
  String get demoCupertinoSliderTitle => 'Slider';

  @override
  String get demoCupertinoSliderSubtitle => 'iOS-style na slider';

  @override
  String get demoCupertinoSliderDescription =>
      'Puwedeng gumamit ng slider para pumili sa tuloy-tuloy o discrete na hanay ng mga value.';

  @override
  String demoCupertinoSliderContinuous(Object value) {
    return 'Tuloy-tuloy: ${value}';
  }

  @override
  String demoCupertinoSliderDiscrete(Object value) {
    return 'Discrete: ${value}';
  }

  @override
  String get demoCupertinoSwitchSubtitle => 'iOS-style na switch';

  @override
  String get demoCupertinoSwitchDescription =>
      'Ginagamit ang isang switch para i-on/i-off ang isang setting.';

  @override
  String get demoCupertinoTabBarTitle => 'Tab bar';

  @override
  String get demoCupertinoTabBarSubtitle => 'iOS-style na tab bar sa ibaba';

  @override
  String get demoCupertinoTabBarDescription =>
      'Isang iOS-style na tab bar ng pag-navigate sa ibaba. Nagpapakita ng maraming tab habang isang tab lang ang aktibo, ang unang tab bilang default.';

  @override
  String get cupertinoTabBarHomeTab => 'Home';

  @override
  String get cupertinoTabBarChatTab => 'Chat';

  @override
  String get cupertinoTabBarProfileTab => 'Profile';

  @override
  String get demoCupertinoTextFieldTitle => 'Mga field ng text';

  @override
  String get demoCupertinoTextFieldSubtitle =>
      'Mga field ng text na may istilong pang-iOS';

  @override
  String get demoCupertinoTextFieldDescription =>
      'Ang isang field ng text ay nagbibigay-daan sa user na maglagay ng text sa pamamagitan ng hardware na keyboard o gamit ang isang keyboard sa screen.';

  @override
  String get demoCupertinoTextFieldPIN => 'PIN';

  @override
  String get demoMotionTitle => 'Motion';

  @override
  String get demoMotionSubtitle => 'All of the predefined transition patterns';

  @override
  String get demoContainerTransformTitle => 'Container Transform';

  @override
  String get demoContainerTransformDescription =>
      'The container transform pattern is designed for transitions between UI elements that include a container. This pattern creates a visible connection between two UI elements';

  @override
  String get demoContainerTransformModalBottomSheetTitle => 'Fade mode';

  @override
  String get demoContainerTransformTypeFade => 'FADE';

  @override
  String get demoContainerTransformTypeFadeThrough => 'FADE THROUGH';

  @override
  String get demoMotionPlaceholderTitle => 'Title';

  @override
  String get demoMotionPlaceholderSubtitle => 'Secondary text';

  @override
  String get demoMotionSmallPlaceholderSubtitle => 'Secondary';

  @override
  String get demoMotionDetailsPageTitle => 'Details Page';

  @override
  String get demoMotionListTileTitle => 'List item';

  @override
  String get demoSharedAxisDescription =>
      'The shared axis pattern is used for transitions between the UI elements that have a spatial or navigational relationship. This pattern uses a shared transformation on the x, y, or z axis to reinforce the relationship between elements.';

  @override
  String get demoSharedXAxisTitle => 'Shared x-axis';

  @override
  String get demoSharedXAxisBackButtonText => 'BACK';

  @override
  String get demoSharedXAxisNextButtonText => 'NEXT';

  @override
  String get demoSharedXAxisCoursePageTitle => 'Streamline your courses';

  @override
  String get demoSharedXAxisCoursePageSubtitle =>
      'Bundled categories appear as groups in your feed. You can always change this later.';

  @override
  String get demoSharedXAxisArtsAndCraftsCourseTitle => 'Arts & Crafts';

  @override
  String get demoSharedXAxisBusinessCourseTitle => 'Business';

  @override
  String get demoSharedXAxisIllustrationCourseTitle => 'Illustration';

  @override
  String get demoSharedXAxisDesignCourseTitle => 'Design';

  @override
  String get demoSharedXAxisCulinaryCourseTitle => 'Culinary';

  @override
  String get demoSharedXAxisBundledCourseSubtitle => 'Bundled';

  @override
  String get demoSharedXAxisIndividualCourseSubtitle => 'Shown Individually';

  @override
  String get demoSharedXAxisSignInWelcomeText => 'Hi David Park';

  @override
  String get demoSharedXAxisSignInSubtitleText => 'Sign in with your account';

  @override
  String get demoSharedXAxisSignInTextFieldLabel => 'Email or phone number';

  @override
  String get demoSharedXAxisForgotEmailButtonText => 'FORGOT EMAIL?';

  @override
  String get demoSharedXAxisCreateAccountButtonText => 'CREATE ACCOUNT';

  @override
  String get demoSharedYAxisTitle => 'Shared y-axis';

  @override
  String get demoSharedYAxisAlbumCount => '268 albums';

  @override
  String get demoSharedYAxisAlphabeticalSortTitle => 'A-Z';

  @override
  String get demoSharedYAxisRecentSortTitle => 'Recently played';

  @override
  String get demoSharedYAxisAlbumTileTitle => 'Album';

  @override
  String get demoSharedYAxisAlbumTileSubtitle => 'Artist';

  @override
  String get demoSharedYAxisAlbumTileDurationUnit => 'min';

  @override
  String get demoSharedZAxisTitle => 'Shared z-axis';

  @override
  String get demoSharedZAxisSettingsPageTitle => 'Settings';

  @override
  String get demoSharedZAxisBurgerRecipeTitle => 'Burger';

  @override
  String get demoSharedZAxisBurgerRecipeDescription => 'Burger recipe';

  @override
  String get demoSharedZAxisSandwichRecipeTitle => 'Sandwich';

  @override
  String get demoSharedZAxisSandwichRecipeDescription => 'Sandwich recipe';

  @override
  String get demoSharedZAxisDessertRecipeTitle => 'Dessert';

  @override
  String get demoSharedZAxisDessertRecipeDescription => 'Dessert recipe';

  @override
  String get demoSharedZAxisShrimpPlateRecipeTitle => 'Shrimp';

  @override
  String get demoSharedZAxisShrimpPlateRecipeDescription =>
      'Shrimp plate recipe';

  @override
  String get demoSharedZAxisCrabPlateRecipeTitle => 'Crab';

  @override
  String get demoSharedZAxisCrabPlateRecipeDescription => 'Crab plate recipe';

  @override
  String get demoSharedZAxisBeefSandwichRecipeTitle => 'Beef Sandwich';

  @override
  String get demoSharedZAxisBeefSandwichRecipeDescription =>
      'Beef Sandwich recipe';

  @override
  String get demoSharedZAxisSavedRecipesListTitle => 'Saved Recipes';

  @override
  String get demoSharedZAxisProfileSettingLabel => 'Profile';

  @override
  String get demoSharedZAxisNotificationSettingLabel => 'Notifications';

  @override
  String get demoSharedZAxisPrivacySettingLabel => 'Privacy';

  @override
  String get demoSharedZAxisHelpSettingLabel => 'Help';

  @override
  String get demoFadeThroughTitle => 'Fade through';

  @override
  String get demoFadeThroughDescription =>
      'The fade through pattern is used for transitions between UI elements that do not have a strong relationship to each other.';

  @override
  String get demoFadeThroughAlbumsDestination => 'Albums';

  @override
  String get demoFadeThroughPhotosDestination => 'Photos';

  @override
  String get demoFadeThroughSearchDestination => 'Search';

  @override
  String get demoFadeThroughTextPlaceholder => '123 photos';

  @override
  String get demoFadeScaleTitle => 'Fade';

  @override
  String get demoFadeScaleDescription =>
      'The fade pattern is used for UI elements that enter or exit within the bounds of the screen, such as a dialog that fades in the center of the screen.';

  @override
  String get demoFadeScaleShowAlertDialogButton => 'SHOW MODAL';

  @override
  String get demoFadeScaleShowFabButton => 'SHOW FAB';

  @override
  String get demoFadeScaleHideFabButton => 'HIDE FAB';

  @override
  String get demoFadeScaleAlertDialogHeader => 'Alert Dialog';

  @override
  String get demoFadeScaleAlertDialogCancelButton => 'CANCEL';

  @override
  String get demoFadeScaleAlertDialogDiscardButton => 'DISCARD';

  @override
  String get demoColorsTitle => 'Mga Kulay';

  @override
  String get demoColorsSubtitle => 'Lahat ng naka-predefine na kulay';

  @override
  String get demoColorsDescription =>
      'Mga constant na kulay at swatch ng kulay na kumakatawan sa palette ng kulay ng Material Design.';

  @override
  String get demoTypographyTitle => 'Typography';

  @override
  String get demoTypographySubtitle =>
      'Lahat ng naka-predefine na istilo ng text';

  @override
  String get demoTypographyDescription =>
      'Mga kahulugan para sa iba\'t ibang typographical na istilong makikita sa Material Design.';

  @override
  String get demo2dTransformationsTitle => 'Mga 2D na pagbabago';

  @override
  String get demo2dTransformationsSubtitle => 'I-pan, i-zoom, i-rotate';

  @override
  String get demo2dTransformationsDescription =>
      'I-tap para i-edit ang mga tile, at gumamit ng mga galaw para magpalipat-lipat ng lugar. I-drag para i-pan, i-pinch para i-zoom, i-rotate gamit ang dalawang daliri. Pindutin ang button na i-reset para bumalik sa panimulang oryentasyon.';

  @override
  String get demo2dTransformationsResetTooltip => 'I-reset ang mga pagbabago';

  @override
  String get demo2dTransformationsEditTooltip => 'I-edit ang tile';

  @override
  String get buttonText => 'BUTTON';

  @override
  String get demoBottomSheetTitle => 'Bottom sheet';

  @override
  String get demoBottomSheetSubtitle =>
      'Mga persistent at modal na bottom sheet';

  @override
  String get demoBottomSheetPersistentTitle => 'Persistent na bottom sheet';

  @override
  String get demoBottomSheetPersistentDescription =>
      'Ang persistent na bottom sheet ay nagpapakita ng impormasyon na dumaragdag sa pangunahing content ng app. Makikita pa rin ang persistent na bottom sheet kahit pa makipag-ugnayan ang user sa iba pang bahagi ng app.';

  @override
  String get demoBottomSheetModalTitle => 'Modal na bottom sheet';

  @override
  String get demoBottomSheetModalDescription =>
      'Ang modal na bottom sheet ay isang alternatibo sa menu o dialog at pinipigilan nito ang user na makipag-ugnayan sa iba pang bahagi ng app.';

  @override
  String get demoBottomSheetAddLabel => 'Idagdag';

  @override
  String get demoBottomSheetButtonText => 'IPAKITA ANG BOTTOM SHEET';

  @override
  String get demoBottomSheetHeader => 'Header';

  @override
  String demoBottomSheetItem(Object value) {
    return 'Item ${value}';
  }

  @override
  String get demoListsTitle => 'Mga Listahan';

  @override
  String get demoListsSubtitle => 'Mga layout ng nagso-scroll na listahan';

  @override
  String get demoListsDescription =>
      'Isang row na nakapirmi ang taas na karaniwang naglalaman ng ilang text pati na rin isang icon na leading o trailing.';

  @override
  String get demoOneLineListsTitle => 'Isang Linya';

  @override
  String get demoTwoLineListsTitle => 'Dalawang Linya';

  @override
  String get demoListsSecondary => 'Pangalawang text';

  @override
  String get demoProgressIndicatorTitle => 'Mga indicator ng pag-usad';

  @override
  String get demoProgressIndicatorSubtitle => 'Linear, pabilog, hindi tiyak';

  @override
  String get demoCircularProgressIndicatorTitle =>
      'Pabilog na Indicator ng Pag-usad';

  @override
  String get demoCircularProgressIndicatorDescription =>
      'Isang Material Design na pabilog na indicator ng pag-usad na umiikot para isaad na abala ang application.';

  @override
  String get demoLinearProgressIndicatorTitle =>
      'Linear na Indicator ng Pag-usad';

  @override
  String get demoLinearProgressIndicatorDescription =>
      'Isang Material Design na linear na indicator ng pag-usad, na kilala rin bilang progress bar.';

  @override
  String get demoPickersTitle => 'Mga Picker';

  @override
  String get demoPickersSubtitle => 'Pagpili ng petsa at oras';

  @override
  String get demoDatePickerTitle => 'Picker ng Petsa';

  @override
  String get demoDatePickerDescription =>
      'Nagpapakita ng dialog na naglalaman ng picker ng petsa ng Material Design.';

  @override
  String get demoTimePickerTitle => 'Picker ng Oras';

  @override
  String get demoTimePickerDescription =>
      'Nagpapakita ng dialog na naglalaman ng picker ng oras ng Material Design.';

  @override
  String get demoPickersShowPicker => 'IPAKITA ANG PICKER';

  @override
  String get demoTabsTitle => 'Mga Tab';

  @override
  String get demoTabsScrollingTitle => 'Naso-scroll';

  @override
  String get demoTabsNonScrollingTitle => 'Hindi naso-scroll';

  @override
  String get demoTabsSubtitle =>
      'Mga tab na may mga hiwalay na naso-scroll na view';

  @override
  String get demoTabsDescription =>
      'Inaayos ng mga tab ang content na nasa magkakaibang screen, data set, at iba pang pakikipag-ugnayan.';

  @override
  String get demoSnackbarsTitle => 'Mga Snackbar';

  @override
  String get demoSnackbarsSubtitle =>
      'Nagpapakita ang Mga Snackbar ng mga mensahe sa ibaba ng screen';

  @override
  String get demoSnackbarsDescription =>
      'Ipinapaalam ng Mga Snackbar sa mga user ang isang proseso na isinasagawa o isasagawa ng app. Panandaliang lumalabas ang mga ito, papunta sa ibaba ng screen. Hindi dapat makaabala ang mga ito sa karanasan ng user, at hindi kinakailangan ng mga ito na mawala ang input ng user.';

  @override
  String get demoSnackbarsButtonLabel => 'MAGPAKITA NG SNACKBAR';

  @override
  String get demoSnackbarsText => 'Ito ay isang snackbar.';

  @override
  String get demoSnackbarsActionButtonLabel => 'PAGKILOS';

  @override
  String get demoSnackbarsAction => 'Pinindot mo ang pagkilos ng snackbar.';

  @override
  String get demoSelectionControlsTitle => 'Mga kontrol sa pagpili';

  @override
  String get demoSelectionControlsSubtitle =>
      'Mga checkbox, radio button, at switch';

  @override
  String get demoSelectionControlsCheckboxTitle => 'Checkbox';

  @override
  String get demoSelectionControlsCheckboxDescription =>
      'Nagbibigay-daan sa user ang mga checkbox na pumili ng maraming opsyon sa isang hanay. True o false ang value ng isang normal na checkbox at puwede ring null ang value ng isang tristate checkbox.';

  @override
  String get demoSelectionControlsRadioTitle => 'Radio';

  @override
  String get demoSelectionControlsRadioDescription =>
      'Nagbibigay-daan sa user ang mga radio button na pumili ng isang opsyon sa isang hanay. Gamitin ang mga radio button para sa paisa-isang pagpili kung sa tingin mo ay dapat magkakatabing makita ng user ang lahat ng available na opsyon.';

  @override
  String get demoSelectionControlsSwitchTitle => 'Switch';

  @override
  String get demoSelectionControlsSwitchDescription =>
      'Tina-toggle ng mga on/off na switch ang status ng isang opsyon sa mga setting. Dapat malinaw na nakasaad sa inline na label ang opsyong kinokontrol ng switch, pati na rin ang kasalukuyang status nito.';

  @override
  String get demoBottomTextFieldsTitle => 'Mga field ng text';

  @override
  String get demoTextFieldTitle => 'Mga field ng text';

  @override
  String get demoTextFieldSubtitle =>
      'Isang linya ng mae-edit na text at mga numero';

  @override
  String get demoTextFieldDescription =>
      'Ang mga field ng text ay nagbibigay-daan sa mga user na maglagay ng text sa UI. Karaniwang makikita ang mga ito sa mga form at dialog.';

  @override
  String get demoTextFieldShowPasswordLabel => 'Ipakita ang password';

  @override
  String get demoTextFieldHidePasswordLabel => 'Itago ang password';

  @override
  String get demoTextFieldFormErrors =>
      'Pakiayos ang mga error na kulay pula bago magsumite.';

  @override
  String get demoTextFieldNameRequired => 'Kinakailangan ang pangalan.';

  @override
  String get demoTextFieldOnlyAlphabeticalChars =>
      'Mga character sa alpabeto lang ang ilagay.';

  @override
  String get demoTextFieldEnterUSPhoneNumber =>
      '(###) ###-#### - Maglagay ng numero ng telepono sa US.';

  @override
  String get demoTextFieldEnterPassword => 'Maglagay ng password.';

  @override
  String get demoTextFieldPasswordsDoNotMatch =>
      'Hindi magkatugma ang mga password';

  @override
  String get demoTextFieldWhatDoPeopleCallYou =>
      'Ano\'ng tawag sa iyo ng mga tao?';

  @override
  String get demoTextFieldNameField => 'Pangalan*';

  @override
  String get demoTextFieldWhereCanWeReachYou =>
      'Paano kami makikipag-ugnayan sa iyo?';

  @override
  String get demoTextFieldPhoneNumber => 'Numero ng telepono*';

  @override
  String get demoTextFieldYourEmailAddress => 'Iyong email address';

  @override
  String get demoTextFieldEmail => 'Email';

  @override
  String get demoTextFieldTellUsAboutYourself =>
      'Bigyan kami ng impormasyon tungkol sa iyo (hal., isulat kung ano\'ng ginagawa mo sa trabaho o ang mga libangan mo)';

  @override
  String get demoTextFieldKeepItShort =>
      'Panatilihin itong maikli, isa lang itong demo.';

  @override
  String get demoTextFieldLifeStory => 'Kwento ng buhay';

  @override
  String get demoTextFieldSalary => 'Sweldo';

  @override
  String get demoTextFieldUSD => 'USD';

  @override
  String get demoTextFieldNoMoreThan => 'Hindi dapat hihigit sa 8 character.';

  @override
  String get demoTextFieldPassword => 'Password*';

  @override
  String get demoTextFieldRetypePassword => 'I-type ulit ang password*';

  @override
  String get demoTextFieldSubmit => 'ISUMITE';

  @override
  String demoTextFieldNameHasPhoneNumber(Object name, Object phoneNumber) {
    return 'Ang numero ng telepono ni/ng ${name} ay ${phoneNumber}';
  }

  @override
  String get demoTextFieldRequiredField =>
      '* tumutukoy sa kinakailangang field';

  @override
  String get demoTooltipTitle => 'Mga Tooltip';

  @override
  String get demoTooltipSubtitle =>
      'Maikling mensaheng ipinapakita kapag pumindot nang matagal o nag-hover';

  @override
  String get demoTooltipDescription =>
      'Nagbibigay ang mga tooltip ng mga text na label na nakakatulong sa pagpapaliwanag sa function ng isang button o iba pang pagkilos sa user interface. Nagpapakita ang mga tooltip ng text na nagbibigay ng impormasyon kapag nag-hover, tumutok, o pumindot nang matagal ang mga user sa isang element.';

  @override
  String get demoTooltipInstructions =>
      'Pumindot nang matagal o mag-hover para maipakita ang tooltip.';

  @override
  String get bottomNavigationCommentsTab => 'Mga Komento';

  @override
  String get bottomNavigationCalendarTab => 'Kalendaryo';

  @override
  String get bottomNavigationAccountTab => 'Account';

  @override
  String get bottomNavigationAlarmTab => 'Alarm';

  @override
  String get bottomNavigationCameraTab => 'Camera';

  @override
  String bottomNavigationContentPlaceholder(Object title) {
    return 'Placeholder para sa tab na ${title}';
  }

  @override
  String get buttonTextCreate => 'Gumawa';

  @override
  String dialogSelectedOption(Object value) {
    return 'Pinili mo ang: \"${value}\"';
  }

  @override
  String get chipTurnOnLights => 'I-on ang mga ilaw';

  @override
  String get chipSmall => 'Maliit';

  @override
  String get chipMedium => 'Katamtaman';

  @override
  String get chipLarge => 'Malaki';

  @override
  String get chipElevator => 'Elevator';

  @override
  String get chipWasher => 'Washer';

  @override
  String get chipFireplace => 'Fireplace';

  @override
  String get chipBiking => 'Pagbibisikleta';

  @override
  String get dialogDiscardTitle => 'I-discard ang draft?';

  @override
  String get dialogLocationTitle =>
      'Gamitin ang serbisyo ng lokasyon ng Google?';

  @override
  String get dialogLocationDescription =>
      'Payagan ang Google na tulungan ang mga app na tukuyin ang lokasyon. Nangangahulugan ito na magpapadala ng anonymous na data ng lokasyon sa Google, kahit na walang gumaganang app.';

  @override
  String get dialogCancel => 'KANSELAHIN';

  @override
  String get dialogDiscard => 'I-DISCARD';

  @override
  String get dialogDisagree => 'HINDI SUMASANG-AYON';

  @override
  String get dialogAgree => 'SUMANG-AYON';

  @override
  String get dialogSetBackup => 'Itakda ang backup na account';

  @override
  String get dialogAddAccount => 'Magdagdag ng account';

  @override
  String get dialogShow => 'IPAKITA ANG DIALOG';

  @override
  String get dialogFullscreenTitle => 'Full Screen na Dialog';

  @override
  String get dialogFullscreenSave => 'I-SAVE';

  @override
  String get dialogFullscreenDescription => 'Demo ng full screen na dialog';

  @override
  String get cupertinoButton => 'Button';

  @override
  String get cupertinoButtonWithBackground => 'May Background';

  @override
  String get cupertinoAlertCancel => 'Kanselahin';

  @override
  String get cupertinoAlertDiscard => 'I-discard';

  @override
  String get cupertinoAlertLocationTitle =>
      'Payagan ang \"Maps\" na i-access ang iyong lokasyon habang ginagamit mo ang app?';

  @override
  String get cupertinoAlertLocationDescription =>
      'Ipapakita sa mapa ang kasalukuyan mong lokasyon at gagamitin ito para sa mga direksyon, resulta ng paghahanap sa malapit, at tinatantyang tagal ng pagbiyahe.';

  @override
  String get cupertinoAlertAllow => 'Payagan';

  @override
  String get cupertinoAlertDontAllow => 'Huwag Payagan';

  @override
  String get cupertinoAlertFavoriteDessert =>
      'Piliin ang Paboritong Panghimagas';

  @override
  String get cupertinoAlertDessertDescription =>
      'Pakipili ang paborito mong uri ng panghimagas sa listahan sa ibaba. Gagamitin ang pipiliin mo para i-customize ang iminumungkahing listahan ng mga kainan sa iyong lugar.';

  @override
  String get cupertinoAlertCheesecake => 'Cheesecake';

  @override
  String get cupertinoAlertTiramisu => 'Tiramisu';

  @override
  String get cupertinoAlertApplePie => 'Apple Pie';

  @override
  String get cupertinoAlertChocolateBrownie => 'Chocolate Brownie';

  @override
  String get cupertinoShowAlert => 'Ipakita ang Alerto';

  @override
  String get colorsRed => 'PULA';

  @override
  String get colorsPink => 'PINK';

  @override
  String get colorsPurple => 'PURPLE';

  @override
  String get colorsDeepPurple => 'DEEP PURPLE';

  @override
  String get colorsIndigo => 'INDIGO';

  @override
  String get colorsBlue => 'ASUL';

  @override
  String get colorsLightBlue => 'LIGHT BLUE';

  @override
  String get colorsCyan => 'CYAN';

  @override
  String get colorsTeal => 'TEAL';

  @override
  String get colorsGreen => 'BERDE';

  @override
  String get colorsLightGreen => 'LIGHT GREEN';

  @override
  String get colorsLime => 'LIME';

  @override
  String get colorsYellow => 'DILAW';

  @override
  String get colorsAmber => 'AMBER';

  @override
  String get colorsOrange => 'ORANGE';

  @override
  String get colorsDeepOrange => 'DEEP ORANGE';

  @override
  String get colorsBrown => 'BROWN';

  @override
  String get colorsGrey => 'GREY';

  @override
  String get colorsBlueGrey => 'BLUE GREY';

  @override
  String get placeChennai => 'Chennai';

  @override
  String get placeTanjore => 'Tanjore';

  @override
  String get placeChettinad => 'Chettinad';

  @override
  String get placePondicherry => 'Pondicherry';

  @override
  String get placeFlowerMarket => 'Pamilihan ng Bulaklak';

  @override
  String get placeBronzeWorks => 'Bronze Works';

  @override
  String get placeMarket => 'Market';

  @override
  String get placeThanjavurTemple => 'Thanjavur Temple';

  @override
  String get placeSaltFarm => 'Salt Farm';

  @override
  String get placeScooters => 'Mga Scooter';

  @override
  String get placeSilkMaker => 'Panggawa ng Seda';

  @override
  String get placeLunchPrep => 'Paghanda ng Tanghalian';

  @override
  String get placeBeach => 'Beach';

  @override
  String get placeFisherman => 'Mangingisda';

  @override
  String get starterAppTitle => 'Panimulang app';

  @override
  String get starterAppDescription => 'Isang responsive na panimulang layout';

  @override
  String get starterAppGenericButton => 'BUTTON';

  @override
  String get starterAppTooltipAdd => 'Idagdag';

  @override
  String get starterAppTooltipFavorite => 'Paborito';

  @override
  String get starterAppTooltipShare => 'Ibahagi';

  @override
  String get starterAppTooltipSearch => 'Maghanap';

  @override
  String get starterAppGenericTitle => 'Pamagat';

  @override
  String get starterAppGenericSubtitle => 'Subtitle';

  @override
  String get starterAppGenericHeadline => 'Headline';

  @override
  String get starterAppGenericBody => 'Nilalaman';

  @override
  String starterAppDrawerItem(Object value) {
    return 'Item ${value}';
  }

  @override
  String get shrineMenuCaption => 'MENU';

  @override
  String get shrineCategoryNameAll => 'LAHAT';

  @override
  String get shrineCategoryNameAccessories => 'MGA ACCESSORY';

  @override
  String get shrineCategoryNameClothing => 'DAMIT';

  @override
  String get shrineCategoryNameHome => 'HOME';

  @override
  String get shrineLogoutButtonCaption => 'MAG-LOG OUT';

  @override
  String get shrineLoginUsernameLabel => 'Username';

  @override
  String get shrineLoginPasswordLabel => 'Password';

  @override
  String get shrineCancelButtonCaption => 'KANSELAHIN';

  @override
  String get shrineNextButtonCaption => 'SUSUNOD';

  @override
  String get shrineCartPageCaption => 'CART';

  @override
  String shrineProductQuantity(Object quantity) {
    return 'Dami: ${quantity}';
  }

  @override
  String shrineProductPrice(Object price) {
    return 'x ${price}';
  }

  @override
  String shrineCartItemCount(int quantity) {
    return intl.Intl.pluralLogic(
      quantity,
      locale: localeName,
      zero: 'WALANG ITEM',
      one: '1 ITEM',
      other: '${quantity} NA ITEM',
    );
  }

  @override
  String get shrineCartClearButtonCaption => 'I-CLEAR ANG CART';

  @override
  String get shrineCartTotalCaption => 'KABUUAN';

  @override
  String get shrineCartSubtotalCaption => 'Subtotal:';

  @override
  String get shrineCartShippingCaption => 'Pagpapadala:';

  @override
  String get shrineCartTaxCaption => 'Buwis:';

  @override
  String get shrineProductVagabondSack => 'Vagabond na sack';

  @override
  String get shrineProductStellaSunglasses => 'Stella na sunglasses';

  @override
  String get shrineProductWhitneyBelt => 'Whitney na sinturon';

  @override
  String get shrineProductGardenStrand => 'Panghardin na strand';

  @override
  String get shrineProductStrutEarrings => 'Mga strut earring';

  @override
  String get shrineProductVarsitySocks => 'Mga pang-varsity na medyas';

  @override
  String get shrineProductWeaveKeyring => 'Hinabing keychain';

  @override
  String get shrineProductGatsbyHat => 'Gatsby hat';

  @override
  String get shrineProductShrugBag => 'Shrug bag';

  @override
  String get shrineProductGiltDeskTrio => 'Gilt desk trio';

  @override
  String get shrineProductCopperWireRack => 'Copper wire na rack';

  @override
  String get shrineProductSootheCeramicSet => 'Soothe na ceramic set';

  @override
  String get shrineProductHurrahsTeaSet => 'Hurrahs na tea set';

  @override
  String get shrineProductBlueStoneMug => 'Blue stone na tasa';

  @override
  String get shrineProductRainwaterTray => 'Tray para sa tubig-ulan';

  @override
  String get shrineProductChambrayNapkins => 'Chambray napkins';

  @override
  String get shrineProductSucculentPlanters => 'Mga paso para sa succulent';

  @override
  String get shrineProductQuartetTable => 'Quartet na mesa';

  @override
  String get shrineProductKitchenQuattro => 'Quattro sa kusina';

  @override
  String get shrineProductClaySweater => 'Clay na sweater';

  @override
  String get shrineProductSeaTunic => 'Sea tunic';

  @override
  String get shrineProductPlasterTunic => 'Plaster na tunic';

  @override
  String get shrineProductWhitePinstripeShirt => 'Puting pinstripe na t-shirt';

  @override
  String get shrineProductChambrayShirt => 'Chambray na shirt';

  @override
  String get shrineProductSeabreezeSweater => 'Seabreeze na sweater';

  @override
  String get shrineProductGentryJacket => 'Gentry na jacket';

  @override
  String get shrineProductNavyTrousers => 'Navy na pantalon';

  @override
  String get shrineProductWalterHenleyWhite => 'Walter henley (puti)';

  @override
  String get shrineProductSurfAndPerfShirt => 'Surf and perf na t-shirt';

  @override
  String get shrineProductGingerScarf => 'Ginger na scarf';

  @override
  String get shrineProductRamonaCrossover => 'Ramona crossover';

  @override
  String get shrineProductClassicWhiteCollar => 'Classic na puting kwelyo';

  @override
  String get shrineProductCeriseScallopTee => 'Cerise na scallop na t-shirt';

  @override
  String get shrineProductShoulderRollsTee => 'Shoulder rolls na t-shirt';

  @override
  String get shrineProductGreySlouchTank => 'Grey na slouch tank';

  @override
  String get shrineProductSunshirtDress => 'Sunshirt na dress';

  @override
  String get shrineProductFineLinesTee => 'Fine lines na t-shirt';

  @override
  String get shrineTooltipSearch => 'Maghanap';

  @override
  String get shrineTooltipSettings => 'Mga Setting';

  @override
  String get shrineTooltipOpenMenu => 'Buksan ang menu';

  @override
  String get shrineTooltipCloseMenu => 'Isara ang menu';

  @override
  String get shrineTooltipCloseCart => 'Isara ang cart';

  @override
  String shrineScreenReaderCart(int quantity) {
    return intl.Intl.pluralLogic(
      quantity,
      locale: localeName,
      zero: 'Shopping cart, walang item',
      one: 'Shopping cart, 1 item',
      other: 'Shopping cart, ${quantity} na item',
    );
  }

  @override
  String get shrineScreenReaderProductAddToCart => 'Idagdag sa cart';

  @override
  String shrineScreenReaderRemoveProductButton(Object product) {
    return 'Alisin ang ${product}';
  }

  @override
  String get shrineTooltipRemoveItem => 'Alisin ang item';

  @override
  String get craneFormDiners => 'Mga Diner';

  @override
  String get craneFormDate => 'Pumili ng Petsa';

  @override
  String get craneFormTime => 'Pumili ng Oras';

  @override
  String get craneFormLocation => 'Pumili ng Lokasyon';

  @override
  String get craneFormTravelers => 'Mga Bumibiyahe';

  @override
  String get craneFormOrigin => 'Piliin ang Pinagmulan';

  @override
  String get craneFormDestination => 'Pumili ng Destinasyon';

  @override
  String get craneFormDates => 'Pumili ng Mga Petsa';

  @override
  String craneHours(int hours) {
    return intl.Intl.pluralLogic(
      hours,
      locale: localeName,
      one: '1h',
      other: '${hours}h',
    );
  }

  @override
  String craneMinutes(int minutes) {
    return intl.Intl.pluralLogic(
      minutes,
      locale: localeName,
      one: '1m',
      other: '${minutes}m',
    );
  }

  @override
  String craneFlightDuration(Object hoursShortForm, Object minutesShortForm) {
    return '${hoursShortForm} ${minutesShortForm}';
  }

  @override
  String get craneFly => 'LUMIPAD';

  @override
  String get craneSleep => 'MATULOG';

  @override
  String get craneEat => 'KUMAIN';

  @override
  String get craneFlySubhead => 'Mag-explore ng Mga Flight ayon sa Destinasyon';

  @override
  String get craneSleepSubhead =>
      'Mag-explore ng Mga Property ayon sa Destinasyon';

  @override
  String get craneEatSubhead =>
      'Mag-explore ng Mga Restaurant ayon sa Destinasyon';

  @override
  String craneFlyStops(int numberOfStops) {
    return intl.Intl.pluralLogic(
      numberOfStops,
      locale: localeName,
      zero: 'Nonstop',
      one: '1 stop',
      other: '${numberOfStops} na stop',
    );
  }

  @override
  String craneSleepProperties(int totalProperties) {
    return intl.Intl.pluralLogic(
      totalProperties,
      locale: localeName,
      zero: 'Walang Available na Property',
      one: '1 Available na Property',
      other: '${totalProperties} na Available na Property',
    );
  }

  @override
  String craneEatRestaurants(int totalRestaurants) {
    return intl.Intl.pluralLogic(
      totalRestaurants,
      locale: localeName,
      zero: 'Walang Restaurant',
      one: '1 Restaurant',
      other: '${totalRestaurants} na Restaurant',
    );
  }

  @override
  String get craneFly0 => 'Aspen, United States';

  @override
  String get craneFly1 => 'Big Sur, United States';

  @override
  String get craneFly2 => 'Khumbu Valley, Nepal';

  @override
  String get craneFly3 => 'Machu Picchu, Peru';

  @override
  String get craneFly4 => 'Malé, Maldives';

  @override
  String get craneFly5 => 'Vitznau, Switzerland';

  @override
  String get craneFly6 => 'Mexico City, Mexico';

  @override
  String get craneFly7 => 'Mount Rushmore, United States';

  @override
  String get craneFly8 => 'Singapore';

  @override
  String get craneFly9 => 'Havana, Cuba';

  @override
  String get craneFly10 => 'Cairo, Egypt';

  @override
  String get craneFly11 => 'Lisbon, Portugal';

  @override
  String get craneFly12 => 'Napa, United States';

  @override
  String get craneFly13 => 'Bali, Indonesia';

  @override
  String get craneSleep0 => 'Malé, Maldives';

  @override
  String get craneSleep1 => 'Aspen, United States';

  @override
  String get craneSleep2 => 'Machu Picchu, Peru';

  @override
  String get craneSleep3 => 'Havana, Cuba';

  @override
  String get craneSleep4 => 'Vitznau, Switzerland';

  @override
  String get craneSleep5 => 'Big Sur, United States';

  @override
  String get craneSleep6 => 'Napa, United States';

  @override
  String get craneSleep7 => 'Porto, Portugal';

  @override
  String get craneSleep8 => 'Tulum, Mexico';

  @override
  String get craneSleep9 => 'Lisbon, Portugal';

  @override
  String get craneSleep10 => 'Cairo, Egypt';

  @override
  String get craneSleep11 => 'Taipei, Taiwan';

  @override
  String get craneEat0 => 'Naples, Italy';

  @override
  String get craneEat1 => 'Dallas, United States';

  @override
  String get craneEat2 => 'Córdoba, Argentina';

  @override
  String get craneEat3 => 'Portland, United States';

  @override
  String get craneEat4 => 'Paris, France';

  @override
  String get craneEat5 => 'Seoul, South Korea';

  @override
  String get craneEat6 => 'Seattle, United States';

  @override
  String get craneEat7 => 'Nashville, United States';

  @override
  String get craneEat8 => 'Atlanta, United States';

  @override
  String get craneEat9 => 'Madrid, Spain';

  @override
  String get craneEat10 => 'Lisbon, Portugal';

  @override
  String get craneFly0SemanticLabel =>
      'Chalet sa isang maniyebeng tanawing may mga evergreen na puno';

  @override
  String get craneFly1SemanticLabel => 'Tent sa isang parang';

  @override
  String get craneFly2SemanticLabel =>
      'Mga prayer flag sa harap ng maniyebeng bundok';

  @override
  String get craneFly3SemanticLabel => 'Citadel ng Machu Picchu';

  @override
  String get craneFly4SemanticLabel => 'Mga bungalow sa ibabaw ng tubig';

  @override
  String get craneFly5SemanticLabel =>
      'Hotel sa tabi ng lawa sa harap ng mga bundok';

  @override
  String get craneFly6SemanticLabel =>
      'Tanawin mula sa himpapawid ng Palacio de Bellas Artes';

  @override
  String get craneFly7SemanticLabel => 'Mount Rushmore';

  @override
  String get craneFly8SemanticLabel => 'Supertree Grove';

  @override
  String get craneFly9SemanticLabel =>
      'Lalaking nakasandal sa isang antique na asul na sasakyan';

  @override
  String get craneFly10SemanticLabel =>
      'Mga tore ng Al-Azhar Mosque habang papalubog ang araw';

  @override
  String get craneFly11SemanticLabel => 'Brick na parola sa may dagat';

  @override
  String get craneFly12SemanticLabel => 'Pool na may mga palm tree';

  @override
  String get craneFly13SemanticLabel =>
      'Pool sa tabi ng dagat na may mga palm tree';

  @override
  String get craneSleep0SemanticLabel => 'Mga bungalow sa ibabaw ng tubig';

  @override
  String get craneSleep1SemanticLabel =>
      'Chalet sa isang maniyebeng tanawing may mga evergreen na puno';

  @override
  String get craneSleep2SemanticLabel => 'Citadel ng Machu Picchu';

  @override
  String get craneSleep3SemanticLabel =>
      'Lalaking nakasandal sa isang antique na asul na sasakyan';

  @override
  String get craneSleep4SemanticLabel =>
      'Hotel sa tabi ng lawa sa harap ng mga bundok';

  @override
  String get craneSleep5SemanticLabel => 'Tent sa isang parang';

  @override
  String get craneSleep6SemanticLabel => 'Pool na may mga palm tree';

  @override
  String get craneSleep7SemanticLabel =>
      'Makukulay na apartment sa Riberia Square';

  @override
  String get craneSleep8SemanticLabel =>
      'Mga Mayan na guho sa isang talampas sa itaas ng beach';

  @override
  String get craneSleep9SemanticLabel => 'Brick na parola sa may dagat';

  @override
  String get craneSleep10SemanticLabel =>
      'Mga tore ng Al-Azhar Mosque habang papalubog ang araw';

  @override
  String get craneSleep11SemanticLabel => 'Taipei 101 skyscraper';

  @override
  String get craneEat0SemanticLabel =>
      'Pizza sa loob ng oven na ginagamitan ng panggatong';

  @override
  String get craneEat1SemanticLabel =>
      'Walang taong bar na may mga upuang pang-diner';

  @override
  String get craneEat2SemanticLabel => 'Burger';

  @override
  String get craneEat3SemanticLabel => 'Korean taco';

  @override
  String get craneEat4SemanticLabel => 'Panghimagas na gawa sa tsokolate';

  @override
  String get craneEat5SemanticLabel =>
      'Artsy na seating area ng isang restaurant';

  @override
  String get craneEat6SemanticLabel => 'Putaheng may hipon';

  @override
  String get craneEat7SemanticLabel => 'Pasukan ng bakery';

  @override
  String get craneEat8SemanticLabel => 'Pinggan ng crawfish';

  @override
  String get craneEat9SemanticLabel =>
      'Counter na may mga pastry sa isang cafe';

  @override
  String get craneEat10SemanticLabel =>
      'Babaeng may hawak na malaking pastrami sandwich';

  @override
  String get fortnightlyMenuFrontPage => 'Front Page';

  @override
  String get fortnightlyMenuWorld => 'Mundo';

  @override
  String get fortnightlyMenuUS => 'US';

  @override
  String get fortnightlyMenuPolitics => 'Pulitika';

  @override
  String get fortnightlyMenuBusiness => 'Negosyo';

  @override
  String get fortnightlyMenuTech => 'Teknolohiya';

  @override
  String get fortnightlyMenuScience => 'Agham';

  @override
  String get fortnightlyMenuSports => 'Sports';

  @override
  String get fortnightlyMenuTravel => 'Paglalakbay';

  @override
  String get fortnightlyMenuCulture => 'Kultura';

  @override
  String get fortnightlyTrendingTechDesign => 'Disenyo ng Teknolohiya';

  @override
  String get fortnightlyTrendingReform => 'Reporma';

  @override
  String get fortnightlyTrendingHealthcareRevolution =>
      'Rebolusyon sa Pangangalaga sa Kalusugan';

  @override
  String get fortnightlyTrendingGreenArmy => 'GreenArmy';

  @override
  String get fortnightlyTrendingStocks => 'Mga Stock';

  @override
  String get fortnightlyLatestUpdates => 'Mga Pinakabagong Update';

  @override
  String get fortnightlyHeadlineHealthcare =>
      'Ang Tahimik Pero Makapangyarihang Rebolusyon sa Pangangalaga sa Kalusugan';

  @override
  String get fortnightlyHeadlineWar =>
      'Watak-watak na Buhay ng Mga Amerikano sa Panahon ng Digmaan';

  @override
  String get fortnightlyHeadlineGasoline => 'Ang Hinaharap ng Gasolina';

  @override
  String get fortnightlyHeadlineArmy => 'Pagreporma sa Green Army Mula sa Loob';

  @override
  String get fortnightlyHeadlineStocks =>
      'Habang Hindi Umuunlad ang Mga Stock, Marami ang Umaasa sa Currency';

  @override
  String get fortnightlyHeadlineFabrics =>
      'Gumagamit ng Teknolohiya ang Mga Designer para Gumawa ng Mga Napakamodernong Tela';

  @override
  String get fortnightlyHeadlineFeminists =>
      'Kinakaharap ng Mga Peminista ang Pagkiling';

  @override
  String get fortnightlyHeadlineBees =>
      'Kaunti na Lang ang Mga Pambukid na Bubuyog';
}
