Files
pluriwave/lib/l10n/gen/app_localizations_id.dart
T
FreeTLab aa0b242374 feat(iap): add freemium unlock via one-time in-app purchase
Adds a permanent, non-consumable premium unlock (EstadoEntitlement +
PuertoCompras/ServicioComprasPlayBilling) that removes ads and unlocks
alarm vacations, alarms past a 5-alarm free cap, recording start, and
full Android Auto browsing. The phone equalizer stays free for everyone.

- Entitlement is prefs-backed (compra_premium_v1), fail-open, and
  resolvable headlessly via esPremiumPersistido() for the Android Auto
  audio handler, which registers before runApp.
- Android Auto reduced mode keeps the real root folder labels for free
  users; browsing into any of them (and playFromMediaId/playFromSearch/
  skipToNext/skipToPrevious) is blocked at the getChildren/servicio_audio
  choke points, with a locked "Función Premium" item as the backstop.
  Current-station play/pause/stop stays untouched. A free -> premium
  transition actively invalidates the head unit's cached browse tree.
- Ads (top banner + capped interstitial before adding a station or an
  alarm) are gated behind entitlement via ServicioAnuncios, using
  official Google test ad unit IDs pending AdMob provisioning.
- Alarm cap UX shows an explanatory message with a secondary unlock
  action rather than a bare paywall jump; existing data is grandfathered.
- 4 new localization keys translated across all 13 supported locales.

Co-located tests use strict TDD (RED test before implementation) for
every new pure-logic unit; full existing suite passes unchanged.
2026-08-10 20:37:07 +02:00

