// 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 Marathi (`mr`).
class GalleryLocalizationsMr extends GalleryLocalizations {
  GalleryLocalizationsMr([String locale = 'mr']) : super(locale);

  @override
  String githubRepo(Object repoName) {
    return '${repoName} GitHub रीपॉझिटरी';
  }

  @override
  String aboutDialogDescription(Object repoLink) {
    return 'या अ‍ॅपसाठी स्रोत कोड पाहण्याकरिता, कृपया ${repoLink} ला भेट द्या.';
  }

  @override
  String get signIn => 'साइन इन करा';

  @override
  String get bannerDemoText =>
      'तुमचा पासवर्ड तुमच्या इतर डिव्हाइसवर अपडेट केला गेला आहे. कृपया पुन्हा साइन इन करा.';

  @override
  String get bannerDemoResetText => 'बॅनर रीसेट करा';

  @override
  String get bannerDemoMultipleText => 'एकाहून अधिक कृती';

  @override
  String get bannerDemoLeadingText => 'सुरुवातीचा आयकन';

  @override
  String get dismiss => 'डिसमिस करा';

  @override
  String get backToGallery => 'गॅलरी मध्ये परत जा';

  @override
  String get cardsDemoTappable => 'टॅप करण्‍यायोग्य';

  @override
  String get cardsDemoSelectable => 'निवडण्यायोग्य (दाबून ठेवा)';

  @override
  String get cardsDemoExplore => 'एक्सप्लोर करा';

  @override
  String cardsDemoExploreSemantics(Object destinationName) {
    return 'एक्सप्लोर करा ${destinationName}';
  }

  @override
  String cardsDemoShareSemantics(Object destinationName) {
    return 'शेअर करा ${destinationName}';
  }

  @override
  String get cardsDemoTravelDestinationTitle1 =>
      'तामिळनाडू मध्ये भेट देण्यासाठी टॉप १० शहरे';

  @override
  String get cardsDemoTravelDestinationDescription1 => 'नंबर १०';

  @override
  String get cardsDemoTravelDestinationCity1 => 'तंजावर';

  @override
  String get cardsDemoTravelDestinationLocation1 => 'तंजावर, तामिळनाडू';

  @override
  String get cardsDemoTravelDestinationTitle2 => 'दक्षिण भारतातील कारागीर';

  @override
  String get cardsDemoTravelDestinationDescription2 => 'सिल्क स्पिनर';

  @override
  String get cardsDemoTravelDestinationCity2 => 'चेट्टीनाड';

  @override
  String get cardsDemoTravelDestinationLocation2 => 'शिवगंगा, तामिळनाडू';

  @override
  String get cardsDemoTravelDestinationTitle3 => 'बृहदेश्वर मंदिर';

  @override
  String get cardsDemoTravelDestinationDescription3 => 'मंदिरे';

  @override
  String get homeHeaderGallery => 'गॅलरी';

  @override
  String get homeHeaderCategories => 'वर्गवाऱ्या';

  @override
  String get shrineDescription => 'फॅशनेबल रिटेल अ‍ॅप';

  @override
  String get fortnightlyDescription =>
      'एका आशयावर केंद्रित असलेले बातम्यांचे ॲप';

  @override
  String get rallyDescription => 'वैयक्तिक अर्थसहाय्य अ‍ॅप';

  @override
  String get rallyAccountDataChecking => 'चेकिंग';

  @override
  String get rallyAccountDataHomeSavings => 'घर बचत';

  @override
  String get rallyAccountDataCarSavings => 'कार बचत';

  @override
  String get rallyAccountDataVacation => 'सुट्टी';

  @override
  String get rallyAccountDetailDataAnnualPercentageYield =>
      'वार्षिक टक्केवारी उत्‍पन्न';

  @override
  String get rallyAccountDetailDataInterestRate => 'व्याज दर';

  @override
  String get rallyAccountDetailDataInterestYtd => 'व्‍याज YTD';

  @override
  String get rallyAccountDetailDataInterestPaidLastYear =>
      'मागील वर्षी दिलेले व्याज';

  @override
  String get rallyAccountDetailDataNextStatement => 'पुढील विवरण';

  @override
  String get rallyAccountDetailDataAccountOwner => 'खाते मालक';

  @override
  String get rallyBillDetailTotalAmount => 'एकूण रक्कम';

  @override
  String get rallyBillDetailAmountPaid => 'भरलेली रक्कम';

  @override
  String get rallyBillDetailAmountDue => 'भरायची असलेली रक्कम';

  @override
  String get rallyBudgetCategoryCoffeeShops => 'कॉफीची दुकाने';

  @override
  String get rallyBudgetCategoryGroceries => 'किराणा माल';

  @override
  String get rallyBudgetCategoryRestaurants => 'रेस्टॉरंट';

  @override
  String get rallyBudgetCategoryClothing => 'कपडे';

  @override
  String get rallyBudgetDetailTotalCap => 'खर्चावरील एकूण मर्यादा';

  @override
  String get rallyBudgetDetailAmountUsed => 'वापरलेली रक्कम';

  @override
  String get rallyBudgetDetailAmountLeft => 'शिल्लक रक्कम';

  @override
  String get rallySettingsManageAccounts => 'खाती व्यवस्थापित करा';

  @override
  String get rallySettingsTaxDocuments => 'कर दस्तऐवज';

  @override
  String get rallySettingsPasscodeAndTouchId => 'पासकोड आणि स्पर्श आयडी';

  @override
  String get rallySettingsNotifications => 'सूचना';

  @override
  String get rallySettingsPersonalInformation => 'वैयक्तिक माहिती';

  @override
  String get rallySettingsPaperlessSettings => 'पेपरलेस सेटिंग्ज';

  @override
  String get rallySettingsFindAtms => 'ATM शोधा';

  @override
  String get rallySettingsHelp => 'मदत';

  @override
  String get rallySettingsSignOut => 'साइन आउट करा';

  @override
  String get rallyAccountTotal => 'एकूण';

  @override
  String get rallyBillsDue => 'शेवटची तारीख';

  @override
  String get rallyBudgetLeft => 'शिल्लक';

  @override
  String get rallyAccounts => 'खाती';

  @override
  String get rallyBills => 'बिले';

  @override
  String get rallyBudgets => 'बजेट';

  @override
  String get rallyAlerts => 'इशारे';

  @override
  String get rallySeeAll => 'सर्व पहा';

  @override
  String get rallyFinanceLeft => 'शिल्लक';

  @override
  String get rallyTitleOverview => 'अवलोकन';

  @override
  String get rallyTitleAccounts => 'खाती';

  @override
  String get rallyTitleBills => 'बिले';

  @override
  String get rallyTitleBudgets => 'बजेट';

  @override
  String get rallyTitleSettings => 'सेटिंग्ज';

  @override
  String get rallyLoginLoginToRally => 'Rally साठी लॉग इन करा';

  @override
  String get rallyLoginNoAccount => 'तुमच्याकडे खाते नाही?';

  @override
  String get rallyLoginSignUp => 'साइन अप करा';

  @override
  String get rallyLoginUsername => 'वापरकर्ता नाव';

  @override
  String get rallyLoginPassword => 'पासवर्ड';

  @override
  String get rallyLoginLabelLogin => 'लॉग इन करा';

  @override
  String get rallyLoginRememberMe => 'मला लक्षात ठेवा';

  @override
  String get rallyLoginButtonLogin => 'लॉग इन करा';

  @override
  String rallyAlertsMessageHeadsUpShopping(Object percent) {
    return 'पूर्वसूचना, तुम्ही या महिन्यासाठी तुमच्या खरेदीच्या बजेटचे ${percent} वापरले आहे.';
  }

  @override
  String rallyAlertsMessageSpentOnRestaurants(Object amount) {
    return 'तुम्ही या आठवड्यात रेस्टॉरंटवर ${amount} खर्च केले.';
  }

  @override
  String rallyAlertsMessageATMFees(Object amount) {
    return 'तुम्ही या महिन्यात ATM शुल्क म्हणून ${amount} खर्च केले';
  }

  @override
  String rallyAlertsMessageCheckingAccount(Object percent) {
    return 'उत्तम कामगिरी! तुमचे चेकिंग खाते मागील महिन्यापेक्षा ${percent} वर आहे.';
  }

  @override
  String rallyAlertsMessageUnassignedTransactions(int count) {
    return intl.Intl.pluralLogic(
      count,
      locale: localeName,
      one:
          'तुमची संभाव्य कर कपात वाढवा! एका असाइन न केलेल्या व्यवहाराला वर्गवाऱ्या असाइन करा.',
      other:
          'तुमची संभाव्य कर कपात वाढवा! ${count} असाइन न केलेल्या व्यवहारांना वर्गवाऱ्या असाइन करा.',
    );
  }

  @override
  String get rallySeeAllAccounts => 'सर्व खाती पाहा';

  @override
  String get rallySeeAllBills => 'सर्व बिल पाहा';

  @override
  String get rallySeeAllBudgets => 'सर्व बजेट पाहा';

  @override
  String rallyAccountAmount(
      Object accountName, Object accountNumber, Object amount) {
    return '${amount} ${accountName} चे खाते नंबर ${accountNumber} मध्ये जमा केले.';
  }

