Browse Source

New feature: switching from Russian to English

pull/17/head
oZ-Zo 5 years ago
parent
commit
6c0b142106
  1. 37
      W10SS_GUI/Classes/AppCulture.cs
  2. 23
      W10SS_GUI/Localized/RU.xaml
  3. 116
      W10SS_GUI/MainWindow.xaml
  4. 58
      W10SS_GUI/MainWindow.xaml.cs
  5. 14
      W10SS_GUI/Model/ModelGui.cs
  6. 3
      W10SS_GUI/Resource/tags.xaml
  7. 2
      W10SS_GUI/W10SS_GUI.csproj
  8. BIN
      Win10SetupScript.zip

37
W10SS_GUI/Classes/AppCulture.cs

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace W10SS_GUI
{
internal class AppCulture
{
private class Culture
{
internal const string EN = "en";
internal const string RU = "ru";
}
private string _culture = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == Culture.RU ? Culture.RU : Culture.EN;
private ResourceDictionary resourceDictionaryEn = new ResourceDictionary() { Source = new Uri("pack://application:,,,/Localized/EN.xaml", UriKind.Absolute) };
private ResourceDictionary resourceDictionaryRu = new ResourceDictionary() { Source = new Uri("pack://application:,,,/Localized/RU.xaml", UriKind.Absolute) };
internal ResourceDictionary CurrentCulture
{
get
{
return _culture == Culture.RU ? resourceDictionaryRu : resourceDictionaryEn;
}
}
internal ResourceDictionary ChangeCulture()
{
if (_culture == Culture.RU) _culture = Culture.EN;
else _culture = Culture.RU;
return _culture == Culture.RU ? resourceDictionaryRu : resourceDictionaryEn;
}
}
}

23
W10SS_GUI/Localized/RU.xaml

@ -1,5 +1,24 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:W10SS_GUI.Localized"> xmlns:local="clr-namespace:W10SS_GUI.Localized"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<system:String x:Key="textWindowTitle">Windows 10 Setup Script</system:String>
<system:String x:Key="textHamburgerPrivacy">Телеметрия</system:String>
<system:String x:Key="textHamburgerUi">Персонализация</system:String>
<system:String x:Key="textHamburgerOneDrive">OneDrive</system:String>
<system:String x:Key="textHamburgerSystem">Система</system:String>
<system:String x:Key="textHamburgerStartMenu">Меню "Пуск"</system:String>
<system:String x:Key="textHamburgerUwp">UWP Приложения</system:String>
<system:String x:Key="textHamburgerWinGame">Игровой режим</system:String>
<system:String x:Key="textHamburgerTaskScheduler">Планировщик</system:String>
<system:String x:Key="textHamburgerDefender">Microsoft Defender</system:String>
<system:String x:Key="textHamburgerContextMenu">Контекстное меню</system:String>
<system:String x:Key="textHamburgerApply">Применить</system:String>
<system:String x:Key="textHamburgerSave">Сохранить</system:String>
<system:String x:Key="textHamburgerLoad">Импортировать</system:String>
<system:String x:Key="textHamburgerLanguage">English</system:String>
<system:String x:Key="textHamburgerOpenGithub">GitHub</system:String>
</ResourceDictionary> </ResourceDictionary>

116
W10SS_GUI/MainWindow.xaml

