- MediaLibrary.swift: 数据模型(JSON持久化) + 播放列表管理 + 标签/喜欢 - M3UParser.swift: 解析IPTV格式M3U播放列表(EXTINF属性) - MediaLibraryView.swift: NavigationSplitView侧边栏+内容区UI - PlayerBridge.swift: 播放位置记忆(暂停/切歌/退出保存,播放恢复) - 本地视频自动入库,搜索结果临时播放列表,所有操作不中断播放 - 快捷键: Cmd+Shift+L 媒体库, Cmd+Shift+I 导入M3U
103 lines
7.5 KiB
Swift
103 lines
7.5 KiB
Swift
import Foundation
|
|
|
|
// MARK: - i18n 国际化
|
|
enum L {
|
|
// 播放控制
|
|
static let playPause = NSLocalizedString("play_pause", value: "Play/Pause", comment: "")
|
|
static let prev = NSLocalizedString("prev", value: "Previous", comment: "")
|
|
static let next = NSLocalizedString("next", value: "Next", comment: "")
|
|
static let fullscreen = NSLocalizedString("fullscreen", value: "Fullscreen", comment: "")
|
|
static let volUp = NSLocalizedString("vol_up", value: "Volume+", comment: "")
|
|
static let volDown = NSLocalizedString("vol_down", value: "Volume-", comment: "")
|
|
static let repeatMode = NSLocalizedString("repeat_mode", value: "Repeat Mode", comment: "")
|
|
static let openFile = NSLocalizedString("open_file", value: "Open File...", comment: "")
|
|
static let addURL = NSLocalizedString("add_url", value: "Add URL...", comment: "")
|
|
static let playback = NSLocalizedString("menu_playback", value: "Playback", comment: "")
|
|
static let file = NSLocalizedString("menu_file", value: "File", comment: "")
|
|
|
|
// 播放列表
|
|
static let playlist = NSLocalizedString("playlist", value: "Playlist", comment: "")
|
|
static let addFile = NSLocalizedString("add_file", value: "Add File", comment: "")
|
|
static let addURLBtn = NSLocalizedString("add_url_btn", value: "Add URL", comment: "")
|
|
static let itemsCount = NSLocalizedString("items_count", value: "items", comment: "")
|
|
static let noMedia = NSLocalizedString("no_media", value: "No media", comment: "")
|
|
|
|
// URL弹窗
|
|
static let addMediaURL = NSLocalizedString("add_media_url", value: "Add Media URL", comment: "")
|
|
static let cancel = NSLocalizedString("cancel", value: "Cancel", comment: "")
|
|
static let add = NSLocalizedString("add", value: "Add", comment: "")
|
|
|
|
// 音轨
|
|
static let selectTrack = NSLocalizedString("select_track", value: "Select Track", comment: "")
|
|
static let track = NSLocalizedString("track", value: "Track", comment: "")
|
|
static let audioTrack = NSLocalizedString("audio_track", value: "Audio Track", comment: "")
|
|
static let close = NSLocalizedString("close", value: "Close", comment: "")
|
|
|
|
// 循环模式
|
|
static let repeatNone = NSLocalizedString("repeat_none", value: "No Repeat", comment: "")
|
|
static let repeatSingle = NSLocalizedString("repeat_single", value: "Repeat One", comment: "")
|
|
static let repeatAll = NSLocalizedString("repeat_all", value: "Repeat All", comment: "")
|
|
|
|
// Toast
|
|
static func nowPlaying(_ name: String) -> String {
|
|
String(format: NSLocalizedString("now_playing", value: "Now Playing: %@", comment: ""), name)
|
|
}
|
|
static func repeatModeLabel(_ mode: String) -> String {
|
|
String(format: NSLocalizedString("repeat_mode_label", value: "Repeat: %@", comment: ""), mode)
|
|
}
|
|
static let invalidURL = NSLocalizedString("invalid_url", value: "Invalid URL", comment: "")
|
|
|
|
// 打开按钮
|
|
static let open = NSLocalizedString("open", value: "Open", comment: "")
|
|
static let list = NSLocalizedString("list", value: "List", comment: "")
|
|
|
|
// 扫码
|
|
static let scanQRCode = NSLocalizedString("scan_qr_code", value: "Scan QR Code", comment: "")
|
|
static let scanHint = NSLocalizedString("scan_hint", value: "Point camera at a QR code containing a media URL", comment: "")
|
|
static let detectedCode = NSLocalizedString("detected_code", value: "Detected:", comment: "")
|
|
|
|
// 媒体库
|
|
static let mediaLibrary = NSLocalizedString("media_library", value: "Media Library", comment: "")
|
|
static let allMedia = NSLocalizedString("all_media", value: "All Media", comment: "")
|
|
static let liked = NSLocalizedString("liked", value: "Liked", comment: "")
|
|
static let tags = NSLocalizedString("tags", value: "Tags", comment: "")
|
|
static let searchChannels = NSLocalizedString("search_channels", value: "Search channels...", comment: "")
|
|
static let importM3U = NSLocalizedString("import_m3u", value: "Import M3U", comment: "")
|
|
static let addLocal = NSLocalizedString("add_local", value: "Add Local", comment: "")
|
|
static let addAllToQueue = NSLocalizedString("add_all_queue", value: "Queue All", comment: "")
|
|
static let libraryEmpty = NSLocalizedString("library_empty", value: "Library is empty. Import M3U or add local files.", comment: "")
|
|
static let noSearchResult = NSLocalizedString("no_search_result", value: "No results found", comment: "")
|
|
static let totalItems = NSLocalizedString("total_items", value: "total", comment: "")
|
|
static let addedToQueue = NSLocalizedString("added_to_queue", value: "items added to queue", comment: "")
|
|
|
|
// 播放列表管理
|
|
static let newPlaylist = NSLocalizedString("new_playlist", value: "New Playlist", comment: "")
|
|
static let playlistName = NSLocalizedString("playlist_name", value: "Playlist name", comment: "")
|
|
static let create = NSLocalizedString("create", value: "Create", comment: "")
|
|
static let addPlaylist = NSLocalizedString("add_playlist", value: "New Playlist", comment: "")
|
|
|
|
// 标签
|
|
static let addTag = NSLocalizedString("add_tag", value: "Add Tag", comment: "")
|
|
static let tagName = NSLocalizedString("tag_name", value: "Tag name (comma separated for multiple)", comment: "")
|
|
static let removeTag = NSLocalizedString("remove_tag", value: "Remove Tag", comment: "")
|
|
|
|
// 操作
|
|
static let playNow = NSLocalizedString("play_now", value: "Play Now", comment: "")
|
|
static let addToQueue = NSLocalizedString("add_to_queue", value: "Add to Queue", comment: "")
|
|
static let addToPlaylist = NSLocalizedString("add_to_playlist", value: "Add to Playlist", comment: "")
|
|
static let delete = NSLocalizedString("delete", value: "Delete", comment: "")
|
|
|
|
// M3U 导入
|
|
static let fetch = NSLocalizedString("fetch", value: "Fetch", comment: "")
|
|
static let fetching = NSLocalizedString("fetching", value: "Fetching...", comment: "")
|
|
static let fetched = NSLocalizedString("fetched", value: "Fetched", comment: "")
|
|
static let channelsFound = NSLocalizedString("channels_found", value: "channels", comment: "")
|
|
static let selectAll = NSLocalizedString("select_all", value: "Select All", comment: "")
|
|
static let deselectAll = NSLocalizedString("deselect_all", value: "Deselect All", comment: "")
|
|
static let importSelected = NSLocalizedString("import_selected", value: "Import Selected", comment: "")
|
|
static let imported = NSLocalizedString("imported", value: "Imported", comment: "")
|
|
static let channelsAdded = NSLocalizedString("channels_added", value: "channels", comment: "")
|
|
static let fetchFailed = NSLocalizedString("fetch_failed", value: "Fetch failed", comment: "")
|
|
static let localFilesAdded = NSLocalizedString("local_files_added", value: "local files", comment: "")
|
|
}
|