  @override
  String rallyBillAmount(Object billName, Object date, Object amount) {
    return '${billName} च्या ${amount} च्या बिलाची शेवटची तारीख ${date} आहे.';
  }

  @override
  String rallyBudgetAmount(Object budgetName, Object amountUsed,
      Object amountTotal, Object amountLeft) {
    return '${budgetName} च्या बजेटच्या एकूण ${amountTotal} मधून ${amountUsed} वापरले गेले आणि ${amountLeft} शिल्लक आहे';
  }

  @override
  String get craneDescription => 'पर्सनलाइझ केलेले प्रवास अ‍ॅप';

  @override
  String get homeCategoryReference => 'शैली आणि इतर';

  @override
  String get demoInvalidURL => 'URL प्रदर्शित करू शकलो नाही:';

  @override
  String get demoOptionsTooltip => 'पर्याय';

  @override
  String get demoInfoTooltip => 'माहिती';

  @override
  String get demoCodeTooltip => 'डेमो कोड';

  @override
  String get demoDocumentationTooltip => 'API दस्तऐवजीकरण';

  @override
  String get demoFullscreenTooltip => 'फुल-स्क्रीन';

  @override
  String get demoCodeViewerCopyAll => 'सर्व कॉपी करा';

  @override
  String get demoCodeViewerCopiedToClipboardMessage =>
      'क्लिपबोर्डवर कॉपी केला.';

  @override
  String demoCodeViewerFailedToCopyToClipboardMessage(Object error) {
    return 'क्लिपबोर्डवर कॉपी करता आला नाही: ${error}';
  }

  @override
  String get demoOptionsFeatureTitle => 'पर्याय पाहा';

  @override
  String get demoOptionsFeatureDescription =>
      'या डेमोसाठी उपलब्ध असलेले पर्याय पाहण्यासाठी येथे टॅप करा.';

  @override
  String get settingsTitle => 'सेटिंग्ज';

  @override
  String get settingsButtonLabel => 'सेटिंग्ज';

  @override
  String get settingsButtonCloseLabel => 'सेटिंग्ज बंद करा';

  @override
  String get settingsSystemDefault => 'सिस्टम';

  @override
  String get settingsTextScaling => 'मजकूर मापन';

  @override
  String get settingsTextScalingSmall => 'लहान';

  @override
  String get settingsTextScalingNormal => 'सामान्य';

  @override
  String get settingsTextScalingLarge => 'मोठे';

  @override
  String get settingsTextScalingHuge => 'प्रचंड';

  @override
  String get settingsTextDirection => 'मजकूर दिशा';

  @override
  String get settingsTextDirectionLocaleBased => 'लोकॅलवर आधारित';

  @override
  String get settingsTextDirectionLTR => 'LTR';

  @override
  String get settingsTextDirectionRTL => 'RTL';

  @override
  String get settingsLocale => 'लोकॅल';

  @override
  String get settingsPlatformMechanics => 'प्लॅटफॉर्म यांत्रिकी';

  @override
  String get settingsTheme => 'थीम';

  @override
  String get settingsDarkTheme => 'गडद';

  @override
  String get settingsLightTheme => 'फिकट';

  @override
  String get settingsSlowMotion => 'स्लो मोशन';

  @override
  String get settingsAbout => 'Flutter Gallery बद्दल';

  @override
  String get settingsFeedback => 'फीडबॅक पाठवा';

  @override
  String get settingsAttribution => 'लंडनच्या TOASTER यांनी डिझाइन केलेले';

  @override
  String get demoBottomAppBarTitle => 'तळाशी ॲप बार';

  @override
  String get demoBottomAppBarSubtitle => 'नेव्हिगेशन आणि अ‍ॅक्शन तळाशी दाखवते';

  @override
  String get demoBottomAppBarDescription =>
      'तळाशी असलेले बार तळाच्या नेव्हिगेशन ड्रॉवरचा आणि फ्लोटिंग अ‍ॅक्शन बटणाच्या समावेशासह कमाल चार अ‍ॅक्शनचा अ‍ॅक्सेस देते.';

  @override
  String get bottomAppBarNotch => 'नॉच';

  @override
  String get bottomAppBarPosition => 'फ्लोटिंग अ‍ॅक्शन बटणाचे स्थान';

  @override
  String get bottomAppBarPositionDockedEnd => 'डॉक केलेले - शेवटी';

  @override
  String get bottomAppBarPositionDockedCenter => 'डॉक केलेले - मध्यभागी';

  @override
  String get bottomAppBarPositionFloatingEnd => 'फ्लोटिंग - शेवटी';

  @override
  String get bottomAppBarPositionFloatingCenter => 'फ्लोटिंग - मध्यभागी';

  @override
  String get demoBannerTitle => 'बॅनर';

  @override
  String get demoBannerSubtitle => 'सूचीमध्ये एक बॅनर प्रदर्शित करत आहे';

  @override
  String get demoBannerDescription =>
      'बॅनर एक महत्त्वपूर्ण, संक्षिप्त मेसेज प्रदर्शित करतो आणि वापरकर्त्यांना सांगण्यासाठी क्रिया पुरवतो (किंवा बॅनर डिसमिस करतो). ते डिसमिस करण्यासाठी वापरकर्त्याची कृती आवश्यक आहे.';

  @override
  String get demoBottomNavigationTitle => 'तळाचे नेव्हिगेशन';

  @override
  String get demoBottomNavigationSubtitle =>
      'क्रॉस फेडिंग दृश्यांसह तळाचे नेव्हिगेशन';

  @override
  String get demoBottomNavigationPersistentLabels => 'सातत्यपूर्ण लेबले';

  @override
  String get demoBottomNavigationSelectedLabel => 'लेबल निवडले';

  @override
  String get demoBottomNavigationDescription =>
      'तळाचे नेव्हिगेशन बार स्क्रीनच्या तळाशी तीन ते पाच गंतव्यस्थाने दाखवतात. प्रत्येक गंतव्यस्थान आयकन आणि पर्यायी मजकूर लेबलने दर्शवलेले असते. तळाच्या नेव्हिगेशन आयकनवर टॅप केल्यावर, वापरकर्त्याला त्या आयकनशी संबद्ध असलेल्या उच्च स्तराच्या नेव्हिगेशन गंतव्यस्थानावर नेले जाते.';

  @override
  String get demoButtonTitle => 'बटणे';

  @override
  String get demoButtonSubtitle => 'सपाट, उंच केलेली, आउटलाइन आणि आणखी बरीच';

  @override
  String get demoFlatButtonTitle => 'चपटे बटण';

  @override
  String get demoFlatButtonDescription =>
      'एक चपटे बटण दाबल्यावर ते शाई उडवताना दाखवते पण ते उचलत नाही. टूलबारवर, डायलॉगमध्ये आणि पॅडिंगसह इनलाइनमध्ये चपटी बटणे वापरा';

  @override
  String get demoRaisedButtonTitle => 'उंच बटण';

  @override
  String get demoRaisedButtonDescription =>
      'उंच बटणे सहसा फ्लॅट लेआउटचे आकारमान निर्दिष्ट करतात. ते व्यस्त किंवा रूंद जागांवर फंक्शन लागू करतात.';

  @override
  String get demoOutlineButtonTitle => 'आउटलाइन बटण';

  @override
  String get demoOutlineButtonDescription =>
      'आउटलाइन बटणे दाबल्यानंतर अपारदर्शक होतात आणि वर येतात. एखादी पर्यायी, दुसरी क्रिया दाखवण्यासाठी ते सहसा उंच बटणांसोबत जोडली जातात.';

  @override
  String get demoToggleButtonTitle => 'टॉगल बटणे';

  @override
  String get demoToggleButtonDescription =>
      'संबंधित पर्यायांची गटांमध्ये विभागणी करण्यासाठी टॉगल बटणे वापरली जाऊ शकतात. संबंधित टॉगल बटणांच्या गटांवर लक्ष केंद्रीत करण्यासाठी प्रत्येक गटामध्ये एक समान घटक असणे आवश्यक आहे';

  @override
  String get demoFloatingButtonTitle => 'फ्लोटिंग ॲक्शन बटण';

  @override
  String get demoFloatingButtonDescription =>
      'ॲप्लिकेशनमध्ये प्राथमिक क्रिया करण्याचे सूचित करण्यासाठी आशयावर फिरणारे फ्लोटिंग ॲक्शन बटण हे गोलाकार आयकन बटण आहे.';

  @override
  String get demoCardTitle => 'कार्डे';

  @override
  String get demoCardSubtitle => 'गोलाकार कोपरे असलेली बेसलाइन कार्डे';

  @override
  String get demoChipTitle => 'चिप';

  @override
  String get demoCardDescription =>
      'कार्ड म्हणजे मटेरियल ची एक शीट आहे जी काही संबंधित माहितीचे प्रतिनिधित्व करण्यासाठी वापरली जाते, उदाहरणार्थ एखादा अल्बम, भौगोलिक स्थान, जेवण, संपर्क तपशील इ.';

  @override
  String get demoChipSubtitle =>
      'संक्षिप्त घटक इनपुट, विशेषता किंवा क्रिया सादर करतात';

