diff --git a/TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo b/TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo index 2982413..5226d25 100644 Binary files a/TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo and b/TIDALDL-UI-PRO/.vs/TIDALDL-UI/v16/.suo differ diff --git a/TIDALDL-UI-PRO/App.xaml b/TIDALDL-UI-PRO/App.xaml index ecfe942..b089463 100644 --- a/TIDALDL-UI-PRO/App.xaml +++ b/TIDALDL-UI-PRO/App.xaml @@ -27,7 +27,9 @@ - + + + diff --git a/TIDALDL-UI-PRO/Bootstrapper.cs b/TIDALDL-UI-PRO/Bootstrapper.cs index 7a8530e..dcc9859 100644 --- a/TIDALDL-UI-PRO/Bootstrapper.cs +++ b/TIDALDL-UI-PRO/Bootstrapper.cs @@ -2,6 +2,7 @@ using Stylet; using StyletIoC; using TIDALDL_UI.Pages; +using TIDALDL_UI.Else; namespace TIDALDL_UI { diff --git a/TIDALDL-UI-PRO/Else/Language.cs b/TIDALDL-UI-PRO/Else/Language.cs index 127bd73..5568022 100644 --- a/TIDALDL-UI-PRO/Else/Language.cs +++ b/TIDALDL-UI-PRO/Else/Language.cs @@ -22,7 +22,9 @@ public enum Type { Default, English, - 简体中文, + Chinese, + Russian, + Turkish, } private static ResourceDictionary GetResourceDictionaryByType(Type type = Type.Default) @@ -36,12 +38,13 @@ private static ResourceDictionary GetResourceDictionaryByType(Type type = Type.D pList.Add(item); //find resource file - if (type == Type.Default) - findstr = string.Format(@"StringResource.{0}.xaml", CultureInfo.CurrentCulture.Name); - else if(type == Type.简体中文) - findstr = string.Format(@"StringResource.{0}.xaml", "zh-CN"); - else + if (type == Type.Default || type == Type.English) findstr = @"StringResource.xaml"; + else + { + string sub = AIGS.Common.Convert.ConverEnumToString((int)type, typeof(Type), 0); + findstr = string.Format(@"StringResource.{0}.xaml", sub); + } ret = pList.FirstOrDefault(x => x.Source != null && x.Source.OriginalString.Contains(findstr)); if(ret == null) diff --git a/TIDALDL-UI-PRO/Else/Settings.cs b/TIDALDL-UI-PRO/Else/Settings.cs index f9b6e8c..f95b7a0 100644 --- a/TIDALDL-UI-PRO/Else/Settings.cs +++ b/TIDALDL-UI-PRO/Else/Settings.cs @@ -164,8 +164,8 @@ public static void Change(Settings newItem, Settings oldItem = null) { if(oldItem == null || oldItem.ThemeType != newItem.ThemeType) Theme.Change(newItem.ThemeType); - //if (oldItem == null || oldItem.LanguageType != newItem.LanguageType) - // Language.Change(newItem.LanguageType); + if (oldItem == null || oldItem.LanguageType != newItem.LanguageType) + Language.Change(newItem.LanguageType); if (oldItem == null || oldItem.ThreadNum != newItem.ThreadNum) ThreadTool.SetThreadNum(newItem.ThreadNum); } diff --git a/TIDALDL-UI-PRO/Else/TrackTask.cs b/TIDALDL-UI-PRO/Else/TrackTask.cs index 0a882a4..b3e2d6a 100644 --- a/TIDALDL-UI-PRO/Else/TrackTask.cs +++ b/TIDALDL-UI-PRO/Else/TrackTask.cs @@ -169,6 +169,8 @@ public void Download() CALL_RETURN: TellParentOver(); + + DownloadSpeedString = ""; } public void ErrDownloadNotify(long lTotalSize, long lAlreadyDownloadSize, string sErrMsg, object data) diff --git a/TIDALDL-UI-PRO/Else/VideoTask.cs b/TIDALDL-UI-PRO/Else/VideoTask.cs index 47acbce..a34f15e 100644 --- a/TIDALDL-UI-PRO/Else/VideoTask.cs +++ b/TIDALDL-UI-PRO/Else/VideoTask.cs @@ -123,6 +123,8 @@ public void Download() CALL_RETURN: TellParentOver(); + + DownloadSpeedString = ""; } public bool UpdateDownloadNotify(long lTotalSize, long lAlreadyDownloadSize, long lIncreSize, object data) diff --git a/TIDALDL-UI-PRO/Pages/AboutView.xaml b/TIDALDL-UI-PRO/Pages/AboutView.xaml index ca11fcf..3102be7 100644 --- a/TIDALDL-UI-PRO/Pages/AboutView.xaml +++ b/TIDALDL-UI-PRO/Pages/AboutView.xaml @@ -32,6 +32,7 @@ + diff --git a/TIDALDL-UI-PRO/Pages/AboutViewModel.cs b/TIDALDL-UI-PRO/Pages/AboutViewModel.cs index fc5ca20..2fe465c 100644 --- a/TIDALDL-UI-PRO/Pages/AboutViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/AboutViewModel.cs @@ -54,17 +54,17 @@ public void StartUpdate() Progress.ValueInt = 0; CountIncreSize = 0; ShowProgress = Visibility.Visible; - DownloadStatusInfo = "Get new version file-url..."; + DownloadStatusInfo = Language.Get("strmsgGetNewVersionUrl"); string url = GithubHelper.getFileUrl(Global.NAME_GITHUB_AUTHOR, Global.NAME_GITHUB_PROJECT, LastVersion, Global.NAME_GITHUB_FILE); if (PathHelper.Mkdirs(Global.PATH_UPDATE) == false) { - DownloadStatusInfo = "Creat update folder falied!"; + DownloadStatusInfo = Language.Get("strmsgCreatUpdateFolderFailed"); EndUpdate(); return; } - DownloadStatusInfo = "Start update..."; + DownloadStatusInfo = Language.Get("strmsgStartUpdate"); Progress.SetStatus(ProgressHelper.STATUS.RUNNING); StartTime = TimeHelper.GetCurrentTime(); LoginKey key = Tools.GetKey(); @@ -99,7 +99,7 @@ public void CompleteDownloadNotify(long lTotalSize, object data) { Progress.ValueInt = 100; Progress.SetStatus(ProgressHelper.STATUS.COMPLETE); - DownloadStatusInfo = "Download complete, start update..."; + DownloadStatusInfo = Language.Get("strmsgDownloadCompleteStartUpdate"); string sBat = "ping -n 5 127.0.0.1\n"; sBat += string.Format("move {0} {1}\\tidal-gui.exe\n", Global.PATH_UPDATE + Global.NAME_GITHUB_FILE, Path.GetFullPath(".\\")); diff --git a/TIDALDL-UI-PRO/Pages/DownloadView.xaml b/TIDALDL-UI-PRO/Pages/DownloadView.xaml index b1572c2..fec6384 100644 --- a/TIDALDL-UI-PRO/Pages/DownloadView.xaml +++ b/TIDALDL-UI-PRO/Pages/DownloadView.xaml @@ -24,24 +24,24 @@ - + - + - + - + diff --git a/TIDALDL-UI-PRO/Pages/DownloadViewModel.cs b/TIDALDL-UI-PRO/Pages/DownloadViewModel.cs index d62a8f6..2beb363 100644 --- a/TIDALDL-UI-PRO/Pages/DownloadViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/DownloadViewModel.cs @@ -21,9 +21,9 @@ public class DownloadViewModel : ModelBase public bool VisibilityError{ get; set; } public string PageHeader { set { } get { - if (VisibilityDownload) return "Download"; - if (VisibilityComplete) return "Complete"; - return "Error"; + if (VisibilityDownload) return Language.Get("strDownload"); + if (VisibilityComplete) return Language.Get("strComplete"); + return Language.Get("strError"); } } public DownloadViewModel() diff --git a/TIDALDL-UI-PRO/Pages/LoginView.xaml b/TIDALDL-UI-PRO/Pages/LoginView.xaml index abe62e0..b57e42d 100644 --- a/TIDALDL-UI-PRO/Pages/LoginView.xaml +++ b/TIDALDL-UI-PRO/Pages/LoginView.xaml @@ -46,7 +46,7 @@ --> - + @@ -57,7 +57,7 @@ - - + @@ -116,10 +116,10 @@ - + - - + + @@ -127,7 +127,7 @@ - + + - + @@ -180,10 +182,10 @@ - - - - + + + + @@ -192,11 +194,11 @@ - + - + diff --git a/TIDALDL-UI-PRO/Pages/SearchViewModel.cs b/TIDALDL-UI-PRO/Pages/SearchViewModel.cs index 7604644..28e8506 100644 --- a/TIDALDL-UI-PRO/Pages/SearchViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/SearchViewModel.cs @@ -26,6 +26,8 @@ public class SearchViewModel : ModelBase public bool ShowList { get; set; } = false; //search parameter + public int searchOffset { get; set; } = 0; + public string SearchStr { get; set; } public SearchResult SearchResult { get; set; } public ObservableCollection CoverCards { get; set; } @@ -44,21 +46,31 @@ protected override async void OnViewLoaded() } #region search \ get detail \ download - - public async void Search(string SearchStr) + public async void Search(string method) { + if (method == "search") + searchOffset = 0; + else if (method == "searchNext") + searchOffset += Global.Settings.SearchNum; + else if (method == "searchPre") + { + searchOffset -= Global.Settings.SearchNum; + if (searchOffset < 0) + searchOffset = 0; + } + if (SearchStr.IsBlank()) { - Growl.Error("Search string is empty!", Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgSearchStringIsEmpty"), Global.TOKEN_MAIN); return; } ShowWait = true; - (string msg, eType type, object data) = await Client.Get(Global.CommonKey, SearchStr, eType.NONE, Global.Settings.SearchNum, Global.Settings.IncludeEP, false); + (string msg, eType type, object data) = await Client.Get(Global.CommonKey, SearchStr, eType.NONE, Global.Settings.SearchNum, Global.Settings.IncludeEP, false, searchOffset); if (msg.IsNotBlank() || data == null) { - Growl.Error("Search Err!" + msg, Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgSearchErr") + msg, Global.TOKEN_MAIN); } else if (type == eType.SEARCH) { @@ -80,7 +92,7 @@ public async void GetDetail() { if (SearchResult == null) { - Growl.Error("Please search first!", Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgPleaseSearchFirst"), Global.TOKEN_MAIN); return; } @@ -89,35 +101,35 @@ public async void GetDetail() string id = null; eType type = eType.NONE; string selectHeader = ((System.Windows.Controls.TabItem)((SearchView)this.View).ctrSearchTab.SelectedItem).Header.ToString(); - if (selectHeader == "ALBUM") + if (selectHeader == Language.Get("strALBUM")) { if (((SearchView)this.View).ctrAlbumGrid.SelectedIndex < 0) goto ERR_NO_SELECT; id = SearchResult.Albums[((SearchView)this.View).ctrAlbumGrid.SelectedIndex].ID.ToString(); type = eType.ALBUM; } - else if (selectHeader == "TRACK") + else if (selectHeader == Language.Get("strTRACK")) { if (((SearchView)this.View).ctrTrackGrid.SelectedIndex < 0) goto ERR_NO_SELECT; id = SearchResult.Tracks[((SearchView)this.View).ctrTrackGrid.SelectedIndex].ID.ToString(); type = eType.TRACK; } - else if (selectHeader == "VIDEO") + else if (selectHeader == Language.Get("strVIDEO")) { if (((SearchView)this.View).ctrVideoGrid.SelectedIndex < 0) goto ERR_NO_SELECT; id = SearchResult.Videos[((SearchView)this.View).ctrVideoGrid.SelectedIndex].ID.ToString(); type = eType.VIDEO; } - else if (selectHeader == "ARTIST") + else if (selectHeader == Language.Get("strARTIST")) { if (((SearchView)this.View).ctrArtistGrid.SelectedIndex < 0) goto ERR_NO_SELECT; id = SearchResult.Artists[((SearchView)this.View).ctrArtistGrid.SelectedIndex].ID.ToString(); type = eType.ARTIST; } - else if (selectHeader == "PLAYLIST") + else if (selectHeader == Language.Get("strPLAYLIST")) { if (((SearchView)this.View).ctrPlaylistGrid.SelectedIndex < 0) goto ERR_NO_SELECT; @@ -134,7 +146,7 @@ public async void GetDetail() return; ERR_NO_SELECT: - Growl.Error("Please select one item!", Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgPleaseSelectOneItem"), Global.TOKEN_MAIN); ShowWait = false; return; } @@ -143,7 +155,7 @@ public async void Download() { if (Detail == null) { - Growl.Error("Nothing to downlond!", Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgNothingToDownload"), Global.TOKEN_MAIN); return; } @@ -156,7 +168,7 @@ public async void Download() (string msg, Album album) = await Client.GetAlbum(Global.CommonKey, track.Album.ID, false); if(msg.IsNotBlank() || album == null) { - Growl.Error("Get track's album information failed!", Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgGetTrackAlbumInfoFailed"), Global.TOKEN_MAIN); goto RETURN_POINT; } track.Album = album; @@ -170,7 +182,7 @@ public async void Download() (msg, album.Tracks, album.Videos) = await Client.GetItems(Global.CommonKey, album.ID, eType.ALBUM); if (msg.IsNotBlank()) { - Growl.Error("Get artist's album information failed!", Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgGetArtistAlbumInfoFailed"), Global.TOKEN_MAIN); goto RETURN_POINT; } } @@ -301,9 +313,9 @@ public Detail(Album album) { Data = album; Title = album.Title; - Intro = $"by {album.ArtistsName}-{TimeHelper.ConverIntToString(album.Duration)} Tracks-{album.NumberOfTracks} Videos-{album.NumberOfVideos}"; + Intro = $"by {album.ArtistsName}-{TimeHelper.ConverIntToString(album.Duration)} {Language.Get("strTRACK")}-{album.NumberOfTracks} {Language.Get("strVIDEO")}-{album.NumberOfVideos}"; CoverUrl = album.CoverUrl; - ReleaseDate = $"Release date {album.ReleaseDate}"; + ReleaseDate = $"{Language.Get("strReleaseDate")} {album.ReleaseDate}"; Flag = album.Flag; for (int i = 0; i < album.NumberOfTracks && i < album.Tracks.Count; i++) @@ -338,7 +350,7 @@ public Detail(Video video) Title = video.Title; Intro = $"by {video.ArtistsName}-{TimeHelper.ConverIntToString(video.Duration)}"; CoverUrl = video.CoverUrl; - ReleaseDate = $"Release date {video.ReleaseDate}"; + ReleaseDate = $"{Language.Get("strReleaseDate")} {video.ReleaseDate}"; Flag = video.Flag; Items.Add(new Item() { @@ -357,7 +369,7 @@ public Detail(Track track) Title = track.Title; Intro = $"by {track.ArtistsName}-{TimeHelper.ConverIntToString(track.Duration)}"; CoverUrl = track.Album.CoverUrl; - ReleaseDate = $"Release date {track.Album.ReleaseDate}"; + ReleaseDate = $"{Language.Get("strReleaseDate")} {track.Album.ReleaseDate}"; Flag = track.Flag; Items.Add(new Item() { @@ -374,9 +386,9 @@ public Detail(Playlist playlist) { Data = playlist; Title = playlist.Title; - Intro = $"by {TimeHelper.ConverIntToString(playlist.Duration)} Tracks-{playlist.NumberOfTracks} Videos-{playlist.NumberOfVideos}"; + Intro = $"by {TimeHelper.ConverIntToString(playlist.Duration)} {Language.Get("strTRACK")}-{playlist.NumberOfTracks} {Language.Get("strVIDEO")}-{playlist.NumberOfVideos}"; CoverUrl = playlist.CoverUrl; - ReleaseDate = $"Description {playlist.Description}"; + ReleaseDate = $"{Language.Get("strDescription")} {playlist.Description}"; for (int i = 0; i < playlist.Tracks.Count; i++) { @@ -408,9 +420,9 @@ public Detail(Artist artist) { Data = artist; Title = artist.Name; - Intro = $"by {artist.Name} Albums-{artist.Albums.Count}"; + Intro = $"by {artist.Name} {Language.Get("strALBUM")}-{artist.Albums.Count}"; CoverUrl = artist.CoverUrl; - ReleaseDate = $"Artist types: {string.Join(" / ", artist.ArtistTypes)}"; + ReleaseDate = $"{Language.Get("strArtistType")}: {string.Join(" / ", artist.ArtistTypes)}"; for (int i = 0; i < artist.Albums.Count; i++) { diff --git a/TIDALDL-UI-PRO/Pages/SettingsView.xaml b/TIDALDL-UI-PRO/Pages/SettingsView.xaml index 65f0987..3098c0c 100644 --- a/TIDALDL-UI-PRO/Pages/SettingsView.xaml +++ b/TIDALDL-UI-PRO/Pages/SettingsView.xaml @@ -20,13 +20,13 @@ - + - - - + + + @@ -56,6 +56,7 @@ + @@ -64,53 +65,55 @@ - + - - + + - - + + - + - + - + - + - - + + - - + + - + - - + + - + - + - + + - - + + + diff --git a/TIDALDL-UI-PRO/Pages/SettingsViewModel.cs b/TIDALDL-UI-PRO/Pages/SettingsViewModel.cs index 7f05c9a..5554c3b 100644 --- a/TIDALDL-UI-PRO/Pages/SettingsViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/SettingsViewModel.cs @@ -22,6 +22,8 @@ public class SettingsViewModel : ModelBase public List ComboxAddYear { get; set; } = AIGS.Common.Convert.ConverEnumToList(); public List ComboxTheme { get; set; } = AIGS.Common.Convert.ConverEnumToList(); + public List ComboxLanguage { get; set; } = AIGS.Common.Convert.ConverEnumToList(); + public void Load() { @@ -45,9 +47,9 @@ public async void Confim() { (string msg, LoginKey key) = await Client.Login(AccessToken); if (msg.IsNotBlank() || key == null) - Growl.Warning("Accesstoken is not valid! " + msg, Global.TOKEN_MAIN); + Growl.Warning(Language.Get("strmsgAccessTokenIsNotValid") + msg, Global.TOKEN_MAIN); else if(key.UserID != Global.CommonKey.UserID) - Growl.Warning("User mismatch! Please use your own accesstoken.", Global.TOKEN_MAIN); + Growl.Warning(Language.Get("strmsgUserMismatch"), Global.TOKEN_MAIN); else { UserSettings user = UserSettings.Read(); @@ -70,7 +72,7 @@ public async void Confim() Global.Settings.Save(); Load(); - Growl.Success("Refresh settings success!", Global.TOKEN_MAIN); + Growl.Success(Language.Get("strmsgRefreshSettingsSuccess"), Global.TOKEN_MAIN); } public void Logout() @@ -88,7 +90,7 @@ public void GetAccessToken() return; } - Growl.Success("Get accesstoken success!", Global.TOKEN_MAIN); + Growl.Success(Language.Get("strmsgGetAccessTokenSuccess"), Global.TOKEN_MAIN); AccessToken = key.AccessToken; } } diff --git a/TIDALDL-UI-PRO/Pages/TaskViewModel.cs b/TIDALDL-UI-PRO/Pages/TaskViewModel.cs index 5b3063f..811f216 100644 --- a/TIDALDL-UI-PRO/Pages/TaskViewModel.cs +++ b/TIDALDL-UI-PRO/Pages/TaskViewModel.cs @@ -168,7 +168,7 @@ public void Delete() //if (MessageBox.Show("Remove task?", "Info", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) // return; - Dialog.Show(new MessageView(MessageBoxImage.Information, "Remove task?", true, (x) => + Dialog.Show(new MessageView(MessageBoxImage.Information, Language.Get("strmsgRemoveTask"), true, (x) => { foreach (var item in Items) { @@ -216,7 +216,7 @@ public void OpenFolder() } catch { - Growl.Error("Open folder failed!" + path, Global.TOKEN_MAIN); + Growl.Error(Language.Get("strmsgOpenFolderFailed") + path, Global.TOKEN_MAIN); } } #endregion diff --git a/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs b/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs index ac6934b..de65bc6 100644 --- a/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs +++ b/TIDALDL-UI-PRO/Properties/AssemblyInfo.cs @@ -12,7 +12,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Yaronzz")] [assembly: AssemblyProduct("TIDALDL-UI")] -[assembly: AssemblyCopyright("Copyright © Yaronzz 2020")] +[assembly: AssemblyCopyright("Copyright © Yaronzz 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -51,5 +51,5 @@ //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.1.2")] -[assembly: AssemblyFileVersion("1.2.1.2")] +[assembly: AssemblyVersion("1.2.1.3")] +[assembly: AssemblyFileVersion("1.2.1.3")] diff --git a/TIDALDL-UI-PRO/Properties/Lang/StringResource.Chinese.xaml b/TIDALDL-UI-PRO/Properties/Lang/StringResource.Chinese.xaml new file mode 100644 index 0000000..b9d8dda --- /dev/null +++ b/TIDALDL-UI-PRO/Properties/Lang/StringResource.Chinese.xaml @@ -0,0 +1,100 @@ + + + 确定 + 取消 + 退出 + 登录 + 保存 + 反馈 + 群组 + 捐赠 + 微信 + 支付宝 + 更新 + 尝试获取 + + + 歌单 + 曲目数 + 版本 + 最新版本 + 设置 + 用户名 + 密码 + 服务器 + 等待 + 成功 + 更新 + 错误 + 上传列表 + 任务列表 + 下载 + 完成 + 错误 + 登录 + 代理 + 发布日期 + 描述 + 歌手类型 + + + 请先搜索! +获取新版本链接中... + 创建更新目录失败! + 开始更新... + 下载完成,开始更新... + + 获取device code失败! + 用户名或密码错误! + 登录失败! + 搜索串不能为空! + 搜索失败! + 请先选择一项! + 没有下载项! + 获取歌曲专辑信息失败! + 获取歌手专辑信息失败! + 移除任务? + 打开目录失败! + 获取accesstoken成功! + 更新配置成功! + Accesstoken无效! + 用户不匹配! 请使用你自己的用户accesstoken. + + + 标题 + 歌手 + 专辑 + 歌曲 + 视频 + 歌单 + 名称 + 人气 + 时长 + 类型 + 日期 + 时间 + + + 保存路径: + 线程数: + 搜索的数量: + 专辑目录保存格式: + 歌曲文件保存格式: + 视频文件保存格式: + 选项: + 最大长度: + 歌曲: + 主题: + 语言: + + 限制区间 1~3 + 限制区间 10~50 + 搜索歌手专辑时包括其单曲/EP + 保存封面 + 文件名最大长度限制 50~100 + 专辑目录名最大限制 50~100 + mp4自动转m4a + 跳过已经下载的文件 + \ No newline at end of file diff --git a/TIDALDL-UI-PRO/Properties/Lang/StringResource.Russian.xaml b/TIDALDL-UI-PRO/Properties/Lang/StringResource.Russian.xaml new file mode 100644 index 0000000..94c1d89 --- /dev/null +++ b/TIDALDL-UI-PRO/Properties/Lang/StringResource.Russian.xaml @@ -0,0 +1,100 @@ + + + OK + Отмена + Выйти + Войти + Сохранить + Фидбэк + Телеграм + Донат + Wechat + Alipay + Обновить + Попробовать снова + + + Плейлист + Номер трека + ВЕРСИЯ + ПОСЛЕДНЯЯ ВЕРСИЯ + НАСТРОЙКИ + Логин + Пароль + Хост + ПОДОЖДИТЕ + ВЫПОЛНЕНО + ОБНОВИТЬ + ОШИБКА + ЗАГРУЗИТЬ ЛИСТ + СПИСОК ЗАДАНИЙ + Скачать + Готово + Ошибка + ЛОГИН + ПРОКСИ + Дата выхода + Описание + Артист + + + Сначала выполните поиск! + Загрузите новую версию здесь... + Не удалось создать папку для обновления! + Началось обновление... + Загружено, началось обновление... + + Ошибка получения кода девайса! + Логин или пароль не верный! + Ошибка входа! + Строка поиска пуста! + Ошибка поиска! + Пожалуйста, выберите что-нибудь! + Ничего не скачано! + Ошибка получения инвормации треков в альбоме! + Ошибка получения информации альбома артиста! + Удалить задачу? + Ошибка открытия папки! + Токен получен! + Обновление настроек завершено! + Токен не действительный! + Несоответсвующий пользователь! Пожалуйста, введите свой токен. + + + НАЗВАНИЕ + АРТИСТА + АЛЬБОМ + ТРЕК + ВИДЕО + ПЛЕЙЛИСТ + ИМЯ + ПОПУЛЯРНОСТЬ + ДЛИТЕЛЬНОСТЬ + ТИП + ДАТА + ВРЕМЯЫ + + + Папка загрузки: + Номер: + Количество запросов: + Формат названия папки альбома: + Формат названия трека: + Формат названия видео: + Выберите: + Макс. длинна: + Трек: + Тема: + Язык: + + лимит 1~3 + лимит 10~50 + Поиск артиста включая синглы/EP + Скачивать обложку + Лимит названия файла 50~100 + Лимит названия папки альбома 50~100 + Конвертировать mp4 в m4a + Пропуск существующего файла при загрузке + \ No newline at end of file diff --git a/TIDALDL-UI-PRO/Properties/Lang/StringResource.Turkish.xaml b/TIDALDL-UI-PRO/Properties/Lang/StringResource.Turkish.xaml new file mode 100644 index 0000000..a81c06a --- /dev/null +++ b/TIDALDL-UI-PRO/Properties/Lang/StringResource.Turkish.xaml @@ -0,0 +1,100 @@ + + + Tamam + İptal + Çıkış + Giriş + Kaydet + Geri Bildirim + Grup + Bağış + Wechat + Alipay + Güncelleme + Deneyin, Alın + + + Oynatma Listesi + Parça Numarası + VERSİYON + SON-VERSİYON + AYARLAR + Kullanıcı Adı + Şifre + Host + BEKLE + BAŞARILI + GÜNCELLEME + HATA + LİSTEYİ YÜKLE + GÖREV LİSTESİ + İndir + Tamamlandı + Hata + GİRİŞ + PROXY + Yayın tarihi + Açıklama + Sanatçı türleri + + + Lütfen önce arayın! + Yeni sürüm dosya url'sini al... + Güncelleme klasörü oluşturma hatası! + Güncellemeyi başlat... + İndirme tamamlandı, güncellemeyi başlat... + + Cihaz kodunu alınamadı! + Kullanıcı adı veya şifre hatalı! + Giriş hatası! + Arama dizesi boş! + Arama hatası! + Lütfen bir öğe seçin! + İndirilecek bir şey yok! + Parçanın albüm bilgilerini alınamadı! + Sanatçının albüm bilgilerini alınamadı! + Görevi kaldır? + Klasör açılamadı! + Erişim belirtecini alın! + Ayarları yenileme başarılı! + Erişim belirteci geçerli değil! + Kullanıcı uyuşmazlığı! Lütfen kendi erişim kodunuzu kullanın. + + + BAŞLIK + SANATÇILAR + ALBÜM + PARÇA + VİDEO + OYNATMA LİSTESİ + İSİM + POPÜLERLİK + SÜRE + TÜR + TARİH + ZAMAN + + + Yol: + Konu Numarası: + Arama Numarası: + Albüm Klasörü Formatı: + Parça Dosya Formatı: + Video Dosya Formatı: + Seç: + Maksimum Uzunluk: + Parça: + Tema: + Dil: + + limit 1~3 + limit 10~5 + Sanatçı albümünü single/ep içerisinde ara + Kapağı indir + Dosya adı uzunluk sınırı 50 ~ 100 + Albüm klasörü adı uzunluk sınırı 50 ~ 100 + Mp4'ü m4a'ya dönüştür + İndirirken var olan dosyayı atla + \ No newline at end of file diff --git a/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml b/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml index 0b8bd60..5ed4724 100644 --- a/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml +++ b/TIDALDL-UI-PRO/Properties/Lang/StringResource.xaml @@ -1,33 +1,21 @@  - OK Cancel - Delete - Refresh Logout Login - ToLocal - Upload - Import Save - About - Settings Feedback Group Donation Wechat Alipay - QQ Music - Cloud Music - Spotify - Tidal Update + Try Get - Platform Playlist TrackNum VERSION @@ -35,61 +23,78 @@ SETTINGS Username Password - + Host WAIT SUCCESS UPDATE ERROR UPLOAD LIST + TASK LIST + Download + Complete + Error + LOGIN + PROXY + Release date + Description + Artist types - Wait! - Success! - Cancel! - Exist! - Can't find! - Add to playlist failed! - Get user playlists failed! - Creat playlist failed! - - No platforms! - Save success! - Save failed! - Logout? - Read playlists failed! - Refresh playlists success! - Refresh playlists failed! - Delete track failed! - Delete playlist failed! - Delete all playlists? - Delete this playlist? - Please select a platform to upload. - Please select tracks! - To local success! Updata {0} tracks. - "{0}" to local success! Updata {1} tracks. - Username or password is error! - Login failed! + Please search first! + Get new version file-url... + Creat update folder falied! + Start update... + Download complete, start update... - Enter playlist url. - Please enter the playlist link! - Please login by {0} first! - Url is wrong! - Get playlist failed! + Get device code failed! + Username or password is err! + Login Err! + Search string is empty! + Search Err! + Please select one item! + Nothing to downlond! + Get track's album information failed! + Get artist's album information failed! + Remove task? + Open folder failed! + Get accesstoken success! + Refresh settings success! + Accesstoken is not valid! + User mismatch! Please use your own accesstoken. - + TITLE ARTISTS ALBUM + TRACK + VIDEO + PLAYLIST + NAME + POPULARITY DURATION - ACT + TYPE + DATE + TIME - Theme - Language - Search | Match - Compare album title - Compare track-live - Cache path - Platform enable + Path: + ThreadNum: + SearchNum: + AlbumFolderFormat: + TrackFileFormat: + VideoFileFormat: + Choose: + MaxLength: + Track: + Theme: + Language: + limit 1~3 + limit 10~5 + Search artist-album include single/ep + Download cover + file name length limit 50~100 + album folder name length limit 50~100 + Convert mp4 to m4a + Skipping exist file when downloading \ No newline at end of file diff --git a/TIDALDL-UI-PRO/Properties/Lang/StringResource.zh-CN.xaml b/TIDALDL-UI-PRO/Properties/Lang/StringResource.zh-CN.xaml deleted file mode 100644 index 61e2167..0000000 --- a/TIDALDL-UI-PRO/Properties/Lang/StringResource.zh-CN.xaml +++ /dev/null @@ -1,91 +0,0 @@ - - - - 确定 - 取消 - 删除 - 刷新 - 退出" - 登录 - 到本地 - 上传 - 导入到 - 保存 - 关于 - 设置 - 反馈 - 群组 - 捐赠 - 微信 - 支付宝 - QQ音乐 - 网易云 - Spotify - Tidal - - - 平台 - 歌单 - 曲目数 - 版本 - 设置 - 用户名 - 密码 - - 等待 - 成功 - 新增 - 错误 - 上传列表 - - - 等待! - 成功! - 取消! - 已存在! - 找不到! - 添加到歌单失败! - 获取用户歌单失败! - 新建歌单失败! - 没有平台! - 保存成功! - 保存失败! - 退出登录? - 读取本地歌单失败! - 刷新歌单成功! - 刷新歌单失败! - 删除歌曲失败! - 删除歌单失败! - 删除全部歌单? - 删除歌单? - 请选择一个平台上传。 - 请选择歌曲! - 歌单至本地成功! 更新了 {0} 首歌. - "{0}" 至本地成功! 更新了 {1} 首歌. - 用户名或密码错误! - 登录失败! - - 请输入歌单链接. - 请输入歌单链接! - 请先通过 {0} 登录! - 链接无效! - 获取歌单失败! - - - 标题 - 歌手 - 专辑 - 时长 - 操作 - - - 主题 - 语言 - 搜索 | 匹配 - 歌曲专辑名称需要一致 - 歌曲标题Live标志需要一致 - 缓存保存地址 - 启用的平台 - \ No newline at end of file diff --git a/TIDALDL-UI-PRO/TIDALDL-UI.csproj b/TIDALDL-UI-PRO/TIDALDL-UI.csproj index 3b09807..685dc82 100644 --- a/TIDALDL-UI-PRO/TIDALDL-UI.csproj +++ b/TIDALDL-UI-PRO/TIDALDL-UI.csproj @@ -246,11 +246,19 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer - + MSBuild:Compile Designer diff --git a/TIDALDL-UI-PRO/UPDATE_LOG.md b/TIDALDL-UI-PRO/UPDATE_LOG.md index c958bd2..fc46013 100644 --- a/TIDALDL-UI-PRO/UPDATE_LOG.md +++ b/TIDALDL-UI-PRO/UPDATE_LOG.md @@ -1,7 +1,10 @@ -- [ ] Auto update -- [ ] Multi-language - +#### v1.2.1.3 +- [x] Multi-language +- [x] Show DOLBY_ATMOS flag [A] +- [x] Search: turn page +#### v1.2.1.2 +- [x] Auto update - [x] Fix: download playlist - [X] About-Page: show update-button when a new version released