@ -19,9 +19,7 @@
ResizeMode="CanResize" ResizeMode="CanResize"
ShowInTaskbar="True" ShowInTaskbar="True"
Background="{DynamicResource colorWindowBackground}" Background="{DynamicResource colorWindowBackground}"
Foreground="{DynamicResource colorWindowForeground}" Foreground="{DynamicResource colorWindowForeground}"
Initialized="Window_Initialized"
Icon="windows10.ico"
SizeToContent="Manual"> SizeToContent="Manual">
<Window.Style> <Window.Style>
<Style TargetType="{x:Type Window}"> <Style TargetType="{x:Type Window}">
@ -59,7 +57,8 @@
TextMargin="0 0 10 3" TextMargin="0 0 10 3"
Tag="{StaticResource tagCategoryPrivacy}" Tag="{StaticResource tagCategoryPrivacy}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="0" Canvas.Left="0"/> Canvas.Top="0" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerUi" <uc:HamburgerCategoryButton x:Name="buttonHamburgerUi"
Icon="{StaticResource iconHamburgerUi}" Icon="{StaticResource iconHamburgerUi}"
@ -68,7 +67,8 @@
TextMargin="0 0 10 -2" TextMargin="0 0 10 -2"
Tag="{StaticResource tagCategoryUi}" Tag="{StaticResource tagCategoryUi}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="40" Canvas.Left="0"/> Canvas.Top="40" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerOneDrive" <uc:HamburgerCategoryButton x:Name="buttonHamburgerOneDrive"
IconVisibility="Collapsed" IconVisibility="Collapsed"
@ -77,7 +77,8 @@
Width="{Binding ElementName=panelHamburger, Path=Width}" Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 3" TextMargin="0 0 10 3"
Tag="{StaticResource tagCategoryOneDrive}" Tag="{StaticResource tagCategoryOneDrive}"
Canvas.Top="80" Canvas.Left="0" /> Canvas.Top="80" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerSystem" <uc:HamburgerCategoryButton x:Name="buttonHamburgerSystem"
Icon="{StaticResource iconHamburgerSystem}" Icon="{StaticResource iconHamburgerSystem}"
@ -86,7 +87,8 @@
TextMargin="0 0 10 1" TextMargin="0 0 10 1"
Tag="{StaticResource tagCategorySystem}" Tag="{StaticResource tagCategorySystem}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="120" Canvas.Left="0"/> Canvas.Top="120" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerStartMenu" <uc:HamburgerCategoryButton x:Name="buttonHamburgerStartMenu"
Icon="{StaticResource iconHamburgerStartMenu}" Icon="{StaticResource iconHamburgerStartMenu}"
@ -95,7 +97,8 @@
TextMargin="0 0 10 5" TextMargin="0 0 10 5"
Tag="{StaticResource tagCategoryStartMenu}" Tag="{StaticResource tagCategoryStartMenu}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="160" Canvas.Left="0"/> Canvas.Top="160" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerUwp" <uc:HamburgerCategoryButton x:Name="buttonHamburgerUwp"
Icon="{StaticResource iconHamburgerUwp}" Icon="{StaticResource iconHamburgerUwp}"
@ -104,7 +107,8 @@
TextMargin="0 0 10 1" TextMargin="0 0 10 1"
Tag="{StaticResource tagCategoryUwp}" Tag="{StaticResource tagCategoryUwp}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="200" Canvas.Left="0" /> Canvas.Top="200" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerWinGame" <uc:HamburgerCategoryButton x:Name="buttonHamburgerWinGame"
IconVisibility="Collapsed" IconVisibility="Collapsed"
@ -113,7 +117,8 @@
Width="{Binding ElementName=panelHamburger, Path=Width}" Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 4" TextMargin="0 0 10 4"
Tag="{StaticResource tagCategoryWinGame}" Tag="{StaticResource tagCategoryWinGame}"
Canvas.Top="240" Canvas.Left="0"/> Canvas.Top="240" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerTaskScheduler" <uc:HamburgerCategoryButton x:Name="buttonHamburgerTaskScheduler"
IconVisibility="Collapsed" IconVisibility="Collapsed"
@ -122,7 +127,8 @@
Width="{Binding ElementName=panelHamburger, Path=Width}" Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 2" TextMargin="0 0 10 2"
Tag="{StaticResource tagCategoryTaskScheduler}" Tag="{StaticResource tagCategoryTaskScheduler}"
Canvas.Top="280" Canvas.Left="0"/> Canvas.Top="280" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerDefender" <uc:HamburgerCategoryButton x:Name="buttonHamburgerDefender"
Icon="{StaticResource iconHamburgerDefender}" Icon="{StaticResource iconHamburgerDefender}"
@ -131,7 +137,8 @@
TextMargin="0 0 10 4" TextMargin="0 0 10 4"
Tag="{StaticResource tagCategoryDefender}" Tag="{StaticResource tagCategoryDefender}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="320" Canvas.Left="0"/> Canvas.Top="320" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerContextMenu" <uc:HamburgerCategoryButton x:Name="buttonHamburgerContextMenu"
Icon="{StaticResource iconHamburgerContextMenu}" Icon="{StaticResource iconHamburgerContextMenu}"
@ -140,7 +147,8 @@
TextMargin="0 0 10 3" TextMargin="0 0 10 3"
Tag="{StaticResource tagCategoryContextMenu}" Tag="{StaticResource tagCategoryContextMenu}"
ViewboxPathVisibility="Collapsed" ViewboxPathVisibility="Collapsed"
Canvas.Top="360" Canvas.Left="0"/> Canvas.Top="360" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryFlashButton x:Name="buttonHamburgerApplySettings" <uc:HamburgerCategoryFlashButton x:Name="buttonHamburgerApplySettings"
IsEnabled="False" IsEnabled="False"
@ -174,7 +182,8 @@
Text="{DynamicResource textHamburgerLanguage}" Text="{DynamicResource textHamburgerLanguage}"
Width="{Binding ElementName=panelHamburger, Path=Width}" Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 3" TextMargin="0 0 10 3"
Canvas.Bottom="160" Canvas.Left="0"/> Canvas.Bottom="160" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburgerLanguageSettings_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerOpenGithub" <uc:HamburgerCategoryButton x:Name="buttonHamburgerOpenGithub"
IconVisibility="Collapsed" IconVisibility="Collapsed"
@ -194,19 +203,13 @@
Orientation="Horizontal" Orientation="Horizontal"
VerticalAlignment="Top" VerticalAlignment="Top"
Margin="40 0 0 0"> Margin="40 0 0 0">
<!--<TextBlock Name="iconTogglesHeader"
FontSize="{StaticResource iconTogglesCategoryPanelHeaderFontSize}"
FontFamily="{StaticResource fontToggleIcon}"
Margin="15 5 10 5"
Text="{StaticResource iconHamburgerPrivacy}"/>-->
<TextBlock Name="textTogglesHeader" <TextBlock Name="textTogglesHeader"
FontSize="{StaticResource fontSizeTogglesCategoryPanelHeader}" FontSize="{StaticResource fontSizeTogglesCategoryPanelHeader}"
FontFamily="{StaticResource fontTogglesPanelHeader}" FontFamily="{StaticResource fontTogglesPanelHeader}"
VerticalAlignment="Center" VerticalAlignment="Center"
Margin="15 5 0 5" Margin="15 5 0 5"
Text="{DynamicResource textHamburgerPrivacy}"/> Text=""/>
</StackPanel> </StackPanel>
@ -221,56 +224,45 @@
<StackPanel Name="panelTogglesCategoryContainer"> <StackPanel Name="panelTogglesCategoryContainer">
<StackPanel Name="panelTogglesCategoryPrivacy" <StackPanel x:Name="panelTogglesCategoryPrivacy"
Tag="{StaticResource tagCategoryPrivacy}"> Tag="{StaticResource tagCategoryPrivacy}"
Visibility="Collapsed" />
<uc:ToggleSwitch
Header="Change Windows Feedback frequency to Never"
Description="Изменить частоту формирования отзывов на Никогда" />
<uc:ToggleSwitch
Header="Do not allow apps to use advertising ID"
Description="Не разрешать приложениям использовать идентификатор рекламы"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryUi"
Header="Do not let apps on other devices open and message apps on this device, and vice versa" Tag="{StaticResource tagCategoryUi}"
Description="Не разрешать приложениям на других устройствах запускать приложения и отправлять сообщения на этом устройстве и наоборот"/> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryOneDrive"
Header="Do not let websites provide locally relevant content by accessing language list" Tag="{StaticResource tagCategoryOneDrive}"
Description="Не позволять веб-сайтам предоставлять местную информацию за счет доступа к списку языков"/> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategorySystem"
Header="Change Windows Feedback frequency to Never" Tag="{StaticResource tagCategorySystem}"
Description="Изменить частоту формирования отзывов на Никогда" /> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryStartMenu"
Header="Do not allow apps to use advertising ID" Tag="{StaticResource tagCategoryStartMenu}"
Description="Не разрешать приложениям использовать идентификатор рекламы"/> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryUwp"
Header="Do not let apps on other devices open and message apps on this device, and vice versa" Tag="{StaticResource tagCategoryUwp}"
Description="Не разрешать приложениям на других устройствах запускать приложения и отправлять сообщения на этом устройстве и наоборот"/> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryWinGame"
Header="Do not let websites provide locally relevant content by accessing language list" Tag="{StaticResource tagCategoryWinGame}"
Description="Не позволять веб-сайтам предоставлять местную информацию за счет доступа к списку языков"/> Visibility="Collapsed"/>
<uc:ToggleSwitch
Header="Change Windows Feedback frequency to Never"
Description="Изменить частоту формирования отзывов на Никогда" />
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryTaskScheduler"
Header="Do not allow apps to use advertising ID" Tag="{StaticResource tagCategoryTaskScheduler}"
Description="Не разрешать приложениям использовать идентификатор рекламы"/> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryDefender"
Header="Do not let apps on other devices open and message apps on this device, and vice versa" Tag="{StaticResource tagCategoryDefender}"
Description="Не разрешать приложениям на других устройствах запускать приложения и отправлять сообщения на этом устройстве и наоборот"/> Visibility="Collapsed"/>
<uc:ToggleSwitch <StackPanel Name="panelTogglesCategoryContextMenu"
Header="Do not let websites provide locally relevant content by accessing language list" Tag="{StaticResource tagCategoryContextMenu}"
Description="Не позволять веб-сайтам предоставлять местную информацию за счет доступа к списку языков"/> Visibility="Collapsed"/>
</StackPanel>
</StackPanel> </StackPanel>