  @override
  String get demoActionChipTitle => 'ॲक्शन चिप';

  @override
  String get demoActionChipDescription =>
      'अ‍ॅक्शन चिप पर्यायांचा एक समूह आहे जो प्राथमिक आशयाशी संबंधित असणाऱ्या कारवाईला ट्रिगर करतो. अ‍ॅक्शन चिप सतत बदलणानपसार आणि संदर्भानुसार UI मध्ये दिसल्या पाहिजेत.';

  @override
  String get demoChoiceChipTitle => 'चॉइस चिप';

  @override
  String get demoChoiceChipDescription =>
      'चॉईस चिप सेटमधून एकच निवड दाखवते. चॉइस चिपमध्ये संबंधित असणारा वर्णनात्मक मजकूर किंवा वर्गवाऱ्या असतात.';

  @override
  String get demoFilterChipTitle => 'फिल्टर चिप';

  @override
  String get demoFilterChipDescription =>
      'फिल्टर चिप टॅग किंवा वर्णनात्मक शब्दांचा वापर आशय फिल्टर करण्याचा एक मार्ग म्हणून करतात.';

  @override
  String get demoInputChipTitle => 'इनपुट चिप';

  @override
  String get demoInputChipDescription =>
      'इनपुट चिप या व्यक्ती/संस्था (व्यक्ती, जागा किंवा गोष्टी) किंवा संभाषणाचा एसएमएस यांसारखी क्लिष्ट माहिती संक्षिप्त स्वरुपात सादर करतात.';

  @override
  String get demoDataTableTitle => 'डेटा सारण्या';

  @override
  String get demoDataTableSubtitle => 'माहिती असलेल्या पंक्ती आणि स्तंभ';

  @override
  String get demoDataTableDescription =>
      'डेटा सारण्या पंक्ती आणि स्तंभांच्या ग्रिड सारख्या फॉरमॅटमध्ये माहिती प्रदर्शित करतात. स्कॅन करणे सोपे असेल अशाप्रकारे ते माहिती व्यवस्थापित करतात जेणेकरुन वापरकर्ते नमुने आणि इनसाइट शोधू शकतील.';

  @override
  String get dataTableHeader => 'पोषण';

  @override
  String get dataTableColumnDessert => 'डिझर्ट (१)';

  @override
  String get dataTableColumnCalories => 'कॅलरी';

  @override
  String get dataTableColumnFat => 'चरबी (ग्रॅ)';

  @override
  String get dataTableColumnCarbs => 'कर्बोदके (ग्रॅ)';

  @override
  String get dataTableColumnProtein => 'प्रथिने (ग्रॅ)';

  @override
  String get dataTableColumnSodium => 'सोडियम (मिग्रॅ)';

  @override
  String get dataTableColumnCalcium => 'कॅल्शिअम (%)';

  @override
  String get dataTableColumnIron => 'आयरन (%)';

  @override
  String get dataTableRowFrozenYogurt => 'फ्रोझन योगर्ट';

  @override
  String get dataTableRowIceCreamSandwich => 'आइस्क्रीम सँडविच';

  @override
  String get dataTableRowEclair => 'इक्लेअर';

  @override
  String get dataTableRowCupcake => 'कपकेक';

  @override
  String get dataTableRowGingerbread => 'जिंजरब्रेड';

  @override
  String get dataTableRowJellyBean => 'जेली बीन';

  @override
  String get dataTableRowLollipop => 'लॉलिपॉप';

  @override
  String get dataTableRowHoneycomb => 'हनीकोंब';

  @override
  String get dataTableRowDonut => 'डोनट';

  @override
  String get dataTableRowApplePie => 'अ‍ॅपल पाय';

  @override
  String dataTableRowWithSugar(Object value) {
    return 'साखरेचा समावेश असलेले ${value}';
  }

  @override
  String dataTableRowWithHoney(Object value) {
    return 'मधाचा समावेश असलेले ${value}';
  }

  @override
  String get demoDialogTitle => 'डायलॉग';

  @override
  String get demoDialogSubtitle => 'साधा, सूचना आणि फुलस्क्रीन';

  @override
  String get demoAlertDialogTitle => 'सूचना';

  @override
  String get demoAlertDialogDescription =>
      'सूचना डायलॉग हा वापरकर्त्यांना कबुली आवश्यक असलेल्या गोष्टींबद्दल सूचित करतो. सूचना डायलॉगमध्ये एक पर्यायी शीर्षक आणि एक पर्यायी क्रिया सूची असते';

  @override
  String get demoAlertTitleDialogTitle => 'शीर्षकाशी संबंधित सूचना';

  @override
  String get demoSimpleDialogTitle => 'साधा';

  @override
  String get demoSimpleDialogDescription =>
      'एक साधा डायलॉग अनेक पर्यायांमधून निवडण्याची वापरकर्त्याला संधी देतो. साध्या डायलॉगमध्ये एक पर्यायी शीर्षक असते जे निवडींच्या वरती दाखवले जाते.';

  @override
  String get demoGridListsTitle => 'ग्रिड सूची';

  @override
  String get demoGridListsSubtitle => 'पंक्ती आणि स्तंभाचा लेआउट';

  @override
  String get demoGridListsDescription =>
      'एकसारखा डेटा खासकरून इमेज सादर करण्यासाठी ग्रिड सूची अधिक योग्य आहेत. ग्रिड सूचीमधील प्रत्येक आयटमला टाइल म्हणतात.';

  @override
  String get demoGridListsImageOnlyTitle => 'फक्त इमेज';

  @override
  String get demoGridListsHeaderTitle => 'हेडरसह';

  @override
  String get demoGridListsFooterTitle => 'फूटरसह';

  @override
  String get demoSlidersTitle => 'स्लायडर';

  @override
  String get demoSlidersSubtitle =>
      'स्वाइप करून एखादे मूल्य निवडण्यासाठी विजेट';

  @override
  String get demoSlidersDescription =>
      'स्लाइडर बारच्या बरोबरीने मूल्यांच्या रेंज दाखवतात, ज्यामधून वापरकर्ते एखादे मूल्य निवडू शकतात. व्हॉल्यूम, ब्राइटनेस किंवा इमेज फिल्टर लागू करणे यांसारख्या अ‍ॅडजस्ट करणाऱ्या सेटिंग्जसाठी ते उत्तम आहेत.';

  @override
  String get demoRangeSlidersTitle => 'रेंज स्लायडर';

  @override
  String get demoRangeSlidersDescription =>
      'स्लाइडर एका बारसह मूल्यांच्या रेंज दाखवतात. त्यांच्याकडे बारच्या दोन्ही टोकांवर मूल्यांच्या रेंज दाखवणारी चिन्हे असू शकतात. व्हॉल्यूम, ब्राइटनेस किंवा इमेज फिल्टर लागू करणे यांसारख्या अ‍ॅडजस्ट करणाऱ्या सेटिंग्जसाठी ते उत्तम आहेत.';

  @override
  String get demoCustomSlidersTitle => 'कस्टम स्लायडर';

  @override
  String get demoCustomSlidersDescription =>
      'स्लाइडर बारच्या बरोबरीने मूल्यांच्या रेंज दाखवतात, ज्यामधून वापरकर्ते एखादे मूल्य किंवा मूल्यांची रेंज निवडू शकतात. स्लाइडर थीम आणि कस्टमाइझ केली जाऊ शकतात.';

  @override
  String get demoSlidersContinuousWithEditableNumericalValue =>
      'संपादित करण्यायोग्य सांख्यिकीय मूल्यासह सतत';

  @override
  String get demoSlidersDiscrete => 'वेगळे';

  @override
  String get demoSlidersDiscreteSliderWithCustomTheme =>
      'कस्टम थीमसह वेगळे स्लायडर';

  @override
  String get demoSlidersContinuousRangeSliderWithCustomTheme =>
      'कस्टम थीमसह सतत असणारा रेंज स्लायडर';

  @override
  String get demoSlidersContinuous => 'सतत';

  @override
  String get demoSlidersEditableNumericalValue => 'संपादित करण्यायोग्य मूल्य';

  @override
  String get demoMenuTitle => 'मेनू';

  @override
  String get demoContextMenuTitle => 'काँटेक्स्ट मेनू';

  @override
  String get demoSectionedMenuTitle => 'विभागित मेनू';

  @override
  String get demoSimpleMenuTitle => 'सोपा मेनू';

  @override
  String get demoChecklistMenuTitle => 'चेकलिस्ट मेनू';

  @override
  String get demoMenuSubtitle => 'मेनू बटण आणि सोपा मेनू';

  @override
  String get demoMenuDescription =>
      'मेनू तात्पुरत्या पृष्ठभागावर निवडींची एक सूची दाखवतो. वापरकर्ते बटण, कृती किंवा अन्य नियंत्रणे वापरून संवाद साधतात तेव्हा ते दिसतात.';

  @override
  String get demoMenuItemValueOne => 'पहिला मेनू आयटम';

  @override
  String get demoMenuItemValueTwo => 'दुसरा मेनू आयटम';

  @override
  String get demoMenuItemValueThree => 'तिसरा मेनू आयटम';

