Files
pluriwave/lib/l10n/gen/app_localizations_ar.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

1857 lines
52 KiB
Dart

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Arabic (`ar`).
class AppLocalizationsAr extends AppLocalizations {
AppLocalizationsAr([String locale = 'ar']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'استماع';
@override
String get navSearch => 'بحث';
@override
String get navFavorites => 'المفضلة';
@override
String get navAlarms => 'المنبهات';
@override
String get navSettings => 'الإعدادات';
@override
String get actionOk => 'حسنًا';
@override
String get sleepTimer => 'مؤقّت النوم';
@override
String get sleepTimerDescription =>
'إيقاف الراديو بسلاسة مع عدّ تنازلي دقيق.';
@override
String get cancelTimer => 'إلغاء المؤقّت';
@override
String get optionOther => 'أخرى';
@override
String get customDurationTitle => 'مدة مخصّصة';
@override
String get durationGreaterThanZero => 'اختر مدة أكبر من الصفر.';
@override
String get hoursLabel => 'ساعات';
@override
String get minutesLabel => 'دقائق';
@override
String get secondsLabel => 'ثوانٍ';
@override
String durationHoursMinutesSeconds(
Object hours,
Object minutes,
Object seconds,
) {
return '$hours س $minutes د $seconds ث';
}
@override
String durationMinutesSeconds(Object minutes, Object seconds) {
return '$minutes د $seconds ث';
}
@override
String durationMinutesOnly(Object minutes) {
return '$minutes د';
}
@override
String durationSecondsOnly(Object seconds) {
return '$seconds ث';
}
@override
String get saveQuickAccess => 'حفظ كاختصار سريع';
@override
String get startTimer => 'بدء المؤقّت';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'تم تخطي هذا التشغيل من $alarmName.';
}
@override
String get settingsTitle => 'الإعدادات';
@override
String get settingsSubtitle =>
'تحكم دقيق في الصوت والنسخ الاحتياطية والمحطات المخصصة.';
@override
String get settingsGroupAudioTitle => 'الصوت';
@override
String get settingsGroupStationsTitle => 'المحطات';
@override
String get settingsGroupRecordingsTitle => 'التسجيلات والموسيقى';
@override
String get settingsGroupApplicationTitle => 'التطبيق';
@override
String get infoSectionTitle => 'معلومات';
@override
String get languageSectionTitle => 'اللغة';
@override
String get languageSectionDescription => 'اختر كيفية عرض لغة التطبيق.';
@override
String get languageSystemDefault => 'النظام';
@override
String get languageSpanish => 'الإسبانية';
@override
String get languageEnglish => 'الإنجليزية';
@override
String languageUpdated(Object languageName) {
return 'تم تحديث اللغة: $languageName';
}
@override
String get languageUpdatedSystem => 'تم تحديث اللغة: النظام';
@override
String get timerSectionTitle => 'مؤقّت النوم';
@override
String get timerSectionAdd => 'إضافة';
@override
String get timerSectionDescription =>
'خصّص الاختصارات السريعة التي تظهر عند إيقاف الراديو تلقائيًا.';
@override
String get timerSectionRestoreRecommended => 'استعادة الأوقات الموصى بها';
@override
String get newQuickAccessTitle => 'اختصار سريع جديد';
@override
String get saveQuickAccessButton => 'حفظ الاختصار السريع';
@override
String get settingsSafeStatus => 'آمن';
@override
String get recordingsSectionTitle => 'التسجيلات';
@override
String get recordingsFolderDialogTitle => 'اختر مجلد التسجيلات';
@override
String get recordingsPathUpdated => 'تم تحديث مسار التسجيل';
@override
String recordingsPathSaveError(Object error) {
return 'تعذّر حفظ المسار: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'سيتم استخدام المجلد الداخلي الافتراضي';
@override
String get recordingsFolderTitle => 'مجلد التسجيل';
@override
String get recordingsPathCalculating => 'جارٍ حساب المسار...';
@override
String get recordingsChangePath => 'تغيير المسار';
@override
String get recordingsUseDefaultPath => 'استخدام المسار الافتراضي';
@override
String get recordingsOriginalStreamHint =>
'يتم حفظ الراديو من البث الأصلي، دون إعادة ضغط.';
@override
String get equalizerActive => 'نشط';
@override
String get equalizerDisabled => 'معطّل';
@override
String get equalizerEnable => 'تفعيل المعادل';
@override
String get equalizerRealtimeSubtitle =>
'تُطبّق التغييرات فورًا على المحطة الحالية.';
@override
String get equalizerPendingSubtitle =>
'تُحفظ التغييرات وستُطبّق عندما يفعّل Android التأثير.';
@override
String get equalizerPerStationTitle => 'استخدام معادل خاص لهذه المفضلة';
@override
String equalizerPerStationActive(Object stationName) {
return 'نشط لـ $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'استخدام المعادل الرئيسي لـ $stationName';
}
@override
String get equalizerBaseExplainer =>
'هذا هو المعادل الأساسي: يُطبَّق على كل محطة لا تملك إعدادًا خاصًا بها. يُحدَّد معادل محطة معينة من شاشة تشغيلها الخاصة، وله الأولوية على هذا المعادل.';
@override
String get equalizerActiveOutputLabel => 'المخرج النشط';
@override
String get equalizerActiveOutputDefault => 'مكبر صوت هذا الجهاز';
@override
String get equalizerStationsWithOwnEqTitle => 'محطات لديها معادل خاص';
@override
String get equalizerStationsWithOwnEqSubtitle => 'تتجاهل هذا المعادل الأساسي';
@override
String get equalizerStationsWithOwnEqEmpty =>
'لا توجد محطة لديها معادل خاص حتى الآن.';
@override
String get equalizerSaveAsPresetAction => 'حفظ كإعداد مسبق';
@override
String get equalizerResetToFlatAction => 'إعادة الضبط إلى مسطح';
@override
String get equalizerSavePresetDialogTitle => 'حفظ كإعداد مسبق';
@override
String get equalizerSavePresetNameLabel => 'اسم الإعداد المسبق';
@override
String get equalizerSavePresetEmptyNameError => 'أدخل اسمًا للإعداد المسبق.';
@override
String get equalizerSavePresetConfirm => 'حفظ';
@override
String get preferredStationTitle => 'المحطة المفضلة';
@override
String get preferredStationDescription =>
'يتم اختيارها مسبقًا عند إنشاء المنبهات ويمكن تشغيلها سريعًا.';
@override
String get preferredStationNoStationsTitle => 'لا توجد محطات متاحة بعد';
@override
String get preferredStationNoStationsSubtitle =>
'احفظ المفضلات أو حمّل محطات لاختيار محطة مفضلة.';
@override
String get preferredStationAutomaticFallback => 'بديل تلقائي';
@override
String get preferredStationDefaultFavorite => 'المفضلة الافتراضية';
@override
String preferredStationCurrent(Object stationName) {
return 'المفضلة الحالية: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'لا توجد مفضلات: يتم استخدام $stationName تلقائيًا';
}
@override
String get preferredStationPlay => 'تشغيل المفضلة';
@override
String get customStationsTitle => 'محطات مخصصة';
@override
String get customStationsAdd => 'إضافة';
@override
String get customStationsEmpty => 'لا توجد محطات مخصصة.';
@override
String get playAction => 'تشغيل';
@override
String get deleteAction => 'حذف';
@override
String get addStationTitle => 'إضافة محطة';
@override
String get stationNameLabel => 'الاسم *';
@override
String get unnamedStation => 'محطة بدون اسم';
@override
String get requiredField => 'حقل مطلوب';
@override
String get streamUrlLabel => 'رابط البث *';
@override
String get invalidUrl => 'رابط غير صالح';
@override
String get countryOptionalLabel => 'البلد (اختياري)';
@override
String get saveStation => 'حفظ المحطة';
@override
String get backupSectionTitle => 'النسخ الاحتياطي';
@override
String get backupExportTitle => 'تصدير الإعدادات';
@override
String get backupExportSubtitle =>
'المفضلات والمحطات المخصصة وإعدادات المعادل المسبقة';
@override
String get backupImportTitle => 'استيراد الإعدادات';
@override
String get backupImportSubtitle => 'استعادة من ملف نسخة احتياطية';
@override
String get backupShareSubject => 'PluriWave — نسخة احتياطية';
@override
String backupShareText(Object date) {
return 'إعدادات PluriWave المصدّرة في $date';
}
@override
String backupExportError(Object error) {
return 'خطأ أثناء التصدير: $error';
}
@override
String get backupImportConfirmMessage =>
'سيضيف هذا المفضلات والمحطات وإعدادات المعادل من الملف. هل تريد المتابعة؟';
@override
String get backupImportSuccess => 'تم استيراد الإعدادات بنجاح';
@override
String backupImportError(Object error) {
return 'خطأ أثناء الاستيراد: $error';
}
@override
String get appVersionLoading => 'جارٍ تحميل الإصدار...';
@override
String appVersionSubtitle(Object version) {
return '$version - راديو عالمي';
}
@override
String get savedFavoritesTitle => 'المفضلات المحفوظة';
@override
String get stationFilterTitle => 'فلتر المحطات';
@override
String get stationFilterSubtitle => 'المحطات المؤكدة كنشطة فقط';
@override
String get backgroundAudioTitle => 'الصوت في الخلفية';
@override
String get backgroundAudioSubtitle => 'يستمر عند إطفاء الشاشة';
@override
String get dash => '—';
@override
String get cancelAction => 'إلغاء';
@override
String get equalizerTitle => 'المعادل';
@override
String get recordingsOpenFolder => 'فتح المجلد';
@override
String recordingsOpenFolderError(Object error) {
return 'تعذّر فتح المجلد: $error';
}
@override
String get recordingsMaxSizeTitle => 'الحد الأقصى لحجم التسجيل';
@override
String recordingsMaxSizeSubtitle(int size) {
return 'الحد الحالي: $size ميغابايت';
}
@override
String get recordingsMaxSizeDialogTitle => 'الحد الأقصى للحجم لكل تسجيل';
@override
String get recordingsMaxSizeMbLabel => 'الحد الأقصى بالميغابايت';
@override
String recordingsMaxSizeSaved(int size) {
return 'تم تحديث حد التسجيل إلى $size ميغابايت';
}
@override
String get recordingsLibraryTitle => 'تسجيلاتي';
@override
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
return 'تم استخدام $usedMb ميغابايت من أصل $totalMb ميغابايت';
}
@override
String get recordingsLibraryStorageFolderCaption =>
'Music/PluriWave · يتم حذف الأقدم عند بلوغ الحد';
@override
String get recordingsLibraryEmptyTitle => 'لا توجد تسجيلات بعد';
@override
String get recordingsLibraryEmptySubtitle =>
'التسجيلات التي تحفظها ستظهر هنا.';
@override
String get recordingActionRename => 'إعادة تسمية';
@override
String get recordingActionShare => 'مشاركة';
@override
String get recordingActionDelete => 'حذف';
@override
String get recordingRenameDialogTitle => 'إعادة تسمية التسجيل';
@override
String get recordingRenameLabel => 'الاسم';
@override
String get recordingRenameEmptyError => 'أدخل اسمًا';
@override
String get recordingDeleteConfirmTitle => 'هل تريد حذف التسجيل؟';
@override
String get recordingDeleteConfirmMessage => 'لا يمكن التراجع عن هذا الإجراء.';
@override
String get recordingsLibrarySettingsTooltip => 'إعدادات التسجيل';
@override
String get stationOrderTitle => 'ترتيب المحطات';
@override
String get stationOrderByName => 'حسب الاسم';
@override
String get stationOrderByQuality => 'حسب الجودة';
@override
String get stationOrderByPopularity => 'حسب الشهرة';
@override
String get stationOrderScopeDescription =>
'ينطبق على المفضلات وعمليات البحث والمحطات القريبة والقوائم السريعة.';
@override
String get favoriteGroupsTitle => 'قوائم المفضلة';
@override
String get favoriteGroupsDescription =>
'أنشئ قوائم قصيرة لتنظيم محطاتك المحفوظة.';
@override
String get favoriteGroupsAdd => 'إضافة قائمة';
@override
String get favoriteGroupsEdit => 'تعديل القائمة';
@override
String get favoriteGroupsDelete => 'حذف القائمة';
@override
String get favoriteGroupsNameLabel => 'اسم القائمة';
@override
String get favoriteGroupsNameTooLong => 'الحد الأقصى 28 حرفًا.';
@override
String get favoriteGroupsUnassigned => 'غير معيّنة';
@override
String get favoriteGroupsProtectedHint =>
'القائمة الافتراضية: لا يمكن تعديلها أو حذفها.';
@override
String get favoriteGroupsCreated => 'تم إنشاء القائمة';
@override
String get favoriteGroupsUpdated => 'تم تحديث القائمة';
@override
String get favoriteGroupsDeleted =>
'تم حذف القائمة؛ عادت محطاتها إلى غير معيّنة.';
@override
String get favoriteGroupsAssign => 'نقل إلى قائمة';
@override
String favoriteGroupsAssignSubtitle(Object groupName) {
return 'القائمة الحالية: $groupName';
}
@override
String favoriteGroupsAssigned(Object stationName, Object groupName) {
return 'تم نقل $stationName إلى $groupName';
}
@override
String get favoritesTitle => 'المفضلة';
@override
String get favoritesEmptyTitle => 'لا توجد مفضلات بعد';
@override
String get favoritesEmptySubtitle =>
'اضغط على القلب في أي محطة لحفظها في مجموعتك.';
@override
String get favoritesHeaderSubtitle =>
'نظّم مجموعتك في قوائم وأبقِ المحطات المهمة قريبة.';
@override
String get favoritesCollection => 'المجموعة';
@override
String favoritesSavedCount(int count) {
return '$count محفوظة';
}
@override
String get favoritesRemoveTooltip => 'إزالة من المفضلة';
@override
String favoritesRemovedMessage(Object stationName) {
return 'تمت إزالة $stationName من المفضلة';
}
@override
String get favoritesFilterAllLabel => 'الكل';
@override
String favoriteGroupsChipLabel(Object groupName, int count) {
return '$groupName · $count';
}
@override
String get favoriteGroupsManage => 'إدارة القوائم';
@override
String get customStationsAddCta => 'إضافة محطة مخصصة';
@override
String get alarmPostponedCurrentExecution => 'تم تأجيل المنبه لهذا التشغيل.';
@override
String get searchScreenTitle => 'البحث عن إشارة';
@override
String get searchScreenSubtitle =>
'اعثر على إذاعات حسب الاسم أو البلد أو اللغة باستخدام فلاتر سريعة وتباين عالٍ.';
@override
String get searchFiltersLabel => 'الفلاتر';
@override
String get searchHint => 'راديو هورايزن، جاز، أخبار...';
@override
String get searchCountryFilterLabel => 'البلد';
@override
String get searchLanguageFilterLabel => 'اللغة';
@override
String get searchMinQualityFilterLabel => 'الحد الأدنى للجودة';
@override
String get searchLoadingStationsLabel => 'جارٍ البحث عن محطات…';
@override
String get searchEmptyTitle => 'ابحث عن محطة';
@override
String get searchNoResultsTitle => 'لا توجد نتائج';
@override
String searchNoResultsForQueryTitle(Object query) {
return 'لا توجد نتائج لـ «$query»';
}
@override
String get searchEmptySubtitle =>
'استخدم الشريط العلوي أو الشرائح لاكتشاف إشارات من كل العالم.';
@override
String get searchNoResultsSubtitle =>
'جرّب إزالة الفلاتر أو كتابة اسم آخر للعثور على إشارة نشطة.';
@override
String searchResultsCount(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count نتيجة',
few: '$count نتائج',
two: 'نتيجتان',
one: 'نتيجة واحدة',
);
return '$_temp0';
}
@override
String searchClearFiltersAction(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'إزالة $count فلتر',
few: 'إزالة $count فلاتر',
two: 'إزالة الفلترين',
one: 'إزالة الفلتر',
);
return '$_temp0';
}
@override
String get countriesScreenTitle => 'الدول';
@override
String get countriesSearchHint => 'الدولة أو الرمز...';
@override
String get countriesYourLanguagesTitle => 'لغاتك';
@override
String get countriesAllTitle => 'كل الدول';
@override
String get radioCountriesError => 'تعذّر تحميل الدول.';
@override
String get countrySpain => 'إسبانيا';
@override
String get countryUsa => 'الولايات المتحدة';
@override
String get countryMexico => 'المكسيك';
@override
String get countryArgentina => 'الأرجنتين';
@override
String get countryUk => 'المملكة المتحدة';
@override
String get countryFrance => 'فرنسا';
@override
String get countryGermany => 'ألمانيا';
@override
String get countryItaly => 'إيطاليا';
@override
String get countryBrazil => 'البرازيل';
@override
String get countryJapan => 'اليابان';
@override
String get languageNameSpanish => 'الإسبانية';
@override
String get languageNameEnglish => 'الإنجليزية';
@override
String get languageNameFrench => 'الفرنسية';
@override
String get languageNameGerman => 'الألمانية';
@override
String get languageNamePortuguese => 'البرتغالية';
@override
String get languageNameItalian => 'الإيطالية';
@override
String get languageNameJapanese => 'اليابانية';
@override
String get languageNameArabic => 'العربية';
@override
String get languageNameRussian => 'الروسية';
@override
String get homeScreenSubtitle =>
'راديو عالمي مباشر بإشارات نقية ومفضلات ذكية وتجربة بصرية بأسلوب المسابقات.';
@override
String get exploreStations => 'استكشاف المحطات';
@override
String stationsCount(int count) {
return '$count محطة راديو';
}
@override
String get qualityHd => 'جودة HD';
@override
String get yourStationsTitle => 'محطاتك';
@override
String get seeAllAction => 'عرض الكل';
@override
String get openFullPlayerTooltip => 'فتح المشغل الكامل';
@override
String get nowListeningLabel => 'الاستماع الآن';
@override
String get nothingPlayingTitle => 'لا تستمع إلى شيء بعد';
@override
String get nothingPlayingSubtitle =>
'اختر محطة من محطاتك أو ابحث عن واحدة للبدء.';
@override
String get nearYou => 'بالقرب منك';
@override
String nearYouInCountry(Object country) {
return 'بالقرب منك · $country';
}
@override
String get detectAction => 'اكتشاف';
@override
String get liveRadar => 'رادار مباشر';
@override
String get genresTitle => 'الأنواع';
@override
String get exploreByTitle => 'استكشاف حسب';
@override
String get exploreTrendingTitle => 'الرائجة';
@override
String get exploreTrendingSubtitle => 'اليوم';
@override
String get exploreNewTitle => 'جديد';
@override
String get exploreNewSubtitle => 'هذا الأسبوع';
@override
String get popularNowTitle => 'الأكثر شيوعًا الآن';
@override
String get offlineBannerTitle => 'لا يوجد اتصال';
@override
String get retryAction => 'إعادة المحاولة';
@override
String get noStationsAvailable => 'لا توجد محطات متاحة';
@override
String get noStationsAvailableSubtitle =>
'جرّب التحديث أو اختيار نوع آخر لالتقاط الإشارة من جديد.';
@override
String get genrePop => 'بوب';
@override
String get genreRock => 'روك';
@override
String get genreJazz => 'جاز';
@override
String get genreClassical => 'كلاسيكي';
@override
String get genreElectronic => 'إلكترونية';
@override
String get genreNews => 'أخبار';
@override
String get genreTalk => 'حوارات';
@override
String get genreHipHop => 'هيب هوب';
@override
String get genreCountry => 'كانتري';
@override
String get genreMetal => 'ميتال';
@override
String get genreReggae => 'ريغي';
@override
String get genreLatin => 'لاتينية';
@override
String get alarmScreenTitle => 'الاستيقاظ الموسيقي';
@override
String get alarmScreenSubtitle =>
'منبهات بالراديو وصوت آمن وإجازات ذكية والتنفيذ التالي ظاهر دائمًا.';
@override
String get createAlarmAction => 'إنشاء منبه';
@override
String alarmsCount(int count) {
return '$count منبهات';
}
@override
String get activeAlarmsWithoutNextTitle => 'منبهات نشطة بلا تشغيل قادم';
@override
String get noActiveAlarms => 'لا توجد منبهات نشطة';
@override
String get nextAlarmTitle => 'المنبه التالي';
@override
String activeAlarmsWithoutNextSubtitle(int count) {
return 'توجد $count منبهات نشطة، لكنها لا تملك حاليًا تاريخًا مستقبليًا صالحًا. راجع التاريخ والأيام والإجازات.';
}
@override
String get createAlarmHint =>
'أنشئ منبهًا وسيحسب PluriWave التشغيل التالي تلقائيًا.';
@override
String get alarmVacationPlay => 'يرن في الإجازات';
@override
String get alarmVacationPause => 'يتوقف في الإجازات';
@override
String alarmFadeInLabel(int seconds) {
return 'تدرّج الصوت $secondsث';
}
@override
String alarmNextExecution(Object date) {
return 'التشغيل التالي: $date';
}
@override
String get alarmNoNextExecution => 'لا يوجد تشغيل نشط قادم.';
@override
String alarmSkippedExecution(Object date) {
return 'تم تخطي تشغيل: $date.';
}
@override
String get editAction => 'تعديل';
@override
String get skipNextAction => 'تخطي التالي';
@override
String get deleteTooltip => 'حذف';
@override
String get alarmHeroSkipAction => 'تخطي';
@override
String get alarmDeleteConfirmTitle => 'هل تريد حذف المنبه؟';
@override
String get alarmDeleteConfirmMessage => 'لا يمكن التراجع عن هذا الإجراء.';
@override
String get alarmSkippedNoNextSnackbar =>
'تم تخطي المنبه. لا يوجد تشغيل قادم.';
@override
String alarmSkippedReturnsSnackbar(Object date) {
return 'تم تخطي المنبه. سيعود في $date.';
}
@override
String alarmVacationPausedNoNext(Object vacationName) {
return 'متوقف بسبب الإجازة ($vacationName) ولا يوجد تشغيل قادم.';
}
@override
String alarmVacationPausedReturns(Object vacationName, Object date) {
return 'متوقف بسبب الإجازة ($vacationName) وسيعود في $date.';
}
@override
String alarmVacationReturns(Object date) {
return 'مع تفعيل الإجازات، سيعود للرنين في $date.';
}
@override
String get defaultAlarmName => 'منبه موسيقي';
@override
String get newAlarmTitle => 'منبه جديد';
@override
String get editAlarmTitle => 'تعديل المنبه';
@override
String get nameField => 'الاسم';
@override
String get timeField => 'الوقت';
@override
String get dateField => 'التاريخ';
@override
String get onceOption => 'مرة واحدة';
@override
String get dailyOption => 'يومي';
@override
String get weekdaysOption => 'أيام';
@override
String get soundAndVolumeSection => 'الصوت ومستوى الصوت';
@override
String get alarmFadeInTitle => 'تدرّج صوت المنبه';
@override
String get alarmFadeInOff => '0 ث (بدون انتقال)';
@override
String alarmFadeInSummary(int seconds) {
return '$seconds ث (من 5% إلى مستوى الصوت المختار)';
}
@override
String get internalSafeSoundLabel => 'صوت داخلي آمن';
@override
String get soundWarmSunrise => 'شروق دافئ';
@override
String get soundSoftBell => 'جرس ناعم';
@override
String get soundDigitalPulse => 'نبضة رقمية';
@override
String get favoriteStationLabel => 'المحطة المفضلة';
@override
String get noStationUseInternalSound => 'بدون محطة: استخدام الصوت الداخلي';
@override
String get alarmFallbackStationLabel => 'محطة احتياطية';
@override
String get alarmStationPickerSearchHint => 'ابحث عن محطة بالاسم';
@override
String get alarmSnoozeDurationTitle => 'مدة الغفوة';
@override
String get snoozeAction => 'غفوة';
@override
String alarmSnoozeOptionLabel(int minutes) {
return '$minutes د';
}
@override
String get alarmSnoozeUsualLabel => 'المعتاد';
@override
String get saveFavoritesAlarmHint =>
'احفظ محطات في المفضلة لاستخدامها كمنبه موسيقي.';
@override
String get useCurrentStationAction => 'استخدام المحطة الحالية';
@override
String get playDuringVacations => 'الرنين أثناء الإجازات';
@override
String get playDuringVacationsHint =>
'إذا أوقفت ذلك، سيتخطى التشغيل التالي إلى أول يوم صالح.';
@override
String get saveAlarmAction => 'حفظ المنبه';
@override
String get chooseOneWeekdayError => 'اختر يومًا واحدًا على الأقل من الأسبوع.';
@override
String get androidReliabilityReview => 'مراجعة موثوقية Android';
@override
String get statusOk => 'حسنًا';
@override
String get statusPending => 'معلّق';
@override
String androidReliabilityStatus(
Object exact,
Object notifications,
Object screen,
) {
return 'الموثوقية: الدقيقة $exact · الإشعارات $notifications · الشاشة $screen';
}
@override
String get vacationRangesTitle => 'نطاقات الإجازات';
@override
String get addAction => 'إضافة';
@override
String get vacationRangesHint =>
'إذا كان المنبه لديه \"توقف في الإجازات\"، فسيتم تخطي هذه النطاقات تلقائيًا.';
@override
String get noVacationRangesLoaded => 'لا توجد نطاقات محمّلة.';
@override
String get deleteRangeTooltip => 'حذف النطاق';
@override
String vacationRangesCount(int count) {
return '$count فترة';
}
@override
String vacationSummaryActiveCountdown(int days) {
return 'جارٍ الآن · تبقّى $days يوم';
}
@override
String vacationSummaryUpcomingCountdown(int days) {
return 'الفترة التالية خلال $days يوم';
}
@override
String vacationImpactPausedLabel(Object times) {
return 'إيقاف مؤقت: $times';
}
@override
String vacationImpactContinuesLabel(Object times) {
return 'يستمر الرنين: $times';
}
@override
String get vacationUpcomingSectionTitle => 'المجدولة';
@override
String get vacationPastSectionTitle => 'الفترات السابقة';
@override
String get addVacationRangeCta => 'إضافة فترة';
@override
String get vacationExplainerBanner =>
'خلال هذه الفترات، لن تُصدر المنبهات المُعلَّمة بـ «إيقاف أثناء الإجازة» صوتًا. أما المُعلَّمة بـ «تشغيل دائمًا» فلن تتأثر.';
@override
String get vacationNoActiveRangeHint => 'لا توجد فترة إجازة نشطة الآن.';
@override
String get vacationsDefaultName => 'إجازات';
@override
String get newVacationRangeTitle => 'نطاق إجازة جديد';
@override
String get editVacationRangeTitle => 'تعديل نطاق الإجازة';
@override
String get vacationDeleteConfirmTitle => 'هل تريد حذف نطاق الإجازة؟';
@override
String get vacationDeleteConfirmMessage => 'لا يمكن التراجع عن هذا الإجراء.';
@override
String get startField => 'البداية';
@override
String get endField => 'النهاية';
@override
String get saveRangeAction => 'حفظ النطاق';
@override
String get noAlarmsYetTitle => 'لا توجد منبهات بعد.';
@override
String get noAlarmsYetSubtitle => 'أنشئ واحدًا لتصميم استيقاظك الموسيقي.';
@override
String get ringingInternalAudioActive => 'يرن باستخدام الصوت الداخلي الآمن.';
@override
String get ringingPreparingInternalAudio => 'جارٍ تجهيز الصوت الداخلي الآمن.';
@override
String get stopAlarmAction => 'إيقاف المنبه';
@override
String get alarmStopFailedMessage =>
'تعذّر التأكد من إيقاف المنبه. حاول مرة أخرى.';
@override
String get alarmForceStopAction => 'إيقاف قسري';
@override
String get alarmMissedNotificationTitle => 'منبه فائت';
@override
String alarmMissedNotificationText(Object name) {
return 'تم كتم $name تلقائيًا بعد 10 دقائق.';
}
@override
String get pauseAction => 'إيقاف مؤقت';
@override
String miniPlayerOpenLabel(Object stationName) {
return 'فتح المشغل لـ $stationName';
}
@override
String get playerIconLabel => 'المشغل';
@override
String get playbackStatusConnecting => 'جارٍ الاتصال...';
@override
String get playbackStatusLive => 'مباشر';
@override
String get playbackStatusPaused => 'متوقف مؤقتًا';
@override
String get playbackStatusReconnecting => 'جارٍ إعادة الاتصال...';
@override
String get playbackStatusConnectionError => 'خطأ في الاتصال';
@override
String get playbackStatusStopped => 'متوقف';
@override
String stationSemanticLabel(Object stationName) {
return 'محطة $stationName';
}
@override
String get favoritesAddTooltip => 'إضافة إلى المفضلة';
@override
String favoritesAddedMessage(Object stationName) {
return 'تمت إضافة $stationName إلى المفضلة';
}
@override
String get stationIconLabel => 'أيقونة المحطة';
@override
String get liveNow => 'مباشر الآن';
@override
String equalizerBandLabel(Object band) {
return 'النطاق $band';
}
@override
String equalizerBandValue(Object value) {
return '$value ديسيبل';
}
@override
String get equalizerPresetFlat => 'مسطح';
@override
String get equalizerPresetRock => 'روك';
@override
String get equalizerPresetPop => 'بوب';
@override
String get equalizerPresetBassBoost => 'تعزيز الجهير';
@override
String get equalizerPresetJazz => 'جاز';
@override
String get equalizerPresetVoice => 'صوت';
@override
String get equalizerPresetCustom => 'مخصص';
@override
String get onboardingTitle => 'مرحبًا بك في PluriWave';
@override
String get onboardingNewsTitle => 'المستجدات';
@override
String get onboardingStartAction => 'ابدأ';
@override
String get onboardingCloseTooltip => 'إغلاق';
@override
String radioRecordingError(Object error) {
return 'خطأ أثناء تسجيل الراديو: $error';
}
@override
String get radioApiConnectionError =>
'لا يوجد اتصال بواجهة برمجة تطبيقات الراديو';
@override
String get radioSearchError => 'خطأ في البحث. تحقق من اتصالك.';
@override
String get radioLoadMoreStationsError => 'تعذر تحميل المزيد من المحطات.';
@override
String get radioNearbyStationsError =>
'تعذر علينا اكتشاف محطات قريبة. استخدم عوامل التصفية حسب البلد.';
@override
String radioCannotPlayStation(Object stationName) {
return 'لا يمكن تشغيل \"$stationName\"';
}
@override
String get recordingSelectStationFirst => 'اختر محطة أولًا للتسجيل.';
@override
String recordingStartError(Object error) {
return 'تعذر بدء التسجيل: $error';
}
@override
String get unsupportedConfigVersion => 'إصدار الإعدادات غير مدعوم';
@override
String get audioErrorGeneric => 'خطأ في التشغيل';
@override
String get audioErrorNoInternet => 'لا يوجد اتصال بالإنترنت';
@override
String get audioErrorInvalidUrl => 'عنوان الراديو غير صالح';
@override
String get audioErrorNotFound => 'الراديو غير متاح (خطأ 404)';
@override
String get audioErrorTimeout => 'انتهت مهلة الاتصال';
@override
String get audioErrorCannotConnect => 'لا يمكن الاتصال بالراديو';
@override
String get audioErrorUnsupportedFormat => 'تنسيق البث غير مدعوم';
@override
String get audioErrorDecode => 'خطأ أثناء فك ترميز بث الصوت';
@override
String get audioErrorCleartext =>
'تستخدم هذه المحطة HTTP غير مشفّر، وهذا غير مسموح';
@override
String get audioErrorSsl => 'شهادة SSL غير صالحة في الراديو';
@override
String get audioErrorCannotPlay => 'لا يمكن تشغيل هذه المحطة';
@override
String get audioErrorUnexpectedPlayback => 'خطأ غير متوقع أثناء التشغيل';
@override
String get androidExactAlarmScheduleError =>
'تعذر على Android جدولة منبه دقيق. تحقق من إذن المنبهات الدقيقة.';
@override
String get recordingPathEmptyError => 'لا يمكن أن يكون مسار التسجيل فارغًا';
@override
String get recordingMaxSizeInvalidError =>
'يجب أن يكون الحجم الأقصى أكبر من الصفر';
@override
String get recordingAlreadyActiveError => 'يوجد تسجيل قيد التنفيذ بالفعل';
@override
String get alarmRingingFallbackActive =>
'يعمل الآن باستخدام الصوت الداخلي الآمن.';
@override
String get alarmRingingPreparingFallback => 'جارٍ تجهيز الصوت الداخلي الآمن.';
@override
String get alarmRingingTryingStation =>
'جارٍ محاولة تشغيل محطتك بأعلى جودة متاحة.';
@override
String get alarmScheduleDaily => 'كل صباح';
@override
String alarmScheduleOnce(Object date) {
return 'مرة واحدة · $date';
}
@override
String alarmScheduleWeekdays(Object days) {
return 'الأيام: $days';
}
@override
String get alarmRepeatSectionLabel => 'تكرار';
@override
String get alarmVolumeLabel => 'مستوى الصوت';
@override
String get androidReliabilityTitle => 'مراجعة موثوقية Android';
@override
String get closeAction => 'إغلاق';
@override
String get customOption => 'مخصص';
@override
String get endLabel => 'النهاية';
@override
String get equalizerDisable => 'تعطيل المعادل';
@override
String get helpTitle => 'المساعدة والشرح';
@override
String get helpSubtitle => '9 شاشات · شاهده مجددًا متى شئت';
@override
String get tutorialSkipAction => 'تخطي';
@override
String get tutorialNextAction => 'التالي';
@override
String get tutorialPage1Headline => 'احفظ محطاتك ونظّمها في مجموعات';
@override
String get tutorialPage1Body =>
'اضغط على أيقونة القلب لحفظ محطة. في «محطاتك» يمكنك إنشاء مجموعات مثل «كل صباح» أو «السيارة» وإعادة ترتيبها بالسحب.';
@override
String get tutorialPage2Headline => 'معادل صوت عام وآخر لكل محطة';
@override
String get tutorialPage2Body =>
'من الإعدادات تحدد المعادل الصوتي العام. ومن تشغيل محطة معينة يمكنك ضبط إعداد خاص بها، له الأولوية على الإعداد العام.';
@override
String get tutorialPage3Headline => 'سجّل ما تستمع إليه';
@override
String get tutorialPage3Body =>
'من شريط أدوات المشغل، يحفظ زر «تسجيل» البث الأصلي. ستجد تسجيلاتك في الإعدادات › التسجيلات.';
@override
String get tutorialPage4Headline => 'منبهات تتكيّف معك';
@override
String get tutorialPage4Body =>
'استيقظ على محطتك المفضلة، وأجّل المنبه 3 أو 5 أو 10 دقائق، وأضف فترات إجازة ليتخطى بعض المنبهات نفسه تلقائيًا.';
@override
String get tutorialPage5Headline => 'محطاتك المفضلة، في السيارة أيضًا';
@override
String get tutorialPage5Body =>
'اربط هاتفك بـ Android Auto لتجد المفضلة وجميع المحطات ومحطاتك والموسيقى المحلية، بأزرار كبيرة مصممة للقيادة.';
@override
String get tutorialPage6Headline => 'يعيد الاتصال تلقائيًا';
@override
String get tutorialPage6Body =>
'إذا انقطعت الإشارة، تعيد PluriWave المحاولة تلقائيًا وتستمر في عرض محطاتك المفضلة المحفوظة حتى بدون اتصال.';
@override
String get tutorialPage7Headline => 'اختر مدة التأجيل';
@override
String get tutorialPage7Body =>
'عند رنين المنبه، لا يوجد خيار تأجيل واحد فقط: تختار 3 أو 5 أو 10 دقائق حسب ما تحتاجه في تلك اللحظة.';
@override
String get tutorialPage8Headline => 'لم تجدها؟ أضفها بنفسك';
@override
String get tutorialPage8Body =>
'من «محطاتك» ← إضافة محطة مخصصة، الصق رابط بث محطة غير موجودة في نتائج البحث. تُحفظ في «محطاتك»، وتكون متاحة في السيارة أيضًا.';
@override
String get tutorialPage9Headline => 'تمّ، أصبحت تعرف الأساسيات';
@override
String get tutorialPage9BannerBody =>
'لمشاهدة هذا الشرح مرة أخرى في أي وقت: الإعدادات ← المعلومات ← المساعدة والشرح.';
@override
String get indefiniteOption => 'غير محدد';
@override
String get invalidNumber => 'رقم غير صالح';
@override
String get nameLabel => 'الاسم';
@override
String get notPlaying => 'لا يتم التشغيل';
@override
String get oneTimeOption => 'مرة واحدة';
@override
String get pausePlaybackTooltip => 'إيقاف مؤقت';
@override
String get playerQualityChangeAction => 'تغيير';
@override
String get playerToolEqLabel => 'معادل خاص';
@override
String qualityOriginal(Object quality) {
return 'الجودة الأصلية: $quality';
}
@override
String get qualityUnknown => 'الجودة غير مذكورة';
@override
String get recordAction => 'تسجيل';
@override
String get recordDurationTitle => 'مدة التسجيل';
@override
String get recordRadioSubtitle => 'اختر مدة التسجيل.';
@override
String get recordRadioTitle => 'تسجيل الراديو';
@override
String get recordingActiveTitle => 'جارٍ تسجيل الراديو';
@override
String get recordingDirectTitle => 'تسجيل مباشر';
@override
String get recordingsOpenFolderPlainError => 'تعذر فتح مجلد التسجيلات';
@override
String get recordingsOpenLatest => 'فتح آخر تسجيل';
@override
String get recordingsOpenLatestError => 'تعذر فتح آخر تسجيل';
@override
String get startLabel => 'البداية';
@override
String get startPlaybackTooltip => 'بدء التشغيل';
@override
String get stopAction => 'إيقاف';
@override
String get stopPlaybackTooltip => 'إيقاف التشغيل';
@override
String get weekdayShortMonday => 'الإثنين';
@override
String get weekdayShortTuesday => 'الثلاثاء';
@override
String get weekdayShortWednesday => 'الأربعاء';
@override
String get weekdayShortThursday => 'الخميس';
@override
String get weekdayShortFriday => 'الجمعة';
@override
String get weekdayShortSaturday => 'السبت';
@override
String get weekdayShortSunday => 'الأحد';
@override
String stationCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count محطة',
few: '$count محطات',
two: 'محطتان',
one: 'محطة واحدة',
);
return '$_temp0';
}
@override
String get alarmIconLabel => 'منبه موسيقي';
@override
String get vacationIconLabel => 'وضع الإجازة';
@override
String get alarmAdvancedSectionTitle => 'متقدم';
@override
String get alarmInlineHourLabel => 'الساعة';
@override
String get alarmInlineMinuteLabel => 'الدقيقة';
@override
String get alarmVolumeRisingStatus => 'رفع مستوى الصوت تدريجيًا';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
@override
String get advancedEqSectionTitle => 'خيارات المعادلة الصوتية المتقدمة';
@override
String get advancedEqEnableToggle => 'تفعيل EQ لكل جهاز';
@override
String get advancedEqEnableToggleSubtitle =>
'تطبيق إعداد EQ مختلف تلقائيًا عند تغيير مخرج الصوت.';
@override
String get advancedEqKnownDevicesTitle => 'أجهزة الصوت المعروفة';
@override
String get advancedEqKnownDevicesEmpty =>
'لم يتم تسجيل أي جهاز صوتي بعد. قم بتوصيل جهاز للبدء.';
@override
String advancedEqDevicePresetLabel(Object presetName) {
return 'الإعداد المسبق: $presetName';
}
@override
String preNoticeCountdown(int minutes) {
return 'يبدأ خلال $minutes دقيقة';
}
@override
String snoozeCountdown(int minutes) {
return 'يرنّ خلال $minutes دقيقة';
}
@override
String get snoozeAgainAction => 'غفوة مرة أخرى';
@override
String get alarmRingingNotificationTitle => 'منبّه PluriWave';
@override
String get alarmFireChannelName => 'المنبّهات الرنّانة';
@override
String get alarmFireChannelDescription =>
'صوت وشاشة عاجلة عندما يجب أن يرنّ منبّه موسيقي';
@override
String get alarmPreNoticeChannelName => 'تنبيهات المنبّهات';
@override
String get alarmPreNoticeChannelDescription => 'إشعارات صامتة قبل المنبّه';
@override
String get openFolderChooserTitle => 'فتح المجلد';
@override
String get openRecordingChooserTitle => 'فتح التسجيل';
@override
String get eqDeviceEditTitle => 'تعديل الجهاز';
@override
String get eqDeviceNameLabel => 'اسم الجهاز';
@override
String get eqDeviceNameHint => 'مثال: مكبر صوت غرفة المعيشة';
@override
String get eqDeviceNameConfirm => 'حفظ';
@override
String get eqDeviceConnected => 'متصل';
@override
String get eqDeviceActiveOutput => 'يتم إخراج الصوت من هذا الجهاز';
@override
String get eqDeviceRemove => 'إزالة الجهاز';
@override
String eqDeviceRemoved(Object device) {
return 'تمت إزالة $device';
}
@override
String get localMusicSectionTitle => 'الموسيقى المحلية (Android Auto)';
@override
String get localMusicSectionDescription =>
'اختر مجلدًا على هذا الجهاز لتصفح ملفاته الصوتية وتشغيلها من السيارة.';
@override
String get localMusicFolderNotConfigured => 'لم يتم تحديد مجلد';
@override
String get localMusicFolderTitle => 'مجلد الموسيقى المحلية';
@override
String get localMusicChoosePath => 'اختيار مجلد';
@override
String get localMusicChangePath => 'تغيير المجلد';
@override
String get localMusicFolderUpdated => 'تم تحديث مجلد الموسيقى المحلية';
@override
String localMusicFolderSaveError(Object error) {
return 'تعذّر حفظ المجلد: $error';
}
@override
String get localMusicFolderGenericName => 'مجلد محدد';
@override
String get welcomeHeadline => 'عالمك، على الهواء مباشرة';
@override
String get welcomeBody =>
'53,412 محطة من 238 دولة. احفظ محطاتك المفضلة، خذها معك في السيارة، واستيقظ عليها.';
@override
String get welcomeBullet1Title => 'معادل لكل محطة';
@override
String get welcomeBullet1Subtitle => 'بالإضافة إلى إعداد مسبق لكل جهاز خرج';
@override
String get welcomeBullet2Title => 'Android Auto';
@override
String get welcomeBullet2Subtitle =>
'محطاتك المفضلة وموسيقاك المحلية في السيارة';
@override
String get welcomeBullet3Title => 'منبهات موسيقية';
@override
String get welcomeBullet3Subtitle => 'مع رفع تدريجي للصوت ووضع الإجازة';
@override
String get welcomeCtaLabel => 'ابدأ الاستماع';
@override
String get eqCustomActionEnableLabel => 'تفعيل الموازن';
@override
String get eqCustomActionDisableLabel => 'إيقاف الموازن';
@override
String eqCustomActionPresetLabel(String preset) {
return 'الإعداد المسبق: $preset';
}
@override
String get alarmCardVacationPausedBadge => 'متوقفة مؤقتًا بسبب الإجازة';
@override
String get alarmCardSchedulingFailedMessage =>
'لم يتم تسجيل هذا المنبه في النظام، لذا قد لا يرن.';
@override
String get alarmCardPreNoticeFailedMessage =>
'تمت جدولة هذا المنبه، لكن تعذّر ضبط تذكيره المسبق.';
@override
String get alarmDiagnosticsExactAlarmsTitle => 'جدولة المنبه بدقة';
@override
String get alarmDiagnosticsExactAlarmsHint =>
'يتيح رنين المنبه في الدقيقة المحددة تمامًا، حتى عندما يكون الهاتف في وضع السكون.';
@override
String get alarmDiagnosticsNotificationsTitle => 'الإشعارات';
@override
String get alarmDiagnosticsNotificationsHint =>
'ضرورية لعرض المنبه والتنبيه المسبق.';
@override
String get alarmDiagnosticsFullScreenTitle => 'عرض المنبه بملء الشاشة';
@override
String get alarmDiagnosticsFullScreenHint =>
'يتيح ظهور شاشة الرنين تلقائيًا، حتى عندما يكون الهاتف مقفلاً.';
@override
String get alarmDiagnosticsBatteryTitle => 'تحسين استهلاك البطارية';
@override
String get alarmDiagnosticsBatteryHint =>
'يمنع النظام من إغلاق PluriWave في الخلفية حتى يتمكن المنبه من الرنين.';
@override
String get alarmDiagnosticsNativeCountTitle =>
'المنبهات المسجَّلة لدى Android';
@override
String alarmDiagnosticsNativeCountValue(int count) {
return 'المسجَّل حاليًا: $count';
}
@override
String get alarmDiagnosticsNativeCountAttentionHint =>
'لديك منبه مفعَّل، لكن لا يوجد أي منبه مسجَّل في النظام بعد. أعد فتح PluriWave، أو عالج النقاط أعلاه أولاً.';
@override
String get alarmDiagnosticsManufacturerLabel => 'الشركة المصنِّعة';
@override
String get alarmDiagnosticsSdkLabel => 'إصدار Android (SDK)';
@override
String get alarmDiagnosticsNeedsAttentionStatus => 'يحتاج إلى انتباه';
@override
String get alarmDiagnosticsAutostartTitle =>
'خطوة يدوية إضافية على هذا الهاتف';
@override
String alarmDiagnosticsAutostartBody(String manufacturer) {
return 'غالبًا ما تُغلق هواتف $manufacturer التطبيقات العاملة في الخلفية لتوفير البطارية. لا يوجد إعداد يمكن لـ PluriWave تفعيله بنفسه — عليك أن تُفعِّل بنفسك خاصية التشغيل التلقائي (تُعرف أحيانًا باسم \"Autostart\" أو \"النشاط في الخلفية\") لتطبيق PluriWave. ابحث عنها في الإعدادات، ضمن التطبيقات أو البطارية، أو في تطبيق الأمان الخاص بالهاتف.';
}
@override
String get alarmDiagnosticsFixAction => 'إصلاح';
@override
String get alarmDiagnosticsIntentUnavailable =>
'تعذّر فتح شاشة الإعدادات هذه على هذا الهاتف. حاول البحث عنها يدويًا في الإعدادات.';
@override
String get alarmDiagnosticsUnavailableHint =>
'لم نتمكّن بعد من التحقق من إعدادات المنبه الخاصة بك.';
@override
String get autoEqDisableOption => 'تعطيل';
@override
String get funcionPremium => 'ميزة مميزة';
@override
String get limiteAlarmasAlcanzado =>
'لقد وصلت إلى الحد المجاني وهو 5 منبهات.';
@override
String get desbloquearPremium => 'فتح النسخة المميزة';
@override
String get restaurarCompras => 'استعادة المشتريات';
}