add more source strings

This commit is contained in:
Genteure 2021-01-05 19:08:57 +08:00
parent 410e75bb63
commit 32ee4e8e9c
14 changed files with 584 additions and 84 deletions

View File

@ -82,7 +82,7 @@
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="房间设置" Click="MenuItem_ShowSettings_Click">
<MenuItem Header="{l:Loc RoomCard_Menu_Settings}" Click="MenuItem_ShowSettings_Click">
<MenuItem.Icon>
<ui:PathIcon Style="{StaticResource PathIconDataCogOutline}"/>
</MenuItem.Icon>

View File

@ -6,6 +6,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ui="http://schemas.modernwpf.com/2019"
xmlns:l="https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension"
l:LocalizeDictionary.DesignCulture=""
l:ResxLocalizationProvider.DefaultAssembly="BililiveRecorder.WPF"
l:ResxLocalizationProvider.DefaultDictionary="Strings"
xmlns:local="clr-namespace:BililiveRecorder.WPF.Controls"
mc:Ignorable="d"
d:DesignHeight="50" d:DesignWidth="200">
@ -22,7 +26,7 @@
<ContentPresenter Grid.Row="1"
Content="{Binding InnerContent,ElementName=SettingWithDefaultUserControl}"
IsEnabled="{Binding IsSettingNotUsingDefault,ElementName=SettingWithDefaultUserControl}"/>
<CheckBox Content="默认" Margin="10,0,0,0" Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left"
<CheckBox Content="{l:Loc SettingWithDefault_Default}" Margin="10,0,0,0" Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left"
IsChecked="{Binding IsSettingNotUsingDefault,ElementName=SettingWithDefaultUserControl,Converter={StaticResource BooleanInverterConverter}}"/>
</Grid>
</UserControl>

View File

@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using Microsoft.WindowsAPICodePack.Dialogs;
using WPFLocalizeExtension.Extensions;
namespace BililiveRecorder.WPF.Controls
{
@ -33,11 +34,12 @@ namespace BililiveRecorder.WPF.Controls
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
var title = LocExtension.GetLocalizedValue<string>("BililiveRecorder.WPF:Strings:WorkDirectorySelector_Title");
var fileDialog = new CommonOpenFileDialog()
{
IsFolderPicker = true,
Multiselect = false,
Title = "选择录播姬工作目录路径",
Title = title,
AddToMostRecentlyUsedList = false,
EnsurePathExists = true,
NavigateToShortcut = true,

View File

@ -27,8 +27,6 @@ namespace BililiveRecorder.WPF
this.InitializeComponent();
// this.Title = "B站录播姬 " + BuildInfo.Version + " " + BuildInfo.HeadShaShort;
SingleInstance.NotificationReceived += this.SingleInstance_NotificationReceived;
}

View File

@ -5,6 +5,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ui="http://schemas.modernwpf.com/2019"
xmlns:l="https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension"
l:LocalizeDictionary.DesignCulture=""
l:ResxLocalizationProvider.DefaultAssembly="BililiveRecorder.WPF"
l:ResxLocalizationProvider.DefaultDictionary="Strings"
xmlns:c="clr-namespace:BililiveRecorder.WPF.Controls"
xmlns:local="clr-namespace:BililiveRecorder.WPF.Pages"
xmlns:config="clr-namespace:BililiveRecorder.Core.Config.V2;assembly=BililiveRecorder.Core"
@ -28,16 +32,16 @@
</ui:Page.Resources>
<ScrollViewer d:DataContext="{d:DesignInstance Type=config:GlobalConfig}">
<ui:SimpleStackPanel Orientation="Vertical" Spacing="5" Margin="20">
<TextBlock Text="高级设置" Style="{StaticResource TitleTextBlockStyle}" FontFamily="Microsoft YaHei" Margin="0,10"/>
<TextBlock Text="{l:Loc Settings_AdvancedPage_Title}" Style="{StaticResource TitleTextBlockStyle}" FontFamily="Microsoft YaHei" Margin="0,10"/>
<TextBlock Text="{l:Loc Settings_AdvancedPage_Warning}"/>
<GroupBox Header="Cookie">
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasCookie}" Header="请求API时使用此 Cookie">
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasCookie}">
<TextBox Text="{Binding Cookie,UpdateSourceTrigger=PropertyChanged,Delay=1000}" Width="220" HorizontalAlignment="Left"/>
</c:SettingWithDefault>
</GroupBox>
<GroupBox Header="弹幕录制">
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasRecordDanmakuFlushInterval}" Header="触发写硬盘所需弹幕个数">
<ui:NumberBox Minimum="0" Description="单位: 个" SmallChange="1"
Text="{Binding RecordDanmakuFlushInterval,UpdateSourceTrigger=PropertyChanged}"/>
<GroupBox Header="{l:Loc Settings_Danmaku_Title}">
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasRecordDanmakuFlushInterval}" Header="{l:Loc Settings_Danmaku_FlushInterval}">
<ui:NumberBox Minimum="0" SmallChange="1" Text="{Binding RecordDanmakuFlushInterval,UpdateSourceTrigger=PropertyChanged}"/>
</c:SettingWithDefault>
</GroupBox>
<GroupBox Header="Timing">