  @override
  String get demoMenuOne => 'एक';

  @override
  String get demoMenuTwo => 'दोन';

  @override
  String get demoMenuThree => 'तीन';

  @override
  String get demoMenuFour => 'चार';

  @override
  String get demoMenuAnItemWithAContextMenuButton =>
      'कॉंटेक्स्ट मेनू असलेला एक आयटम';

  @override
  String get demoMenuContextMenuItemOne => 'कॉंटेक्स्ट मेनू आयटम एक';

  @override
  String get demoMenuADisabledMenuItem => 'मेनू आयटम बंद केला';

  @override
  String get demoMenuContextMenuItemThree => 'कॉंटेक्स्ट मेनू आयटम तीन';

  @override
  String get demoMenuAnItemWithASectionedMenu => 'विभागाचा मेनू असलेला एक आयटम';

  @override
  String get demoMenuPreview => 'पूर्वावलोकन';

  @override
  String get demoMenuShare => 'शेअर करा';

  @override
  String get demoMenuGetLink => 'लिंक मिळवा';

  @override
  String get demoMenuRemove => 'काढा';

  @override
  String demoMenuSelected(Object value) {
    return 'निवडलेले: ${value}';
  }

  @override
  String demoMenuChecked(Object value) {
    return 'तपासलेले: ${value}';
  }

  @override
  String get demoMenuAnItemWithASimpleMenu => 'सोपा मेनू असलेला एक आयटम';

  @override
  String get demoMenuAnItemWithAChecklistMenu => 'चेकलिस्ट मेनू असलेला एक आयटम';

  @override
  String get demoFullscreenDialogTitle => 'फुलस्क्रीन';

  @override
  String get demoFullscreenDialogDescription =>
      'fullscreenDialog प्रॉपर्टी ही येणारे पेज फुलस्क्रीन मोडाल डायलॉग आहे की नाही ते नमूद करते';

  @override
  String get demoCupertinoActivityIndicatorTitle => 'अ‍ॅक्टिव्हिटी इंडिकेटर';

  @override
  String get demoCupertinoActivityIndicatorSubtitle =>
      'iOS शैलीतील अ‍ॅक्टिव्हिटी इंडिकेटर';

  @override
  String get demoCupertinoActivityIndicatorDescription =>
      'एक iOS शैलीतील घड्याळाच्या काट्याच्या दिशेने गोल फिरणारे अ‍ॅक्टिव्हिटी इंडिकेटर';

  @override
  String get demoCupertinoButtonsTitle => 'बटणे';

  @override
  String get demoCupertinoButtonsSubtitle => 'iOS शैली बटण';

  @override
  String get demoCupertinoButtonsDescription =>
      'एक iOS शैलीतील बटण. स्पर्श केल्यावर फिका होणार्‍या आणि न होणार्‍या मजकूरचा आणि/किंवा आयकनचा यामध्ये समावेश आहे यामध्ये पर्यायी एक बॅकग्राउंड असू शकतो.';

  @override
  String get demoCupertinoAlertsTitle => 'सूचना';

  @override
  String get demoCupertinoAlertsSubtitle => 'iOS शैलीचे सूचना डायलॉग';

  @override
  String get demoCupertinoAlertTitle => 'इशारा';

  @override
  String get demoCupertinoAlertDescription =>
      'सूचना डायलॉग हा वापरकर्त्यांना कबुली आवश्यक असलेल्या गोष्टींबद्दल सूचित करतो. एका सूचना डायलॉगमध्ये एक पर्यायी शीर्षक, पर्यायी आशय आणि एक पर्यायी क्रिया सूची असते. शीर्षक हे मजकूराच्या वरती दाखवले जाते आणि क्रिया ही मजकूराच्या खाली दाखवली जाते.';

  @override
  String get demoCupertinoAlertWithTitleTitle => 'शीर्षकाशी संबंधित सूचना';

  @override
  String get demoCupertinoAlertButtonsTitle => 'बटणांशी संबंधित सूचना';

  @override
  String get demoCupertinoAlertButtonsOnlyTitle => 'फक्त सूचना बटणे';

  @override
  String get demoCupertinoActionSheetTitle => 'क्रिया पत्रक';

  @override
  String get demoCupertinoActionSheetDescription =>
      'क्रिया पत्रक हा सूचनेचा एक विशिष्ट प्रकार आहे जो वापरकर्त्याला सध्याच्या संदर्भाशी संबंधित दोन किंवा त्याहून जास्त निवडी देतो. एका क्रिया पत्रकामध्ये शीर्षक, एक अतिरिक्त मेसेज आणि क्रियांची सूची असते.';

  @override
  String get demoCupertinoNavigationBarTitle => 'नॅव्हिगेशन बार';

  @override
  String get demoCupertinoNavigationBarSubtitle => 'iOS शैलीतील नेव्हिगेशन बार';

  @override
  String get demoCupertinoNavigationBarDescription =>
      'एक iOS शैलीतील नेव्हिगेशन बार. नेव्हिगेशन बार हा असा टूलबार आहे ज्यामध्ये टूलबारच्या मधोमध किमान पेजच्या शीर्षकाचा समावेश आहे.';

  @override
  String get demoCupertinoPickerTitle => 'पिकर';

  @override
  String get demoCupertinoPickerSubtitle => 'iOS-शैलीतील तारीख आणि वेळ पिकर';

  @override
  String get demoCupertinoPickerDescription =>
      'तारीख, वेळ किंवा हे दोन्ही निवडण्यासाठी वापरले जाणारे एक iOS-शैलीतील पिकर विजेट.';

  @override
  String get demoCupertinoPickerTimer => 'टायमर';

  @override
  String get demoCupertinoPickerDate => 'तारीख';

  @override
  String get demoCupertinoPickerTime => 'वेळ';

  @override
  String get demoCupertinoPickerDateTime => 'तारीख आणि वेळ';

  @override
  String get demoCupertinoPullToRefreshTitle => 'रिफ्रेश करण्यासाठी ओढा';

  @override
  String get demoCupertinoPullToRefreshSubtitle =>
      'iOS शैलीचे रिफ्रेश करण्यासाठी ओढा नियंत्रण';

  @override
  String get demoCupertinoPullToRefreshDescription =>
      'iOS शैलीचे रीफ्रेश करण्यासाठी ओढामधील आशय नियंत्रण याची अंमलबजावणी करणारे विजेट.';

  @override
  String get demoCupertinoSegmentedControlTitle => 'विभाजित नियंत्रण';

  @override
  String get demoCupertinoSegmentedControlSubtitle =>
      'iOS शैलीचे विभाजित नियंत्रण';

  @override
  String get demoCupertinoSegmentedControlDescription =>
      'परस्पर अनन्य पर्यायांच्या दरम्यान नंबर निवडण्यासाठी वापरले जाते. विभाजित नियंत्रणामधून एक पर्याय निवडलेले असते तेव्हा विभाजित नियंत्रणातील इतर पर्याय निवडणे जाणे थांबवले जातात.';

  @override
  String get demoCupertinoSliderTitle => 'स्लायडर';

  @override
  String get demoCupertinoSliderSubtitle => 'iOS-शैली स्लायडर';

  @override
  String get demoCupertinoSliderDescription =>
      'स्लायडरचा वापर सलग किंवा भिन्न मूल्यांच्या संचामधून निवडण्यासाठी केला जाऊ शकतो.';

  @override
  String demoCupertinoSliderContinuous(Object value) {
    return 'सतत: ${value}';
  }

  @override
  String demoCupertinoSliderDiscrete(Object value) {
    return 'भिन्न: ${value}';
  }

  @override
  String get demoCupertinoSwitchSubtitle => 'iOS-शैली स्विच';

  @override
  String get demoCupertinoSwitchDescription =>
      'एका सेटिंगची सुरू/बंद स्थिती टॉगल करण्यासाठी स्विचचा वापर केला जातो.';

  @override
  String get demoCupertinoTabBarTitle => 'टॅब बार';

  @override
  String get demoCupertinoTabBarSubtitle => 'iOS- शैलीतील तळाशी टॅब बार';

  @override
  String get demoCupertinoTabBarDescription =>
      'एक iOS-शैलीतील तळाशी नेव्हिगेशन टॅब बार. एक टॅब सुरू असताना एकाहून अधिक टॅब दाखवते, पहिला टॅब बाय डीफॉल्ट असतो.';

  @override
  String get cupertinoTabBarHomeTab => 'होम';

  @override
  String get cupertinoTabBarChatTab => 'चॅट';

  @override
  String get cupertinoTabBarProfileTab => 'प्रोफाइल';

  @override
  String get demoCupertinoTextFieldTitle => 'मजकूर भाग';

  @override
  String get demoCupertinoTextFieldSubtitle => 'iOS-शैलीतील मजकूर भाग';

  @override
  String get demoCupertinoTextFieldDescription =>
      'मजकूर फील्ड वापरकर्त्याला हार्डवेअर कीबोर्ड किंवा ऑनस्क्रीन कीबोर्ड वापरून मजकूर एंटर करू देते.';

  @override
  String get demoCupertinoTextFieldPIN => 'पिन';

  @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 => 'रंग';

