PSDK-1058 - add localization for log
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
Localizable.strings (EN)
|
||||
NutPlayer
|
||||
|
||||
Created by NUT.Tech on 24.05.2022.
|
||||
Copyright © 2022 NUT.Tech. All rights reserved.
|
||||
*/
|
||||
|
||||
// MARK: - Debug
|
||||
|
||||
"NutTech.hls.masterplaylist.load.start" = "Start downloading masterplaylist %@";
|
||||
"NutTech.hls.masterplaylist.load.end" = "Masterplaylist successfully loaded";
|
||||
|
||||
"NutTech.download.start" = "Start downloading video %@";
|
||||
"NutTech.download.end" = "Video uploaded";
|
||||
"NutTech.download.cancel" = "Video download cancelled";
|
||||
"NutTech.download.error" = "Error loading video: %@";
|
||||
"NutTech.download.tracks" = "Tracks were uploaded: %@";
|
||||
|
||||
"NutTech.player.end" = "End of playback";
|
||||
"NutTech.player.loop.error" = "Video cannot be played in loop mode";
|
||||
|
||||
"NutTech.quality.changed.debug" = "Quality was changed from %@ to %@";
|
||||
"NutTech.quality.changed.info" = "Quality was changed from 🎞️(resolution: %@, bandwidth: %@) to 🎞️(resolution: %@, bandwidth: %@)";
|
||||
"NutTech.quality.changed.info.fromAuto" = "Quality was changed from 🎞️Auto to 🎞️(resolution: %@, bandwidth: %@)";
|
||||
"NutTech.quality.changed.info.toAuto" = "Quality was changed from 🎞️(resolution: %@, bandwidth: %@) to 🎞️Auto";
|
||||
"NutTech.qualities.error" = "All qualities ended up with an error on loading";
|
||||
|
||||
"AssetLoader.error.common" = "Error, component: %@, url: %@, type: %@";
|
||||
"AssetLoader.error.parsing" = "Error parsing playlist, component: %@, url: %@, type: %@, description: %@";
|
||||
"AssetLoader.error.http" = "Error, component: %@, url: %@, type: HTTP, error code: %@, description: %@";
|
||||
|
||||
"AVPlayer.error.common" = "Error, component: %@, type: %@, description: %@";
|
||||
|
||||
"NutPlayerDemo.url.create.failed" = "Can't create url from %@";
|
||||
"NutPlayerDemo.tableview.provider.select" = "Passed empty value";
|
||||
|
||||
"NutPlayer.plugin.attach.player.empty" = "Player not exists";
|
||||
"NutPlayer.content.provider.own" = "Loading content from provider %@ to unloaded player.";
|
||||
"NutPlayer.content.provider.load.error" = "While loading content metainfo receive error %@";
|
||||
|
||||
"NutProvider.loading.failed" = "Error response %@";
|
||||
"NutProvider.loading.data.empty" = "Can't interpretate data";
|
||||
"NutProvider.parse.failed" = "Can't decode data to type %@ with error: %@";
|
||||
"NutProvider.parse.playable.failed" = "Can't find playable content";
|
||||
"NutProvider.parse.subtitleType.failed" = "Subtitle format %@ is not a delight";
|
||||
|
||||
"FirebaseProvider.loading.failed" = "While loading file %@ receive error: %@";
|
||||
"FirebaseProvider.parse.failed" = "Can't decode data to type %@ with error: %@";
|
||||
"FirebaseProvider.parse.playable.failed" = "Can't find playable content";
|
||||
"FirebaseProvider.parse.subtitleType.failed" = "Subtitle format %@ is not a delight";
|
||||
"FirebaseProvider.filenamesRetrieving.failed" = "Can't retrieve names of media files from Firebase";
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
Localizable.strings (RU)
|
||||
NutPlayer
|
||||
|
||||
Created by NUT.Tech on 24.05.2022.
|
||||
Copyright © 2022 NUT.Tech. All rights reserved.
|
||||
*/
|
||||
|
||||
// MARK: - Debug
|
||||
|
||||
"NutTech.hls.masterplaylist.load.start" = "Старт загрузки мастерплейлиста %@";
|
||||
"NutTech.hls.masterplaylist.load.end" = "Мастерплейлист успешно загружен";
|
||||
|
||||
"NutTech.download.start" = "Старт загрузки видео %@";
|
||||
"NutTech.download.end" = "Видео успешно загружено";
|
||||
"NutTech.download.cancel" = "Отменена загрузка видео";
|
||||
"NutTech.download.error" = "Ошибка при загрузке видео: %@";
|
||||
"NutTech.download.tracks" = "Следующие дорожки были загружены: %@";
|
||||
|
||||
"NutTech.player.end" = "Конец воспроизведения";
|
||||
"NutTech.player.loop.error" = "Видео не может воспроизводиться в режиме зацикленного проигрывания";
|
||||
|
||||
"NutTech.quality.changed.debug" = "Выполнено переключение качества видео с %@ на %@";
|
||||
"NutTech.quality.changed.info" = "Выполнено переключение качества видео с 🎞️(разрешение: %@, ширина канала: %@) на 🎞️(разрешение: %@, ширина канала: %@)";
|
||||
"NutTech.quality.changed.info.fromAuto" = "Выполнено переключение качества видео с 🎞️Авто на 🎞️(разрешение: %@, ширина канала: %@)";
|
||||
"NutTech.quality.changed.info.toAuto" = "Выполнено переключение качества видео с 🎞️(разрешение: %@, ширина канала: %@) на 🎞️Авто";
|
||||
"NutTech.qualities.error" = "Все качества во время загрузки завершились с ошибкой";
|
||||
|
||||
"AssetLoader.error.common" = "Ошибка, компонент: %@, url: %@, тип: %@";
|
||||
"AssetLoader.error.parsing" = "Ошибка парсинга плейлиста, компонент: %@, url: %@, тип: %@, описание: %@";
|
||||
"AssetLoader.error.http" = "Ошибка, компонент: %@, url: %@, тип: HTTP, код: %@, описание: %@";
|
||||
|
||||
"AVPlayer.error.common" = "Ошибка плеера AVPlayer, компонент: %@, тип: %@, описание: %@";
|
||||
|
||||
"NutPlayerDemo.url.create.failed" = "Невозможно создать URL из %@";
|
||||
"NutPlayerDemo.tableview.provider.select" = "Передано пустое значение";
|
||||
|
||||
"NutPlayer.plugin.attach.player.empty" = "Плеер не существует";
|
||||
"NutPlayer.content.provider.own" = "Загрузка контента из провайдера %@ в выгруженный из памяти плеер.";
|
||||
"NutPlayer.content.provider.load.error" = "Во время загрузки метаинформации о контенте возникла ошибка %@";
|
||||
|
||||
"NutProvider.loading.failed" = "Ошибка в ответе сервера %@";
|
||||
"NutProvider.loading.data.empty" = "Невозможно интерпретировать данные";
|
||||
"NutProvider.parse.failed" = "Невозможно выполнить декодирование данных к типу %@ возникла ошибка: %@";
|
||||
"NutProvider.parse.playable.failed" = "Не найден проигрываемый контент";
|
||||
"NutProvider.parse.subtitleType.failed" = "Формат субтитров %@ не поддерживается";
|
||||
|
||||
"FirebaseProvider.loading.failed" = "Во время загрузки файла %@ возникла ошибка: %@";
|
||||
"FirebaseProvider.parse.failed" = "Невозможно выполнить декодирование данных к типу %@ возникла ошибка: %@";
|
||||
"FirebaseProvider.parse.playable.failed" = "Не найден проигрываемый контент";
|
||||
"FirebaseProvider.parse.subtitleType.failed" = "Формат субтитров %@ не поддерживается";
|
||||
"FirebaseProvider.parse.playable.failed" = "Не найден проигрываемый контен";
|
||||
"FirebaseProvider.filenamesRetrieving.failed" = "Невозможно получить названия файлов из Firebase";
|
||||
@@ -18,10 +18,25 @@ final class FlutterLogDestination: LogDestination {
|
||||
let limitOutputLevel: LogLevel
|
||||
private weak var delegate: FlutterLogDestinationDelegate?
|
||||
|
||||
init(delegate: FlutterLogDestinationDelegate? = nil) {
|
||||
private let bundle: Bundle?
|
||||
|
||||
init(delegate: FlutterLogDestinationDelegate? = nil, limitOutputLevel: LogLevel = .debug) {
|
||||
self.format = "%Dn [%s|%p]: %m"
|
||||
self.limitOutputLevel = .debug
|
||||
self.limitOutputLevel = limitOutputLevel
|
||||
self.delegate = delegate
|
||||
|
||||
if let bundleUrl = Bundle(for: Self.self).url(forResource: "nut_player_ios", withExtension: "bundle") {
|
||||
self.bundle = Bundle(url: bundleUrl)
|
||||
} else {
|
||||
self.bundle = nil
|
||||
}
|
||||
}
|
||||
|
||||
func localize(_ message: String, params: [String]) -> String {
|
||||
guard let bundle else { return "\(message) \(params)" }
|
||||
|
||||
let localized = NSLocalizedString(message, bundle: bundle, comment: "")
|
||||
return String(format: localized, arguments: params)
|
||||
}
|
||||
|
||||
func process(_ message: String, level: LogLevel) {
|
||||
|
||||
@@ -20,6 +20,9 @@ A NutPlayer flutter plugin for play video
|
||||
s.preserve_paths = 'Vendors/*'
|
||||
s.xcconfig = { 'OTHER_LDFLAGS' => '-framework NutPlayer' }
|
||||
s.vendored_frameworks = 'Vendors/NutPlayer.xcframework'
|
||||
|
||||
s.resource_bundles = {
|
||||
'nut_player_ios' => ['Assets/**/*.{xib,storyboard,xcassets,strings}'] }
|
||||
|
||||
# Flutter.framework does not contain a i386 slice.
|
||||
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
|
||||
|
||||
Reference in New Issue
Block a user