mirror of
https://github.com/LanZhan-Harmony/WindowsMusicPlayer-TheUntamedMusicPlayer.git
synced 2026-05-06 19:20:18 +08:00
更新字号调整、全局歌词偏移
This commit is contained in:
83
UntamedMusicPlayer/Helpers/FontHelper.cs
Normal file
83
UntamedMusicPlayer/Helpers/FontHelper.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System.Globalization;
|
||||
using Microsoft.Graphics.Canvas.Text;
|
||||
using Microsoft.UI.Text;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using UntamedMusicPlayer.Models;
|
||||
using Windows.UI.Text;
|
||||
using ZLinq;
|
||||
|
||||
namespace UntamedMusicPlayer.Helpers;
|
||||
|
||||
public static class FontHelper
|
||||
{
|
||||
private static List<FontFamilyInfo>? _systemFontFamilies;
|
||||
private static List<FontWeightInfo>? _FontWeights;
|
||||
|
||||
public static List<FontFamilyInfo> GetSystemFontFamilies()
|
||||
{
|
||||
if (_systemFontFamilies is not null)
|
||||
{
|
||||
return _systemFontFamilies;
|
||||
}
|
||||
var language = new string[] { CultureInfo.CurrentUICulture.Name.ToLowerInvariant() };
|
||||
var names = CanvasTextFormat.GetSystemFontFamilies();
|
||||
var displayNames = CanvasTextFormat.GetSystemFontFamilies(language);
|
||||
var list = new List<FontFamilyInfo>();
|
||||
for (var i = 0; i < names.Length; i++)
|
||||
{
|
||||
list.Add(
|
||||
new FontFamilyInfo
|
||||
{
|
||||
Name = names[i],
|
||||
DisplayName = displayNames[i],
|
||||
FontFamily = new FontFamily(names[i]),
|
||||
}
|
||||
);
|
||||
}
|
||||
_systemFontFamilies = [.. list.AsValueEnumerable().OrderBy(f => f.Name)];
|
||||
return _systemFontFamilies;
|
||||
}
|
||||
|
||||
public static List<FontWeightInfo> GetFontWeights()
|
||||
{
|
||||
if (_FontWeights is not null)
|
||||
{
|
||||
return _FontWeights;
|
||||
}
|
||||
var names = "Settings_FontWeights".GetLocalized().Split(", ");
|
||||
_FontWeights =
|
||||
[
|
||||
new() { DisplayName = names[0], FontWeight = FontWeights.Thin },
|
||||
new() { DisplayName = names[1], FontWeight = FontWeights.ExtraLight },
|
||||
new() { DisplayName = names[2], FontWeight = FontWeights.Light },
|
||||
new() { DisplayName = names[3], FontWeight = FontWeights.SemiLight },
|
||||
new() { DisplayName = names[4], FontWeight = FontWeights.Normal },
|
||||
new() { DisplayName = names[5], FontWeight = FontWeights.Medium },
|
||||
new() { DisplayName = names[6], FontWeight = FontWeights.SemiBold },
|
||||
new() { DisplayName = names[7], FontWeight = FontWeights.Bold },
|
||||
new() { DisplayName = names[8], FontWeight = FontWeights.ExtraBold },
|
||||
new() { DisplayName = names[9], FontWeight = FontWeights.Black },
|
||||
new() { DisplayName = names[10], FontWeight = FontWeights.ExtraBlack },
|
||||
];
|
||||
return _FontWeights;
|
||||
}
|
||||
|
||||
public static FontWeight ConvertToFontWeight(ushort weight)
|
||||
{
|
||||
return weight switch
|
||||
{
|
||||
100 => FontWeights.Thin,
|
||||
200 => FontWeights.ExtraLight,
|
||||
300 => FontWeights.Light,
|
||||
350 => FontWeights.SemiLight,
|
||||
400 => FontWeights.Normal,
|
||||
500 => FontWeights.Medium,
|
||||
600 => FontWeights.SemiBold,
|
||||
700 => FontWeights.Bold,
|
||||
800 => FontWeights.ExtraBold,
|
||||
900 => FontWeights.Black,
|
||||
950 => FontWeights.ExtraBlack,
|
||||
_ => FontWeights.Normal,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using CommunityToolkit.Mvvm.Messaging;
|
||||
using Microsoft.UI.Dispatching;
|
||||
using UntamedMusicPlayer.Helpers;
|
||||
using UntamedMusicPlayer.Messages;
|
||||
using UntamedMusicPlayer.Models;
|
||||
using UntamedMusicPlayer.Playback;
|
||||
|
||||
namespace UntamedMusicPlayer.LyricRenderer;
|
||||
@@ -10,6 +11,7 @@ namespace UntamedMusicPlayer.LyricRenderer;
|
||||
public sealed partial class LyricManager
|
||||
: ObservableRecipient,
|
||||
IRecipient<FontSizeChangeMessage>,
|
||||
IRecipient<LyricOffsetChangeMessage>,
|
||||
IDisposable
|
||||
{
|
||||
private readonly DispatcherQueue _dispatcher = DispatcherQueue.GetForCurrentThread();
|
||||
@@ -28,9 +30,25 @@ public sealed partial class LyricManager
|
||||
public partial string CurrentLyricContent { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// 歌词偏移毫秒数,正数表示歌词显示延后,负数表示歌词显示提前
|
||||
/// 全局歌词偏移毫秒数,正数表示歌词显示延后,负数表示歌词显示提前
|
||||
/// </summary>
|
||||
public double LyricAdjustMilliseconds { get; set; } = 0;
|
||||
private double _globalLyricOffset = Settings.GlobalLyricOffset;
|
||||
|
||||
/// <summary>
|
||||
/// 是否已手动调整(手动调整后将脱离全局偏移控制)
|
||||
/// </summary>
|
||||
private bool _isManuallyAdjusted = false;
|
||||
|
||||
/// <summary>
|
||||
/// 手动调整的歌词偏移毫秒数
|
||||
/// </summary>
|
||||
private double _manualLyricOffset = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 总偏移毫秒数
|
||||
/// </summary>
|
||||
private double TotalLyricOffset =>
|
||||
_isManuallyAdjusted ? _manualLyricOffset : _globalLyricOffset;
|
||||
|
||||
/// <summary>
|
||||
/// 歌词偏移显示字符串
|
||||
@@ -47,7 +65,8 @@ public sealed partial class LyricManager
|
||||
public LyricManager(SharedPlaybackState state)
|
||||
: base(StrongReferenceMessenger.Default)
|
||||
{
|
||||
Messenger.Register(this);
|
||||
Messenger.Register<FontSizeChangeMessage>(this);
|
||||
Messenger.Register<LyricOffsetChangeMessage>(this);
|
||||
_state = state;
|
||||
}
|
||||
|
||||
@@ -59,6 +78,15 @@ public sealed partial class LyricManager
|
||||
}
|
||||
}
|
||||
|
||||
public void Receive(LyricOffsetChangeMessage message)
|
||||
{
|
||||
_globalLyricOffset = message.OffsetMilliseconds;
|
||||
if (!_isManuallyAdjusted)
|
||||
{
|
||||
UpdateLyricAdjustDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前歌曲歌词
|
||||
/// </summary>
|
||||
@@ -73,6 +101,9 @@ public sealed partial class LyricManager
|
||||
{
|
||||
CurrentLyricSlices = slices;
|
||||
CurrentLyricIndex = 0;
|
||||
_isManuallyAdjusted = false;
|
||||
_manualLyricOffset = 0;
|
||||
UpdateLyricAdjustDisplay();
|
||||
|
||||
if (CurrentLyricSlices.Count > 0)
|
||||
{
|
||||
@@ -94,9 +125,10 @@ public sealed partial class LyricManager
|
||||
/// <returns></returns>
|
||||
public int GetCurrentLyricIndex(double currentTime)
|
||||
{
|
||||
var offset = TotalLyricOffset;
|
||||
for (var i = 0; i < CurrentLyricSlices.Count; i++)
|
||||
{
|
||||
if (CurrentLyricSlices[i].StartTime > currentTime)
|
||||
if (CurrentLyricSlices[i].StartTime + offset > currentTime)
|
||||
{
|
||||
return i > 0 ? i - 1 : 0;
|
||||
}
|
||||
@@ -139,38 +171,35 @@ public sealed partial class LyricManager
|
||||
});
|
||||
}
|
||||
|
||||
public async Task AddLyricAdjust()
|
||||
public Task AddLyricAdjust()
|
||||
{
|
||||
LyricAdjustMilliseconds += 300;
|
||||
LyricAdjustDisplayStr =
|
||||
LyricAdjustMilliseconds == 0
|
||||
? "0.0s"
|
||||
: $"{(LyricAdjustMilliseconds > 0 ? "+" : "-")}{Math.Abs(LyricAdjustMilliseconds) / 1000:F1}s";
|
||||
await Task.Run(() =>
|
||||
if (!_isManuallyAdjusted)
|
||||
{
|
||||
foreach (var slice in CurrentLyricSlices)
|
||||
{
|
||||
slice.StartTime += 300;
|
||||
slice.EndTime += 300;
|
||||
}
|
||||
});
|
||||
_manualLyricOffset = _globalLyricOffset;
|
||||
_isManuallyAdjusted = true;
|
||||
}
|
||||
_manualLyricOffset += 300;
|
||||
UpdateLyricAdjustDisplay();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public async Task SubtractLyricAdjust()
|
||||
public Task SubtractLyricAdjust()
|
||||
{
|
||||
LyricAdjustMilliseconds -= 300;
|
||||
LyricAdjustDisplayStr =
|
||||
LyricAdjustMilliseconds == 0
|
||||
? "0.0s"
|
||||
: $"{(LyricAdjustMilliseconds > 0 ? "+" : "-")}{Math.Abs(LyricAdjustMilliseconds) / 1000:F1}s";
|
||||
await Task.Run(() =>
|
||||
if (!_isManuallyAdjusted)
|
||||
{
|
||||
foreach (var slice in CurrentLyricSlices)
|
||||
{
|
||||
slice.StartTime = Math.Max(0, slice.StartTime - 300);
|
||||
slice.EndTime = Math.Max(0, slice.EndTime - 300);
|
||||
}
|
||||
});
|
||||
_manualLyricOffset = _globalLyricOffset;
|
||||
_isManuallyAdjusted = true;
|
||||
}
|
||||
_manualLyricOffset -= 300;
|
||||
UpdateLyricAdjustDisplay();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private void UpdateLyricAdjustDisplay()
|
||||
{
|
||||
var total = TotalLyricOffset;
|
||||
LyricAdjustDisplayStr =
|
||||
total == 0 ? "0.0s" : $"{(total > 0 ? "+" : "-")}{Math.Abs(total) / 1000:F1}s";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -182,8 +211,9 @@ public sealed partial class LyricManager
|
||||
{
|
||||
CurrentLyricIndex = 0;
|
||||
CurrentLyricContent = "";
|
||||
LyricAdjustMilliseconds = 0;
|
||||
LyricAdjustDisplayStr = "0.0s";
|
||||
_isManuallyAdjusted = false;
|
||||
_manualLyricOffset = 0;
|
||||
UpdateLyricAdjustDisplay();
|
||||
CurrentLyricSlices.Clear();
|
||||
});
|
||||
}
|
||||
@@ -191,6 +221,7 @@ public sealed partial class LyricManager
|
||||
public void Dispose()
|
||||
{
|
||||
Messenger.Unregister<FontSizeChangeMessage>(this);
|
||||
Messenger.Unregister<LyricOffsetChangeMessage>(this);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
||||
6
UntamedMusicPlayer/Messages/LyricOffsetChangeMessage.cs
Normal file
6
UntamedMusicPlayer/Messages/LyricOffsetChangeMessage.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace UntamedMusicPlayer.Messages;
|
||||
|
||||
public sealed class LyricOffsetChangeMessage(int offsetMilliseconds)
|
||||
{
|
||||
public int OffsetMilliseconds { get; } = offsetMilliseconds;
|
||||
}
|
||||
@@ -1,10 +1,17 @@
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Windows.UI.Text;
|
||||
|
||||
namespace UntamedMusicPlayer.Models;
|
||||
|
||||
public sealed class FontInfo
|
||||
public sealed class FontFamilyInfo
|
||||
{
|
||||
public string Name { get; set; } = null!;
|
||||
public string DisplayName { get; set; } = null!;
|
||||
public FontFamily FontFamily { get; set; } = null!;
|
||||
}
|
||||
|
||||
public sealed class FontWeightInfo
|
||||
{
|
||||
public string DisplayName { get; set; } = null!;
|
||||
public FontWeight FontWeight { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using Microsoft.UI.Text;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using UntamedMusicPlayer.Contracts.Services;
|
||||
using UntamedMusicPlayer.Helpers;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Text;
|
||||
|
||||
namespace UntamedMusicPlayer.Models;
|
||||
|
||||
@@ -93,6 +96,38 @@ public static class Settings
|
||||
}
|
||||
public static double LyricPageNotCurrentFontSize { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 歌词字重
|
||||
/// </summary>
|
||||
public static FontWeight LyricPageFontWeight
|
||||
{
|
||||
get;
|
||||
set
|
||||
{
|
||||
if (field != value)
|
||||
{
|
||||
field = value;
|
||||
_localSettingsService.SaveSettingAsync(nameof(LyricPageFontWeight), value.Weight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 全局歌词时间偏移
|
||||
/// </summary>
|
||||
public static int GlobalLyricOffset
|
||||
{
|
||||
get;
|
||||
set
|
||||
{
|
||||
if (field != value)
|
||||
{
|
||||
field = value;
|
||||
_localSettingsService.SaveSettingAsync(nameof(GlobalLyricOffset), value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 应用主题
|
||||
/// </summary>
|
||||
@@ -269,6 +304,14 @@ public static class Settings
|
||||
await _localSettingsService.ReadSettingAsync<string>(nameof(FontFamily))
|
||||
?? "Microsoft YaHei"
|
||||
);
|
||||
var fontWeight = await _localSettingsService.ReadSettingAsync<ushort>(
|
||||
nameof(LyricPageFontWeight)
|
||||
);
|
||||
LyricPageFontWeight =
|
||||
fontWeight == 0 ? FontWeights.Normal : FontHelper.ConvertToFontWeight(fontWeight);
|
||||
GlobalLyricOffset = await _localSettingsService.ReadSettingAsync<int>(
|
||||
nameof(GlobalLyricOffset)
|
||||
);
|
||||
var themeName = await _localSettingsService.ReadSettingAsync<string>(nameof(Theme));
|
||||
Theme = Enum.TryParse<ElementTheme>(themeName, out var cacheTheme)
|
||||
? cacheTheme
|
||||
|
||||
@@ -1,52 +1,110 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<root xmlns:ns1="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:schema id="root">
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xs:element name="root" ns1:IsDataSet="true">
|
||||
<xs:complexType>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="metadata">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" use="required" type="xsd:string" />
|
||||
<xs:attribute name="type" type="xsd:string" />
|
||||
<xs:attribute name="mimetype" type="xsd:string" />
|
||||
<xs:attribute ref="xml:space" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="assembly">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="alias" type="xsd:string" />
|
||||
<xs:attribute name="name" type="xsd:string" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="data">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="xsd:string" minOccurs="0" ns1:Ordinal="1" />
|
||||
<xs:element name="comment" type="xsd:string" minOccurs="0" ns1:Ordinal="2" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xsd:string" use="required" ns1:Ordinal="1" />
|
||||
<xs:attribute name="type" type="xsd:string" ns1:Ordinal="3" />
|
||||
<xs:attribute name="mimetype" type="xsd:string" ns1:Ordinal="4" />
|
||||
<xs:attribute ref="xml:space" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="resheader">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="xsd:string" minOccurs="0" ns1:Ordinal="1" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xsd:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<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:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<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:sequence>
|
||||
<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="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
@@ -116,9 +174,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>مواقع مكتبة الموسيقى</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>معاينة كلمات الأغنية</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>لا توجد مجلدات مدرجة في هذه المكتبة.</value>
|
||||
</data>
|
||||
@@ -497,12 +552,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>اختر مادة</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>عائلة خطوط الكلمات</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>حجم خط الكلمات</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>اختر عائلة الخطوط</value>
|
||||
</data>
|
||||
@@ -983,4 +1035,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>إبطاء كلمات الأغنية بمقدار 0.3 ثانية</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>حجم الخط</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>معاينة</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>عائلة فونت</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>أوفست الكلمات العالمية</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>القيم السلبية ستدفع الكلمات إلى الأمام، بينما القيم الإيجابية ستؤخرها</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>ميلي ثانية</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>رفيع ,خفيف للغاية ,خفيف ,خفيف شبه ,عادي ,متوسط ,شبه عريض ,عريض ,عريض للغاية ,أسود ,أسود للغاية</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>اختر وزن الخط</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>وزن الخط</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>সঙ্গীত গ্রন্থাগারের অবস্থান</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>লিরিক প্রিভিউ</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>এই লাইব্রেরিতে কোন ফোল্ডার অন্তর্ভুক্ত নেই।</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>একটি উপাদান চয়ন করুন</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>লিরিক ফন্ট-ফ্যামিলি</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>লিরিক ফন্ট-আকার</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>একটি ফন্ট-পরিবার চয়ন করুন</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>গানের কথা 0.3 সেকেন্ড ধীর করুন</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>ফন্টের আকার</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>পূর্বরূপ</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>ফন্ট পরিবার</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>গ্লোবাল লিরিক অফসেট</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>নেতিবাচক মানগুলি গানের কথাকে এগিয়ে নিয়ে যাবে, যখন ইতিবাচক মানগুলি তাদের বিলম্বিত করবে</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>মিলিসেকেন্ড</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>পাতলা, অতিরিক্ত আলো, হালকা, আধা হালকা, নিয়মিত, মাঝারি, আধা বোল্ড, গাঢ়, অতিরিক্ত গাঢ়, কালো, অতিরিক্ত কালো</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>একটি ফন্ট-ওজন চয়ন করুন</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>ফন্টের ওজন</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Standorte für Musikbibliotheken</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Lyric-Vorschau</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>In dieser Bibliothek sind keine Ordner enthalten.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Wählen Sie ein Material aus</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Lyrische Schriftfamilie</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Lyric-Schriftgröße</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Wählen Sie eine Schriftartfamilie</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Verlangsamen Sie die Texte um 0,3 Sekunden</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Schriftgröße</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Vorschau</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Schriftartfamilie</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Globaler lyrischer Offset</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Negative Werte bringen den Text voran, während positive Werte sie verzögern</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>Millisekunden</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Dünn, Extra Leicht, Leicht, Halbleicht, Normal, Mittel, Halb Kräftig, Kräftig, Extra Kräftig, Schwarz, Extra Schwarz</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Wählen Sie eine Schriftstärke</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Schriftstärke</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -174,9 +174,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Music library locations</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Lyric preview</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>No folders are included in this library.</value>
|
||||
</data>
|
||||
@@ -555,11 +552,8 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Choose a material</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Lyric font-family</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Lyric font-size</value>
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Lyric font</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Choose a font-family</value>
|
||||
@@ -1041,4 +1035,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Slow down lyrics by 0.3s</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Size</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Preview</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Family</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Global Lyric Offset</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Negative values will advance the lyrics, while positive values will delay them</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>ms</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Thin, Extra Light, Light, Semi Light, Regular, Medium, Semi Bold, Bold, Extra Bold, Black, Extra Black</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Choose a font-weight</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Weight</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Ubicaciones de la biblioteca musical</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Avance de la letra</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>No se incluyen carpetas en esta biblioteca.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Elige un material</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Familia de fuentes líricas</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Tamaño de fuente de la letra</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Elige una familia de fuentes</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ralentiza la letra en 0,3 segundos</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Tamaño de fuente</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Avance</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Familia de fuentes</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Offset lírico global</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Los valores negativos avanzan la letra, mientras que los positivos la retrasan</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>milisegundos</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Fino, Extra Claro, Ligero, Semi Claro, Normal, Medio, Semi Negrita, Negrita, Extra Negro, Extra Negro</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Elige un grosor de fuente</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Grosor de fuente</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Emplacements de la bibliothèque musicale</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Aperçu des paroles</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>Aucun dossier n’est inclus dans cette bibliothèque.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Choisissez un matériau</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Famille de polices lyriques</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Taille de police des paroles</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Choisissez une famille de polices</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ralentissez les paroles de 0,3 s</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Taille de police</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Aperçu</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Famille de polices</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Décalage lyrique global</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Les valeurs négatives feront avancer les paroles, tandis que les valeurs positives les retarderont</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>Millisecondes</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Léger, Extra Léger, Léger, Semi-Léger, Régulier, Moyen, Semi-Grasset, Gras, Extra Gros, Noir, Extra Noir</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Choisissez un poids de police</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Épaisseur de police</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>संगीत पुस्तकालय स्थान</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>गीत पूर्वावलोकन</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>इस लायब्रेरी में कोई फ़ोल्डर शामिल नहीं हैं.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>एक सामग्री चुनें</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>गीत फ़ॉन्ट-परिवार</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>गीत फ़ॉन्ट-आकार</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>कोई फ़ॉन्ट-परिवार चुनें</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>गीत को 0.3s से धीमा करें</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>फ़ॉन्ट आकार</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>पूर्वसमीक्षा</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>फ़ॉन्ट परिवार</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>वैश्विक गीत ऑफसेट</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>नकारात्मक मूल्य गीत को आगे बढ़ाएंगे, जबकि सकारात्मक मूल्य उनमें देरी करेंगे</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>मिलीसेकंड</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>पतला, अतिरिक्त प्रकाश, प्रकाश, अर्ध प्रकाश, नियमित, मध्यम, अर्ध बोल्ड, बोल्ड, अतिरिक्त बोल्ड, काला, अतिरिक्त काला</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>फ़ॉन्ट-वेट चुनें</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>फ़ॉन्ट वजन</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Lokasi perpustakaan musik</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Pratinjau lirik</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>Tidak ada folder yang disertakan dalam perpustakaan ini.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Pilih bahan</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Keluarga font lirik</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Ukuran font lirik</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Pilih keluarga font</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Perlambat lirik sebesar 0,3 detik</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Ukuran font</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Pratinjau</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Keluarga font</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Offset Lirik Global</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Nilai negatif akan memajukan lirik, sedangkan nilai positif akan menundanya</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>milidetik</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Tipis, Ekstra Ringan, Ringan, Semi Ringan, Biasa, Sedang, Semi Tebal, Tebal, Ekstra Tebal, Hitam, Ekstra Hitam</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Pilih bobot font</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Berat font</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,52 +1,110 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<root xmlns:ns1="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
<xs:schema id="root">
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xs:element name="root" ns1:IsDataSet="true">
|
||||
<xs:complexType>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="metadata">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" use="required" type="xsd:string" />
|
||||
<xs:attribute name="type" type="xsd:string" />
|
||||
<xs:attribute name="mimetype" type="xsd:string" />
|
||||
<xs:attribute ref="xml:space" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="assembly">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="alias" type="xsd:string" />
|
||||
<xs:attribute name="name" type="xsd:string" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="data">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="xsd:string" minOccurs="0" ns1:Ordinal="1" />
|
||||
<xs:element name="comment" type="xsd:string" minOccurs="0" ns1:Ordinal="2" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xsd:string" use="required" ns1:Ordinal="1" />
|
||||
<xs:attribute name="type" type="xsd:string" ns1:Ordinal="3" />
|
||||
<xs:attribute name="mimetype" type="xsd:string" ns1:Ordinal="4" />
|
||||
<xs:attribute ref="xml:space" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="resheader">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="xsd:string" minOccurs="0" ns1:Ordinal="1" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xsd:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<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:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<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:sequence>
|
||||
<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="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
@@ -116,9 +174,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>音楽ライブラリーの所在地</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>歌詞プレビュー</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>このライブラリにはフォルダは含まれていません。</value>
|
||||
</data>
|
||||
@@ -497,12 +552,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>素材を選びましょう</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>リリックフォントファミリー</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>リリックフォントサイズ</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>フォントファミリーを選ぶ</value>
|
||||
</data>
|
||||
@@ -983,4 +1035,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>歌詞を0.3秒遅くする</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>フォントサイズ</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>プレビュー</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>フォントファミリー</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>グローバル・リリック・オフセット</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>マイナスは歌詞を進め、ポジティブな方は歌詞を遅らせます</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>ミリ秒単位</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>薄め, エクストラライト, ライト, セミライト, レギュラー, ミディアム, セミボールド, ボールド, エクストラボールド, ブラック, エクストラブラック</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>フォントの太さを選ぶ</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>フォントの太さ</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>음악 도서관 위치</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>가사 미리보기</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>이 라이브러리에는 폴더가 포함되어 있지 않습니다.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>재료를 선택하세요</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>서정형 폰트 계열</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>가사 글꼴 크기</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>폰트 계열 선택</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>가사 속도를 0.3초 늦춰</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>글꼴 크기</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>미리보기</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>폰트 계열</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>글로벌 가사 상쇄</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>음수치는 가사를 진행시키고, 음수치는 가사를 지연시킵니다</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>밀리초</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>씬, 엑스트라 라이트, 라이트, 세미 라이트, 레귤러, 미디엄, 세미 볼드, 볼드, 엑스트라 볼드, 블랙, 엑스트라 블랙</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>글꼴 굵기 선택</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>폰트 굵기</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Localizações da biblioteca musical</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Prévia da letra</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>Nenhuma pasta está incluída nesta biblioteca.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Escolha um material</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Família de fontes líricas</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Tamanho da fonte da letra</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Escolha uma família de fontes</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Letra de desaceleração em 0,3s</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Tamanho da fonte</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Prévia</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Família de fontes</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Offset Lírico Global</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Valores negativos vão avançar a letra, enquanto valores positivos vão atrasá-las</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>milissegundos</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Fino, Extra Claro, Leve, Semi Claro, Normal, Médio, Semi Ogrito, Ogrito, Extra Ogrito, Preto, Preto Extra</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Escolha um peso de fonte</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Peso da fonte</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -116,9 +116,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>Расположение музыкальных библиотек</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Превью текста песен</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>В этой библиотеке нет папок.</value>
|
||||
</data>
|
||||
@@ -497,12 +494,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>Выберите материал</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>Лирическое семейство шрифтов</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Размер шрифта текста</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>Выберите семейство шрифтов</value>
|
||||
</data>
|
||||
@@ -983,4 +977,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Замедлите текст на 0,3 секунды</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>Размер шрифта</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>Превью</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>Семейство шрифтов</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>Глобальный лирический офсет</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>Отрицательные значения продвигают текст, а положительные — задерживают их</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>миллисекунды</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>Тонкая, Extra Light, Light, Semi Light, Regular, Medium, Semi Bold, Bold, Extra Bold, Black, Extra Black</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>Выберите вес шрифта</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>Вес шрифта</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -174,9 +174,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>音乐库位置</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>歌词预览</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>此库中不包含任何文件夹</value>
|
||||
</data>
|
||||
@@ -555,12 +552,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>选择一个材质</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>歌词字体</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>歌词字号</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>选择一种字体</value>
|
||||
</data>
|
||||
@@ -1041,4 +1035,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>歌词延后 0.3 秒</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>字号</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>预览</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>字体系列</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>全局歌词时间偏移</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>负值使歌词提前出现,正值使歌词延后出现</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>毫秒</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>极细, 特细, 细, 次细, 标准, 中等, 半粗, 粗体, 特粗, 浓体, 特黑</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>选择一个字重</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>字重</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -174,9 +174,6 @@
|
||||
<data name="Settings_MusicLibraryLocation.Header" xml:space="preserve">
|
||||
<value>音樂庫位置</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>歌詞預覽</value>
|
||||
</data>
|
||||
<data name="Settings_NoFolder.Text" xml:space="preserve">
|
||||
<value>此庫中不包含任何資料夾</value>
|
||||
</data>
|
||||
@@ -555,12 +552,9 @@
|
||||
<data name="Settings_ChooseAMaterial.PlaceholderText" xml:space="preserve">
|
||||
<value>選擇一個材質</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<data name="Settings_LyricFont.Header" xml:space="preserve">
|
||||
<value>歌詞字體</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>歌詞字型大小</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontFamily.PlaceholderText" xml:space="preserve">
|
||||
<value>選擇一種字體</value>
|
||||
</data>
|
||||
@@ -1041,4 +1035,31 @@
|
||||
<data name="Lyric_SlowDownLyric.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>歌詞延遲 0.3 秒</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontSize.Header" xml:space="preserve">
|
||||
<value>字號</value>
|
||||
</data>
|
||||
<data name="Settings_LyricPreview.Header" xml:space="preserve">
|
||||
<value>預覽</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontFamily.Header" xml:space="preserve">
|
||||
<value>字體系列</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Header" xml:space="preserve">
|
||||
<value>全局歌詞時間偏移</value>
|
||||
</data>
|
||||
<data name="Settings_LyricOffset.Description" xml:space="preserve">
|
||||
<value>負值會推進歌詞,正面值則會延遲歌詞</value>
|
||||
</data>
|
||||
<data name="Settings_Millisecond.Text" xml:space="preserve">
|
||||
<value>毫秒</value>
|
||||
</data>
|
||||
<data name="Settings_FontWeights" xml:space="preserve">
|
||||
<value>極細, 特細, 細, 次細, 標準, 中等, 半粗, 粗體, 特粗, 濃體, 特黑</value>
|
||||
</data>
|
||||
<data name="Settings_ChooseAFontWeight.PlaceholderText" xml:space="preserve">
|
||||
<value>選擇一個字重</value>
|
||||
</data>
|
||||
<data name="Settings_LyricFontWeight.Header" xml:space="preserve">
|
||||
<value>字重</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -41,7 +41,7 @@
|
||||
<PackageReference Include="RawInput.Sharp" Version="0.1.3" />
|
||||
<PackageReference Include="TagLibSharp" Version="2.3.0" />
|
||||
<PackageReference Include="WinUIEx" Version="2.9.0" />
|
||||
<PackageReference Include="z440.atl.core" Version="7.12.0" />
|
||||
<PackageReference Include="z440.atl.core" Version="7.13.0" />
|
||||
<PackageReference Include="ZLinq" Version="1.5.6" />
|
||||
<PackageReference Include="ZLogger" Version="2.5.10" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Graphics.Canvas.Text;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
@@ -18,6 +16,7 @@ using UntamedMusicPlayer.Services;
|
||||
using Windows.ApplicationModel;
|
||||
using Windows.Storage;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Text;
|
||||
using ZLinq;
|
||||
|
||||
namespace UntamedMusicPlayer.ViewModels;
|
||||
@@ -82,10 +81,12 @@ public sealed partial class SettingsViewModel
|
||||
/// <summary>
|
||||
/// 字体列表
|
||||
/// </summary>
|
||||
public List<FontInfo> FontFamilies { get; set; } = [];
|
||||
public List<FontFamilyInfo> FontFamilies { get; set; } = FontHelper.GetSystemFontFamilies();
|
||||
|
||||
public double[] FontSizes { get; set; } = [30, 35, 40, 45, 50, 55, 60, 65, 70, 75];
|
||||
|
||||
public List<FontWeightInfo> FontWeights { get; set; } = FontHelper.GetFontWeights();
|
||||
|
||||
/// <summary>
|
||||
/// 选中的字体
|
||||
/// </summary>
|
||||
@@ -121,6 +122,26 @@ public sealed partial class SettingsViewModel
|
||||
Messenger.Send(new FontSizeChangeMessage());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 选中的字重
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
public partial FontWeight SelectedFontWeight { get; set; } = Settings.LyricPageFontWeight;
|
||||
|
||||
partial void OnSelectedFontWeightChanged(FontWeight value)
|
||||
{
|
||||
Settings.LyricPageFontWeight = value;
|
||||
}
|
||||
|
||||
[ObservableProperty]
|
||||
public partial int GlobalLyricOffset { get; set; } = Settings.GlobalLyricOffset;
|
||||
|
||||
partial void OnGlobalLyricOffsetChanged(int value)
|
||||
{
|
||||
Settings.GlobalLyricOffset = value;
|
||||
Messenger.Send(new LyricOffsetChangeMessage(value));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 深浅色主题
|
||||
/// </summary>
|
||||
@@ -226,7 +247,6 @@ public sealed partial class SettingsViewModel
|
||||
EmptyFolderMessageVisibility =
|
||||
Data.MusicLibrary.Folders.Count > 0 ? Visibility.Collapsed : Visibility.Visible;
|
||||
LoadSongDownloadLocationAsync();
|
||||
LoadFonts();
|
||||
IsExportPlaylistsButtonEnabled = Data.PlaylistLibrary.Playlists.Count > 0;
|
||||
Data.SettingsViewModel = this;
|
||||
}
|
||||
@@ -499,7 +519,7 @@ public sealed partial class SettingsViewModel
|
||||
|
||||
public void FontFamilyComboBox_SelectionChanged(object _, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.AddedItems.Count > 0 && e.AddedItems[0] is FontInfo selectedFont)
|
||||
if (e.AddedItems.Count > 0 && e.AddedItems[0] is FontFamilyInfo selectedFont)
|
||||
{
|
||||
SelectedFontFamily = new FontFamily(selectedFont.Name);
|
||||
}
|
||||
@@ -513,6 +533,14 @@ public sealed partial class SettingsViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public void FontWeightComboBox_SelectionChanged(object _, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.AddedItems.Count > 0 && e.AddedItems[0] is FontWeightInfo selectedWeight)
|
||||
{
|
||||
SelectedFontWeight = selectedWeight.FontWeight;
|
||||
}
|
||||
}
|
||||
|
||||
public void ComboBox_TextSubmitted(ComboBox sender, ComboBoxTextSubmittedEventArgs args)
|
||||
{
|
||||
if (double.TryParse(args.Text, out var fontSize))
|
||||
@@ -530,26 +558,6 @@ public sealed partial class SettingsViewModel
|
||||
(sender as ComboBox)!.SelectedIndex = SelectedMaterial;
|
||||
}
|
||||
|
||||
public void LoadFonts()
|
||||
{
|
||||
var language = new string[] { CultureInfo.CurrentUICulture.Name.ToLowerInvariant() };
|
||||
var names = CanvasTextFormat.GetSystemFontFamilies();
|
||||
var displayNames = CanvasTextFormat.GetSystemFontFamilies(language);
|
||||
var list = new List<FontInfo>();
|
||||
for (var i = 0; i < names.Length; i++)
|
||||
{
|
||||
list.Add(
|
||||
new FontInfo
|
||||
{
|
||||
Name = names[i],
|
||||
DisplayName = displayNames[i],
|
||||
FontFamily = new FontFamily(names[i]),
|
||||
}
|
||||
);
|
||||
}
|
||||
FontFamilies = [.. list.AsValueEnumerable().OrderBy(f => f.Name)];
|
||||
}
|
||||
|
||||
public void FontFamilyComboBox_Loaded(object sender, RoutedEventArgs _)
|
||||
{
|
||||
var selectedFontName = SelectedFontFamily.Source;
|
||||
@@ -573,6 +581,17 @@ public sealed partial class SettingsViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public void FontWeightComboBox_Loaded(object sender, RoutedEventArgs _)
|
||||
{
|
||||
var selectedItem = FontWeights.FirstOrDefault(weight =>
|
||||
weight.FontWeight.Weight == SelectedFontWeight.Weight
|
||||
);
|
||||
if (selectedItem is not null)
|
||||
{
|
||||
(sender as ComboBox)!.SelectedItem = selectedItem;
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenLoggingFolderButton_Click(object _1, RoutedEventArgs _2)
|
||||
{
|
||||
var logFolder = LoggingService.GetLogFolderPath();
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
Margin="{x:Bind Margin, Mode=OneWay}"
|
||||
FontFamily="{x:Bind model:Settings.FontFamily}"
|
||||
FontSize="{x:Bind FontSize, Mode=OneWay}"
|
||||
FontWeight="{x:Bind model:Settings.LyricPageFontWeight}"
|
||||
Opacity="{x:Bind Opacity, Mode=OneWay}"
|
||||
SizeChanged="TextBlock_SizeChanged"
|
||||
Text="{x:Bind Content}"
|
||||
|
||||
@@ -26,9 +26,12 @@
|
||||
</Button>
|
||||
</toolkit:SettingsCard>
|
||||
</DataTemplate>
|
||||
<DataTemplate x:Key="FontComboBoxTemplate" x:DataType="model:FontInfo">
|
||||
<DataTemplate x:Key="FontFamilyComboBoxTemplate" x:DataType="model:FontFamilyInfo">
|
||||
<TextBlock FontFamily="{x:Bind FontFamily}" Text="{x:Bind DisplayName}"/>
|
||||
</DataTemplate>
|
||||
<DataTemplate x:Key="FontWeightComboBoxTemplate" x:DataType="model:FontWeightInfo">
|
||||
<TextBlock FontWeight="{x:Bind FontWeight}" Text="{x:Bind DisplayName}"/>
|
||||
</DataTemplate>
|
||||
</Page.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
@@ -170,34 +173,56 @@
|
||||
<TextBlock x:Uid="Settings_Lyric"
|
||||
Margin="0,12,0,5"
|
||||
Style="{StaticResource BodyStrongTextBlockStyle}"/>
|
||||
<toolkit:SettingsCard x:Uid="Settings_LyricFontFamily" HeaderIcon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily}, Glyph=}">
|
||||
<ComboBox x:Uid="Settings_ChooseAFontFamily"
|
||||
ItemTemplate="{StaticResource FontComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.FontFamilies}"
|
||||
Loaded="{x:Bind ViewModel.FontFamilyComboBox_Loaded}"
|
||||
SelectionChanged="{x:Bind ViewModel.FontFamilyComboBox_SelectionChanged}"/>
|
||||
</toolkit:SettingsCard>
|
||||
<toolkit:SettingsExpander x:Uid="Settings_LyricFontSize" HeaderIcon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily}, Glyph=}">
|
||||
<ComboBox x:Uid="Settings_ChooseAFontSize"
|
||||
IsEditable="True"
|
||||
ItemsSource="{x:Bind ViewModel.FontSizes}"
|
||||
Loaded="{x:Bind ViewModel.FontSizeComboBox_Loaded}"
|
||||
SelectionChanged="{x:Bind ViewModel.FontSizeComboBox_SelectionChanged}"
|
||||
TextSubmitted="{x:Bind ViewModel.ComboBox_TextSubmitted}"/>
|
||||
<toolkit:SettingsExpander x:Uid="Settings_LyricFont" HeaderIcon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily}, Glyph=}">
|
||||
<toolkit:SettingsExpander.Items>
|
||||
<toolkit:SettingsCard x:Uid="Settings_LyricFontFamily">
|
||||
<ComboBox x:Uid="Settings_ChooseAFontFamily"
|
||||
ItemTemplate="{StaticResource FontFamilyComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.FontFamilies}"
|
||||
Loaded="{x:Bind ViewModel.FontFamilyComboBox_Loaded}"
|
||||
SelectionChanged="{x:Bind ViewModel.FontFamilyComboBox_SelectionChanged}"/>
|
||||
</toolkit:SettingsCard>
|
||||
<toolkit:SettingsCard x:Uid="Settings_LyricFontSize">
|
||||
<ComboBox x:Uid="Settings_ChooseAFontSize"
|
||||
IsEditable="True"
|
||||
ItemsSource="{x:Bind ViewModel.FontSizes}"
|
||||
Loaded="{x:Bind ViewModel.FontSizeComboBox_Loaded}"
|
||||
SelectionChanged="{x:Bind ViewModel.FontSizeComboBox_SelectionChanged}"
|
||||
TextSubmitted="{x:Bind ViewModel.ComboBox_TextSubmitted}"/>
|
||||
</toolkit:SettingsCard>
|
||||
<toolkit:SettingsCard x:Uid="Settings_LyricFontWeight">
|
||||
<ComboBox x:Uid="Settings_ChooseAFontWeight"
|
||||
ItemTemplate="{StaticResource FontWeightComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.FontWeights}"
|
||||
Loaded="{x:Bind ViewModel.FontWeightComboBox_Loaded}"
|
||||
SelectionChanged="{x:Bind ViewModel.FontWeightComboBox_SelectionChanged}"/>
|
||||
</toolkit:SettingsCard>
|
||||
<toolkit:SettingsCard x:Uid="Settings_LyricPreview">
|
||||
<StackPanel>
|
||||
<TextBlock x:Uid="Settings_ThisIsAHighlightedLyric"
|
||||
FontFamily="{x:Bind ViewModel.SelectedFontFamily, Mode=OneWay}"
|
||||
FontSize="{x:Bind ViewModel.SelectedCurrentFontSize, Mode=OneWay}"/>
|
||||
FontSize="{x:Bind ViewModel.SelectedCurrentFontSize, Mode=OneWay}"
|
||||
FontWeight="{x:Bind ViewModel.SelectedFontWeight, Mode=OneWay}"/>
|
||||
<TextBlock x:Uid="Settings_ThisIsAnOrdinaryLyric"
|
||||
FontFamily="{x:Bind ViewModel.SelectedFontFamily, Mode=OneWay}"
|
||||
FontSize="{x:Bind ViewModel.SelectedNotCurrentFontSize, Mode=OneWay}"
|
||||
FontWeight="{x:Bind ViewModel.SelectedFontWeight, Mode=OneWay}"
|
||||
Opacity="0.5"/>
|
||||
</StackPanel>
|
||||
</toolkit:SettingsCard>
|
||||
</toolkit:SettingsExpander.Items>
|
||||
</toolkit:SettingsExpander>
|
||||
|
||||
<toolkit:SettingsCard x:Uid="Settings_LyricOffset" HeaderIcon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily}, Glyph=}">
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<NumberBox LargeChange="1000" Maximum="100000"
|
||||
Minimum="-100000" SmallChange="300"
|
||||
SpinButtonPlacementMode="Inline"
|
||||
ValidationMode="InvalidInputOverwritten"
|
||||
Value="{x:Bind ViewModel.GlobalLyricOffset, Mode=TwoWay}"/>
|
||||
<TextBlock x:Uid="Settings_Millisecond" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
</toolkit:SettingsCard>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 个性化 -->
|
||||
|
||||
Reference in New Issue
Block a user