  @override
  String get demoColorsSubtitle => 'पूर्वानिर्धारित केलेले सर्व रंग';

  @override
  String get demoColorsDescription =>
      'मटेरिअल डिझाइनचे कलर पॅलेट दर्शवणारे रंग आणि कलर स्वॅच स्थिरांक.';

  @override
  String get demoTypographyTitle => 'टायपोग्राफी';

  @override
  String get demoTypographySubtitle => 'सर्व पूर्वपरिभाषित मजकूर शैली';

  @override
  String get demoTypographyDescription =>
      'मटेरिअल डिझाइन मध्ये सापडणार्‍या विविध टायपोग्राफिकल शैलींच्या परिभाषा.';

  @override
  String get demo2dTransformationsTitle => '2D रुपांतरे';

  @override
  String get demo2dTransformationsSubtitle => 'पॅन करा, झूम करा, फिरवा';

  @override
  String get demo2dTransformationsDescription =>
      'टाइल संपादित करण्यासाठी टॅप करा आणि देखाव्याभोवती फिरण्यासाठी जेश्चर वापरा. पॅन करण्यासाठी ड्रॅग करा, झूम करण्यासाठी पिंच करा, दोन बोटांनी फिरवा. सुरुवातीच्या ओरिएंटेशनवर पुन्हा जाण्यासाठी रीसेट बटण दाबा.';

  @override
  String get demo2dTransformationsResetTooltip => 'रुपांतरे रीसेट करा';

  @override
  String get demo2dTransformationsEditTooltip => 'टाइल संपादित करा';

  @override
  String get buttonText => 'बटण';

  @override
  String get demoBottomSheetTitle => 'तळाचे पत्रक';

  @override
  String get demoBottomSheetSubtitle => 'सातत्यपूर्ण आणि मोडल तळाची पत्रके';

  @override
  String get demoBottomSheetPersistentTitle => 'सातत्यपूर्ण तळाचे पत्रक';

  @override
  String get demoBottomSheetPersistentDescription =>
      'सातत्यपूर्ण तळाचे पत्रक अ‍ॅपच्या प्राथमिक आशयाला पूरक असलेली माहिती दाखवते. वापरकर्ता अ‍ॅपच्या इतर भागांसोबत परस्परसंवाद साधत असतानादेखील सातत्यपूर्ण तळाचे पत्रक दृश्यमान राहते.';

  @override
  String get demoBottomSheetModalTitle => 'मोडल तळाचे पत्रक';

  @override
  String get demoBottomSheetModalDescription =>
      'मोडल तळाचे पत्रक मेनू किंवा डायलॉगचा पर्याय आहे आणि ते वापरकर्त्याला बाकीच्या अ‍ॅपशी परस्परसंवाद साधण्यापासून रोखते.';

  @override
  String get demoBottomSheetAddLabel => 'जोडा';

  @override
  String get demoBottomSheetButtonText => 'तळाचे पत्रक दाखवा';

  @override
  String get demoBottomSheetHeader => 'शीर्षलेख';

  @override
  String demoBottomSheetItem(Object value) {
    return 'आयटम ${value}';
  }

  @override
  String get demoListsTitle => 'सूची';

  @override
  String get demoListsSubtitle => 'सूची स्क्रोल करण्याचा लेआउट';

  @override
  String get demoListsDescription =>
      'एका निश्चित केलेल्या उंच पंक्तीमध्ये सामान्यतः थोड्या मजकुराचा तसेच एखादा लीडिंग किंवा ट्रेलिंग आयकनचा समावेश असतो.';

  @override
  String get demoOneLineListsTitle => 'एक ओळ';

  @override
  String get demoTwoLineListsTitle => 'दोन ओळी';

  @override
  String get demoListsSecondary => 'दुय्यम मजकूर';

  @override
  String get demoProgressIndicatorTitle => 'प्रगती इंडिकेटर';

  @override
  String get demoProgressIndicatorSubtitle => 'लिनिअर, परिपत्रक, अनिश्चित';

  @override
  String get demoCircularProgressIndicatorTitle => 'परिपत्रक प्रगती इंडिकेटर';

  @override
  String get demoCircularProgressIndicatorDescription =>
      'अ‍ॅप्लिकेशन काम करत आहे हे दाखवण्यासाठी गोल फिरणारे मटेरिअल डिझाइन परिपत्रक प्रगती इंडिकेटर आहे.';

  @override
  String get demoLinearProgressIndicatorTitle => 'लिनिअर प्रगती इंडिकेटर';

  @override
  String get demoLinearProgressIndicatorDescription =>
      'प्रगती बारला मटेरिअल डिझाइन लिनिअर प्रगती इंडिकेटर म्हणूनदेखील ओळखले जाते.';

  @override
  String get demoPickersTitle => 'पिकर';

  @override
  String get demoPickersSubtitle => 'तारीख आणि वेळ निवड';

  @override
  String get demoDatePickerTitle => 'तारीख पिकर';

  @override
  String get demoDatePickerDescription =>
      'मटेरियल डिझाइन ची तारीख पिकर असलेला डायलॉग दाखवतो.';

  @override
  String get demoTimePickerTitle => 'वेळ पिकर';

  @override
  String get demoTimePickerDescription =>
      'मटेरियल डिझाइन ची वेळ पिकर असलेला डायलॉग दाखवतो.';

  @override
  String get demoPickersShowPicker => 'पिकर दाखवा';

  @override
  String get demoTabsTitle => 'टॅब';

  @override
  String get demoTabsScrollingTitle => 'स्क्रोल करणारा';

  @override
  String get demoTabsNonScrollingTitle => 'स्क्रोल न करणारा';

  @override
  String get demoTabsSubtitle => 'स्वतंत्रपणे स्क्रोल करण्यायोग्य व्ह्यूचे टॅब';

  @override
  String get demoTabsDescription =>
      'टॅब विविध स्क्रीन, डेटा सेट आणि इतर परस्‍परसंवादावर आशय व्यवस्थापित करतात.';

  @override
  String get demoSnackbarsTitle => 'स्नॅकबार';

  @override
  String get demoSnackbarsSubtitle =>
      'स्नॅकबार स्क्रीनच्या तळाशी संदेश दाखवतात';

  @override
  String get demoSnackbarsDescription =>
      'स्नॅकबार प्रक्रिया वापरकर्त्यांना ॲप काम करत आहे किंवा काम करेल याची माहिती देते. ते स्क्रीनच्या तळाशी तात्पुरते दिसतात. ते वापरकर्त्याच्या अनुभवात व्यत्यय आणत नाही आणि त्यांना वापरकर्ता इनपुट अदृश्य करण्याची आवश्यकता नाही.';

  @override
  String get demoSnackbarsButtonLabel => 'स्नॅकबार दाखवा';

  @override
  String get demoSnackbarsText => 'हा एक स्नॅकबार आहे.';

  @override
  String get demoSnackbarsActionButtonLabel => 'अ‍ॅक्‍शन';

  @override
  String get demoSnackbarsAction => 'तुम्ही स्नॅकबार ॲक्शन दाबले आहे.';

  @override
  String get demoSelectionControlsTitle => 'निवडीची नियंत्रणे';

  @override
  String get demoSelectionControlsSubtitle => 'चेकबॉक्स, रेडिओ बटणे आणि स्विच';

  @override
  String get demoSelectionControlsCheckboxTitle => 'चेकबॉक्स';

  @override
  String get demoSelectionControlsCheckboxDescription =>
      'चेकबॉक्स हे संचामधून एकाहून अधिक पर्याय निवडण्याची अनुमती देतात. सामान्य चेकबॉक्सचे मूल्य खरे किंवा खोटे असते आणि ट्रायस्टेट चेकबॉक्सचे मूल्य शून्यदेखील असू शकते.';

  @override
  String get demoSelectionControlsRadioTitle => 'रेडिओ';

  @override
  String get demoSelectionControlsRadioDescription =>
      'रेडिओ बटणे वापरकर्त्याला संचामधून एक पर्याय निवडण्याची अनुमती देतात. वापरकर्त्याला त्याचवेळी सर्व उपलब्ध पर्याय पाहायचे आहेत असे तुम्हाला वाटत असल्यास, विशेष निवडीसाठी रेडिओ बटणे वापरा.';

  @override
  String get demoSelectionControlsSwitchTitle => 'स्विच';

  @override
  String get demoSelectionControlsSwitchDescription =>
      'स्विच सुरू/बंद करणे हे सिंगल सेटिंग्ज पर्यायाची स्थिती टॉगल करते. स्विच नियंत्रित करतो तो पर्याय, तसेच त्यामध्ये त्याची स्थिती ही संबंधित इनलाइन लेबलनुसार स्पष्ट करावी.';

  @override
  String get demoBottomTextFieldsTitle => 'मजकूर भाग';

  @override
  String get demoTextFieldTitle => 'मजकूर भाग';

  @override
  String get demoTextFieldSubtitle =>
      'संपादित करता येणार्‍या मजकूर आणि अंकांची एकच ओळ';

  @override
  String get demoTextFieldDescription =>
      'मजकूर भाग वापरकर्त्यांना UI मध्ये मजकूर एंटर करू देतात. ते सर्वसाधारणपणे फॉर्म आणि डायलॉगमध्ये दिसतात.';