58
W10SS_GUI/MainWindow.xaml.cs

@ -1,5 +1,7 @@
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
@ -22,28 +24,56 @@ namespace W10SS_GUI
/// </summary> /// </summary>
public partial class MainWindow : Window public partial class MainWindow : Window
{ {
private Dictionary<string, StackPanel> TogglesCategoryPanels = new Dictionary<string, StackPanel>();
private AppCulture AppCulture = new AppCulture();
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
} SetUiLanguage();
InitializeVariables();
InitializeToggles();
}
private void InitializeToggles()
{
//AppDomain.CurrentDomain.BaseDirectory
}
private void InitializeVariables()
{
ICollection tagsDictionaryValues = Application.Current.Resources.MergedDictionaries.Where(r => r.Source.Segments[2] == "tags.xaml").FirstOrDefault().Values;
foreach (var tagValue in tagsDictionaryValues)
{
TogglesCategoryPanels.Add(tagValue.ToString(), panelTogglesCategoryContainer.Children.OfType<StackPanel>().Where(p => p.Tag == tagValue).FirstOrDefault());
}
textTogglesHeader.Text = buttonHamburgerPrivacy.Text;
}
private void Window_Initialized(object sender, EventArgs e) private void SetUiLanguage()
{ {
SetLanguageDictionary(); Resources.MergedDictionaries.Add(AppCulture.CurrentCulture);
} }
private void SetLanguageDictionary() private void ButtonHamburger_Click(object sender, MouseButtonEventArgs e)
{ {
ResourceDictionary dict = new ResourceDictionary(); HamburgerCategoryButton button = sender as HamburgerCategoryButton;
string tag = button.Tag.ToString();
switch (Thread.CurrentThread.CurrentCulture.ToString()) foreach (KeyValuePair<string, StackPanel> kvp in TogglesCategoryPanels)
{ {
default: kvp.Value.Visibility = kvp.Key == tag ? Visibility.Visible : Visibility.Collapsed;
dict.Source = new Uri("pack://application:,,,/Localized/EN.xaml", UriKind.Absolute);
break;
} }
Resources.MergedDictionaries.Add(dict); textTogglesHeader.Text = button.Text;
} }
private void ButtonHamburgerLanguageSettings_Click(object sender, MouseButtonEventArgs e)
{
Resources.MergedDictionaries.Add(AppCulture.ChangeCulture());
textTogglesHeader.Text = buttonHamburgerPrivacy.Text;
}
} }
} }

