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.
1871 lines
45 KiB
Dart
1871 lines
45 KiB
Dart
// 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';
|
||
}
|