  @override
  String get demoTextFieldShowPasswordLabel => 'पासवर्ड दाखवा';

  @override
  String get demoTextFieldHidePasswordLabel => 'पासवर्ड लपवा';

  @override
  String get demoTextFieldFormErrors =>
      'सबमिट करण्यापूर्वी लाल रंगातील एरर दुरुस्त करा.';

  @override
  String get demoTextFieldNameRequired => 'नाव आवश्‍यक आहे.';

  @override
  String get demoTextFieldOnlyAlphabeticalChars =>
      'कृपया फक्त वर्णक्रमाने वर्ण एंटर करा.';

  @override
  String get demoTextFieldEnterUSPhoneNumber =>
      '(###) ###-#### - यूएस फोन नंबर एंटर करा.';

  @override
  String get demoTextFieldEnterPassword => 'कृपया पासवर्ड एंटर करा.';

  @override
  String get demoTextFieldPasswordsDoNotMatch => 'पासवर्ड जुळत नाहीत';

  @override
  String get demoTextFieldWhatDoPeopleCallYou => 'लोक तुम्हाला काय म्हणतात?';

  @override
  String get demoTextFieldNameField => 'नाव*';

  @override
  String get demoTextFieldWhereCanWeReachYou =>
      'आम्ही तुमच्याशी कुठे संपर्क साधू करू शकतो?';

  @override
  String get demoTextFieldPhoneNumber => 'फोन नंबर*';

  @override
  String get demoTextFieldYourEmailAddress => 'तुमचा ईमेल अ‍ॅड्रेस';

  @override
  String get demoTextFieldEmail => 'ईमेल';

  @override
  String get demoTextFieldTellUsAboutYourself =>
      'आम्हाला तुमच्याबद्दल सांगा (उदा., तुम्ही काय करता आणि तुम्हाला कोणते छंद आहेत ते लिहा)';

  @override
  String get demoTextFieldKeepItShort => 'ते लहान ठेवा, हा फक्त डेमो आहे.';

  @override
  String get demoTextFieldLifeStory => 'जीवनकथा';

  @override
  String get demoTextFieldSalary => 'पगार';

  @override
  String get demoTextFieldUSD => 'USD';

  @override
  String get demoTextFieldNoMoreThan => '८ वर्णांपेक्षा जास्त नको.';

  @override
  String get demoTextFieldPassword => 'पासवर्ड*';

  @override
  String get demoTextFieldRetypePassword => 'पासवर्ड पुन्हा टाइप करा*';

  @override
  String get demoTextFieldSubmit => 'सबमिट करा';

  @override
  String demoTextFieldNameHasPhoneNumber(Object name, Object phoneNumber) {
    return '${name} फोन नंबर ${phoneNumber} आहे';
  }

  @override
  String get demoTextFieldRequiredField => '* आवश्यक फील्ड सूचित करते';

  @override
  String get demoTooltipTitle => 'टूलटिप';

  @override
  String get demoTooltipSubtitle =>
      'दाबून ठेवल्यावर किंवा फिरवल्यावर लहान मेसेज दाखवला जाईल';

  @override
  String get demoTooltipDescription =>
      'टूलटिप्स मजकूर लेबले पुरवतात जी बटणाचे कार्य किंवा इतर वापरकर्ता इंटरफेस कृतीचे स्पष्टीकरण देण्यात मदत करतात. वापरकर्ते एखाद्या घटकावर फिरवतात, त्यावर लक्ष केंद्रित करतात किंवा दाबून ठेवतात तेव्हा टूलटिप्स माहितीपूर्ण मजकूर प्रदर्शित करतात.';

  @override
  String get demoTooltipInstructions =>
      'टूलटिप डिस्प्ले करण्यासाठी दाबून ठेवा किंवा फिरवा.';

  @override
  String get bottomNavigationCommentsTab => 'टिप्पण्या';

  @override
  String get bottomNavigationCalendarTab => 'Calendar';

  @override
  String get bottomNavigationAccountTab => 'खाते';

  @override
  String get bottomNavigationAlarmTab => 'अलार्म';

  @override
  String get bottomNavigationCameraTab => 'कॅमेरा';

  @override
  String bottomNavigationContentPlaceholder(Object title) {
    return '${title} टॅबसाठी प्लेसहोल्डर';
  }

  @override
  String get buttonTextCreate => 'तयार करा';

  @override
  String dialogSelectedOption(Object value) {
    return 'तुम्ही निवडली: \"${value}\"';
  }

  @override
  String get chipTurnOnLights => 'लाइट सुरू करा';

  @override
  String get chipSmall => 'लहान';

  @override
  String get chipMedium => 'मध्यम';

  @override
  String get chipLarge => 'मोठे';

  @override
  String get chipElevator => 'लिफ्ट';

  @override
  String get chipWasher => 'वॉशर';

  @override
  String get chipFireplace => 'फायरप्लेस';

  @override
  String get chipBiking => 'सायकल चालवणे';

  @override
  String get dialogDiscardTitle => 'मसुदा काढून टाकायचा आहे का?';

  @override
  String get dialogLocationTitle => 'Google ची स्थान सेवा वापरायची का?';

  @override
  String get dialogLocationDescription =>
      'अ‍ॅप्सना स्थान शोधण्यात Google ला मदत करू द्या. म्हणजेच कोणतीही अ‍ॅप्स सुरू नसतानादेखील Google ला अनामित स्थान डेटा पाठवणे.';

  @override
  String get dialogCancel => 'रद्द करा';

  @override
  String get dialogDiscard => 'काढून टाका';

  @override
  String get dialogDisagree => 'सहमत नाही';

  @override
  String get dialogAgree => 'सहमत आहे';

  @override
  String get dialogSetBackup => 'बॅकअप खाते सेट करा';

  @override
  String get dialogAddAccount => 'खाते जोडा';

  @override
  String get dialogShow => 'डायलॉग दाखवा';

  @override
  String get dialogFullscreenTitle => 'फुल स्क्रीन डायलॉग';

  @override
  String get dialogFullscreenSave => 'सेव्ह करा';

  @override
  String get dialogFullscreenDescription => 'फुल स्क्रीन डायलॉग डेमो';

  @override
  String get cupertinoButton => 'बटण';

  @override
  String get cupertinoButtonWithBackground => 'बॅकग्राउंडसह';

  @override
  String get cupertinoAlertCancel => 'रद्द करा';

  @override
  String get cupertinoAlertDiscard => 'काढून टाका';

  @override
  String get cupertinoAlertLocationTitle =>
      'तुम्ही ॲप वापरत असताना \"Maps\" ला तुमचे स्थान ॲक्सेस करण्याची अनुमती द्यायची का?';

  @override
  String get cupertinoAlertLocationDescription =>
      'तुमचे सध्याचे स्थान नकाशावर दाखवले जाईल आणि दिशानिर्देश, जवळपासचे शोध परिणाम व प्रवासाचा अंदाजे वेळ दाखवण्यासाठी वापरले जाईल.';

  @override
  String get cupertinoAlertAllow => 'अनुमती द्या';

  @override
  String get cupertinoAlertDontAllow => 'अनुमती देऊ नका';

  @override
  String get cupertinoAlertFavoriteDessert => 'आवडते डेझर्ट निवडा';

  @override
  String get cupertinoAlertDessertDescription =>
      'कृपया खालील सूचीमधून तुमच्या आवडत्या डेझर्टचा प्रकार निवडा. तुमच्या परिसरातील सुचवलेल्या उपहारगृहांची सूची कस्टमाइझ करण्यासाठी तुमच्या निवडीचा उपयोग केला जाईल.';

  @override
  String get cupertinoAlertCheesecake => 'चीझकेक';

  @override
  String get cupertinoAlertTiramisu => 'तिरामिसू';

  @override
  String get cupertinoAlertApplePie => 'ॲपल पाय';

  @override
  String get cupertinoAlertChocolateBrownie => 'चॉकलेट ब्राउनी';

  @override
  String get cupertinoShowAlert => 'सूचना दाखवा';

  @override
  String get colorsRed => 'लाल';

  @override
  String get colorsPink => 'गुलाबी';

  @override
  String get colorsPurple => 'जांभळा';

  @override
  String get colorsDeepPurple => 'गडद जांभळा';

  @override
  String get colorsIndigo => 'आकाशी निळा';

  @override
  String get colorsBlue => 'निळा';

  @override
  String get colorsLightBlue => 'फिकट निळा';

  @override
  String get colorsCyan => 'निळसर';

  @override
  String get colorsTeal => 'हिरवट निळा';

  @override
  String get colorsGreen => 'हिरवा';

  @override
  String get colorsLightGreen => 'फिकट हिरवा';

  @override
  String get colorsLime => 'लिंबू रंग';

  @override
  String get colorsYellow => 'पिवळा';

  @override
  String get colorsAmber => 'मातकट रंग';

  @override
  String get colorsOrange => 'नारिंगी';

  @override
  String get colorsDeepOrange => 'गडद नारिंगी';

  @override
  String get colorsBrown => 'तपकिरी';

