├── .gitignore ├── .gitmodules ├── Alpha2.json ├── Assets.xcassets ├── AppIcon.appiconset │ ├── Contents.json │ ├── icon_128x128.png │ ├── icon_128x128@2x.png │ ├── icon_16x16.png │ ├── icon_16x16@2x.png │ ├── icon_256x256.png │ ├── icon_256x256@2x.png │ ├── icon_32x32.png │ ├── icon_32x32@2x.png │ └── icon_512x512.png ├── Contents.json ├── EncodeCanceled.imageset │ ├── Contents.json │ ├── EncodeCanceled.png │ └── EncodeCanceled@2x.png ├── EncodeComplete.imageset │ ├── Contents.json │ ├── EncodeComplete.png │ └── EncodeComplete@2x.png ├── EncodeWorking.imageset │ ├── Contents.json │ ├── EncodeWorking.png │ └── EncodeWorking@2x.png ├── ToolbarActionTemplate.imageset │ ├── Contents.json │ └── ToolbarActionTemplate.png ├── info-over.imageset │ ├── Contents.json │ └── info-over.pdf ├── info-pressed.imageset │ ├── Contents.json │ └── info-pressed.pdf ├── info.imageset │ ├── Contents.json │ └── info.pdf ├── mp4-file.imageset │ ├── Contents.json │ ├── file.png │ └── file@2x.png ├── photo.badge.plus.symbolset │ ├── Contents.json │ └── photo.badge.plus.svg ├── photo.stack.symbolset │ ├── Contents.json │ └── photo.stack.svg ├── playBackTemplate.imageset │ ├── Contents.json │ └── playBackTemplate.pdf └── stopTemplate.imageset │ ├── Contents.json │ └── stopTemplate.pdf ├── Base.lproj ├── AdvancedPrefsViewController.xib ├── ArtworkSelector.xib ├── FileImportController.xib ├── GeneralPrefsViewController.xib ├── MainMenu.xib ├── MediaTagsController.xib ├── MetadataSearch.xib ├── PrefsWindowController.xib ├── Queue.xib ├── QueueItem.xib ├── QueueOptions.xib ├── SBActivityWindow.xib └── SBChapterSearch.xib ├── CONTRIBUTING.md ├── COPYING ├── Classes ├── ActivityWindowController.swift ├── AdvancedPrefsViewController.swift ├── AppDelegate.swift ├── ArtworkSelector.swift ├── ArtworkSelectorViewItem.swift ├── ArtworkSelectorViewItem.xib ├── AttributedStyles.swift ├── Base.lproj │ ├── DetailsViewController.xib │ ├── DocumentWindowController.xib │ ├── MetadataPrefsViewController.xib │ ├── OCRPrefsViewController.xib │ ├── OffsetViewController.xib │ ├── OutputPrefsViewController.xib │ ├── PresetEditorViewController.xib │ ├── PresetPrefsViewController.xib │ ├── ProgressViewController.xib │ ├── SaveOptions.xib │ ├── TokensViewController.xib │ └── TracksViewController.xib ├── ButtonToolbarItem.swift ├── ChapterSearchController.swift ├── CheckBoxCellView.swift ├── CollectionView.swift ├── ComboBoxCell.swift ├── ComboBoxCellView.swift ├── DetailsViewController.swift ├── Document.swift ├── DocumentToolbarDelegate.swift ├── DocumentWindowController.swift ├── ExpandedTableView.swift ├── FileImportController.swift ├── FilePromiseProvider.swift ├── GeneralPrefsViewController.swift ├── ItemViewController.swift ├── LanguageTransformer.swift ├── Logger.swift ├── MP42FileAdditions.swift ├── MetadataImporters │ ├── AppleTV.swift │ ├── AppleTVv3.swift │ ├── ChapterDB.swift │ ├── ChapterImporter.swift │ ├── ChapterResult.swift │ ├── MetadataHelper.swift │ ├── MetadataImporter.swift │ ├── MetadataResult.swift │ ├── MetadataResultMap.swift │ ├── Ratings.swift │ ├── SquaredTVArt.swift │ ├── TheMovieDB.swift │ ├── TheMovieDBService.swift │ ├── TheTVDB.swift │ ├── TheTVDBService.swift │ └── iTunesStore.swift ├── MetadataPrefsViewController.swift ├── MetadataPreset.swift ├── MetadataSearchController.swift ├── MetadataSearchViewController.swift ├── MetadataSearchViewController.xib ├── NSWindowAdditions.swift ├── NetworkUtilities.swift ├── OCRManager.swift ├── OCRPrefsViewController.swift ├── OffsetViewController.swift ├── OptionsViewController.swift ├── OutputPrefsViewController.swift ├── PopUpCellView.swift ├── Prefs.swift ├── PrefsWindow.swift ├── PrefsWindowController.swift ├── Preset.swift ├── PresetEditorViewController.swift ├── PresetManager.swift ├── PresetPrefsViewController.swift ├── ProgressViewController.swift ├── PropertyView │ ├── Base.lproj │ │ ├── ChapterView.xib │ │ ├── EmptyView.xib │ │ ├── MovieView.xib │ │ ├── MultiSelectView.xib │ │ ├── SoundView.xib │ │ └── VideoView.xib │ ├── ChapterViewController.swift │ ├── EmptyViewController.swift │ ├── MediaTagsController.swift │ ├── MovieViewController.swift │ ├── MultiSelectViewController.swift │ ├── PropertyView.swift │ ├── SoundViewController.swift │ ├── VideoViewController.swift │ ├── es-419.lproj │ │ ├── ChapterView.strings │ │ ├── MovieView.strings │ │ ├── MultiSelectView.strings │ │ ├── SoundView.strings │ │ └── VideoView.strings │ ├── fr.lproj │ │ ├── ChapterView.strings │ │ ├── MovieView.strings │ │ ├── MultiSelectView.strings │ │ ├── SoundView.strings │ │ └── VideoView.strings │ ├── it.lproj │ │ ├── ChapterView.strings │ │ ├── EmptyView.strings │ │ ├── MovieView.strings │ │ ├── MultiSelectView.strings │ │ ├── SoundView.strings │ │ └── VideoView.strings │ └── zh-Hans.lproj │ │ ├── ChapterView.strings │ │ ├── MovieView.strings │ │ ├── MultiSelectView.strings │ │ ├── SoundView.strings │ │ └── VideoView.strings ├── Queue.swift ├── QueueAction.swift ├── QueueController.swift ├── QueueItem.swift ├── QueuePreferences.swift ├── QueuePreset.swift ├── QueueScriptCommand.swift ├── QueueToolbarDelegate.swift ├── SaveOptions.swift ├── SectionsTableView.swift ├── Token.swift ├── TokenCellView.swift ├── TokenDelegate.swift ├── TokenFieldCell.swift ├── TokensViewController.swift ├── TracksViewController.swift ├── Utilities.swift ├── ViewController.swift ├── es-419.lproj │ ├── DocumentWindowController.strings │ ├── MetadataPrefsViewController.strings │ ├── OCRPrefsViewController.strings │ ├── OffsetViewController.strings │ ├── OutputPrefsViewController.strings │ ├── PresetEditorViewController.strings │ ├── PresetPrefsViewController.strings │ ├── ProgressViewController.strings │ ├── SaveOptions.strings │ └── TracksViewController.strings ├── fr.lproj │ ├── DocumentWindowController.strings │ ├── MetadataPrefsViewController.strings │ ├── OCRPrefsViewController.strings │ ├── OffsetViewController.strings │ ├── OutputPrefsViewController.strings │ ├── PresetEditorViewController.strings │ ├── PresetPrefsViewController.strings │ ├── ProgressViewController.strings │ ├── SaveOptions.strings │ └── TracksViewController.strings ├── it.lproj │ ├── DocumentWindowController.strings │ ├── MetadataPrefsViewController.strings │ ├── OCRPrefsViewController.strings │ ├── OffsetViewController.strings │ ├── OutputPrefsViewController.strings │ ├── PresetEditorViewController.strings │ ├── PresetPrefsViewController.strings │ ├── ProgressViewController.strings │ ├── SaveOptions.strings │ └── TracksViewController.strings └── zh-Hans.lproj │ ├── DocumentWindowController.strings │ ├── MetadataPrefsViewController.strings │ ├── OCRPrefsViewController.strings │ ├── OffsetViewController.strings │ ├── OutputPrefsViewController.strings │ ├── PresetEditorViewController.strings │ ├── PresetPrefsViewController.strings │ ├── ProgressViewController.strings │ ├── SaveOptions.strings │ └── TracksViewController.strings ├── Info.plist ├── LICENSE ├── NEWS.markdown ├── Queue.sdef ├── README.md ├── Ratings.json ├── Storefronts.json ├── Subler.entitlements ├── Subler.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── Utilities ├── MP4Dump │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ ├── MainMenu.xib │ │ └── MyDocument.xib │ ├── MP4Dump-Info.plist │ ├── MP4Dump.entitlements │ ├── MP4Dump.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── MP4Dump_Prefix.pch │ ├── MyDocument.h │ ├── MyDocument.m │ ├── en.lproj │ │ ├── Credits.rtf │ │ └── InfoPlist.strings │ └── main.mm └── ParseFilename │ ├── ParseFilename.pl │ └── lib │ ├── Debug │ └── Simple.pm │ ├── Text │ └── Roman.pm │ └── Video │ └── Filename.pm ├── en.lproj ├── Credits.rtf └── InfoPlist.strings ├── es-419.lproj ├── AdvancedPrefsViewController.strings ├── ArtworkSelector.strings ├── FileImportController.strings ├── GeneralPrefsViewController.strings ├── InfoPlist.strings ├── Localizable.strings ├── MainMenu.strings ├── MediaTagsController.strings ├── MetadataSearch.strings ├── PrefsWindowController.strings ├── Queue.strings ├── QueueItem.strings ├── QueueOptions.strings ├── SBActivityWindow.strings └── SBChapterSearch.strings ├── fr.lproj ├── AdvancedPrefsViewController.strings ├── ArtworkSelector.strings ├── FileImportController.strings ├── GeneralPrefsViewController.strings ├── InfoPlist.strings ├── Localizable.strings ├── MainMenu.strings ├── MediaTagsController.strings ├── MetadataSearch.strings ├── PrefsWindowController.strings ├── Queue.strings ├── QueueItem.strings ├── QueueOptions.strings ├── SBActivityWindow.strings └── SBChapterSearch.strings ├── iTunesStores.json ├── it.lproj ├── AdvancedPrefsViewController.strings ├── ArtworkSelector.strings ├── Credits.rtf ├── FileImportController.strings ├── GeneralPrefsViewController.strings ├── InfoPlist.strings ├── Localizable.strings ├── MainMenu.strings ├── MediaTagsController.strings ├── MetadataSearch.strings ├── PrefsWindowController.strings ├── Queue.strings ├── QueueItem.strings ├── QueueOptions.strings ├── SBActivityWindow.strings └── SBChapterSearch.strings └── zh-Hans.lproj ├── AdvancedPrefsViewController.strings ├── ArtworkSelector.strings ├── FileImportController.strings ├── GeneralPrefsViewController.strings ├── InfoPlist.strings ├── Localizable.strings ├── MainMenu.strings ├── MediaTagsController.strings ├── MetadataSearch.strings ├── PrefsWindowController.strings ├── Queue.strings ├── QueueItem.strings ├── QueueOptions.strings ├── SBActivityWindow.strings └── SBChapterSearch.strings /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | xcshareddata 16 | *.xccheckout 17 | profile 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.xccheckout 22 | 23 | # CocoaPods 24 | Pods 25 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "MP42Foundation"] 2 | path = MP42Foundation 3 | url = https://github.com/SublerApp/MP42Foundation.git 4 | -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icon_16x16.png", 5 | "idiom" : "mac", 6 | "scale" : "1x", 7 | "size" : "16x16" 8 | }, 9 | { 10 | "filename" : "icon_16x16@2x.png", 11 | "idiom" : "mac", 12 | "scale" : "2x", 13 | "size" : "16x16" 14 | }, 15 | { 16 | "filename" : "icon_32x32.png", 17 | "idiom" : "mac", 18 | "scale" : "1x", 19 | "size" : "32x32" 20 | }, 21 | { 22 | "filename" : "icon_32x32@2x.png", 23 | "idiom" : "mac", 24 | "scale" : "2x", 25 | "size" : "32x32" 26 | }, 27 | { 28 | "filename" : "icon_128x128.png", 29 | "idiom" : "mac", 30 | "scale" : "1x", 31 | "size" : "128x128" 32 | }, 33 | { 34 | "filename" : "icon_128x128@2x.png", 35 | "idiom" : "mac", 36 | "scale" : "2x", 37 | "size" : "128x128" 38 | }, 39 | { 40 | "filename" : "icon_256x256.png", 41 | "idiom" : "mac", 42 | "scale" : "1x", 43 | "size" : "256x256" 44 | }, 45 | { 46 | "filename" : "icon_256x256@2x.png", 47 | "idiom" : "mac", 48 | "scale" : "2x", 49 | "size" : "256x256" 50 | }, 51 | { 52 | "filename" : "icon_512x512.png", 53 | "idiom" : "mac", 54 | "scale" : "1x", 55 | "size" : "512x512" 56 | }, 57 | { 58 | "idiom" : "mac", 59 | "scale" : "2x", 60 | "size" : "512x512" 61 | } 62 | ], 63 | "info" : { 64 | "author" : "xcode", 65 | "version" : 1 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_128x128.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_16x16.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_256x256.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_32x32.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/AppIcon.appiconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/AppIcon.appiconset/icon_512x512.png -------------------------------------------------------------------------------- /Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Assets.xcassets/EncodeCanceled.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "EncodeCanceled.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "EncodeCanceled@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Assets.xcassets/EncodeCanceled.imageset/EncodeCanceled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/EncodeCanceled.imageset/EncodeCanceled.png -------------------------------------------------------------------------------- /Assets.xcassets/EncodeCanceled.imageset/EncodeCanceled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/EncodeCanceled.imageset/EncodeCanceled@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/EncodeComplete.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "EncodeComplete.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "EncodeComplete@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Assets.xcassets/EncodeComplete.imageset/EncodeComplete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/EncodeComplete.imageset/EncodeComplete.png -------------------------------------------------------------------------------- /Assets.xcassets/EncodeComplete.imageset/EncodeComplete@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/EncodeComplete.imageset/EncodeComplete@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/EncodeWorking.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "EncodeWorking.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "EncodeWorking@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Assets.xcassets/EncodeWorking.imageset/EncodeWorking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/EncodeWorking.imageset/EncodeWorking.png -------------------------------------------------------------------------------- /Assets.xcassets/EncodeWorking.imageset/EncodeWorking@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/EncodeWorking.imageset/EncodeWorking@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/ToolbarActionTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "ToolbarActionTemplate.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Assets.xcassets/ToolbarActionTemplate.imageset/ToolbarActionTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/ToolbarActionTemplate.imageset/ToolbarActionTemplate.png -------------------------------------------------------------------------------- /Assets.xcassets/info-over.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "info-over.pdf", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Assets.xcassets/info-over.imageset/info-over.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/info-over.imageset/info-over.pdf -------------------------------------------------------------------------------- /Assets.xcassets/info-pressed.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "info-pressed.pdf", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Assets.xcassets/info-pressed.imageset/info-pressed.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/info-pressed.imageset/info-pressed.pdf -------------------------------------------------------------------------------- /Assets.xcassets/info.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "info.pdf", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Assets.xcassets/info.imageset/info.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/info.imageset/info.pdf -------------------------------------------------------------------------------- /Assets.xcassets/mp4-file.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "file.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "file@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Assets.xcassets/mp4-file.imageset/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/mp4-file.imageset/file.png -------------------------------------------------------------------------------- /Assets.xcassets/mp4-file.imageset/file@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/mp4-file.imageset/file@2x.png -------------------------------------------------------------------------------- /Assets.xcassets/photo.badge.plus.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "photo.badge.plus.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /Assets.xcassets/photo.stack.symbolset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "symbols" : [ 7 | { 8 | "filename" : "photo.stack.svg", 9 | "idiom" : "universal" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /Assets.xcassets/playBackTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "playBackTemplate.pdf", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Assets.xcassets/playBackTemplate.imageset/playBackTemplate.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/playBackTemplate.imageset/playBackTemplate.pdf -------------------------------------------------------------------------------- /Assets.xcassets/stopTemplate.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "stopTemplate.pdf", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Assets.xcassets/stopTemplate.imageset/stopTemplate.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Assets.xcassets/stopTemplate.imageset/stopTemplate.pdf -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | 3 | We welcome most contributions. While it is our goal to allow everyone to contribute, contributions not meeting the project's goals or standards may be rejected. 4 | -------------------------------------------------------------------------------- /Classes/ActivityWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ActivityWindowController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | import MP42Foundation 10 | 11 | final class ActivityWindowController : NSWindowController, MP42Logging { 12 | 13 | @IBOutlet var logView: NSTextView! 14 | let logger: Logger 15 | private let storage: NSTextStorage 16 | private let attributes: [NSAttributedString.Key:Any] 17 | 18 | init(logger: Logger) { 19 | self.logger = logger 20 | self.storage = NSTextStorage() 21 | self.attributes = [NSAttributedString.Key.foregroundColor: NSColor.textColor] 22 | super.init(window: nil) 23 | self.logger.delegate = self 24 | } 25 | 26 | required init?(coder: NSCoder) { 27 | fatalError("init(coder:) has not been implemented") 28 | } 29 | 30 | override public var windowNibName: NSNib.Name? { 31 | return "SBActivityWindow" 32 | } 33 | 34 | override func windowDidLoad() { 35 | super.windowDidLoad() 36 | logView.layoutManager?.replaceTextStorage(storage) 37 | } 38 | 39 | func write(toLog string: String) { 40 | DispatchQueue.main.async { 41 | let attrString = NSAttributedString(string: string, attributes: self.attributes) 42 | self.storage.append(attrString) 43 | } 44 | } 45 | 46 | @IBAction func clearLog(_ sender: Any) { 47 | logger.clear() 48 | storage.deleteCharacters(in: NSMakeRange(0, storage.length)) 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /Classes/AdvancedPrefsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AdvancedPrefsViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 06/02/2018. 6 | // 7 | 8 | import Cocoa 9 | 10 | class AdvancedPrefsViewController: NSViewController { 11 | 12 | init() { 13 | super.init(nibName: nil, bundle: nil) 14 | self.title = NSLocalizedString("Advanced", comment: "") 15 | } 16 | 17 | required init?(coder: NSCoder) { 18 | fatalError("init(coder:) has not been implemented") 19 | } 20 | 21 | override var nibName: NSNib.Name? { 22 | return "AdvancedPrefsViewController" 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Classes/AttributedStyles.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AttributedStyles.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 01/08/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | // MARK: - Attributed styles 11 | 12 | private func monospaceAttributes(size: CGFloat, aligment: NSTextAlignment, headIndent: CGFloat = -10.0, firstLineHeadIndent: CGFloat = 0, bold: Bool, color: NSColor = NSColor.secondaryLabelColor) -> [NSAttributedString.Key : Any] { 13 | let ps = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle 14 | ps.firstLineHeadIndent = firstLineHeadIndent 15 | ps.headIndent = headIndent 16 | ps.alignment = aligment 17 | 18 | return [NSAttributedString.Key.font: NSFont.monospacedDigitSystemFont(ofSize: size, 19 | weight: bold ? NSFont.Weight.bold : NSFont.Weight.regular), 20 | NSAttributedString.Key.paragraphStyle: ps, 21 | NSAttributedString.Key.foregroundColor: color] 22 | } 23 | 24 | private let detailBoldMonospacedAttr = { () -> [NSAttributedString.Key : Any] in 25 | return monospaceAttributes(size: NSFont.smallSystemFontSize, aligment: NSTextAlignment.right, bold: true) 26 | }() 27 | 28 | private let detailBoldAttr = { () -> [NSAttributedString.Key : Any] in 29 | return monospaceAttributes(size: NSFont.smallSystemFontSize, aligment: NSTextAlignment.left, bold: true) 30 | }() 31 | 32 | private let detailMonospacedAttr = { () -> [NSAttributedString.Key : Any] in 33 | return monospaceAttributes(size: NSFont.smallSystemFontSize, aligment: NSTextAlignment.right, bold: false) 34 | }() 35 | 36 | private let monospacedAttr = { () -> [NSAttributedString.Key : Any] in 37 | return monospaceAttributes(size: NSFont.systemFontSize, aligment: NSTextAlignment.right, bold: false, color: NSColor.controlTextColor) 38 | }() 39 | 40 | private let groupRowAttr = { () -> [NSAttributedString.Key : Any] in 41 | return monospaceAttributes(size: NSFont.systemFontSize, aligment: NSTextAlignment.left, firstLineHeadIndent: 24, bold: true) 42 | }() 43 | 44 | extension String { 45 | 46 | func boldAttributedString() -> NSAttributedString { 47 | return NSAttributedString(string: self, attributes: detailBoldAttr) 48 | } 49 | 50 | func boldMonospacedAttributedString() -> NSAttributedString { 51 | return NSAttributedString(string: self, attributes: detailBoldMonospacedAttr) 52 | } 53 | 54 | func smallMonospacedAttributedString() -> NSAttributedString { 55 | return NSAttributedString(string: self, attributes: detailMonospacedAttr) 56 | } 57 | 58 | func monospacedAttributedString() -> NSAttributedString { 59 | return NSAttributedString(string: self, attributes: monospacedAttr) 60 | } 61 | 62 | func groupAttributedString() -> NSAttributedString { 63 | return NSAttributedString(string: self, attributes: groupRowAttr) 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /Classes/Base.lproj/DetailsViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Classes/Base.lproj/DocumentWindowController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Classes/Base.lproj/TokensViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Classes/CheckBoxCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CheckBoxCellView.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class CheckBoxCellView : NSTableCellView, ExpandedTableViewCellActionable { 11 | @IBOutlet var checkboxButton: NSButton! 12 | 13 | func performAction() { 14 | self.checkboxButton.performClick(self) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Classes/ComboBoxCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ComboBoxCell.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | class ComboBoxCell : NSComboBoxCell { 11 | 12 | private var originalBackgroundStyle: NSView.BackgroundStyle = NSView.BackgroundStyle.light 13 | 14 | override var backgroundStyle: NSView.BackgroundStyle { 15 | get { 16 | return super.backgroundStyle 17 | } 18 | set (newBackgroundStyle) { 19 | super.backgroundStyle = newBackgroundStyle 20 | if newBackgroundStyle == NSView.BackgroundStyle.dark { 21 | textColor = NSColor.controlHighlightColor 22 | } else { 23 | textColor = NSColor.controlTextColor 24 | } 25 | } 26 | } 27 | 28 | override func setUpFieldEditorAttributes(_ textObj: NSText) -> NSText { 29 | originalBackgroundStyle = backgroundStyle 30 | backgroundStyle = NSView.BackgroundStyle.light 31 | drawsBackground = true 32 | return super.setUpFieldEditorAttributes(textObj) 33 | } 34 | 35 | override func endEditing(_ textObj: NSText) { 36 | super.endEditing(textObj) 37 | drawsBackground = false 38 | backgroundStyle = originalBackgroundStyle 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Classes/ComboBoxCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ComboBoxCellView.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class ComboBoxCellView : NSTableCellView { 11 | @IBOutlet var comboBox: NSComboBox! 12 | } 13 | -------------------------------------------------------------------------------- /Classes/DetailsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DetailsViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 04/02/2018. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class DetailsViewController: NSViewController { 11 | 12 | override var nibName: NSNib.Name? { 13 | return "DetailsViewController" 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Classes/GeneralPrefsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GeneralPrefsViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 06/02/2018. 6 | // 7 | 8 | import Cocoa 9 | import MP42Foundation 10 | 11 | class GeneralPrefsViewController: NSViewController { 12 | 13 | init() { 14 | super.init(nibName: nil, bundle: nil) 15 | self.title = NSLocalizedString("General", comment: "") 16 | } 17 | 18 | required init?(coder: NSCoder) { 19 | fatalError("init(coder:) has not been implemented") 20 | } 21 | 22 | override var nibName: NSNib.Name? { 23 | return "GeneralPrefsViewController" 24 | } 25 | 26 | @IBAction func clearRecentSearches(_ sender: Any) { 27 | MetadataSearchController.clearRecentSearches() 28 | } 29 | 30 | @IBAction func deleteCachedMetadata(_ sender: Any) { 31 | MetadataSearchController.deleteCachedMetadata() 32 | } 33 | 34 | @IBAction func updateRatingsCountry(_ sender: Any) { 35 | // Unused 36 | } 37 | 38 | @objc dynamic var ratingsCountries: [String] { return Ratings.shared.countries.map { $0.displayName } } 39 | 40 | @objc dynamic var logFormatOptions: [String] { 41 | return [ 42 | "Time Only", 43 | "Date and Time" 44 | ] 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /Classes/ItemViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 11/11/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | protocol ItemViewDelegate: AnyObject { 11 | @MainActor func edit(item: QueueItem) 12 | } 13 | 14 | final class ItemViewController : NSViewController { 15 | 16 | @objc dynamic let item: QueueItem 17 | 18 | @objc dynamic let name: String 19 | @objc dynamic let path: String 20 | @objc dynamic var destPath: String 21 | 22 | private var delegate: ItemViewDelegate 23 | 24 | private var statusObserver: NSKeyValueObservation? 25 | private var actionsObserver: NSKeyValueObservation? 26 | 27 | @IBOutlet var editButton: NSButton! 28 | @IBOutlet var spinner: NSProgressIndicator! 29 | @IBOutlet var tableHeight: NSLayoutConstraint! 30 | @IBOutlet var tableView: NSTableView! 31 | 32 | override var nibName: NSNib.Name? { 33 | return "QueueItem" 34 | } 35 | 36 | init(item: QueueItem, delegate: ItemViewDelegate) { 37 | self.item = item 38 | self.name = item.fileURL.lastPathComponent 39 | self.path = item.fileURL.path 40 | self.destPath = item.destURL.path 41 | self.delegate = delegate 42 | super.init(nibName: nil, bundle: nil) 43 | } 44 | 45 | required init?(coder: NSCoder) { 46 | fatalError("init(coder:) has not been implemented") 47 | } 48 | 49 | override func viewDidLoad() { 50 | super.viewDidLoad() 51 | 52 | tableView.deselectAll(self) 53 | 54 | // Observe the item status 55 | statusObserver = item.observe(\.status, options: [.initial, .new]) { [weak self] observed, change in 56 | guard let s = self else { return } 57 | DispatchQueue.main.async { 58 | s.destPath = observed.destURL.path 59 | 60 | if observed.status == .ready || observed.status == .completed { 61 | s.editButton.isEnabled = true 62 | } else { 63 | s.editButton.isEnabled = false 64 | } 65 | } 66 | } 67 | 68 | // Observe the item actions 69 | actionsObserver = item.observe(\.actions, options: [.initial, .new, .old]) { [weak self] observed, change in 70 | guard let s = self, let newCount = change.newValue?.count else { return } 71 | let count = newCount - (change.oldValue?.count ?? 0) 72 | let height = 16.0 * CGFloat(count >= 0 ? count : 1) 73 | DispatchQueue.main.async { 74 | s.tableHeight.constant = height 75 | } 76 | } 77 | } 78 | 79 | @IBAction func edit(_ sender: Any) { 80 | spinner.isHidden = false 81 | delegate.edit(item: item) 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Classes/LanguageTransformer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LanguageTransformer.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 11/11/2017. 6 | // 7 | 8 | import Foundation 9 | import MP42Foundation 10 | 11 | class LanguageTransformer : ValueTransformer { 12 | 13 | private let langManager = MP42Languages.defaultManager 14 | 15 | override class func transformedValueClass() -> Swift.AnyClass { 16 | return NSString.self 17 | } 18 | 19 | override class func allowsReverseTransformation() -> Bool { 20 | return true 21 | } 22 | 23 | override func transformedValue(_ value: Any?) -> Any? { 24 | let code = value as! String 25 | let lang = langManager.localizedLang(forExtendedTag: code) 26 | return lang 27 | } 28 | 29 | override func reverseTransformedValue(_ value: Any?) -> Any? { 30 | let lang = value as! String 31 | let code = langManager.extendedTag(forLocalizedLang: lang) 32 | return code 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Classes/Logger.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Logger.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Foundation 9 | import MP42Foundation 10 | 11 | final class Logger : NSObject, MP42Logging { 12 | 13 | enum Format: Int { 14 | case timeOnly = 0 15 | case dateAndTime = 1 16 | } 17 | 18 | static let shared = Logger(fileURL: defaultDestinationURL) 19 | 20 | var delegate: MP42Logging? 21 | var format: Format { Format(rawValue: Prefs.logFormat) ?? .timeOnly } 22 | 23 | private let fileURL: URL 24 | private let queue: DispatchQueue 25 | 26 | init(fileURL: URL) { 27 | self.fileURL = fileURL 28 | self.queue = DispatchQueue(label: "org.subler.LogQueue") 29 | } 30 | 31 | private func currentTime() -> String { 32 | var currentTime = time(nil) 33 | if let localTime = localtime(¤tTime) { 34 | let p = localTime.pointee 35 | return String(format: "%02d:%02d:%02d", p.tm_hour, p.tm_min, p.tm_sec) 36 | } else { 37 | return "" 38 | } 39 | } 40 | 41 | private func currentDate() -> String { 42 | var currentTime = time(nil) 43 | if let localTime = localtime(¤tTime) { 44 | let p = localTime.pointee 45 | return String(format: "%04d-%02d-%02d", p.tm_year + 1900, p.tm_mon + 1, p.tm_mday) 46 | } else { 47 | return "" 48 | } 49 | } 50 | 51 | func write(toLog string: String) { 52 | queue.sync { 53 | let prefix: String 54 | switch format { 55 | case .timeOnly: 56 | prefix = currentTime() 57 | case .dateAndTime: 58 | prefix = "\(currentDate()) \(currentTime())" 59 | } 60 | let output = "\(prefix) \(string)\n" 61 | 62 | fileURL.withUnsafeFileSystemRepresentation { 63 | if let file = fopen($0, "a") { 64 | fputs(output, file) 65 | fclose(file) 66 | } 67 | } 68 | 69 | if let delegate = delegate { 70 | delegate.write(toLog: output) 71 | } 72 | } 73 | } 74 | 75 | func writeError(toLog error: Error) { 76 | write(toLog: error.localizedDescription) 77 | } 78 | 79 | func clear() { 80 | try? FileManager.default.removeItem(at: fileURL) 81 | } 82 | 83 | private static let defaultDestinationURL: URL = { 84 | appSupportURL().appendingPathComponent("debugLog.txt") 85 | }() 86 | 87 | private static func appSupportURL() -> URL { 88 | let fileManager = FileManager.default 89 | if let url = fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask) 90 | .first?.appendingPathComponent("Subler") { 91 | 92 | do { 93 | if fileManager.fileExists(atPath: url.path) == false { 94 | try fileManager.createDirectory(at: url, withIntermediateDirectories: true, attributes: [:]) 95 | } 96 | } 97 | catch _ { 98 | fatalError("Couldn't create the app support directory") 99 | } 100 | 101 | return url 102 | } 103 | else { 104 | fatalError("Couldn't find the app support directory") 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /Classes/MetadataImporters/ChapterImporter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChapterImporter.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 31/07/2017. 6 | // 7 | 8 | import Foundation 9 | 10 | public protocol ChapterService { 11 | func search(title: String, duration: UInt64) -> [ChapterResult] 12 | } 13 | 14 | public enum ChapterSearch { 15 | case movieSeach(service: ChapterService, title: String, duration: UInt64) 16 | 17 | public func search(completionHandler: @escaping ([ChapterResult]) -> Void) -> Runnable { 18 | switch self { 19 | case let .movieSeach(service, title, duration): 20 | return RunnableTask(search: service.search(title: title, duration: duration), 21 | completionHandler: completionHandler) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Classes/MetadataImporters/ChapterResult.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChapterResult.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 31/07/2017. 6 | // 7 | 8 | import Foundation 9 | 10 | public struct Chapter { 11 | public let name: String 12 | public let timestamp: UInt64 13 | } 14 | 15 | public struct ChapterResult { 16 | public let title: String 17 | public let duration: UInt64 18 | public let id: UInt64 19 | public let confimations: UInt 20 | public let chapters: [Chapter] 21 | } 22 | -------------------------------------------------------------------------------- /Classes/MetadataImporters/Ratings.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Ratings.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 04/02/2020. 6 | // 7 | 8 | import Foundation 9 | 10 | final class Ratings { 11 | static let shared = Ratings() 12 | let countries: [Country] 13 | 14 | private init() { 15 | guard let url = Bundle.main.url(forResource: "Ratings", withExtension: "json"), 16 | let data = try? Data(contentsOf: url), 17 | let countries = try? JSONDecoder().decode([Country].self, from: data) else { fatalError() } 18 | 19 | self.countries = countries 20 | } 21 | 22 | func rating(countryCode: String, mediaKind: MediaKind, name: String) -> Rating? { 23 | guard let country = countries.first(where: { $0.displayName == countryCode }) else { return nil } 24 | return country.ratings.first(where: {$0.media.contains(mediaKind.description) && $0.displayName == name}) 25 | } 26 | 27 | func rating(storeCode: Int, mediaKind: MediaKind, code: String) -> Rating? { 28 | guard let country = countries.first(where: { $0.storeCode == storeCode }) else { return nil } 29 | return country.ratings.first(where: {$0.media.contains(mediaKind.description) && $0.code == code}) 30 | } 31 | } 32 | 33 | struct Country: Decodable { 34 | let displayName: String 35 | let storeCode: Int 36 | let ratings: [Rating] 37 | 38 | enum CodingKeys: String, CodingKey { 39 | case displayName = "country", storeCode, ratings 40 | } 41 | } 42 | 43 | struct Rating: Decodable { 44 | let media: String 45 | let prefix: String 46 | let code: String 47 | let value: String 48 | let displayName: String 49 | 50 | enum CodingKeys: String, CodingKey { 51 | case media, prefix, code = "itunes-code", value = "itunes-value", displayName = "description" 52 | } 53 | 54 | var iTunesCode: String { "\(prefix)|\(code)|\(value)|" } 55 | } 56 | -------------------------------------------------------------------------------- /Classes/MetadataPreset.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MetadataPreset.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 21/08/2017. 6 | // 7 | 8 | import Foundation 9 | import MP42Foundation 10 | 11 | @objc(SBMetadataPreset) final class MetadataPreset: NSObject, Preset { 12 | 13 | var pathExtension: String { 14 | return "sbpreset2" 15 | } 16 | @objc var title: String 17 | let metadata: MP42Metadata 18 | var replaceArtworks: Bool 19 | var replaceAnnotations: Bool 20 | 21 | let version: Int 22 | var changed: Bool 23 | 24 | convenience init(title: String) { 25 | self.init(title: title, metadata: MP42Metadata(), replaceArtworks: true, replaceAnnotations: true) 26 | } 27 | 28 | init(title: String, metadata: MP42Metadata, replaceArtworks: Bool, replaceAnnotations: Bool) { 29 | self.title = title 30 | self.metadata = metadata.copy() as! MP42Metadata 31 | self.replaceArtworks = replaceArtworks 32 | self.replaceAnnotations = replaceAnnotations 33 | self.changed = true 34 | self.version = 2 35 | } 36 | 37 | // MARK: NSCoding 38 | 39 | func encode(with aCoder: NSCoder) { 40 | aCoder.encode(title, forKey: "title") 41 | aCoder.encode(metadata, forKey: "metadata") 42 | aCoder.encode(version, forKey: "version") 43 | aCoder.encode(replaceArtworks, forKey: "replaceArtworks") 44 | aCoder.encode(replaceAnnotations, forKey: "replaceAnnotations") 45 | } 46 | 47 | required init?(coder aDecoder: NSCoder) { 48 | guard let title = aDecoder.decodeObject(of: NSString.self, forKey: "title") as String?, 49 | let metadata = aDecoder.decodeObject(of: MP42Metadata.self, forKey: "metadata") as MP42Metadata? 50 | else { return nil } 51 | 52 | let version = aDecoder.decodeInteger(forKey: "version") 53 | let replaceArtworks = aDecoder.decodeBool(forKey: "replaceArtworks") 54 | let replaceAnnotations = aDecoder.decodeBool(forKey: "replaceAnnotations") 55 | 56 | self.title = title 57 | self.metadata = metadata 58 | self.replaceArtworks = replaceArtworks 59 | self.replaceAnnotations = replaceAnnotations 60 | self.version = version 61 | self.changed = false 62 | } 63 | 64 | static var supportsSecureCoding: Bool { return true } 65 | 66 | // MARK: NSCopying 67 | 68 | func copy(with zone: NSZone? = nil) -> Any { 69 | return MetadataPreset(title: title, metadata: metadata, replaceArtworks: replaceArtworks, replaceAnnotations: replaceAnnotations) 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Classes/MetadataSearchViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MetadataSearchWindowController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 06/08/2019. 6 | // 7 | 8 | import Cocoa 9 | 10 | protocol MetadataSearchViewControllerDelegate : AnyObject { 11 | func didSelect(metadata: MetadataResult) 12 | } 13 | 14 | class MetadataSearchViewController: ViewController, MetadataSearchControllerDelegate, ArtworkSelectorControllerDelegate { 15 | 16 | private let searchTerms: MetadataSearchTerms 17 | 18 | private lazy var metadataViewController: MetadataSearchController = { 19 | return MetadataSearchController(delegate: self, searchTerms: searchTerms) 20 | }() 21 | private var artworkViewController: ArtworkSelectorController? 22 | 23 | private weak var delegate: MetadataSearchViewControllerDelegate? 24 | 25 | init(delegate: MetadataSearchViewControllerDelegate, searchTerms: MetadataSearchTerms = .none) { 26 | self.delegate = delegate 27 | self.searchTerms = searchTerms 28 | super.init(nibName: nil, bundle: nil) 29 | self.autosave = "MetadataSearchViewControllerAutosaveIdentifier" 30 | } 31 | 32 | required init?(coder: NSCoder) { 33 | fatalError("init(coder:) has not been implemented") 34 | } 35 | 36 | override func viewDidLoad() { 37 | addChild(metadataViewController) 38 | view.addSubview(metadataViewController.view) 39 | } 40 | 41 | override func viewDidAppear() { 42 | self.view.window?.autorecalculatesKeyViewLoop = true 43 | } 44 | 45 | override func addChild(_ childViewController: NSViewController) { 46 | childViewController.view.frame.size = view.frame.size 47 | childViewController.view.autoresizingMask = [NSView.AutoresizingMask.width, NSView.AutoresizingMask.height] 48 | super.addChild(childViewController) 49 | } 50 | 51 | override func transition(from fromViewController: NSViewController, to toViewController: NSViewController, options: NSViewController.TransitionOptions = [], completionHandler completion: (() -> Void)? = nil) { 52 | addChild(toViewController) 53 | super.transition(from: fromViewController, to: toViewController, options: options, completionHandler: completion) 54 | } 55 | 56 | func didSelect(metadata: MetadataResult?) { 57 | if let result = metadata { 58 | if result.remoteArtworks.isEmpty { 59 | delegate?.didSelect(metadata: result) 60 | presentingViewController?.dismiss(self) 61 | } else { 62 | let controller = ArtworkSelectorController(metadata: result, delegate: self) 63 | artworkViewController = controller 64 | transition(from: metadataViewController, to: controller, options: [.slideForward], completionHandler: { 65 | self.removeChild(at: 0) 66 | self.view.window?.makeFirstResponder(self.artworkViewController?.imageBrowser) 67 | }) 68 | } 69 | } else { 70 | presentingViewController?.dismiss(self) 71 | } 72 | } 73 | 74 | func didAddArtworks(metadata: MetadataResult) { 75 | delegate?.didSelect(metadata: metadata) 76 | presentingViewController?.dismiss(self) 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /Classes/MetadataSearchViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Classes/NSWindowAdditions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSWindowAdditions.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 15/03/2018. 6 | // 7 | 8 | import Cocoa 9 | 10 | extension NSWindow { 11 | func endEditing() -> Bool { 12 | var success = false 13 | var selectedRange = NSRange() 14 | var responder: AnyObject? = self.firstResponder 15 | 16 | // If we're dealing with the field editor, the real first responder is 17 | // its delegate. 18 | if let parentResponder = responder as? NSTextView, parentResponder.isFieldEditor { 19 | responder = ((parentResponder.delegate as? NSResponder) != nil) ? parentResponder.delegate : nil 20 | if let textField = responder as? NSTextField { 21 | selectedRange = textField.currentEditor()?.selectedRange ?? NSRange() 22 | } 23 | } 24 | 25 | success = self.makeFirstResponder(nil) 26 | 27 | // Return first responder status. 28 | if success, let nextResponder = responder as? NSResponder { 29 | self.makeFirstResponder(nextResponder) 30 | if let textField = nextResponder as? NSTextField { 31 | textField.currentEditor()?.selectedRange = selectedRange 32 | } 33 | } 34 | 35 | return success 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Classes/OCRPrefsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // OCRPrefsViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 30/05/2019. 6 | // 7 | 8 | import Cocoa 9 | 10 | class OCRTableCellView : NSTableCellView { 11 | 12 | var item: OCRLanguage? { 13 | didSet { 14 | guard let item = item else { return } 15 | 16 | textField?.stringValue = item.displayName 17 | 18 | switch item.status { 19 | case .available: 20 | actionButton.title = NSLocalizedString("Get", comment: "") 21 | case .downloading: 22 | actionButton.title = NSLocalizedString("Cancel Download", comment: "") 23 | case .downloaded: 24 | actionButton.title = NSLocalizedString("Remove", comment: "") 25 | } 26 | } 27 | } 28 | 29 | @IBOutlet var actionButton: NSButton! 30 | 31 | @IBAction func buttonPressed(_ sender: Any) { 32 | guard let item = item else { return } 33 | 34 | switch item.status { 35 | case .available: 36 | OCRManager.shared.download(item: item) 37 | case .downloading: 38 | OCRManager.shared.cancelDownload(item: item) 39 | case .downloaded: 40 | try! OCRManager.shared.removeDownload(item: item) 41 | } 42 | } 43 | 44 | } 45 | 46 | class OCRPrefsViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate { 47 | 48 | private let manager = OCRManager.shared 49 | 50 | @IBOutlet var tableView: NSTableView! 51 | var observer: Any? 52 | 53 | init() { 54 | super.init(nibName: nil, bundle: nil) 55 | self.title = NSLocalizedString("OCR", comment: "") 56 | } 57 | 58 | required init?(coder: NSCoder) { 59 | fatalError("init(coder:) has not been implemented") 60 | } 61 | 62 | override var nibName: NSNib.Name? { 63 | return "OCRPrefsViewController" 64 | } 65 | 66 | override func viewDidLoad() { 67 | super.viewDidLoad() 68 | 69 | tableView.reloadData() 70 | observer = NotificationCenter.default.addObserver(forName: OCRManager.updateNotification, 71 | object: nil, 72 | queue: OperationQueue.main) { [weak self] notification in 73 | guard let s = self else { return } 74 | s.tableView.reloadData() 75 | } 76 | } 77 | 78 | // MARK: Table View 79 | 80 | func numberOfRows(in tableView: NSTableView) -> Int { 81 | return manager.languages.count 82 | } 83 | 84 | private let languageItemColumn = NSUserInterfaceItemIdentifier(rawValue: "languageItem") 85 | 86 | func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { 87 | let item = manager.languages[row] 88 | 89 | if let cell = tableView.makeView(withIdentifier: languageItemColumn, owner: self) as? OCRTableCellView { 90 | cell.item = item 91 | return cell 92 | } 93 | 94 | return nil 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /Classes/OffsetViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // OffsetViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 06/02/2018. 6 | // 7 | 8 | import Cocoa 9 | import MP42Foundation 10 | 11 | final class OffsetViewController: NSViewController { 12 | 13 | private let doc: Document 14 | private let track: MP42Track 15 | 16 | @IBOutlet var offsetField: NSTextField! 17 | 18 | init(doc: Document, track: MP42Track) { 19 | self.doc = doc 20 | self.track = track 21 | super.init(nibName: nil, bundle: nil) 22 | } 23 | 24 | required init?(coder: NSCoder) { 25 | fatalError("init(coder:) has not been implemented") 26 | } 27 | 28 | override var nibName: NSNib.Name? { 29 | return "OffsetViewController" 30 | } 31 | 32 | override func viewDidLoad() { 33 | super.viewDidLoad() 34 | offsetField.doubleValue = track.startOffset 35 | } 36 | 37 | @IBAction func setOffset(_ sender: Any) { 38 | if track.startOffset != offsetField.doubleValue { 39 | track.startOffset = offsetField.doubleValue 40 | doc.updateChangeCount(.changeDone) 41 | } 42 | presentingViewController?.dismiss(self) 43 | } 44 | 45 | @IBAction func dismiss(_ sender: Any) { 46 | presentingViewController?.dismiss(self) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Classes/PopUpCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PopUpCellView.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class PopUpCellView : NSTableCellView, ExpandedTableViewCellActionable { 11 | @IBOutlet var popUpButton: NSPopUpButton! 12 | 13 | func performAction() { 14 | self.popUpButton.performClick(self) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Classes/PrefsWindow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PrefsWindow.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 06/02/2018. 6 | // 7 | 8 | import Cocoa 9 | 10 | class PrefsWindow: NSWindow { 11 | 12 | override func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { 13 | if item.action == #selector(NSWindow.toggleToolbarShown(_:)) { 14 | return false 15 | } 16 | return super.validateUserInterfaceItem(item) 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Classes/Preset.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Preset.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 21/08/2017. 6 | // 7 | 8 | import Foundation 9 | 10 | protocol Preset: NSSecureCoding, NSCopying { 11 | var title: String { get set } 12 | var changed: Bool { get set } 13 | var version: Int { get } 14 | 15 | var pathExtension: String { get } 16 | } 17 | 18 | extension Preset { 19 | 20 | private func appSupportURL() -> URL? { 21 | return FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first?.appendingPathComponent("Subler") 22 | } 23 | 24 | var fileURL: URL { 25 | guard let url = appSupportURL() else { fatalError() } 26 | return url.appendingPathComponent(title).appendingPathExtension(pathExtension) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Classes/PresetEditorViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PresetEditorViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 29/08/17. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class PresetEditorViewController: MovieViewController { 11 | 12 | let preset: MetadataPreset 13 | @IBOutlet weak var presetTitle: NSTextField! 14 | @IBOutlet weak var replaceArtworks: NSButton! 15 | @IBOutlet weak var replaceAnnotations: NSButton! 16 | 17 | override var nibName: NSNib.Name? { 18 | return "PresetEditorViewController" 19 | } 20 | 21 | init(preset: MetadataPreset) { 22 | self.preset = preset 23 | super.init(mp4: nil, metadata: preset.metadata) 24 | } 25 | 26 | required init?(coder: NSCoder) { 27 | fatalError("init(coder:) has not been implemented") 28 | } 29 | 30 | override func viewDidLoad() { 31 | self.metadata = preset.metadata 32 | 33 | super.viewDidLoad() 34 | 35 | if #available(OSX 10.14, *) {} else { 36 | view.appearance = NSAppearance(named: .aqua) 37 | } 38 | presetTitle.stringValue = preset.title 39 | 40 | preset.changed = true 41 | replaceArtworks.state = preset.replaceArtworks == false ? .on : .off 42 | replaceAnnotations.state = preset.replaceAnnotations == false ? .on : .off 43 | } 44 | 45 | override var zoomLevel: Float { 46 | get { 47 | Prefs.presetArtworkSelectorZoomLevel 48 | } 49 | set (value) { 50 | Prefs.presetArtworkSelectorZoomLevel = value; 51 | } 52 | } 53 | 54 | @IBAction func done(_ sender: Any) { 55 | presentingViewController?.dismiss(self) 56 | } 57 | 58 | @IBAction func setReplaceArtworksState(_ sender: NSButton) { 59 | preset.replaceArtworks = sender.state == .off ? true : false 60 | } 61 | 62 | @IBAction func setReplaceAnnotationsState(_ sender: NSButton) { 63 | preset.replaceAnnotations = sender.state == .off ? true : false 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Classes/ProgressViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProgressViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 07/02/2018. 6 | // 7 | 8 | import Cocoa 9 | 10 | protocol ProgressViewControllerDelegate : AnyObject { 11 | func cancelSave() 12 | } 13 | 14 | final class ProgressViewController: NSViewController { 15 | 16 | @IBOutlet var cancelButton: NSButton! 17 | @IBOutlet var progressString: NSTextField! 18 | @IBOutlet var progressBar: NSProgressIndicator! 19 | 20 | weak var delegate: ProgressViewControllerDelegate? 21 | 22 | private var isIndeterminate: Bool = true 23 | 24 | override var nibName: NSNib.Name? { 25 | return "ProgressViewController" 26 | } 27 | 28 | override func viewDidLoad() { 29 | super.viewDidLoad() 30 | progressBar.isIndeterminate = true 31 | } 32 | 33 | var progress: Double { 34 | set (progress) { 35 | if isIndeterminate { 36 | isIndeterminate = false 37 | progressBar.isIndeterminate = false 38 | } 39 | progressBar.doubleValue = progress 40 | } 41 | get { 42 | return progressBar.doubleValue 43 | } 44 | } 45 | 46 | var progressTitle: String { 47 | set (progressTitle) { 48 | progressString.stringValue = progressTitle 49 | } 50 | get { 51 | return progressString.stringValue 52 | } 53 | } 54 | 55 | @IBAction func cancel(_ sender: Any) { 56 | delegate?.cancelSave() 57 | cancelButton.isEnabled = false 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Classes/PropertyView/Base.lproj/EmptyView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Classes/PropertyView/Base.lproj/MultiSelectView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Classes/PropertyView/EmptyViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmptyViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class EmptyViewController: PropertyView { 11 | 12 | override var nibName: NSNib.Name? { 13 | return "EmptyView" 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Classes/PropertyView/MultiSelectViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MultiSelectViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class MultiSelectViewController : PropertyView { 11 | 12 | var numberOfTracks: UInt = 0 { 13 | didSet { 14 | reloadUI() 15 | } 16 | } 17 | 18 | @IBOutlet var label: NSTextField! 19 | 20 | override var nibName: NSNib.Name? { 21 | return "MultiSelectView" 22 | } 23 | 24 | init(numberOfTracks: UInt) { 25 | self.numberOfTracks = numberOfTracks 26 | super.init(nibName: nil, bundle: nil) 27 | } 28 | 29 | required init?(coder: NSCoder) { 30 | fatalError("init(coder:) has not been implemented") 31 | } 32 | 33 | override func viewDidLoad() { 34 | super.viewDidLoad() 35 | reloadUI() 36 | } 37 | 38 | func reloadUI() { 39 | if numberOfTracks == 1 { 40 | label.stringValue = NSLocalizedString("1 track selected", comment: "") 41 | } else { 42 | label.stringValue = String.localizedStringWithFormat(NSLocalizedString("%lu tracks selected", comment: ""), numberOfTracks) 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Classes/PropertyView/PropertyView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PropertyView.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 11/11/2019. 6 | // 7 | 8 | import Cocoa 9 | 10 | class PropertyView : NSViewController { 11 | @IBOutlet var tabView: NSTabView? 12 | 13 | func navigate(direction: Int) { 14 | if direction == NSRightArrowFunctionKey { 15 | tabView?.selectNextTabViewItem(self) 16 | } else { 17 | tabView?.selectPreviousTabViewItem(self) 18 | } 19 | } 20 | 21 | func selectTabViewItem(at index: Int) { 22 | tabView?.selectTabViewItem(at: index) 23 | } 24 | 25 | func selectedViewIndex() -> Int { 26 | var index = NSNotFound 27 | if let item = tabView?.selectedTabViewItem { 28 | index = tabView?.indexOfTabViewItem(item) ?? NSNotFound 29 | } 30 | return index 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Classes/PropertyView/es-419.lproj/ChapterView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTabViewItem"; label = "Chapters"; ObjectID = "11"; */ 2 | "11.label" = "Capítulos"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Chapters"; ObjectID = "22"; */ 5 | "22.ibExternalAccessibilityDescription" = "Capítulos"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "24"; */ 8 | "24.headerCell.title" = "Tiempo"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "25"; */ 11 | "25.headerCell.title" = "Título"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Delete selected chapter"; ObjectID = "31"; */ 14 | "31.ibShadowedToolTip" = "Eliminar capítulo seleccionado"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Add chapter"; ObjectID = "42"; */ 17 | "42.ibShadowedToolTip" = "Agregar capítulo"; 18 | 19 | /* Class = "NSMenuItem"; title = "Rename every chapter"; ObjectID = "SOg-Lz-v5L"; */ 20 | "SOg-Lz-v5L.title" = "Renombrar capítulos"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/PropertyView/es-419.lproj/MovieView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "4p7-7v-cUB"; */ 2 | "4p7-7v-cUB.title" = "Guardar"; 3 | 4 | /* Class = "NSTabViewItem"; label = "Metadata"; ObjectID = "11"; */ 5 | "11.label" = "Metadatos"; 6 | 7 | /* Class = "NSTabViewItem"; label = "Artwork"; ObjectID = "15"; */ 8 | "15.label" = "Ilustración"; 9 | 10 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 11 | "30.ibExternalAccessibilityDescription" = "Agregar propiedad"; 12 | 13 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 14 | "30.ibShadowedToolTip" = "Agregar propiedad"; 15 | 16 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibExternalAccessibilityDescription" = "Eliminar propiedad"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 20 | "53.ibShadowedToolTip" = "Eliminar propiedad"; 21 | 22 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 23 | "179.ibExternalAccessibilityDescription" = "Preset"; 24 | 25 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "aiW-0y-PWH"; */ 26 | "aiW-0y-PWH.title" = "Mantener propiedades existentes"; 27 | 28 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "doa-uZ-CNr"; */ 29 | "doa-uZ-CNr.title" = "Mantener ilustraciones existentes"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 32 | "j7q-XE-YXB.headerCell.title" = "Propiedad"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 35 | "os0-Yb-exW.headerCell.title" = "Valor"; 36 | 37 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 38 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "Metadatos"; 39 | 40 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "sNX-Z3-AtD"; */ 41 | "sNX-Z3-AtD.title" = "Cancelar"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "ZqF-j8-NeN"; */ 44 | "ZqF-j8-NeN.title" = "Nombre:"; 45 | 46 | /* Class = "NSWindow"; title = "Window"; ObjectID = "ZRj-hi-qeJ"; */ 47 | "ZRj-hi-qeJ.title" = "Ventana"; 48 | 49 | -------------------------------------------------------------------------------- /Classes/PropertyView/es-419.lproj/MultiSelectView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "%lu tracks selected"; ObjectID = "Mo5-ii-LsO"; */ 2 | "Mo5-ii-LsO.title" = "%lu pistas seleccionadas"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/PropertyView/es-419.lproj/SoundView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSMenuItem"; title = "3"; ObjectID = "1xu-y0-sPc"; */ 2 | "1xu-y0-sPc.title" = "3"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "+ 0 db"; ObjectID = "5af-rM-3Vd"; */ 5 | "5af-rM-3Vd.title" = "+ 0 db"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "+6 db"; ObjectID = "5ZH-ms-h3O"; */ 8 | "5ZH-ms-h3O.title" = "+6 db"; 9 | 10 | /* Class = "NSTabViewItem"; label = "Sound Settings"; ObjectID = "6"; */ 11 | "6.label" = "Configuración de audio"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Fallback:"; ObjectID = "8KY-0L-cm1"; */ 14 | "8KY-0L-cm1.title" = "Alternativa:"; 15 | 16 | /* Class = "NSTabViewItem"; label = "Media Characteristics"; ObjectID = "22R-da-Q3B"; */ 17 | "22R-da-Q3B.label" = "Características del medio"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Alternate Group:"; ObjectID = "CTV-P7-IaD"; */ 20 | "CTV-P7-IaD.title" = "Grupo alternativo:"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Subtitles:"; ObjectID = "dbp-55-tUy"; */ 23 | "dbp-55-tUy.title" = "Subtítulos:"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "-∞ db"; ObjectID = "dCR-ej-bsH"; */ 26 | "dCR-ej-bsH.title" = "-∞ db"; 27 | 28 | /* Class = "NSMenuItem"; title = "4"; ObjectID = "e5A-Zf-BwW"; */ 29 | "e5A-Zf-BwW.title" = "4"; 30 | 31 | /* Class = "NSMenuItem"; title = "5"; ObjectID = "F8Z-GJ-QaV"; */ 32 | "F8Z-GJ-QaV.title" = "5"; 33 | 34 | /* Class = "NSMenuItem"; title = "1"; ObjectID = "mXc-eW-usD"; */ 35 | "mXc-eW-usD.title" = "1"; 36 | 37 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "QBa-Jt-TO2"; */ 38 | "QBa-Jt-TO2.title" = "Ninguno"; 39 | 40 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Qdb-gu-B3h"; */ 41 | "Qdb-gu-B3h.title" = "Ninguno"; 42 | 43 | /* Class = "NSMenuItem"; title = "6"; ObjectID = "RPZ-ZF-Pvg"; */ 44 | "RPZ-ZF-Pvg.title" = "6"; 45 | 46 | /* Class = "NSMenuItem"; title = "2"; ObjectID = "xjR-b6-VG2"; */ 47 | "xjR-b6-VG2.title" = "2"; 48 | 49 | /* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "Z5x-Oq-P8Z"; */ 50 | "Z5x-Oq-P8Z.title" = "Volumen:"; 51 | 52 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Zgh-b7-8aY"; */ 53 | "Zgh-b7-8aY.title" = "Ninguno"; 54 | 55 | -------------------------------------------------------------------------------- /Classes/PropertyView/fr.lproj/ChapterView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTabViewItem"; label = "Chapters"; ObjectID = "11"; */ 2 | "11.label" = "Chapitres"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Chapters"; ObjectID = "22"; */ 5 | "22.ibExternalAccessibilityDescription" = "Chapitres"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "24"; */ 8 | "24.headerCell.title" = "Heure"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "25"; */ 11 | "25.headerCell.title" = "Titre"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Delete selected chapter"; ObjectID = "31"; */ 14 | "31.ibShadowedToolTip" = "Supprimer le chapitre sélectionné"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Add chapter"; ObjectID = "42"; */ 17 | "42.ibShadowedToolTip" = "Ajouter un chapitre"; 18 | 19 | /* Class = "NSMenuItem"; title = "Rename every chapter"; ObjectID = "SOg-Lz-v5L"; */ 20 | "SOg-Lz-v5L.title" = "Renommer chaque chapitre"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/PropertyView/fr.lproj/MovieView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "4p7-7v-cUB"; */ 2 | "4p7-7v-cUB.title" = "Enregistrer"; 3 | 4 | /* Class = "NSTabViewItem"; label = "Metadata"; ObjectID = "11"; */ 5 | "11.label" = "Métadonnées"; 6 | 7 | /* Class = "NSTabViewItem"; label = "Artwork"; ObjectID = "15"; */ 8 | "15.label" = "Illustration"; 9 | 10 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 11 | "30.ibExternalAccessibilityDescription" = "Ajouter un élément de métadonnées"; 12 | 13 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 14 | "30.ibShadowedToolTip" = "Ajouter un nouvel élément de métadonnées"; 15 | 16 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibExternalAccessibilityDescription" = "Retirer l'élément sélectionné"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 20 | "53.ibShadowedToolTip" = "Retirer l'élément sélectionné"; 21 | 22 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 23 | "179.ibExternalAccessibilityDescription" = "Ensembles"; 24 | 25 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "aiW-0y-PWH"; */ 26 | "aiW-0y-PWH.title" = "Conserver les annotations existantes"; 27 | 28 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "doa-uZ-CNr"; */ 29 | "doa-uZ-CNr.title" = "Conserver les illustrations existantes"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 32 | "j7q-XE-YXB.headerCell.title" = "Annotation"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 35 | "os0-Yb-exW.headerCell.title" = "Valeur"; 36 | 37 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 38 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "Métadonnées"; 39 | 40 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "sNX-Z3-AtD"; */ 41 | "sNX-Z3-AtD.title" = "Annuler"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "ZqF-j8-NeN"; */ 44 | "ZqF-j8-NeN.title" = "Nom :"; 45 | 46 | /* Class = "NSWindow"; title = "Window"; ObjectID = "ZRj-hi-qeJ"; */ 47 | "ZRj-hi-qeJ.title" = "Fenêtre"; 48 | 49 | -------------------------------------------------------------------------------- /Classes/PropertyView/fr.lproj/MultiSelectView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "%lu tracks selected"; ObjectID = "Mo5-ii-LsO"; */ 2 | "Mo5-ii-LsO.title" = "%lu pistes sélectionnées"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/PropertyView/fr.lproj/SoundView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSMenuItem"; title = "3"; ObjectID = "1xu-y0-sPc"; */ 2 | "1xu-y0-sPc.title" = "3"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "+ 0 db"; ObjectID = "5af-rM-3Vd"; */ 5 | "5af-rM-3Vd.title" = "+ 0 dB"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "+6 db"; ObjectID = "5ZH-ms-h3O"; */ 8 | "5ZH-ms-h3O.title" = "+6 dB"; 9 | 10 | /* Class = "NSTabViewItem"; label = "Sound Settings"; ObjectID = "6"; */ 11 | "6.label" = "Paramètres sonores"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Fallback:"; ObjectID = "8KY-0L-cm1"; */ 14 | "8KY-0L-cm1.title" = "Solution de repli :"; 15 | 16 | /* Class = "NSTabViewItem"; label = "Media Characteristics"; ObjectID = "22R-da-Q3B"; */ 17 | "22R-da-Q3B.label" = "Caractéristiques du média"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Alternate Group:"; ObjectID = "CTV-P7-IaD"; */ 20 | "CTV-P7-IaD.title" = "Groupe alternatif :"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Subtitles:"; ObjectID = "dbp-55-tUy"; */ 23 | "dbp-55-tUy.title" = "Sous-titres :"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "-∞ db"; ObjectID = "dCR-ej-bsH"; */ 26 | "dCR-ej-bsH.title" = "-∞ dB"; 27 | 28 | /* Class = "NSMenuItem"; title = "4"; ObjectID = "e5A-Zf-BwW"; */ 29 | "e5A-Zf-BwW.title" = "4"; 30 | 31 | /* Class = "NSMenuItem"; title = "5"; ObjectID = "F8Z-GJ-QaV"; */ 32 | "F8Z-GJ-QaV.title" = "5"; 33 | 34 | /* Class = "NSMenuItem"; title = "1"; ObjectID = "mXc-eW-usD"; */ 35 | "mXc-eW-usD.title" = "1"; 36 | 37 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "QBa-Jt-TO2"; */ 38 | "QBa-Jt-TO2.title" = "Aucun"; 39 | 40 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Qdb-gu-B3h"; */ 41 | "Qdb-gu-B3h.title" = "Aucun"; 42 | 43 | /* Class = "NSMenuItem"; title = "6"; ObjectID = "RPZ-ZF-Pvg"; */ 44 | "RPZ-ZF-Pvg.title" = "6"; 45 | 46 | /* Class = "NSMenuItem"; title = "2"; ObjectID = "xjR-b6-VG2"; */ 47 | "xjR-b6-VG2.title" = "2"; 48 | 49 | /* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "Z5x-Oq-P8Z"; */ 50 | "Z5x-Oq-P8Z.title" = "Volume :"; 51 | 52 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Zgh-b7-8aY"; */ 53 | "Zgh-b7-8aY.title" = "Aucun"; 54 | 55 | -------------------------------------------------------------------------------- /Classes/PropertyView/it.lproj/ChapterView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTabViewItem"; label = "Chapters"; ObjectID = "11"; */ 2 | "11.label" = "Capitoli"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Chapters"; ObjectID = "22"; */ 5 | "22.ibExternalAccessibilityDescription" = "Capitoli"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "24"; */ 8 | "24.headerCell.title" = "Tempo"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "25"; */ 11 | "25.headerCell.title" = "Titolo"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Delete selected chapter"; ObjectID = "31"; */ 14 | "31.ibShadowedToolTip" = "Elimina il capitolo selezionato"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Add chapter"; ObjectID = "42"; */ 17 | "42.ibShadowedToolTip" = "Aggiungi capitolo"; 18 | 19 | /* Class = "NSMenuItem"; title = "Rename every chapter"; ObjectID = "SOg-Lz-v5L"; */ 20 | "SOg-Lz-v5L.title" = "Rinomina ogni capitolo"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/PropertyView/it.lproj/EmptyView.strings: -------------------------------------------------------------------------------- 1 | /* No Localized Strings */ 2 | -------------------------------------------------------------------------------- /Classes/PropertyView/it.lproj/MovieView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "4p7-7v-cUB"; */ 2 | "4p7-7v-cUB.title" = "Salva"; 3 | 4 | /* Class = "NSTabViewItem"; label = "Metadata"; ObjectID = "11"; */ 5 | "11.label" = "Metadata"; 6 | 7 | /* Class = "NSTabViewItem"; label = "Artwork"; ObjectID = "15"; */ 8 | "15.label" = "Illustrazione"; 9 | 10 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 11 | "30.ibExternalAccessibilityDescription" = "Aggiungi elemento metadata"; 12 | 13 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 14 | "30.ibShadowedToolTip" = "Aggiungi un nuovo elemento metadata"; 15 | 16 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibExternalAccessibilityDescription" = "Rimuovi l'elemento selezionato"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 20 | "53.ibShadowedToolTip" = "Rimuovi l'elemento selezionato"; 21 | 22 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 23 | "179.ibExternalAccessibilityDescription" = "Preset"; 24 | 25 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "aiW-0y-PWH"; */ 26 | "aiW-0y-PWH.title" = "Mantieni le annotazioni esistenti"; 27 | 28 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "doa-uZ-CNr"; */ 29 | "doa-uZ-CNr.title" = "Mantieni le illustrazioni esistenti"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 32 | "j7q-XE-YXB.headerCell.title" = "Annotazione"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 35 | "os0-Yb-exW.headerCell.title" = "Valore"; 36 | 37 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 38 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "Metadata"; 39 | 40 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "sNX-Z3-AtD"; */ 41 | "sNX-Z3-AtD.title" = "Annulla"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "ZqF-j8-NeN"; */ 44 | "ZqF-j8-NeN.title" = "Nome:"; 45 | 46 | -------------------------------------------------------------------------------- /Classes/PropertyView/it.lproj/MultiSelectView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "%lu tracks selected"; ObjectID = "Mo5-ii-LsO"; */ 2 | "Mo5-ii-LsO.title" = "%lu tracce selezionate"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/PropertyView/it.lproj/SoundView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSMenuItem"; title = "3"; ObjectID = "1xu-y0-sPc"; */ 2 | "1xu-y0-sPc.title" = "3"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "+ 0 db"; ObjectID = "5af-rM-3Vd"; */ 5 | "5af-rM-3Vd.title" = "+ 0 db"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "+6 db"; ObjectID = "5ZH-ms-h3O"; */ 8 | "5ZH-ms-h3O.title" = "+6 db"; 9 | 10 | /* Class = "NSTabViewItem"; label = "Sound Settings"; ObjectID = "6"; */ 11 | "6.label" = "Impostazioni audio"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Fallback:"; ObjectID = "8KY-0L-cm1"; */ 14 | "8KY-0L-cm1.title" = "Ripiego:"; 15 | 16 | /* Class = "NSTabViewItem"; label = "Media Characteristics"; ObjectID = "22R-da-Q3B"; */ 17 | "22R-da-Q3B.label" = "Caratteristiche media"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Alternate Group:"; ObjectID = "CTV-P7-IaD"; */ 20 | "CTV-P7-IaD.title" = "Gruppo di alternative:"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Subtitles:"; ObjectID = "dbp-55-tUy"; */ 23 | "dbp-55-tUy.title" = "Sottotitoli:"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "-∞ db"; ObjectID = "dCR-ej-bsH"; */ 26 | "dCR-ej-bsH.title" = "-∞ db"; 27 | 28 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "QBa-Jt-TO2"; */ 29 | "QBa-Jt-TO2.title" = "Nessuno"; 30 | 31 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Qdb-gu-B3h"; */ 32 | "Qdb-gu-B3h.title" = "Nessuno"; 33 | 34 | /* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "Z5x-Oq-P8Z"; */ 35 | "Z5x-Oq-P8Z.title" = "Volume:"; 36 | 37 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Zgh-b7-8aY"; */ 38 | "Zgh-b7-8aY.title" = "Nessuno"; 39 | 40 | -------------------------------------------------------------------------------- /Classes/PropertyView/zh-Hans.lproj/ChapterView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTabViewItem"; label = "Chapters"; ObjectID = "11"; */ 2 | "11.label" = "章节"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Chapters"; ObjectID = "22"; */ 5 | "22.ibExternalAccessibilityDescription" = "章节"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "24"; */ 8 | "24.headerCell.title" = "时间"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "25"; */ 11 | "25.headerCell.title" = "标题"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Delete selected chapter"; ObjectID = "31"; */ 14 | "31.ibShadowedToolTip" = "删除所选章节"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Add chapter"; ObjectID = "42"; */ 17 | "42.ibShadowedToolTip" = "添加章节"; 18 | 19 | /* Class = "NSMenuItem"; title = "Rename every chapter"; ObjectID = "SOg-Lz-v5L"; */ 20 | "SOg-Lz-v5L.title" = "重命名所有章节"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/PropertyView/zh-Hans.lproj/MovieView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "4p7-7v-cUB"; */ 2 | "4p7-7v-cUB.title" = "存储"; 3 | 4 | /* Class = "NSTabViewItem"; label = "Metadata"; ObjectID = "11"; */ 5 | "11.label" = "元数据"; 6 | 7 | /* Class = "NSTabViewItem"; label = "Artwork"; ObjectID = "15"; */ 8 | "15.label" = "插图"; 9 | 10 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 11 | "30.ibExternalAccessibilityDescription" = "添加元数据条目"; 12 | 13 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 14 | "30.ibShadowedToolTip" = "添加一个新的元数据条目"; 15 | 16 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibExternalAccessibilityDescription" = "移除所选项"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 20 | "53.ibShadowedToolTip" = "移除所选项"; 21 | 22 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 23 | "179.ibExternalAccessibilityDescription" = "预设"; 24 | 25 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "aiW-0y-PWH"; */ 26 | "aiW-0y-PWH.title" = "保留现有注释"; 27 | 28 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "doa-uZ-CNr"; */ 29 | "doa-uZ-CNr.title" = "保留现有插图"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 32 | "j7q-XE-YXB.headerCell.title" = "注释"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 35 | "os0-Yb-exW.headerCell.title" = "值"; 36 | 37 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 38 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "元数据"; 39 | 40 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "sNX-Z3-AtD"; */ 41 | "sNX-Z3-AtD.title" = "取消"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "ZqF-j8-NeN"; */ 44 | "ZqF-j8-NeN.title" = "名称:"; 45 | 46 | /* Class = "NSWindow"; title = "Window"; ObjectID = "ZRj-hi-qeJ"; */ 47 | "ZRj-hi-qeJ.title" = "窗口"; 48 | 49 | -------------------------------------------------------------------------------- /Classes/PropertyView/zh-Hans.lproj/MultiSelectView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "%lu tracks selected"; ObjectID = "Mo5-ii-LsO"; */ 2 | "Mo5-ii-LsO.title" = "已选中 %lu 个轨道"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/PropertyView/zh-Hans.lproj/SoundView.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSMenuItem"; title = "3"; ObjectID = "1xu-y0-sPc"; */ 2 | "1xu-y0-sPc.title" = "3"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "+ 0 db"; ObjectID = "5af-rM-3Vd"; */ 5 | "5af-rM-3Vd.title" = "+0 db"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "+6 db"; ObjectID = "5ZH-ms-h3O"; */ 8 | "5ZH-ms-h3O.title" = "+6 db"; 9 | 10 | /* Class = "NSTabViewItem"; label = "Sound Settings"; ObjectID = "6"; */ 11 | "6.label" = "声音设置"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Fallback:"; ObjectID = "8KY-0L-cm1"; */ 14 | "8KY-0L-cm1.title" = "回退:"; 15 | 16 | /* Class = "NSTabViewItem"; label = "Media Characteristics"; ObjectID = "22R-da-Q3B"; */ 17 | "22R-da-Q3B.label" = "媒体特征"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Alternate Group:"; ObjectID = "CTV-P7-IaD"; */ 20 | "CTV-P7-IaD.title" = "轨道分组:"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Subtitles:"; ObjectID = "dbp-55-tUy"; */ 23 | "dbp-55-tUy.title" = "字幕:"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "-∞ db"; ObjectID = "dCR-ej-bsH"; */ 26 | "dCR-ej-bsH.title" = "-∞ db"; 27 | 28 | /* Class = "NSMenuItem"; title = "4"; ObjectID = "e5A-Zf-BwW"; */ 29 | "e5A-Zf-BwW.title" = "4"; 30 | 31 | /* Class = "NSMenuItem"; title = "5"; ObjectID = "F8Z-GJ-QaV"; */ 32 | "F8Z-GJ-QaV.title" = "5"; 33 | 34 | /* Class = "NSMenuItem"; title = "1"; ObjectID = "mXc-eW-usD"; */ 35 | "mXc-eW-usD.title" = "1"; 36 | 37 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "QBa-Jt-TO2"; */ 38 | "QBa-Jt-TO2.title" = "无"; 39 | 40 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Qdb-gu-B3h"; */ 41 | "Qdb-gu-B3h.title" = "无"; 42 | 43 | /* Class = "NSMenuItem"; title = "6"; ObjectID = "RPZ-ZF-Pvg"; */ 44 | "RPZ-ZF-Pvg.title" = "6"; 45 | 46 | /* Class = "NSMenuItem"; title = "2"; ObjectID = "xjR-b6-VG2"; */ 47 | "xjR-b6-VG2.title" = "2"; 48 | 49 | /* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "Z5x-Oq-P8Z"; */ 50 | "Z5x-Oq-P8Z.title" = "音量:"; 51 | 52 | /* Class = "NSMenuItem"; title = "None"; ObjectID = "Zgh-b7-8aY"; */ 53 | "Zgh-b7-8aY.title" = "无"; 54 | 55 | -------------------------------------------------------------------------------- /Classes/QueuePreset.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QueuePreset.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 21/08/2017. 6 | // 7 | 8 | import Foundation 9 | 10 | final class QueuePreset: Preset { 11 | 12 | var title: String 13 | let options: [String : Any] 14 | 15 | let version: Int 16 | var changed: Bool 17 | 18 | var pathExtension: String { 19 | return "sbqueuepreset" 20 | } 21 | 22 | init(title: String, options: [String : Any]) { 23 | self.title = title 24 | self.options = options 25 | self.changed = true 26 | self.version = 1 27 | } 28 | 29 | // MARK: NSCoding 30 | 31 | static var supportsSecureCoding: Bool { 32 | return true 33 | } 34 | 35 | func encode(with aCoder: NSCoder) { 36 | 37 | } 38 | 39 | required init?(coder aDecoder: NSCoder) { 40 | fatalError() 41 | } 42 | 43 | // MARK: NSCopying 44 | 45 | func copy(with zone: NSZone? = nil) -> Any { 46 | return QueuePreset(title: title, options: options) 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Classes/QueueScriptCommand.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QueueScriptCommand.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 16/03/2018. 6 | // 7 | 8 | import Foundation 9 | 10 | @objc(SBQueueScriptCommand) class QueueScriptCommand: NSScriptCommand { 11 | 12 | @MainActor override func performDefaultImplementation() -> Any? { 13 | guard let args = directParameter as? [URL] else { return nil } 14 | QueueController.shared.insert(contentOf: args, at: QueueController.shared.count) 15 | return nil 16 | } 17 | 18 | } 19 | 20 | @objc(SBQueueStartAndWaitScriptCommand) class QueueStartAndWaitScriptCommand: NSScriptCommand { 21 | 22 | @MainActor override func performDefaultImplementation() -> Any? { 23 | QueueController.shared.add(script: self) 24 | QueueController.shared.start(self) 25 | self.suspendExecution() 26 | return nil 27 | } 28 | 29 | } 30 | 31 | @objc(SBQueueStartScriptCommand) class QueueStartScriptCommand: NSScriptCommand { 32 | 33 | @MainActor override func performDefaultImplementation() -> Any? { 34 | QueueController.shared.start(self) 35 | return nil 36 | } 37 | 38 | } 39 | 40 | @objc(SBQueueStopScriptCommand) class QueueStopScriptCommand: NSScriptCommand { 41 | 42 | @MainActor override func performDefaultImplementation() -> Any? { 43 | QueueController.shared.stop(self) 44 | return nil 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /Classes/SaveOptions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SaveOptions.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 08/02/2018. 6 | // 7 | 8 | import Cocoa 9 | import MP42Foundation 10 | 11 | final class SaveOptions: NSViewController { 12 | 13 | @IBOutlet var fileFormat: NSPopUpButton! 14 | 15 | @IBOutlet var _64bit_data: NSButton! 16 | @IBOutlet var _64bit_time: NSButton! 17 | @IBOutlet var optimize: NSButton! 18 | 19 | private weak var doc: Document? 20 | private weak var savePanel: NSSavePanel? 21 | 22 | init(doc: Document, savePanel: NSSavePanel) { 23 | self.doc = doc 24 | self.savePanel = savePanel 25 | super.init(nibName: nil, bundle: nil) 26 | } 27 | 28 | required init?(coder: NSCoder) { 29 | fatalError("init(coder:) has not been implemented") 30 | } 31 | 32 | override var nibName: NSNib.Name? { 33 | return "SaveOptions" 34 | } 35 | 36 | override func viewDidLoad() { 37 | super.viewDidLoad() 38 | 39 | guard let doc = doc else { return } 40 | 41 | let formats = doc.writableTypes(for: .saveAsOperation) 42 | fileFormat.removeAllItems() 43 | 44 | for format in formats { 45 | let name = UTTypeCopyDescription(format as CFString)?.takeRetainedValue() as String? ?? format 46 | fileFormat.addItem(withTitle: name) 47 | } 48 | 49 | fileFormat.selectItem(at: Prefs.defaultSaveFormat) 50 | savePanel?.allowedFileTypes = [Prefs.saveFormat] 51 | 52 | if let filename = doc.mp4.preferredFileName() { 53 | savePanel?.nameFieldStringValue = filename 54 | } 55 | 56 | _64bit_data.state = Prefs.mp464bitOffset ? .on : .off 57 | _64bit_time.state = Prefs.mp464bitTimes ? .on : .off 58 | optimize.state = Prefs.mp4SaveAsOptimize ? .on : .off 59 | 60 | if doc.mp4.dataSize > 3900000000 { 61 | _64bit_data.state = .on 62 | } 63 | } 64 | 65 | func saveUserDefaults() 66 | { 67 | Prefs.defaultSaveFormat = fileFormat.indexOfSelectedItem 68 | Prefs.mp464bitOffset = _64bit_data.state == .on 69 | Prefs.mp464bitTimes = _64bit_time.state == .on 70 | Prefs.mp4SaveAsOptimize = optimize.state == .on 71 | } 72 | 73 | override func viewWillDisappear() { 74 | super.viewWillDisappear() 75 | saveUserDefaults() 76 | } 77 | 78 | @IBAction func setSaveFormat(_ sender: NSPopUpButton) { 79 | var requiredFileType = MP42FileTypeM4V 80 | switch sender.indexOfSelectedItem { 81 | case 0: 82 | requiredFileType = MP42FileTypeM4V 83 | case 1: 84 | requiredFileType = MP42FileTypeMP4 85 | case 2: 86 | requiredFileType = MP42FileTypeM4A 87 | case 3: 88 | requiredFileType = MP42FileTypeM4B 89 | case 4: 90 | requiredFileType = MP42FileTypeM4R 91 | default: 92 | break 93 | } 94 | savePanel?.allowedFileTypes = [requiredFileType] 95 | Prefs.saveFormat = requiredFileType 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /Classes/TokenCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TokenCellView.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 06/03/2018. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class TokenCellView : NSTableCellView { 11 | @IBOutlet var tokenView: NSTokenField! 12 | } 13 | -------------------------------------------------------------------------------- /Classes/TokenFieldCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TokenFieldCell.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 20/10/2017. 6 | // 7 | 8 | import Cocoa 9 | 10 | final class TokenFieldCell : NSTokenFieldCell { 11 | 12 | private var originalBackgroundStyle: NSView.BackgroundStyle = NSView.BackgroundStyle.normal 13 | 14 | override var backgroundStyle: NSView.BackgroundStyle { 15 | get { 16 | return super.backgroundStyle 17 | } 18 | set (newBackgroundStyle) { 19 | super.backgroundStyle = newBackgroundStyle 20 | if newBackgroundStyle == NSView.BackgroundStyle.emphasized { 21 | textColor = NSColor.controlHighlightColor 22 | } else { 23 | textColor = NSColor.controlTextColor 24 | } 25 | } 26 | } 27 | 28 | override func setUpFieldEditorAttributes(_ textObj: NSText) -> NSText { 29 | originalBackgroundStyle = backgroundStyle 30 | backgroundStyle = NSView.BackgroundStyle.normal 31 | drawsBackground = true 32 | return super.setUpFieldEditorAttributes(textObj) 33 | } 34 | 35 | override func endEditing(_ textObj: NSText) { 36 | super.endEditing(textObj) 37 | drawsBackground = false 38 | backgroundStyle = originalBackgroundStyle 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Classes/TokensViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TokensViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 01/12/2017. 6 | // 7 | 8 | import Cocoa 9 | import MP42Foundation 10 | 11 | class TokensViewController: NSViewController, NSTextFieldDelegate { 12 | 13 | @IBOutlet var tokenField: NSTokenField! 14 | let tokens: [Token] 15 | let tokenDelegate: TokenDelegate 16 | 17 | override var nibName: NSNib.Name? { 18 | return "TokensViewController" 19 | } 20 | 21 | init(tokens: [String]) { 22 | self.tokens = tokens.map { Token(text: "{\($0)}") } 23 | 24 | let separators: CharacterSet = CharacterSet(charactersIn: "{}") 25 | self.tokenDelegate = TokenDelegate(displayMenu: false, displayString: { localizedMetadataKeyName($0.text.trimmingCharacters(in: separators)) }) 26 | 27 | super.init(nibName: nil, bundle: nil) 28 | } 29 | 30 | required init?(coder: NSCoder) { 31 | fatalError("init(coder:) has not been implemented") 32 | } 33 | 34 | override func viewDidLoad() { 35 | super.viewDidLoad() 36 | 37 | tokenField.delegate = tokenDelegate 38 | tokenField.tokenizingCharacterSet = CharacterSet(charactersIn: "/") 39 | tokenField.objectValue = tokens 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Classes/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Subler 4 | // 5 | // Created by Damiano Galassi on 07/08/2019. 6 | // 7 | 8 | import Cocoa 9 | 10 | class ViewController: NSViewController, NSWindowDelegate { 11 | 12 | // MARK: - Interface Builder 13 | 14 | @IBInspectable var autosave: String? 15 | 16 | // MARK: - NSViewController 17 | 18 | override func viewWillAppear() { 19 | super.viewWillAppear() 20 | 21 | guard let window = self.view.window, let saveName = autosave else { return } 22 | 23 | window.delegate = self 24 | window.setFrameUsingName(saveName) 25 | } 26 | 27 | // MARK: - NSWindowDelegate 28 | 29 | func windowDidEndLiveResize(_ notification: Notification) { 30 | guard let saveName = autosave else { 31 | return 32 | } 33 | self.view.window?.saveFrame(usingName: saveName) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/DocumentWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Window"; ObjectID = "s5f-yH-26m"; */ 2 | "s5f-yH-26m.title" = "Ventana"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/MetadataPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Annotations"; ObjectID = "6um-Rw-luk"; */ 2 | "6um-Rw-luk.headerCell.title" = "Propiedad"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep empty annotations"; ObjectID = "7Ek-lI-5Lo"; */ 5 | "7Ek-lI-5Lo.title" = "Mantener propiedades vacías"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "Aj4-bk-6RK"; */ 8 | "Aj4-bk-6RK.headerCell.title" = "Valor"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Map the providers' metadata to the MP4 annotations"; ObjectID = "cUW-9F-EvO"; */ 11 | "cUW-9F-EvO.title" = "Asigna metadatos de proveedores a las propiedades MP4."; 12 | 13 | /* Class = "CocoaBindingsConnection"; ibShadowedIsNilPlaceholder = "Null"; ObjectID = "dgq-hT-1Vg"; */ 14 | "dgq-hT-1Vg.ibShadowedIsNilPlaceholder" = "Nulo"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Type"; ObjectID = "gwa-XG-q0L"; */ 17 | "gwa-XG-q0L.headerCell.title" = "Tipo"; 18 | 19 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add annotation"; ObjectID = "Jdh-Cj-6ef"; */ 20 | "Jdh-Cj-6ef.ibShadowedToolTip" = "Agregar propiedad"; 21 | 22 | /* Class = "NSButtonCell"; title = "Restore Defaults"; ObjectID = "nBh-jv-KDG"; */ 23 | "nBh-jv-KDG.title" = "Restablecer valores predeterminados"; 24 | 25 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata type"; ObjectID = "nXW-oy-rtu"; */ 26 | "nXW-oy-rtu.ibExternalAccessibilityDescription" = "Tipo de metadatos"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "Available values:"; ObjectID = "OYx-Dd-YIf"; */ 29 | "OYx-Dd-YIf.title" = "Valores disponibles:"; 30 | 31 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "sd5-qb-K5v"; */ 32 | "sd5-qb-K5v.ibShadowedToolTip" = "Eliminar propiedad"; 33 | 34 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata map"; ObjectID = "Tid-Rc-Ljr"; */ 35 | "Tid-Rc-Ljr.ibExternalAccessibilityDescription" = "Asignación de metadatos"; 36 | 37 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/OCRPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Language data files"; ObjectID = "7YG-8f-1AH"; */ 2 | "7YG-8f-1AH.headerCell.title" = "Archivos de datos de idioma"; 3 | 4 | /* Class = "NSButtonCell"; title = "Get"; ObjectID = "DIS-cU-NvL"; */ 5 | "DIS-cU-NvL.title" = "Obtener"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Language specific OCR data files can improve the optical character recognition results."; ObjectID = "LFI-zD-ohi"; */ 8 | "LFI-zD-ohi.title" = "Los archivos de datos OCR específicos del idioma pueden mejorar los resultados de reconocimiento óptico de caracteres."; 9 | 10 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/OffsetViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Offset:"; ObjectID = "1MN-KJ-v23"; */ 2 | "1MN-KJ-v23.title" = "Desplazamiento:"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "ms"; ObjectID = "nxC-E2-XnZ"; */ 5 | "nxC-E2-XnZ.title" = "ms"; 6 | 7 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "Ypd-2w-xig"; */ 8 | "Ypd-2w-xig.title" = "Cancelar"; 9 | 10 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "zRv-hv-PCL"; */ 11 | "zRv-hv-PCL.title" = "OK"; 12 | 13 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/OutputPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Set the format to create a custom filename in the Save As… panel and in the queue."; ObjectID = "hE3-zH-XFE"; */ 2 | "hE3-zH-XFE.title" = "Establece un formato personalizado de nombres para los archivos que vayan a guardarse desde el panel «Guardar como…» o desde la cola."; 3 | 4 | /* Class = "NSButtonCell"; title = "Set filename of TV Shows to:"; ObjectID = "kQC-bu-0by"; */ 5 | "kQC-bu-0by.title" = "Formato de nombre de archivo para Programas de TV:"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set filename of Movies to:"; ObjectID = "wci-gO-GWT"; */ 8 | "wci-gO-GWT.title" = "Formato de nombre de archivo para Películas:"; 9 | 10 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/PresetEditorViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "0nh-AI-EEk"; */ 2 | "0nh-AI-EEk.title" = "Mantener propiedades existentes"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "2ur-nu-rZh"; */ 5 | "2ur-nu-rZh.title" = "Mantener ilustraciones existentes"; 6 | 7 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 8 | "30.ibExternalAccessibilityDescription" = "Agregar propiedad"; 9 | 10 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 11 | "30.ibShadowedToolTip" = "Agregar propiedad"; 12 | 13 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 14 | "53.ibExternalAccessibilityDescription" = "Eliminar propiedad"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibShadowedToolTip" = "Eliminar propiedad"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Dismiss"; ObjectID = "87e-za-hJV"; */ 20 | "87e-za-hJV.ibShadowedToolTip" = "Cerrar"; 21 | 22 | /* Class = "NSWindow"; title = "Window"; ObjectID = "167"; */ 23 | "167.title" = "Ventana"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "174"; */ 26 | "174.title" = "Nombre:"; 27 | 28 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "177"; */ 29 | "177.title" = "Guardar"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "178"; */ 32 | "178.title" = "Cancelar"; 33 | 34 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 35 | "179.ibExternalAccessibilityDescription" = "Preset"; 36 | 37 | /* Class = "NSButton"; ibShadowedToolTip = "Add an artwork"; ObjectID = "223"; */ 38 | "223.ibShadowedToolTip" = "Agregar ilustración"; 39 | 40 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected artwork"; ObjectID = "226"; */ 41 | "226.ibShadowedToolTip" = "Eliminar ilustración seleccionada"; 42 | 43 | /* Class = "NSSlider"; ibShadowedToolTip = "Change artworks view zoom"; ObjectID = "235"; */ 44 | "235.ibShadowedToolTip" = "Cambiar tamaño de visualización de la ilustración"; 45 | 46 | /* Class = "NSTextFieldCell"; title = "Title"; ObjectID = "CD8-S4-C35"; */ 47 | "CD8-S4-C35.title" = "Título"; 48 | 49 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "CHk-xu-U9f"; */ 50 | "CHk-xu-U9f.title" = "Mantener ilustraciones existentes"; 51 | 52 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 53 | "j7q-XE-YXB.headerCell.title" = "Propiedad"; 54 | 55 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "KxJ-Zr-uiZ"; */ 56 | "KxJ-Zr-uiZ.title" = "Mantener propiedades existentes"; 57 | 58 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 59 | "os0-Yb-exW.headerCell.title" = "Valor"; 60 | 61 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 62 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "Metadatos"; 63 | 64 | /* Class = "NSTextField"; ibExternalAccessibilityDescription = "Preset Title"; ObjectID = "RvM-No-Mwg"; */ 65 | "RvM-No-Mwg.ibExternalAccessibilityDescription" = "Título del preset"; 66 | 67 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "xfY-4F-IAd"; */ 68 | "xfY-4F-IAd.title" = "Cerrar"; 69 | 70 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/PresetPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Edit selected set"; ObjectID = "C1d-lu-T7S"; */ 2 | "C1d-lu-T7S.ibShadowedToolTip" = "Editar preset"; 3 | 4 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "gBf-6T-hQv"; */ 5 | "gBf-6T-hQv.ibShadowedToolTip" = "Eliminar preset"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "iRF-P7-a3Q"; */ 8 | "iRF-P7-a3Q.ibExternalAccessibilityDescription" = "Preset"; 9 | 10 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "SIg-lA-6FA"; */ 11 | "SIg-lA-6FA.ibShadowedToolTip" = "Eliminar preset"; 12 | 13 | /* Class = "NSButtonCell"; title = "Edit"; ObjectID = "W45-Bf-XCJ"; */ 14 | "W45-Bf-XCJ.title" = "Editar"; 15 | 16 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/ProgressViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Saving…"; ObjectID = "1QY-aq-f1i"; */ 2 | "1QY-aq-f1i.title" = "Guardando…"; 3 | 4 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "13i-3e-aOA"; */ 5 | "13i-3e-aOA.title" = "Cancelar"; 6 | 7 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/SaveOptions.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Note: don't use this option if you are not sure of what it is doing, it's not needed in almost every case.\nEnable 64bit timescale and duration support. Normally, it's only needed if a track will be longer than 10 hours."; ObjectID = "3CX-Vp-T0h"; */ 2 | "3CX-Vp-T0h.ibShadowedToolTip" = "Nota: no uses esta opción si no sabes bien lo que estás haciendo, no es necesaria en la mayoría de los casos.\nHabilita la escala de tiempo de 64 bits y el soporte de duración. Normalmente, solo es necesario si una pista dura más de 10 horas."; 3 | 4 | /* Class = "NSButtonCell"; title = "64 bits chunk offset"; ObjectID = "14x-xv-HKI"; */ 5 | "14x-xv-HKI.title" = "Desplazamiento de bloque de 64 bits"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Options:"; ObjectID = "BXP-AU-x3T"; */ 8 | "BXP-AU-x3T.title" = "Opciones:"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "File Format:"; ObjectID = "caN-zU-chS"; */ 11 | "caN-zU-chS.title" = "Formato de archivo:"; 12 | 13 | /* Class = "NSButtonCell"; title = "64 bits times"; ObjectID = "DCI-a5-K73"; */ 14 | "DCI-a5-K73.title" = "Duración de 64 bits"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Needed for mp4 larger than 4GB."; ObjectID = "emp-1S-F7H"; */ 17 | "emp-1S-F7H.ibShadowedToolTip" = "Necesario para mp4 de más de 4 GB"; 18 | 19 | /* Class = "NSButtonCell"; title = "Optimize"; ObjectID = "OZC-sc-82O"; */ 20 | "OZC-sc-82O.title" = "Optimizar"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/es-419.lproj/TracksViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "0dC-Ux-mUt"; */ 2 | "0dC-Ux-mUt.headerCell.title" = "Duración"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "3zj-cH-wWV"; */ 5 | "3zj-cH-wWV.headerCell.title" = "Nombre"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Tracks"; ObjectID = "Bpi-e7-pHx"; */ 8 | "Bpi-e7-pHx.ibExternalAccessibilityDescription" = "Pistas"; 9 | 10 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Enabled"; ObjectID = "JD5-tO-uQc"; */ 11 | "JD5-tO-uQc.ibExternalAccessibilityDescription" = "Activado"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Enable or disable the track"; ObjectID = "JD5-tO-uQc"; */ 14 | "JD5-tO-uQc.ibShadowedToolTip" = "Activar o desactivar pista"; 15 | 16 | /* Class = "NSTextFieldCell"; title = "00:00:00"; ObjectID = "LAW-aU-7Ie"; */ 17 | "LAW-aU-7Ie.title" = "00:00:00"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Text"; ObjectID = "LgC-JT-Lsx"; */ 20 | "LgC-JT-Lsx.title" = "Texto"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "qGd-Uo-RvP"; */ 23 | "qGd-Uo-RvP.headerCell.title" = "Idioma"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "sB1-FL-VRd"; */ 26 | "sB1-FL-VRd.headerCell.title" = "Id"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Format"; ObjectID = "vmh-dT-zIv"; */ 29 | "vmh-dT-zIv.headerCell.title" = "Formato"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Enabled"; ObjectID = "Znw-bQ-tsE"; */ 32 | "Znw-bQ-tsE.headerCell.title" = "Activado"; 33 | 34 | -------------------------------------------------------------------------------- /Classes/fr.lproj/DocumentWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Window"; ObjectID = "s5f-yH-26m"; */ 2 | "s5f-yH-26m.title" = "Fenêtre"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/fr.lproj/MetadataPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Annotations"; ObjectID = "6um-Rw-luk"; */ 2 | "6um-Rw-luk.headerCell.title" = "Annotations"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep empty annotations"; ObjectID = "7Ek-lI-5Lo"; */ 5 | "7Ek-lI-5Lo.title" = "Conserver les annotations vides"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "Aj4-bk-6RK"; */ 8 | "Aj4-bk-6RK.headerCell.title" = "Valeur"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Map the providers' metadata to the MP4 annotations"; ObjectID = "cUW-9F-EvO"; */ 11 | "cUW-9F-EvO.title" = "Faire correspondre les métadonnées du fournisseur aux annotations MP4"; 12 | 13 | /* Class = "CocoaBindingsConnection"; ibShadowedIsNilPlaceholder = "Null"; ObjectID = "dgq-hT-1Vg"; */ 14 | "dgq-hT-1Vg.ibShadowedIsNilPlaceholder" = "Invalide"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Type"; ObjectID = "gwa-XG-q0L"; */ 17 | "gwa-XG-q0L.headerCell.title" = "Type"; 18 | 19 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add annotation"; ObjectID = "Jdh-Cj-6ef"; */ 20 | "Jdh-Cj-6ef.ibShadowedToolTip" = "Ajouter une annotation"; 21 | 22 | /* Class = "NSButtonCell"; title = "Restore Defaults"; ObjectID = "nBh-jv-KDG"; */ 23 | "nBh-jv-KDG.title" = "Rétablir les valeurs par défaut"; 24 | 25 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata type"; ObjectID = "nXW-oy-rtu"; */ 26 | "nXW-oy-rtu.ibExternalAccessibilityDescription" = "Type de métadonnées"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "Available values:"; ObjectID = "OYx-Dd-YIf"; */ 29 | "OYx-Dd-YIf.title" = "Valeurs disponibles :"; 30 | 31 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "sd5-qb-K5v"; */ 32 | "sd5-qb-K5v.ibShadowedToolTip" = "Retirer l'élément sélectionné"; 33 | 34 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata map"; ObjectID = "Tid-Rc-Ljr"; */ 35 | "Tid-Rc-Ljr.ibExternalAccessibilityDescription" = "Correspondance des métadonnées"; 36 | 37 | -------------------------------------------------------------------------------- /Classes/fr.lproj/OCRPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Language data files"; ObjectID = "7YG-8f-1AH"; */ 2 | "7YG-8f-1AH.headerCell.title" = "Fichiers de données linguistiques"; 3 | 4 | /* Class = "NSButtonCell"; title = "Get"; ObjectID = "DIS-cU-NvL"; */ 5 | "DIS-cU-NvL.title" = "Obtenir"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Language specific OCR data files can improve the optical character recognition results."; ObjectID = "LFI-zD-ohi"; */ 8 | "LFI-zD-ohi.title" = "Les fichiers de données linguistiques OCR spécifiques peuvent améliorer les résultats de la reconnaissance de caractères."; 9 | 10 | -------------------------------------------------------------------------------- /Classes/fr.lproj/OffsetViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Offset:"; ObjectID = "1MN-KJ-v23"; */ 2 | "1MN-KJ-v23.title" = "Décalage :"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "ms"; ObjectID = "nxC-E2-XnZ"; */ 5 | "nxC-E2-XnZ.title" = "ms"; 6 | 7 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "Ypd-2w-xig"; */ 8 | "Ypd-2w-xig.title" = "Annuler"; 9 | 10 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "zRv-hv-PCL"; */ 11 | "zRv-hv-PCL.title" = "OK"; 12 | 13 | -------------------------------------------------------------------------------- /Classes/fr.lproj/OutputPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Set the format to create a custom filename in the Save As… panel and in the queue."; ObjectID = "hE3-zH-XFE"; */ 2 | "hE3-zH-XFE.title" = "Définir le format pour créer un fichier personnalisé dans le panneau Enregistrer sous... et dans la file d'attente"; 3 | 4 | /* Class = "NSButtonCell"; title = "Set filename of TV Shows to:"; ObjectID = "kQC-bu-0by"; */ 5 | "kQC-bu-0by.title" = "Définir le nom de fichier des émissions de TV à :"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set filename of Movies to:"; ObjectID = "wci-gO-GWT"; */ 8 | "wci-gO-GWT.title" = "Définir le nom de fichier des films à :"; 9 | 10 | -------------------------------------------------------------------------------- /Classes/fr.lproj/PresetEditorViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "0nh-AI-EEk"; */ 2 | "0nh-AI-EEk.title" = "Conserver les annotations existantes"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "2ur-nu-rZh"; */ 5 | "2ur-nu-rZh.title" = "Conserver les illustrations existantes"; 6 | 7 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 8 | "30.ibExternalAccessibilityDescription" = "Ajouter un élément de métadonnées"; 9 | 10 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 11 | "30.ibShadowedToolTip" = "Ajouter un nouvel élément de métadonnées"; 12 | 13 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 14 | "53.ibExternalAccessibilityDescription" = "Retirer l'élément sélectionné"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibShadowedToolTip" = "Retirer l'élément sélectionné"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Dismiss"; ObjectID = "87e-za-hJV"; */ 20 | "87e-za-hJV.ibShadowedToolTip" = "Rejeter"; 21 | 22 | /* Class = "NSWindow"; title = "Window"; ObjectID = "167"; */ 23 | "167.title" = "Fenêtre"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "174"; */ 26 | "174.title" = "Nom :"; 27 | 28 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "177"; */ 29 | "177.title" = "Enregistrer"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "178"; */ 32 | "178.title" = "Annuler"; 33 | 34 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 35 | "179.ibExternalAccessibilityDescription" = "Ensembles"; 36 | 37 | /* Class = "NSButton"; ibShadowedToolTip = "Add an artwork"; ObjectID = "223"; */ 38 | "223.ibShadowedToolTip" = "Ajouter une illustration"; 39 | 40 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected artwork"; ObjectID = "226"; */ 41 | "226.ibShadowedToolTip" = "Retirer l'illustration sélectionnée"; 42 | 43 | /* Class = "NSSlider"; ibShadowedToolTip = "Change artworks view zoom"; ObjectID = "235"; */ 44 | "235.ibShadowedToolTip" = "Changer le zoom d'affichage de l'illustration"; 45 | 46 | /* Class = "NSTextFieldCell"; title = "Title"; ObjectID = "CD8-S4-C35"; */ 47 | "CD8-S4-C35.title" = "Titre"; 48 | 49 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "CHk-xu-U9f"; */ 50 | "CHk-xu-U9f.title" = "Conserver les illustrations existantes"; 51 | 52 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 53 | "j7q-XE-YXB.headerCell.title" = "Annotation"; 54 | 55 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "KxJ-Zr-uiZ"; */ 56 | "KxJ-Zr-uiZ.title" = "Conserver les annotations existantes"; 57 | 58 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 59 | "os0-Yb-exW.headerCell.title" = "Valeur"; 60 | 61 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 62 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "Métadonnées"; 63 | 64 | /* Class = "NSTextField"; ibExternalAccessibilityDescription = "Preset Title"; ObjectID = "RvM-No-Mwg"; */ 65 | "RvM-No-Mwg.ibExternalAccessibilityDescription" = "Titre prédéfini"; 66 | 67 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "xfY-4F-IAd"; */ 68 | "xfY-4F-IAd.title" = "OK"; 69 | 70 | -------------------------------------------------------------------------------- /Classes/fr.lproj/PresetPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Edit selected set"; ObjectID = "C1d-lu-T7S"; */ 2 | "C1d-lu-T7S.ibShadowedToolTip" = "Modifier l'ensemble sélectionné"; 3 | 4 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "gBf-6T-hQv"; */ 5 | "gBf-6T-hQv.ibShadowedToolTip" = "Retirer l'ensemble sélectionné"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "iRF-P7-a3Q"; */ 8 | "iRF-P7-a3Q.ibExternalAccessibilityDescription" = "Ensembles"; 9 | 10 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "SIg-lA-6FA"; */ 11 | "SIg-lA-6FA.ibShadowedToolTip" = "Retirer l'ensemble sélectionné"; 12 | 13 | /* Class = "NSButtonCell"; title = "Edit"; ObjectID = "W45-Bf-XCJ"; */ 14 | "W45-Bf-XCJ.title" = "Modifier"; 15 | 16 | -------------------------------------------------------------------------------- /Classes/fr.lproj/ProgressViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Saving…"; ObjectID = "1QY-aq-f1i"; */ 2 | "1QY-aq-f1i.title" = "Enregistrement..."; 3 | 4 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "13i-3e-aOA"; */ 5 | "13i-3e-aOA.title" = "Annuler"; 6 | 7 | -------------------------------------------------------------------------------- /Classes/fr.lproj/SaveOptions.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Note: don't use this option if you are not sure of what it is doing, it's not needed in almost every case.\nEnable 64bit timescale and duration support. Normally, it's only needed if a track will be longer than 10 hours."; ObjectID = "3CX-Vp-T0h"; */ 2 | "3CX-Vp-T0h.ibShadowedToolTip" = "Note: n'utilisez pas cette option si vous n'êtes pas sûr de ce qu'elle fait, elle n'est pas nécessaire dans la majorité des cas.\nActiver la prise en charge de l'échelle de temps et de durée 64 bits. Normalement, cela n'est nécessaire que si une piste dure plus de 10 heures."; 3 | 4 | /* Class = "NSButtonCell"; title = "64 bits chunk offset"; ObjectID = "14x-xv-HKI"; */ 5 | "14x-xv-HKI.title" = "Décalage de bloc de 64 bits"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Options:"; ObjectID = "BXP-AU-x3T"; */ 8 | "BXP-AU-x3T.title" = "Options :"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "File Format:"; ObjectID = "caN-zU-chS"; */ 11 | "caN-zU-chS.title" = "Format de fichier :"; 12 | 13 | /* Class = "NSButtonCell"; title = "64 bits times"; ObjectID = "DCI-a5-K73"; */ 14 | "DCI-a5-K73.title" = "Durées 64 bits"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Needed for mp4 larger than 4GB."; ObjectID = "emp-1S-F7H"; */ 17 | "emp-1S-F7H.ibShadowedToolTip" = "Nécessaire pour mp4 de plus de 4 GO"; 18 | 19 | /* Class = "NSButtonCell"; title = "Optimize"; ObjectID = "OZC-sc-82O"; */ 20 | "OZC-sc-82O.title" = "Optimiser"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/fr.lproj/TracksViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "0dC-Ux-mUt"; */ 2 | "0dC-Ux-mUt.headerCell.title" = "Durée"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "3zj-cH-wWV"; */ 5 | "3zj-cH-wWV.headerCell.title" = "Nom"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Tracks"; ObjectID = "Bpi-e7-pHx"; */ 8 | "Bpi-e7-pHx.ibExternalAccessibilityDescription" = "Pistes"; 9 | 10 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Enabled"; ObjectID = "JD5-tO-uQc"; */ 11 | "JD5-tO-uQc.ibExternalAccessibilityDescription" = "Activé"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Enable or disable the track"; ObjectID = "JD5-tO-uQc"; */ 14 | "JD5-tO-uQc.ibShadowedToolTip" = "Active ou désactive la piste"; 15 | 16 | /* Class = "NSTextFieldCell"; title = "00:00:00"; ObjectID = "LAW-aU-7Ie"; */ 17 | "LAW-aU-7Ie.title" = "00:00:00"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Text"; ObjectID = "LgC-JT-Lsx"; */ 20 | "LgC-JT-Lsx.title" = "Texte"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "qGd-Uo-RvP"; */ 23 | "qGd-Uo-RvP.headerCell.title" = "Langue"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "sB1-FL-VRd"; */ 26 | "sB1-FL-VRd.headerCell.title" = "Id"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Format"; ObjectID = "vmh-dT-zIv"; */ 29 | "vmh-dT-zIv.headerCell.title" = "Format"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Enabled"; ObjectID = "Znw-bQ-tsE"; */ 32 | "Znw-bQ-tsE.headerCell.title" = "Activé"; 33 | 34 | -------------------------------------------------------------------------------- /Classes/it.lproj/DocumentWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Window"; ObjectID = "s5f-yH-26m"; */ 2 | "s5f-yH-26m.title" = "Finestra"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/it.lproj/MetadataPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Annotations"; ObjectID = "6um-Rw-luk"; */ 2 | "6um-Rw-luk.headerCell.title" = "Annotazioni"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep empty annotations"; ObjectID = "7Ek-lI-5Lo"; */ 5 | "7Ek-lI-5Lo.title" = "Mantieni le annotazioni vuote"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "Aj4-bk-6RK"; */ 8 | "Aj4-bk-6RK.headerCell.title" = "Valore"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Map the providers' metadata to the MP4 annotations"; ObjectID = "cUW-9F-EvO"; */ 11 | "cUW-9F-EvO.title" = "Associa i metadati dei fornitori alle annotazioni MP4"; 12 | 13 | /* Class = "NSTableColumn"; headerCell.title = "Type"; ObjectID = "gwa-XG-q0L"; */ 14 | "gwa-XG-q0L.headerCell.title" = "Tipologia"; 15 | 16 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add annotation"; ObjectID = "Jdh-Cj-6ef"; */ 17 | "Jdh-Cj-6ef.ibShadowedToolTip" = "Aggiungi annotazione"; 18 | 19 | /* Class = "NSButtonCell"; title = "Restore Defaults"; ObjectID = "nBh-jv-KDG"; */ 20 | "nBh-jv-KDG.title" = "Ripristina default"; 21 | 22 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata type"; ObjectID = "nXW-oy-rtu"; */ 23 | "nXW-oy-rtu.ibExternalAccessibilityDescription" = "Tipo metadata"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Available values:"; ObjectID = "OYx-Dd-YIf"; */ 26 | "OYx-Dd-YIf.title" = "Valori disponibili:"; 27 | 28 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "sd5-qb-K5v"; */ 29 | "sd5-qb-K5v.ibShadowedToolTip" = "Rimuovi l'elemento selezionato"; 30 | 31 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata map"; ObjectID = "Tid-Rc-Ljr"; */ 32 | "Tid-Rc-Ljr.ibExternalAccessibilityDescription" = "Mappa metadata"; 33 | 34 | -------------------------------------------------------------------------------- /Classes/it.lproj/OCRPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Language data files"; ObjectID = "7YG-8f-1AH"; */ 2 | "7YG-8f-1AH.headerCell.title" = "File dati delle lingue"; 3 | 4 | /* Class = "NSButtonCell"; title = "Get"; ObjectID = "DIS-cU-NvL"; */ 5 | "DIS-cU-NvL.title" = "Ottieni"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Language specific OCR data files can improve the optical character recognition results."; ObjectID = "LFI-zD-ohi"; */ 8 | "LFI-zD-ohi.title" = "I file dati OCR per una specifica lingua possono migliorare il risultato del riconoscimento ottico dei caratteri."; 9 | 10 | -------------------------------------------------------------------------------- /Classes/it.lproj/OffsetViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Offset:"; ObjectID = "1MN-KJ-v23"; */ 2 | "1MN-KJ-v23.title" = "Compensazione:"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "ms"; ObjectID = "nxC-E2-XnZ"; */ 5 | "nxC-E2-XnZ.title" = "ms"; 6 | 7 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "Ypd-2w-xig"; */ 8 | "Ypd-2w-xig.title" = "Annulla"; 9 | 10 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "zRv-hv-PCL"; */ 11 | "zRv-hv-PCL.title" = "OK"; 12 | 13 | -------------------------------------------------------------------------------- /Classes/it.lproj/OutputPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Set the format to create a custom filename in the Save As… panel and in the queue."; ObjectID = "hE3-zH-XFE"; */ 2 | "hE3-zH-XFE.title" = "Imposta il formato per creare un nome del file personalizzato nel pannello \\\"Salva col nome…\\\" and nella coda."; 3 | 4 | /* Class = "NSButtonCell"; title = "Set filename of TV Shows to:"; ObjectID = "kQC-bu-0by"; */ 5 | "kQC-bu-0by.title" = "Imposta il nome del file delle Serie TV a:"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set filename of Movies to:"; ObjectID = "wci-gO-GWT"; */ 8 | "wci-gO-GWT.title" = "Imposta il nome del file dei Film a:"; 9 | 10 | -------------------------------------------------------------------------------- /Classes/it.lproj/PresetEditorViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "0nh-AI-EEk"; */ 2 | "0nh-AI-EEk.title" = "Mantieni le annotazioni esistenti"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "2ur-nu-rZh"; */ 5 | "2ur-nu-rZh.title" = "Mantieni le illustrazioni esistenti"; 6 | 7 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 8 | "30.ibExternalAccessibilityDescription" = "Aggiungi elemento metadata"; 9 | 10 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 11 | "30.ibShadowedToolTip" = "Aggiungi un nuovo elemento metadata"; 12 | 13 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 14 | "53.ibExternalAccessibilityDescription" = "Rimuovi l'elemento selezionato"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibShadowedToolTip" = "Rimuovi l'elemento selezionato"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Dismiss"; ObjectID = "87e-za-hJV"; */ 20 | "87e-za-hJV.ibShadowedToolTip" = "Chiudi"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "174"; */ 23 | "174.title" = "Nome:"; 24 | 25 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "177"; */ 26 | "177.title" = "Salva"; 27 | 28 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "178"; */ 29 | "178.title" = "Annulla"; 30 | 31 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 32 | "179.ibExternalAccessibilityDescription" = "Preset"; 33 | 34 | /* Class = "NSButton"; ibShadowedToolTip = "Add an artwork"; ObjectID = "223"; */ 35 | "223.ibShadowedToolTip" = "Aggiungi un'illustrazione"; 36 | 37 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected artwork"; ObjectID = "226"; */ 38 | "226.ibShadowedToolTip" = "Rimuovi l'illustrazione selezionata"; 39 | 40 | /* Class = "NSSlider"; ibShadowedToolTip = "Change artworks view zoom"; ObjectID = "235"; */ 41 | "235.ibShadowedToolTip" = "Cambia il livello di zoom della vista delle illustrazioni"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "Title"; ObjectID = "CD8-S4-C35"; */ 44 | "CD8-S4-C35.title" = "Titolo"; 45 | 46 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "CHk-xu-U9f"; */ 47 | "CHk-xu-U9f.title" = "Mantieni le illustrazioni esistenti"; 48 | 49 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 50 | "j7q-XE-YXB.headerCell.title" = "Annotazione"; 51 | 52 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "KxJ-Zr-uiZ"; */ 53 | "KxJ-Zr-uiZ.title" = "Mantieni le annotazioni esistenti"; 54 | 55 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 56 | "os0-Yb-exW.headerCell.title" = "Valore"; 57 | 58 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 59 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "Metadata"; 60 | 61 | /* Class = "NSTextField"; ibExternalAccessibilityDescription = "Preset Title"; ObjectID = "RvM-No-Mwg"; */ 62 | "RvM-No-Mwg.ibExternalAccessibilityDescription" = "Titolo Preset"; 63 | 64 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "xfY-4F-IAd"; */ 65 | "xfY-4F-IAd.title" = "OK"; 66 | 67 | -------------------------------------------------------------------------------- /Classes/it.lproj/PresetPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Edit selected set"; ObjectID = "C1d-lu-T7S"; */ 2 | "C1d-lu-T7S.ibShadowedToolTip" = "Modifica il preset selezionato"; 3 | 4 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "gBf-6T-hQv"; */ 5 | "gBf-6T-hQv.ibShadowedToolTip" = "Rimuovi il preset selezionato"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "iRF-P7-a3Q"; */ 8 | "iRF-P7-a3Q.ibExternalAccessibilityDescription" = "Preset"; 9 | 10 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "SIg-lA-6FA"; */ 11 | "SIg-lA-6FA.ibShadowedToolTip" = "Rimuovi il preset selezionato"; 12 | 13 | /* Class = "NSButtonCell"; title = "Edit"; ObjectID = "W45-Bf-XCJ"; */ 14 | "W45-Bf-XCJ.title" = "Modifica"; 15 | 16 | -------------------------------------------------------------------------------- /Classes/it.lproj/ProgressViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Saving…"; ObjectID = "1QY-aq-f1i"; */ 2 | "1QY-aq-f1i.title" = "Salvo…"; 3 | 4 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "13i-3e-aOA"; */ 5 | "13i-3e-aOA.title" = "Annulla"; 6 | 7 | -------------------------------------------------------------------------------- /Classes/it.lproj/SaveOptions.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Note: don't use this option if you are not sure of what it is doing, it's not needed in almost every case.\nEnable 64bit timescale and duration support. Normally, it's only needed if a track will be longer than 10 hours."; ObjectID = "3CX-Vp-T0h"; */ 2 | "3CX-Vp-T0h.ibShadowedToolTip" = "Nota: non usare questa opzione se non sei sicuro della sua funzione, non è quasi mai necessaria.\nAttiva la scala del tempo a 64bit. Normalmente è necessaria solo se una traccia ha una durata maggiore di 10 ore."; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Options:"; ObjectID = "BXP-AU-x3T"; */ 5 | "BXP-AU-x3T.title" = "Opzioni:"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "File Format:"; ObjectID = "caN-zU-chS"; */ 8 | "caN-zU-chS.title" = "Formato File:"; 9 | 10 | /* Class = "NSButton"; ibShadowedToolTip = "Needed for mp4 larger than 4GB."; ObjectID = "emp-1S-F7H"; */ 11 | "emp-1S-F7H.ibShadowedToolTip" = "Necessario per mp4 più grandi di 4GB."; 12 | 13 | /* Class = "NSButtonCell"; title = "Optimize"; ObjectID = "OZC-sc-82O"; */ 14 | "OZC-sc-82O.title" = "Ottimizza"; 15 | 16 | -------------------------------------------------------------------------------- /Classes/it.lproj/TracksViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "0dC-Ux-mUt"; */ 2 | "0dC-Ux-mUt.headerCell.title" = "Durata"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "3zj-cH-wWV"; */ 5 | "3zj-cH-wWV.headerCell.title" = "Nome"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Tracks"; ObjectID = "Bpi-e7-pHx"; */ 8 | "Bpi-e7-pHx.ibExternalAccessibilityDescription" = "Tracce"; 9 | 10 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Enabled"; ObjectID = "JD5-tO-uQc"; */ 11 | "JD5-tO-uQc.ibExternalAccessibilityDescription" = "Abilitato"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Enable or disable the track"; ObjectID = "JD5-tO-uQc"; */ 14 | "JD5-tO-uQc.ibShadowedToolTip" = "Abilita o disabilita la traccia"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "qGd-Uo-RvP"; */ 17 | "qGd-Uo-RvP.headerCell.title" = "Lingua"; 18 | 19 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "sB1-FL-VRd"; */ 20 | "sB1-FL-VRd.headerCell.title" = "Id"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Format"; ObjectID = "vmh-dT-zIv"; */ 23 | "vmh-dT-zIv.headerCell.title" = "Formato"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Enabled"; ObjectID = "Znw-bQ-tsE"; */ 26 | "Znw-bQ-tsE.headerCell.title" = "Abilitato"; 27 | 28 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/DocumentWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Window"; ObjectID = "s5f-yH-26m"; */ 2 | "s5f-yH-26m.title" = "窗口"; 3 | 4 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/MetadataPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Annotations"; ObjectID = "6um-Rw-luk"; */ 2 | "6um-Rw-luk.headerCell.title" = "注释"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep empty annotations"; ObjectID = "7Ek-lI-5Lo"; */ 5 | "7Ek-lI-5Lo.title" = "保留空白注释"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "Aj4-bk-6RK"; */ 8 | "Aj4-bk-6RK.headerCell.title" = "值"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Map the providers' metadata to the MP4 annotations"; ObjectID = "cUW-9F-EvO"; */ 11 | "cUW-9F-EvO.title" = "将获取的元数据映射到 mp4 注释"; 12 | 13 | /* Class = "CocoaBindingsConnection"; ibShadowedIsNilPlaceholder = "Null"; ObjectID = "dgq-hT-1Vg"; */ 14 | "dgq-hT-1Vg.ibShadowedIsNilPlaceholder" = "无"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Type"; ObjectID = "gwa-XG-q0L"; */ 17 | "gwa-XG-q0L.headerCell.title" = "类型"; 18 | 19 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add annotation"; ObjectID = "Jdh-Cj-6ef"; */ 20 | "Jdh-Cj-6ef.ibShadowedToolTip" = "添加注释条目"; 21 | 22 | /* Class = "NSButtonCell"; title = "Restore Defaults"; ObjectID = "nBh-jv-KDG"; */ 23 | "nBh-jv-KDG.title" = "恢复默认"; 24 | 25 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata type"; ObjectID = "nXW-oy-rtu"; */ 26 | "nXW-oy-rtu.ibExternalAccessibilityDescription" = "元数据类型"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "Available values:"; ObjectID = "OYx-Dd-YIf"; */ 29 | "OYx-Dd-YIf.title" = "可用值:"; 30 | 31 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "sd5-qb-K5v"; */ 32 | "sd5-qb-K5v.ibShadowedToolTip" = "移除所选项"; 33 | 34 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata map"; ObjectID = "Tid-Rc-Ljr"; */ 35 | "Tid-Rc-Ljr.ibExternalAccessibilityDescription" = "元数据映射"; 36 | 37 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/OCRPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Language data files"; ObjectID = "7YG-8f-1AH"; */ 2 | "7YG-8f-1AH.headerCell.title" = "语言支持文件"; 3 | 4 | /* Class = "NSButtonCell"; title = "Get"; ObjectID = "DIS-cU-NvL"; */ 5 | "DIS-cU-NvL.title" = "获取"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Language specific OCR data files can improve the optical character recognition results."; ObjectID = "LFI-zD-ohi"; */ 8 | "LFI-zD-ohi.title" = "特定语言的 OCR 支持文件可以改善光学文字识别的结果"; 9 | 10 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/OffsetViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Offset:"; ObjectID = "1MN-KJ-v23"; */ 2 | "1MN-KJ-v23.title" = "偏移:"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "ms"; ObjectID = "nxC-E2-XnZ"; */ 5 | "nxC-E2-XnZ.title" = "毫秒"; 6 | 7 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "Ypd-2w-xig"; */ 8 | "Ypd-2w-xig.title" = "取消"; 9 | 10 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "zRv-hv-PCL"; */ 11 | "zRv-hv-PCL.title" = "确定"; 12 | 13 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/OutputPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Set the format to create a custom filename in the Save As… panel and in the queue."; ObjectID = "hE3-zH-XFE"; */ 2 | "hE3-zH-XFE.title" = "在“另存为…”面板和队列中设置格式以创建自定义文件名。"; 3 | 4 | /* Class = "NSButtonCell"; title = "Set filename of TV Shows to:"; ObjectID = "kQC-bu-0by"; */ 5 | "kQC-bu-0by.title" = "将电视节目文件名设置为:"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set filename of Movies to:"; ObjectID = "wci-gO-GWT"; */ 8 | "wci-gO-GWT.title" = "将电影文件名设置为:"; 9 | 10 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/PresetEditorViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "0nh-AI-EEk"; */ 2 | "0nh-AI-EEk.title" = "保留现有注释"; 3 | 4 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "2ur-nu-rZh"; */ 5 | "2ur-nu-rZh.title" = "保留现有插图"; 6 | 7 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Add metadata item"; ObjectID = "30"; */ 8 | "30.ibExternalAccessibilityDescription" = "添加元数据条目"; 9 | 10 | /* Class = "NSPopUpButton"; ibShadowedToolTip = "Add a new metadata item"; ObjectID = "30"; */ 11 | "30.ibShadowedToolTip" = "添加一个新的元数据条目"; 12 | 13 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Remove selected item"; ObjectID = "53"; */ 14 | "53.ibExternalAccessibilityDescription" = "移除所选项"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected item"; ObjectID = "53"; */ 17 | "53.ibShadowedToolTip" = "移除所选项"; 18 | 19 | /* Class = "NSButton"; ibShadowedToolTip = "Dismiss"; ObjectID = "87e-za-hJV"; */ 20 | "87e-za-hJV.ibShadowedToolTip" = "忽略"; 21 | 22 | /* Class = "NSWindow"; title = "Window"; ObjectID = "167"; */ 23 | "167.title" = "窗口"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "174"; */ 26 | "174.title" = "名称:"; 27 | 28 | /* Class = "NSButtonCell"; title = "Save"; ObjectID = "177"; */ 29 | "177.title" = "存储"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "178"; */ 32 | "178.title" = "取消"; 33 | 34 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "179"; */ 35 | "179.ibExternalAccessibilityDescription" = "预设"; 36 | 37 | /* Class = "NSButton"; ibShadowedToolTip = "Add an artwork"; ObjectID = "223"; */ 38 | "223.ibShadowedToolTip" = "添加插图"; 39 | 40 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected artwork"; ObjectID = "226"; */ 41 | "226.ibShadowedToolTip" = "移除所选插图"; 42 | 43 | /* Class = "NSSlider"; ibShadowedToolTip = "Change artworks view zoom"; ObjectID = "235"; */ 44 | "235.ibShadowedToolTip" = "改变插图视图缩放"; 45 | 46 | /* Class = "NSTextFieldCell"; title = "Title"; ObjectID = "CD8-S4-C35"; */ 47 | "CD8-S4-C35.title" = "标题"; 48 | 49 | /* Class = "NSButtonCell"; title = "Keep existing artworks"; ObjectID = "CHk-xu-U9f"; */ 50 | "CHk-xu-U9f.title" = "保留现有插图"; 51 | 52 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "j7q-XE-YXB"; */ 53 | "j7q-XE-YXB.headerCell.title" = "注释"; 54 | 55 | /* Class = "NSButtonCell"; title = "Keep existing annotations"; ObjectID = "KxJ-Zr-uiZ"; */ 56 | "KxJ-Zr-uiZ.title" = "保留现有注释"; 57 | 58 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "os0-Yb-exW"; */ 59 | "os0-Yb-exW.headerCell.title" = "值"; 60 | 61 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Metadata"; ObjectID = "qg5-r0-E4V"; */ 62 | "qg5-r0-E4V.ibExternalAccessibilityDescription" = "元数据"; 63 | 64 | /* Class = "NSTextField"; ibExternalAccessibilityDescription = "Preset Title"; ObjectID = "RvM-No-Mwg"; */ 65 | "RvM-No-Mwg.ibExternalAccessibilityDescription" = "预设标题"; 66 | 67 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "xfY-4F-IAd"; */ 68 | "xfY-4F-IAd.title" = "确定"; 69 | 70 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/PresetPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Edit selected set"; ObjectID = "C1d-lu-T7S"; */ 2 | "C1d-lu-T7S.ibShadowedToolTip" = "编辑所选预设"; 3 | 4 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "gBf-6T-hQv"; */ 5 | "gBf-6T-hQv.ibShadowedToolTip" = "移除所选预设"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Sets"; ObjectID = "iRF-P7-a3Q"; */ 8 | "iRF-P7-a3Q.ibExternalAccessibilityDescription" = "预设"; 9 | 10 | /* Class = "NSButton"; ibShadowedToolTip = "Remove selected set"; ObjectID = "SIg-lA-6FA"; */ 11 | "SIg-lA-6FA.ibShadowedToolTip" = "移除所选预设"; 12 | 13 | /* Class = "NSButtonCell"; title = "Edit"; ObjectID = "W45-Bf-XCJ"; */ 14 | "W45-Bf-XCJ.title" = "编辑"; 15 | 16 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/ProgressViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Saving…"; ObjectID = "1QY-aq-f1i"; */ 2 | "1QY-aq-f1i.title" = "正在存储…"; 3 | 4 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "13i-3e-aOA"; */ 5 | "13i-3e-aOA.title" = "取消"; 6 | 7 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/SaveOptions.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButton"; ibShadowedToolTip = "Note: don't use this option if you are not sure of what it is doing, it's not needed in almost every case.\nEnable 64bit timescale and duration support. Normally, it's only needed if a track will be longer than 10 hours."; ObjectID = "3CX-Vp-T0h"; */ 2 | "3CX-Vp-T0h.ibShadowedToolTip" = "注意:如果不确定该选项的作用,请不要使用此选项,几乎在每种情况下都不需要使用此选项。\n启用64位时标和持续时间支持:通常,仅当时长超过10小时才需要。"; 3 | 4 | /* Class = "NSButtonCell"; title = "64 bits chunk offset"; ObjectID = "14x-xv-HKI"; */ 5 | "14x-xv-HKI.title" = "64位块偏移"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Options:"; ObjectID = "BXP-AU-x3T"; */ 8 | "BXP-AU-x3T.title" = "选项:"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "File Format:"; ObjectID = "caN-zU-chS"; */ 11 | "caN-zU-chS.title" = "文件格式:"; 12 | 13 | /* Class = "NSButtonCell"; title = "64 bits times"; ObjectID = "DCI-a5-K73"; */ 14 | "DCI-a5-K73.title" = "64位时间"; 15 | 16 | /* Class = "NSButton"; ibShadowedToolTip = "Needed for mp4 larger than 4GB."; ObjectID = "emp-1S-F7H"; */ 17 | "emp-1S-F7H.ibShadowedToolTip" = "当 mp4 文件超过 4GB 时需要此项"; 18 | 19 | /* Class = "NSButtonCell"; title = "Optimize"; ObjectID = "OZC-sc-82O"; */ 20 | "OZC-sc-82O.title" = "优化"; 21 | 22 | -------------------------------------------------------------------------------- /Classes/zh-Hans.lproj/TracksViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "0dC-Ux-mUt"; */ 2 | "0dC-Ux-mUt.headerCell.title" = "持续时间"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "3zj-cH-wWV"; */ 5 | "3zj-cH-wWV.headerCell.title" = "名称"; 6 | 7 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Tracks"; ObjectID = "Bpi-e7-pHx"; */ 8 | "Bpi-e7-pHx.ibExternalAccessibilityDescription" = "轨道"; 9 | 10 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Enabled"; ObjectID = "JD5-tO-uQc"; */ 11 | "JD5-tO-uQc.ibExternalAccessibilityDescription" = "已启用"; 12 | 13 | /* Class = "NSButton"; ibShadowedToolTip = "Enable or disable the track"; ObjectID = "JD5-tO-uQc"; */ 14 | "JD5-tO-uQc.ibShadowedToolTip" = "启用/禁用轨道"; 15 | 16 | /* Class = "NSTextFieldCell"; title = "00:00:00"; ObjectID = "LAW-aU-7Ie"; */ 17 | "LAW-aU-7Ie.title" = "00:00:00"; 18 | 19 | /* Class = "NSTextFieldCell"; title = "Text"; ObjectID = "LgC-JT-Lsx"; */ 20 | "LgC-JT-Lsx.title" = "文本"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "qGd-Uo-RvP"; */ 23 | "qGd-Uo-RvP.headerCell.title" = "语言"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "sB1-FL-VRd"; */ 26 | "sB1-FL-VRd.headerCell.title" = "ID"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Format"; ObjectID = "vmh-dT-zIv"; */ 29 | "vmh-dT-zIv.headerCell.title" = "格式"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Enabled"; ObjectID = "Znw-bQ-tsE"; */ 32 | "Znw-bQ-tsE.headerCell.title" = "已启用"; 33 | 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Subler License 2 | 3 | Most files in Subler are under the GNU General Public License Version 2 4 | (GPLv2) license; read the file COPYING for details. 5 | 6 | Some files are under the GNU General Public License Version 2 or any later 7 | version (GPLv2+), the GNU Lesser General Public License Version 2.1 or any later 8 | version (LGPLv2.1+), or BSD/MIT/X11-style licenses. In combination, the GPLv2 9 | license applies to Subler. 10 | 11 | Graphic assets are covered by the license(s) specified in graphics/LICENSE. 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # README # 2 | 3 | ### What is this repository for? ### 4 | 5 | Subler is an Mac OS X app created to mux and tag mp4 files. The main features includes: 6 | 7 | * Creation of tx3g subtitles tracks, compatible with all Apple's devices (iPod, AppleTV, iPhone, QuickTime?). 8 | * Mux video, audio, chapters, subtitles and closed captions tracks from mov, mp4 and mkv. 9 | * Raw formats: H.264 Elementary streams (.h264, .264), AAC (.aac), AC3 (.ac3), Scenarist (.scc), VobSub? (.idx). 10 | * metadata editing and TMDb, TVDB and iTunes Store support. 11 | 12 | ### Build and run 13 | 14 | Clone the repository and include all submodules 15 | ``` 16 | git clone --recurse-submodules https://github.com/SublerApp/Subler.git 17 | ``` 18 | If you already cloned without submodules and need to add the submodules manually, `cd` into the `./Subler` directory and clone the dependency submodules with 19 | ``` 20 | git submodule update --init --recursive 21 | ``` 22 | Open `Subler.xcodeproj` in XCode 23 | 24 | Build and run the project by selecting the 'Subler' scheme (`Product` -> `Scheme` -> `Subler`) and clicking the 'Run' button in Xcode’s toolbar. 25 | 26 | 27 | -------------------------------------------------------------------------------- /Subler.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.assets.movies.read-write 6 | 7 | com.apple.security.automation.apple-events 8 | 9 | com.apple.security.files.bookmarks.app-scope 10 | 11 | com.apple.security.files.user-selected.read-write 12 | 13 | com.apple.security.network.client 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Subler.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // MP4Dump 4 | // 5 | // Created by Damiano Galassi on 17/03/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface AppDelegate : NSObject 13 | @end 14 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // MP4Dump 4 | // 5 | // Created by Damiano Galassi on 17/03/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #include "mp4v2.h" 11 | 12 | NSString *libraryPath = nil; 13 | 14 | static void logCallback(MP4LogLevel loglevel, const char *fmt, va_list ap) 15 | { 16 | if (!libraryPath) { 17 | NSString *libraryDir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, 18 | NSUserDomainMask, 19 | YES).firstObject; 20 | NSString *AppSupportDirectory = [[libraryDir stringByAppendingPathComponent:@"Application Support"] 21 | stringByAppendingPathComponent:@"MP4Dump"]; 22 | 23 | if (![NSFileManager.defaultManager fileExistsAtPath:AppSupportDirectory]) { 24 | [NSFileManager.defaultManager createDirectoryAtPath:AppSupportDirectory 25 | withIntermediateDirectories:YES 26 | attributes:nil 27 | error:NULL]; 28 | } 29 | libraryPath = [AppSupportDirectory stringByAppendingPathComponent:@"temp.txt"]; 30 | 31 | } 32 | 33 | FILE *file = fopen(libraryPath.fileSystemRepresentation, "a"); 34 | 35 | vfprintf(file, fmt, ap); 36 | fprintf(file, "\n"); 37 | 38 | fclose(file); 39 | } 40 | 41 | @implementation AppDelegate 42 | 43 | - (void)applicationWillFinishLaunching:(NSNotification *)aNotification 44 | { 45 | MP4SetLogCallback(logCallback); 46 | MP4LogSetLevel(MP4_LOG_INFO); 47 | [NSUserDefaults.standardUserDefaults registerDefaults:@{@"MP42LogLevel" : @3}]; 48 | } 49 | 50 | - (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender 51 | { 52 | return NO; 53 | } 54 | 55 | - (BOOL)applicationSupportsSecureRestorableState:(NSApplication *)app 56 | { 57 | return YES; 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/MP4Dump.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/MP4Dump.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/MP4Dump_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MP4Dump' target in the 'MP4Dump' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/MyDocument.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyDocument.h 3 | // MP4Dump 4 | // 5 | // Created by Damiano Galassi on 27/03/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | 10 | #import 11 | 12 | @interface MyDocument : NSDocument 13 | { 14 | IBOutlet NSTextView * textView; 15 | IBOutlet NSPopUpButton *logLevelButton; 16 | NSString *result; 17 | } 18 | 19 | - (IBAction)setLogLevel:(id)sender; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Damiano Galassi\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Damiano Galassi\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b With special thanks to: 22 | \b0 \ 23 | mp4v2\ 24 | {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/mp4v2"}}{\fldrslt http://code.google.com/p/mp4v2}}} -------------------------------------------------------------------------------- /Utilities/MP4Dump/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Utilities/MP4Dump/main.mm: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MP4Dump 4 | // 5 | // Created by Damiano Galassi on 27/03/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **) argv); 14 | } 15 | -------------------------------------------------------------------------------- /Utilities/ParseFilename/ParseFilename.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use Video::Filename; 4 | 5 | my $filename = $ARGV[0]; 6 | 7 | my $file = Video::Filename::new($filename); 8 | 9 | if ($file->isTVshow()) { 10 | print "tv" . "\n"; 11 | print $file->{name} . "\n"; 12 | print $file->{season} . "\n"; 13 | print $file->{episode} . "\n"; 14 | } elsif ($file->isEpisode()) { 15 | print "tv" . "\n"; 16 | print $file->{name} . "\n"; 17 | print $file->{season} . "\n"; 18 | print $file->{episode} . "\n"; 19 | print $file->{part} . "\n"; 20 | } elsif ($file->isMovie()) { 21 | print "movie" . "\n"; 22 | print $file->{movie} . "\n"; 23 | } else { 24 | print "unknown" . "\n"; 25 | } 26 | 27 | exit; 28 | -------------------------------------------------------------------------------- /Utilities/ParseFilename/lib/Text/Roman.pm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/Utilities/ParseFilename/lib/Text/Roman.pm -------------------------------------------------------------------------------- /en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf2709 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fswiss\fcharset0 ArialMT; 3 | } 4 | {\colortbl;\red255\green255\blue255;\red0\green0\blue0;} 5 | {\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;} 6 | \paperw12240\paperh15840\vieww16420\viewh14800\viewkind0 7 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 8 | 9 | \f0\b\fs24 \cf2 Engineering & Human Interface Design: 10 | \f1\b0 \ 11 | Damiano Galassi\ 12 | \ 13 | 14 | \f0\b Project Contributors:\ 15 | 16 | \f1\b0 17 | \f2\fs26 Douglas Stebila\ 18 | Priit Varik 19 | \f0\b\fs24 \ 20 | 21 | \f1\b0 Ryan Walklin\ 22 | Bicus\ 23 | Odibi\ 24 | 25 | \f2\fs26 maury.markowitz 26 | \f1\fs24 \ 27 | \ 28 | 29 | \f0\b Metadata providers: 30 | \f1\b0 \ 31 | TMDb (TheMovieDB). This product uses the TMDb API but is not endorsed or certified by TMDb.\ 32 | {\field{\*\fldinst{HYPERLINK "https://themoviedb.org/"}}{\fldrslt https://themoviedb.org/}}\ 33 | TheTVDB\ 34 | {\field{\*\fldinst{HYPERLINK "https://thetvdb.com/"}}{\fldrslt https://thetvdb.com/}}\ 35 | \ 36 | 37 | \f0\b Third-Party Resources:\ 38 | 39 | \f1\b0 Tesseract\ 40 | {\field{\*\fldinst{HYPERLINK "https://github.com/tesseract-ocr/tesseract"}}{\fldrslt https://github.com/tesseract-ocr/tesseract}}\ 41 | Perian Project\ 42 | {\field{\*\fldinst{HYPERLINK "https://www.perian.org"}}{\fldrslt https://www.perian.org}}\ 43 | HandBrake\ 44 | {\field{\*\fldinst{HYPERLINK "https://handbrake.fr/"}}{\fldrslt https://handbrake.fr/}}\ 45 | mp4v2\ 46 | {\field{\*\fldinst{HYPERLINK "https://github.com/SublerApp/mp4v2"}}{\fldrslt https://github.com/SublerApp/mp4v2}}\ 47 | FFmpeg\ 48 | {\field{\*\fldinst{HYPERLINK "https://ffmpeg.org/"}}{\fldrslt https://ffmpeg.org/}} \ 49 | Video::Filename Perl library (by Behan Webster)\ 50 | {\field{\*\fldinst{HYPERLINK "http://search.cpan.org/~behanw/Video-Filename-0.35/"}}{\fldrslt http://search.cpan.org/~behanw/Video-Filename-0.35/}}\ 51 | \ 52 | The code is available under the GPL. The development site is located at {\field{\*\fldinst{HYPERLINK "https://github.com/SublerApp/Subler"}}{\fldrslt https://github.com/SublerApp/Subler}}} -------------------------------------------------------------------------------- /en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublerApp/Subler/87837a0f5e89dd4ac46ba21bc910fc5ae7edd15e/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /es-419.lproj/ArtworkSelector.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Load more artwork..."; ObjectID = "40h-Rv-m31"; */ 2 | "40h-Rv-m31.title" = "Cargar más ilustraciones…"; 3 | 4 | /* Class = "NSSlider"; ibExternalAccessibilityDescription = "Zoom"; ObjectID = "fMj-Ew-Qej"; */ 5 | "fMj-Ew-Qej.ibExternalAccessibilityDescription" = "Cambiar tamaño de visualización de la ilustración"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set as artwork"; ObjectID = "rMb-PC-yTA"; */ 8 | "rMb-PC-yTA.title" = "Agregar"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "TbL-2H-ra9"; */ 11 | "TbL-2H-ra9.title" = "Estado del progreso"; 12 | 13 | /* Class = "NSButtonCell"; title = "None"; ObjectID = "UDG-fN-bQH"; */ 14 | "UDG-fN-bQH.title" = "Ninguna"; 15 | 16 | -------------------------------------------------------------------------------- /es-419.lproj/FileImportController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Import Metadata"; ObjectID = "0dA-so-rlU"; */ 2 | "0dA-so-rlU.title" = "Importar metadatos"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Select tracks:"; ObjectID = "1JV-df-zeq"; */ 5 | "1JV-df-zeq.title" = "Seleccionar pistas:"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "0"; ObjectID = "2LD-y7-Ko1"; */ 8 | "2LD-y7-Ko1.title" = "0"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "a2Q-90-iMO"; */ 11 | "a2Q-90-iMO.headerCell.title" = "Id"; 12 | 13 | /* Class = "NSMenuItem"; title = "Check only tracks with the same language"; ObjectID = "D3Y-pV-hxZ"; */ 14 | "D3Y-pV-hxZ.title" = "Verificar solo pistas con el mismo idioma"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "dyL-5A-jbn"; */ 17 | "dyL-5A-jbn.headerCell.title" = "Idioma"; 18 | 19 | /* Class = "NSMenuItem"; title = "Check"; ObjectID = "GIM-Js-R4l"; */ 20 | "GIM-Js-R4l.title" = "Habilitar"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "jac-jE-VHr"; */ 23 | "jac-jE-VHr.headerCell.title" = "Duración"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Info"; ObjectID = "JH3-2P-Na2"; */ 26 | "JH3-2P-Na2.title" = "Info"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "Lang"; ObjectID = "KM9-Op-UNe"; */ 29 | "KM9-Op-UNe.title" = "Lang"; 30 | 31 | /* Class = "NSTextFieldCell"; title = "id"; ObjectID = "Nrs-BO-n8T"; */ 32 | "Nrs-BO-n8T.title" = "id"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "oS0-t5-87P"; */ 35 | "oS0-t5-87P.headerCell.title" = "Nombre"; 36 | 37 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "QCb-5J-Vfs"; */ 38 | "QCb-5J-Vfs.title" = "Agregar"; 39 | 40 | /* Class = "NSTableColumn"; headerCell.title = "Info"; ObjectID = "qRv-Tq-YMF"; */ 41 | "qRv-Tq-YMF.headerCell.title" = "Info"; 42 | 43 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "vW6-FN-zyM"; */ 44 | "vW6-FN-zyM.title" = "Cancelar"; 45 | 46 | /* Class = "NSMenuItem"; title = "Uncheck"; ObjectID = "w6q-DP-C0O"; */ 47 | "w6q-DP-C0O.title" = "Deshabilitar"; 48 | 49 | /* Class = "NSTableColumn"; headerCell.title = "Action"; ObjectID = "zFW-wr-9sg"; */ 50 | "zFW-wr-9sg.headerCell.title" = "Acción"; 51 | 52 | -------------------------------------------------------------------------------- /es-419.lproj/GeneralPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Middle"; ObjectID = "2o1-dB-mt1"; */ 2 | "2o1-dB-mt1.title" = "Media"; 3 | 4 | /* Class = "NSButtonCell"; title = "Automatically check for update daily"; ObjectID = "2Pf-pq-4IX"; */ 5 | "2Pf-pq-4IX.title" = "Comprobar automáticamente actualizaciones diariamente"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Beginning"; ObjectID = "3Vs-qA-7Z6"; */ 8 | "3Vs-qA-7Z6.title" = "Inicial"; 9 | 10 | /* Class = "NSButtonCell"; title = "Create Preview Images at position:"; ObjectID = "84"; */ 11 | "84.title" = "Crear imágenes de previsualización en la posición:"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Chapters:"; ObjectID = "85"; */ 14 | "85.title" = "Capítulos:"; 15 | 16 | /* Class = "NSButtonCell"; title = "Remember Size"; ObjectID = "86"; */ 17 | "86.title" = "Recordar tamaño"; 18 | 19 | /* Class = "NSButtonCell"; title = "Show open panel"; ObjectID = "87"; */ 20 | "87.title" = "Mostrar panel de apertura de archivo"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Window:"; ObjectID = "88"; */ 23 | "88.title" = "Ventana:"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "At Launch:"; ObjectID = "89"; */ 26 | "89.title" = "Al iniciar la aplicación:"; 27 | 28 | /* Class = "NSButtonCell"; title = "Clear recent searches"; ObjectID = "134"; */ 29 | "134.title" = "Borrar búsquedas recientes"; 30 | 31 | /* Class = "NSButtonCell"; title = "Delete cached metadata"; ObjectID = "137"; */ 32 | "137.title" = "Eliminar caché de metadatos"; 33 | 34 | /* Class = "NSTextFieldCell"; title = "Privacy:"; ObjectID = "140"; */ 35 | "140.title" = "Privacidad:"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Show ratings for:"; ObjectID = "207"; */ 38 | "207.title" = "Mostrar clasificación para:"; 39 | 40 | /* Class = "NSTextFieldCell"; title = "USA ratings are always shown."; ObjectID = "250"; */ 41 | "250.title" = "Las calificaciones de EE.UU. (USA) siempre se mostrarán."; 42 | 43 | /* Class = "NSTextFieldCell"; title = "End"; ObjectID = "He0-rl-DBi"; */ 44 | "He0-rl-DBi.title" = "Final"; 45 | 46 | -------------------------------------------------------------------------------- /es-419.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle name */ 2 | "CFBundleName" = "Subler"; 3 | 4 | /* (No Comment) */ 5 | "Matroska video" = "Vídeo Matroska"; 6 | 7 | /* Privacy - AppleEvents Sending Usage Description */ 8 | "NSAppleEventsUsageDescription" = "Subler necesita acceso para agregar películas a iTunes o a TV"; 9 | 10 | /* Copyright (human-readable) */ 11 | "NSHumanReadableCopyright" = "Copyright © 2009-2025, Damiano Galassi"; 12 | 13 | /* (No Comment) */ 14 | "SRT Subtitles" = "Subtítulos SRT"; 15 | 16 | /* (No Comment) */ 17 | "SSA Subtitles" = "Subtítulos SSA"; 18 | 19 | -------------------------------------------------------------------------------- /es-419.lproj/MediaTagsController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Check"; ObjectID = "7h1-sO-aUd"; */ 2 | "7h1-sO-aUd.title" = "Habilitar"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Media tags:"; ObjectID = "xXI-Cs-cBg"; */ 5 | "xXI-Cs-cBg.title" = "Etiquetas:"; 6 | 7 | -------------------------------------------------------------------------------- /es-419.lproj/PrefsWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Preferences"; ObjectID = "1"; */ 2 | "1.title" = "Configuración"; 3 | 4 | /* Class = "NSToolbarItem"; label = "General"; ObjectID = "5r6-9s-apQ"; */ 5 | "5r6-9s-apQ.label" = "General"; 6 | 7 | /* Class = "NSToolbarItem"; paletteLabel = "General"; ObjectID = "5r6-9s-apQ"; */ 8 | "5r6-9s-apQ.paletteLabel" = "General"; 9 | 10 | /* Class = "NSToolbarItem"; label = "OCR"; ObjectID = "btg-Uy-o7I"; */ 11 | "btg-Uy-o7I.label" = "OCR"; 12 | 13 | /* Class = "NSToolbarItem"; paletteLabel = "OCR"; ObjectID = "btg-Uy-o7I"; */ 14 | "btg-Uy-o7I.paletteLabel" = "OCR"; 15 | 16 | /* Class = "NSToolbarItem"; label = "Sets"; ObjectID = "PFq-0J-qih"; */ 17 | "PFq-0J-qih.label" = "Preset"; 18 | 19 | /* Class = "NSToolbarItem"; paletteLabel = "Sets"; ObjectID = "PFq-0J-qih"; */ 20 | "PFq-0J-qih.paletteLabel" = "Preset"; 21 | 22 | /* Class = "NSToolbarItem"; label = "Advanced"; ObjectID = "udf-m4-mG8"; */ 23 | "udf-m4-mG8.label" = "Avanzado"; 24 | 25 | /* Class = "NSToolbarItem"; paletteLabel = "Advanced"; ObjectID = "udf-m4-mG8"; */ 26 | "udf-m4-mG8.paletteLabel" = "Avanzado"; 27 | 28 | /* Class = "NSToolbarItem"; label = "Filename"; ObjectID = "uxW-fx-zpe"; */ 29 | "uxW-fx-zpe.label" = "Nombre de archivo"; 30 | 31 | /* Class = "NSToolbarItem"; paletteLabel = "Filename"; ObjectID = "uxW-fx-zpe"; */ 32 | "uxW-fx-zpe.paletteLabel" = "Nombre de archivo"; 33 | 34 | /* Class = "NSToolbarItem"; label = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 35 | "Z2w-05-k1g.label" = "Metadatos"; 36 | 37 | /* Class = "NSToolbarItem"; paletteLabel = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 38 | "Z2w-05-k1g.paletteLabel" = "Metadatos"; 39 | 40 | -------------------------------------------------------------------------------- /es-419.lproj/Queue.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Queue"; ObjectID = "1"; */ 2 | "1.title" = "Cola"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Queue"; ObjectID = "7"; */ 5 | "7.ibExternalAccessibilityDescription" = "Cola"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "nameColumn"; ObjectID = "8"; */ 8 | "8.headerCell.title" = "nameColumn"; 9 | 10 | /* Class = "NSMenuItem"; title = "Reveal in Finder"; ObjectID = "8gi-57-i6u"; */ 11 | "8gi-57-i6u.title" = "Mostrar en el Finder"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Queue items"; ObjectID = "13"; */ 14 | "13.title" = "Elementos en cola"; 15 | 16 | /* Class = "NSMenuItem"; title = "Remove from queue"; ObjectID = "79"; */ 17 | "79.title" = "Quitar de la cola"; 18 | 19 | /* Class = "NSMenuItem"; title = "Remove completed items"; ObjectID = "86"; */ 20 | "86.title" = "Quitar elementos terminados"; 21 | 22 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Info"; ObjectID = "o98-wM-YAQ"; */ 23 | "o98-wM-YAQ.ibExternalAccessibilityDescription" = "Info"; 24 | 25 | /* Class = "NSButton"; ibShadowedToolTip = "Show item info"; ObjectID = "o98-wM-YAQ"; */ 26 | "o98-wM-YAQ.ibShadowedToolTip" = "Mostrar información del elemento"; 27 | 28 | /* Class = "NSMenuItem"; title = "Edit…"; ObjectID = "qHz-Zh-l5L"; */ 29 | "qHz-Zh-l5L.title" = "Editar…"; 30 | 31 | -------------------------------------------------------------------------------- /es-419.lproj/QueueItem.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Actions:"; ObjectID = "4B2-1n-ouM"; */ 2 | "4B2-1n-ouM.title" = "Acciones:"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "ItemName"; ObjectID = "5j3-R9-JdX"; */ 5 | "5j3-R9-JdX.title" = "ItemName"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Source:"; ObjectID = "9De-A4-Oas"; */ 8 | "9De-A4-Oas.title" = "Fuente:"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Destination:"; ObjectID = "9R2-ND-o8w"; */ 11 | "9R2-ND-o8w.title" = "Destino:"; 12 | 13 | /* Class = "NSButtonCell"; title = "Edit…"; ObjectID = "cEO-ol-OLW"; */ 14 | "cEO-ol-OLW.title" = "Editar…"; 15 | 16 | /* Class = "CocoaBindingsConnection"; ibShadowedDisplayPattern = "%{value1}@"; ObjectID = "YsQ-nM-zxb"; */ 17 | "YsQ-nM-zxb.ibShadowedDisplayPattern" = "%{value1}@"; 18 | 19 | -------------------------------------------------------------------------------- /es-419.lproj/SBActivityWindow.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Message Log"; ObjectID = "F0z-JX-Cv5"; */ 2 | "F0z-JX-Cv5.title" = "Registro del mensajes"; 3 | 4 | /* Class = "NSButtonCell"; title = "Clear"; ObjectID = "h1X-Ni-exQ"; */ 5 | "h1X-Ni-exQ.title" = "Borrar"; 6 | 7 | -------------------------------------------------------------------------------- /es-419.lproj/SBChapterSearch.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Search results"; ObjectID = "1tx-ei-5Gq"; */ 2 | "1tx-ei-5Gq.ibExternalAccessibilityDescription" = "Resultados de búsqueda"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "3iF-NJ-e1F"; */ 5 | "3iF-NJ-e1F.headerCell.title" = "Título"; 6 | 7 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "6fG-qc-eA5"; */ 8 | "6fG-qc-eA5.title" = "Agregar"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Title:"; ObjectID = "b8H-Nd-479"; */ 11 | "b8H-Nd-479.title" = "Título:"; 12 | 13 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "CPc-iU-dzR"; */ 14 | "CPc-iU-dzR.title" = "Buscar"; 15 | 16 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Result details"; ObjectID = "EaL-hZ-8qa"; */ 17 | "EaL-hZ-8qa.ibExternalAccessibilityDescription" = "Detalles de los resultados"; 18 | 19 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "kEl-ZX-dAp"; */ 20 | "kEl-ZX-dAp.headerCell.title" = "Título"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "L1K-5d-J2y"; */ 23 | "L1K-5d-J2y.headerCell.title" = "Duración"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Confirmations"; ObjectID = "NUF-4K-8JF"; */ 26 | "NUF-4K-8JF.headerCell.title" = "Confirmaciones"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Chapters"; ObjectID = "O5Q-ih-ipB"; */ 29 | "O5Q-ih-ipB.headerCell.title" = "Capítulos"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "QM5-jw-kZn"; */ 32 | "QM5-jw-kZn.title" = "Cancelar"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "UaF-b6-Y6G"; */ 35 | "UaF-b6-Y6G.headerCell.title" = "Tiempo"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "xUb-i4-9A1"; */ 38 | "xUb-i4-9A1.title" = "Estado del progreso"; 39 | 40 | -------------------------------------------------------------------------------- /fr.lproj/ArtworkSelector.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Load more artwork..."; ObjectID = "40h-Rv-m31"; */ 2 | "40h-Rv-m31.title" = "Charger plus d'illustrations"; 3 | 4 | /* Class = "NSSlider"; ibExternalAccessibilityDescription = "Zoom"; ObjectID = "fMj-Ew-Qej"; */ 5 | "fMj-Ew-Qej.ibExternalAccessibilityDescription" = "Zoom"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set as artwork"; ObjectID = "rMb-PC-yTA"; */ 8 | "rMb-PC-yTA.title" = "Définir comme illustration"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "TbL-2H-ra9"; */ 11 | "TbL-2H-ra9.title" = "État de la progression"; 12 | 13 | /* Class = "NSButtonCell"; title = "None"; ObjectID = "UDG-fN-bQH"; */ 14 | "UDG-fN-bQH.title" = "Aucun"; 15 | 16 | -------------------------------------------------------------------------------- /fr.lproj/FileImportController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Import Metadata"; ObjectID = "0dA-so-rlU"; */ 2 | "0dA-so-rlU.title" = "Importer les métadonnées"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Select tracks:"; ObjectID = "1JV-df-zeq"; */ 5 | "1JV-df-zeq.title" = "Sélectionner les pistes :"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "0"; ObjectID = "2LD-y7-Ko1"; */ 8 | "2LD-y7-Ko1.title" = "0"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "a2Q-90-iMO"; */ 11 | "a2Q-90-iMO.headerCell.title" = "Id"; 12 | 13 | /* Class = "NSMenuItem"; title = "Check only tracks with the same language"; ObjectID = "D3Y-pV-hxZ"; */ 14 | "D3Y-pV-hxZ.title" = "Vérifier seulement les pistes de la même langue"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "dyL-5A-jbn"; */ 17 | "dyL-5A-jbn.headerCell.title" = "Langue"; 18 | 19 | /* Class = "NSMenuItem"; title = "Check"; ObjectID = "GIM-Js-R4l"; */ 20 | "GIM-Js-R4l.title" = "Vérifier"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "jac-jE-VHr"; */ 23 | "jac-jE-VHr.headerCell.title" = "Durée"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Info"; ObjectID = "JH3-2P-Na2"; */ 26 | "JH3-2P-Na2.title" = "Info"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "Lang"; ObjectID = "KM9-Op-UNe"; */ 29 | "KM9-Op-UNe.title" = "Lang"; 30 | 31 | /* Class = "NSTextFieldCell"; title = "id"; ObjectID = "Nrs-BO-n8T"; */ 32 | "Nrs-BO-n8T.title" = "id"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "oS0-t5-87P"; */ 35 | "oS0-t5-87P.headerCell.title" = "Nom"; 36 | 37 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "QCb-5J-Vfs"; */ 38 | "QCb-5J-Vfs.title" = "Ajout"; 39 | 40 | /* Class = "NSTableColumn"; headerCell.title = "Info"; ObjectID = "qRv-Tq-YMF"; */ 41 | "qRv-Tq-YMF.headerCell.title" = "Info"; 42 | 43 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "vW6-FN-zyM"; */ 44 | "vW6-FN-zyM.title" = "Annuler"; 45 | 46 | /* Class = "NSMenuItem"; title = "Uncheck"; ObjectID = "w6q-DP-C0O"; */ 47 | "w6q-DP-C0O.title" = "Désélectionner"; 48 | 49 | /* Class = "NSTableColumn"; headerCell.title = "Action"; ObjectID = "zFW-wr-9sg"; */ 50 | "zFW-wr-9sg.headerCell.title" = "Action"; 51 | 52 | -------------------------------------------------------------------------------- /fr.lproj/GeneralPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Middle"; ObjectID = "2o1-dB-mt1"; */ 2 | "2o1-dB-mt1.title" = "Milieu"; 3 | 4 | /* Class = "NSButtonCell"; title = "Automatically check for update daily"; ObjectID = "2Pf-pq-4IX"; */ 5 | "2Pf-pq-4IX.title" = "Vérifier automatiquement les mises à jour quotidiennement"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Beginning"; ObjectID = "3Vs-qA-7Z6"; */ 8 | "3Vs-qA-7Z6.title" = "Début"; 9 | 10 | /* Class = "NSButtonCell"; title = "Create Preview Images at position:"; ObjectID = "84"; */ 11 | "84.title" = "Créer des images d'aperçu à la position :"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Chapters:"; ObjectID = "85"; */ 14 | "85.title" = "Chapitres :"; 15 | 16 | /* Class = "NSButtonCell"; title = "Remember Size"; ObjectID = "86"; */ 17 | "86.title" = "Se souvenir de la taille"; 18 | 19 | /* Class = "NSButtonCell"; title = "Show open panel"; ObjectID = "87"; */ 20 | "87.title" = "Afficher le panneau d'ouverture"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Window:"; ObjectID = "88"; */ 23 | "88.title" = "Fenêtre :"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "At Launch:"; ObjectID = "89"; */ 26 | "89.title" = "Au lancement :"; 27 | 28 | /* Class = "NSButtonCell"; title = "Clear recent searches"; ObjectID = "134"; */ 29 | "134.title" = "Supprimer les recherches récentes"; 30 | 31 | /* Class = "NSButtonCell"; title = "Delete cached metadata"; ObjectID = "137"; */ 32 | "137.title" = "Supprimer le cache des métadonnées"; 33 | 34 | /* Class = "NSTextFieldCell"; title = "Privacy:"; ObjectID = "140"; */ 35 | "140.title" = "Confidentialité :"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Show ratings for:"; ObjectID = "207"; */ 38 | "207.title" = "Afficher les notes pour :"; 39 | 40 | /* Class = "NSTextFieldCell"; title = "USA ratings are always shown."; ObjectID = "250"; */ 41 | "250.title" = "Les notes USA sont toujours affichées."; 42 | 43 | /* Class = "NSTextFieldCell"; title = "End"; ObjectID = "He0-rl-DBi"; */ 44 | "He0-rl-DBi.title" = "Fin"; 45 | 46 | -------------------------------------------------------------------------------- /fr.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle name */ 2 | "CFBundleName" = "Subler"; 3 | 4 | /* (No Comment) */ 5 | "Matroska video" = "Vidéo Matroska"; 6 | 7 | /* Privacy - AppleEvents Sending Usage Description */ 8 | "NSAppleEventsUsageDescription" = "Subler nécessite l'accès pour ajouter des films à iTunes ou TV"; 9 | 10 | /* Copyright (human-readable) */ 11 | "NSHumanReadableCopyright" = "Droit d'auteur © 2009-2025, Damiano Galassi"; 12 | 13 | /* (No Comment) */ 14 | "SRT Subtitles" = "Sous-titres SRT"; 15 | 16 | /* (No Comment) */ 17 | "SSA Subtitles" = "Sous-titres SSA"; 18 | 19 | -------------------------------------------------------------------------------- /fr.lproj/MediaTagsController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Check"; ObjectID = "7h1-sO-aUd"; */ 2 | "7h1-sO-aUd.title" = "Vérifier"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Media tags:"; ObjectID = "xXI-Cs-cBg"; */ 5 | "xXI-Cs-cBg.title" = "Etiquettes du média :"; 6 | 7 | -------------------------------------------------------------------------------- /fr.lproj/PrefsWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Preferences"; ObjectID = "1"; */ 2 | "1.title" = "Préférences"; 3 | 4 | /* Class = "NSToolbarItem"; label = "General"; ObjectID = "5r6-9s-apQ"; */ 5 | "5r6-9s-apQ.label" = "Général"; 6 | 7 | /* Class = "NSToolbarItem"; paletteLabel = "General"; ObjectID = "5r6-9s-apQ"; */ 8 | "5r6-9s-apQ.paletteLabel" = "Général"; 9 | 10 | /* Class = "NSToolbarItem"; label = "OCR"; ObjectID = "btg-Uy-o7I"; */ 11 | "btg-Uy-o7I.label" = "OCR"; 12 | 13 | /* Class = "NSToolbarItem"; paletteLabel = "OCR"; ObjectID = "btg-Uy-o7I"; */ 14 | "btg-Uy-o7I.paletteLabel" = "OCR"; 15 | 16 | /* Class = "NSToolbarItem"; label = "Sets"; ObjectID = "PFq-0J-qih"; */ 17 | "PFq-0J-qih.label" = "Ensembles"; 18 | 19 | /* Class = "NSToolbarItem"; paletteLabel = "Sets"; ObjectID = "PFq-0J-qih"; */ 20 | "PFq-0J-qih.paletteLabel" = "Ensembles"; 21 | 22 | /* Class = "NSToolbarItem"; label = "Advanced"; ObjectID = "udf-m4-mG8"; */ 23 | "udf-m4-mG8.label" = "Avancé"; 24 | 25 | /* Class = "NSToolbarItem"; paletteLabel = "Advanced"; ObjectID = "udf-m4-mG8"; */ 26 | "udf-m4-mG8.paletteLabel" = "Avancé"; 27 | 28 | /* Class = "NSToolbarItem"; label = "Filename"; ObjectID = "uxW-fx-zpe"; */ 29 | "uxW-fx-zpe.label" = "Nom de fichier"; 30 | 31 | /* Class = "NSToolbarItem"; paletteLabel = "Filename"; ObjectID = "uxW-fx-zpe"; */ 32 | "uxW-fx-zpe.paletteLabel" = "Nom de fichier"; 33 | 34 | /* Class = "NSToolbarItem"; label = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 35 | "Z2w-05-k1g.label" = "Métadonnées"; 36 | 37 | /* Class = "NSToolbarItem"; paletteLabel = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 38 | "Z2w-05-k1g.paletteLabel" = "Métadonnées"; 39 | 40 | -------------------------------------------------------------------------------- /fr.lproj/Queue.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Queue"; ObjectID = "1"; */ 2 | "1.title" = "File d'attente"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Queue"; ObjectID = "7"; */ 5 | "7.ibExternalAccessibilityDescription" = "File d'attente"; 6 | 7 | /* Class = "NSTableColumn"; headerCell.title = "nameColumn"; ObjectID = "8"; */ 8 | "8.headerCell.title" = "nameColumn"; 9 | 10 | /* Class = "NSMenuItem"; title = "Reveal in Finder"; ObjectID = "8gi-57-i6u"; */ 11 | "8gi-57-i6u.title" = "Afficher dans le Finder"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Queue items"; ObjectID = "13"; */ 14 | "13.title" = "Mettre en file d'attente"; 15 | 16 | /* Class = "NSMenuItem"; title = "Remove from queue"; ObjectID = "79"; */ 17 | "79.title" = "Retirer de la file d'attente"; 18 | 19 | /* Class = "NSMenuItem"; title = "Remove completed items"; ObjectID = "86"; */ 20 | "86.title" = "Retirer les éléments complétés"; 21 | 22 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Info"; ObjectID = "o98-wM-YAQ"; */ 23 | "o98-wM-YAQ.ibExternalAccessibilityDescription" = "Info"; 24 | 25 | /* Class = "NSButton"; ibShadowedToolTip = "Show item info"; ObjectID = "o98-wM-YAQ"; */ 26 | "o98-wM-YAQ.ibShadowedToolTip" = "Afficher les informations de l'élément"; 27 | 28 | /* Class = "NSMenuItem"; title = "Edit…"; ObjectID = "qHz-Zh-l5L"; */ 29 | "qHz-Zh-l5L.title" = "Modifier..."; 30 | 31 | -------------------------------------------------------------------------------- /fr.lproj/QueueItem.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Actions:"; ObjectID = "4B2-1n-ouM"; */ 2 | "4B2-1n-ouM.title" = "Actions :"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "ItemName"; ObjectID = "5j3-R9-JdX"; */ 5 | "5j3-R9-JdX.title" = "ItemName"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Source:"; ObjectID = "9De-A4-Oas"; */ 8 | "9De-A4-Oas.title" = "Source :"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Destination:"; ObjectID = "9R2-ND-o8w"; */ 11 | "9R2-ND-o8w.title" = "Destination :"; 12 | 13 | /* Class = "NSButtonCell"; title = "Edit…"; ObjectID = "cEO-ol-OLW"; */ 14 | "cEO-ol-OLW.title" = "Modifier..."; 15 | 16 | /* Class = "CocoaBindingsConnection"; ibShadowedDisplayPattern = "%{value1}@"; ObjectID = "YsQ-nM-zxb"; */ 17 | "YsQ-nM-zxb.ibShadowedDisplayPattern" = "%{value1}@"; 18 | 19 | -------------------------------------------------------------------------------- /fr.lproj/SBActivityWindow.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Message Log"; ObjectID = "F0z-JX-Cv5"; */ 2 | "F0z-JX-Cv5.title" = "Journal des messages"; 3 | 4 | /* Class = "NSButtonCell"; title = "Clear"; ObjectID = "h1X-Ni-exQ"; */ 5 | "h1X-Ni-exQ.title" = "Effacer"; 6 | 7 | -------------------------------------------------------------------------------- /fr.lproj/SBChapterSearch.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Search results"; ObjectID = "1tx-ei-5Gq"; */ 2 | "1tx-ei-5Gq.ibExternalAccessibilityDescription" = "Résultats de la recherche"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "3iF-NJ-e1F"; */ 5 | "3iF-NJ-e1F.headerCell.title" = "Titre"; 6 | 7 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "6fG-qc-eA5"; */ 8 | "6fG-qc-eA5.title" = "Ajouter"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Title:"; ObjectID = "b8H-Nd-479"; */ 11 | "b8H-Nd-479.title" = "Titre :"; 12 | 13 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "CPc-iU-dzR"; */ 14 | "CPc-iU-dzR.title" = "Rechercher"; 15 | 16 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Result details"; ObjectID = "EaL-hZ-8qa"; */ 17 | "EaL-hZ-8qa.ibExternalAccessibilityDescription" = "Détails des résultats"; 18 | 19 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "kEl-ZX-dAp"; */ 20 | "kEl-ZX-dAp.headerCell.title" = "Titre"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "L1K-5d-J2y"; */ 23 | "L1K-5d-J2y.headerCell.title" = "Durée"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Confirmations"; ObjectID = "NUF-4K-8JF"; */ 26 | "NUF-4K-8JF.headerCell.title" = "Confirmations"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Chapters"; ObjectID = "O5Q-ih-ipB"; */ 29 | "O5Q-ih-ipB.headerCell.title" = "Chapitres"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "QM5-jw-kZn"; */ 32 | "QM5-jw-kZn.title" = "Annuler"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "UaF-b6-Y6G"; */ 35 | "UaF-b6-Y6G.headerCell.title" = "Heure"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "xUb-i4-9A1"; */ 38 | "xUb-i4-9A1.title" = "Etat de la progression"; 39 | 40 | -------------------------------------------------------------------------------- /it.lproj/ArtworkSelector.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Load more artwork..."; ObjectID = "40h-Rv-m31"; */ 2 | "40h-Rv-m31.title" = "Carica più illustrazioni…"; 3 | 4 | /* Class = "NSSlider"; ibExternalAccessibilityDescription = "Zoom"; ObjectID = "fMj-Ew-Qej"; */ 5 | "fMj-Ew-Qej.ibExternalAccessibilityDescription" = "Ingrandisci"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set as artwork"; ObjectID = "rMb-PC-yTA"; */ 8 | "rMb-PC-yTA.title" = "Imposta come illustrazione"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "TbL-2H-ra9"; */ 11 | "TbL-2H-ra9.title" = "Stato progresso"; 12 | 13 | /* Class = "NSButtonCell"; title = "None"; ObjectID = "UDG-fN-bQH"; */ 14 | "UDG-fN-bQH.title" = "Nessuno"; 15 | 16 | -------------------------------------------------------------------------------- /it.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf2709 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fswiss\fcharset0 ArialMT; 3 | } 4 | {\colortbl;\red255\green255\blue255;\red0\green0\blue0;} 5 | {\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;} 6 | \paperw12240\paperh15840\vieww9000\viewh8400\viewkind0 7 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 8 | 9 | \f0\b\fs24 \cf2 Engineering & Human Interface Design: 10 | \f1\b0 \ 11 | Damiano Galassi\ 12 | \ 13 | 14 | \f0\b Project Contributors:\ 15 | 16 | \f1\b0 17 | \f2\fs26 Douglas Stebila\ 18 | Priit Varik 19 | \f0\b\fs24 \ 20 | 21 | \f1\b0 Ryan Walklin\ 22 | Bicus\ 23 | Odibi\ 24 | 25 | \f2\fs26 maury.markowitz 26 | \f1\fs24 \ 27 | \ 28 | 29 | \f0\b Metadata providers: 30 | \f1\b0 \ 31 | TMDb (TheMovieDB). This product uses the TMDb API but is not endorsed or certified by TMDb.\ 32 | {\field{\*\fldinst{HYPERLINK "https://themoviedb.org/"}}{\fldrslt https://themoviedb.org/}}\ 33 | TheTVDB\ 34 | {\field{\*\fldinst{HYPERLINK "https://thetvdb.com/"}}{\fldrslt https://thetvdb.com/}}\ 35 | Squared TV Art\ 36 | {\field{\*\fldinst{HYPERLINK "https://squaredtvart.tumblr.com"}}{\fldrslt https://squaredtvart.tumblr.com}}\ 37 | ChapterDB\ 38 | {\field{\*\fldinst{HYPERLINK "http://chapterdb.plex.tv"}}{\fldrslt http://chapterdb.plex.tv}}\ 39 | \ 40 | 41 | \f0\b Third-Party Resources:\ 42 | 43 | \f1\b0 Tesseract\ 44 | {\field{\*\fldinst{HYPERLINK "https://github.com/tesseract-ocr/tesseract"}}{\fldrslt https://github.com/tesseract-ocr/tesseract}}\ 45 | Perian Project\ 46 | {\field{\*\fldinst{HYPERLINK "https://www.perian.org"}}{\fldrslt https://www.perian.org}}\ 47 | HandBrake\ 48 | {\field{\*\fldinst{HYPERLINK "https://handbrake.fr/"}}{\fldrslt https://handbrake.fr/}}\ 49 | mp4v2\ 50 | {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/mp4v2"}}{\fldrslt https://code.google.com/p/mp4v2}}\ 51 | FFmpeg\ 52 | {\field{\*\fldinst{HYPERLINK "https://ffmpeg.org/"}}{\fldrslt https://ffmpeg.org/}} \ 53 | Video::Filename Perl library (by Behan Webster)\ 54 | {\field{\*\fldinst{HYPERLINK "http://search.cpan.org/~behanw/Video-Filename-0.35/"}}{\fldrslt http://search.cpan.org/~behanw/Video-Filename-0.35/}}\ 55 | \ 56 | The code is available under the GPL. The development site is located at {\field{\*\fldinst{HYPERLINK "https://github.com/SublerApp/Subler"}}{\fldrslt https://github.com/SublerApp/Subler}}} -------------------------------------------------------------------------------- /it.lproj/FileImportController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Import Metadata"; ObjectID = "0dA-so-rlU"; */ 2 | "0dA-so-rlU.title" = "Importa Metadata"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Select tracks:"; ObjectID = "1JV-df-zeq"; */ 5 | "1JV-df-zeq.title" = "Seleziona tracce:"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "0"; ObjectID = "2LD-y7-Ko1"; */ 8 | "2LD-y7-Ko1.title" = "0"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "a2Q-90-iMO"; */ 11 | "a2Q-90-iMO.headerCell.title" = "Id"; 12 | 13 | /* Class = "NSMenuItem"; title = "Check only tracks with the same language"; ObjectID = "D3Y-pV-hxZ"; */ 14 | "D3Y-pV-hxZ.title" = "Abilità solo le tracce aventi la stessa lingua"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "dyL-5A-jbn"; */ 17 | "dyL-5A-jbn.headerCell.title" = "Lingua"; 18 | 19 | /* Class = "NSMenuItem"; title = "Check"; ObjectID = "GIM-Js-R4l"; */ 20 | "GIM-Js-R4l.title" = "Abilita"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "jac-jE-VHr"; */ 23 | "jac-jE-VHr.headerCell.title" = "Durata"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Info"; ObjectID = "JH3-2P-Na2"; */ 26 | "JH3-2P-Na2.title" = "Info"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "id"; ObjectID = "Nrs-BO-n8T"; */ 29 | "Nrs-BO-n8T.title" = "id"; 30 | 31 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "oS0-t5-87P"; */ 32 | "oS0-t5-87P.headerCell.title" = "Nome"; 33 | 34 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "QCb-5J-Vfs"; */ 35 | "QCb-5J-Vfs.title" = "Aggiungi"; 36 | 37 | /* Class = "NSTableColumn"; headerCell.title = "Info"; ObjectID = "qRv-Tq-YMF"; */ 38 | "qRv-Tq-YMF.headerCell.title" = "Info"; 39 | 40 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "vW6-FN-zyM"; */ 41 | "vW6-FN-zyM.title" = "Annulla"; 42 | 43 | /* Class = "NSMenuItem"; title = "Uncheck"; ObjectID = "w6q-DP-C0O"; */ 44 | "w6q-DP-C0O.title" = "Disabilita"; 45 | 46 | /* Class = "NSTableColumn"; headerCell.title = "Action"; ObjectID = "zFW-wr-9sg"; */ 47 | "zFW-wr-9sg.headerCell.title" = "Azione"; 48 | 49 | -------------------------------------------------------------------------------- /it.lproj/GeneralPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Middle"; ObjectID = "2o1-dB-mt1"; */ 2 | "2o1-dB-mt1.title" = "Metà"; 3 | 4 | /* Class = "NSButtonCell"; title = "Automatically check for update daily"; ObjectID = "2Pf-pq-4IX"; */ 5 | "2Pf-pq-4IX.title" = "Controlla automaticamente per aggiornamenti ogni giorno"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Beginning"; ObjectID = "3Vs-qA-7Z6"; */ 8 | "3Vs-qA-7Z6.title" = "Inizio"; 9 | 10 | /* Class = "NSButtonCell"; title = "Create Preview Images at position:"; ObjectID = "84"; */ 11 | "84.title" = "Crea immagini di anteprima alla posizione:"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Chapters:"; ObjectID = "85"; */ 14 | "85.title" = "Capitoli:"; 15 | 16 | /* Class = "NSButtonCell"; title = "Remember Size"; ObjectID = "86"; */ 17 | "86.title" = "Ricorda dimensione"; 18 | 19 | /* Class = "NSButtonCell"; title = "Show open panel"; ObjectID = "87"; */ 20 | "87.title" = "Mostra il pannello di apertura"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Window:"; ObjectID = "88"; */ 23 | "88.title" = "Finestra:"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "At Launch:"; ObjectID = "89"; */ 26 | "89.title" = "All'avvio:"; 27 | 28 | /* Class = "NSButtonCell"; title = "Clear recent searches"; ObjectID = "134"; */ 29 | "134.title" = "Cancella ricerche recenti"; 30 | 31 | /* Class = "NSButtonCell"; title = "Delete cached metadata"; ObjectID = "137"; */ 32 | "137.title" = "Cancella cache metadata"; 33 | 34 | /* Class = "NSTextFieldCell"; title = "Privacy:"; ObjectID = "140"; */ 35 | "140.title" = "Privacy:"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Show ratings for:"; ObjectID = "207"; */ 38 | "207.title" = "Mostra classifiche per:"; 39 | 40 | /* Class = "NSTextFieldCell"; title = "USA ratings are always shown."; ObjectID = "250"; */ 41 | "250.title" = "Le classifiche USA sono sempre visibili."; 42 | 43 | /* Class = "NSTextFieldCell"; title = "End"; ObjectID = "He0-rl-DBi"; */ 44 | "He0-rl-DBi.title" = "Fine"; 45 | 46 | -------------------------------------------------------------------------------- /it.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle name */ 2 | "CFBundleName" = "Subler"; 3 | 4 | /* (No Comment) */ 5 | "Matroska video" = "Matroska video"; 6 | 7 | /* Privacy - AppleEvents Sending Usage Description */ 8 | "NSAppleEventsUsageDescription" = "Subler ha bisogno dell'autorizzazione per aggiungere i filmati ad iTunes o a TV"; 9 | 10 | /* Copyright (human-readable) */ 11 | "NSHumanReadableCopyright" = "Copyright © 2009-2025, Damiano Galassi"; 12 | 13 | /* (No Comment) */ 14 | "SRT Subtitles" = "Sottotitoli SRT"; 15 | 16 | /* (No Comment) */ 17 | "SSA Subtitles" = "SSA"; 18 | 19 | -------------------------------------------------------------------------------- /it.lproj/MediaTagsController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Check"; ObjectID = "7h1-sO-aUd"; */ 2 | "7h1-sO-aUd.title" = "Abilita"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Media tags:"; ObjectID = "xXI-Cs-cBg"; */ 5 | "xXI-Cs-cBg.title" = "Tag media:"; 6 | 7 | -------------------------------------------------------------------------------- /it.lproj/MetadataSearch.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Metadata Provider"; ObjectID = "0aO-Wz-ASZ"; */ 2 | "0aO-Wz-ASZ.ibExternalAccessibilityDescription" = "Provider metadata"; 3 | 4 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Language"; ObjectID = "4yY-id-JNb"; */ 5 | "4yY-id-JNb.ibExternalAccessibilityDescription" = "Lingua"; 6 | 7 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "5Mu-cI-Uiu"; */ 8 | "5Mu-cI-Uiu.title" = "Cerca"; 9 | 10 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Result details"; ObjectID = "7Te-u0-Sax"; */ 11 | "7Te-u0-Sax.ibExternalAccessibilityDescription" = "Dettagli risultato"; 12 | 13 | /* Class = "NSTabViewItem"; label = "Movie"; ObjectID = "apc-8c-iyM"; */ 14 | "apc-8c-iyM.label" = "Film"; 15 | 16 | /* Class = "NSMenuItem"; title = "TheMovieDB"; ObjectID = "FoR-26-u9n"; */ 17 | "FoR-26-u9n.title" = "TheMovieDB"; 18 | 19 | /* Class = "NSTabViewItem"; label = "TV Episode"; ObjectID = "GPk-3A-rQI"; */ 20 | "GPk-3A-rQI.label" = "Episodio TV"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "gYx-cY-5Xj"; */ 23 | "gYx-cY-5Xj.title" = "Stato progresso"; 24 | 25 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "HF1-WK-lv1"; */ 26 | "HF1-WK-lv1.title" = "Cerca"; 27 | 28 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Search results"; ObjectID = "IDz-Ox-2sW"; */ 29 | "IDz-Ox-2sW.ibExternalAccessibilityDescription" = "Risultati ricerca"; 30 | 31 | /* Class = "NSMenuItem"; title = "iTunes Store"; ObjectID = "j44-FV-Lpy"; */ 32 | "j44-FV-Lpy.title" = "iTunes Store"; 33 | 34 | /* Class = "NSMenuItem"; title = "TheMovieDB"; ObjectID = "KpX-If-oKC"; */ 35 | "KpX-If-oKC.title" = "TheMovieDB"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Season #"; ObjectID = "kz7-mH-DuT"; */ 38 | "kz7-mH-DuT.title" = "# Stagione"; 39 | 40 | /* Class = "NSTextFieldCell"; title = "TV Show:"; ObjectID = "lE4-J1-ySV"; */ 41 | "lE4-J1-ySV.title" = "Serie TV:"; 42 | 43 | /* Class = "NSMenuItem"; title = "iTunes Store"; ObjectID = "nn6-mR-Bh1"; */ 44 | "nn6-mR-Bh1.title" = "iTunes Store"; 45 | 46 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "PJC-dF-B1z"; */ 47 | "PJC-dF-B1z.title" = "Annulla"; 48 | 49 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "PqB-NK-OtT"; */ 50 | "PqB-NK-OtT.title" = "Aggiungi"; 51 | 52 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Language"; ObjectID = "qsS-B6-c2q"; */ 53 | "qsS-B6-c2q.ibExternalAccessibilityDescription" = "Lingua"; 54 | 55 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Metadata provider"; ObjectID = "UTG-O0-5RG"; */ 56 | "UTG-O0-5RG.ibExternalAccessibilityDescription" = "Provider metadata"; 57 | 58 | /* Class = "NSTextFieldCell"; title = "Movie:"; ObjectID = "uyt-vh-nv6"; */ 59 | "uyt-vh-nv6.title" = "Film:"; 60 | 61 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "XgL-ec-DEt"; */ 62 | "XgL-ec-DEt.headerCell.title" = "Annotazione"; 63 | 64 | /* Class = "NSMenuItem"; title = "TheTVDB"; ObjectID = "xjQ-ex-5kU"; */ 65 | "xjQ-ex-5kU.title" = "TheTVDB"; 66 | 67 | /* Class = "NSTextFieldCell"; title = "Episode #"; ObjectID = "Zik-QU-m81"; */ 68 | "Zik-QU-m81.title" = "# Episodio"; 69 | 70 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "ZZg-QL-MyD"; */ 71 | "ZZg-QL-MyD.headerCell.title" = "Titolo"; 72 | 73 | -------------------------------------------------------------------------------- /it.lproj/PrefsWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Preferences"; ObjectID = "1"; */ 2 | "1.title" = "Preferenze"; 3 | 4 | /* Class = "NSToolbarItem"; label = "General"; ObjectID = "5r6-9s-apQ"; */ 5 | "5r6-9s-apQ.label" = "Generali"; 6 | 7 | /* Class = "NSToolbarItem"; paletteLabel = "General"; ObjectID = "5r6-9s-apQ"; */ 8 | "5r6-9s-apQ.paletteLabel" = "Generali"; 9 | 10 | /* Class = "NSToolbarItem"; label = "OCR"; ObjectID = "btg-Uy-o7I"; */ 11 | "btg-Uy-o7I.label" = "OCR"; 12 | 13 | /* Class = "NSToolbarItem"; paletteLabel = "OCR"; ObjectID = "btg-Uy-o7I"; */ 14 | "btg-Uy-o7I.paletteLabel" = "OCR"; 15 | 16 | /* Class = "NSToolbarItem"; label = "Sets"; ObjectID = "PFq-0J-qih"; */ 17 | "PFq-0J-qih.label" = "Preset"; 18 | 19 | /* Class = "NSToolbarItem"; paletteLabel = "Sets"; ObjectID = "PFq-0J-qih"; */ 20 | "PFq-0J-qih.paletteLabel" = "Preset"; 21 | 22 | /* Class = "NSToolbarItem"; label = "Advanced"; ObjectID = "udf-m4-mG8"; */ 23 | "udf-m4-mG8.label" = "Avanzate"; 24 | 25 | /* Class = "NSToolbarItem"; paletteLabel = "Advanced"; ObjectID = "udf-m4-mG8"; */ 26 | "udf-m4-mG8.paletteLabel" = "Avanzate"; 27 | 28 | /* Class = "NSToolbarItem"; label = "Filename"; ObjectID = "uxW-fx-zpe"; */ 29 | "uxW-fx-zpe.label" = "Nome file"; 30 | 31 | /* Class = "NSToolbarItem"; paletteLabel = "Filename"; ObjectID = "uxW-fx-zpe"; */ 32 | "uxW-fx-zpe.paletteLabel" = "Nome file"; 33 | 34 | /* Class = "NSToolbarItem"; label = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 35 | "Z2w-05-k1g.label" = "Metadata"; 36 | 37 | /* Class = "NSToolbarItem"; paletteLabel = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 38 | "Z2w-05-k1g.paletteLabel" = "Metadata"; 39 | 40 | -------------------------------------------------------------------------------- /it.lproj/Queue.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Queue"; ObjectID = "1"; */ 2 | "1.title" = "Coda"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Queue"; ObjectID = "7"; */ 5 | "7.ibExternalAccessibilityDescription" = "Coda"; 6 | 7 | /* Class = "NSMenuItem"; title = "Reveal in Finder"; ObjectID = "8gi-57-i6u"; */ 8 | "8gi-57-i6u.title" = "Mostra in Finder"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Queue items"; ObjectID = "13"; */ 11 | "13.title" = "Elementi in coda"; 12 | 13 | /* Class = "NSMenuItem"; title = "Remove from queue"; ObjectID = "79"; */ 14 | "79.title" = "Rimuovi dalla coda"; 15 | 16 | /* Class = "NSMenuItem"; title = "Remove completed items"; ObjectID = "86"; */ 17 | "86.title" = "Rimuovi gli elementi completati"; 18 | 19 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Info"; ObjectID = "o98-wM-YAQ"; */ 20 | "o98-wM-YAQ.ibExternalAccessibilityDescription" = "Info"; 21 | 22 | /* Class = "NSButton"; ibShadowedToolTip = "Show item info"; ObjectID = "o98-wM-YAQ"; */ 23 | "o98-wM-YAQ.ibShadowedToolTip" = "Mostra info elemento"; 24 | 25 | /* Class = "NSMenuItem"; title = "Edit…"; ObjectID = "qHz-Zh-l5L"; */ 26 | "qHz-Zh-l5L.title" = "Modifica…"; 27 | 28 | -------------------------------------------------------------------------------- /it.lproj/QueueItem.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Actions:"; ObjectID = "4B2-1n-ouM"; */ 2 | "4B2-1n-ouM.title" = "Azioni:"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Source:"; ObjectID = "9De-A4-Oas"; */ 5 | "9De-A4-Oas.title" = "Sorgente:"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Destination:"; ObjectID = "9R2-ND-o8w"; */ 8 | "9R2-ND-o8w.title" = "Destinazione:"; 9 | 10 | /* Class = "NSButtonCell"; title = "Edit…"; ObjectID = "cEO-ol-OLW"; */ 11 | "cEO-ol-OLW.title" = "Modifica…"; 12 | 13 | -------------------------------------------------------------------------------- /it.lproj/SBActivityWindow.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Message Log"; ObjectID = "F0z-JX-Cv5"; */ 2 | "F0z-JX-Cv5.title" = "Registro Messaggi"; 3 | 4 | /* Class = "NSButtonCell"; title = "Clear"; ObjectID = "h1X-Ni-exQ"; */ 5 | "h1X-Ni-exQ.title" = "Pulisci"; 6 | 7 | -------------------------------------------------------------------------------- /it.lproj/SBChapterSearch.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Search results"; ObjectID = "1tx-ei-5Gq"; */ 2 | "1tx-ei-5Gq.ibExternalAccessibilityDescription" = "Risultati ricerca"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "3iF-NJ-e1F"; */ 5 | "3iF-NJ-e1F.headerCell.title" = "Titolo"; 6 | 7 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "6fG-qc-eA5"; */ 8 | "6fG-qc-eA5.title" = "Aggiungi"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Title:"; ObjectID = "b8H-Nd-479"; */ 11 | "b8H-Nd-479.title" = "Titolo:"; 12 | 13 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "CPc-iU-dzR"; */ 14 | "CPc-iU-dzR.title" = "Cerca"; 15 | 16 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Result details"; ObjectID = "EaL-hZ-8qa"; */ 17 | "EaL-hZ-8qa.ibExternalAccessibilityDescription" = "Dettagli risultato"; 18 | 19 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "kEl-ZX-dAp"; */ 20 | "kEl-ZX-dAp.headerCell.title" = "Titolo"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "L1K-5d-J2y"; */ 23 | "L1K-5d-J2y.headerCell.title" = "Durata"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Confirmations"; ObjectID = "NUF-4K-8JF"; */ 26 | "NUF-4K-8JF.headerCell.title" = "Conferme"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Chapters"; ObjectID = "O5Q-ih-ipB"; */ 29 | "O5Q-ih-ipB.headerCell.title" = "Capitoli"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "QM5-jw-kZn"; */ 32 | "QM5-jw-kZn.title" = "Annulla"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "UaF-b6-Y6G"; */ 35 | "UaF-b6-Y6G.headerCell.title" = "Tempo"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "xUb-i4-9A1"; */ 38 | "xUb-i4-9A1.title" = "Stato progresso"; 39 | 40 | -------------------------------------------------------------------------------- /zh-Hans.lproj/ArtworkSelector.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Load more artwork..."; ObjectID = "40h-Rv-m31"; */ 2 | "40h-Rv-m31.title" = "加载更多插图…"; 3 | 4 | /* Class = "NSSlider"; ibExternalAccessibilityDescription = "Zoom"; ObjectID = "fMj-Ew-Qej"; */ 5 | "fMj-Ew-Qej.ibExternalAccessibilityDescription" = "缩放"; 6 | 7 | /* Class = "NSButtonCell"; title = "Set as artwork"; ObjectID = "rMb-PC-yTA"; */ 8 | "rMb-PC-yTA.title" = "设为插图"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "TbL-2H-ra9"; */ 11 | "TbL-2H-ra9.title" = "进度状态"; 12 | 13 | /* Class = "NSButtonCell"; title = "None"; ObjectID = "UDG-fN-bQH"; */ 14 | "UDG-fN-bQH.title" = "无"; 15 | 16 | -------------------------------------------------------------------------------- /zh-Hans.lproj/FileImportController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Import Metadata"; ObjectID = "0dA-so-rlU"; */ 2 | "0dA-so-rlU.title" = "导入元数据"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Select tracks:"; ObjectID = "1JV-df-zeq"; */ 5 | "1JV-df-zeq.title" = "选择轨道:"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "0"; ObjectID = "2LD-y7-Ko1"; */ 8 | "2LD-y7-Ko1.title" = "0"; 9 | 10 | /* Class = "NSTableColumn"; headerCell.title = "Id"; ObjectID = "a2Q-90-iMO"; */ 11 | "a2Q-90-iMO.headerCell.title" = "ID"; 12 | 13 | /* Class = "NSMenuItem"; title = "Check only tracks with the same language"; ObjectID = "D3Y-pV-hxZ"; */ 14 | "D3Y-pV-hxZ.title" = "仅选择相同语言的轨道"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Language"; ObjectID = "dyL-5A-jbn"; */ 17 | "dyL-5A-jbn.headerCell.title" = "语言"; 18 | 19 | /* Class = "NSMenuItem"; title = "Check"; ObjectID = "GIM-Js-R4l"; */ 20 | "GIM-Js-R4l.title" = "选择"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "jac-jE-VHr"; */ 23 | "jac-jE-VHr.headerCell.title" = "持续时间"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Info"; ObjectID = "JH3-2P-Na2"; */ 26 | "JH3-2P-Na2.title" = "简介"; 27 | 28 | /* Class = "NSTextFieldCell"; title = "Lang"; ObjectID = "KM9-Op-UNe"; */ 29 | "KM9-Op-UNe.title" = "语言"; 30 | 31 | /* Class = "NSTextFieldCell"; title = "id"; ObjectID = "Nrs-BO-n8T"; */ 32 | "Nrs-BO-n8T.title" = "id"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Name"; ObjectID = "oS0-t5-87P"; */ 35 | "oS0-t5-87P.headerCell.title" = "名称"; 36 | 37 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "QCb-5J-Vfs"; */ 38 | "QCb-5J-Vfs.title" = "添加"; 39 | 40 | /* Class = "NSTableColumn"; headerCell.title = "Info"; ObjectID = "qRv-Tq-YMF"; */ 41 | "qRv-Tq-YMF.headerCell.title" = "简介"; 42 | 43 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "vW6-FN-zyM"; */ 44 | "vW6-FN-zyM.title" = "取消"; 45 | 46 | /* Class = "NSMenuItem"; title = "Uncheck"; ObjectID = "w6q-DP-C0O"; */ 47 | "w6q-DP-C0O.title" = "取消选择"; 48 | 49 | /* Class = "NSTableColumn"; headerCell.title = "Action"; ObjectID = "zFW-wr-9sg"; */ 50 | "zFW-wr-9sg.headerCell.title" = "行为"; 51 | 52 | -------------------------------------------------------------------------------- /zh-Hans.lproj/GeneralPrefsViewController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Middle"; ObjectID = "2o1-dB-mt1"; */ 2 | "2o1-dB-mt1.title" = "中间处"; 3 | 4 | /* Class = "NSButtonCell"; title = "Automatically check for update daily"; ObjectID = "2Pf-pq-4IX"; */ 5 | "2Pf-pq-4IX.title" = "每天自动检查更新"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Beginning"; ObjectID = "3Vs-qA-7Z6"; */ 8 | "3Vs-qA-7Z6.title" = "开始处"; 9 | 10 | /* Class = "NSButtonCell"; title = "Create Preview Images at position:"; ObjectID = "84"; */ 11 | "84.title" = "在所选位置创建章节预览:"; 12 | 13 | /* Class = "NSTextFieldCell"; title = "Chapters:"; ObjectID = "85"; */ 14 | "85.title" = "章节:"; 15 | 16 | /* Class = "NSButtonCell"; title = "Remember Size"; ObjectID = "86"; */ 17 | "86.title" = "记住尺寸"; 18 | 19 | /* Class = "NSButtonCell"; title = "Show open panel"; ObjectID = "87"; */ 20 | "87.title" = "显示“打开”面板"; 21 | 22 | /* Class = "NSTextFieldCell"; title = "Window:"; ObjectID = "88"; */ 23 | "88.title" = "窗口:"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "At Launch:"; ObjectID = "89"; */ 26 | "89.title" = "启动时:"; 27 | 28 | /* Class = "NSButtonCell"; title = "Clear recent searches"; ObjectID = "134"; */ 29 | "134.title" = "清除最近搜索记录"; 30 | 31 | /* Class = "NSButtonCell"; title = "Delete cached metadata"; ObjectID = "137"; */ 32 | "137.title" = "删除元数据缓存"; 33 | 34 | /* Class = "NSTextFieldCell"; title = "Privacy:"; ObjectID = "140"; */ 35 | "140.title" = "隐私:"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Show ratings for:"; ObjectID = "207"; */ 38 | "207.title" = "显示分级:"; 39 | 40 | /* Class = "NSTextFieldCell"; title = "USA ratings are always shown."; ObjectID = "250"; */ 41 | "250.title" = "将始终显示美国的分级选项。"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "End"; ObjectID = "He0-rl-DBi"; */ 44 | "He0-rl-DBi.title" = "结尾处"; 45 | 46 | -------------------------------------------------------------------------------- /zh-Hans.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle name */ 2 | "CFBundleName" = "Subler"; 3 | 4 | /* (No Comment) */ 5 | "Matroska video" = "Matroska 视频"; 6 | 7 | /* Privacy - AppleEvents Sending Usage Description */ 8 | "NSAppleEventsUsageDescription" = "Subler 需要将电影添加到 iTunes 或“电视”的访问权限"; 9 | 10 | /* Copyright (human-readable) */ 11 | "NSHumanReadableCopyright" = "Copyright © 2009-2025, Damiano Galassi"; 12 | 13 | /* (No Comment) */ 14 | "SRT Subtitles" = "SRT 字幕"; 15 | 16 | /* (No Comment) */ 17 | "SSA Subtitles" = "SSA 字幕"; 18 | 19 | -------------------------------------------------------------------------------- /zh-Hans.lproj/MediaTagsController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSButtonCell"; title = "Check"; ObjectID = "7h1-sO-aUd"; */ 2 | "7h1-sO-aUd.title" = "选择"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Media tags:"; ObjectID = "xXI-Cs-cBg"; */ 5 | "xXI-Cs-cBg.title" = "媒体标记:"; 6 | 7 | -------------------------------------------------------------------------------- /zh-Hans.lproj/MetadataSearch.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Metadata Provider"; ObjectID = "0aO-Wz-ASZ"; */ 2 | "0aO-Wz-ASZ.ibExternalAccessibilityDescription" = "元数据提供方"; 3 | 4 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Language"; ObjectID = "4yY-id-JNb"; */ 5 | "4yY-id-JNb.ibExternalAccessibilityDescription" = "语言"; 6 | 7 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "5Mu-cI-Uiu"; */ 8 | "5Mu-cI-Uiu.title" = "搜索"; 9 | 10 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Result details"; ObjectID = "7Te-u0-Sax"; */ 11 | "7Te-u0-Sax.ibExternalAccessibilityDescription" = "详细结果"; 12 | 13 | /* Class = "NSTabViewItem"; label = "Movie"; ObjectID = "apc-8c-iyM"; */ 14 | "apc-8c-iyM.label" = "电影"; 15 | 16 | /* Class = "NSTableColumn"; headerCell.title = "Value"; ObjectID = "d9Q-FE-uuK"; */ 17 | "d9Q-FE-uuK.headerCell.title" = "值"; 18 | 19 | /* Class = "NSMenuItem"; title = "TheMovieDB"; ObjectID = "FoR-26-u9n"; */ 20 | "FoR-26-u9n.title" = "TheMovieDB"; 21 | 22 | /* Class = "NSTabViewItem"; label = "TV Episode"; ObjectID = "GPk-3A-rQI"; */ 23 | "GPk-3A-rQI.label" = "电视剧集"; 24 | 25 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "gYx-cY-5Xj"; */ 26 | "gYx-cY-5Xj.title" = "进度状态"; 27 | 28 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "HF1-WK-lv1"; */ 29 | "HF1-WK-lv1.title" = "搜索"; 30 | 31 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Search results"; ObjectID = "IDz-Ox-2sW"; */ 32 | "IDz-Ox-2sW.ibExternalAccessibilityDescription" = "搜索结果"; 33 | 34 | /* Class = "NSMenuItem"; title = "iTunes Store"; ObjectID = "j44-FV-Lpy"; */ 35 | "j44-FV-Lpy.title" = "iTunes Store"; 36 | 37 | /* Class = "NSMenuItem"; title = "TheMovieDB"; ObjectID = "KpX-If-oKC"; */ 38 | "KpX-If-oKC.title" = "TheMovieDB"; 39 | 40 | /* Class = "NSTextFieldCell"; title = "Season #"; ObjectID = "kz7-mH-DuT"; */ 41 | "kz7-mH-DuT.title" = "季"; 42 | 43 | /* Class = "NSTextFieldCell"; title = "TV Show:"; ObjectID = "lE4-J1-ySV"; */ 44 | "lE4-J1-ySV.title" = "电视节目:"; 45 | 46 | /* Class = "NSMenuItem"; title = "iTunes Store"; ObjectID = "nn6-mR-Bh1"; */ 47 | "nn6-mR-Bh1.title" = "iTunes Store"; 48 | 49 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "PJC-dF-B1z"; */ 50 | "PJC-dF-B1z.title" = "取消"; 51 | 52 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "PqB-NK-OtT"; */ 53 | "PqB-NK-OtT.title" = "添加"; 54 | 55 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Language"; ObjectID = "qsS-B6-c2q"; */ 56 | "qsS-B6-c2q.ibExternalAccessibilityDescription" = "语言"; 57 | 58 | /* Class = "NSPopUpButton"; ibExternalAccessibilityDescription = "Metadata provider"; ObjectID = "UTG-O0-5RG"; */ 59 | "UTG-O0-5RG.ibExternalAccessibilityDescription" = "元数据提供方"; 60 | 61 | /* Class = "NSTextFieldCell"; title = "Movie:"; ObjectID = "uyt-vh-nv6"; */ 62 | "uyt-vh-nv6.title" = "电影:"; 63 | 64 | /* Class = "NSTableColumn"; headerCell.title = "Annotation"; ObjectID = "XgL-ec-DEt"; */ 65 | "XgL-ec-DEt.headerCell.title" = "注释"; 66 | 67 | /* Class = "NSMenuItem"; title = "TheTVDB"; ObjectID = "xjQ-ex-5kU"; */ 68 | "xjQ-ex-5kU.title" = "TheTVDB"; 69 | 70 | /* Class = "NSTextFieldCell"; title = "Episode #"; ObjectID = "Zik-QU-m81"; */ 71 | "Zik-QU-m81.title" = "剧集"; 72 | 73 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "ZZg-QL-MyD"; */ 74 | "ZZg-QL-MyD.headerCell.title" = "标题"; 75 | 76 | -------------------------------------------------------------------------------- /zh-Hans.lproj/PrefsWindowController.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Preferences"; ObjectID = "1"; */ 2 | "1.title" = "偏好设置"; 3 | 4 | /* Class = "NSToolbarItem"; label = "General"; ObjectID = "5r6-9s-apQ"; */ 5 | "5r6-9s-apQ.label" = "通用"; 6 | 7 | /* Class = "NSToolbarItem"; paletteLabel = "General"; ObjectID = "5r6-9s-apQ"; */ 8 | "5r6-9s-apQ.paletteLabel" = "通用"; 9 | 10 | /* Class = "NSToolbarItem"; label = "OCR"; ObjectID = "btg-Uy-o7I"; */ 11 | "btg-Uy-o7I.label" = "OCR"; 12 | 13 | /* Class = "NSToolbarItem"; paletteLabel = "OCR"; ObjectID = "btg-Uy-o7I"; */ 14 | "btg-Uy-o7I.paletteLabel" = "OCR"; 15 | 16 | /* Class = "NSToolbarItem"; label = "Sets"; ObjectID = "PFq-0J-qih"; */ 17 | "PFq-0J-qih.label" = "预设"; 18 | 19 | /* Class = "NSToolbarItem"; paletteLabel = "Sets"; ObjectID = "PFq-0J-qih"; */ 20 | "PFq-0J-qih.paletteLabel" = "预设"; 21 | 22 | /* Class = "NSToolbarItem"; label = "Advanced"; ObjectID = "udf-m4-mG8"; */ 23 | "udf-m4-mG8.label" = "高级"; 24 | 25 | /* Class = "NSToolbarItem"; paletteLabel = "Advanced"; ObjectID = "udf-m4-mG8"; */ 26 | "udf-m4-mG8.paletteLabel" = "高级"; 27 | 28 | /* Class = "NSToolbarItem"; label = "Filename"; ObjectID = "uxW-fx-zpe"; */ 29 | "uxW-fx-zpe.label" = "文件名"; 30 | 31 | /* Class = "NSToolbarItem"; paletteLabel = "Filename"; ObjectID = "uxW-fx-zpe"; */ 32 | "uxW-fx-zpe.paletteLabel" = "文件名"; 33 | 34 | /* Class = "NSToolbarItem"; label = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 35 | "Z2w-05-k1g.label" = "元数据"; 36 | 37 | /* Class = "NSToolbarItem"; paletteLabel = "Metadata"; ObjectID = "Z2w-05-k1g"; */ 38 | "Z2w-05-k1g.paletteLabel" = "元数据"; 39 | 40 | -------------------------------------------------------------------------------- /zh-Hans.lproj/Queue.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Queue"; ObjectID = "1"; */ 2 | "1.title" = "任务队列"; 3 | 4 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Queue"; ObjectID = "7"; */ 5 | "7.ibExternalAccessibilityDescription" = "任务队列"; 6 | 7 | /* Class = "NSMenuItem"; title = "Reveal in Finder"; ObjectID = "8gi-57-i6u"; */ 8 | "8gi-57-i6u.title" = "在访达中显示"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Queue items"; ObjectID = "13"; */ 11 | "13.title" = "队列项"; 12 | 13 | /* Class = "NSMenuItem"; title = "Remove from queue"; ObjectID = "79"; */ 14 | "79.title" = "从队列中移除"; 15 | 16 | /* Class = "NSMenuItem"; title = "Remove completed items"; ObjectID = "86"; */ 17 | "86.title" = "移除已完成项"; 18 | 19 | /* Class = "NSButton"; ibExternalAccessibilityDescription = "Info"; ObjectID = "o98-wM-YAQ"; */ 20 | "o98-wM-YAQ.ibExternalAccessibilityDescription" = "简介"; 21 | 22 | /* Class = "NSButton"; ibShadowedToolTip = "Show item info"; ObjectID = "o98-wM-YAQ"; */ 23 | "o98-wM-YAQ.ibShadowedToolTip" = "显示项目简介"; 24 | 25 | /* Class = "NSMenuItem"; title = "Edit…"; ObjectID = "qHz-Zh-l5L"; */ 26 | "qHz-Zh-l5L.title" = "编辑…"; 27 | 28 | -------------------------------------------------------------------------------- /zh-Hans.lproj/QueueItem.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTextFieldCell"; title = "Actions:"; ObjectID = "4B2-1n-ouM"; */ 2 | "4B2-1n-ouM.title" = "行为:"; 3 | 4 | /* Class = "NSTextFieldCell"; title = "Source:"; ObjectID = "9De-A4-Oas"; */ 5 | "9De-A4-Oas.title" = "文件源:"; 6 | 7 | /* Class = "NSTextFieldCell"; title = "Destination:"; ObjectID = "9R2-ND-o8w"; */ 8 | "9R2-ND-o8w.title" = "目标路径:"; 9 | 10 | /* Class = "NSButtonCell"; title = "Edit…"; ObjectID = "cEO-ol-OLW"; */ 11 | "cEO-ol-OLW.title" = "编辑…"; 12 | 13 | /* Class = "CocoaBindingsConnection"; ibShadowedDisplayPattern = "%{value1}@"; ObjectID = "YsQ-nM-zxb"; */ 14 | "YsQ-nM-zxb.ibShadowedDisplayPattern" = "%{value1}@"; 15 | 16 | -------------------------------------------------------------------------------- /zh-Hans.lproj/SBActivityWindow.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSWindow"; title = "Message Log"; ObjectID = "F0z-JX-Cv5"; */ 2 | "F0z-JX-Cv5.title" = "日志信息"; 3 | 4 | /* Class = "NSButtonCell"; title = "Clear"; ObjectID = "h1X-Ni-exQ"; */ 5 | "h1X-Ni-exQ.title" = "清除"; 6 | 7 | -------------------------------------------------------------------------------- /zh-Hans.lproj/SBChapterSearch.strings: -------------------------------------------------------------------------------- 1 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Search results"; ObjectID = "1tx-ei-5Gq"; */ 2 | "1tx-ei-5Gq.ibExternalAccessibilityDescription" = "搜索结果"; 3 | 4 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "3iF-NJ-e1F"; */ 5 | "3iF-NJ-e1F.headerCell.title" = "标题"; 6 | 7 | /* Class = "NSButtonCell"; title = "Add"; ObjectID = "6fG-qc-eA5"; */ 8 | "6fG-qc-eA5.title" = "添加"; 9 | 10 | /* Class = "NSTextFieldCell"; title = "Title:"; ObjectID = "b8H-Nd-479"; */ 11 | "b8H-Nd-479.title" = "标题:"; 12 | 13 | /* Class = "NSButtonCell"; title = "Search"; ObjectID = "CPc-iU-dzR"; */ 14 | "CPc-iU-dzR.title" = "搜索"; 15 | 16 | /* Class = "NSTableView"; ibExternalAccessibilityDescription = "Result details"; ObjectID = "EaL-hZ-8qa"; */ 17 | "EaL-hZ-8qa.ibExternalAccessibilityDescription" = "详细结果"; 18 | 19 | /* Class = "NSTableColumn"; headerCell.title = "Title"; ObjectID = "kEl-ZX-dAp"; */ 20 | "kEl-ZX-dAp.headerCell.title" = "标题"; 21 | 22 | /* Class = "NSTableColumn"; headerCell.title = "Duration"; ObjectID = "L1K-5d-J2y"; */ 23 | "L1K-5d-J2y.headerCell.title" = "持续时间"; 24 | 25 | /* Class = "NSTableColumn"; headerCell.title = "Confirmations"; ObjectID = "NUF-4K-8JF"; */ 26 | "NUF-4K-8JF.headerCell.title" = "认可度"; 27 | 28 | /* Class = "NSTableColumn"; headerCell.title = "Chapters"; ObjectID = "O5Q-ih-ipB"; */ 29 | "O5Q-ih-ipB.headerCell.title" = "章节"; 30 | 31 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "QM5-jw-kZn"; */ 32 | "QM5-jw-kZn.title" = "取消"; 33 | 34 | /* Class = "NSTableColumn"; headerCell.title = "Time"; ObjectID = "UaF-b6-Y6G"; */ 35 | "UaF-b6-Y6G.headerCell.title" = "时间"; 36 | 37 | /* Class = "NSTextFieldCell"; title = "Progress status"; ObjectID = "xUb-i4-9A1"; */ 38 | "xUb-i4-9A1.title" = "进度状态"; 39 | 40 | --------------------------------------------------------------------------------