14
W10SS_GUI/Model/ModelGui.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace W10SS_GUI.Model
{
class ModelGui
{
}
}

3
W10SS_GUI/Resource/tags.xaml

@ -1,7 +1,6 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:system="clr-namespace:System;assembly=mscorlib">
xmlns:local="clr-namespace:W10SS_GUI.Resource">
<system:String x:Key="tagCategoryPrivacy">Privacy &amp; Telemetry</system:String> <system:String x:Key="tagCategoryPrivacy">Privacy &amp; Telemetry</system:String>
<system:String x:Key="tagCategoryUi">UI &amp; Personalization</system:String> <system:String x:Key="tagCategoryUi">UI &amp; Personalization</system:String>

2
W10SS_GUI/W10SS_GUI.csproj

@ -111,6 +111,7 @@
<DependentUpon>App.xaml</DependentUpon> <DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Classes\AppCulture.cs" />
<Compile Include="Controls\HamburgerCategoryButton.xaml.cs"> <Compile Include="Controls\HamburgerCategoryButton.xaml.cs">
<DependentUpon>HamburgerCategoryButton.xaml</DependentUpon> <DependentUpon>HamburgerCategoryButton.xaml</DependentUpon>
</Compile> </Compile>
@ -159,5 +160,6 @@
<ItemGroup> <ItemGroup>
<WCFMetadata Include="Connected Services\" /> <WCFMetadata Include="Connected Services\" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>

BIN
Win10SetupScript.zip

Binary file not shown.
Loading…
Cancel
Save