View File

@ -16,7 +16,7 @@
d:DesignHeight="450" d:DesignWidth="800"
d:DataContext="{d:DesignInstance Type=models:LogModel}"
DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:RootPage},Path=DataContext.Logs,Mode=OneWay}"
Title="LogPage">
>
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -43,18 +43,17 @@
</Style>
</StackPanel.Resources>
<StackPanel>
<TextBlock Text="B站录播姬 "/>
<TextBlock Text="{l:Loc About_Name}"/>
<TextBlock x:Name="VersionTextBlock"/>
</StackPanel>
<StackPanel>
<TextBlock Text="官网: "/>
<TextBlock Text="{l:Loc About_Website}"/>
<ui:HyperlinkButton Content="https://rec.danmuji.org" NavigateUri="https://rec.danmuji.org"/>
</StackPanel>
<StackPanel>
<TextBlock Text="联系方式/问题反馈: "/>
<TextBlock Text="{l:Loc About_Contact}"/>
<ui:HyperlinkButton Content="rec@danmuji.org" NavigateUri="mailto:rec@danmuji.org"/>
</StackPanel>
<TextBlock Text="QQ群: 689636812"/>
</StackPanel>
</Border>
</ui:ThemeShadowChrome>

View File

@ -13,7 +13,7 @@ namespace BililiveRecorder.WPF.Pages
public LogPage()
{
this.InitializeComponent();
this.VersionTextBlock.Text = BuildInfo.Version + " " + BuildInfo.HeadShaShort;
this.VersionTextBlock.Text = " " + BuildInfo.Version + " " + BuildInfo.HeadShaShort;
}
private void TextBlock_MouseRightButtonUp(object sender, MouseButtonEventArgs e)

View File

