Fix multi-device EQ auto-switching by calling obtenerDispositivoActual() during cargarPersistido() to seed the initial device ID. Add device management modal with rename support, EQ preset editing, and connection status indicator. Translate device UI keys to all 13 locales.
1271 lines
33 KiB
Dart
1271 lines
33 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 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 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 stationOrderTitle => 'ترتيب المحطات';
|
|
|
|
@override
|
|
String get stationOrderByName => 'حسب الاسم';
|
|
|
|
@override
|
|
String get stationOrderByQuality => 'حسب الجودة';
|
|
|
|
@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 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 searchEmptyTitle => 'ابحث عن محطة';
|
|
|
|
@override
|
|
String get searchNoResultsTitle => 'لا توجد نتائج';
|
|
|
|
@override
|
|
String get searchEmptySubtitle =>
|
|
'استخدم الشريط العلوي أو الشرائح لاكتشاف إشارات من كل العالم.';
|
|
|
|
@override
|
|
String get searchNoResultsSubtitle =>
|
|
'جرّب إزالة الفلاتر أو كتابة اسم آخر للعثور على إشارة نشطة.';
|
|
|
|
@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 nearYou => 'بالقرب منك';
|
|
|
|
@override
|
|
String nearYouInCountry(Object country) {
|
|
return 'بالقرب منك · $country';
|
|
}
|
|
|
|
@override
|
|
String get detectAction => 'اكتشاف';
|
|
|
|
@override
|
|
String get liveRadar => 'رادار مباشر';
|
|
|
|
@override
|
|
String get genresTitle => 'الأنواع';
|
|
|
|
@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 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 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 get vacationsDefaultName => 'إجازات';
|
|
|
|
@override
|
|
String get newVacationRangeTitle => 'نطاق إجازة جديد';
|
|
|
|
@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 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 alarmScheduleOnce(Object date) {
|
|
return 'مرة واحدة · $date';
|
|
}
|
|
|
|
@override
|
|
String alarmScheduleWeekdays(Object days) {
|
|
return 'الأيام: $days';
|
|
}
|
|
|
|
@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 => 'راجع ميزات PluriWave والنصائح والمستجدات.';
|
|
|
|
@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 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 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 get eqDeviceEditTitle => 'تعديل الجهاز';
|
|
|
|
@override
|
|
String get eqDeviceNameLabel => 'اسم الجهاز';
|
|
|
|
@override
|
|
String get eqDeviceNameHint => 'مثال: مكبر صوت غرفة المعيشة';
|
|
|
|
@override
|
|
String get eqDeviceNameConfirm => 'حفظ';
|
|
|
|
@override
|
|
String get eqDeviceConnected => 'متصل';
|
|
}
|