mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 19:24:55 +08:00
chores
This commit is contained in:
@@ -75,6 +75,13 @@ namespace BetterLyrics.WinUI3
|
|||||||
var settingsService = Ioc.Default.GetRequiredService<ISettingsService>();
|
var settingsService = Ioc.Default.GetRequiredService<ISettingsService>();
|
||||||
|
|
||||||
var fileSystemService = Ioc.Default.GetRequiredService<IFileSystemService>();
|
var fileSystemService = Ioc.Default.GetRequiredService<IFileSystemService>();
|
||||||
|
foreach (var item in settingsService.AppSettings.LocalMediaFolders)
|
||||||
|
{
|
||||||
|
if (item.LastSyncTime == null)
|
||||||
|
{
|
||||||
|
_ = Task.Run(async () => await fileSystemService.ScanMediaFolderAsync(item, CancellationToken.None));
|
||||||
|
}
|
||||||
|
}
|
||||||
fileSystemService.StartAllFolderTimers();
|
fileSystemService.StartAllFolderTimers();
|
||||||
|
|
||||||
WindowHook.OpenOrShowWindow<SystemTrayWindow>();
|
WindowHook.OpenOrShowWindow<SystemTrayWindow>();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
xmlns:controls="using:CommunityToolkit.WinUI.Controls"
|
xmlns:controls="using:CommunityToolkit.WinUI.Controls"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:dev="using:DevWinUI"
|
xmlns:dev="using:DevWinUI"
|
||||||
|
xmlns:enums="using:BetterLyrics.WinUI3.Enums"
|
||||||
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
|
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
|
||||||
xmlns:local="using:BetterLyrics.WinUI3.Controls"
|
xmlns:local="using:BetterLyrics.WinUI3.Controls"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
@@ -88,14 +89,18 @@
|
|||||||
</dev:SettingsCard>
|
</dev:SettingsCard>
|
||||||
</dev:SettingsExpander.Items>
|
</dev:SettingsExpander.Items>
|
||||||
|
|
||||||
<dev:SettingsExpander.ItemsFooter>
|
<dev:SettingsExpander.ItemsHeader>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<!-- Index info -->
|
<!-- Index info -->
|
||||||
<InfoBar
|
<InfoBar
|
||||||
IsClosable="False"
|
IsClosable="False"
|
||||||
IsOpen="{x:Bind IsIndexing, Mode=OneWay}"
|
IsOpen="True"
|
||||||
Message="{x:Bind IndexingStatusText, Mode=OneWay}" />
|
Message="{x:Bind StatusText, Mode=OneWay}"
|
||||||
<ProgressBar Visibility="{x:Bind IsIndexing, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" Value="{x:Bind IndexingProgress, Mode=OneWay}">
|
Severity="{x:Bind StatusSeverity, Mode=OneWay}" />
|
||||||
|
<ProgressBar
|
||||||
|
Background="Transparent"
|
||||||
|
Visibility="{x:Bind IsProcessing, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
|
||||||
|
Value="{x:Bind IndexingProgress, Mode=OneWay}">
|
||||||
<interactivity:Interaction.Behaviors>
|
<interactivity:Interaction.Behaviors>
|
||||||
<interactivity:DataTriggerBehavior
|
<interactivity:DataTriggerBehavior
|
||||||
Binding="{x:Bind IndexingProgress, Mode=OneWay}"
|
Binding="{x:Bind IndexingProgress, Mode=OneWay}"
|
||||||
@@ -111,14 +116,8 @@
|
|||||||
</interactivity:DataTriggerBehavior>
|
</interactivity:DataTriggerBehavior>
|
||||||
</interactivity:Interaction.Behaviors>
|
</interactivity:Interaction.Behaviors>
|
||||||
</ProgressBar>
|
</ProgressBar>
|
||||||
<!-- Clean up info -->
|
|
||||||
<InfoBar
|
|
||||||
IsClosable="False"
|
|
||||||
IsOpen="{x:Bind IsCleaningUp, Mode=OneWay}"
|
|
||||||
Message="{x:Bind CleaningUpStatusText, Mode=OneWay}" />
|
|
||||||
<ProgressBar IsIndeterminate="True" Visibility="{x:Bind IsCleaningUp, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</dev:SettingsExpander.ItemsFooter>
|
</dev:SettingsExpander.ItemsHeader>
|
||||||
|
|
||||||
</dev:SettingsExpander>
|
</dev:SettingsExpander>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
{
|
{
|
||||||
public sealed partial class RemoteServerConfigControl : UserControl
|
public sealed partial class RemoteServerConfigControl : UserControl
|
||||||
{
|
{
|
||||||
private readonly string _protocolType;
|
private readonly FileSourceType _fileSourceType;
|
||||||
private readonly ILocalizationService _localizationService = Ioc.Default.GetRequiredService<ILocalizationService>();
|
private readonly ILocalizationService _localizationService = Ioc.Default.GetRequiredService<ILocalizationService>();
|
||||||
|
|
||||||
public RemoteServerConfigControl(string protocolType)
|
public RemoteServerConfigControl(FileSourceType fileSourceType)
|
||||||
{
|
{
|
||||||
this.InitializeComponent();
|
this.InitializeComponent();
|
||||||
_protocolType = protocolType;
|
_fileSourceType = fileSourceType;
|
||||||
|
|
||||||
SetupDefaults();
|
SetupDefaults();
|
||||||
CheckPathForWarning();
|
CheckPathForWarning();
|
||||||
@@ -26,7 +26,7 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
|
|
||||||
private void SetupDefaults()
|
private void SetupDefaults()
|
||||||
{
|
{
|
||||||
if (_protocolType.Equals("Local", StringComparison.OrdinalIgnoreCase))
|
if (_fileSourceType == FileSourceType.Local)
|
||||||
{
|
{
|
||||||
RemoteFieldsPanel.Visibility = Visibility.Collapsed;
|
RemoteFieldsPanel.Visibility = Visibility.Collapsed;
|
||||||
AuthFieldsPanel.Visibility = Visibility.Collapsed;
|
AuthFieldsPanel.Visibility = Visibility.Collapsed;
|
||||||
@@ -41,17 +41,17 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
RemoteFieldsPanel.Visibility = Visibility.Visible;
|
RemoteFieldsPanel.Visibility = Visibility.Visible;
|
||||||
AuthFieldsPanel.Visibility = Visibility.Visible;
|
AuthFieldsPanel.Visibility = Visibility.Visible;
|
||||||
|
|
||||||
switch (_protocolType.ToUpper())
|
switch (_fileSourceType)
|
||||||
{
|
{
|
||||||
case "SMB":
|
case FileSourceType.SMB:
|
||||||
PortBox.Value = 445;
|
PortBox.Value = 445;
|
||||||
PathBox.PlaceholderText = "SharedMusic";
|
PathBox.PlaceholderText = "SharedMusic";
|
||||||
break;
|
break;
|
||||||
case "FTP":
|
case FileSourceType.FTP:
|
||||||
PortBox.Value = 21;
|
PortBox.Value = 21;
|
||||||
PathBox.PlaceholderText = "/pub/music";
|
PathBox.PlaceholderText = "/pub/music";
|
||||||
break;
|
break;
|
||||||
case "WEBDAV":
|
case FileSourceType.WebDAV:
|
||||||
PortBox.Value = 80;
|
PortBox.Value = 80;
|
||||||
PathBox.PlaceholderText = "/dav/music";
|
PathBox.PlaceholderText = "/dav/music";
|
||||||
break;
|
break;
|
||||||
@@ -62,15 +62,15 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
private string GetScheme()
|
private string GetScheme()
|
||||||
{
|
{
|
||||||
string scheme = string.Empty;
|
string scheme = string.Empty;
|
||||||
switch (_protocolType.ToUpper())
|
switch (_fileSourceType)
|
||||||
{
|
{
|
||||||
case "SMB":
|
case FileSourceType.SMB:
|
||||||
scheme = "smb";
|
scheme = "smb";
|
||||||
break;
|
break;
|
||||||
case "FTP":
|
case FileSourceType.FTP:
|
||||||
scheme = "ftp";
|
scheme = "ftp";
|
||||||
break;
|
break;
|
||||||
case "WEBDAV":
|
case FileSourceType.WebDAV:
|
||||||
scheme = "https";
|
scheme = "https";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
{
|
{
|
||||||
string finalName = HostBox.Text.Trim();
|
string finalName = HostBox.Text.Trim();
|
||||||
|
|
||||||
if (_protocolType.Equals("Local", StringComparison.OrdinalIgnoreCase))
|
if (_fileSourceType == FileSourceType.Local)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(PathBox.Text))
|
if (string.IsNullOrWhiteSpace(PathBox.Text))
|
||||||
throw new ArgumentException(_localizationService.GetLocalizedString("RemoteServerConfigControlPathRequired"));
|
throw new ArgumentException(_localizationService.GetLocalizedString("RemoteServerConfigControlPathRequired"));
|
||||||
@@ -109,17 +109,15 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
finalName = $"{_protocolType} - {HostBox.Text}";
|
finalName = $"{_fileSourceType} - {HostBox.Text}";
|
||||||
}
|
}
|
||||||
|
|
||||||
Enum.TryParse(_protocolType, true, out FileSourceType sourceType);
|
|
||||||
|
|
||||||
string scheme = GetScheme();
|
string scheme = GetScheme();
|
||||||
|
|
||||||
var folder = new MediaFolder
|
var folder = new MediaFolder
|
||||||
{
|
{
|
||||||
Name = finalName,
|
Name = finalName,
|
||||||
SourceType = sourceType,
|
SourceType = _fileSourceType,
|
||||||
|
|
||||||
UriScheme = scheme,
|
UriScheme = scheme,
|
||||||
UriHost = HostBox.Text.Trim(), // ȥ<><C8A5><EFBFBD><EFBFBD>β<EFBFBD>ո<EFBFBD>
|
UriHost = HostBox.Text.Trim(), // ȥ<><C8A5><EFBFBD><EFBFBD>β<EFBFBD>ո<EFBFBD>
|
||||||
@@ -144,12 +142,7 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
{
|
{
|
||||||
ProgressBar.Visibility = visibility;
|
ProgressBar.Visibility = visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PathBox_TextChanged(object sender, TextChangedEventArgs e)
|
|
||||||
{
|
|
||||||
CheckPathForWarning();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckPathForWarning()
|
private void CheckPathForWarning()
|
||||||
{
|
{
|
||||||
string? path = PathBox.Text?.Trim();
|
string? path = PathBox.Text?.Trim();
|
||||||
@@ -178,6 +171,11 @@ namespace BetterLyrics.WinUI3.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void PathBox_TextChanged(object sender, TextChangedEventArgs e)
|
||||||
|
{
|
||||||
|
CheckPathForWarning();
|
||||||
|
}
|
||||||
|
|
||||||
private async void BrowseButton_Click(object sender, RoutedEventArgs e)
|
private async void BrowseButton_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace BetterLyrics.WinUI3.Converter
|
|||||||
FileSourceType.Local => "\uE8B7", // Folder
|
FileSourceType.Local => "\uE8B7", // Folder
|
||||||
FileSourceType.SMB => "\uE839", // Network
|
FileSourceType.SMB => "\uE839", // Network
|
||||||
FileSourceType.FTP => "\uE838", // Globe
|
FileSourceType.FTP => "\uE838", // Globe
|
||||||
FileSourceType.WebDav => "\uE753", // Cloud
|
FileSourceType.WebDAV => "\uE753", // Cloud
|
||||||
_ => "\uE8B7"
|
_ => "\uE8B7"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,6 @@
|
|||||||
Local,
|
Local,
|
||||||
SMB,
|
SMB,
|
||||||
FTP,
|
FTP,
|
||||||
WebDav
|
WebDAV
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace BetterLyrics.WinUI3.Helper
|
||||||
|
{
|
||||||
|
public static class WebDavProbeHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 自动检测目标主机是 HTTP 还是 HTTPS
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>返回 "https" 或 "http",如果都连不上返回 null</returns>
|
||||||
|
public static async Task<string?> DetectSchemeAsync(string host, int port, string? path, string? user, string? pwd)
|
||||||
|
{
|
||||||
|
if (port == 443) return "https";
|
||||||
|
if (port == 80) return "http";
|
||||||
|
|
||||||
|
// 忽略 SSL 证书错误,因为很多 NAS 是自签名的
|
||||||
|
var handler = new HttpClientHandler
|
||||||
|
{
|
||||||
|
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true,
|
||||||
|
UseProxy = false
|
||||||
|
};
|
||||||
|
|
||||||
|
// 设置认证
|
||||||
|
if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(pwd))
|
||||||
|
{
|
||||||
|
handler.Credentials = new NetworkCredential(user, pwd);
|
||||||
|
handler.PreAuthenticate = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
using var client = new HttpClient(handler);
|
||||||
|
client.Timeout = TimeSpan.FromSeconds(3);
|
||||||
|
|
||||||
|
if (await ProbeUrlAsync(client, "https", host, port, path))
|
||||||
|
{
|
||||||
|
return "https";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (await ProbeUrlAsync(client, "http", host, port, path))
|
||||||
|
{
|
||||||
|
return "http";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 都失败
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async Task<bool> ProbeUrlAsync(HttpClient client, string scheme, string host, int port, string? path)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var uriBuilder = new UriBuilder(scheme, host, port, path);
|
||||||
|
|
||||||
|
// 使用 PROPFIND 方法,且 Depth 为 0,只检测根节点是否存在,不拉取列表
|
||||||
|
var request = new HttpRequestMessage(new HttpMethod("PROPFIND"), uriBuilder.Uri);
|
||||||
|
request.Headers.Add("Depth", "0");
|
||||||
|
|
||||||
|
var response = await client.SendAsync(request);
|
||||||
|
|
||||||
|
return response.StatusCode != HttpStatusCode.BadRequest;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ using BetterLyrics.WinUI3.Helper;
|
|||||||
using BetterLyrics.WinUI3.Services.FileSystemService;
|
using BetterLyrics.WinUI3.Services.FileSystemService;
|
||||||
using BetterLyrics.WinUI3.Services.FileSystemService.Providers;
|
using BetterLyrics.WinUI3.Services.FileSystemService.Providers;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
using System;
|
using System;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@@ -30,6 +31,7 @@ namespace BetterLyrics.WinUI3.Models
|
|||||||
[ObservableProperty][NotifyPropertyChangedFor(nameof(UriString))] public partial string UriHost { get; set; }
|
[ObservableProperty][NotifyPropertyChangedFor(nameof(UriString))] public partial string UriHost { get; set; }
|
||||||
[ObservableProperty][NotifyPropertyChangedFor(nameof(UriString))] public partial int UriPort { get; set; } = -1;
|
[ObservableProperty][NotifyPropertyChangedFor(nameof(UriString))] public partial int UriPort { get; set; } = -1;
|
||||||
|
|
||||||
|
[JsonPropertyName("Path")]
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
[NotifyPropertyChangedRecipients]
|
[NotifyPropertyChangedRecipients]
|
||||||
[NotifyPropertyChangedFor(nameof(ConnectionSummary))]
|
[NotifyPropertyChangedFor(nameof(ConnectionSummary))]
|
||||||
@@ -40,12 +42,10 @@ namespace BetterLyrics.WinUI3.Models
|
|||||||
|
|
||||||
[JsonIgnore] public bool IsLocal => SourceType == FileSourceType.Local;
|
[JsonIgnore] public bool IsLocal => SourceType == FileSourceType.Local;
|
||||||
|
|
||||||
[JsonIgnore][ObservableProperty] public partial bool IsIndexing { get; set; } = false;
|
[ObservableProperty][NotifyPropertyChangedRecipients] public partial bool IsProcessing { get; set; } = false;
|
||||||
[JsonIgnore][ObservableProperty] public partial double IndexingProgress { get; set; } = 0;
|
[ObservableProperty] public partial double IndexingProgress { get; set; } = 0;
|
||||||
[JsonIgnore][ObservableProperty] public partial string IndexingStatusText { get; set; } = "";
|
[ObservableProperty] public partial string StatusText { get; set; } = "";
|
||||||
|
[ObservableProperty] public partial InfoBarSeverity StatusSeverity { get; set; } = InfoBarSeverity.Informational;
|
||||||
[JsonIgnore][ObservableProperty] public partial bool IsCleaningUp { get; set; } = false;
|
|
||||||
[JsonIgnore][ObservableProperty] public partial string CleaningUpStatusText { get; set; } = "";
|
|
||||||
|
|
||||||
[ObservableProperty][NotifyPropertyChangedRecipients] public partial DateTime? LastSyncTime { get; set; }
|
[ObservableProperty][NotifyPropertyChangedRecipients] public partial DateTime? LastSyncTime { get; set; }
|
||||||
[ObservableProperty][NotifyPropertyChangedRecipients] public partial AutoScanInterval ScanInterval { get; set; } = AutoScanInterval.Disabled;
|
[ObservableProperty][NotifyPropertyChangedRecipients] public partial AutoScanInterval ScanInterval { get; set; } = AutoScanInterval.Disabled;
|
||||||
@@ -118,7 +118,7 @@ namespace BetterLyrics.WinUI3.Models
|
|||||||
FileSourceType.Local => new LocalFileSystem(this),
|
FileSourceType.Local => new LocalFileSystem(this),
|
||||||
FileSourceType.SMB => new SMBFileSystem(this),
|
FileSourceType.SMB => new SMBFileSystem(this),
|
||||||
FileSourceType.FTP => new FTPFileSystem(this),
|
FileSourceType.FTP => new FTPFileSystem(this),
|
||||||
FileSourceType.WebDav => new WebDavFileSystem(this),
|
FileSourceType.WebDAV => new WebDavFileSystem(this),
|
||||||
_ => throw new NotImplementedException()
|
_ => throw new NotImplementedException()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using SQLite;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace BetterLyrics.WinUI3.Models
|
||||||
|
{
|
||||||
|
[Table("PlayHistory")]
|
||||||
|
public class PlayHistoryItem
|
||||||
|
{
|
||||||
|
[PrimaryKey, AutoIncrement]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Indexed] public string Title { get; set; }
|
||||||
|
[Indexed] public string Artist { get; set; }
|
||||||
|
public string Album { get; set; }
|
||||||
|
public string AlbumArtHash { get; set; } // 不同播放器来源的图可能不同
|
||||||
|
|
||||||
|
[Indexed] public DateTime StartedAt { get; set; }
|
||||||
|
public double DurationPlayedMs { get; set; }
|
||||||
|
public double TotalDurationMs { get; set; }
|
||||||
|
|
||||||
|
[Indexed]
|
||||||
|
public string PlayerID { get; set; } // "Spotify", "QQMusic", etc.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ using BetterLyrics.WinUI3.ViewModels;
|
|||||||
using CommunityToolkit.Mvvm.Messaging;
|
using CommunityToolkit.Mvvm.Messaging;
|
||||||
using CommunityToolkit.Mvvm.Messaging.Messages;
|
using CommunityToolkit.Mvvm.Messaging.Messages;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
using SQLite;
|
using SQLite;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
@@ -241,8 +242,10 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
{
|
{
|
||||||
_dispatcherQueue.TryEnqueue(() =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
folder.CleaningUpStatusText = _localizationService.GetLocalizedString("FileSystemServicePrepareToClean");
|
folder.IndexingProgress = 0;
|
||||||
folder.IsCleaningUp = true;
|
folder.StatusSeverity = InfoBarSeverity.Informational;
|
||||||
|
folder.StatusText = _localizationService.GetLocalizedString("FileSystemServicePrepareToClean");
|
||||||
|
folder.IsProcessing = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (_folderTimerTokens.TryRemove(folder.Id, out var timerCts))
|
if (_folderTimerTokens.TryRemove(folder.Id, out var timerCts))
|
||||||
@@ -266,7 +269,7 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
{
|
{
|
||||||
_dispatcherQueue.TryEnqueue(() =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
folder.CleaningUpStatusText = _localizationService.GetLocalizedString("FileSystemServiceCleaningCache");
|
folder.StatusText = _localizationService.GetLocalizedString("FileSystemServiceCleaningCache");
|
||||||
});
|
});
|
||||||
|
|
||||||
await InitializeAsync();
|
await InitializeAsync();
|
||||||
@@ -295,8 +298,7 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
{
|
{
|
||||||
_dispatcherQueue.TryEnqueue(() =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
folder.CleaningUpStatusText = "";
|
folder.IsProcessing = false;
|
||||||
folder.IsCleaningUp = false;
|
|
||||||
folder.LastSyncTime = null;
|
folder.LastSyncTime = null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -311,27 +313,32 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
|
|
||||||
_dispatcherQueue.TryEnqueue(() =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
folder.IsIndexing = true;
|
folder.StatusSeverity = InfoBarSeverity.Informational;
|
||||||
|
folder.IsProcessing = true;
|
||||||
folder.IndexingProgress = 0;
|
folder.IndexingProgress = 0;
|
||||||
folder.IndexingStatusText = _localizationService.GetLocalizedString("FileSystemServiceWaitingForScan");
|
folder.StatusText = _localizationService.GetLocalizedString("FileSystemServiceWaitingForScan");
|
||||||
});
|
});
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _folderScanLock.WaitAsync(scanCts.Token);
|
await _folderScanLock.WaitAsync(scanCts.Token);
|
||||||
|
|
||||||
_dispatcherQueue.TryEnqueue(() => folder.IndexingStatusText = _localizationService.GetLocalizedString("FileSystemServiceConnecting"));
|
_dispatcherQueue.TryEnqueue(() => folder.StatusText = _localizationService.GetLocalizedString("FileSystemServiceConnecting"));
|
||||||
|
|
||||||
await InitializeAsync();
|
await InitializeAsync();
|
||||||
|
|
||||||
using var fs = folder.CreateFileSystem();
|
using var fs = folder.CreateFileSystem();
|
||||||
if (fs == null || !await fs.ConnectAsync())
|
if (fs == null || !await fs.ConnectAsync())
|
||||||
{
|
{
|
||||||
_dispatcherQueue.TryEnqueue(() => folder.IndexingStatusText = _localizationService.GetLocalizedString("FileSystemServiceConnectFailed"));
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
|
{
|
||||||
|
folder.StatusSeverity = InfoBarSeverity.Error;
|
||||||
|
folder.StatusText = _localizationService.GetLocalizedString("FileSystemServiceConnectFailed");
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_dispatcherQueue.TryEnqueue(() => folder.IndexingStatusText = _localizationService.GetLocalizedString("FileSystemServiceFetchingFileList"));
|
_dispatcherQueue.TryEnqueue(() => folder.StatusText = _localizationService.GetLocalizedString("FileSystemServiceFetchingFileList"));
|
||||||
|
|
||||||
var filesToProcess = new List<FileCacheEntity>();
|
var filesToProcess = new List<FileCacheEntity>();
|
||||||
var foldersToScan = new Queue<FileCacheEntity?>();
|
var foldersToScan = new Queue<FileCacheEntity?>();
|
||||||
@@ -374,10 +381,10 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
if (current % 10 == 0 || current == total)
|
if (current % 10 == 0 || current == total)
|
||||||
{
|
{
|
||||||
double progress = (double)current / total * 100;
|
double progress = (double)current / total * 100;
|
||||||
_dispatcherQueue.TryEnqueue(Microsoft.UI.Dispatching.DispatcherQueuePriority.Low, () =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
folder.IndexingProgress = progress;
|
folder.IndexingProgress = progress;
|
||||||
folder.IndexingStatusText = $"{_localizationService.GetLocalizedString("FileSystemServiceParsing")} {current}/{total}";
|
folder.StatusText = $"{_localizationService.GetLocalizedString("FileSystemServiceParsing")} {current}/{total}";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,6 +468,8 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
|
|
||||||
_dispatcherQueue.TryEnqueue(() =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
|
folder.StatusSeverity = InfoBarSeverity.Success;
|
||||||
|
folder.StatusText = _localizationService.GetLocalizedString("FileSystemServiceReady");
|
||||||
folder.LastSyncTime = DateTime.Now;
|
folder.LastSyncTime = DateTime.Now;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -470,7 +479,11 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_dispatcherQueue.TryEnqueue(() => folder.IndexingStatusText = ex.Message);
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
|
{
|
||||||
|
folder.StatusText = ex.Message;
|
||||||
|
folder.StatusSeverity = InfoBarSeverity.Error;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@@ -480,9 +493,8 @@ namespace BetterLyrics.WinUI3.Services.FileSystemService
|
|||||||
|
|
||||||
_dispatcherQueue.TryEnqueue(() =>
|
_dispatcherQueue.TryEnqueue(() =>
|
||||||
{
|
{
|
||||||
folder.IsIndexing = false;
|
folder.IsProcessing = false;
|
||||||
folder.IndexingStatusText = "";
|
folder.IndexingProgress = 0;
|
||||||
folder.IndexingProgress = 100;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>الوضع المثبت (Docked)</value>
|
<value>الوضع المثبت (Docked)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>تم التصدير بنجاح</value>
|
<value>تم التصدير بنجاح</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>التحضير لتنظيف ذاكرة التخزين المؤقت...</value>
|
<value>التحضير لتنظيف ذاكرة التخزين المؤقت...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>تم اكتشاف مسار الدليل الجذر. قد يحتوي فهرس القرص الكامل على عدد كبير من الملفات غير الوسائط ويتسبب في استغراق الفحص وقتاً طويلاً جداً. يوصى بتحديد دليل فرعي محدد.</value>
|
<value>تم اكتشاف مسار الدليل الجذر. قد يحتوي فهرس القرص الكامل على عدد كبير من الملفات غير الوسائط ويتسبب في استغراق الفحص وقتاً طويلاً جداً. يوصى بتحديد دليل فرعي محدد.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>كل الموسيقى</value>
|
<value>كل الموسيقى</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>مسح قائمة الانتظار</value>
|
<value>مسح قائمة الانتظار</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Angedockter Modus</value>
|
<value>Angedockter Modus</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Export erfolgreich</value>
|
<value>Export erfolgreich</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Bereinigung des Caches vorbereiten...</value>
|
<value>Bereinigung des Caches vorbereiten...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>Der Pfad zum Stammverzeichnis wurde erkannt. Ein vollständiger Festplattenindex kann eine große Anzahl von Nicht-Mediendateien enthalten und dazu führen, dass die Suche zu lange dauert. Es wird empfohlen, ein bestimmtes Unterverzeichnis anzugeben.</value>
|
<value>Der Pfad zum Stammverzeichnis wurde erkannt. Ein vollständiger Festplattenindex kann eine große Anzahl von Nicht-Mediendateien enthalten und dazu führen, dass die Suche zu lange dauert. Es wird empfohlen, ein bestimmtes Unterverzeichnis anzugeben.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Alle Musikstücke</value>
|
<value>Alle Musikstücke</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Warteschlange leeren</value>
|
<value>Warteschlange leeren</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Docked Mode</value>
|
<value>Docked Mode</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value>Error</value>
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Export successful</value>
|
<value>Export successful</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Preparing to clean cache...</value>
|
<value>Preparing to clean cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value>Ready</value>
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>The root directory path has been detected. A full disk index may contain a large number of non-media files and cause the scan to take too long. It is recommended to specify a specific subdirectory.</value>
|
<value>The root directory path has been detected. A full disk index may contain a large number of non-media files and cause the scan to take too long. It is recommended to specify a specific subdirectory.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>All Music</value>
|
<value>All Music</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value>The data is being processed. You can check the detailed progress in the settings.</value>
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Clear queue</value>
|
<value>Clear queue</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Modo Acoplado</value>
|
<value>Modo Acoplado</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Exportación exitosa</value>
|
<value>Exportación exitosa</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Preparando la limpieza de caché...</value>
|
<value>Preparando la limpieza de caché...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>Se ha detectado la ruta del directorio raíz. Un índice de disco completo puede contener un gran número de archivos no multimedia y hacer que la exploración dure demasiado tiempo. Se recomienda especificar un subdirectorio concreto.</value>
|
<value>Se ha detectado la ruta del directorio raíz. Un índice de disco completo puede contener un gran número de archivos no multimedia y hacer que la exploración dure demasiado tiempo. Se recomienda especificar un subdirectorio concreto.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Toda la música</value>
|
<value>Toda la música</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Borrar cola</value>
|
<value>Borrar cola</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Mode Ancré</value>
|
<value>Mode Ancré</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Exportation réussie</value>
|
<value>Exportation réussie</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Préparation du nettoyage du cache...</value>
|
<value>Préparation du nettoyage du cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>Le chemin du répertoire racine a été détecté. Un index de disque complet peut contenir un grand nombre de fichiers non multimédias et faire durer l'analyse trop longtemps. Il est recommandé de spécifier un sous-répertoire spécifique.</value>
|
<value>Le chemin du répertoire racine a été détecté. Un index de disque complet peut contenir un grand nombre de fichiers non multimédias et faire durer l'analyse trop longtemps. Il est recommandé de spécifier un sous-répertoire spécifique.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Toute la musique</value>
|
<value>Toute la musique</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Vider la file d'attente</value>
|
<value>Vider la file d'attente</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>डॉक्ड मोड</value>
|
<value>डॉक्ड मोड</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>निर्यात सफल रहा</value>
|
<value>निर्यात सफल रहा</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Preparing to clean cache...</value>
|
<value>Preparing to clean cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>The root directory path has been detected. A full disk index may contain a large number of non-media files and cause the scan to take too long. It is recommended to specify a specific subdirectory.</value>
|
<value>The root directory path has been detected. A full disk index may contain a large number of non-media files and cause the scan to take too long. It is recommended to specify a specific subdirectory.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>सभी गाने</value>
|
<value>सभी गाने</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>प्लेइंग कतार साफ़ करें</value>
|
<value>प्लेइंग कतार साफ़ करें</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Mode Dok</value>
|
<value>Mode Dok</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Ekspor berhasil</value>
|
<value>Ekspor berhasil</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Bersiap untuk membersihkan cache...</value>
|
<value>Bersiap untuk membersihkan cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>Jalur direktori root telah terdeteksi. Indeks disk penuh mungkin berisi sejumlah besar file non-media dan menyebabkan pemindaian memakan waktu terlalu lama. Disarankan untuk menentukan subdirektori tertentu.</value>
|
<value>Jalur direktori root telah terdeteksi. Indeks disk penuh mungkin berisi sejumlah besar file non-media dan menyebabkan pemindaian memakan waktu terlalu lama. Disarankan untuk menentukan subdirektori tertentu.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Semua Musik</value>
|
<value>Semua Musik</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Bersihkan antrean putar</value>
|
<value>Bersihkan antrean putar</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>ドッキングモード</value>
|
<value>ドッキングモード</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>エクスポートが成功しました</value>
|
<value>エクスポートが成功しました</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>キャッシュ・クリーン準備中</value>
|
<value>キャッシュ・クリーン準備中</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>ルートディレクトリのパスが検出された。フルディスクインデックスにはメディア以外のファイルが多数含まれている可能性があり、スキャンに時間がかかりすぎる。特定のサブディレクトリを指定することを推奨する。</value>
|
<value>ルートディレクトリのパスが検出された。フルディスクインデックスにはメディア以外のファイルが多数含まれている可能性があり、スキャンに時間がかかりすぎる。特定のサブディレクトリを指定することを推奨する。</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>すべてのミュージック</value>
|
<value>すべてのミュージック</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>キューをクリア</value>
|
<value>キューをクリア</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>도킹 모드</value>
|
<value>도킹 모드</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>내보내기 성공</value>
|
<value>내보내기 성공</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>캐시 정리 준비 중...</value>
|
<value>캐시 정리 준비 중...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>루트 디렉터리 경로가 감지되었습니다. 전체 디스크 인덱스에 미디어가 아닌 파일이 많이 포함되어 있어 스캔 시간이 너무 오래 걸릴 수 있습니다. 특정 하위 디렉터리를 지정하는 것이 좋습니다.</value>
|
<value>루트 디렉터리 경로가 감지되었습니다. 전체 디스크 인덱스에 미디어가 아닌 파일이 많이 포함되어 있어 스캔 시간이 너무 오래 걸릴 수 있습니다. 특정 하위 디렉터리를 지정하는 것이 좋습니다.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>모든 음악</value>
|
<value>모든 음악</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>재생 대기열 비우기</value>
|
<value>재생 대기열 비우기</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Mod Dok</value>
|
<value>Mod Dok</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Eksport berjaya</value>
|
<value>Eksport berjaya</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Preparing to clean cache...</value>
|
<value>Preparing to clean cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>The root directory path has been detected. A full disk index may contain a large number of non-media files and cause the scan to take too long. It is recommended to specify a specific subdirectory.</value>
|
<value>The root directory path has been detected. A full disk index may contain a large number of non-media files and cause the scan to take too long. It is recommended to specify a specific subdirectory.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Semua Muzik</value>
|
<value>Semua Muzik</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Kosongkan baris gilir main</value>
|
<value>Kosongkan baris gilir main</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Modo Acoplado</value>
|
<value>Modo Acoplado</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Exportação bem-sucedida</value>
|
<value>Exportação bem-sucedida</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>A preparar a limpeza da cache...</value>
|
<value>A preparar a limpeza da cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>O caminho do diretório raiz foi detectado. Um índice de disco completo pode conter um grande número de ficheiros não multimédia e fazer com que a pesquisa demore demasiado tempo. Recomenda-se a especificação de um subdiretório específico.</value>
|
<value>O caminho do diretório raiz foi detectado. Um índice de disco completo pode conter um grande número de ficheiros não multimédia e fazer com que a pesquisa demore demasiado tempo. Recomenda-se a especificação de um subdiretório específico.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Todas as Músicas</value>
|
<value>Todas as Músicas</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Limpar fila de reprodução</value>
|
<value>Limpar fila de reprodução</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Закрепленный режим</value>
|
<value>Закрепленный режим</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Экспорт выполнен успешно</value>
|
<value>Экспорт выполнен успешно</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Подготовка к очистке кэша...</value>
|
<value>Подготовка к очистке кэша...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>Обнаружен путь к корневому каталогу. Полный индекс диска может содержать большое количество файлов, не относящихся к мультимедиа, что приведет к слишком долгому сканированию. Рекомендуется указывать конкретный подкаталог.</value>
|
<value>Обнаружен путь к корневому каталогу. Полный индекс диска может содержать большое количество файлов, не относящихся к мультимедиа, что приведет к слишком долгому сканированию. Рекомендуется указывать конкретный подкаталог.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Вся музыка</value>
|
<value>Вся музыка</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Очистить очередь воспроизведения</value>
|
<value>Очистить очередь воспроизведения</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>โหมดเชื่อมต่อ (Docked)</value>
|
<value>โหมดเชื่อมต่อ (Docked)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>ส่งออกสำเร็จ</value>
|
<value>ส่งออกสำเร็จ</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>กำลังเตรียมล้างแคช...</value>
|
<value>กำลังเตรียมล้างแคช...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>พบเส้นทางไดเรกทอรีรากแล้ว ดัชนีของดิสก์ทั้งหมดอาจมีไฟล์ที่ไม่ใช่สื่อจำนวนมากและทำให้การสแกนใช้เวลานานเกินไป ขอแนะนำให้ระบุไดเรกทอรีย่อยเฉพาะ</value>
|
<value>พบเส้นทางไดเรกทอรีรากแล้ว ดัชนีของดิสก์ทั้งหมดอาจมีไฟล์ที่ไม่ใช่สื่อจำนวนมากและทำให้การสแกนใช้เวลานานเกินไป ขอแนะนำให้ระบุไดเรกทอรีย่อยเฉพาะ</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>เพลงทั้งหมด</value>
|
<value>เพลงทั้งหมด</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>ล้างคิวการเล่น</value>
|
<value>ล้างคิวการเล่น</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>Chế độ neo (Docked)</value>
|
<value>Chế độ neo (Docked)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>Xuất thành công</value>
|
<value>Xuất thành công</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>Đang chuẩn bị xóa bộ nhớ cache...</value>
|
<value>Đang chuẩn bị xóa bộ nhớ cache...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>Đường dẫn thư mục gốc đã được phát hiện. Chỉ mục đĩa đầy đủ có thể chứa một lượng lớn tệp không phải phương tiện và khiến quá trình quét mất quá nhiều thời gian. Khuyến nghị chỉ định một thư mục con cụ thể.</value>
|
<value>Đường dẫn thư mục gốc đã được phát hiện. Chỉ mục đĩa đầy đủ có thể chứa một lượng lớn tệp không phải phương tiện và khiến quá trình quét mất quá nhiều thời gian. Khuyến nghị chỉ định một thư mục con cụ thể.</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>Tất cả bài hát</value>
|
<value>Tất cả bài hát</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>Xóa hàng đợi phát</value>
|
<value>Xóa hàng đợi phát</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>停靠模式</value>
|
<value>停靠模式</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value>错误</value>
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>导出成功</value>
|
<value>导出成功</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>正在准备清理缓存...</value>
|
<value>正在准备清理缓存...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value>就绪</value>
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>已检测到根目录路径。全磁盘索引可能包含大量非媒体文件,导致扫描时间过长。建议指定一个特定的子目录。</value>
|
<value>已检测到根目录路径。全磁盘索引可能包含大量非媒体文件,导致扫描时间过长。建议指定一个特定的子目录。</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>所有音乐</value>
|
<value>所有音乐</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value>数据处理中,可前往设置查看详细进度</value>
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>清除播放队列</value>
|
<value>清除播放队列</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -59,46 +59,46 @@
|
|||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string"/>
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string"/>
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string"/>
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string"/>
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string"/>
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space"/>
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
@@ -159,6 +159,9 @@
|
|||||||
<data name="DockedMode" xml:space="preserve">
|
<data name="DockedMode" xml:space="preserve">
|
||||||
<value>停靠模式</value>
|
<value>停靠模式</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="ExportSettingsSuccess" xml:space="preserve">
|
<data name="ExportSettingsSuccess" xml:space="preserve">
|
||||||
<value>匯出成功</value>
|
<value>匯出成功</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -183,6 +186,9 @@
|
|||||||
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
<data name="FileSystemServicePrepareToClean" xml:space="preserve">
|
||||||
<value>準備清除快取...</value>
|
<value>準備清除快取...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FileSystemServiceReady" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
<data name="FileSystemServiceRootDirectoryWarning" xml:space="preserve">
|
||||||
<value>已偵測到根目錄路徑。全磁碟索引可能包含大量非媒體檔案,導致掃描時間過長。建議指定特定的子目錄。</value>
|
<value>已偵測到根目錄路徑。全磁碟索引可能包含大量非媒體檔案,導致掃描時間過長。建議指定特定的子目錄。</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -408,6 +414,9 @@
|
|||||||
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
<data name="MusicGalleryPageAllSongs" xml:space="preserve">
|
||||||
<value>所有音樂</value>
|
<value>所有音樂</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MusicGalleryPageDataLoading.Message" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
<data name="MusicGalleryPageEmptyPlayingQueue.Text" xml:space="preserve">
|
||||||
<value>清除播放佇列</value>
|
<value>清除播放佇列</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using BetterLyrics.WinUI3.Controls;
|
using BetterLyrics.WinUI3.Controls;
|
||||||
|
using BetterLyrics.WinUI3.Enums;
|
||||||
using BetterLyrics.WinUI3.Helper;
|
using BetterLyrics.WinUI3.Helper;
|
||||||
using BetterLyrics.WinUI3.Hooks;
|
using BetterLyrics.WinUI3.Hooks;
|
||||||
using BetterLyrics.WinUI3.Models;
|
using BetterLyrics.WinUI3.Models;
|
||||||
@@ -9,6 +10,7 @@ using BetterLyrics.WinUI3.Services.SettingsService;
|
|||||||
using BetterLyrics.WinUI3.Views;
|
using BetterLyrics.WinUI3.Views;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
|
using CommunityToolkit.WinUI.Animations;
|
||||||
using Microsoft.UI.Xaml;
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.UI.Xaml.Controls;
|
using Microsoft.UI.Xaml.Controls;
|
||||||
using System;
|
using System;
|
||||||
@@ -51,23 +53,25 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
|
|
||||||
public void SyncFolder(MediaFolder folder)
|
public void SyncFolder(MediaFolder folder)
|
||||||
{
|
{
|
||||||
if (folder.IsIndexing) return;
|
if (folder.IsProcessing) return;
|
||||||
|
|
||||||
_ = Task.Run(async () => await _fileSystemService.ScanMediaFolderAsync(folder, CancellationToken.None));
|
_ = Task.Run(async () => await _fileSystemService.ScanMediaFolderAsync(folder, CancellationToken.None));
|
||||||
}
|
}
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private async Task AddMediaSourceAsync(string protocolType)
|
private async Task AddMediaSourceAsync(string fileSourceTypeName)
|
||||||
{
|
{
|
||||||
|
FileSourceType fileSourceType = Enum.Parse<FileSourceType>(fileSourceTypeName);
|
||||||
|
|
||||||
var dialog = new ContentDialog
|
var dialog = new ContentDialog
|
||||||
{
|
{
|
||||||
XamlRoot = WindowHook.GetWindow<SettingsWindow>()?.Content.XamlRoot,
|
XamlRoot = WindowHook.GetWindow<SettingsWindow>()?.Content.XamlRoot,
|
||||||
Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style,
|
Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style,
|
||||||
Title = protocolType == "Local" ? _localizationService.GetLocalizedString("MediaSettingsControlLocalFolder") : protocolType,
|
Title = fileSourceType == FileSourceType.Local ? _localizationService.GetLocalizedString("MediaSettingsControlLocalFolder") : Enum.GetName(fileSourceType),
|
||||||
PrimaryButtonText = _localizationService.GetLocalizedString("Add"),
|
PrimaryButtonText = _localizationService.GetLocalizedString("Add"),
|
||||||
CloseButtonText = _localizationService.GetLocalizedString("Cancel"),
|
CloseButtonText = _localizationService.GetLocalizedString("Cancel"),
|
||||||
DefaultButton = ContentDialogButton.Primary,
|
DefaultButton = ContentDialogButton.Primary,
|
||||||
Content = new RemoteServerConfigControl(protocolType)
|
Content = new RemoteServerConfigControl(fileSourceType)
|
||||||
};
|
};
|
||||||
|
|
||||||
dialog.PrimaryButtonClick += async (s, e) =>
|
dialog.PrimaryButtonClick += async (s, e) =>
|
||||||
@@ -86,13 +90,13 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
{
|
{
|
||||||
var tempFolder = configControl.GetConfig();
|
var tempFolder = configControl.GetConfig();
|
||||||
|
|
||||||
if (protocolType == "Local")
|
if (fileSourceType == FileSourceType.Local)
|
||||||
{
|
{
|
||||||
string path = tempFolder.UriPath;
|
string path = tempFolder.UriPath;
|
||||||
|
|
||||||
if (!System.IO.Directory.Exists(path))
|
if (!Directory.Exists(path))
|
||||||
{
|
{
|
||||||
throw new System.IO.DirectoryNotFoundException(_localizationService.GetLocalizedString("RemoteServerConfigControlPathNotExisted"));
|
throw new DirectoryNotFoundException(_localizationService.GetLocalizedString("RemoteServerConfigControlPathNotExisted"));
|
||||||
}
|
}
|
||||||
|
|
||||||
var normalizedPath = Path.GetFullPath(path).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;
|
var normalizedPath = Path.GetFullPath(path).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;
|
||||||
@@ -126,6 +130,29 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (fileSourceType == FileSourceType.WebDAV)
|
||||||
|
{
|
||||||
|
// 使用辅助类探测协议
|
||||||
|
string? detectedScheme = await WebDavProbeHelper.DetectSchemeAsync(
|
||||||
|
tempFolder.UriHost,
|
||||||
|
tempFolder.UriPort,
|
||||||
|
tempFolder.UriPath,
|
||||||
|
tempFolder.UserName,
|
||||||
|
tempFolder.Password
|
||||||
|
);
|
||||||
|
|
||||||
|
if (detectedScheme == null)
|
||||||
|
{
|
||||||
|
// 探测失败,直接报错返回
|
||||||
|
configControl.ShowError(_localizationService.GetLocalizedString("SettingsPageServerTestFailedInfo"));
|
||||||
|
deferral.Complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将探测到的正确协议 (http 或 https) 写入配置对象
|
||||||
|
tempFolder.UriScheme = detectedScheme;
|
||||||
|
}
|
||||||
|
|
||||||
var newUriString = tempFolder.GetStandardUri().AbsoluteUri.TrimEnd('/') + "/";
|
var newUriString = tempFolder.GetStandardUri().AbsoluteUri.TrimEnd('/') + "/";
|
||||||
|
|
||||||
foreach (var existingFolder in AppSettings.LocalMediaFolders)
|
foreach (var existingFolder in AppSettings.LocalMediaFolders)
|
||||||
@@ -208,10 +235,5 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
await dialog.ShowAsync();
|
await dialog.ShowAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ShowErrorTip(RemoteServerConfigControl control, string message)
|
|
||||||
{
|
|
||||||
control.ShowError(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -274,8 +274,6 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
{
|
{
|
||||||
_refreshSongsTimer.Debounce(() =>
|
_refreshSongsTimer.Debounce(() =>
|
||||||
{
|
{
|
||||||
IsDataLoading = true;
|
|
||||||
|
|
||||||
_ = Task.Run(async () =>
|
_ = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
var enabledFolderIds = _settingsService.AppSettings.LocalMediaFolders
|
var enabledFolderIds = _settingsService.AppSettings.LocalMediaFolders
|
||||||
@@ -304,8 +302,6 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
IsLocalMediaNotFound = !_filteredTracks.Any();
|
IsLocalMediaNotFound = !_filteredTracks.Any();
|
||||||
|
|
||||||
ApplySongOrderType();
|
ApplySongOrderType();
|
||||||
|
|
||||||
IsDataLoading = false;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}, Time.DebounceTimeout);
|
}, Time.DebounceTimeout);
|
||||||
@@ -491,8 +487,7 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
|
|
||||||
if (targetFolder == null)
|
if (targetFolder == null)
|
||||||
{
|
{
|
||||||
|
throw new FileNotFoundException(null, PlayingTrack.DecodedAbsoluteUri);
|
||||||
throw new Exception($"找不到文件 {PlayingTrack.FileName} 对应的存储配置。请检查服务器设置是否已启用。");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_currentProvider = targetFolder.CreateFileSystem();
|
_currentProvider = targetFolder.CreateFileSystem();
|
||||||
@@ -509,7 +504,7 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
|
|
||||||
if (sourceStream == null)
|
if (sourceStream == null)
|
||||||
{
|
{
|
||||||
throw new FileNotFoundException("无法打开文件流");
|
throw new FileNotFoundException(null, fileCacheStub.Uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sourceStream.CanSeek)
|
if (sourceStream.CanSeek)
|
||||||
@@ -561,7 +556,7 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ToastHelper.ShowToast($"PlayTrackAsync: Error", ex.Message, InfoBarSeverity.Error);
|
ToastHelper.ShowToast("Error", ex.Message, InfoBarSeverity.Error);
|
||||||
_timelineController.Pause();
|
_timelineController.Pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -665,6 +660,10 @@ namespace BetterLyrics.WinUI3.ViewModels
|
|||||||
{
|
{
|
||||||
RefreshSongs();
|
RefreshSongs();
|
||||||
}
|
}
|
||||||
|
else if (message.PropertyName == nameof(MediaFolder.IsProcessing))
|
||||||
|
{
|
||||||
|
IsDataLoading = message.NewValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -194,6 +194,7 @@
|
|||||||
|
|
||||||
<Grid x:Name="SongViewer" Grid.Column="1">
|
<Grid x:Name="SongViewer" Grid.Column="1">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
@@ -302,7 +303,13 @@
|
|||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<SemanticZoom Grid.Row="1">
|
<InfoBar
|
||||||
|
x:Uid="MusicGalleryPageDataLoading"
|
||||||
|
Grid.Row="1"
|
||||||
|
IsClosable="False"
|
||||||
|
IsOpen="{x:Bind ViewModel.IsDataLoading, Mode=OneWay}" />
|
||||||
|
|
||||||
|
<SemanticZoom Grid.Row="2">
|
||||||
<SemanticZoom.ZoomedInView>
|
<SemanticZoom.ZoomedInView>
|
||||||
<ListView
|
<ListView
|
||||||
x:Name="SongListView"
|
x:Name="SongListView"
|
||||||
@@ -448,7 +455,7 @@
|
|||||||
</SemanticZoom.ZoomedOutView>
|
</SemanticZoom.ZoomedOutView>
|
||||||
</SemanticZoom>
|
</SemanticZoom>
|
||||||
|
|
||||||
<Grid Grid.Row="1" Visibility="{x:Bind ViewModel.IsLocalMediaNotFound, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
|
<Grid Grid.Row="2" Visibility="{x:Bind ViewModel.IsLocalMediaNotFound, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||||
<StackPanel
|
<StackPanel
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
@@ -652,24 +659,6 @@
|
|||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid Background="{ThemeResource SolidBackgroundFillColorBaseBrush}" Visibility="{x:Bind ViewModel.IsDataLoading, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
|
|
||||||
<Grid Margin="12">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="48" />
|
|
||||||
<RowDefinition Height="12" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
<RowDefinition Height="12" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
<RowDefinition Height="12" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<labs:Shimmer Grid.Row="0" CornerRadius="6" />
|
|
||||||
<labs:Shimmer Grid.Row="2" CornerRadius="6" />
|
|
||||||
<labs:Shimmer Grid.Row="4" CornerRadius="6" />
|
|
||||||
<labs:Shimmer Grid.Row="6" CornerRadius="6" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<VisualStateManager.VisualStateGroups>
|
<VisualStateManager.VisualStateGroups>
|
||||||
<VisualStateGroup x:Name="PlaybackOrderState">
|
<VisualStateGroup x:Name="PlaybackOrderState">
|
||||||
<VisualState x:Name="RepeatAll">
|
<VisualState x:Name="RepeatAll">
|
||||||
|
|||||||
Reference in New Issue
Block a user