@ -5,6 +5,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ui="http://schemas.modernwpf.com/2019"
xmlns:l="https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension"
l:LocalizeDictionary.DesignCulture=""
l:ResxLocalizationProvider.DefaultAssembly="BililiveRecorder.WPF"
l:ResxLocalizationProvider.DefaultDictionary="Strings"
xmlns:c="clr-namespace:BililiveRecorder.WPF.Controls"
xmlns:local="clr-namespace:BililiveRecorder.WPF.Pages"
xmlns:config="clr-namespace:BililiveRecorder.Core.Config.V2;assembly=BililiveRecorder.Core"
@ -21,90 +25,51 @@
</ui:Page.Resources>
<ScrollViewer d:DataContext="{d:DesignInstance Type=config:GlobalConfig}">
<ui:SimpleStackPanel Orientation="Vertical" Spacing="5" Margin="20">
<TextBlock Text="设置" Style="{StaticResource TitleTextBlockStyle}" FontFamily="Microsoft Yahei" Margin="0,10"/>
<GroupBox Header="弹幕录制">
<TextBlock Text="{l:Loc Settings_SettingsPage_Title}" Style="{StaticResource TitleTextBlockStyle}" FontFamily="Microsoft Yahei" Margin="0,10"/>
<GroupBox Header="{l:Loc Settings_Danmaku_Title}">
<StackPanel>
<ui:ToggleSwitch IsOn="{Binding RecordDanmaku}" Name="RecordDanmakuCheckbox" OnContent="保存弹幕&#160;&#160;(当前为保存)" OffContent="不保存弹幕(当前为不保存)"/>
<ui:ToggleSwitch IsOn="{Binding RecordDanmaku}" Name="RecordDanmakuCheckbox" OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Enabled}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Enabled}"/>
<StackPanel Margin="0,7,0,0" Visibility="{Binding ElementName=RecordDanmakuCheckbox,Path=IsOn,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}">
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuSuperChat}"
OnContent="同时保存 SuperChat" OffContent="不保存 SuperChat"/>
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_SuperChat}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_SuperChat}"/>
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuGuard}"
OnContent="同时保存 舰长购买" OffContent="不保存 舰长购买"/>
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Guard}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Guard}"/>
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuGift}"
OnContent="同时保存 送礼信息" OffContent="不保存 送礼信息"/>
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Gift}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Gift}"/>
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuRaw}"
OnContent="同时保存 弹幕原始数据" OffContent="不保存 弹幕原始数据"/>
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Raw}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Raw}"/>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="自动分段">
<GroupBox Header="{l:Loc Settings_Splitting_Title}">
<StackPanel>
<RadioButton GroupName="自动分段" Name="CutDisabledRadioButton" Content="不自动分段"
<RadioButton GroupName="Splitting" Name="CutDisabledRadioButton" Content="{l:Loc Settings_Splitting_RadioButton_Disabled}"
IsChecked="{Binding Path=CuttingMode, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:AutoCuttingMode.Disabled}}" />
<RadioButton GroupName="自动分段" Name="CutBySizeRadioButton" Content="根据文件大小自动分段"
<RadioButton GroupName="Splitting" Name="CutBySizeRadioButton" Content="{l:Loc Settings_Splitting_RadioButton_BySize}"
IsChecked="{Binding Path=CuttingMode, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:AutoCuttingMode.BySize}}" />
<RadioButton GroupName="自动分段" Name="CutByTimeRadioButton" Content="根据视频时间自动分段"
<RadioButton GroupName="Splitting" Name="CutByTimeRadioButton" Content="{l:Loc Settings_Splitting_RadioButton_ByTime}"
IsChecked="{Binding Path=CuttingMode, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:AutoCuttingMode.ByTime}}" />
<StackPanel Orientation="Horizontal" Margin="0,5,0,0"
Visibility="{Binding ElementName=CutDisabledRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanToVisibilityCollapsedConverter}}">
<TextBlock Text=""/>
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_Left}"/>
<TextBox Margin="5,0" Width="100" Text="{Binding CuttingNumber,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
<TextBlock Text="MiB 保存为一个文件"
Visibility="{Binding ElementName=CutBySizeRadioButton,Path=IsChecked,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"/>
<TextBlock Text="分 保存为一个文件"
Visibility="{Binding ElementName=CutByTimeRadioButton,Path=IsChecked,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"/>
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_SizeUnit}" Visibility="{Binding ElementName=CutBySizeRadioButton,Path=IsChecked,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"/>
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_TimeUnit}" Visibility="{Binding ElementName=CutByTimeRadioButton,Path=IsChecked,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"/>
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_Right}"/>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="录制功能">
<StackPanel>
<RadioButton GroupName="录制功能" Name="EnabledFeatureRecordOnlyRadioButton" Content="只启用录制功能" ToolTip="(默认)占内存更少,但不能使用即时剪辑"
IsChecked="{Binding Path=EnabledFeature, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:EnabledFeature.RecordOnly}}" />
<RadioButton GroupName="录制功能" Content="只启用即时剪辑功能" ToolTip="不保存所有直播数据"
IsChecked="{Binding Path=EnabledFeature, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:EnabledFeature.ClipOnly}}" />
<RadioButton GroupName="录制功能" Content="同时启用两个功能"
IsChecked="{Binding Path=EnabledFeature, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:EnabledFeature.Both}}" />
<StackPanel Margin="0,5,0,0" Visibility="{Binding ElementName=EnabledFeatureRecordOnlyRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanToVisibilityCollapsedConverter}}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="剪辑过去时长"/>
<TextBox Margin="5,0" Width="80" Text="{Binding ClipLengthPast,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
<TextBlock Text="秒"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="剪辑将来时长"/>
<TextBox Margin="5,0" Width="80" Text="{Binding ClipLengthFuture,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
<TextBlock Text="秒"/>
</StackPanel>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="文件名">
<GroupBox Header="{l:Loc Settings_FileName_Title}">
<StackPanel MaxWidth="500" HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<StackPanel.ToolTip>
<TextBlock FontSize="13">
文件名变量说明<LineBreak/>
<LineBreak/>
日期: {date} <LineBreak/>
时间: {time} <LineBreak/>
房间号: {roomid} <LineBreak/>
标题: {title} <LineBreak/>
主播名: {name} <LineBreak/>
随机数字: {random} <LineBreak/>
<LineBreak/>
所有 { } 大括号均为英文半角括号 <LineBreak/>
只支持 flv 格式
</TextBlock>
<TextBlock FontSize="13" Text="{l:Loc Settings_FileName_Description_ToolTip}"/>
</StackPanel.ToolTip>
<TextBlock Text="说明"/>
<TextBlock Text="{l:Loc Settings_FileName_Description_Text}"/>
<ui:PathIcon Margin="2,0" VerticalAlignment="Center" Height="15" Style="{StaticResource PathIconDataInformationOutline}"/>
</StackPanel>
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasRecordFilenameFormat}" Header="录制文件名格式">
@ -116,6 +81,33 @@
</c:SettingWithDefault>
</StackPanel>
</GroupBox>
<GroupBox Header="{l:Loc Settings_RecordMode_Title}">
<StackPanel>
<TextBlock Text="{l:Loc Settings_RecordMode_Description}"/>
<RadioButton GroupName="RecordMode" Name="EnabledFeatureRecordOnlyRadioButton" Content="{l:Loc Settings_RecordMode_RadioButton_RecordOnly}"
IsChecked="{Binding Path=EnabledFeature, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:EnabledFeature.RecordOnly}}" />
<RadioButton GroupName="RecordMode" Content="{l:Loc Settings_RecordMode_RadioButton_ClipOnly}"
IsChecked="{Binding Path=EnabledFeature, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:EnabledFeature.ClipOnly}}" />
<RadioButton GroupName="RecordMode" Content="{l:Loc Settings_RecordMode_RadioButton_Both}"
IsChecked="{Binding Path=EnabledFeature, Converter={StaticResource EnumToBooleanConverter},
ConverterParameter={x:Static flv:EnabledFeature.Both}}" />
<StackPanel Margin="0,5,0,0" Visibility="{Binding ElementName=EnabledFeatureRecordOnlyRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanToVisibilityCollapsedConverter}}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{l:Loc Settings_RecordMode_Clip_PastDuration}"/>
<TextBox Margin="5,0" Width="80" Text="{Binding ClipLengthPast,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
<TextBlock Text="{l:Loc Settings_RecordMode_Clip_DurationUnit}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{l:Loc Settings_RecordMode_Clip_FutureDuration}"/>
<TextBox Margin="5,0" Width="80" Text="{Binding ClipLengthFuture,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
<TextBlock Text="{l:Loc Settings_RecordMode_Clip_DurationUnit}"/>
</StackPanel>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="Webhook">
<StackPanel MaxWidth="400" HorizontalAlignment="Left">
<TextBlock Text="Webhook 地址,一行一个"/>

