Merge branch 'develop' of https://github.com/ciderapp/Cider into develop
This commit is contained in:
commit
8d6570f5bb
7 changed files with 401 additions and 22 deletions
363
src/i18n/vi_VN.jsonc
Normal file
363
src/i18n/vi_VN.jsonc
Normal file
|
@ -0,0 +1,363 @@
|
|||
{ // Base File
|
||||
|
||||
// i18n Info
|
||||
"i18n.languageName": "Tiếng Việt (VN)", // name of language in native language
|
||||
"i18n.languageNameEnglish": "Vietnamese (VN)", // name of language in English
|
||||
"i18n.category": "main", // main = real language, fun = fun community languages
|
||||
"i18n.authors": "@vapormusic", // Authors, if you contribute to this file feel free to add your name seperated with a space
|
||||
|
||||
// App info
|
||||
"app.name": "Cider",
|
||||
|
||||
"date.format": "${d} ${m}, ${y}",
|
||||
|
||||
// Dialogs
|
||||
"dialog.cancel": "Cancel",
|
||||
"dialog.ok": "OK",
|
||||
|
||||
// Notification
|
||||
"notification.updatingLibrarySongs": "Cập nhật bài hát trong thư viện...",
|
||||
"notification.updatingLibraryAlbums": "Cập nhật album trong thư viện...",
|
||||
"notification.updatingLibraryArtists": "Cập nhật ca sĩ trong thư viện...",
|
||||
|
||||
// Terms
|
||||
"term.appleInc": "Apple Inc.",
|
||||
"term.appleMusic": "Apple Music",
|
||||
"term.applePodcasts": "Apple Podcasts",
|
||||
"term.itunes": "iTunes",
|
||||
"term.github": "GitHub",
|
||||
"term.discord": "Discord",
|
||||
"term.learnMore": "Tìm hiểu thêm",
|
||||
"term.accountSettings": "Cài đặt tài khoản",
|
||||
"term.logout": "Đăng xuất",
|
||||
"term.login": "Đăng nhập",
|
||||
"term.about": "Giới thiệu",
|
||||
"term.privateSession": "Phiên dùng riêng tư",
|
||||
"term.queue": "Hàng đợi",
|
||||
"term.history": "Lịch sử",
|
||||
"term.search": "Tìm kiếm",
|
||||
"term.library": "Thư viện",
|
||||
"term.listenNow": "Nghe ngay",
|
||||
"term.browse": "Khám phá",
|
||||
"term.radio": "Radio",
|
||||
"term.recentlyAdded": "Vừa được thêm",
|
||||
"term.songs": "Bài hát",
|
||||
"term.albums": "Album",
|
||||
"term.artists": "Nghệ sĩ",
|
||||
"term.podcasts": "Podcast",
|
||||
"term.playlists": "Playlist",
|
||||
"term.playlist": "Playlist",
|
||||
"term.newPlaylist": "Playlist mới",
|
||||
"term.newPlaylistFolder": "Cụm playlist mới",
|
||||
"term.createNewPlaylist": "Tạo playlist",
|
||||
"term.createNewPlaylistFolder": "Tạo cụm playlist",
|
||||
"term.deletePlaylist": "Bạn có muốn xoá playlist này?",
|
||||
"term.play": "Phát",
|
||||
"term.pause": "Dừng",
|
||||
"term.previous": "Trước đó",
|
||||
"term.next": "Tiếp theo",
|
||||
"term.shuffle": "Xáo trộn",
|
||||
"term.repeat": "Lặp",
|
||||
"term.volume": "Âm lượng",
|
||||
"term.mute": "Tắt tiếng",
|
||||
"term.unmute": "Huỷ tắt tiếng",
|
||||
"term.share": "Chia sẻ",
|
||||
"term.share.success": "Đã lưu vào bộ nhớ tạm",
|
||||
"term.settings": "Cài đặt",
|
||||
"term.seeAll": "Xem tất cả",
|
||||
"term.sortBy": "Xếp theo",
|
||||
"term.sortBy.album": "Album",
|
||||
"term.sortBy.artist": "Nghệ sĩ",
|
||||
"term.sortBy.name": "Tên",
|
||||
"term.sortBy.genre": "Dòng nhạc",
|
||||
"term.sortBy.releaseDate": "Ngày ra mắt",
|
||||
"term.sortBy.duration": "Thời lượng",
|
||||
"term.sortOrder": "A-Z",
|
||||
"term.sortOrder.ascending": "Tăng dần",
|
||||
"term.sortOrder.descending": "Giảm dần",
|
||||
"term.viewAs": "Xem theo kiểu",
|
||||
"term.viewAs.coverArt": "Ảnh bìa",
|
||||
"term.viewAs.list": "Danh sách",
|
||||
"term.size": "Cỡ",
|
||||
"term.size.normal": "Vừa",
|
||||
"term.size.compact": "Thu gọn",
|
||||
"term.enable": "Bật",
|
||||
"term.disable": "Tắt",
|
||||
"term.enabled": "Đã bật",
|
||||
"term.disabled": "Đã tắt",
|
||||
"term.connect": "Kết nối",
|
||||
"term.connecting": "Đang kết nối",
|
||||
"term.disconnect": "Dừng kết nối",
|
||||
"term.authed": "Đã đăng nhập",
|
||||
"term.confirm": "Bạn có chăc không?",
|
||||
"term.more": "Thêm",
|
||||
"term.less": "Ít hơn",
|
||||
"term.showMore": "Hiện thêm",
|
||||
"term.showLess": "Hiện ít hơn",
|
||||
"term.topSongs": "Các bài hát nổi bật",
|
||||
"term.latestReleases": "Mới nhất",
|
||||
"term.time.added": "Thêm vào ngày",
|
||||
"term.time.released": "Ra mắt vào ngày",
|
||||
"term.time.updated": "Cập nhật vào ngày",
|
||||
"term.time.hours": "giờ",
|
||||
"term.time.hour": "giờ",
|
||||
"term.time.minutes": "phút",
|
||||
"term.time.minute": "phút",
|
||||
"term.time.seconds": "giây",
|
||||
"term.time.second": "giây",
|
||||
"term.fullscreenView": "Xem toàn màn hình",
|
||||
"term.defaultView": "Xem gốc",
|
||||
"term.audioSettings": "Cài đặt âm thanh",
|
||||
"term.clearAll": "Xoá tất cả",
|
||||
"term.recentStations": "Các đài gần đây",
|
||||
"term.language": "Ngôn ngữ",
|
||||
"term.funLanguages": "Vui vẻ",
|
||||
"term.noLyrics": "Đang tìm... / Không có lời bài hát.",
|
||||
"term.copyright": "Bản quyền",
|
||||
"term.rightsReserved": "Mọi quyền thuộc về các chủ sở hữu.",
|
||||
"term.sponsor": "Tài trợ cho dự án này",
|
||||
"term.ciderTeam": "Cider Team",
|
||||
"term.developer": "Lập trình viên",
|
||||
"term.socialTeam": "Social Team",
|
||||
"term.socials": "PR",
|
||||
"term.contributors": "Các đóng góp viên",
|
||||
"term.equalizer": "EQ",
|
||||
"term.reset": "Đặt về mặc định",
|
||||
"term.tracks": "bài", // Assume x amount of tracks. e.g. 50 tracks
|
||||
"term.videos": "Video",
|
||||
"term.menu": "Menu",
|
||||
"term.check": "Kiểm tra",
|
||||
"term.aboutArtist": "Về {{artistName}}", // e.g. 'About Doja Cat'
|
||||
"term.topResult": "Kết quả gần nhất", // Search Results
|
||||
"term.sharedPlaylists": "Playlist được chia sẻ", // Search Results
|
||||
"term.people": "Người dùng", // Search Results
|
||||
"term.newpreset.name": "Tạo thiét lập EQ", // Equalizer Preset
|
||||
"term.addedpreset": "Các thiét lập EQ đã được thêm", // Equalizer Preset
|
||||
"term.deletepreset.warn": "Bạn có muốn xoá thiết lập này?",
|
||||
"term.deletedpreset": "Thiết lập đã bị xoá",
|
||||
"term.requestError": "Có vấn đề khi thực hiện yêu cầu.",
|
||||
"term.song.link.generate": "Tìm URL danh mục trên song.link ...",
|
||||
"term.musicVideos": "Video ca nhạc", // Search page friendlyTypes
|
||||
"term.stations": "Các đài",
|
||||
"term.curators": "Nhà tuyển chọn",
|
||||
"term.appleCurators": "Tuyển chọn từ Apple",
|
||||
"term.radioShows": "Các chương trình radio",
|
||||
"term.recordLabels": "Nhà phát hành âm nhạc",
|
||||
"term.videoExtras": "Video khác",
|
||||
"term.top": "Top",
|
||||
|
||||
// Home
|
||||
"home.title": "Chính",
|
||||
"home.recentlyPlayed": "Mới phát",
|
||||
"home.recentlyAdded": "Mới thêm vào",
|
||||
"home.artistsFeed": "Theo dõi",
|
||||
"home.artistsFeed.noArtist": "Theo dõi các nhạc sĩ mà bạn yêu thích và nhận thông báo khi có bài hát mới.",
|
||||
"home.madeForYou": "Dành cho bạn",
|
||||
"home.friendsListeningTo": "Bạn bè đang nghe",
|
||||
"home.followedArtists": "Các nghệ sĩ đang theo dõi",
|
||||
|
||||
// Errors
|
||||
"error.appleMusicSubRequired": "Apple Music yêu cầu bạn đăng kí.",
|
||||
"error.connectionError": "Có vấn đề kết nối tới Apple Music.",
|
||||
"error.noResults": "Không có kết quả.",
|
||||
"error.noResults.description": "Hãy thử tìm kiếm bẳng từ khoá khác.",
|
||||
|
||||
// Podcasts
|
||||
"podcast.followOnCider": "Theo dõi trên Cider",
|
||||
"podcast.followedOnCider": "Đang theo dõi trên Cider",
|
||||
"podcast.subscribeOnItunes": "Theo dõi trên iTunes",
|
||||
"podcast.subscribedOnItunes": "Đang theo dõi iTunes",
|
||||
"podcast.itunesStore": "Cửa hàng iTunes",
|
||||
"podcast.episodes": "Các tập",
|
||||
"podcast.playEpisode": "Phát",
|
||||
"podcast.website": "Trang chủ",
|
||||
|
||||
// Actions
|
||||
"action.addToLibrary": "Thêm vào thư viện",
|
||||
"action.addToLibrary.success": "Đã thêm vào thư viện",
|
||||
"action.addToLibrary.error": "Có lỗi khi thêm vào thư viện",
|
||||
"action.removeFromLibrary": "Xoá khỏi thư viện",
|
||||
"action.removeFromLibrary.success": "Đã xoá khỏi thư viện",
|
||||
"action.addToQueue": "Thêm vào hàng đợi",
|
||||
"action.addToQueue.success": "Đã thêm vào hàng đợi",
|
||||
"action.addToQueue.error": "Có lỗi khi thêm vào hàng đợi",
|
||||
"action.removeFromQueue": "Xoá khỏi hàng đợi",
|
||||
"action.removeFromQueue.success": "Đã xoá khỏi hàng đợi",
|
||||
"action.removeFromQueue.error": "Có lỗi khi xoá khỏi hàng đợi",
|
||||
"action.createPlaylist": "Tạo playlist",
|
||||
"action.addToPlaylist": "Thêm vào playlist",
|
||||
"action.removeFromPlaylist": "Xoá khỏi playlist",
|
||||
"action.addToFavorites": "Thêm vào Yêu thích",
|
||||
"action.follow": "Theo dõi",
|
||||
"action.follow.success": "Đã theo dõi",
|
||||
"action.follow.error": "Có lỗi khi theo dõi",
|
||||
"action.unfollow": "Ngừng theo dõi",
|
||||
"action.unfollow.success": "Đã ngừng theo dõi",
|
||||
"action.unfollow.error": "Có lỗi khi ngừng theo dõi",
|
||||
"action.playNext": "Phát tiếp theo",
|
||||
"action.playLater": "Phát cuối cùng",
|
||||
"action.startRadio": "Tạo đài phát",
|
||||
"action.goToArtist": "Đi đến nghệ sĩ",
|
||||
"action.goToAlbum": "Đi đến album",
|
||||
"action.moveToTop": "Đưa lên đầu",
|
||||
"action.share": "Chia sẻ",
|
||||
"action.rename": "Đổi tên",
|
||||
"action.love": "Yêu thích",
|
||||
"action.unlove": "Bỏ yêu thích",
|
||||
"action.dislike": "Không thích",
|
||||
"action.undoDislike": "Bỏ không thích",
|
||||
"action.showWebRemoteQR": "Điều khiển từ xa",
|
||||
"action.playTracksNext": "Phát ${app.selectedMediaItems.length} bài tiếp theo",
|
||||
"action.playTracksLater": "Phát ${app.selectedMediaItems.length} bài cuối cùng",
|
||||
"action.removeTracks": "Bỏ ${self.selectedItems.length} bài khỏi hàng đợi",
|
||||
"action.import": "Nhập",
|
||||
"action.export": "Xuất",
|
||||
"action.showAlbum": "Hiện album đầy đủ",
|
||||
"action.tray.minimize": "Thu nhỏ xuống khay hệ thống",
|
||||
"action.tray.quit": "Thoát",
|
||||
"action.tray.show": "Hiện",
|
||||
"action.update": "Cập nhật",
|
||||
"action.copy": "Sao chép",
|
||||
"action.newpreset": "Thiếp lập mới...", // Equalizer Preset
|
||||
"action.deletepreset": "Xoá thiêt lập",
|
||||
|
||||
// Settings - General
|
||||
"settings.header.general": "Cài đặt chung",
|
||||
"settings.header.general.description": "Thay đổi các cài đặt chung của Cider.",
|
||||
"settings.option.general.language": "Ngôn ngữ",
|
||||
|
||||
// Language optgroups
|
||||
"settings.option.general.language.main": "Ngôn ngữ chính",
|
||||
"settings.option.general.language.fun": "Ngôn ngữ hư cấu",
|
||||
"settings.option.general.language.unsorted": "Ngôn ngữ khác",
|
||||
|
||||
// Update Cider
|
||||
"settings.option.general.updateCider": "Cập nhật Cider", // Button. Refer to term.check for the check button
|
||||
"settings.option.general.updateCider.branch": "Nhánh cập nhật", // Dropdown
|
||||
"settings.option.general.updateCider.branch.description": "Chọn nhánh cập nhật của Cider:",
|
||||
"settings.option.general.updateCider.branch.main": "Ổn định",
|
||||
"settings.option.general.updateCider.branch.develop": "Thử nghiệm",
|
||||
|
||||
// Settings - Audio
|
||||
"settings.header.audio": "Âm thanh",
|
||||
"settings.header.audio.description": "Thay đổi các cài đặt âm thanh của Cider.",
|
||||
"settings.option.audio.quality": "Chất lượng âm thanh", // Dropdown
|
||||
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||
"settings.header.audio.quality.hireslossless.description": "lên tới 24-bit/192 kHz",
|
||||
"settings.header.audio.quality.lossless": "Lossless",
|
||||
"settings.header.audio.quality.lossless.description": "lên tới 24-bit/48 kHz",
|
||||
"settings.header.audio.quality.high": "Cao",
|
||||
"settings.header.audio.quality.high.description": "256 kbps",
|
||||
"settings.header.audio.quality.standard": "Tiêu chuẩn",
|
||||
"settings.header.audio.quality.standard.description": "64 kbps",
|
||||
"settings.option.audio.seamlessTransition": "Gapless playback", // Toggle
|
||||
"settings.option.audio.enableAdvancedFunctionality": "Kích hoạt chính năng nâng cao", // Toggle
|
||||
"settings.option.audio.enableAdvancedFunctionality.description": "Bật các chức năng nâng cao sẽ kích hoạt các chức năng như EQ, Chuẩn hoá âm lượng hay Visualizer, tuy nhiên có thể sẽ ảnh hưởng tới chất lượng âm thanh",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️", // Toggle
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Các tinh chỉnh về âm thanh giúp cho nhạc của bạn ấm và rõ hơn | Tạo bởi Maikiwi.",
|
||||
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP không tương thích với Âm thanh đa chiều. Hãy tắt Âm thanh đa chiều để kích hoạt.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", // Toggle
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Chỉnh mức độ ảnh hưởng của CAP đến âm thanh. (Chế độ Mạnh có thể ảnh hưởng đến âm thanh của bạn)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Tiêu chuẩn",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Mạnh",
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Chuẩn hoá âm lượng", // Toggle
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Đặt cùng mức âm lượng cho mọi bài hát",
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Tạo Âm thanh đa chiều ", // Toggle
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Làm cho âm thanh trở nên nhiều chiều hơn (Ghi chú: Đây không phải là Dolby Atmos)",
|
||||
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Âm thanh đa chiều không tương thích với CAP. Hãy tắt CAP để kích hoạt.",
|
||||
|
||||
// Settings - Visual
|
||||
"settings.header.visual": "Hiển thị",
|
||||
"settings.header.visual.description": "Thay đổi các cài đặt hiển thị của Cider.",
|
||||
"settings.option.visual.windowBackgroundStyle": "Chế độ ảnh nền", // Toggle
|
||||
"settings.header.visual.windowBackgroundStyle.none": "Không",
|
||||
"settings.header.visual.windowBackgroundStyle.artwork": "Ảnh bìa",
|
||||
"settings.header.visual.windowBackgroundStyle.image": "Ảnh",
|
||||
"settings.option.visual.animatedArtwork": "Ảnh bìa động", // Dropdown
|
||||
"settings.header.visual.animatedArtwork.always": "Luôn bật",
|
||||
"settings.header.visual.animatedArtwork.limited": "Chỉ hiện ở mốt số trang cá nhân",
|
||||
"settings.header.visual.animatedArtwork.disable": "Tắt",
|
||||
"settings.option.visual.animatedArtworkQuality": "Chất lượng ảnh bìa động", // Dropdown
|
||||
"settings.header.visual.animatedArtworkQuality.low": "Thấp",
|
||||
"settings.header.visual.animatedArtworkQuality.medium": "Trung bình",
|
||||
"settings.header.visual.animatedArtworkQuality.high": "Cao",
|
||||
"settings.header.visual.animatedArtworkQuality.veryHigh": "Rất cao",
|
||||
"settings.header.visual.animatedArtworkQuality.extreme": "Rất rất cao",
|
||||
"settings.option.visual.animatedWindowBackground": "Hình nền chuyển động", // Toggle
|
||||
"settings.option.visual.hardwareAcceleration": "Chế độ Hiển thị", // Dropdown
|
||||
"settings.option.visual.hardwareAcceleration.description": "Yêu cầu restart lại Cider để kích hoạt",
|
||||
"settings.header.visual.hardwareAcceleration.default": "Gốc",
|
||||
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
|
||||
"settings.header.visual.theme": "Chủ đề",
|
||||
|
||||
// Settings - Visual - Theme name
|
||||
"settings.option.visual.theme.default": "Cider",
|
||||
"settings.option.visual.theme.dark": "Tối hơn",
|
||||
|
||||
// Refer to term.disabled for the disabled option
|
||||
"settings.option.visual.showPersonalInfo": "Hiện thông tin cá nhân", // Toggle
|
||||
|
||||
// Settings - Lyrics
|
||||
"settings.header.lyrics": "Lời bài hát",
|
||||
"settings.header.lyrics.description": "Thay đổi các cài đặt lời bài hát của Cider.",
|
||||
"settings.option.lyrics.enableMusixmatch": "Dùng lời từ Musixmatch", // Toggle
|
||||
"settings.option.lyrics.enableMusixmatchKaraoke": "Bật chế độ karaoke (chỉ trên lời từ Musixmatch)", // Toggle
|
||||
"settings.option.lyrics.musixmatchPreferredLanguage": "Ngôn ngữ dịch của Musixmatch", // Dropdown
|
||||
"settings.option.lyrics.enableYoutubeLyrics": "Dùng lời từ Youtube cho các Video ca nhạc", // Toggle
|
||||
|
||||
// Settings - Connectivity
|
||||
"settings.header.connectivity": "Kết nối",
|
||||
"settings.header.connectivity.description": "Thay đổi các cài đặt lời kết nối của Cider.",
|
||||
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
|
||||
"settings.option.connectivity.playbackNotifications": "Thông báo chuyển bài", // Toggle
|
||||
// Refer to term.disabled for the disabled option
|
||||
"settings.header.connectivity.discordRPC.cider": "Hiện là 'Cider'",
|
||||
"settings.header.connectivity.discordRPC.appleMusic": "Hiện là 'Apple Music'",
|
||||
"settings.option.connectivity.discordRPC.clearOnPause": "Xoá Discord Rich Presence khi dừng nhạc", // Toggle
|
||||
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling", // Option to Connect
|
||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
|
||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Bật Last.fm Now Playing",
|
||||
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Xoá các nghệ sĩ phối hợp ở tên bài hát (Last.fm)",
|
||||
"settings.option.connectivity.lastfmScrobble.filterLoop": "Lọc các bài trùng (Last.fm)",
|
||||
// Refer to term.connect for the connect button
|
||||
|
||||
// Settings - Experimental
|
||||
"settings.header.experimental": "Thử nghiệm",
|
||||
"settings.header.experimental.description": "Thay đổi các cài đặt lời thử nghiệm của Cider.",
|
||||
"settings.option.experimental.compactUI": "UI thu gọn", // Toggle
|
||||
"settings.option.experimental.close_button_hide": "Nút thoát cửa số sẽ ẩn Cider xuống khay hệ thống",
|
||||
"settings.option.experimental.copy_log": "Sao chép logs ra bộ nhớ tạm",
|
||||
"settings.option.experimental.inline_playlists": "Playlists and Albums hiện nổi lên trên",
|
||||
|
||||
// Refer to term.disabled & term.enabled
|
||||
// Spatialization Menu
|
||||
"spatial.notTurnedOn": "Âm thanh đa chiều chưa được kích hoạt. Hãy kích hoạt nó trước",
|
||||
"spatial.spatialProperties": "Tinh chỉnh cho Âm thanh đa chiều",
|
||||
"spatial.width": "Chiều rộng",
|
||||
"spatial.height": "Chiều cao",
|
||||
"spatial.depth": "Chiều sâu",
|
||||
"spatial.gain": "Gain",
|
||||
"spatial.roomMaterials": "Chất liệu phòng",
|
||||
"spatial.roomDimensions": "Kích thước phòng",
|
||||
"spatial.roomPositions": "Vị trí phòng",
|
||||
"spatial.setDimensions": "Chỉnh kích thước",
|
||||
"spatial.setPositions": "Chỉnh vị trí",
|
||||
"spatial.up": "Trên",
|
||||
"spatial.front": "Trước",
|
||||
"spatial.left": "Trái",
|
||||
"spatial.right": "Phải",
|
||||
"spatial.back": "Sau",
|
||||
"spatial.down": "Dưới",
|
||||
"spatial.listener": "Người nghe",
|
||||
"spatial.audioSource": "Nguồn âm thanh",
|
||||
|
||||
// Settings - Unfinished
|
||||
"settings.header.unfinished": "Chưa hoàn thiện",
|
||||
|
||||
// Web Remote
|
||||
"remote.web.title": "Điều khiển từ xa của Cider",
|
||||
"remote.web.description": "Quét mã QR để kết nối thiết bị của bạn với Cider",
|
||||
|
||||
// About
|
||||
"about.thanks": "Trân trọng cảm ơn Cider Collective Team và tất cả các đóng góp viên của chúng tôi."
|
||||
}
|
|
@ -88,6 +88,7 @@ const app = new Vue({
|
|||
radio: {
|
||||
personal: []
|
||||
},
|
||||
mklang : 'en',
|
||||
webview: {
|
||||
url: "",
|
||||
title: "",
|
||||
|
@ -317,6 +318,7 @@ const app = new Vue({
|
|||
lang = this.cfg.general.language
|
||||
}
|
||||
this.lz = ipcRenderer.sendSync("get-i18n", lang)
|
||||
this.mklang = this.MKJSLang()
|
||||
},
|
||||
getLz(message) {
|
||||
if (this.lz[message]) {
|
||||
|
@ -572,6 +574,8 @@ const app = new Vue({
|
|||
this.mk._services.timing.mode = 0
|
||||
this.platform = ipcRenderer.sendSync('cider-platform');
|
||||
|
||||
this.mklang = this.MKJSLang()
|
||||
|
||||
try {
|
||||
// Set profile name
|
||||
this.chrome.userinfo = (await app.mk.api.v3.music(`/v1/me/social-profile`)).data.data[0]
|
||||
|
@ -796,6 +800,7 @@ const app = new Vue({
|
|||
this.getBrowsePage();
|
||||
this.$forceUpdate()
|
||||
}, 500)
|
||||
|
||||
},
|
||||
setTheme(theme = "") {
|
||||
console.log(theme)
|
||||
|
@ -1016,12 +1021,12 @@ const app = new Vue({
|
|||
app.appRoute("collection-list")
|
||||
},
|
||||
async showArtistView(artist, title, view) {
|
||||
let response = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artist}/view/${view}`, {}, {includeResponseMeta: !0})).data
|
||||
let response = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artist}/view/${view}?l=${this.mklang}`, {}, {includeResponseMeta: !0})).data
|
||||
console.log(response)
|
||||
await this.showCollection(response, title, "artists")
|
||||
},
|
||||
async showRecordLabelView(label, title, view) {
|
||||
let response = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/record-labels/${label}/view/${view}`)).data
|
||||
let response = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/record-labels/${label}/view/${view}?l=${this.mklang}`)).data
|
||||
await this.showCollection(response, title, "record-labels")
|
||||
},
|
||||
async showSearchView(term, group, title) {
|
||||
|
@ -1051,7 +1056,8 @@ const app = new Vue({
|
|||
omit: {
|
||||
resource: ["autos"]
|
||||
},
|
||||
groups: group
|
||||
groups: group,
|
||||
l : this.mklang
|
||||
}
|
||||
let response = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/search?term=${term}`, requestBody, {
|
||||
includeResponseMeta: !0
|
||||
|
@ -1102,7 +1108,8 @@ const app = new Vue({
|
|||
"fields[playlists]": "curatorName,playlistType,name,artwork,url,playParams",
|
||||
"include[library-songs]": "catalog,artists,albums,playParams,name,artwork,url",
|
||||
"fields[catalog]": "artistUrl,albumUrl,url",
|
||||
"fields[songs]": "artistUrl,albumUrl,playParams,name,artwork,url,artistName,albumName,durationInMillis"
|
||||
"fields[songs]": "artistUrl,albumUrl,playParams,name,artwork,url,artistName,albumName,durationInMillis",
|
||||
l : this.mklang
|
||||
}
|
||||
if (!transient) {
|
||||
this.playlists.loadingState = 0;
|
||||
|
@ -1130,7 +1137,8 @@ const app = new Vue({
|
|||
"include[songs]": "albums",
|
||||
"fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount",
|
||||
"limit[artists:top-songs]": 20,
|
||||
"art[url]": "f"
|
||||
"art[url]": "f",
|
||||
l : this.mklang
|
||||
}, {includeResponseMeta: !0})
|
||||
console.log(artistData.data.data[0])
|
||||
this.artistPage.data = artistData.data.data[0]
|
||||
|
@ -1325,7 +1333,7 @@ const app = new Vue({
|
|||
}
|
||||
},
|
||||
async getNowPlayingItemDetailed(target) {
|
||||
let u = await app.mkapi(app.mk.nowPlayingItem.playParams.kind, (app.mk.nowPlayingItem.songId == -1), (app.mk.nowPlayingItem.songId != -1) ? app.mk.nowPlayingItem.songId : app.mk.nowPlayingItem["id"], {"include[songs]": "albums,artists"});
|
||||
let u = await app.mkapi(app.mk.nowPlayingItem.playParams.kind, (app.mk.nowPlayingItem.songId == -1), (app.mk.nowPlayingItem.songId != -1) ? app.mk.nowPlayingItem.songId : app.mk.nowPlayingItem["id"], {"include[songs]": "albums,artists", l : this.mklang});
|
||||
app.searchAndNavigate(u.data.data[0], target)
|
||||
},
|
||||
async searchAndNavigate(item, target) {
|
||||
|
@ -1530,6 +1538,7 @@ const app = new Vue({
|
|||
if (kind == "album" | kind == "albums") {
|
||||
params["include"] = "tracks,artists,record-labels,catalog";
|
||||
}
|
||||
params['l'] = this.mklang;
|
||||
try {
|
||||
a = await this.mkapi(kind.toString(), isLibrary, id.toString(), params, params2);
|
||||
} catch (e) {
|
||||
|
@ -1820,10 +1829,11 @@ const app = new Vue({
|
|||
"fields[catalog]": "artistUrl,albumUrl",
|
||||
"fields[songs]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
l: this.mklang
|
||||
}
|
||||
const safeparams = {
|
||||
"platform": "web",
|
||||
"limit": 80,
|
||||
"limit": 80
|
||||
}
|
||||
self.library.songs.downloadState = 1
|
||||
if (downloaded == null) {
|
||||
|
@ -1923,6 +1933,7 @@ const app = new Vue({
|
|||
"fields[catalog]": "artistUrl,albumUrl",
|
||||
"fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
l: this.mklang
|
||||
}
|
||||
const safeparams = {
|
||||
platform: "web",
|
||||
|
@ -2032,6 +2043,7 @@ const app = new Vue({
|
|||
// "fields[catalog]": "artistUrl,albumUrl",
|
||||
// "fields[artists]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url",
|
||||
limit: 100,
|
||||
l: this.mklang
|
||||
}
|
||||
const safeparams = {
|
||||
include: "catalog",
|
||||
|
@ -2122,12 +2134,12 @@ const app = new Vue({
|
|||
}
|
||||
},
|
||||
async getLibrarySongs() {
|
||||
let response = await this.mkapi("songs", true, "", {limit: 100}, {includeResponseMeta: !0})
|
||||
let response = await this.mkapi("songs", true, "", {limit: 100, l : this.mklang}, {includeResponseMeta: !0})
|
||||
this.library.songs.listing = response.data.data
|
||||
this.library.songs.meta = response.data.meta
|
||||
},
|
||||
async getLibraryAlbums() {
|
||||
let response = await this.mkapi("albums", true, "", {limit: 100}, {includeResponseMeta: !0})
|
||||
let response = await this.mkapi("albums", true, "", {limit: 100,l : this.mklang}, {includeResponseMeta: !0})
|
||||
this.library.albums.listing = response.data.data
|
||||
this.library.albums.meta = response.data.meta
|
||||
},
|
||||
|
@ -2161,7 +2173,8 @@ const app = new Vue({
|
|||
"extend[stations]": ["airDate", "supportsAirTimeUpdates"],
|
||||
"meta[stations]": "inflectionPoints",
|
||||
types: "artists,albums,editorial-items,library-albums,library-playlists,music-movies,music-videos,playlists,stations,uploaded-audios,uploaded-videos,activities,apple-curators,curators,tv-shows,social-upsells",
|
||||
platform: "web"
|
||||
platform: "web",
|
||||
l: this.mklang
|
||||
}, {
|
||||
includeResponseMeta: !0,
|
||||
reload: !0
|
||||
|
@ -2190,7 +2203,8 @@ const app = new Vue({
|
|||
"include[music-videos]": "artists",
|
||||
extend: "editorialArtwork,artistUrl",
|
||||
"fields[artists]": "name,url,artwork,editorialArtwork,genreNames,editorialNotes",
|
||||
"art[url]": "f"
|
||||
"art[url]": "f",
|
||||
l: this.mklang
|
||||
});
|
||||
this.browsepage = browse.data.data[0];
|
||||
this.browsepage.timestamp = Date.now()
|
||||
|
@ -2207,7 +2221,8 @@ const app = new Vue({
|
|||
try {
|
||||
this.radio.personal = (await app.mk.api.v3.music(`/v1/me/recent/radio-stations`, {
|
||||
"platform": "web",
|
||||
"art[url]": "f"
|
||||
"art[url]": "f",
|
||||
l: this.mklang
|
||||
})).data.data;
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
|
@ -2910,7 +2925,8 @@ const app = new Vue({
|
|||
"art[url]": "c,f",
|
||||
"omit[resource]": "autos",
|
||||
"platform": "web",
|
||||
limit: 25
|
||||
limit: 25,
|
||||
l: this.mklang
|
||||
}).then(function (results) {
|
||||
results.data.results["meta"] = results.data.meta
|
||||
self.search.results = results.data.results
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
},
|
||||
methods: {
|
||||
async getHistory() {
|
||||
let history = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`)
|
||||
let history = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, { l : this.$root.mklang})
|
||||
this.history = history.data.data
|
||||
},
|
||||
select(e, position) {
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
let self = this
|
||||
this.artists = []
|
||||
this.artistFeed = []
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${artists.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`).then(artistData => {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${artists.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`,{ l : this.$root.mklang}).then(artistData => {
|
||||
artistData.data.data.forEach(item => {
|
||||
self.artists.push(item)
|
||||
if (item.views["latest-release"].data.length != 0) {
|
||||
|
|
|
@ -289,7 +289,7 @@
|
|||
this.confirm = false
|
||||
},
|
||||
async removeFromLibrary(id) {
|
||||
const params = {"fields[somgs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library"};
|
||||
const params = {"fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library"};
|
||||
var id = this.data.id ?? this.data.attributes.playParams.id
|
||||
const res = await app.mkapi(this.data.attributes.playParams.kind ?? this.data.type, this.data.attributes.playParams.isLibrary ?? false, this.data.attributes.playParams.id ?? this.data.id, params);
|
||||
if (res.data.data[0] && res.data.data[0].relationships && res.data.data[0].relationships.library && res.data.data[0].relationships.library.data && res.data.data[0].relationships.library.data.length > 0) {
|
||||
|
|
|
@ -112,7 +112,7 @@
|
|||
},
|
||||
methods: {
|
||||
async seeAllHistory() {
|
||||
let hist = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`)
|
||||
let hist = await app.mk.api.v3.music(`/v1/me/recent/played/tracks`, { l : this.$root.mklang})
|
||||
app.showCollection(hist.data, app.getLz('term.history'))
|
||||
},
|
||||
isSectionReady(section) {
|
||||
|
@ -143,12 +143,12 @@
|
|||
}
|
||||
}
|
||||
if (playlists.length != 0) {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${playlists.toString()}`).then(playlistsData => {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${playlists.toString()}`, { l : this.$root.mklang}).then(playlistsData => {
|
||||
self.favorites.push(...playlistsData.data)
|
||||
})
|
||||
}
|
||||
if (libraryPlaylists.length != 0) {
|
||||
this.app.mk.api.v3.music(`v1/me/library/playlists/${playlists.toString()}`).then(playlistsData => {
|
||||
this.app.mk.api.v3.music(`v1/me/library/playlists/${playlists.toString()}`, { l : this.$root.mklang}).then(playlistsData => {
|
||||
self.favorites.push(...playlistsData.data)
|
||||
})
|
||||
}
|
||||
|
@ -156,7 +156,7 @@
|
|||
async getArtistFeed() {
|
||||
let artists = this.followedArtists
|
||||
let self = this
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${artists.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f`).then(artistData => {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists?ids=${artists.toString()}&views=latest-release&include[songs]=albums&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount&limit[artists:top-songs]=2&art[url]=f&l=${this.$root.mklang}`).then(artistData => {
|
||||
artistData.data.data.forEach(item => {
|
||||
if (item.views["latest-release"].data.length != 0) {
|
||||
self.artistFeed.push(item.views["latest-release"].data[0])
|
||||
|
@ -177,7 +177,7 @@
|
|||
},
|
||||
async getListenNowData() {
|
||||
let self = this
|
||||
this.app.mk.api.v3.music(`/v1/me/recommendations?timezone=${encodeURIComponent(app.formatTimezoneOffset())}&name=listen-now&with=friendsMix,library,social&art[social-profiles:url]=c&art[url]=c,f&omit[resource]=autos&relate[editorial-items]=contents&extend=editorialCard,editorialVideo&extend[albums]=artistUrl&extend[library-albums]=artistUrl,editorialVideo&extend[playlists]=artistNames,editorialArtwork,editorialVideo&extend[library-playlists]=artistNames,editorialArtwork,editorialVideo&extend[social-profiles]=topGenreNames&include[albums]=artists&include[songs]=artists&include[music-videos]=artists&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url&fields[artists]=name,url&extend[stations]=airDate,supportsAirTimeUpdates&meta[stations]=inflectionPoints&types=artists,albums,editorial-items,library-albums,library-playlists,music-movies,music-videos,playlists,stations,uploaded-audios,uploaded-videos,activities,apple-curators,curators,tv-shows,social-upsells&platform=web`).then((data) => {
|
||||
this.app.mk.api.v3.music(`/v1/me/recommendations?timezone=${encodeURIComponent(app.formatTimezoneOffset())}&name=listen-now&with=friendsMix,library,social&art[social-profiles:url]=c&art[url]=c,f&omit[resource]=autos&relate[editorial-items]=contents&extend=editorialCard,editorialVideo&extend[albums]=artistUrl&extend[library-albums]=artistUrl,editorialVideo&extend[playlists]=artistNames,editorialArtwork,editorialVideo&extend[library-playlists]=artistNames,editorialArtwork,editorialVideo&extend[social-profiles]=topGenreNames&include[albums]=artists&include[songs]=artists&include[music-videos]=artists&fields[albums]=artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url&fields[artists]=name,url&extend[stations]=airDate,supportsAirTimeUpdates&meta[stations]=inflectionPoints&types=artists,albums,editorial-items,library-albums,library-playlists,music-movies,music-videos,playlists,stations,uploaded-audios,uploaded-videos,activities,apple-curators,curators,tv-shows,social-upsells&platform=web&l=${this.$root.mklang}`).then((data) => {
|
||||
console.log(data.data.data[1])
|
||||
try {
|
||||
self.madeForYou = data.data.data.filter(section => {
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
},
|
||||
async getCategories() {
|
||||
if (this.categoriesView != [] && this.categoriesView.length > 0) { this.categoriesReady = true; return await true; } else {
|
||||
let response = await this.app.mk.api.v3.music(`/v1/recommendations/${this.app.mk.storefrontId}?timezone=${encodeURIComponent(this.app.formatTimezoneOffset())}&name=search-landing&platform=web&extend=editorialArtwork&art%5Burl%5D=f%2Cc&types=editorial-items%2Capple-curators%2Cactivities`);
|
||||
let response = await this.app.mk.api.v3.music(`/v1/recommendations/${this.app.mk.storefrontId}?timezone=${encodeURIComponent(this.app.formatTimezoneOffset())}&name=search-landing&platform=web&extend=editorialArtwork&art%5Burl%5D=f%2Cc&types=editorial-items%2Capple-curators%2Cactivities&l=${this.$root.mklang}`);
|
||||
this.categoriesView = response.data.data;
|
||||
console.log(this.categoriesView)
|
||||
this.categoriesReady = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue