Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Pull Request] 插件名称多语言支持, 更详尽的UI布局 #105

Merged
merged 8 commits into from
Aug 20, 2022
3 changes: 2 additions & 1 deletion KitX Contracts/KitX.Contract.CSharp/IIdentityInterface.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;

namespace KitX.Contract.CSharp
Expand All @@ -22,7 +23,7 @@ public interface IIdentityInterface
/// 获取显示名称
/// </summary>
/// <returns>显示名称</returns>
string GetDisplayName();
Dictionary<string, string> GetDisplayName();

/// <summary>
/// 获取作者名称
Expand Down
2 changes: 1 addition & 1 deletion KitX Dashboard/Helper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public static void InitConfig()
else LoadConfig();
if (!File.Exists(Path.GetFullPath(GlobalInfo.PluginsListConfigFilePath)))
SavePluginsListConfig();
else SavePluginsListConfig();
else LoadPluginsListConfig();
}

/// <summary>
Expand Down
15 changes: 15 additions & 0 deletions KitX Dashboard/Languages/en-us.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@
<x:String x:Key="Text_PluginBar_Remove">Remove</x:String>
<x:String x:Key="Text_PluginBar_RemoveAndDelete">Remove and Delete</x:String>

<x:String x:Key="Text_PluginBar_Name">Internal Name:</x:String>
<x:String x:Key="Text_PluginBar_Version">Version:</x:String>
<x:String x:Key="Text_PluginBar_DisplayName">Display Name:</x:String>
<x:String x:Key="Text_PluginBar_AuthorName">Author:</x:String>
<x:String x:Key="Text_PluginBar_PublisherName">Publisher:</x:String>
<x:String x:Key="Text_PluginBar_AuthorLink">Author Link:</x:String>
<x:String x:Key="Text_PluginBar_PublisherLink">Publisher Link:</x:String>
<x:String x:Key="Text_PluginBar_PublishDate">Publish Date:</x:String>
<x:String x:Key="Text_PluginBar_LastUpdateDate">Last Update Date:</x:String>
<x:String x:Key="Text_PluginBar_IsMarketVersion">Is Market Version:</x:String>
<x:String x:Key="Text_PluginBar_SimpleDescription">Simple Description:</x:String>
<x:String x:Key="Text_PluginBar_ComplexDescription">Complex Description:</x:String>
<x:String x:Key="Text_PluginBar_TotalDescriptionInMarkdown">Docs:</x:String>
<x:String x:Key="Text_PluginBar_RootStartupFileName">Root Startup File Name:</x:String>


<x:String x:Key="Text_Device_No">No other devices in network.</x:String>
<x:String x:Key="Text_Device_This">This Device</x:String>
Expand Down
15 changes: 15 additions & 0 deletions KitX Dashboard/Languages/ja-jp.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@
<x:String x:Key="Text_PluginBar_Remove">削除する</x:String>
<x:String x:Key="Text_PluginBar_RemoveAndDelete">削除して破壊する</x:String>

<x:String x:Key="Text_PluginBar_Name">内部名:</x:String>
<x:String x:Key="Text_PluginBar_Version">バージョン:</x:String>
<x:String x:Key="Text_PluginBar_DisplayName">番組名:</x:String>
<x:String x:Key="Text_PluginBar_AuthorName">著者:</x:String>
<x:String x:Key="Text_PluginBar_PublisherName">出版社:</x:String>
<x:String x:Key="Text_PluginBar_AuthorLink">著者リンク:</x:String>
<x:String x:Key="Text_PluginBar_PublisherLink">発行者リンク:</x:String>
<x:String x:Key="Text_PluginBar_PublishDate">発売日:</x:String>
<x:String x:Key="Text_PluginBar_LastUpdateDate">最終更新日:</x:String>
<x:String x:Key="Text_PluginBar_IsMarketVersion">それは市場のバージョンですか:</x:String>
<x:String x:Key="Text_PluginBar_SimpleDescription">概要:</x:String>
<x:String x:Key="Text_PluginBar_ComplexDescription">説明:</x:String>
<x:String x:Key="Text_PluginBar_TotalDescriptionInMarkdown">ドキュメンテーション:</x:String>
<x:String x:Key="Text_PluginBar_RootStartupFileName">ルートファイル名の開始:</x:String>