View File

@ -60,6 +60,33 @@ namespace BililiveRecorder.WPF.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to 联系方式/问题反馈: .
/// </summary>
public static string About_Contact {
get {
return ResourceManager.GetString("About_Contact", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to B站录播姬.
/// </summary>
public static string About_Name {
get {
return ResourceManager.GetString("About_Name", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 官网: .
/// </summary>
public static string About_Website {
get {
return ResourceManager.GetString("About_Website", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 确定.
/// </summary>
@ -285,6 +312,15 @@ namespace BililiveRecorder.WPF.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to 房间设置.
/// </summary>
public static string RoomCard_Menu_Settings {
get {
return ResourceManager.GetString("RoomCard_Menu_Settings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 开始录制.
/// </summary>
@ -312,6 +348,44 @@ namespace BililiveRecorder.WPF.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to 弹幕连接被断开
///录播姬通过弹幕服务器接收开播状态推送.
/// </summary>
public static string RoomCard_Status_DanmakuConnectionTooltip_False {
get {
return ResourceManager.GetString("RoomCard_Status_DanmakuConnectionTooltip_False", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 已连接弹幕服务器
///实时接收开播状态和其他数据.
/// </summary>
public static string RoomCard_Status_DanmakuConnectionTooltip_True {
get {
return ResourceManager.GetString("RoomCard_Status_DanmakuConnectionTooltip_True", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 未开播.
/// </summary>
public static string RoomCard_Status_LiveStatusTooltip_False {
get {
return ResourceManager.GetString("RoomCard_Status_LiveStatusTooltip_False", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 直播中.
/// </summary>
public static string RoomCard_Status_LiveStatusTooltip_True {
get {
return ResourceManager.GetString("RoomCard_Status_LiveStatusTooltip_True", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 监控中.
/// </summary>
@ -511,6 +585,280 @@ namespace BililiveRecorder.WPF.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to 高级设置.
/// </summary>
public static string Settings_AdvancedPage_Title {
get {
return ResourceManager.GetString("Settings_AdvancedPage_Title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 注:一般用户通常不需要也不应该修改这里的设置项。
///对 Timing 的修改可能会导致被B站服务器屏蔽、不能及时开始录制等问题。.
/// </summary>
public static string Settings_AdvancedPage_Warning {
get {
return ResourceManager.GetString("Settings_AdvancedPage_Warning", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 触发写硬盘所需弹幕个数.
/// </summary>
public static string Settings_Danmaku_FlushInterval {
get {
return ResourceManager.GetString("Settings_Danmaku_FlushInterval", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 弹幕录制.
/// </summary>
public static string Settings_Danmaku_Title {
get {
return ResourceManager.GetString("Settings_Danmaku_Title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 保存弹幕.
/// </summary>
public static string Settings_Danmaku_ToggleSwitch_Enabled {
get {
return ResourceManager.GetString("Settings_Danmaku_ToggleSwitch_Enabled", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 保存 送礼信息.
/// </summary>
public static string Settings_Danmaku_ToggleSwitch_Gift {
get {
return ResourceManager.GetString("Settings_Danmaku_ToggleSwitch_Gift", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 保存 舰长购买.
/// </summary>
public static string Settings_Danmaku_ToggleSwitch_Guard {
get {
return ResourceManager.GetString("Settings_Danmaku_ToggleSwitch_Guard", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 保存 弹幕原始数据.
/// </summary>
public static string Settings_Danmaku_ToggleSwitch_Raw {
get {
return ResourceManager.GetString("Settings_Danmaku_ToggleSwitch_Raw", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 保存 SuperChat.
/// </summary>
public static string Settings_Danmaku_ToggleSwitch_SuperChat {
get {
return ResourceManager.GetString("Settings_Danmaku_ToggleSwitch_SuperChat", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 说明.
/// </summary>
public static string Settings_FileName_Description_Text {
get {
return ResourceManager.GetString("Settings_FileName_Description_Text", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 文件名变量说明
///
///日期: {date}
///时间: {time}
///房间号: {roomid}
///标题: {title}
///主播名: {name}
///随机数字: {random}
///
///所有 { } 大括号均为英文半角括号
///只支持 flv 格式.
/// </summary>
public static string Settings_FileName_Description_ToolTip {
get {
return ResourceManager.GetString("Settings_FileName_Description_ToolTip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 秒.
/// </summary>
public static string Settings_RecordMode_Clip_DurationUnit {
get {
return ResourceManager.GetString("Settings_RecordMode_Clip_DurationUnit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 剪辑将来时长.
/// </summary>
public static string Settings_RecordMode_Clip_FutureDuration {
get {
return ResourceManager.GetString("Settings_RecordMode_Clip_FutureDuration", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 剪辑过去时长.
/// </summary>
public static string Settings_RecordMode_Clip_PastDuration {
get {
return ResourceManager.GetString("Settings_RecordMode_Clip_PastDuration", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 推荐使用 只启用录制功能
///即时剪辑功能会在之后的版本删除
///启用剪辑功能有小概率会遇到内存泄漏的问题.
/// </summary>
public static string Settings_RecordMode_Description {
get {
return ResourceManager.GetString("Settings_RecordMode_Description", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 同时启用两个功能.
/// </summary>
public static string Settings_RecordMode_RadioButton_Both {
get {
return ResourceManager.GetString("Settings_RecordMode_RadioButton_Both", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 只启用即时剪辑功能.
/// </summary>
public static string Settings_RecordMode_RadioButton_ClipOnly {
get {
return ResourceManager.GetString("Settings_RecordMode_RadioButton_ClipOnly", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 只启用录制功能.
/// </summary>
public static string Settings_RecordMode_RadioButton_RecordOnly {
get {
return ResourceManager.GetString("Settings_RecordMode_RadioButton_RecordOnly", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 录制模式.
/// </summary>
public static string Settings_RecordMode_Title {
get {
return ResourceManager.GetString("Settings_RecordMode_Title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 设置.
/// </summary>
public static string Settings_SettingsPage_Title {
get {
return ResourceManager.GetString("Settings_SettingsPage_Title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 根据文件大小自动分段.
/// </summary>
public static string Settings_Splitting_RadioButton_BySize {
get {
return ResourceManager.GetString("Settings_Splitting_RadioButton_BySize", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 根据视频时间自动分段.
/// </summary>
public static string Settings_Splitting_RadioButton_ByTime {
get {
return ResourceManager.GetString("Settings_Splitting_RadioButton_ByTime", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 不自动分段.
/// </summary>
public static string Settings_Splitting_RadioButton_Disabled {
get {
return ResourceManager.GetString("Settings_Splitting_RadioButton_Disabled", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 每.
/// </summary>
public static string Settings_Splitting_TextBox_Left {
get {
return ResourceManager.GetString("Settings_Splitting_TextBox_Left", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 保存为一个文件.
/// </summary>
public static string Settings_Splitting_TextBox_Right {
get {
return ResourceManager.GetString("Settings_Splitting_TextBox_Right", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to MiB.
/// </summary>
public static string Settings_Splitting_TextBox_SizeUnit {
get {
return ResourceManager.GetString("Settings_Splitting_TextBox_SizeUnit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 分.
/// </summary>
public static string Settings_Splitting_TextBox_TimeUnit {
get {
return ResourceManager.GetString("Settings_Splitting_TextBox_TimeUnit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 自动分段.
/// </summary>
public static string Settings_Splitting_Title {
get {
return ResourceManager.GetString("Settings_Splitting_Title", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 默认.
/// </summary>
public static string SettingWithDefault_Default {
get {
return ResourceManager.GetString("SettingWithDefault_Default", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 打开主界面.
/// </summary>

View File

@ -141,8 +141,11 @@
<data name="RoomCard_Status_SpeedIndicator_SpeedInMbps" xml:space="preserve">
<value>{0:F2} Mbps</value>
</data>
<data name="Settings_Splitting_Title" xml:space="preserve">
<value>Recording Splitting</value>
</data>
<data name="Window_Title" xml:space="preserve">
<value>BililiveRecorder {0}</value>
<value>BililiveRecorder (B站录播姬) {0}</value>
</data>
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
<value>Browse...</value>

View File

@ -127,7 +127,7 @@
<value>{0:F2} Mbps</value>
</data>
<data name="Window_Title" xml:space="preserve">
<value>ビリビリ録画機 {0}</value>
<value>ビリビリ録画機 (B站录播姬) {0}</value>
</data>
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
<value>ブラウズ...</value>

View File

@ -97,6 +97,18 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About_Contact" xml:space="preserve">
<value>联系方式/问题反馈: </value>
<comment>Add a space after colon ":"</comment>
</data>
<data name="About_Name" xml:space="preserve">
<value>B站录播姬</value>
<comment>Add "(B站录播姬)" after translation</comment>
</data>
<data name="About_Website" xml:space="preserve">
<value>官网: </value>
<comment>Add a space after colon ":"</comment>
</data>
<data name="AddRoomCard_ConfirmButton" xml:space="preserve">
<value>确定</value>
<comment>Translate as "confirm" or "add"</comment>
@ -175,6 +187,10 @@
<data name="RoomCard_Menu_RefreshInfo" xml:space="preserve">
<value>刷新直播间信息</value>
</data>
<data name="RoomCard_Menu_Settings" xml:space="preserve">
<value>房间设置</value>
<comment>This settings is different per room</comment>
</data>
<data name="RoomCard_Menu_StartRecording" xml:space="preserve">
<value>开始录制</value>
</data>
@ -184,6 +200,20 @@
<data name="RoomCard_Menu_Tooltip" xml:space="preserve">
<value>操作</value>
</data>
<data name="RoomCard_Status_DanmakuConnectionTooltip_False" xml:space="preserve">
<value>弹幕连接被断开
录播姬通过弹幕服务器接收开播状态推送</value>
</data>
<data name="RoomCard_Status_DanmakuConnectionTooltip_True" xml:space="preserve">
<value>已连接弹幕服务器
实时接收开播状态和其他数据</value>
</data>
<data name="RoomCard_Status_LiveStatusTooltip_False" xml:space="preserve">
<value>未开播</value>
</data>
<data name="RoomCard_Status_LiveStatusTooltip_True" xml:space="preserve">
<value>直播中</value>
</data>
<data name="RoomCard_Status_Monitoring" xml:space="preserve">
<value>监控中</value>
<comment>Short status text</comment>
@ -256,6 +286,108 @@
<data name="RootPage_NavigationViewItem_SettingsPage" xml:space="preserve">
<value>设置</value>
</data>
<data name="Settings_AdvancedPage_Title" xml:space="preserve">
<value>高级设置</value>
</data>
<data name="Settings_AdvancedPage_Warning" xml:space="preserve">
<value>注:一般用户通常不需要也不应该修改这里的设置项。
对 Timing 的修改可能会导致被B站服务器屏蔽、不能及时开始录制等问题。</value>
</data>
<data name="Settings_Danmaku_FlushInterval" xml:space="preserve">
<value>触发写硬盘所需弹幕个数</value>
</data>
<data name="Settings_Danmaku_Title" xml:space="preserve">
<value>弹幕录制</value>
</data>
<data name="Settings_Danmaku_ToggleSwitch_Enabled" xml:space="preserve">
<value>保存弹幕</value>
</data>
<data name="Settings_Danmaku_ToggleSwitch_Gift" xml:space="preserve">
<value>保存 送礼信息</value>
</data>
<data name="Settings_Danmaku_ToggleSwitch_Guard" xml:space="preserve">
<value>保存 舰长购买</value>
</data>
<data name="Settings_Danmaku_ToggleSwitch_Raw" xml:space="preserve">
<value>保存 弹幕原始数据</value>
</data>
<data name="Settings_Danmaku_ToggleSwitch_SuperChat" xml:space="preserve">
<value>保存 SuperChat</value>
</data>
<data name="Settings_FileName_Description_Text" xml:space="preserve">
<value>说明</value>
</data>
<data name="Settings_FileName_Description_ToolTip" xml:space="preserve">
<value>文件名变量说明
日期: {date}
时间: {time}
房间号: {roomid}
标题: {title}
主播名: {name}
随机数字: {random}
所有 { } 大括号均为英文半角括号
只支持 flv 格式</value>
</data>
<data name="Settings_RecordMode_Clip_DurationUnit" xml:space="preserve">
<value>秒</value>
</data>
<data name="Settings_RecordMode_Clip_FutureDuration" xml:space="preserve">
<value>剪辑将来时长</value>
</data>
<data name="Settings_RecordMode_Clip_PastDuration" xml:space="preserve">
<value>剪辑过去时长</value>
</data>
<data name="Settings_RecordMode_Description" xml:space="preserve">
<value>推荐使用 只启用录制功能
即时剪辑功能会在之后的版本删除
启用剪辑功能有小概率会遇到内存泄漏的问题</value>
</data>
<data name="Settings_RecordMode_RadioButton_Both" xml:space="preserve">
<value>同时启用两个功能</value>
</data>
<data name="Settings_RecordMode_RadioButton_ClipOnly" xml:space="preserve">
<value>只启用即时剪辑功能</value>
</data>
<data name="Settings_RecordMode_RadioButton_RecordOnly" xml:space="preserve">
<value>只启用录制功能</value>
</data>
<data name="Settings_RecordMode_Title" xml:space="preserve">
<value>录制模式</value>
</data>
<data name="Settings_SettingsPage_Title" xml:space="preserve">
<value>设置</value>
</data>
<data name="Settings_Splitting_RadioButton_BySize" xml:space="preserve">
<value>根据文件大小自动分段</value>
</data>
<data name="Settings_Splitting_RadioButton_ByTime" xml:space="preserve">
<value>根据视频时间自动分段</value>
</data>
<data name="Settings_Splitting_RadioButton_Disabled" xml:space="preserve">
<value>不自动分段</value>
</data>
<data name="Settings_Splitting_TextBox_Left" xml:space="preserve">
<value>每</value>
</data>
<data name="Settings_Splitting_TextBox_Right" xml:space="preserve">
<value>保存为一个文件</value>
</data>
<data name="Settings_Splitting_TextBox_SizeUnit" xml:space="preserve">
<value>MiB</value>
</data>
<data name="Settings_Splitting_TextBox_TimeUnit" xml:space="preserve">
<value>分</value>
</data>
<data name="Settings_Splitting_Title" xml:space="preserve">
<value>自动分段</value>
</data>
<data name="SettingWithDefault_Default" xml:space="preserve">
<value>默认</value>
<comment>Text of the checkbox in the reuseable control for setting items.
Will use default setting and disable user input when checked.</comment>
</data>
<data name="TaskbarIconControl_MenuItem_OpenMainWindow" xml:space="preserve">
<value>打开主界面</value>
</data>

View File

@ -1,6 +1,9 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:BililiveRecorder.WPF.Converters">
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:BililiveRecorder.WPF.Converters"
xmlns:l="https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension"
>
<c:MultiBoolToValueConverter x:Key="MultiBoolToVisibilityCollapsedConverter" TrueValue="{x:Static Visibility.Visible}" FalseValue="{x:Static Visibility.Collapsed}"/>
@ -15,7 +18,14 @@
<SolidColorBrush Color="Red"/>
</c:BoolToValueConverter.TrueValue>
</c:BoolToValueConverter>
<c:BoolToValueConverter x:Key="BooleanToLiveStatusTooltipConverter" TrueValue="直播中" FalseValue="未开播"/>
<c:BoolToValueConverter x:Key="BooleanToLiveStatusTooltipConverter">
<c:BoolToValueConverter.TrueValue>
<TextBlock Text="{l:Loc RoomCard_Status_LiveStatusTooltip_True}" l:ResxLocalizationProvider.DefaultDictionary="Strings"/>
</c:BoolToValueConverter.TrueValue>
<c:BoolToValueConverter.FalseValue>
<TextBlock Text="{l:Loc RoomCard_Status_LiveStatusTooltip_False}" l:ResxLocalizationProvider.DefaultDictionary="Strings"/>
</c:BoolToValueConverter.FalseValue>
</c:BoolToValueConverter>
<c:BoolToValueConverter x:Key="BooleanToDanmakuConnectedStyleConverter" TrueValue="{StaticResource PathIconDataCloudCheckOutline}" FalseValue="{StaticResource PathIconDataCloudAlert}"/>
<c:BoolToValueConverter x:Key="BooleanToDanmakuConnectedColorBrushConverter">
<c:BoolToValueConverter.FalseValue>
@ -25,7 +35,14 @@
<SolidColorBrush Color="#8BC34A"/>
</c:BoolToValueConverter.TrueValue>
</c:BoolToValueConverter>
<c:BoolToValueConverter x:Key="BooleanToDanmakuConnectedTooltipConverter" TrueValue="已连接 实时接收房间数据中" FalseValue="连接被断开"/>
<c:BoolToValueConverter x:Key="BooleanToDanmakuConnectedTooltipConverter">
<c:BoolToValueConverter.TrueValue>
<TextBlock Text="{l:Loc RoomCard_Status_DanmakuConnectionTooltip_True}" l:ResxLocalizationProvider.DefaultDictionary="Strings"/>
</c:BoolToValueConverter.TrueValue>
<c:BoolToValueConverter.FalseValue>
<TextBlock Text="{l:Loc RoomCard_Status_DanmakuConnectionTooltip_False}" l:ResxLocalizationProvider.DefaultDictionary="Strings"/>
</c:BoolToValueConverter.FalseValue>
</c:BoolToValueConverter>
<c:BooleanInverterConverter x:Key="BooleanInverterConverter"/>
<c:ClipEnabledToBooleanConverter x:Key="ClipEnabledToBooleanConverter"/>
<c:EnumToBooleanConverter x:Key="EnumToBooleanConverter"/>

View File

@ -21,7 +21,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{623A2ACC-DAC6-4E6F-9242-B4B54381AAE1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BililiveRecorder.UnitTest.Core", "test\BililiveRecorder.UnitTest.Core\BililiveRecorder.UnitTest.Core.csproj", "{521EC763-5694-45A8-B87F-6E6B7F2A3BD4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BililiveRecorder.UnitTest.Core", "test\BililiveRecorder.UnitTest.Core\BililiveRecorder.UnitTest.Core.csproj", "{521EC763-5694-45A8-B87F-6E6B7F2A3BD4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -57,8 +57,9 @@ Global
{521EC763-5694-45A8-B87F-6E6B7F2A3BD4} = {623A2ACC-DAC6-4E6F-9242-B4B54381AAE1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
RESX_SortFileContentOnSave = True
SolutionGuid = {F3CB8B14-077A-458F-BD8E-1747ED0F5170}
RESX_SaveFilesImmediatelyUponChange = False
RESX_NeutralResourcesLanguage = zh-Hans
SolutionGuid = {F3CB8B14-077A-458F-BD8E-1747ED0F5170}
RESX_SortFileContentOnSave = True
EndGlobalSection
EndGlobal