1871 lines
45 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Indonesian (`id`).
class AppLocalizationsId extends AppLocalizations {
AppLocalizationsId([String locale = 'id']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Dengar';
@override
String get navSearch => 'Cari';
@override
String get navFavorites => 'Favorit';
@override
String get navAlarms => 'Alarm';
@override
String get navSettings => 'Pengaturan';
@override
String get actionOk => 'Oke';
@override
String get sleepTimer => 'Timer tidur';
@override
String get sleepTimerDescription =>
'Mematikan radio secara lembut dengan hitung mundur yang tepat.';
@override
String get cancelTimer => 'Batalkan timer';
@override
String get optionOther => 'Lainnya';
@override
String get customDurationTitle => 'Durasi khusus';
@override
String get durationGreaterThanZero =>
'Pilih durasi yang lebih besar dari nol.';
@override
String get hoursLabel => 'Jam';
@override
String get minutesLabel => 'Menit';
@override
String get secondsLabel => 'Detik';
@override
String durationHoursMinutesSeconds(
Object hours,
Object minutes,
Object seconds,
) {
return '$hours jam $minutes mnt $seconds dtk';
}
@override
String durationMinutesSeconds(Object minutes, Object seconds) {
return '$minutes mnt $seconds dtk';
}
@override
String durationMinutesOnly(Object minutes) {
return '$minutes mnt';
}
@override
String durationSecondsOnly(Object seconds) {
return '$seconds dtk';
}
@override
String get saveQuickAccess => 'Simpan sebagai akses cepat';
@override
String get startTimer => 'Mulai timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Eksekusi $alarmName kali ini dilewati.';
}
@override
String get settingsTitle => 'Pengaturan';
@override
String get settingsSubtitle =>
'Kontrol halus untuk suara, cadangan, dan stasiun khusus.';
@override
String get settingsGroupAudioTitle => 'AUDIO';
@override
String get settingsGroupStationsTitle => 'STASIUN';
@override
String get settingsGroupRecordingsTitle => 'REKAMAN & MUSIK';
@override
String get settingsGroupApplicationTitle => 'APLIKASI';
@override
String get infoSectionTitle => 'Info';
@override
String get languageSectionTitle => 'Bahasa';
@override
String get languageSectionDescription =>
'Pilih bagaimana bahasa aplikasi ditampilkan.';
@override
String get languageSystemDefault => 'Sistem';
@override
String get languageSpanish => 'Spanyol';
@override
String get languageEnglish => 'Inggris';
@override
String languageUpdated(Object languageName) {
return 'Bahasa diperbarui: $languageName';
}
@override
String get languageUpdatedSystem => 'Bahasa diperbarui: Sistem';
@override
String get timerSectionTitle => 'Timer tidur';
@override
String get timerSectionAdd => 'Tambah';
@override
String get timerSectionDescription =>
'Sesuaikan pintasan cepat yang muncul saat radio dimatikan otomatis.';
@override
String get timerSectionRestoreRecommended => 'Pulihkan waktu yang disarankan';
@override
String get newQuickAccessTitle => 'Akses cepat baru';
@override
String get saveQuickAccessButton => 'Simpan akses cepat';
@override
String get settingsSafeStatus => 'Aman';
@override
String get recordingsSectionTitle => 'Rekaman';
@override
String get recordingsFolderDialogTitle => 'Pilih folder rekaman';
@override
String get recordingsPathUpdated => 'Jalur rekaman diperbarui';
@override
String recordingsPathSaveError(Object error) {
return 'Tidak dapat menyimpan jalur: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'Folder internal bawaan akan digunakan';
@override
String get recordingsFolderTitle => 'Folder rekaman';
@override
String get recordingsPathCalculating => 'Menghitung jalur...';
@override
String get recordingsChangePath => 'Ubah jalur';
@override
String get recordingsUseDefaultPath => 'Gunakan jalur bawaan';
@override
String get recordingsOriginalStreamHint =>
'Radio disimpan dari stream asli, tanpa kompresi ulang.';
@override
String get equalizerActive => 'Aktif';
@override
String get equalizerDisabled => 'Nonaktif';
@override
String get equalizerEnable => 'Aktifkan equalizer';
@override
String get equalizerRealtimeSubtitle =>
'Perubahan diterapkan secara langsung ke stasiun saat ini.';
@override
String get equalizerPendingSubtitle =>
'Perubahan disimpan dan akan diterapkan saat Android mengaktifkan efek.';
@override
String get equalizerPerStationTitle => 'Gunakan EQ khusus untuk favorit ini';
@override
String equalizerPerStationActive(Object stationName) {
return 'Aktif untuk $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Menggunakan EQ utama untuk $stationName';
}
@override
String get equalizerBaseExplainer =>
'Ini adalah equalizer dasar: berlaku untuk semua stasiun yang belum punya pengaturan sendiri. EQ khusus suatu stasiun diatur dari layar pemutarannya sendiri dan mengesampingkan yang ini.';
@override
String get equalizerActiveOutputLabel => 'Output aktif';
@override
String get equalizerActiveOutputDefault => 'Speaker perangkat ini';
@override
String get equalizerStationsWithOwnEqTitle => 'Stasiun dengan EQ sendiri';
@override
String get equalizerStationsWithOwnEqSubtitle =>
'Mengabaikan equalizer dasar ini';
@override
String get equalizerStationsWithOwnEqEmpty =>
'Belum ada stasiun yang punya EQ sendiri.';
@override
String get equalizerSaveAsPresetAction => 'Simpan sebagai Preset';
@override
String get equalizerResetToFlatAction => 'Setel ulang ke datar';
@override
String get equalizerSavePresetDialogTitle => 'Simpan sebagai Preset';
@override
String get equalizerSavePresetNameLabel => 'Nama Preset';
@override
String get equalizerSavePresetEmptyNameError => 'Masukkan nama untuk Preset.';
@override
String get equalizerSavePresetConfirm => 'Simpan';
@override
String get preferredStationTitle => 'Stasiun pilihan';
@override
String get preferredStationDescription =>
'Dipilih lebih dulu saat membuat alarm dan dapat dimulai sebagai pemutaran cepat.';
@override
String get preferredStationNoStationsTitle =>
'Belum ada stasiun yang tersedia';
@override
String get preferredStationNoStationsSubtitle =>
'Simpan favorit atau muat stasiun untuk memilih stasiun pilihan.';
@override
String get preferredStationAutomaticFallback => 'Cadangan otomatis';
@override
String get preferredStationDefaultFavorite => 'Favorit bawaan';
@override
String preferredStationCurrent(Object stationName) {
return 'Pilihan saat ini: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'Tidak ada favorit: otomatis menggunakan $stationName';
}
@override
String get preferredStationPlay => 'Putar pilihan';
@override
String get customStationsTitle => 'Stasiun khusus';
@override
String get customStationsAdd => 'Tambah';
@override
String get customStationsEmpty => 'Tidak ada stasiun khusus.';
@override
String get playAction => 'Putar';
@override
String get deleteAction => 'Hapus';
@override
String get addStationTitle => 'Tambah stasiun';
@override
String get stationNameLabel => 'Nama *';
@override
String get unnamedStation => 'Stasiun tanpa nama';
@override
String get requiredField => 'Kolom wajib';
@override
String get streamUrlLabel => 'URL stream *';
@override
String get invalidUrl => 'URL tidak valid';
@override
String get countryOptionalLabel => 'Negara (opsional)';
@override
String get saveStation => 'Simpan stasiun';
@override
String get backupSectionTitle => 'Cadangan';
@override
String get backupExportTitle => 'Ekspor pengaturan';
@override
String get backupExportSubtitle => 'Favorit, stasiun khusus, dan preset EQ';
@override
String get backupImportTitle => 'Impor pengaturan';
@override
String get backupImportSubtitle => 'Pulihkan dari berkas cadangan';
@override
String get backupShareSubject => 'PluriWave — cadangan';
@override
String backupShareText(Object date) {
return 'Pengaturan PluriWave diekspor pada $date';
}
@override
String backupExportError(Object error) {
return 'Kesalahan saat mengekspor: $error';
}
@override
String get backupImportConfirmMessage =>
'Ini akan menambahkan favorit, stasiun, dan preset dari berkas. Lanjutkan?';
@override
String get backupImportSuccess => 'Pengaturan berhasil diimpor';
@override
String backupImportError(Object error) {
return 'Kesalahan saat mengimpor: $error';
}
@override
String get appVersionLoading => 'Memuat versi...';
@override
String appVersionSubtitle(Object version) {
return '$version - Radio dunia';
}
@override
String get savedFavoritesTitle => 'Favorit tersimpan';
@override
String get stationFilterTitle => 'Filter stasiun';
@override
String get stationFilterSubtitle => 'Hanya stasiun yang terverifikasi aktif';
@override
String get backgroundAudioTitle => 'Audio latar belakang';
@override
String get backgroundAudioSubtitle => 'Tetap berjalan saat layar dimatikan';
@override
String get dash => '—';
@override
String get cancelAction => 'Batal';
@override
String get equalizerTitle => 'Equalizer';
@override
String get recordingsOpenFolder => 'Buka folder';
@override
String recordingsOpenFolderError(Object error) {
return 'Tidak dapat membuka folder: $error';
}
@override
String get recordingsMaxSizeTitle => 'Ukuran rekaman maksimum';
@override
String recordingsMaxSizeSubtitle(int size) {
return 'Batas saat ini: $size MB';
}
@override
String get recordingsMaxSizeDialogTitle => 'Ukuran maksimum per rekaman';
@override
String get recordingsMaxSizeMbLabel => 'Megabyte maksimum';
@override
String recordingsMaxSizeSaved(int size) {
return 'Batas rekaman diperbarui menjadi $size MB';
}
@override
String get recordingsLibraryTitle => 'Rekaman saya';
@override
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
return '$usedMb MB dari $totalMb MB terpakai';
}
@override
String get recordingsLibraryStorageFolderCaption =>
'Music/PluriWave · yang terlama dihapus saat mencapai batas';
@override
String get recordingsLibraryEmptyTitle => 'Belum ada rekaman';
@override
String get recordingsLibraryEmptySubtitle =>
'Rekaman yang Anda simpan akan muncul di sini.';
@override
String get recordingActionRename => 'Ganti nama';
@override
String get recordingActionShare => 'Bagikan';
@override
String get recordingActionDelete => 'Hapus';
@override
String get recordingRenameDialogTitle => 'Ganti nama rekaman';
@override
String get recordingRenameLabel => 'Nama';
@override
String get recordingRenameEmptyError => 'Masukkan nama';
@override
String get recordingDeleteConfirmTitle => 'Hapus rekaman?';
@override
String get recordingDeleteConfirmMessage =>
'Tindakan ini tidak dapat dibatalkan.';
@override
String get recordingsLibrarySettingsTooltip => 'Pengaturan rekaman';
@override
String get stationOrderTitle => 'Urutan stasiun';
@override
String get stationOrderByName => 'Berdasarkan nama';
@override
String get stationOrderByQuality => 'Berdasarkan kualitas';
@override
String get stationOrderByPopularity => 'Berdasarkan popularitas';
@override
String get stationOrderScopeDescription =>
'Berlaku untuk favorit, pencarian, stasiun terdekat, dan daftar cepat.';
@override
String get favoriteGroupsTitle => 'Daftar favorit';
@override
String get favoriteGroupsDescription =>
'Buat daftar pendek untuk mengatur stasiun tersimpan.';
@override
String get favoriteGroupsAdd => 'Tambah daftar';
@override
String get favoriteGroupsEdit => 'Edit daftar';
@override
String get favoriteGroupsDelete => 'Hapus daftar';
@override
String get favoriteGroupsNameLabel => 'Nama daftar';
@override
String get favoriteGroupsNameTooLong => 'Maksimum 28 karakter.';
@override
String get favoriteGroupsUnassigned => 'Belum ditetapkan';
@override
String get favoriteGroupsProtectedHint =>
'Daftar bawaan: tidak dapat diedit atau dihapus.';
@override
String get favoriteGroupsCreated => 'Daftar dibuat';
@override
String get favoriteGroupsUpdated => 'Daftar diperbarui';
@override
String get favoriteGroupsDeleted =>
'Daftar dihapus; stasiunnya kembali ke Belum ditetapkan.';
@override
String get favoriteGroupsAssign => 'Pindahkan ke daftar';
@override
String favoriteGroupsAssignSubtitle(Object groupName) {
return 'Daftar saat ini: $groupName';
}
@override
String favoriteGroupsAssigned(Object stationName, Object groupName) {
return '$stationName dipindahkan ke $groupName';
}
@override
String get favoritesTitle => 'Favorit';
@override
String get favoritesEmptyTitle => 'Belum ada favorit';
@override
String get favoritesEmptySubtitle =>
'Ketuk hati di stasiun mana pun untuk menyimpannya ke koleksi Anda.';
@override
String get favoritesHeaderSubtitle =>
'Atur koleksi Anda dengan daftar dan dekatkan radio penting.';
@override
String get favoritesCollection => 'Koleksi';
@override
String favoritesSavedCount(int count) {
return '$count tersimpan';
}
@override
String get favoritesRemoveTooltip => 'Hapus dari favorit';
@override
String favoritesRemovedMessage(Object stationName) {
return '$stationName dihapus dari favorit';
}
@override
String get favoritesFilterAllLabel => 'Semua';
@override
String favoriteGroupsChipLabel(Object groupName, int count) {
return '$groupName · $count';
}
@override
String get favoriteGroupsManage => 'Kelola daftar';
@override
String get customStationsAddCta => 'Tambahkan stasiun khusus';
@override
String get alarmPostponedCurrentExecution =>
'Alarm ditunda untuk eksekusi ini.';
@override
String get searchScreenTitle => 'Cari sinyal';
@override
String get searchScreenSubtitle =>
'Temukan radio berdasarkan nama, negara, atau bahasa dengan filter cepat dan kontras tinggi.';
@override
String get searchFiltersLabel => 'Filter';
@override
String get searchHint => 'Radio Horizonte, jazz, berita...';
@override
String get searchCountryFilterLabel => 'Negara';
@override
String get searchLanguageFilterLabel => 'Bahasa';
@override
String get searchMinQualityFilterLabel => 'Kualitas minimum';
@override
String get searchLoadingStationsLabel => 'MENCARI STASIUN…';
@override
String get searchEmptyTitle => 'Cari stasiun';
@override
String get searchNoResultsTitle => 'Tidak ada hasil';
@override
String searchNoResultsForQueryTitle(Object query) {
return 'Tidak ada hasil untuk \"$query\"';
}
@override
String get searchEmptySubtitle =>
'Gunakan bilah atas atau chip untuk menemukan sinyal dari seluruh dunia.';
@override
String get searchNoResultsSubtitle =>
'Coba hapus filter atau tulis nama lain untuk menemukan sinyal aktif.';
@override
String searchResultsCount(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count hasil',
);
return '$_temp0';
}
@override
String searchClearFiltersAction(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Hapus $count filter',
one: 'Hapus filter',
);
return '$_temp0';
}
@override
String get countriesScreenTitle => 'Negara';
@override
String get countriesSearchHint => 'Negara atau kode...';
@override
String get countriesYourLanguagesTitle => 'Bahasa Anda';
@override
String get countriesAllTitle => 'Semua negara';
@override
String get radioCountriesError => 'Negara tidak dapat dimuat.';
@override
String get countrySpain => 'Spanyol';
@override
String get countryUsa => 'Amerika Serikat';
@override
String get countryMexico => 'Meksiko';
@override
String get countryArgentina => 'Argentina';
@override
String get countryUk => 'Inggris Raya';
@override
String get countryFrance => 'Prancis';
@override
String get countryGermany => 'Jerman';
@override
String get countryItaly => 'Italia';
@override
String get countryBrazil => 'Brasil';
@override
String get countryJapan => 'Jepang';
@override
String get languageNameSpanish => 'Spanyol';
@override
String get languageNameEnglish => 'Inggris';
@override
String get languageNameFrench => 'Prancis';
@override
String get languageNameGerman => 'Jerman';
@override
String get languageNamePortuguese => 'Portugis';
@override
String get languageNameItalian => 'Italia';
@override
String get languageNameJapanese => 'Jepang';
@override
String get languageNameArabic => 'Arab';
@override
String get languageNameRussian => 'Rusia';
@override
String get homeScreenSubtitle =>
'Radio global langsung dengan sinyal bersih, favorit cerdas, dan pengalaman visual bergaya kuis.';
@override
String get exploreStations => 'Jelajahi stasiun';
@override
String stationsCount(int count) {
return '$count radio';
}
@override
String get qualityHd => 'Kualitas HD';
@override
String get yourStationsTitle => 'Stasiun Anda';
@override
String get seeAllAction => 'Lihat semua';
@override
String get openFullPlayerTooltip => 'Buka pemutar lengkap';
@override
String get nowListeningLabel => 'Sedang mendengarkan';
@override
String get nothingPlayingTitle => 'Belum ada yang diputar';
@override
String get nothingPlayingSubtitle =>
'Pilih stasiun dari Stasiun Anda atau cari salah satu untuk mulai.';
@override
String get nearYou => 'Di dekat Anda';
@override
String nearYouInCountry(Object country) {
return 'Di dekat Anda · $country';
}
@override
String get detectAction => 'Deteksi';
@override
String get liveRadar => 'Radar langsung';
@override
String get genresTitle => 'Genre';
@override
String get exploreByTitle => 'Jelajahi berdasarkan';
@override
String get exploreTrendingTitle => 'Tren';
@override
String get exploreTrendingSubtitle => 'Hari ini';
@override
String get exploreNewTitle => 'Baru';
@override
String get exploreNewSubtitle => 'Minggu ini';
@override
String get popularNowTitle => 'Populer sekarang';
@override
String get offlineBannerTitle => 'Tidak ada koneksi';
@override
String get retryAction => 'Coba lagi';
@override
String get noStationsAvailable => 'Tidak ada stasiun tersedia';
@override
String get noStationsAvailableSubtitle =>
'Coba segarkan atau pilih genre lain untuk menangkap sinyal kembali.';
@override
String get genrePop => 'Pop';
@override
String get genreRock => 'Rock';
@override
String get genreJazz => 'Jazz';
@override
String get genreClassical => 'Klasik';
@override
String get genreElectronic => 'Elektronik';
@override
String get genreNews => 'Berita';
@override
String get genreTalk => 'Obrolan';
@override
String get genreHipHop => 'Hip-hop';
@override
String get genreCountry => 'Country';
@override
String get genreMetal => 'Metal';
@override
String get genreReggae => 'Reggae';
@override
String get genreLatin => 'Latin';
@override
String get alarmScreenTitle => 'Bangun dengan musik';
@override
String get alarmScreenSubtitle =>
'Alarm dengan radio, suara aman, liburan cerdas, dan eksekusi berikutnya selalu terlihat.';
@override
String get createAlarmAction => 'Buat alarm';
@override
String alarmsCount(int count) {
return '$count alarm';
}
@override
String get activeAlarmsWithoutNextTitle =>
'Alarm aktif tanpa eksekusi berikutnya';
@override
String get noActiveAlarms => 'Tidak ada alarm aktif';
@override
String get nextAlarmTitle => 'Alarm berikutnya';
@override
String activeAlarmsWithoutNextSubtitle(int count) {
return 'Ada $count alarm aktif, tetapi saat ini tidak memiliki tanggal valid di masa depan. Periksa tanggal, hari, dan liburan.';
}
@override
String get createAlarmHint =>
'Buat alarm dan PluriWave akan menghitung eksekusi berikutnya secara otomatis.';
@override
String get alarmVacationPlay => 'Berbunyi saat liburan';
@override
String get alarmVacationPause => 'Jeda saat liburan';
@override
String alarmFadeInLabel(int seconds) {
return 'Fade-in ${seconds}d';
}
@override
String alarmNextExecution(Object date) {
return 'Eksekusi berikutnya: $date';
}
@override
String get alarmNoNextExecution =>
'Tidak memiliki eksekusi aktif berikutnya.';
@override
String alarmSkippedExecution(Object date) {
return 'Satu eksekusi dilewati: $date.';
}
@override
String get editAction => 'Edit';
@override
String get skipNextAction => 'Lewati berikutnya';
@override
String get deleteTooltip => 'Hapus';
@override
String get alarmHeroSkipAction => 'Lewati';
@override
String get alarmDeleteConfirmTitle => 'Hapus alarm?';
@override
String get alarmDeleteConfirmMessage =>
'Tindakan ini tidak dapat dibatalkan.';
@override
String get alarmSkippedNoNextSnackbar =>
'Alarm dilewati. Tidak ada eksekusi berikutnya.';
@override
String alarmSkippedReturnsSnackbar(Object date) {
return 'Alarm dilewati. Akan kembali pada $date.';
}
@override
String alarmVacationPausedNoNext(Object vacationName) {
return 'Dijeda karena liburan ($vacationName) dan tanpa eksekusi berikutnya.';
}
@override
String alarmVacationPausedReturns(Object vacationName, Object date) {
return 'Dijeda karena liburan ($vacationName) dan akan kembali pada $date.';
}
@override
String alarmVacationReturns(Object date) {
return 'Dengan liburan aktif, akan berbunyi lagi pada $date.';
}
@override
String get defaultAlarmName => 'Alarm musik';
@override
String get newAlarmTitle => 'Alarm baru';
@override
String get editAlarmTitle => 'Edit alarm';
@override
String get nameField => 'Nama';
@override
String get timeField => 'Waktu';
@override
String get dateField => 'Tanggal';
@override
String get onceOption => 'Sekali';
@override
String get dailyOption => 'Harian';
@override
String get weekdaysOption => 'Hari';
@override
String get soundAndVolumeSection => 'Suara dan volume';
@override
String get alarmFadeInTitle => 'Fade-in alarm';
@override
String get alarmFadeInOff => '0 d (tanpa transisi)';
@override
String alarmFadeInSummary(int seconds) {
return '$seconds d (dari 5% ke volume terpilih)';
}
@override
String get internalSafeSoundLabel => 'Suara internal aman';
@override
String get soundWarmSunrise => 'Matahari terbit hangat';
@override
String get soundSoftBell => 'Lonceng lembut';
@override
String get soundDigitalPulse => 'Denyut digital';
@override
String get favoriteStationLabel => 'Stasiun favorit';
@override
String get noStationUseInternalSound =>
'Tanpa stasiun: gunakan suara internal';
@override
String get alarmFallbackStationLabel => 'Stasiun cadangan';
@override
String get alarmStationPickerSearchHint => 'Cari stasiun berdasarkan nama';
@override
String get alarmSnoozeDurationTitle => 'Durasi tunda';
@override
String get snoozeAction => 'Tunda';
@override
String alarmSnoozeOptionLabel(int minutes) {
return '$minutes mnt';
}
@override
String get alarmSnoozeUsualLabel => 'biasa';
@override
String get saveFavoritesAlarmHint =>
'Simpan stasiun ke Favorit untuk digunakan sebagai alarm musik.';
@override
String get useCurrentStationAction => 'Gunakan stasiun saat ini';
@override
String get playDuringVacations => 'Bunyi saat liburan';
@override
String get playDuringVacationsHint =>
'Jika dimatikan, eksekusi berikutnya akan melompat ke hari valid pertama.';
@override
String get saveAlarmAction => 'Simpan alarm';
@override
String get chooseOneWeekdayError =>
'Pilih setidaknya satu hari dalam seminggu.';
@override
String get androidReliabilityReview => 'Tinjau keandalan Android';
@override
String get statusOk => 'Oke';
@override
String get statusPending => 'tertunda';
@override
String androidReliabilityStatus(
Object exact,
Object notifications,
Object screen,
) {
return 'Keandalan: tepat $exact · notifikasi $notifications · layar $screen';
}
@override
String get vacationRangesTitle => 'Rentang liburan';
@override
String get addAction => 'Tambah';
@override
String get vacationRangesHint =>
'Jika sebuah alarm memiliki \"Jeda saat liburan\", rentang ini dilewati otomatis.';
@override
String get noVacationRangesLoaded => 'Tidak ada rentang dimuat.';
@override
String get deleteRangeTooltip => 'Hapus rentang';
@override
String vacationRangesCount(int count) {
return '$count periode';
}
@override
String vacationSummaryActiveCountdown(int days) {
return 'Sedang berlangsung · $days hari lagi';
}
@override
String vacationSummaryUpcomingCountdown(int days) {
return 'Periode berikutnya dalam $days hari';
}
@override
String vacationImpactPausedLabel(Object times) {
return 'Dijeda: $times';
}
@override
String vacationImpactContinuesLabel(Object times) {
return 'Tetap berbunyi: $times';
}
@override
String get vacationUpcomingSectionTitle => 'TERJADWAL';
@override
String get vacationPastSectionTitle => 'Periode lampau';
@override
String get addVacationRangeCta => 'Tambahkan periode';
@override
String get vacationExplainerBanner =>
'Selama periode ini, alarm yang ditandai \"jeda saat liburan\" tidak akan berbunyi. Alarm yang ditandai \"selalu berbunyi\" tidak terpengaruh.';
@override
String get vacationNoActiveRangeHint =>
'Tidak ada periode liburan aktif saat ini.';
@override
String get vacationsDefaultName => 'Liburan';
@override
String get newVacationRangeTitle => 'Rentang liburan baru';
@override
String get editVacationRangeTitle => 'Edit rentang liburan';
@override
String get vacationDeleteConfirmTitle => 'Hapus rentang liburan?';
@override
String get vacationDeleteConfirmMessage =>
'Tindakan ini tidak dapat dibatalkan.';
@override
String get startField => 'Mulai';
@override
String get endField => 'Akhir';
@override
String get saveRangeAction => 'Simpan rentang';
@override
String get noAlarmsYetTitle => 'Belum ada alarm.';
@override
String get noAlarmsYetSubtitle =>
'Buat satu untuk merancang bangun tidur musikal Anda.';
@override
String get ringingInternalAudioActive =>
'Berbunyi dengan audio internal aman.';
@override
String get ringingPreparingInternalAudio => 'Menyiapkan audio internal aman.';
@override
String get stopAlarmAction => 'Hentikan alarm';
@override
String get alarmStopFailedMessage =>
'Kami tidak dapat memastikan alarm berhenti. Coba lagi.';
@override
String get alarmForceStopAction => 'Paksa berhenti';
@override
String get alarmMissedNotificationTitle => 'Alarm terlewat';
@override
String alarmMissedNotificationText(Object name) {
return '$name dibisukan secara otomatis setelah 10 menit.';
}
@override
String get pauseAction => 'Jeda';
@override
String miniPlayerOpenLabel(Object stationName) {
return 'Buka pemutar untuk $stationName';
}
@override
String get playerIconLabel => 'Pemutar';
@override
String get playbackStatusConnecting => 'Menghubungkan...';
@override
String get playbackStatusLive => 'Siaran langsung';
@override
String get playbackStatusPaused => 'Dijeda';
@override
String get playbackStatusReconnecting => 'Menyambung ulang...';
@override
String get playbackStatusConnectionError => 'Kesalahan koneksi';
@override
String get playbackStatusStopped => 'Dihentikan';
@override
String stationSemanticLabel(Object stationName) {
return 'Stasiun $stationName';
}
@override
String get favoritesAddTooltip => 'Tambahkan ke favorit';
@override
String favoritesAddedMessage(Object stationName) {
return '$stationName ditambahkan ke favorit';
}
@override
String get stationIconLabel => 'Ikon stasiun';
@override
String get liveNow => 'Sedang siaran langsung';
@override
String equalizerBandLabel(Object band) {
return 'Pita $band';
}
@override
String equalizerBandValue(Object value) {
return '$value desibel';
}
@override
String get equalizerPresetFlat => 'Datar';
@override
String get equalizerPresetRock => 'Rock';
@override
String get equalizerPresetPop => 'Pop';
@override
String get equalizerPresetBassBoost => 'Penguat bass';
@override
String get equalizerPresetJazz => 'Jazz';
@override
String get equalizerPresetVoice => 'Suara';
@override
String get equalizerPresetCustom => 'Kustom';
@override
String get onboardingTitle => 'Selamat datang di PluriWave';
@override
String get onboardingNewsTitle => 'Yang baru';
@override
String get onboardingStartAction => 'Mulai';
@override
String get onboardingCloseTooltip => 'Tutup';
@override
String radioRecordingError(Object error) {
return 'Kesalahan saat merekam radio: $error';
}
@override
String get radioApiConnectionError =>
'Tidak ada koneksi ke antarmuka pemrograman aplikasi radio';
@override
String get radioSearchError => 'Kesalahan pencarian. Periksa koneksi Anda.';
@override
String get radioLoadMoreStationsError =>
'Tidak dapat memuat lebih banyak stasiun.';
@override
String get radioNearbyStationsError =>
'Kami tidak dapat mendeteksi stasiun terdekat. Gunakan filter berdasarkan negara.';
@override
String radioCannotPlayStation(Object stationName) {
return 'Tidak dapat memutar \"$stationName\"';
}
@override
String get recordingSelectStationFirst => 'Pilih stasiun sebelum merekam.';
@override
String recordingStartError(Object error) {
return 'Tidak dapat memulai rekaman: $error';
}
@override
String get unsupportedConfigVersion => 'Versi konfigurasi tidak didukung';
@override
String get audioErrorGeneric => 'Kesalahan pemutaran';
@override
String get audioErrorNoInternet => 'Tidak ada koneksi internet';
@override
String get audioErrorInvalidUrl => 'Alamat radio tidak valid';
@override
String get audioErrorNotFound => 'Radio tidak tersedia (kesalahan 404)';
@override
String get audioErrorTimeout => 'Waktu koneksi habis';
@override
String get audioErrorCannotConnect => 'Tidak dapat terhubung ke radio';
@override
String get audioErrorUnsupportedFormat => 'Format aliran tidak didukung';
@override
String get audioErrorDecode => 'Kesalahan saat mendekode aliran audio';
@override
String get audioErrorCleartext =>
'Radio ini menggunakan HTTP tanpa enkripsi, dan itu tidak diizinkan';
@override
String get audioErrorSsl => 'Sertifikat SSL radio tidak valid';
@override
String get audioErrorCannotPlay => 'Radio ini tidak dapat diputar';
@override
String get audioErrorUnexpectedPlayback =>
'Kesalahan tak terduga saat memutar';
@override
String get androidExactAlarmScheduleError =>
'Android tidak dapat menjadwalkan alarm tepat. Periksa izin alarm tepat.';
@override
String get recordingPathEmptyError => 'Jalur rekaman tidak boleh kosong';
@override
String get recordingMaxSizeInvalidError =>
'Ukuran maksimum harus lebih besar dari nol';
@override
String get recordingAlreadyActiveError =>
'Sudah ada rekaman yang sedang berlangsung';
@override
String get alarmRingingFallbackActive =>
'Memutar dengan audio internal yang aman.';
@override
String get alarmRingingPreparingFallback =>
'Menyiapkan audio internal yang aman.';
@override
String get alarmRingingTryingStation =>
'Mencoba memutar stasiun Anda dengan kualitas tertinggi yang tersedia.';
@override
String get alarmScheduleDaily => 'Setiap pagi';
@override
String alarmScheduleOnce(Object date) {
return 'Sekali · $date';
}
@override
String alarmScheduleWeekdays(Object days) {
return 'Hari: $days';
}
@override
String get alarmRepeatSectionLabel => 'ULANGI';
@override
String get alarmVolumeLabel => 'Volume';
@override
String get androidReliabilityTitle => 'Tinjau keandalan Android';
@override
String get closeAction => 'Tutup';
@override
String get customOption => 'Kustom';
@override
String get endLabel => 'Selesai';
@override
String get equalizerDisable => 'Nonaktifkan equalizer';
@override
String get helpTitle => 'Bantuan dan tutorial';
@override
String get helpSubtitle => '9 layar · lihat lagi kapan saja';
@override
String get tutorialSkipAction => 'Lewati';
@override
String get tutorialNextAction => 'Berikutnya';
@override
String get tutorialPage1Headline => 'Simpan stasiun Anda dan kelompokkan';
@override
String get tutorialPage1Body =>
'Ketuk ikon hati untuk menyimpan stasiun. Di «Stasiun Anda» Anda bisa membuat grup seperti «Setiap pagi» atau «Mobil» dan mengurutkannya ulang dengan menyeret.';
@override
String get tutorialPage2Headline =>
'Satu equalizer umum, dan satu lagi per stasiun';
@override
String get tutorialPage2Body =>
'Di Pengaturan, Anda menentukan equalizer umum. Dan dari pemutaran stasiun tertentu, Anda bisa memberinya pengaturan sendiri, yang lebih diutamakan daripada pengaturan umum.';
@override
String get tutorialPage3Headline => 'Rekam apa yang sedang Anda dengarkan';
@override
String get tutorialPage3Body =>
'Dari baki alat pemutar, «Rekam» menyimpan stream asli. Temukan rekaman Anda di Pengaturan Rekaman.';
@override
String get tutorialPage4Headline =>
'Alarm yang menyesuaikan diri dengan Anda';
@override
String get tutorialPage4Body =>
'Bangun dengan stasiun favorit Anda, tunda 3, 5, atau 10 menit, dan tambahkan rentang liburan agar sebagian alarm melewati dirinya sendiri.';
@override
String get tutorialPage5Headline => 'Favorit Anda, juga di mobil';
@override
String get tutorialPage5Body =>
'Sambungkan ponsel Anda dengan Android Auto dan temukan Favorit, Semua stasiun, Stasiun Anda, dan Musik Lokal Anda, dengan tombol besar yang dirancang untuk berkendara.';
@override
String get tutorialPage6Headline => 'Tersambung ulang dengan sendirinya';
@override
String get tutorialPage6Body =>
'Jika sinyal terputus, PluriWave mencoba lagi secara otomatis dan tetap menampilkan favorit tersimpan Anda meski tanpa koneksi.';
@override
String get tutorialPage7Headline => 'Pilih berapa lama menunda';
@override
String get tutorialPage7Body =>
'Saat alarm berbunyi, tidak ada satu «tunda» saja: Anda memilih 3, 5, atau 10 menit sesuai yang Anda butuhkan saat itu.';
@override
String get tutorialPage8Headline => 'Tidak menemukannya? Tambahkan sendiri';
@override
String get tutorialPage8Body =>
'Di «Stasiun Anda» → Tambah stasiun khusus, tempel URL stream stasiun yang tidak ada di hasil pencarian. Stasiun ini disimpan di «Stasiun Anda», juga tersedia di mobil.';
@override
String get tutorialPage9Headline => 'Selesai, Anda sudah tahu yang penting';
@override
String get tutorialPage9BannerBody =>
'Untuk melihat tutorial ini lagi kapan saja: Pengaturan → Informasi → Bantuan dan tutorial.';
@override
String get indefiniteOption => 'Tidak terbatas';
@override
String get invalidNumber => 'Nomor tidak valid';
@override
String get nameLabel => 'Nama';
@override
String get notPlaying => 'Tidak memutar';
@override
String get oneTimeOption => 'Sekali';
@override
String get pausePlaybackTooltip => 'Jeda pemutaran';
@override
String get playerQualityChangeAction => 'Ubah';
@override
String get playerToolEqLabel => 'EQ sendiri';
@override
String qualityOriginal(Object quality) {
return 'Kualitas asli: $quality';
}
@override
String get qualityUnknown => 'Kualitas tidak dilaporkan';
@override
String get recordAction => 'Rekam';
@override
String get recordDurationTitle => 'Durasi rekaman';
@override
String get recordRadioSubtitle => 'Pilih berapa lama ingin merekam.';
@override
String get recordRadioTitle => 'Rekam radio';
@override
String get recordingActiveTitle => 'Merekam radio';
@override
String get recordingDirectTitle => 'Perekaman langsung';
@override
String get recordingsOpenFolderPlainError =>
'Tidak dapat membuka folder rekaman';
@override
String get recordingsOpenLatest => 'Buka rekaman terbaru';
@override
String get recordingsOpenLatestError => 'Tidak dapat membuka rekaman terbaru';
@override
String get startLabel => 'Mulai';
@override
String get startPlaybackTooltip => 'Mulai pemutaran';
@override
String get stopAction => 'Stop';
@override
String get stopPlaybackTooltip => 'Hentikan pemutaran';
@override
String get weekdayShortMonday => 'Sen';
@override
String get weekdayShortTuesday => 'Sel';
@override
String get weekdayShortWednesday => 'Rab';
@override
String get weekdayShortThursday => 'Kam';
@override
String get weekdayShortFriday => 'Jum';
@override
String get weekdayShortSaturday => 'Sab';
@override
String get weekdayShortSunday => 'Min';
@override
String stationCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count stasiun',
);
return '$_temp0';
}
@override
String get alarmIconLabel => 'Alarm musik';
@override
String get vacationIconLabel => 'Mode liburan';
@override
String get alarmAdvancedSectionTitle => 'Lanjutan';
@override
String get alarmInlineHourLabel => 'Jam';
@override
String get alarmInlineMinuteLabel => 'Menit';
@override
String get alarmVolumeRisingStatus => 'Menaikkan volume';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
@override
String get advancedEqSectionTitle => 'Opsi EQ Lanjutan';
@override
String get advancedEqEnableToggle => 'Aktifkan EQ per perangkat';
@override
String get advancedEqEnableToggleSubtitle =>
'Terapkan preset EQ yang berbeda secara otomatis saat keluaran audio Anda berubah.';
@override
String get advancedEqKnownDevicesTitle => 'Perangkat audio yang dikenal';
@override
String get advancedEqKnownDevicesEmpty =>
'Belum ada perangkat audio yang tercatat. Hubungkan perangkat untuk memulai.';
@override
String advancedEqDevicePresetLabel(Object presetName) {
return 'Preset: $presetName';
}
@override
String preNoticeCountdown(int minutes) {
return 'Mulai dalam $minutes menit';
}
@override
String snoozeCountdown(int minutes) {
return 'Berbunyi dalam $minutes mnt';
}
@override
String get snoozeAgainAction => 'Tunda lagi';
@override
String get alarmRingingNotificationTitle => 'Alarm PluriWave';
@override
String get alarmFireChannelName => 'Alarm berbunyi';
@override
String get alarmFireChannelDescription =>
'Suara dan layar mendesak saat alarm musik harus berbunyi';
@override
String get alarmPreNoticeChannelName => 'Pengingat alarm';
@override
String get alarmPreNoticeChannelDescription =>
'Notifikasi senyap sebelum alarm';
@override
String get openFolderChooserTitle => 'Buka folder';
@override
String get openRecordingChooserTitle => 'Buka rekaman';
@override
String get eqDeviceEditTitle => 'Edit perangkat';
@override
String get eqDeviceNameLabel => 'Nama perangkat';
@override
String get eqDeviceNameHint => 'Mis: Speaker ruang tamu';
@override
String get eqDeviceNameConfirm => 'Simpan';
@override
String get eqDeviceConnected => 'Terhubung';
@override
String get eqDeviceActiveOutput => 'Audio keluar melalui perangkat ini';
@override
String get eqDeviceRemove => 'Hapus perangkat';
@override
String eqDeviceRemoved(Object device) {
return '$device dihapus';
}
@override
String get localMusicSectionTitle => 'Musik lokal (Android Auto)';
@override
String get localMusicSectionDescription =>
'Pilih folder di perangkat ini untuk menjelajahi dan memutar file audio di dalamnya dari mobil.';
@override
String get localMusicFolderNotConfigured => 'Belum ada folder dipilih';
@override
String get localMusicFolderTitle => 'Folder musik lokal';
@override
String get localMusicChoosePath => 'Pilih folder';
@override
String get localMusicChangePath => 'Ubah folder';
@override
String get localMusicFolderUpdated => 'Folder musik lokal diperbarui';
@override
String localMusicFolderSaveError(Object error) {
return 'Tidak dapat menyimpan folder: $error';
}
@override
String get localMusicFolderGenericName => 'Folder terpilih';
@override
String get welcomeHeadline => 'Duniamu, secara langsung';
@override
String get welcomeBody =>
'53.412 stasiun dari 238 negara. Simpan favorit Anda, bawa ke mobil, dan bangun bersamanya.';
@override
String get welcomeBullet1Title => 'Equalizer per stasiun';
@override
String get welcomeBullet1Subtitle => 'Plus satu Preset per perangkat output';
@override
String get welcomeBullet2Title => 'Android Auto';
@override
String get welcomeBullet2Subtitle => 'Favorit dan musik lokal Anda di mobil';
@override
String get welcomeBullet3Title => 'Alarm musik';
@override
String get welcomeBullet3Subtitle =>
'Dengan kenaikan volume bertahap dan mode liburan';
@override
String get welcomeCtaLabel => 'Mulai mendengarkan';
@override
String get eqCustomActionEnableLabel => 'Aktifkan equalizer';
@override
String get eqCustomActionDisableLabel => 'Nonaktifkan equalizer';
@override
String eqCustomActionPresetLabel(String preset) {
return 'Prasetel: $preset';
}
@override
String get alarmCardVacationPausedBadge => 'Dijeda karena liburan';
@override
String get alarmCardSchedulingFailedMessage =>
'Alarm ini tidak dapat didaftarkan ke sistem, sehingga mungkin tidak berbunyi.';
@override
String get alarmCardPreNoticeFailedMessage =>
'Alarm ini sudah dijadwalkan, tetapi pengingat awalnya tidak dapat diatur.';
@override
String get alarmDiagnosticsExactAlarmsTitle => 'Penjadwalan alarm presisi';
@override
String get alarmDiagnosticsExactAlarmsHint =>
'Membuat alarm berbunyi tepat pada menit yang kamu atur, meski ponsel dalam mode tidur.';
@override
String get alarmDiagnosticsNotificationsTitle => 'Notifikasi';
@override
String get alarmDiagnosticsNotificationsHint =>
'Diperlukan untuk menampilkan alarm dan pemberitahuan dini.';
@override
String get alarmDiagnosticsFullScreenTitle => 'Tampilan alarm layar penuh';
@override
String get alarmDiagnosticsFullScreenHint =>
'Membuat layar alarm muncul otomatis, meski ponsel terkunci.';
@override
String get alarmDiagnosticsBatteryTitle => 'Optimisasi baterai';
@override
String get alarmDiagnosticsBatteryHint =>
'Mencegah sistem menutup PluriWave di latar belakang, sehingga alarm tetap bisa berbunyi.';
@override
String get alarmDiagnosticsNativeCountTitle =>
'Alarm yang terdaftar di Android';
@override
String alarmDiagnosticsNativeCountValue(int count) {
return 'Terdaftar saat ini: $count';
}
@override
String get alarmDiagnosticsNativeCountAttentionHint =>
'Kamu punya alarm yang aktif, tapi belum ada yang terdaftar di sistem. Buka lagi PluriWave, atau perbaiki dulu poin-poin di atas.';
@override
String get alarmDiagnosticsManufacturerLabel => 'Produsen';
@override
String get alarmDiagnosticsSdkLabel => 'Versi Android (SDK)';
@override
String get alarmDiagnosticsNeedsAttentionStatus => 'Perlu perhatian';
@override
String get alarmDiagnosticsAutostartTitle =>
'Satu langkah manual lagi di ponsel ini';
@override
String alarmDiagnosticsAutostartBody(String manufacturer) {
return 'Ponsel $manufacturer sering menutup aplikasi yang berjalan di latar belakang untuk menghemat baterai. Tidak ada pengaturan yang bisa diaktifkan PluriWave sendiri — kamu perlu mengaktifkan sendiri Autostart (kadang disebut \"Mulai otomatis\" atau \"Aktivitas latar belakang\") untuk PluriWave. Cari di Pengaturan, di bagian Aplikasi atau Baterai, atau di aplikasi Keamanan bawaan ponsel.';
}
@override
String get alarmDiagnosticsFixAction => 'Perbaiki';
@override
String get alarmDiagnosticsIntentUnavailable =>
'Tidak bisa membuka layar pengaturan itu di ponsel ini. Coba cari secara manual di Pengaturan.';
@override
String get alarmDiagnosticsUnavailableHint =>
'Kami belum bisa memeriksa pengaturan alarmmu.';
@override
String get autoEqDisableOption => 'Nonaktifkan';
@override
String get funcionPremium => 'Fitur Premium';
@override
String get limiteAlarmasAlcanzado =>
'Anda telah mencapai batas gratis 5 alarm.';
@override
String get desbloquearPremium => 'Buka Premium';
@override
String get restaurarCompras => 'Pulihkan pembelian';
}