<x:String x:Key="Text_Device_No">ネットワーク上に他のデバイスがない</x:String>
<x:String x:Key="Text_Device_This">この装置</x:String>
Expand Down
15 changes: 15 additions & 0 deletions KitX Dashboard/Languages/zh-cn.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,21 @@
<x:String x:Key="Text_PluginBar_Details">详细信息</x:String>
<x:String x:Key="Text_PluginBar_Remove">移除</x:String>
<x:String x:Key="Text_PluginBar_RemoveAndDelete">移除并删除</x:String>

<x:String x:Key="Text_PluginBar_Name">内部名称:</x:String>
<x:String x:Key="Text_PluginBar_Version">版本:</x:String>
<x:String x:Key="Text_PluginBar_DisplayName">显示名称:</x:String>
<x:String x:Key="Text_PluginBar_AuthorName">作者:</x:String>
<x:String x:Key="Text_PluginBar_PublisherName">发行商:</x:String>
<x:String x:Key="Text_PluginBar_AuthorLink">作者链接:</x:String>
<x:String x:Key="Text_PluginBar_PublisherLink">发行商链接:</x:String>
<x:String x:Key="Text_PluginBar_PublishDate">发布日期:</x:String>
<x:String x:Key="Text_PluginBar_LastUpdateDate">最后更新日期:</x:String>
<x:String x:Key="Text_PluginBar_IsMarketVersion">是否是市场版本:</x:String>
<x:String x:Key="Text_PluginBar_SimpleDescription">概述:</x:String>
<x:String x:Key="Text_PluginBar_ComplexDescription">描述:</x:String>
<x:String x:Key="Text_PluginBar_TotalDescriptionInMarkdown">文档:</x:String>
<x:String x:Key="Text_PluginBar_RootStartupFileName">起始根文件名:</x:String>


<x:String x:Key="Text_Device_No">网络中没有其它设备</x:String>
Expand Down
15 changes: 15 additions & 0 deletions KitX Dashboard/Languages/zh-cnt.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@
<x:String x:Key="Text_PluginBar_Remove">移除</x:String>
<x:String x:Key="Text_PluginBar_RemoveAndDelete">移除并刪除</x:String>

<x:String x:Key="Text_PluginBar_Name">内部名稱:</x:String>
<x:String x:Key="Text_PluginBar_Version">版本:</x:String>
<x:String x:Key="Text_PluginBar_DisplayName">顯示名稱:</x:String>
<x:String x:Key="Text_PluginBar_AuthorName">作者:</x:String>
<x:String x:Key="Text_PluginBar_PublisherName">發行商:</x:String>
<x:String x:Key="Text_PluginBar_AuthorLink">作者鏈接:</x:String>
<x:String x:Key="Text_PluginBar_PublisherLink">發行商鏈接:</x:String>
<x:String x:Key="Text_PluginBar_PublishDate">發行日期:</x:String>
<x:String x:Key="Text_PluginBar_LastUpdateDate">最後更新日期:</x:String>
<x:String x:Key="Text_PluginBar_IsMarketVersion">是否是市場版本:</x:String>
<x:String x:Key="Text_PluginBar_SimpleDescription">概述:</x:String>
<x:String x:Key="Text_PluginBar_ComplexDescription">描述:</x:String>
<x:String x:Key="Text_PluginBar_TotalDescriptionInMarkdown">文檔:</x:String>
<x:String x:Key="Text_PluginBar_RootStartupFileName">起始根文件名:</x:String>


<x:String x:Key="Text_Device_No">網路中空無一物</x:String>
<x:String x:Key="Text_Device_This">本機</x:String>
Expand Down
35 changes: 31 additions & 4 deletions KitX Dashboard/ViewModels/Pages/Controls/PluginBarViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
using KitX_Dashboard.Views.Pages.Controls;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Text;

