// 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 Serbian (`sr`).
class GalleryLocalizationsSr extends GalleryLocalizations {
  GalleryLocalizationsSr([String locale = 'sr']) : 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 =>
      'Најпопуларнијих 10 градова које треба да посетите у Тамил Надуу';

  @override
  String get cardsDemoTravelDestinationDescription1 => '10. место';

  @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 =>
      'Камата од почетка године до данас';

  @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 => 'Бакалницe';

  @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 => 'Пронађите банкомате';

  @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 'Овог месеца сте потрошили ${amount} на накнаде за банкомате';
  }

  @override
  String rallyAlertsMessageCheckingAccount(Object percent) {
    return 'Одлично! На текућем рачуну имате ${percent} више него прошлог месеца.';
  }

  @override
  String rallyAlertsMessageUnassignedTransactions(int count) {
    return intl.Intl.pluralLogic(
      count,
      locale: localeName,
      one:
          'Повећајте могући одбитак пореза! Доделите категорије 1 недодељеној трансакцији.',
      few:
          'Повећајте могући одбитак пореза! Доделите категорије за ${count} недодељене трансакције.',
      other:
          'Повећајте могући одбитак пореза! Доделите категорије за ${count} недодељених трансакција.',
    );
  }

  @override
  String get rallySeeAllAccounts => 'Прикажи све рачуне';

  @override
  String get rallySeeAllBills => 'Прикажи све рачуне';

  @override
  String get rallySeeAllBudgets => 'Прикажи све буџете';

  @override
  String rallyAccountAmount(
      Object accountName, Object accountNumber, Object amount) {
    return '${accountName} рачун ${accountNumber} са ${amount}.';
  }

  @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}, потрошено је ${amountUsed} од ${amountTotal}, преостало је ${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 => 'Слева надесно';

  @override
  String get settingsTextDirectionRTL => 'Здесна налево';

  @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 =>
      'Чипови радњи су скуп опција које покрећу радњу повезану са примарним садржајем. Чипови радњи треба да се појављују динамички и контекстуално у корисничком интерфејсу.';

  @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 => 'Дезерт (1 порција)';

  @override
  String get dataTableColumnCalories => 'Калорије';

  @override
  String get dataTableColumnFat => 'Масти (g)';

  @override
  String get dataTableColumnCarbs => 'Угљени хидрати (g)';

  @override
  String get dataTableColumnProtein => 'Протеини (g)';

  @override
  String get dataTableColumnSodium => 'Натријум (mg)';

  @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 => '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 => 'Боје';

  @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 =>
      'Поља за унос текста омогућавају корисницима да унесу текст у кориснички интерфејс. Обично се приказују у облику образаца и дијалога.';

  @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 => 'Не више од 8 знакова.';

  @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 => 'Календар';

  @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 =>
      'Желите ли да дозволите да Мапе приступају вашој локацији док користите ту апликацију?';

  @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: '1 СТАВКА',
      few: '${quantity} СТАВКЕ',
      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 => 'Врећаста торба';

  @override
  String get shrineProductStellaSunglasses => 'Наочаре за сунце Stella';

  @override
  String get shrineProductWhitneyBelt => 'Каиш Whitney';

  @override
  String get shrineProductGardenStrand => 'Баштенски конопац';

  @override
  String get shrineProductStrutEarrings => 'Strut минђуше';

  @override
  String get shrineProductVarsitySocks => 'Чарапе са пругама';

  @override
  String get shrineProductWeaveKeyring => 'Плетени привезак за кључеве';

  @override
  String get shrineProductGatsbyHat => 'Качкет';

  @override
  String get shrineProductShrugBag => 'Торба са ручком за ношење на рамену';

  @override
  String get shrineProductGiltDeskTrio => 'Трио позлаћених сточића';

  @override
  String get shrineProductCopperWireRack => 'Бакарна вешалица';

  @override
  String get shrineProductSootheCeramicSet => 'Керамички сет Soothe';

  @override
  String get shrineProductHurrahsTeaSet => 'Чајни сет Hurrahs';

  @override
  String get shrineProductBlueStoneMug => 'Плава камена шоља';

  @override
  String get shrineProductRainwaterTray => 'Посуда за кишницу';

  @override
  String get shrineProductChambrayNapkins => 'Платнене салвете';

  @override
  String get shrineProductSucculentPlanters => 'Саксије за сочнице';

  @override
  String get shrineProductQuartetTable => 'Сто за четири особе';

  @override
  String get shrineProductKitchenQuattro => 'Кухињски сет из четири дела';

  @override
  String get shrineProductClaySweater => 'Џемпер боје глине';

  @override
  String get shrineProductSeaTunic => 'Тамноплава туника';

  @override
  String get shrineProductPlasterTunic => 'Туника боје гипса';

  @override
  String get shrineProductWhitePinstripeShirt => 'Бела кошуља са пругама';

  @override
  String get shrineProductChambrayShirt => 'Платнена мајица';

  @override
  String get shrineProductSeabreezeSweater =>
      'Џемпер са шаблоном морских таласа';

  @override
  String get shrineProductGentryJacket => 'Gentry јакна';

  @override
  String get shrineProductNavyTrousers => 'Тамноплаве панталоне';

  @override
  String get shrineProductWalterHenleyWhite =>
      'Мајица са изрезом у облику слова v (беле боје)';

  @override
  String get shrineProductSurfAndPerfShirt => 'Сурферска мајица';

  @override
  String get shrineProductGingerScarf => 'Црвени шал';

  @override
  String get shrineProductRamonaCrossover => 'Женска блуза Ramona';

  @override
  String get shrineProductClassicWhiteCollar => 'Класична бела кошуља';

  @override
  String get shrineProductCeriseScallopTee =>
      'Тамноружичаста мајица са таласастим рубом';

  @override
  String get shrineProductShoulderRollsTee => 'Мајица са заврнутим рукавима';

  @override
  String get shrineProductGreySlouchTank => 'Сива мајица без рукава';

  @override
  String get shrineProductSunshirtDress => 'Хаљина за заштиту од сунца';

  @override
  String get shrineProductFineLinesTee => 'Мајица са танким цртама';

  @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: 'Корпа за куповину, 1 артикал',
      few: 'Корпа за куповину, ${quantity} артикла',
      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: '1 ч',
      few: '${hours} ч',
      other: '${hours} ч',
    );
  }

  @override
  String craneMinutes(int minutes) {
    return intl.Intl.pluralLogic(
      minutes,
      locale: localeName,
      one: '1 м',
      few: '${minutes} м',
      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: '1 заустављање',
      few: '${numberOfStops} заустављања',
      other: '${numberOfStops} заустављања',
    );
  }

  @override
  String craneSleepProperties(int totalProperties) {
    return intl.Intl.pluralLogic(
      totalProperties,
      locale: localeName,
      zero: 'Нема доступних објеката',
      one: '1 доступан објекат',
      few: '${totalProperties} доступна објекта',
      other: '${totalProperties} доступних објеката',
    );
  }

  @override
  String craneEatRestaurants(int totalRestaurants) {
    return intl.Intl.pluralLogic(
      totalRestaurants,
      locale: localeName,
      zero: 'Нема ресторана',
      one: '1 ресторан',
      few: '${totalRestaurants} ресторана',
      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 => 'Supertree Grove';

  @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 => 'Небодер Тајпеј 101';

  @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 => 'Недостају пчеле за фарме';
}

/// The translations for Serbian, using the Latin script (`sr_Latn`).
class GalleryLocalizationsSrLatn extends GalleryLocalizationsSr {
  GalleryLocalizationsSrLatn() : super('sr_Latn');

  @override
  String githubRepo(Object repoName) {
    return '${repoName} GitHub skladište';
  }

  @override
  String aboutDialogDescription(Object repoLink) {
    return 'Da biste videli izvorni kôd za ovu aplikaciju, posetite ${repoLink}.';
  }

  @override
  String get signIn => 'PRIJAVITE SE';

  @override
  String get bannerDemoText =>
      'Lozinka je ažurirana na drugom uređaju. Prijavite se ponovo.';

  @override
  String get bannerDemoResetText => 'Resetuj baner';

  @override
  String get bannerDemoMultipleText => 'Više radnji';

  @override
  String get bannerDemoLeadingText => 'Početna ikona';

  @override
  String get dismiss => 'ODBACI';

  @override
  String get backToGallery => 'Nazad u galeriju';

  @override
  String get cardsDemoTappable => 'Može da se dodirne';

  @override
  String get cardsDemoSelectable => 'Može da se izabere (dugi pritisak)';

  @override
  String get cardsDemoExplore => 'Istražite';

  @override
  String cardsDemoExploreSemantics(Object destinationName) {
    return 'Istražite: ${destinationName}';
  }

  @override
  String cardsDemoShareSemantics(Object destinationName) {
    return 'Delite: ${destinationName}';
  }

  @override
  String get cardsDemoTravelDestinationTitle1 =>
      'Najpopularnijih 10 gradova koje treba da posetite u Tamil Naduu';

  @override
  String get cardsDemoTravelDestinationDescription1 => '10. mesto';

  @override
  String get cardsDemoTravelDestinationCity1 => 'Tandžavur';

  @override
  String get cardsDemoTravelDestinationLocation1 => 'Tandžavur, Tamil Nadu';

  @override
  String get cardsDemoTravelDestinationTitle2 => 'Zanatlije južne Indije';

  @override
  String get cardsDemoTravelDestinationDescription2 => 'Proizvođači svile';

  @override
  String get cardsDemoTravelDestinationCity2 => 'Četinad';

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

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

  @override
  String get cardsDemoTravelDestinationDescription3 => 'Hramovi';

  @override
  String get homeHeaderGallery => 'Galerija';

  @override
  String get homeHeaderCategories => 'Kategorije';

  @override
  String get shrineDescription => 'Moderna aplikacija za maloprodaju';

  @override
  String get fortnightlyDescription =>
      'Aplikacija za vesti fokusirana na sadržaj';

  @override
  String get rallyDescription => 'Aplikacija za lične finansije';

  @override
  String get rallyAccountDataChecking => 'Tekući';

  @override
  String get rallyAccountDataHomeSavings => 'Štednja za kupovinu doma';

  @override
  String get rallyAccountDataCarSavings => 'Štednja za kupovinu automobila';

  @override
  String get rallyAccountDataVacation => 'Odmor';

  @override
  String get rallyAccountDetailDataAnnualPercentageYield =>
      'Godišnji procenat dobiti';

  @override
  String get rallyAccountDetailDataInterestRate => 'Kamatna stopa';

  @override
  String get rallyAccountDetailDataInterestYtd =>
      'Kamata od početka godine do danas';

  @override
  String get rallyAccountDetailDataInterestPaidLastYear =>
      'Kamata plaćena prošle godine';

  @override
  String get rallyAccountDetailDataNextStatement => 'Sledeći izvod';

  @override
  String get rallyAccountDetailDataAccountOwner => 'Vlasnik naloga';

  @override
  String get rallyBillDetailTotalAmount => 'Ukupan iznos';

  @override
  String get rallyBillDetailAmountPaid => 'Plaćeni iznos';

  @override
  String get rallyBillDetailAmountDue => 'Iznos zaduženja';

  @override
  String get rallyBudgetCategoryCoffeeShops => 'Kafići';

  @override
  String get rallyBudgetCategoryGroceries => 'Bakalnice';

  @override
  String get rallyBudgetCategoryRestaurants => 'Restorani';

  @override
  String get rallyBudgetCategoryClothing => 'Odeća';

  @override
  String get rallyBudgetDetailTotalCap => 'Ukupno ograničenje';

  @override
  String get rallyBudgetDetailAmountUsed => 'Iskorišćeni iznos';

  @override
  String get rallyBudgetDetailAmountLeft => 'Preostali iznos';

  @override
  String get rallySettingsManageAccounts => 'Upravljajte nalozima';

  @override
  String get rallySettingsTaxDocuments => 'Poreski dokumenti';

  @override
  String get rallySettingsPasscodeAndTouchId => 'Šifra i ID za dodir';

  @override
  String get rallySettingsNotifications => 'Obaveštenja';

  @override
  String get rallySettingsPersonalInformation => 'Lični podaci';

  @override
  String get rallySettingsPaperlessSettings => 'Podešavanja bez papira';

  @override
  String get rallySettingsFindAtms => 'Pronađite bankomate';

  @override
  String get rallySettingsHelp => 'Pomoć';

  @override
  String get rallySettingsSignOut => 'Odjavite se';

  @override
  String get rallyAccountTotal => 'Ukupno';

  @override
  String get rallyBillsDue => 'Dospeva na naplatu';

  @override
  String get rallyBudgetLeft => 'Preostaje';

  @override
  String get rallyAccounts => 'Nalozi';

  @override
  String get rallyBills => 'Obračuni';

  @override
  String get rallyBudgets => 'Budžeti';

  @override
  String get rallyAlerts => 'Obaveštenja';

  @override
  String get rallySeeAll => 'PRIKAŽI SVE';

  @override
  String get rallyFinanceLeft => 'PREOSTAJE';

  @override
  String get rallyTitleOverview => 'PREGLED';

  @override
  String get rallyTitleAccounts => 'NALOZI';

  @override
  String get rallyTitleBills => 'OBRAČUNI';

  @override
  String get rallyTitleBudgets => 'BUDŽETI';

  @override
  String get rallyTitleSettings => 'PODEŠAVANJA';

  @override
  String get rallyLoginLoginToRally => 'Prijavite se u aplikaciju Rally';

  @override
  String get rallyLoginNoAccount => 'Nemate nalog?';

  @override
  String get rallyLoginSignUp => 'REGISTRUJ ME';

  @override
  String get rallyLoginUsername => 'Korisničko ime';

  @override
  String get rallyLoginPassword => 'Lozinka';

  @override
  String get rallyLoginLabelLogin => 'Prijavi me';

  @override
  String get rallyLoginRememberMe => 'Zapamti me';

  @override
  String get rallyLoginButtonLogin => 'PRIJAVI ME';

  @override
  String rallyAlertsMessageHeadsUpShopping(Object percent) {
    return 'Pažnja! Iskoristili ste ${percent} budžeta za kupovinu za ovaj mesec.';
  }

  @override
  String rallyAlertsMessageSpentOnRestaurants(Object amount) {
    return 'Ove nedelje ste potrošili ${amount} na restorane.';
  }

  @override
  String rallyAlertsMessageATMFees(Object amount) {
    return 'Ovog meseca ste potrošili ${amount} na naknade za bankomate';
  }

  @override
  String rallyAlertsMessageCheckingAccount(Object percent) {
    return 'Odlično! Na tekućem računu imate ${percent} više nego prošlog meseca.';
  }

  @override
  String rallyAlertsMessageUnassignedTransactions(int count) {
    return intl.Intl.pluralLogic(
      count,
      locale: localeName,
      one:
          'Povećajte mogući odbitak poreza! Dodelite kategorije 1 nedodeljenoj transakciji.',
      few:
          'Povećajte mogući odbitak poreza! Dodelite kategorije za ${count} nedodeljene transakcije.',
      other:
          'Povećajte mogući odbitak poreza! Dodelite kategorije za ${count} nedodeljenih transakcija.',
    );
  }

  @override
  String get rallySeeAllAccounts => 'Prikaži sve račune';

  @override
  String get rallySeeAllBills => 'Prikaži sve račune';

  @override
  String get rallySeeAllBudgets => 'Prikaži sve budžete';

  @override
  String rallyAccountAmount(
      Object accountName, Object accountNumber, Object amount) {
    return '${accountName} račun ${accountNumber} sa ${amount}.';
  }

  @override
  String rallyBillAmount(Object billName, Object date, Object amount) {
    return 'Račun (${billName}) od ${amount} dospeva ${date}.';
  }

  @override
  String rallyBudgetAmount(Object budgetName, Object amountUsed,
      Object amountTotal, Object amountLeft) {
    return 'Budžet za ${budgetName}, potrošeno je ${amountUsed} od ${amountTotal}, preostalo je ${amountLeft}';
  }

  @override
  String get craneDescription => 'Personalizovana aplikacija za putovanja';

  @override
  String get homeCategoryReference => 'STILOVI I DRUGO';

  @override
  String get demoInvalidURL => 'Prikazivanje URL-a nije uspelo:';

  @override
  String get demoOptionsTooltip => 'Opcije';

  @override
  String get demoInfoTooltip => 'Informacije';

  @override
  String get demoCodeTooltip => 'Demo kôd';

  @override
  String get demoDocumentationTooltip => 'Dokumentacija o API-jima';

  @override
  String get demoFullscreenTooltip => 'Ceo ekran';

  @override
  String get demoCodeViewerCopyAll => 'KOPIRAJ SVE';

  @override
  String get demoCodeViewerCopiedToClipboardMessage =>
      'Kopirano je u privremenu memoriju.';

  @override
  String demoCodeViewerFailedToCopyToClipboardMessage(Object error) {
    return 'Kopiranje u privremenu memoriju nije uspelo: ${error}';
  }

  @override
  String get demoOptionsFeatureTitle => 'Pregledajte opcije';

  @override
  String get demoOptionsFeatureDescription =>
      'Dodirnite ovde da biste videli dostupne opcije za ovu demonstraciju.';

  @override
  String get settingsTitle => 'Podešavanja';

  @override
  String get settingsButtonLabel => 'Podešavanja';

  @override
  String get settingsButtonCloseLabel => 'Zatvorite podešavanja';

  @override
  String get settingsSystemDefault => 'Sistem';

  @override
  String get settingsTextScaling => 'Promena veličine teksta';

  @override
  String get settingsTextScalingSmall => 'Mali';

  @override
  String get settingsTextScalingNormal => 'Uobičajen';

  @override
  String get settingsTextScalingLarge => 'Veliki';

  @override
  String get settingsTextScalingHuge => 'Ogroman';

  @override
  String get settingsTextDirection => 'Smer teksta';

  @override
  String get settingsTextDirectionLocaleBased => 'Na osnovu lokaliteta';

  @override
  String get settingsTextDirectionLTR => 'Sleva nadesno';

  @override
  String get settingsTextDirectionRTL => 'Zdesna nalevo';

  @override
  String get settingsLocale => 'Lokalitet';

  @override
  String get settingsPlatformMechanics => 'Mehanika platforme';

  @override
  String get settingsTheme => 'Tema';

  @override
  String get settingsDarkTheme => 'Tamna';

  @override
  String get settingsLightTheme => 'Svetla';

  @override
  String get settingsSlowMotion => 'Usporeni snimak';

  @override
  String get settingsAbout => 'O usluzi Flutter Gallery';

  @override
  String get settingsFeedback => 'Pošalji povratne informacije';

  @override
  String get settingsAttribution => 'Dizajnirala agencija TOASTER iz Londona';

  @override
  String get demoBottomAppBarTitle => 'Donja traka sa aplikacijama';

  @override
  String get demoBottomAppBarSubtitle => 'Prikazuje navigaciju i radnje u dnu';

  @override
  String get demoBottomAppBarDescription =>
      'Donje trake sa aplikacijama pružaju pristup donjoj fioki za navigaciju i najviše četiri radnje, uključujući plutajuće dugme za radnju.';

  @override
  String get bottomAppBarNotch => 'Urez';

  @override
  String get bottomAppBarPosition => 'Položaj plutajućeg dugmeta za radnju';

  @override
  String get bottomAppBarPositionDockedEnd =>
      'Na traci sa aplikacijama – na kraju';

  @override
  String get bottomAppBarPositionDockedCenter =>
      'Na traci sa aplikacijama – u sredini';

  @override
  String get bottomAppBarPositionFloatingEnd => 'Plutanje – na kraju';

  @override
  String get bottomAppBarPositionFloatingCenter => 'Plutanje – u sredini';

  @override
  String get demoBannerTitle => 'Baner';

  @override
  String get demoBannerSubtitle => 'Prikazuje baner u okviru liste';

  @override
  String get demoBannerDescription =>
      'Baner prikazuje važnu, sažetu poruku i navodi radnje koje korisnici mogu da obave (ili mogu da odbace baner). Neophodno je da korisnik obavi radnju odbacivanja.';

  @override
  String get demoBottomNavigationTitle => 'Donja navigacija';

  @override
  String get demoBottomNavigationSubtitle =>
      'Donja navigacija koja se postepeno prikazuje i nestaje';

  @override
  String get demoBottomNavigationPersistentLabels => 'Trajne oznake';

  @override
  String get demoBottomNavigationSelectedLabel => 'Izabrana oznaka';

  @override
  String get demoBottomNavigationDescription =>
      'Donja traka za navigaciju prikazuje tri do pet odredišta u dnu ekrana. Svako odredište predstavljaju ikona i opcionalna tekstualna oznaka. Kada korisnik dodirne donju ikonu za navigaciju, otvara se odredište za destinaciju najvišeg nivoa koje je povezano sa tom ikonom.';

  @override
  String get demoButtonTitle => 'Dugmad';

  @override
  String get demoButtonSubtitle => 'Ravna, izdignuta, oivičena i druga';

  @override
  String get demoFlatButtonTitle => 'Ravno dugme';

  @override
  String get demoFlatButtonDescription =>
      'Kada se pritisne, ravno dugme prikazuje mrlju boje, ali se ne podiže. Ravnu dugmad koristite na trakama s alatkama, u dijalozima i u tekstu sa razmakom';

  @override
  String get demoRaisedButtonTitle => 'Izdignuto dugme';

  @override
  String get demoRaisedButtonDescription =>
      'Izdignuta dugmad pruža trodimenzionalni izgled na ravnom prikazu. Ona naglašava funkcije u širokim prostorima ili onima sa puno elemenata.';

  @override
  String get demoOutlineButtonTitle => 'Oivičeno dugme';

  @override
  String get demoOutlineButtonDescription =>
      'Oivičena dugmad postaje neprozirna i podiže se kada se pritisne. Obično se uparuje zajedno sa izdignutom dugmadi da bi označila alternativnu, sekundarnu radnju.';

  @override
  String get demoToggleButtonTitle => 'Dugmad za uključivanje/isključivanje';

  @override
  String get demoToggleButtonDescription =>
      'Dugmad za uključivanje/isključivanje može da se koristi za grupisanje srodnih opcija. Da biste naglasili grupe srodne dugmadi za uključivanje/isključivanje, grupa treba da ima zajednički kontejner';

  @override
  String get demoFloatingButtonTitle => 'Plutajuće dugme za radnju';

  @override
  String get demoFloatingButtonDescription =>
      'Plutajuće dugme za radnju je kružna ikona dugmeta koje se prikazuje iznad sadržaja radi isticanja primarne radnje u aplikaciji.';

  @override
  String get demoCardTitle => 'Kartice';

  @override
  String get demoCardSubtitle => 'Osnovne kartice sa zaobljenim uglovima';

  @override
  String get demoChipTitle => 'Čipovi';

  @override
  String get demoCardDescription =>
      'Kartica je element materijalnog dizajna koji se koristi za predstavljanje srodnih informacija, na primer, albuma, geografske lokacije, obroka, podataka za kontakt itd.';

  @override
  String get demoChipSubtitle =>
      'Kompaktni elementi koji predstavljaju unos, atribut ili radnju';

  @override
  String get demoActionChipTitle => 'Čip radnji';

  @override
  String get demoActionChipDescription =>
      'Čipovi radnji su skup opcija koje pokreću radnju povezanu sa primarnim sadržajem. Čipovi radnji treba da se pojavljuju dinamički i kontekstualno u korisničkom interfejsu.';

  @override
  String get demoChoiceChipTitle => 'Čip izbora';

  @override
  String get demoChoiceChipDescription =>
      'Čipovi izbora predstavljaju pojedinačnu izabranu stavku iz skupa. Čipovi izbora sadrže povezani opisni tekst ili kategorije.';

  @override
  String get demoFilterChipTitle => 'Čip filtera';

  @override
  String get demoFilterChipDescription =>
      'Čipovi filtera koriste oznake ili opisne reči kao način da filtriraju sadržaj.';

  @override
  String get demoInputChipTitle => 'Čip unosa';

  @override
  String get demoInputChipDescription =>
      'Čipovi unosa predstavljaju složene informacije, poput entiteta (osobe, mesta ili stvari) ili teksta iz govornog jezika, u kompaktnom obliku.';

  @override
  String get demoDataTableTitle => 'Tabele sa podacima';

  @override
  String get demoDataTableSubtitle => 'Redovi i kolone sa informacijama';

  @override
  String get demoDataTableDescription =>
      'Tabele sa podacima prikazuju informacije u obliku mreže sa redovima i kolonama. U njima su informacije organizovane tako da mogu lako da se pregledaju i da bi korisnici mogli da traže šablone i uvide.';

  @override
  String get dataTableHeader => 'Ishrana';

  @override
  String get dataTableColumnDessert => 'Dezert (1 porcija)';

  @override
  String get dataTableColumnCalories => 'Kalorije';

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

  @override
  String get dataTableColumnCarbs => 'Ugljeni hidrati (g)';

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

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

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

  @override
  String get dataTableColumnIron => 'Gvožđe (%)';

  @override
  String get dataTableRowFrozenYogurt => 'Zamrznut jogurt';

  @override
  String get dataTableRowIceCreamSandwich => 'Sladoled sendvič';

  @override
  String get dataTableRowEclair => 'Ekler';

  @override
  String get dataTableRowCupcake => 'Mafin';

  @override
  String get dataTableRowGingerbread => 'Medenjak';

  @override
  String get dataTableRowJellyBean => 'Žele bombona';

  @override
  String get dataTableRowLollipop => 'Lizalica';

  @override
  String get dataTableRowHoneycomb => 'Saće';

  @override
  String get dataTableRowDonut => 'Krofna';

  @override
  String get dataTableRowApplePie => 'Pita od jabuka';

  @override
  String dataTableRowWithSugar(Object value) {
    return '${value} sa šećerom';
  }

  @override
  String dataTableRowWithHoney(Object value) {
    return '${value} sa medom';
  }

  @override
  String get demoDialogTitle => 'Dijalozi';

  @override
  String get demoDialogSubtitle =>
      'Jednostavan, sa obaveštenjem i preko celog ekrana';

  @override
  String get demoAlertDialogTitle => 'Obaveštenje';

  @override
  String get demoAlertDialogDescription =>
      'Dijalog obaveštenja informiše korisnike o situacijama koje zahtevaju njihovu pažnju. Dijalog obaveštenja ima opcionalni naslov i opcionalnu listu radnji.';

  @override
  String get demoAlertTitleDialogTitle => 'Obaveštenje sa naslovom';

  @override
  String get demoSimpleDialogTitle => 'Jednostavan';

  @override
  String get demoSimpleDialogDescription =>
      'Jednostavan dijalog korisniku nudi izbor između nekoliko opcija. Jednostavan dijalog ima opcionalni naslov koji se prikazuje iznad tih izbora.';

  @override
  String get demoGridListsTitle => 'Liste u obliku koordinatnih mreža';

  @override
  String get demoGridListsSubtitle => 'Izgled sa redovima i kolonama';

  @override
  String get demoGridListsDescription =>
      'Liste u obliku koordinatnih mreža su najbolje za prikazivanje homogenih podataka, najčešće slika. Svaka stavka na listi u obliku koordinatne mreže se zove pločica.';

  @override
  String get demoGridListsImageOnlyTitle => 'Samo slike';

  @override
  String get demoGridListsHeaderTitle => 'Sa zaglavljem';

  @override
  String get demoGridListsFooterTitle => 'Sa podnožjem';

  @override
  String get demoSlidersTitle => 'Klizači';

  @override
  String get demoSlidersSubtitle =>
      'Vidžeti za biranje vrednosti prevlačenjem prstom';

  @override
  String get demoSlidersDescription =>
      'Klizači odražavaju opseg vrednosti na traci, a korisnici mogu da izaberu jednu vrednost. Idealni su za prilagođavanje podešavanja kao što su jačina zvuka, osvetljenost ili primena filtera za slike.';

  @override
  String get demoRangeSlidersTitle => 'Klizači opsega';

  @override
  String get demoRangeSlidersDescription =>
      'Klizači odražavaju opseg vrednosti na traci. Mogu da imaju ikone na oba kraja trake koji odražavaju opseg vrednosti. Idealni su za prilagođavanje podešavanja kao što su jačina zvuka, osvetljenost ili primena filtera za slike.';

  @override
  String get demoCustomSlidersTitle => 'Prilagođeni klizači';

  @override
  String get demoCustomSlidersDescription =>
      'Klizači odražavaju opseg vrednosti na traci, a korisnici mogu da izaberu jednu vrednost ili opseg vrednosti. Klizači mogu da imaju temu i da se prilagode.';

  @override
  String get demoSlidersContinuousWithEditableNumericalValue =>
      'Neprekidan sa numeričkom vrednošću koja može da se izmeni';

  @override
  String get demoSlidersDiscrete => 'Diskretan';

  @override
  String get demoSlidersDiscreteSliderWithCustomTheme =>
      'Diskretan klizač sa prilagođenom temom';

  @override
  String get demoSlidersContinuousRangeSliderWithCustomTheme =>
      'Neprekidan klizač opsega sa prilagođenom temom';

  @override
  String get demoSlidersContinuous => 'Neprekidan';

  @override
  String get demoSlidersEditableNumericalValue =>
      'Numerička vrednost koja može da se izmeni';

  @override
  String get demoMenuTitle => 'Meni';

  @override
  String get demoContextMenuTitle => 'Kontekstualni meni';

  @override
  String get demoSectionedMenuTitle => 'Meni sa odeljcima';

  @override
  String get demoSimpleMenuTitle => 'Jednostavni meni';

  @override
  String get demoChecklistMenuTitle => 'Meni sa kontrolnim listama';

  @override
  String get demoMenuSubtitle => 'Dugmad menija i jednostavni meniji';

  @override
  String get demoMenuDescription =>
      'Meni prikazuje listu opcija na privremenoj površini. One se prikazuju kada korisnici ostvaruju interakciju sa dugmetom, radnjom ili drugom kontrolom.';

  @override
  String get demoMenuItemValueOne => 'Prva stavka menija';

  @override
  String get demoMenuItemValueTwo => 'Druga stavka menija';

  @override
  String get demoMenuItemValueThree => 'Treća stavka menija';

  @override
  String get demoMenuOne => 'Jedan';

  @override
  String get demoMenuTwo => 'Dva';

  @override
  String get demoMenuThree => 'Tri';

  @override
  String get demoMenuFour => 'Četiri';

  @override
  String get demoMenuAnItemWithAContextMenuButton =>
      'Stavka sa kontekstualnim menijem';

  @override
  String get demoMenuContextMenuItemOne => 'Prva stavka kontekstualnog menija';

  @override
  String get demoMenuADisabledMenuItem => 'Onemogućena stavka menija';

  @override
  String get demoMenuContextMenuItemThree =>
      'Treća stavka kontekstualnog menija';

  @override
  String get demoMenuAnItemWithASectionedMenu =>
      'Stavka sa menijem sa odeljcima';

  @override
  String get demoMenuPreview => 'Pregled';

  @override
  String get demoMenuShare => 'Deli';

  @override
  String get demoMenuGetLink => 'Preuzmi link';

  @override
  String get demoMenuRemove => 'Ukloni';

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

  @override
  String demoMenuChecked(Object value) {
    return 'Označeno: ${value}';
  }

  @override
  String get demoMenuAnItemWithASimpleMenu => 'Stavka sa jednostavnim menijem';

  @override
  String get demoMenuAnItemWithAChecklistMenu =>
      'Stavka sa menijem sa kontrolnim listama';

  @override
  String get demoFullscreenDialogTitle => 'Ceo ekran';

  @override
  String get demoFullscreenDialogDescription =>
      'Proizvod fullscreenDialog određuje da li se sledeća stranica otvara u modalnom dijalogu preko celog ekrana';

  @override
  String get demoCupertinoActivityIndicatorTitle => 'Indikator aktivnosti';

  @override
  String get demoCupertinoActivityIndicatorSubtitle =>
      'Indikatori aktivnosti u iOS stilu';

  @override
  String get demoCupertinoActivityIndicatorDescription =>
      'Indikator aktivnosti u iOS stilu koji se okreće u smeru kretanja kazaljke na satu';

  @override
  String get demoCupertinoButtonsTitle => 'Dugmad';

  @override
  String get demoCupertinoButtonsSubtitle => 'Dugmad u iOS stilu';

  @override
  String get demoCupertinoButtonsDescription =>
      'Dugme u iOS stilu. Sadrži tekst i/ili ikonu koji postepeno nestaju ili se prikazuju kada se dugme dodirne. Opcionalno može da ima pozadinu.';

  @override
  String get demoCupertinoAlertsTitle => 'Obaveštenja';

  @override
  String get demoCupertinoAlertsSubtitle => 'Dijalozi obaveštenja u iOS stilu';

  @override
  String get demoCupertinoAlertTitle => 'Obaveštenje';

  @override
  String get demoCupertinoAlertDescription =>
      'Dijalog obaveštenja informiše korisnike o situacijama koje zahtevaju njihovu pažnju. Dijalog obaveštenja ima opcionalni naslov, opcionalni sadržaj i opcionalnu listu radnji. Naslov se prikazuje iznad sadržaja, a radnje se prikazuju ispod sadržaja.';

  @override
  String get demoCupertinoAlertWithTitleTitle => 'Obaveštenje sa naslovom';

  @override
  String get demoCupertinoAlertButtonsTitle => 'Obaveštenje sa dugmadi';

  @override
  String get demoCupertinoAlertButtonsOnlyTitle =>
      'Samo dugmad sa obaveštenjem';

  @override
  String get demoCupertinoActionSheetTitle => 'Tabela radnji';

  @override
  String get demoCupertinoActionSheetDescription =>
      'Tabela radnji je poseban stil obaveštenja kojim se korisnicima nude dva ili više izbora u vezi sa aktuelnim kontekstom. Tabela radnji može da ima naslov, dodatnu poruku i listu radnji.';

  @override
  String get demoCupertinoNavigationBarTitle => 'Traka za navigaciju';

  @override
  String get demoCupertinoNavigationBarSubtitle =>
      'Traka za navigaciju u iOS stilu';

  @override
  String get demoCupertinoNavigationBarDescription =>
      'Traka za navigaciju sa iOS stilom. Traka za navigaciju je traka s alatkama koja u najgorem slučaju sadrži samo naslov stranice na sredini.';

  @override
  String get demoCupertinoPickerTitle => 'Birači';

  @override
  String get demoCupertinoPickerSubtitle =>
      'Birači za datum i vreme u iOS stilu';

  @override
  String get demoCupertinoPickerDescription =>
      'Vidžet birača u iOS stilu koji može da se koristi za biranje datuma, vremena ili i datuma i vremena.';

  @override
  String get demoCupertinoPickerTimer => 'Tajmer';

  @override
  String get demoCupertinoPickerDate => 'Datum';

  @override
  String get demoCupertinoPickerTime => 'Vreme';

  @override
  String get demoCupertinoPickerDateTime => 'Datum i vreme';

  @override
  String get demoCupertinoPullToRefreshTitle => 'Povucite da biste osvežili';

  @override
  String get demoCupertinoPullToRefreshSubtitle =>
      'Kontrola za povlačenje radi osvežavanja u iOS stilu';

  @override
  String get demoCupertinoPullToRefreshDescription =>
      'Vidžet koji primenjuje kontrolu za povlačenje radi osvežavanja sadržaja u iOS stilu.';

  @override
  String get demoCupertinoSegmentedControlTitle => 'Segmentirana kontrola';

  @override
  String get demoCupertinoSegmentedControlSubtitle =>
      'Segmentirana kontrola u iOS stilu';

  @override
  String get demoCupertinoSegmentedControlDescription =>
      'Koristi se za biranje jedne od međusobno isključivih opcija. Kada je izabrana jedna opcija u segmentiranoj kontroli, opoziva se izbor ostalih opcija u toj segmentiranoj kontroli.';

  @override
  String get demoCupertinoSliderTitle => 'Klizač';

  @override
  String get demoCupertinoSliderSubtitle => 'Klizač u iOS stilu';

  @override
  String get demoCupertinoSliderDescription =>
      'Klizač može da se koristi da biste izabrali neprekidan ili diskretan skup vrednosti.';

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

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

  @override
  String get demoCupertinoSwitchSubtitle => 'Prekidač u iOS stilu';

  @override
  String get demoCupertinoSwitchDescription =>
      'Prekidač se koristi za uključivanje/isključivanje pojedinačnih podešavanja.';

  @override
  String get demoCupertinoTabBarTitle => 'Traka sa karticama';

  @override
  String get demoCupertinoTabBarSubtitle =>
      'Donja traka sa karticama u iOS stilu';

  @override
  String get demoCupertinoTabBarDescription =>
      'Donja traka sa karticama za navigaciju u iOS stilu. Prikazuje više kartica, pri čemu je samo jedna aktivna, a prema podrazumevanim podešavanjima to je prva kartica.';

  @override
  String get cupertinoTabBarHomeTab => 'Početna';

  @override
  String get cupertinoTabBarChatTab => 'Ćaskanje';

  @override
  String get cupertinoTabBarProfileTab => 'Profil';

  @override
  String get demoCupertinoTextFieldTitle => 'Polja za unos teksta';

  @override
  String get demoCupertinoTextFieldSubtitle =>
      'Polja za unos teksta u iOS stilu';

  @override
  String get demoCupertinoTextFieldDescription =>
      'Polje za unos teksta omogućava korisniku da unosi tekst pomoću fizičke tastature ili tastature na ekranu.';

  @override
  String get demoCupertinoTextFieldPIN => 'PIN';

  @override
  String get demoColorsTitle => 'Boje';

  @override
  String get demoColorsSubtitle => 'Sve unapred određene boje';

  @override
  String get demoColorsDescription =>
      'Boje i šema boja koje predstavljaju paletu boja materijalnog dizajna.';

  @override
  String get demoTypographyTitle => 'Tipografija';

  @override
  String get demoTypographySubtitle => 'Svi unapred definisani stilovi teksta';

  @override
  String get demoTypographyDescription =>
      'Definicije raznih tipografskih stilova u materijalnom dizajnu.';

  @override
  String get demo2dTransformationsTitle => '2D transformacije';

  @override
  String get demo2dTransformationsSubtitle => 'Pomeranje, zumiranje, rotiranje';

  @override
  String get demo2dTransformationsDescription =>
      'Dodirnite da biste izmenili delove slike i koristite pokrete da biste se kretali po sceni. Prevucite da biste pomerali, skupite prste da biste zumirali i rotirajte pomoću dva prsta. Pritisnite dugme za resetovanje da biste se vratili na početni položaj.';

  @override
  String get demo2dTransformationsResetTooltip => 'Resetujte transformacije';

  @override
  String get demo2dTransformationsEditTooltip => 'Izmenite deo slike';

  @override
  String get buttonText => 'DUGME';

  @override
  String get demoBottomSheetTitle => 'Donja tabela';

  @override
  String get demoBottomSheetSubtitle => 'Trajne i modalne donje tabele';

  @override
  String get demoBottomSheetPersistentTitle => 'Trajna donja tabela';

  @override
  String get demoBottomSheetPersistentDescription =>
      'Trajna donja tabela prikazuje informacije koje dopunjuju primarni sadržaj aplikacije. Trajna donja tabela ostaje vidljiva i pri interakciji korisnika sa drugim delovima aplikacije.';

  @override
  String get demoBottomSheetModalTitle => 'Modalna donja tabela';

  @override
  String get demoBottomSheetModalDescription =>
      'Modalna donja tabela je alternativa meniju ili dijalogu i onemogućava interakciju korisnika sa ostatkom aplikacije.';

  @override
  String get demoBottomSheetAddLabel => 'Dodajte';

  @override
  String get demoBottomSheetButtonText => 'PRIKAŽI DONJU TABELU';

  @override
  String get demoBottomSheetHeader => 'Zaglavlje';

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

  @override
  String get demoListsTitle => 'Liste';

  @override
  String get demoListsSubtitle => 'Izgledi pokretnih lista';

  @override
  String get demoListsDescription =>
      'Jedan red fiksne visine koji obično sadrži neki tekst, kao i ikonu na početku ili na kraju.';

  @override
  String get demoOneLineListsTitle => 'Jedan red';

  @override
  String get demoTwoLineListsTitle => 'Dva reda';

  @override
  String get demoListsSecondary => 'Sekundarni tekst';

  @override
  String get demoProgressIndicatorTitle => 'Indikatori napretka';

  @override
  String get demoProgressIndicatorSubtitle => 'Linearni, kružni, neodređeni';

  @override
  String get demoCircularProgressIndicatorTitle => 'Kružni indikator napretka';

  @override
  String get demoCircularProgressIndicatorDescription =>
      'Kružni indikator napretka materijalnog dizajna koji se okreće da bi pokazao da je aplikacija zauzeta.';

  @override
  String get demoLinearProgressIndicatorTitle => 'Linearni indikator napretka';

  @override
  String get demoLinearProgressIndicatorDescription =>
      'Linearni indikator napretka materijalnog dizajna, poznat i kao traka napretka.';

  @override
  String get demoPickersTitle => 'Birači';

  @override
  String get demoPickersSubtitle => 'Biranje datuma i vremena';

  @override
  String get demoDatePickerTitle => 'Birač datuma';

  @override
  String get demoDatePickerDescription =>
      'Prikazuje dijalog sa biračem datuma materijalnog dizajna.';

  @override
  String get demoTimePickerTitle => 'Birač vremena';

  @override
  String get demoTimePickerDescription =>
      'Prikazuje dijalog sa biračem vremena materijalnog dizajna.';

  @override
  String get demoPickersShowPicker => 'PRIKAŽI BIRAČ';

  @override
  String get demoTabsTitle => 'Kartice';

  @override
  String get demoTabsScrollingTitle => 'Pomeranje';

  @override
  String get demoTabsNonScrollingTitle => 'Bez pomeranja';

  @override
  String get demoTabsSubtitle =>
      'Kartice sa prikazima koji mogu zasebno da se pomeraju';

  @override
  String get demoTabsDescription =>
      'Kartice organizuju sadržaj na različitim ekranima, u skupovima podataka i drugim interakcijama.';

  @override
  String get demoSnackbarsTitle => 'Trake za obaveštenja';

  @override
  String get demoSnackbarsSubtitle =>
      'Trake za obaveštenja prikazuju poruke u dnu ekrana';

  @override
  String get demoSnackbarsDescription =>
      'Trake za obaveštenja obaveštavaju korisnike o procesu koji je neka aplikacija obavila ili će obaviti. Privremeno se prikazuju u dnu ekrana. Ne bi trebalo da ometaju korisnički doživljaj i ne zahtevaju aktivnost korisnika da bi nestale.';

  @override
  String get demoSnackbarsButtonLabel => 'PRIKAZUJ TRAKU ZA OBAVEŠTENJA';

  @override
  String get demoSnackbarsText => 'Ovo je traka za obaveštenja.';

  @override
  String get demoSnackbarsActionButtonLabel => 'RADNJA';

  @override
  String get demoSnackbarsAction =>
      'Pritisnuli ste radnju trake za obaveštenja.';

  @override
  String get demoSelectionControlsTitle => 'Kontrole izbora';

  @override
  String get demoSelectionControlsSubtitle =>
      'Polja za potvrdu, dugmad za izbor i prekidači';

  @override
  String get demoSelectionControlsCheckboxTitle => 'Polje za potvrdu';

  @override
  String get demoSelectionControlsCheckboxDescription =>
      'Polja za potvrdu omogućavaju korisniku da izabere više opcija iz skupa. Vrednost uobičajenog polja za potvrdu je Tačno ili Netačno, a vrednost trostrukog polja za potvrdu može da bude i Ništa.';

  @override
  String get demoSelectionControlsRadioTitle => 'Dugme za izbor';

  @override
  String get demoSelectionControlsRadioDescription =>
      'Dugmad za izbor omogućavaju korisniku da izabere jednu opciju iz skupa. Koristite dugmad za izbor da biste omogućili ekskluzivni izbor ako smatrate da korisnik treba da vidi sve dostupne opcije jednu pored druge.';

  @override
  String get demoSelectionControlsSwitchTitle => 'Prekidač';

  @override
  String get demoSelectionControlsSwitchDescription =>
      'Prekidači za uključivanje/isključivanje menjaju status pojedinačnih opcija podešavanja. Na osnovu odgovarajuće oznake u tekstu korisnicima treba da bude jasno koju opciju prekidač kontroliše i koji je njen status.';

  @override
  String get demoBottomTextFieldsTitle => 'Polja za unos teksta';

  @override
  String get demoTextFieldTitle => 'Polja za unos teksta';

  @override
  String get demoTextFieldSubtitle =>
      'Jedan red teksta i brojeva koji mogu da se izmene';

  @override
  String get demoTextFieldDescription =>
      'Polja za unos teksta omogućavaju korisnicima da unesu tekst u korisnički interfejs. Obično se prikazuju u obliku obrazaca i dijaloga.';

  @override
  String get demoTextFieldShowPasswordLabel => 'Prikaži lozinku';

  @override
  String get demoTextFieldHidePasswordLabel => 'Sakrij lozinku';

  @override
  String get demoTextFieldFormErrors =>
      'Pre slanja ispravite greške označene crvenom bojom.';

  @override
  String get demoTextFieldNameRequired => 'Ime je obavezno.';

  @override
  String get demoTextFieldOnlyAlphabeticalChars =>
      'Unosite samo abecedne znakove.';

  @override
  String get demoTextFieldEnterUSPhoneNumber =>
      '(###) ###-#### – unesite broj telefona u Sjedinjenim Američkim Državama';

  @override
  String get demoTextFieldEnterPassword => 'Unesite lozinku.';

  @override
  String get demoTextFieldPasswordsDoNotMatch => 'Lozinke se ne podudaraju';

  @override
  String get demoTextFieldWhatDoPeopleCallYou => 'Kako vas ljudi zovu?';

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

  @override
  String get demoTextFieldWhereCanWeReachYou =>
      'Gde možemo da vas kontaktiramo?';

  @override
  String get demoTextFieldPhoneNumber => 'Broj telefona*';

  @override
  String get demoTextFieldYourEmailAddress => 'Vaša imejl adresa';

  @override
  String get demoTextFieldEmail => 'Imejl';

  @override
  String get demoTextFieldTellUsAboutYourself =>
      'Recite nam nešto o sebi (npr. napišite čime se bavite ili koje hobije imate)';

  @override
  String get demoTextFieldKeepItShort =>
      'Neka bude kratko, ovo je samo demonstracija.';

  @override
  String get demoTextFieldLifeStory => 'Biografija';

  @override
  String get demoTextFieldSalary => 'Plata';

  @override
  String get demoTextFieldUSD => 'USD';

  @override
  String get demoTextFieldNoMoreThan => 'Ne više od 8 znakova.';

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

  @override
  String get demoTextFieldRetypePassword => 'Ponovo unesite lozinku*';

  @override
  String get demoTextFieldSubmit => 'POŠALJI';

  @override
  String demoTextFieldNameHasPhoneNumber(Object name, Object phoneNumber) {
    return '${name} ima broj telefona ${phoneNumber}';
  }

  @override
  String get demoTextFieldRequiredField => '* označava obavezno polje';

  @override
  String get demoTooltipTitle => 'Objašnjenja';

  @override
  String get demoTooltipSubtitle =>
      'Kratka poruka koja se prikazuje pri dugom pritisku ili prelasku kursorom';

  @override
  String get demoTooltipDescription =>
      'Objašnjenja pružaju tekstualne oznake koje objašnjavaju funkciju dugmeta ili neke druge radnje u korisničkom interfejsu. Objašnjenja prikazuju informativni tekst kada korisnici prelaze kursorom preko elementa, odnosno kada se fokusiraju na njega ili ga dugo pritiskaju.';

  @override
  String get demoTooltipInstructions =>
      'Dugo pritiskajte element ili pređite kursorom preko njega da bi se prikazalo objašnjenje.';

  @override
  String get bottomNavigationCommentsTab => 'Komentari';

  @override
  String get bottomNavigationCalendarTab => 'Kalendar';

  @override
  String get bottomNavigationAccountTab => 'Nalog';

  @override
  String get bottomNavigationAlarmTab => 'Alarm';

  @override
  String get bottomNavigationCameraTab => 'Kamera';

  @override
  String bottomNavigationContentPlaceholder(Object title) {
    return 'Čuvar mesta za karticu ${title}';
  }

  @override
  String get buttonTextCreate => 'Napravite';

  @override
  String dialogSelectedOption(Object value) {
    return 'Izabrali ste: „${value}“';
  }

  @override
  String get chipTurnOnLights => 'Uključi svetla';

  @override
  String get chipSmall => 'Mala';

  @override
  String get chipMedium => 'Srednja';

  @override
  String get chipLarge => 'Velika';

  @override
  String get chipElevator => 'Lift';

  @override
  String get chipWasher => 'Mašina za pranje veša';

  @override
  String get chipFireplace => 'Kamin';

  @override
  String get chipBiking => 'Vožnja bicikla';

  @override
  String get dialogDiscardTitle => 'Želite li da odbacite radnu verziju?';

  @override
  String get dialogLocationTitle =>
      'Želite li da koristite Google usluge lokacije?';

  @override
  String get dialogLocationDescription =>
      'Dozvolite da Google pomaže aplikacijama u određivanju lokacije. To znači da se Google-u šalju anonimni podaci o lokaciji, čak i kada nijedna aplikacija nije pokrenuta.';

  @override
  String get dialogCancel => 'OTKAŽI';

  @override
  String get dialogDiscard => 'ODBACI';

  @override
  String get dialogDisagree => 'NE PRIHVATAM';

  @override
  String get dialogAgree => 'PRIHVATAM';

  @override
  String get dialogSetBackup => 'Podesite rezervni nalog';

  @override
  String get dialogAddAccount => 'Dodaj nalog';

  @override
  String get dialogShow => 'PRIKAŽI DIJALOG';

  @override
  String get dialogFullscreenTitle => 'Dijalog preko celog ekrana';

  @override
  String get dialogFullscreenSave => 'SAČUVAJ';

  @override
  String get dialogFullscreenDescription =>
      'Demonstracija dijaloga na celom ekranu';

  @override
  String get cupertinoButton => 'Dugme';

  @override
  String get cupertinoButtonWithBackground => 'Sa pozadinom';

  @override
  String get cupertinoAlertCancel => 'Otkaži';

  @override
  String get cupertinoAlertDiscard => 'Odbaci';

  @override
  String get cupertinoAlertLocationTitle =>
      'Želite li da dozvolite da Mape pristupaju vašoj lokaciji dok koristite tu aplikaciju?';

  @override
  String get cupertinoAlertLocationDescription =>
      'Aktuelna lokacija će se prikazivati na mapama i koristi se za putanje, rezultate pretrage za stvari u blizini i procenjeno trajanje putovanja.';

  @override
  String get cupertinoAlertAllow => 'Dozvoli';

  @override
  String get cupertinoAlertDontAllow => 'Ne dozvoli';

  @override
  String get cupertinoAlertFavoriteDessert => 'Izaberite omiljenu poslasticu';

  @override
  String get cupertinoAlertDessertDescription =>
      'Na listi u nastavku izaberite omiljeni tip poslastice. Vaš izbor će se koristiti za prilagođavanje liste predloga za restorane u vašoj oblasti.';

  @override
  String get cupertinoAlertCheesecake => 'Čizkejk';

  @override
  String get cupertinoAlertTiramisu => 'Tiramisu';

  @override
  String get cupertinoAlertApplePie => 'Pita od jabuka';

  @override
  String get cupertinoAlertChocolateBrownie => 'Čokoladni brauni';

  @override
  String get cupertinoShowAlert => 'Prikaži obaveštenje';

  @override
  String get colorsRed => 'CRVENA';

  @override
  String get colorsPink => 'ROZE';

  @override
  String get colorsPurple => 'LJUBIČASTA';

  @override
  String get colorsDeepPurple => 'TAMNOLJUBIČASTA';

  @override
  String get colorsIndigo => 'TAMNOPLAVA';

  @override
  String get colorsBlue => 'PLAVA';

  @override
  String get colorsLightBlue => 'SVETLOPLAVO';

  @override
  String get colorsCyan => 'TIRKIZNA';

  @override
  String get colorsTeal => 'TIRKIZNA';

  @override
  String get colorsGreen => 'ZELENO';

  @override
  String get colorsLightGreen => 'SVETLOZELENA';

  @override
  String get colorsLime => 'ZELENOŽUTA';

  @override
  String get colorsYellow => 'ŽUTA';

  @override
  String get colorsAmber => 'ŽUTOBRAON';

  @override
  String get colorsOrange => 'NARANDŽASTA';

  @override
  String get colorsDeepOrange => 'TAMNONARANDŽASTA';

  @override
  String get colorsBrown => 'BRAON';

  @override
  String get colorsGrey => 'SIVA';

  @override
  String get colorsBlueGrey => 'PLAVOSIVA';

  @override
  String get placeChennai => 'Čenaj';

  @override
  String get placeTanjore => 'Tandžavur';

  @override
  String get placeChettinad => 'Četinad';

  @override
  String get placePondicherry => 'Pondišeri';

  @override
  String get placeFlowerMarket => 'Cvetna pijaca';

  @override
  String get placeBronzeWorks => 'Bronzani radovi';

  @override
  String get placeMarket => 'Pijaca';

  @override
  String get placeThanjavurTemple => 'Hram u Tandžavuru';

  @override
  String get placeSaltFarm => 'Solana';

  @override
  String get placeScooters => 'Skuteri';

  @override
  String get placeSilkMaker => 'Proizvođač svile';

  @override
  String get placeLunchPrep => 'Spremanje ručka';

  @override
  String get placeBeach => 'Plaža';

  @override
  String get placeFisherman => 'Ribar';

  @override
  String get starterAppTitle => 'Aplikacija za pokretanje';

  @override
  String get starterAppDescription =>
      'Izgled aplikacije za pokretanje koja reaguje';

  @override
  String get starterAppGenericButton => 'DUGME';

  @override
  String get starterAppTooltipAdd => 'Dodajte';

  @override
  String get starterAppTooltipFavorite => 'Omiljeno';

  @override
  String get starterAppTooltipShare => 'Delite';

  @override
  String get starterAppTooltipSearch => 'Pretraga';

  @override
  String get starterAppGenericTitle => 'Naslov';

  @override
  String get starterAppGenericSubtitle => 'Titl';

  @override
  String get starterAppGenericHeadline => 'Naslov';

  @override
  String get starterAppGenericBody => 'Glavni tekst';

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

  @override
  String get shrineMenuCaption => 'MENI';

  @override
  String get shrineCategoryNameAll => 'SVE';

  @override
  String get shrineCategoryNameAccessories => 'DODACI';

  @override
  String get shrineCategoryNameClothing => 'ODEĆA';

  @override
  String get shrineCategoryNameHome => 'KUĆA';

  @override
  String get shrineLogoutButtonCaption => 'ODJAVI ME';

  @override
  String get shrineLoginUsernameLabel => 'Korisničko ime';

  @override
  String get shrineLoginPasswordLabel => 'Lozinka';

  @override
  String get shrineCancelButtonCaption => 'OTKAŽI';

  @override
  String get shrineNextButtonCaption => 'DALJE';

  @override
  String get shrineCartPageCaption => 'KORPA';

  @override
  String shrineProductQuantity(Object quantity) {
    return 'Količina: ${quantity}';
  }

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

  @override
  String shrineCartItemCount(int quantity) {
    return intl.Intl.pluralLogic(
      quantity,
      locale: localeName,
      zero: 'NEMA STAVKI',
      one: '1 STAVKA',
      few: '${quantity} STAVKE',
      other: '${quantity} STAVKI',
    );
  }

  @override
  String get shrineCartClearButtonCaption => 'OBRIŠI SVE IZ KORPE';

  @override
  String get shrineCartTotalCaption => 'UKUPNO';

  @override
  String get shrineCartSubtotalCaption => 'Međuzbir:';

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

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

  @override
  String get shrineProductVagabondSack => 'Vrećasta torba';

  @override
  String get shrineProductStellaSunglasses => 'Naočare za sunce Stella';

  @override
  String get shrineProductWhitneyBelt => 'Kaiš Whitney';

  @override
  String get shrineProductGardenStrand => 'Baštenski konopac';

  @override
  String get shrineProductStrutEarrings => 'Strut minđuše';

  @override
  String get shrineProductVarsitySocks => 'Čarape sa prugama';

  @override
  String get shrineProductWeaveKeyring => 'Pleteni privezak za ključeve';

  @override
  String get shrineProductGatsbyHat => 'Kačket';

  @override
  String get shrineProductShrugBag => 'Torba sa ručkom za nošenje na ramenu';

  @override
  String get shrineProductGiltDeskTrio => 'Trio pozlaćenih stočića';

  @override
  String get shrineProductCopperWireRack => 'Bakarna vešalica';

  @override
  String get shrineProductSootheCeramicSet => 'Keramički set Soothe';

  @override
  String get shrineProductHurrahsTeaSet => 'Čajni set Hurrahs';

  @override
  String get shrineProductBlueStoneMug => 'Plava kamena šolja';

  @override
  String get shrineProductRainwaterTray => 'Posuda za kišnicu';

  @override
  String get shrineProductChambrayNapkins => 'Platnene salvete';

  @override
  String get shrineProductSucculentPlanters => 'Saksije za sočnice';

  @override
  String get shrineProductQuartetTable => 'Sto za četiri osobe';

  @override
  String get shrineProductKitchenQuattro => 'Kuhinjski set iz četiri dela';

  @override
  String get shrineProductClaySweater => 'Džemper boje gline';

  @override
  String get shrineProductSeaTunic => 'Tamnoplava tunika';

  @override
  String get shrineProductPlasterTunic => 'Tunika boje gipsa';

  @override
  String get shrineProductWhitePinstripeShirt => 'Bela košulja sa prugama';

  @override
  String get shrineProductChambrayShirt => 'Platnena majica';

  @override
  String get shrineProductSeabreezeSweater =>
      'Džemper sa šablonom morskih talasa';

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

  @override
  String get shrineProductNavyTrousers => 'Tamnoplave pantalone';

  @override
  String get shrineProductWalterHenleyWhite =>
      'Majica sa izrezom u obliku slova v (bele boje)';

  @override
  String get shrineProductSurfAndPerfShirt => 'Surferska majica';

  @override
  String get shrineProductGingerScarf => 'Crveni šal';

  @override
  String get shrineProductRamonaCrossover => 'Ženska bluza Ramona';

  @override
  String get shrineProductClassicWhiteCollar => 'Klasična bela košulja';

  @override
  String get shrineProductCeriseScallopTee =>
      'Tamnoružičasta majica sa talasastim rubom';

  @override
  String get shrineProductShoulderRollsTee => 'Majica sa zavrnutim rukavima';

  @override
  String get shrineProductGreySlouchTank => 'Siva majica bez rukava';

  @override
  String get shrineProductSunshirtDress => 'Haljina za zaštitu od sunca';

  @override
  String get shrineProductFineLinesTee => 'Majica sa tankim crtama';

  @override
  String get shrineTooltipSearch => 'Pretražite';

  @override
  String get shrineTooltipSettings => 'Podešavanja';

  @override
  String get shrineTooltipOpenMenu => 'Otvorite meni';

  @override
  String get shrineTooltipCloseMenu => 'Zatvorite meni';

  @override
  String get shrineTooltipCloseCart => 'Zatvorite korpu';

  @override
  String shrineScreenReaderCart(int quantity) {
    return intl.Intl.pluralLogic(
      quantity,
      locale: localeName,
      zero: 'Korpa za kupovinu, nema artikala',
      one: 'Korpa za kupovinu, 1 artikal',
      few: 'Korpa za kupovinu, ${quantity} artikla',
      other: 'Korpa za kupovinu, ${quantity} artikala',
    );
  }

  @override
  String get shrineScreenReaderProductAddToCart => 'Dodaj u korpu';

  @override
  String shrineScreenReaderRemoveProductButton(Object product) {
    return 'Ukloni proizvod ${product}';
  }

  @override
  String get shrineTooltipRemoveItem => 'Uklonite stavku';

  @override
  String get craneFormDiners => 'Ekspres restorani';

  @override
  String get craneFormDate => 'Izaberite datum';

  @override
  String get craneFormTime => 'Izaberite vreme';

  @override
  String get craneFormLocation => 'Izaberite lokaciju';

  @override
  String get craneFormTravelers => 'Putnici';

  @override
  String get craneFormOrigin => 'Odaberite mesto polaska';

  @override
  String get craneFormDestination => 'Odaberite odredište';

  @override
  String get craneFormDates => 'Izaberite datume';

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

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

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

  @override
  String get craneFly => 'LET';

  @override
  String get craneSleep => 'NOĆENJE';

  @override
  String get craneEat => 'ISHRANA';

  @override
  String get craneFlySubhead => 'Istražujte letove prema destinaciji';

  @override
  String get craneSleepSubhead =>
      'Istražujte smeštajne objekte prema odredištu';

  @override
  String get craneEatSubhead => 'Istražujte restorane prema odredištu';

  @override
  String craneFlyStops(int numberOfStops) {
    return intl.Intl.pluralLogic(
      numberOfStops,
      locale: localeName,
      zero: 'Direktan',
      one: '1 zaustavljanje',
      few: '${numberOfStops} zaustavljanja',
      other: '${numberOfStops} zaustavljanja',
    );
  }

  @override
  String craneSleepProperties(int totalProperties) {
    return intl.Intl.pluralLogic(
      totalProperties,
      locale: localeName,
      zero: 'Nema dostupnih objekata',
      one: '1 dostupan objekat',
      few: '${totalProperties} dostupna objekta',
      other: '${totalProperties} dostupnih objekata',
    );
  }

  @override
  String craneEatRestaurants(int totalRestaurants) {
    return intl.Intl.pluralLogic(
      totalRestaurants,
      locale: localeName,
      zero: 'Nema restorana',
      one: '1 restoran',
      few: '${totalRestaurants} restorana',
      other: '${totalRestaurants} restorana',
    );
  }

  @override
  String get craneFly0 => 'Aspen, Sjedinjene Američke Države';

  @override
  String get craneFly1 => 'Big Sur, Sjedinjene Američke Države';

  @override
  String get craneFly2 => 'Dolina Kumbu, Nepal';

  @override
  String get craneFly3 => 'Maču Pikču, Peru';

  @override
  String get craneFly4 => 'Male, Maldivi';

  @override
  String get craneFly5 => 'Vicnau, Švajcarska';

  @override
  String get craneFly6 => 'Meksiko Siti, Meksiko';

  @override
  String get craneFly7 => 'Maunt Rašmor, Sjedinjene Američke Države';

  @override
  String get craneFly8 => 'Singapur';

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

  @override
  String get craneFly10 => 'Kairo, Egipat';

  @override
  String get craneFly11 => 'Lisabon, Portugalija';

  @override
  String get craneFly12 => 'Napa, Sjedinjene Američke Države';

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

  @override
  String get craneSleep0 => 'Male, Maldivi';

  @override
  String get craneSleep1 => 'Aspen, Sjedinjene Američke Države';

  @override
  String get craneSleep2 => 'Maču Pikču, Peru';

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

  @override
  String get craneSleep4 => 'Vicnau, Švajcarska';

  @override
  String get craneSleep5 => 'Big Sur, Sjedinjene Američke Države';

  @override
  String get craneSleep6 => 'Napa, Sjedinjene Američke Države';

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

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

  @override
  String get craneSleep9 => 'Lisabon, Portugalija';

  @override
  String get craneSleep10 => 'Kairo, Egipat';

  @override
  String get craneSleep11 => 'Tajpej, Tajvan';

  @override
  String get craneEat0 => 'Napulj, Italija';

  @override
  String get craneEat1 => 'Dalas, Sjedinjene Američke Države';

  @override
  String get craneEat2 => 'Kordoba, Argentina';

  @override
  String get craneEat3 => 'Portland, Sjedinjene Američke Države';

  @override
  String get craneEat4 => 'Pariz, Francuska';

  @override
  String get craneEat5 => 'Seul, Južna Koreja';

  @override
  String get craneEat6 => 'Sijetl, Sjedinjene Američke Države';

  @override
  String get craneEat7 => 'Nešvil, Sjedinjene Američke Države';

  @override
  String get craneEat8 => 'Atlanta, Sjedinjene Američke Države';

  @override
  String get craneEat9 => 'Madrid, Španija';

  @override
  String get craneEat10 => 'Lisabon, Portugalija';

  @override
  String get craneFly0SemanticLabel =>
      'Planinska koliba u snežnom pejzažu sa zimzelenim drvećem';

  @override
  String get craneFly1SemanticLabel => 'Šator u polju';

  @override
  String get craneFly2SemanticLabel =>
      'Molitvene zastavice ispred snegom prekrivene planine';

  @override
  String get craneFly3SemanticLabel => 'Tvrđava u Maču Pikčuu';

  @override
  String get craneFly4SemanticLabel => 'Bungalovi koji se nadvijaju nad vodom';

  @override
  String get craneFly5SemanticLabel => 'Hotel na obali jezera ispred planina';

  @override
  String get craneFly6SemanticLabel =>
      'Pogled na Palatu lepih umetnosti iz vazduha';

  @override
  String get craneFly7SemanticLabel => 'Maunt Rašmor';

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

  @override
  String get craneFly9SemanticLabel =>
      'Čovek se naslanja na stari plavi automobil';

  @override
  String get craneFly10SemanticLabel => 'Minareti džamije Al-Adžar u sumrak';

  @override
  String get craneFly11SemanticLabel => 'Svetionik od cigala na moru';

  @override
  String get craneFly12SemanticLabel => 'Bazen sa palmama';

  @override
  String get craneFly13SemanticLabel => 'Bazen na obali mora sa palmama';

  @override
  String get craneSleep0SemanticLabel =>
      'Bungalovi koji se nadvijaju nad vodom';

  @override
  String get craneSleep1SemanticLabel =>
      'Planinska koliba u snežnom pejzažu sa zimzelenim drvećem';

  @override
  String get craneSleep2SemanticLabel => 'Tvrđava u Maču Pikčuu';

  @override
  String get craneSleep3SemanticLabel =>
      'Čovek se naslanja na stari plavi automobil';

  @override
  String get craneSleep4SemanticLabel => 'Hotel na obali jezera ispred planina';

  @override
  String get craneSleep5SemanticLabel => 'Šator u polju';

  @override
  String get craneSleep6SemanticLabel => 'Bazen sa palmama';

  @override
  String get craneSleep7SemanticLabel => 'Šareni stanovi na trgu Ribeira';

  @override
  String get craneSleep8SemanticLabel =>
      'Majanske ruševine na litici iznad plaže';

  @override
  String get craneSleep9SemanticLabel => 'Svetionik od cigala na moru';

  @override
  String get craneSleep10SemanticLabel => 'Minareti džamije Al-Adžar u sumrak';

  @override
  String get craneSleep11SemanticLabel => 'Neboder Tajpej 101';

  @override
  String get craneEat0SemanticLabel => 'Pica u peći na drva';

  @override
  String get craneEat1SemanticLabel =>
      'Prazan bar sa visokim barskim stolicama';

  @override
  String get craneEat2SemanticLabel => 'Pljeskavica';

  @override
  String get craneEat3SemanticLabel => 'Korejski takos';

  @override
  String get craneEat4SemanticLabel => 'Čokoladni desert';

  @override
  String get craneEat5SemanticLabel =>
      'Deo za sedenje u restoranu sa umetničkom atmosferom';

  @override
  String get craneEat6SemanticLabel => 'Jelo sa škampima';

  @override
  String get craneEat7SemanticLabel => 'Ulaz u pekaru';

  @override
  String get craneEat8SemanticLabel => 'Tanjir sa rečnim rakovima';

  @override
  String get craneEat9SemanticLabel => 'Šank u kafeu sa pecivom';

  @override
  String get craneEat10SemanticLabel => 'Žena drži veliki sendvič sa pastrmom';

  @override
  String get fortnightlyMenuFrontPage => 'Naslovna stranica';

  @override
  String get fortnightlyMenuWorld => 'Svet';

  @override
  String get fortnightlyMenuUS => 'SAD';

  @override
  String get fortnightlyMenuPolitics => 'Politika';

  @override
  String get fortnightlyMenuBusiness => 'Biznis';

  @override
  String get fortnightlyMenuTech => 'Tehnologija';

  @override
  String get fortnightlyMenuScience => 'Nauka';

  @override
  String get fortnightlyMenuSports => 'Sport';

  @override
  String get fortnightlyMenuTravel => 'Putovanja';

  @override
  String get fortnightlyMenuCulture => 'Kultura';

  @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 => 'Najnovije vesti';

  @override
  String get fortnightlyHeadlineHealthcare =>
      'Tiha, ali moćna revolucija zdravstvenog sistema';

  @override
  String get fortnightlyHeadlineWar => 'Razdvojeni američki životi tokom rata';

  @override
  String get fortnightlyHeadlineGasoline => 'Budućnost benzina';

  @override
  String get fortnightlyHeadlineArmy => 'Reformisanje Zelene armije iznutra';

  @override
  String get fortnightlyHeadlineStocks =>
      'Dok akcije stagniraju, mnogi se okreću valuti';

  @override
  String get fortnightlyHeadlineFabrics =>
      'Dizajneri koriste tehnologiju da bi pravili futurističke tkanine';

  @override
  String get fortnightlyHeadlineFeminists => 'Feministkinje se bave politikom';

  @override
  String get fortnightlyHeadlineBees => 'Nedostaju pčele za farme';
}