  @override
  String get colorsGrey => 'राखाडी';

  @override
  String get colorsBlueGrey => 'निळसर राखाडी';

  @override
  String get placeChennai => 'चेन्नई';

  @override
  String get placeTanjore => 'तंजोर';

  @override
  String get placeChettinad => 'चेट्टीनाड';

  @override
  String get placePondicherry => 'पाँडिचेरी';

  @override
  String get placeFlowerMarket => 'फुल मार्केट';

  @override
  String get placeBronzeWorks => 'काशासंबंधित काम';

  @override
  String get placeMarket => 'मार्केट';

  @override
  String get placeThanjavurTemple => 'तंजावर मंदिर';

  @override
  String get placeSaltFarm => 'मीठागर';

  @override
  String get placeScooters => 'स्कूटर';

  @override
  String get placeSilkMaker => 'सिल्क मेकर';

  @override
  String get placeLunchPrep => 'जेवणासाठी खाद्यपदार्थ';

  @override
  String get placeBeach => 'समुद्रकिनारा';

  @override
  String get placeFisherman => 'कोळी';

  @override
  String get starterAppTitle => 'स्टार्टर अ‍ॅप';

  @override
  String get starterAppDescription => 'प्रतिसादात्मक स्टार्टर लेआउट';

  @override
  String get starterAppGenericButton => 'बटण';

  @override
  String get starterAppTooltipAdd => 'जोडा';

  @override
  String get starterAppTooltipFavorite => 'आवडते';

  @override
  String get starterAppTooltipShare => 'शेअर करा';

  @override
  String get starterAppTooltipSearch => 'शोधा';

  @override
  String get starterAppGenericTitle => 'शीर्षक';

  @override
  String get starterAppGenericSubtitle => 'उपशीर्षक';

  @override
  String get starterAppGenericHeadline => 'ठळक शीर्षक';

  @override
  String get starterAppGenericBody => 'मुख्य मजकूर';

  @override
  String starterAppDrawerItem(Object value) {
    return 'आयटम ${value}';
  }

  @override
  String get shrineMenuCaption => 'मेनू';

  @override
  String get shrineCategoryNameAll => 'सर्व';

  @override
  String get shrineCategoryNameAccessories => 'अ‍ॅक्सेसरी';

  @override
  String get shrineCategoryNameClothing => 'कपडे';

  @override
  String get shrineCategoryNameHome => 'घर';

  @override
  String get shrineLogoutButtonCaption => 'लॉग आउट करा';

  @override
  String get shrineLoginUsernameLabel => 'वापरकर्ता नाव';

  @override
  String get shrineLoginPasswordLabel => 'पासवर्ड';

  @override
  String get shrineCancelButtonCaption => 'रद्द करा';

  @override
  String get shrineNextButtonCaption => 'पुढील';

  @override
  String get shrineCartPageCaption => 'कार्ट';

  @override
  String shrineProductQuantity(Object quantity) {
    return 'प्रमाण: ${quantity}';
  }

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

  @override
  String shrineCartItemCount(int quantity) {
    return intl.Intl.pluralLogic(
      quantity,
      locale: localeName,
      zero: 'कोणताही आयटम नाही',
      one: 'एक आयटम',
      other: '${quantity} आयटम',
    );
  }

  @override
  String get shrineCartClearButtonCaption => 'कार्ट साफ करा';

  @override
  String get shrineCartTotalCaption => 'एकूण';

  @override
  String get shrineCartSubtotalCaption => 'उपबेरीज:';

  @override
  String get shrineCartShippingCaption => 'शिपिंग:';

  @override
  String get shrineCartTaxCaption => 'कर:';

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

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

  @override
  String get shrineProductWhitneyBelt => 'Whitney belt';

  @override
  String get shrineProductGardenStrand => 'Garden strand';

  @override
  String get shrineProductStrutEarrings => 'Strut earrings';

  @override
  String get shrineProductVarsitySocks => 'Varsity socks';

  @override
  String get shrineProductWeaveKeyring => 'Weave keyring';

  @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 rack';

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

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

  @override
  String get shrineProductBlueStoneMug => 'Blue stone mug';

  @override
  String get shrineProductRainwaterTray => 'Rainwater tray';

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

  @override
  String get shrineProductSucculentPlanters => 'Succulent planters';

  @override
  String get shrineProductQuartetTable => 'Quartet table';

  @override
  String get shrineProductKitchenQuattro => 'Kitchen quattro';

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

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

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

  @override
  String get shrineProductWhitePinstripeShirt => 'White pinstripe shirt';

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

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

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

  @override
  String get shrineProductNavyTrousers => 'Navy trousers';

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

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

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

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

  @override
  String get shrineProductClassicWhiteCollar => 'Classic white collar';

  @override
  String get shrineProductCeriseScallopTee => 'Cerise scallop tee';

  @override
  String get shrineProductShoulderRollsTee => 'Shoulder rolls tee';

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

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

  @override
  String get shrineProductFineLinesTee => 'Fine lines tee';

  @override
  String get shrineTooltipSearch => 'शोधा';

  @override
  String get shrineTooltipSettings => 'सेटिंग्ज';

  @override
  String get shrineTooltipOpenMenu => 'मेनू उघडा';

  @override
  String get shrineTooltipCloseMenu => 'मेनू बंद करा';

  @override
  String get shrineTooltipCloseCart => 'कार्ट बंद करा';

  @override
  String shrineScreenReaderCart(int quantity) {
    return intl.Intl.pluralLogic(
      quantity,
      locale: localeName,
      zero: 'खरेदीचा कार्ट, कोणतेही आयटम नाहीत',
      one: 'खरेदीचा कार्ट, एक आयटम आहे',
      other: 'खरेदीचा कार्ट, ${quantity} आयटम आहेत',
    );
  }

  @override
  String get shrineScreenReaderProductAddToCart => 'कार्टमध्ये जोडा';

  @override
  String shrineScreenReaderRemoveProductButton(Object product) {
    return '${product} काढून टाका';
  }

  @override
  String get shrineTooltipRemoveItem => 'आयटम काढून टाका';

  @override
  String get craneFormDiners => 'खाण्याचे प्रकार';

  @override
  String get craneFormDate => 'तारीख निवडा';

  @override
  String get craneFormTime => 'वेळ निवडा';

  @override
  String get craneFormLocation => 'स्थान निवडा';

  @override
  String get craneFormTravelers => 'प्रवासी';

  @override
  String get craneFormOrigin => 'सुरुवातीचे स्थान निवडा';

  @override
  String get craneFormDestination => 'गंतव्यस्थान निवडा';

  @override
  String get craneFormDates => 'तारखा निवडा';

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

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

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

  @override
  String get craneFly => 'उडणे';

  @override
  String get craneSleep => 'स्लीप';

  @override
  String get craneEat => 'खाण्याची ठिकाणे';

  @override
  String get craneFlySubhead => 'गंतव्यस्थानानुसार फ्लाइट शोधा';

  @override
  String get craneSleepSubhead => 'गंतव्यस्थानानुसार मालमत्ता शोधा';

  @override
  String get craneEatSubhead => 'गंतव्यस्थानानुसार रेस्टॉरंट शोधा';

  @override
  String craneFlyStops(int numberOfStops) {
    return intl.Intl.pluralLogic(
      numberOfStops,
      locale: localeName,
      zero: 'नॉनस्टॉप',
      one: 'एक थांबा',
      other: '${numberOfStops} थांबे',
    );
  }

  @override
  String craneSleepProperties(int totalProperties) {
    return intl.Intl.pluralLogic(
      totalProperties,
      locale: localeName,
      zero: 'कोणतीही प्रॉपर्टी उपलब्ध नाही',
      one: 'एक प्रॉपर्टी उपलब्ध आहे',
      other: '${totalProperties} प्रॉपर्टी उपलब्ध आहेत',
    );
  }

  @override
  String craneEatRestaurants(int totalRestaurants) {
    return intl.Intl.pluralLogic(
      totalRestaurants,
      locale: localeName,
      zero: 'रेस्टॉरंट नाही',
      one: 'एक उपाहारगृह',
      other: '${totalRestaurants} रेस्टॉरंट',
    );
  }

  @override
  String get craneFly0 => 'ॲस्पेन, युनायटेड स्टेट्स';

  @override
  String get craneFly1 => 'बिग सुर, युनायटेड स्टेट्स';

  @override
  String get craneFly2 => 'खुम्बू व्हॅली, नेपाळ';

  @override
  String get craneFly3 => 'माचू पिचू, पेरू';

  @override
  String get craneFly4 => 'मेल, मालदीव';

  @override
  String get craneFly5 => 'फिट्सनाऊ, स्वित्झर्लंड';

  @override
  String get craneFly6 => 'मेक्सिको शहर, मेक्‍सिको';

  @override
  String get craneFly7 => 'माउंट रशमोर, युनायटेड स्टेट्स';

  @override
  String get craneFly8 => 'सिंगापूर';

  @override
  String get craneFly9 => 'हवाना, क्यूबा';

  @override
  String get craneFly10 => 'कैरो, इजिप्त';

  @override
  String get craneFly11 => 'लिस्बन, पोर्तुगाल';