namespace KitX_Dashboard.ViewModels.Pages.Controls
{
internal class PluginBarViewModel : ViewModelBase
internal class PluginBarViewModel : ViewModelBase, INotifyPropertyChanged
{
public PluginBarViewModel()
{

InitCommands();

InitEvents();
}


Expand All @@ -28,13 +28,38 @@ internal void InitCommands()
LaunchCommand = new(Launch);
}

internal void InitEvents()
{
EventHandlers.LanguageChanged += () =>
{
PropertyChanged?.Invoke(this, new(nameof(DisplayName)));
};
}

internal PluginBar? PluginBar { get; set; }

internal Plugin? PluginDetail { get; set; }

internal string? DisplayName
{
get
{
if (PluginDetail != null)
return PluginDetail.PluginDetails.DisplayName
.ContainsKey(Program.GlobalConfig.App.AppLanguage)
? PluginDetail.PluginDetails.DisplayName[Program.GlobalConfig.App.AppLanguage]
: PluginDetail.PluginDetails.DisplayName.Values.GetEnumerator().Current;
return null;
}
}

internal string? AuthorName => PluginDetail?.PluginDetails.AuthorName;

internal string? Version => PluginDetail?.PluginDetails.Version;

internal ObservableCollection<PluginBar>? PluginBars { get; set; }

public Bitmap IconDisplay
internal Bitmap IconDisplay
{
get
{
Expand Down Expand Up @@ -110,5 +135,7 @@ internal void Launch(object _)
{

}

public new event PropertyChangedEventHandler? PropertyChanged;
}
}
16 changes: 10 additions & 6 deletions KitX Dashboard/ViewModels/Pages/Controls/PluginCardViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Avalonia.Media.Imaging;
using BasicHelper.IO;
using KitX.Web.Rules;
using System;
using System.IO;
using System.Text;
Expand All @@ -8,22 +9,25 @@ namespace KitX_Dashboard.ViewModels.Pages.Controls
{
internal class PluginCardViewModel
{
public KitX.Web.Rules.PluginStruct pluginStruct = new();
internal PluginStruct pluginStruct = new();

public PluginCardViewModel()
{
pluginStruct.IconInBase64 = FileHelper.ReadAll(Path.GetFullPath($"./Assets/KitX.Base64.txt"));
}

public string DisplayName => pluginStruct.DisplayName;
internal string DisplayName => pluginStruct.DisplayName
.ContainsKey(Program.GlobalConfig.App.AppLanguage)
? pluginStruct.DisplayName[Program.GlobalConfig.App.AppLanguage]
: pluginStruct.DisplayName.Values.GetEnumerator().Current;

public string Version => pluginStruct.Version;
internal string Version => pluginStruct.Version;

public string SimpleDescription => pluginStruct.SimpleDescription;
internal string SimpleDescription => pluginStruct.SimpleDescription;

public string IconInBase64 => pluginStruct.IconInBase64;
internal string IconInBase64 => pluginStruct.IconInBase64;

public Bitmap IconDisplay
internal Bitmap IconDisplay
{
get
{
Expand Down
50 changes: 37 additions & 13 deletions KitX Dashboard/Views/Pages/Controls/PluginBar.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,6 @@
Margin="10,5,10,5">
<ui:InfoBar IsOpen="True" IsIconVisible="False" IsClosable="False">
<DockPanel Margin="0,10,10,10">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" DockPanel.Dock="Left">
<Image Width="40" Height="40" Source="{Binding IconDisplay}"/>
<TextBlock Margin="30,0,0,0" VerticalAlignment="Center" Text="TestPlugin"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
FontWeight="Bold" FontSize="24"/>

<TextBlock Margin="30,0,0,0" VerticalAlignment="Center" Text="作者:"/>
<TextBlock Margin="10,0,0,0" VerticalAlignment="Center" Text="Dynesshely"/>
<TextBlock Margin="30,0,0,0" VerticalAlignment="Center" Text="版本:"/>
<TextBlock Margin="10,0,0,0" VerticalAlignment="Center" Text="v1.0.0"/>
</StackPanel>

<Button Content="{DynamicResource Text_PluginBar_Launch}"
DockPanel.Dock="Right" Command="{Binding LaunchCommand}"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
Expand Down Expand Up @@ -49,7 +37,43 @@
</ui:Button.Flyout>
</ui:Button>

<Border/>
<Grid VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>

<StackPanel Orientation="Horizontal" Grid.Column="0"
HorizontalAlignment="Left" VerticalAlignment="Center">
<Image Width="40" Height="40" Stretch="UniformToFill" Source="{Binding IconDisplay}"
VerticalAlignment="Center"/>
<TextBlock Margin="15,0,0,0" VerticalAlignment="Center"
Text="{Binding DisplayName}"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
FontWeight="Bold" FontSize="24"/>
</StackPanel>

<StackPanel Orientation="Horizontal" Grid.Column="1">
<TextBlock Margin="20,0,0,0" VerticalAlignment="Center"
Text="{DynamicResource Text_PluginBar_AuthorName}"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
FontWeight="Bold"/>
<TextBlock Margin="10,0,0,0" VerticalAlignment="Center" Text="{Binding AuthorName}"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
FontWeight="Bold"/>
</StackPanel>

<StackPanel Orientation="Horizontal" Grid.Column="2">
<TextBlock Margin="30,0,0,0" VerticalAlignment="Center"
Text="{DynamicResource Text_PluginBar_Version}"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
FontWeight="Bold"/>
<TextBlock Margin="10,0,0,0" VerticalAlignment="Center" Text="{Binding Version}"
FontFamily="/Assets/Fonts/SourceHanSans-VF.ttf#Source Han Sans VF"
FontWeight="Bold"/>
</StackPanel>
</Grid>
</DockPanel>
</ui:InfoBar>
</UserControl>
9 changes: 8 additions & 1 deletion KitX Official Plugins/TestPlugin.WPF.Core/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using KitX.Contract.CSharp;
using System;
using System.Collections.Generic;
using System.Windows;

#pragma warning disable CS8603 // 可能返回 null 引用。
Expand Down Expand Up @@ -37,7 +38,13 @@ public MainWindow()
/// 获取显示名称
/// </summary>
/// <returns>显示名称</returns>
public string GetDisplayName() => "显示名称";
public Dictionary<string, string> GetDisplayName() => new()
{
{ "zh-cn", "显示名称" },
{ "zh-cnt", "顯示名稱" },
{ "en-us", "Display Name" },
{ "ja-jp", "番組名" }
};

/// <summary>
/// 获取作者名称
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using KitX.Contract.CSharp;
using System;
using System.Collections.Generic;
using System.Windows;

namespace TestPlugin.WPF.Winform
Expand Down Expand Up @@ -35,7 +36,13 @@ public MainWindow()
/// 获取显示名称
/// </summary>
/// <returns>显示名称</returns>
public string GetDisplayName() => "显示名称";
public Dictionary<string, string> GetDisplayName() => new Dictionary<string, string>()
{
{ "zh-cn", "显示名称" },
{ "zh-cnt", "顯示名稱" },
{ "en-us", "Display Name" },
{ "ja-jp", "番組名" }
};

/// <summary>
/// 获取作者名称
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="KitX.Contract.CSharp, Version=22.4.6242.1132, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\KitX.Contract.CSharp.22.4.6242.1132\lib\net40\KitX.Contract.CSharp.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
Expand Down Expand Up @@ -92,5 +89,11 @@
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\KitX Contracts\KitX.Contract.CSharp\KitX.Contract.CSharp.csproj">
<Project>{c1a05e25-8dba-4ca4-88d5-e28d69b76d13}</Project>
<Name>KitX.Contract.CSharp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
2 changes: 1 addition & 1 deletion KitX Rules/KitX.Web.Rules/PluginStruct.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public struct PluginStruct

public string Version { get; set; }

public string DisplayName { get; set; }
public Dictionary<string, string> DisplayName { get; set; }

public string AuthorName { get; set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,12 @@ namespace KitX.KXP.Helper.Test
AuthorLink = "AuthorLink",
AuthorName = "AuthorName",
ComplexDescription = "ComplexDescription",
DisplayName = "DisplayName",
DisplayName = new()
{
{ "zh-cn", "��ʾ����" },
{ "zh-cnt", "�@ʾ���Q" },
{ "en-us", "DisplayName" },
},
Functions = new()
{
FunctionsDisplayName = new()
Expand Down