  @override
  String get craneFly12 => 'नापा, युनायटेड स्टेट्स';

  @override
  String get craneFly13 => 'बाली, इंडोनेशिया';

  @override
  String get craneSleep0 => 'मेल, मालदीव';

  @override
  String get craneSleep1 => 'ॲस्पेन, युनायटेड स्टेट्स';

  @override
  String get craneSleep2 => 'माचू पिचू, पेरू';

  @override
  String get craneSleep3 => 'हवाना, क्यूबा';

  @override
  String get craneSleep4 => 'फिट्सनाऊ, स्वित्झर्लंड';

  @override
  String get craneSleep5 => 'बिग सुर, युनायटेड स्टेट्स';

  @override
  String get craneSleep6 => 'नापा, युनायटेड स्टेट्स';

  @override
  String get craneSleep7 => 'पोर्तो, पोर्तुगीज';

  @override
  String get craneSleep8 => 'तुलुम, मेक्सिको';

  @override
  String get craneSleep9 => 'लिस्बन, पोर्तुगाल';

  @override
  String get craneSleep10 => 'कैरो, इजिप्त';

  @override
  String get craneSleep11 => 'ताइपै, तैवान';

  @override
  String get craneEat0 => 'नेपल्स, इटली';

  @override
  String get craneEat1 => 'डॅलस, युनायटेड स्टेट्स';

  @override
  String get craneEat2 => 'कोर्दोबा, अर्जेंटिना';

  @override
  String get craneEat3 => 'पोर्टलंड, युनायटेड स्टेट्स';

  @override
  String get craneEat4 => 'पॅरिस, फ्रान्स';

  @override
  String get craneEat5 => 'सोल, दक्षिण कोरिया';

  @override
  String get craneEat6 => 'सीएटल, युनायटेड स्‍टेट्‍स';

  @override
  String get craneEat7 => 'नॅशविल, युनायटेड स्टेट्स';

  @override
  String get craneEat8 => 'अटलांटा, युनायटेड स्टेट्स';

  @override
  String get craneEat9 => 'माद्रिद, स्पेन';

  @override
  String get craneEat10 => 'लिस्बन, पोर्तुगाल';

  @override
  String get craneFly0SemanticLabel =>
      'सदाहरित झाडे असलेल्या बर्फाळ प्रदेशातील शॅले';

  @override
  String get craneFly1SemanticLabel => 'माळरानावरचा टेंट';

  @override
  String get craneFly2SemanticLabel => 'बर्फाळ डोंगरासमोरील प्रेअर फ्लॅग';

  @override
  String get craneFly3SemanticLabel => 'माचू पिचू बालेकिल्ला';

  @override
  String get craneFly4SemanticLabel => 'पाण्यावरील तरंगते बंगले';

  @override
  String get craneFly5SemanticLabel => 'डोंगरांसमोर वसलेले तलावाशेजारचे हॉटेल';

  @override
  String get craneFly6SemanticLabel => 'पलासिओ दे बेयास आर्तेसचे विहंगम दृश्य';

  @override
  String get craneFly7SemanticLabel => 'माउंट रशमोअर';

  @override
  String get craneFly8SemanticLabel => 'सुपरट्री ग्रोव्ह';

  @override
  String get craneFly9SemanticLabel =>
      'जुन्या काळातील एका निळ्या कारला टेकून उभा असलेला माणूस';

  @override
  String get craneFly10SemanticLabel =>
      'सूर्यास्ताच्या वेळी दिसणारे अल-अजहर मशिदीचे मिनार';

  @override
  String get craneFly11SemanticLabel => 'समुद्रात असलेले विटांचे दीपगृह';

  @override
  String get craneFly12SemanticLabel => 'पामच्या झाडांच्या सान्निध्यातील पूल';

  @override
  String get craneFly13SemanticLabel =>
      'पामच्या झाडांच्या सान्निध्यातील समुद्रकिनाऱ्याच्या बाजूला असलेला पूल';

  @override
  String get craneSleep0SemanticLabel => 'पाण्यावरील तरंगते बंगले';

  @override
  String get craneSleep1SemanticLabel =>
      'सदाहरित झाडे असलेल्या बर्फाळ प्रदेशातील शॅले';

  @override
  String get craneSleep2SemanticLabel => 'माचू पिचू बालेकिल्ला';

  @override
  String get craneSleep3SemanticLabel =>
      'जुन्या काळातील एका निळ्या कारला टेकून उभा असलेला माणूस';

  @override
  String get craneSleep4SemanticLabel =>
      'डोंगरांसमोर वसलेले तलावाशेजारचे हॉटेल';

  @override
  String get craneSleep5SemanticLabel => 'माळरानावरचा टेंट';

  @override
  String get craneSleep6SemanticLabel => 'पामच्या झाडांच्या सान्निध्यातील पूल';

  @override
  String get craneSleep7SemanticLabel =>
      'रिबेरिया स्क्वेअरमधील रंगीत अपार्टमेंट';

  @override
  String get craneSleep8SemanticLabel =>
      'समुद्रकिनाऱ्याच्याबाजूला उंच डोंगरावर असलेले मायन संस्कृतीतील अवशेष';

  @override
  String get craneSleep9SemanticLabel => 'समुद्रात असलेले विटांचे दीपगृह';

  @override
  String get craneSleep10SemanticLabel =>
      'सूर्यास्ताच्या वेळी दिसणारे अल-अजहर मशिदीचे मिनार';

  @override
  String get craneSleep11SemanticLabel => 'गगनचुंबी तैपेई १०१ इमारत';

  @override
  String get craneEat0SemanticLabel => 'लाकडाचे इंधन असलेल्या ओव्हनमधील पिझ्झा';

  @override
  String get craneEat1SemanticLabel => 'डिनर स्टाइल स्टुल असलेला रिकामा बार';

  @override
  String get craneEat2SemanticLabel => 'बर्गर';

  @override
  String get craneEat3SemanticLabel => 'कोरियन टाको';

  @override
  String get craneEat4SemanticLabel => 'चॉकलेट डेझर्ट';

  @override
  String get craneEat5SemanticLabel => 'कलात्मक रेस्टॉरंटमधील बसण्याची जागा';

  @override
  String get craneEat6SemanticLabel => 'कोळंबीची डिश';

  @override
  String get craneEat7SemanticLabel => 'बेकरीचे प्रवेशव्दार';

  @override
  String get craneEat8SemanticLabel => 'क्रॉफिशने भरलेली प्लेट';

  @override
  String get craneEat9SemanticLabel => 'पेस्ट्री ठेवलेला कॅफे काउंटर';

  @override
  String get craneEat10SemanticLabel => 'भलेमोठे पास्रामी सॅंडविच धरलेली महिला';

  @override
  String get fortnightlyMenuFrontPage => 'मुख्य पेज';

  @override
  String get fortnightlyMenuWorld => 'विश्व';

  @override
  String get fortnightlyMenuUS => 'यूएस';

  @override
  String get fortnightlyMenuPolitics => 'राजकारण';

  @override
  String get fortnightlyMenuBusiness => 'व्यवसाय';

  @override
  String get fortnightlyMenuTech => 'तंत्रज्ञान';

  @override
  String get fortnightlyMenuScience => 'विज्ञान';

  @override
  String get fortnightlyMenuSports => 'क्रीडा';

  @override
  String get fortnightlyMenuTravel => 'प्रवास';

  @override
  String get fortnightlyMenuCulture => 'संस्कृती';

  @override
  String get fortnightlyTrendingTechDesign => 'TechDesign';

  @override
  String get fortnightlyTrendingReform => 'Reform';

  @override
  String get fortnightlyTrendingHealthcareRevolution => 'HealthcareRevolution';

  @override
  String get fortnightlyTrendingGreenArmy => 'GreenArmy';

  @override
  String get fortnightlyTrendingStocks => 'Stocks';

  @override
  String get fortnightlyLatestUpdates => 'नवीनतम अपडेट';

  @override
  String get fortnightlyHeadlineHealthcare =>
      'आरोग्य क्षेत्रामधील छोटे पण महत्त्वपूर्ण बदल';

  @override
  String get fortnightlyHeadlineWar =>
      'युद्धाच्या वेळी विभाजित झालेल्या अमेरिकन लोकांचे जीवन';

  @override
  String get fortnightlyHeadlineGasoline => 'गॅसोलीनचे भविष्य';

  @override
  String get fortnightlyHeadlineArmy => 'ग्रीन आर्मीमधील चांगले बदल';

  @override
  String get fortnightlyHeadlineStocks =>
      'शेअर मार्केटचा विकास थांबल्यावर अनेकजण चलन बाजारावर आशा ठेवतात';

  @override
  String get fortnightlyHeadlineFabrics =>
      'सर्वोत्तम कपडे बनवण्यासाठी डिझाइनर घेतात तंत्रज्ञानाची मदत';

  @override
  String get fortnightlyHeadlineFeminists =>
      'पक्षपाताविरूद्ध महिलांचा दृष्टिकोन';

  @override
  String get fortnightlyHeadlineBees =>
      'शेतीसाठी उपयुक्त असणाऱ्या मधमाश्यांच्या संख्येमध्ये घट';
}
