add localization

This commit is contained in:
Вячеслав 2026-01-03 12:23:50 +05:00
parent 864a07c75c
commit ab49284f2f
10 changed files with 475 additions and 50 deletions

View file

@ -14,6 +14,7 @@ public partial class App : Application
public override void OnFrameworkInitializationCompleted() public override void OnFrameworkInitializationCompleted()
{ {
Lang.Resources.Culture = System.Globalization.CultureInfo.CurrentCulture;
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{ {
desktop.MainWindow = new MainWindow(); desktop.MainWindow = new MainWindow();

View file

@ -0,0 +1,251 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MetaforceInstaller.UI.Lang {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MetaforceInstaller.UI.Lang.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Add new installation.
/// </summary>
public static string AddInstallation {
get {
return ResourceManager.GetString("AddInstallation", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Cancel.
/// </summary>
public static string CancelButton {
get {
return ResourceManager.GetString("CancelButton", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Choose .zip.
/// </summary>
public static string ChooseZip {
get {
return ResourceManager.GetString("ChooseZip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Connected to.
/// </summary>
public static string ConnectedTo {
get {
return ResourceManager.GetString("ConnectedTo", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Delete.
/// </summary>
public static string Delete {
get {
return ResourceManager.GetString("Delete", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Install admin.
/// </summary>
public static string InstallAdminCheckbox {
get {
return ResourceManager.GetString("InstallAdminCheckbox", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Install Android admin.
/// </summary>
public static string InstallAndroidAdmin {
get {
return ResourceManager.GetString("InstallAndroidAdmin", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Install.
/// </summary>
public static string InstallButton {
get {
return ResourceManager.GetString("InstallButton", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Install server.
/// </summary>
public static string InstallServerCheckbox {
get {
return ResourceManager.GetString("InstallServerCheckbox", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Install VR client.
/// </summary>
public static string InstallVRClient {
get {
return ResourceManager.GetString("InstallVRClient", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Launch PC admin.
/// </summary>
public static string LaunchPCAdmin {
get {
return ResourceManager.GetString("LaunchPCAdmin", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Launch server.
/// </summary>
public static string LaunchServer {
get {
return ResourceManager.GetString("LaunchServer", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Name of new installation.
/// </summary>
public static string NameOfNewInstallation {
get {
return ResourceManager.GetString("NameOfNewInstallation", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Couldn&apos;t find Android content.
/// </summary>
public static string NoAndroidContentError {
get {
return ResourceManager.GetString("NoAndroidContentError", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Couldn&apos;t find directory with PC admin.
/// </summary>
public static string NoPCAdminError {
get {
return ResourceManager.GetString("NoPCAdminError", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Couldn&apos;t find directory with server.
/// </summary>
public static string NoServerError {
get {
return ResourceManager.GetString("NoServerError", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Not connected.
/// </summary>
public static string NotConnected {
get {
return ResourceManager.GetString("NotConnected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Couldn&apos;t find any VR clients.
/// </summary>
public static string NoVRClientsError {
get {
return ResourceManager.GetString("NoVRClientsError", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Couldn&apos;t find Windows content.
/// </summary>
public static string NoWindowsContentError {
get {
return ResourceManager.GetString("NoWindowsContentError", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Save Android admin.
/// </summary>
public static string SaveAndroidAdminCheckbox {
get {
return ResourceManager.GetString("SaveAndroidAdminCheckbox", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Save VR client.
/// </summary>
public static string SaveVRClientCheckbox {
get {
return ResourceManager.GetString("SaveVRClientCheckbox", resourceCulture);
}
}
}
}

View file

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LaunchServer" xml:space="preserve">
<value>Launch server</value>
</data>
<data name="LaunchPCAdmin" xml:space="preserve">
<value>Launch PC admin</value>
</data>
<data name="InstallVRClient" xml:space="preserve">
<value>Install VR client</value>
</data>
<data name="InstallAndroidAdmin" xml:space="preserve">
<value>Install Android admin</value>
</data>
<data name="Delete" xml:space="preserve">
<value>Delete</value>
</data>
<data name="AddInstallation" xml:space="preserve">
<value>Add new installation</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Not connected</value>
</data>
<data name="ConnectedTo" xml:space="preserve">
<value>Connected to</value>
</data>
<data name="NameOfNewInstallation" xml:space="preserve">
<value>Name of new installation</value>
</data>
<data name="ChooseZip" xml:space="preserve">
<value>Choose .zip</value>
</data>
<data name="InstallServerCheckbox" xml:space="preserve">
<value>Install server</value>
</data>
<data name="InstallAdminCheckbox" xml:space="preserve">
<value>Install admin</value>
</data>
<data name="SaveAndroidAdminCheckbox" xml:space="preserve">
<value>Save Android admin</value>
</data>
<data name="SaveVRClientCheckbox" xml:space="preserve">
<value>Save VR client</value>
</data>
<data name="InstallButton" xml:space="preserve">
<value>Install</value>
</data>
<data name="CancelButton" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="NoServerError" xml:space="preserve">
<value>Couldn't find directory with server</value>
</data>
<data name="NoPCAdminError" xml:space="preserve">
<value>Couldn't find directory with PC admin</value>
</data>
<data name="NoWindowsContentError" xml:space="preserve">
<value>Couldn't find Windows content</value>
</data>
<data name="NoAndroidContentError" xml:space="preserve">
<value>Couldn't find Android content</value>
</data>
<data name="NoVRClientsError" xml:space="preserve">
<value>Couldn't find any VR clients</value>
</data>
</root>

View file

@ -0,0 +1,77 @@
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LaunchServer" xml:space="preserve">
<value>Запустить сервер</value>
</data>
<data name="LaunchPCAdmin" xml:space="preserve">
<value>Запустить админку</value>
</data>
<data name="Delete" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="InstallAndroidAdmin" xml:space="preserve">
<value>Установить андроид-админку</value>
</data>
<data name="InstallVRClient" xml:space="preserve">
<value>Установить на шлем</value>
</data>
<data name="AddInstallation" xml:space="preserve">
<value>Добавить версию</value>
</data>
<data name="ConnectedTo" xml:space="preserve">
<value>Подключено:</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Не подключено</value>
</data>
<data name="ChooseZip" xml:space="preserve">
<value>Выбрать .zip</value>
</data>
<data name="CancelButton" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="InstallAdminCheckbox" xml:space="preserve">
<value>Установить админку</value>
</data>
<data name="InstallButton" xml:space="preserve">
<value>Установить</value>
</data>
<data name="InstallServerCheckbox" xml:space="preserve">
<value>Установить сервер</value>
</data>
<data name="NameOfNewInstallation" xml:space="preserve">
<value>Название версии</value>
</data>
<data name="SaveAndroidAdminCheckbox" xml:space="preserve">
<value>Сохранить андроид-админку</value>
</data>
<data name="SaveVRClientCheckbox" xml:space="preserve">
<value>Сохранить VR-клиенты</value>
</data>
<data name="NoAndroidContentError" xml:space="preserve">
<value>Не удалось обнаружить Андроид контент</value>
</data>
<data name="NoPCAdminError" xml:space="preserve">
<value>Не удалось обнаружить ПК-админку</value>
</data>
<data name="NoServerError" xml:space="preserve">
<value>Не удалось обнаружить сервер</value>
</data>
<data name="NoVRClientsError" xml:space="preserve">
<value>Не удалось обнаружить VR-клиенты</value>
</data>
<data name="NoWindowsContentError" xml:space="preserve">
<value>Не удалось обнаружить Windows контент</value>
</data>
</root>

View file

@ -34,4 +34,19 @@
<AvaloniaResource Include="Images\logo_red.svg" /> <AvaloniaResource Include="Images\logo_red.svg" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Lang\Resources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Update="Lang\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
</Project> </Project>

View file

@ -1,9 +0,0 @@
namespace MetaforceInstaller.UI;
public static class TextDefaults
{
public static readonly string InstallServer = "Install Server";
public static readonly string InstallAdmin = "Install Admin";
public static readonly string SaveAndroidAdmin = "Save Android admin";
public static readonly string SaveVRClient = "Save VR client";
}

View file

@ -47,7 +47,7 @@ public class MainWindowViewModel : INotifyPropertyChanged
} }
public IBrush StatusColor => IsDeviceConnected ? Brushes.Green : Brushes.Red; public IBrush StatusColor => IsDeviceConnected ? Brushes.Green : Brushes.Red;
public string StatusText => IsDeviceConnected ? $"Connected to {_deviceSerial}" : "Not connected"; public string StatusText => IsDeviceConnected ? $"{Lang.Resources.ConnectedTo} {_deviceSerial}" : Lang.Resources.NotConnected;
public void LoadInstallations(IEnumerable<InstallationData> data) public void LoadInstallations(IEnumerable<InstallationData> data)
{ {

View file

@ -3,6 +3,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:MetaforceInstaller.UI.ViewModels" xmlns:vm="using:MetaforceInstaller.UI.ViewModels"
xmlns:lang="using:MetaforceInstaller.UI.Lang"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:CompileBindings="True" x:CompileBindings="True"
x:DataType="vm:MainWindowViewModel" x:DataType="vm:MainWindowViewModel"
@ -43,7 +44,12 @@
<Button Grid.Row="0" Name="NewInstallationButton" Margin="20" VerticalAlignment="Center" <Button Grid.Row="0" Name="NewInstallationButton" Margin="20" VerticalAlignment="Center"
HorizontalAlignment="Right"> HorizontalAlignment="Right">
+ Add new installation <Button.Content>
<StackPanel Orientation="Horizontal" Spacing="4">
<TextBlock Text="+" />
<TextBlock Text="{x:Static lang:Resources.AddInstallation}" />
</StackPanel>
</Button.Content>
</Button> </Button>
<ScrollViewer Grid.Row="1"> <ScrollViewer Grid.Row="1">
@ -51,23 +57,22 @@
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Expander Header="{Binding Title}" Margin="16, 8" HorizontalAlignment="Stretch"> <Expander Header="{Binding Title}" Margin="16, 8" HorizontalAlignment="Stretch">
<Grid> <StackPanel Orientation="Vertical">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical">
<Label Content="{Binding Id, StringFormat='ID: {0}'}" /> <Label Content="{Binding Id, StringFormat='ID: {0}'}" />
<Label Content="{Binding InstalledAt, StringFormat='Installed: {0}'}" /> <Label Content="{Binding InstalledAt, StringFormat='Installed: {0}'}" />
<StackPanel Orientation="Horizontal" Spacing="8">
<Button Name="LaunchServerButton" Click="OnLaunchServerClick"
Content="{x:Static lang:Resources.LaunchServer}" />
<Button Name="LaunchPcAdminButton" Click="OnLaunchAdminClick"
Content="{x:Static lang:Resources.LaunchPCAdmin}" />
<Button Name="InstallVrClientButton"
Content="{x:Static lang:Resources.InstallVRClient}" />
<Button Name="InstallAndroidAdminButton"
Content="{x:Static lang:Resources.InstallAndroidAdmin}" />
<Button Name="DeleteButton" Click="OnDeleteInstallationClick"
Content="{x:Static lang:Resources.Delete}" />
</StackPanel> </StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical">
<Button Name="LaunchServerButton" Click="OnLaunchServerClick">Launch server</Button>
<Button Name="LaunchPcAdminButton" Click="OnLaunchAdminClick">Launch PC admin</Button>
<Button Name="InstallVrClientButton">Install VR client</Button>
<Button Name="InstallAndroidAdminButton">Install Android admin</Button>
<Button Name="DeleteButton" Click="OnDeleteInstallationClick">Delete</Button>
</StackPanel> </StackPanel>
</Grid>
</Expander> </Expander>
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>

View file

@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:lang="clr-namespace:MetaforceInstaller.UI.Lang"
mc:Ignorable="d" d:DesignWidth="200" d:DesignHeight="400" mc:Ignorable="d" d:DesignWidth="200" d:DesignHeight="400"
x:Class="MetaforceInstaller.UI.Windows.NewInstallationDialog" x:Class="MetaforceInstaller.UI.Windows.NewInstallationDialog"
Title="MetaforceInstaller - Add new installation" Title="MetaforceInstaller - Add new installation"
@ -9,17 +10,17 @@
CanResize="False"> CanResize="False">
<StackPanel Margin="24" Spacing="12"> <StackPanel Margin="24" Spacing="12">
<Label FontSize="36">Add new installation</Label> <Label FontSize="36" Content="{x:Static lang:Resources.AddInstallation}" />
<TextBox Name="TitleTextBox" Watermark="Name of new installation"/> <TextBox Name="TitleTextBox" Watermark="{x:Static lang:Resources.NameOfNewInstallation}" />
<Button Name="ChooseZip">Choose .zip with installation</Button> <Button Name="ChooseZip" Content="{x:Static lang:Resources.ChooseZip}" />
<CheckBox Name="ServerCheckBox">Install server</CheckBox> <CheckBox Name="ServerCheckBox" Content="{x:Static lang:Resources.InstallServerCheckbox}" />
<CheckBox Name="PcAdminCheckBox">Install admin</CheckBox> <CheckBox Name="PcAdminCheckBox" Content="{x:Static lang:Resources.InstallAdminCheckbox}" />
<CheckBox Name="AndroidAdminCheckbox">Save android admin</CheckBox> <CheckBox Name="AndroidAdminCheckbox" Content="{x:Static lang:Resources.SaveAndroidAdminCheckbox}" />
<CheckBox Name="VrClientCheckbox">Save VR client</CheckBox> <CheckBox Name="VrClientCheckbox" Content="{x:Static lang:Resources.SaveVRClientCheckbox}" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Spacing="8"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Spacing="8">
<Button Name="InstallButton">Install</Button> <Button Name="InstallButton" Content="{x:Static lang:Resources.InstallButton}" />
<Button Name="CancelButton">Cancel</Button> <Button Name="CancelButton" Content="{x:Static lang:Resources.CancelButton}" />
</StackPanel> </StackPanel>
<ProgressBar Name="ProgressBar" Minimum="0" Maximum="100" Value="0" /> <ProgressBar Name="ProgressBar" Minimum="0" Maximum="100" Value="0" />
</StackPanel> </StackPanel>

View file

@ -39,13 +39,13 @@ public partial class NewInstallationDialog : Window
var pcAdminCheckbox = PcAdminCheckBox; var pcAdminCheckbox = PcAdminCheckBox;
var androidAdminCheckbox = AndroidAdminCheckbox; var androidAdminCheckbox = AndroidAdminCheckbox;
var vrClientCheckbox = VrClientCheckbox; var vrClientCheckbox = VrClientCheckbox;
serverCheckbox.Content = TextDefaults.InstallServer; serverCheckbox.Content = Lang.Resources.InstallServerCheckbox;
serverCheckbox.IsEnabled = true; serverCheckbox.IsEnabled = true;
pcAdminCheckbox.Content = TextDefaults.InstallAdmin; pcAdminCheckbox.Content = Lang.Resources.InstallAdminCheckbox;
pcAdminCheckbox.IsEnabled = true; pcAdminCheckbox.IsEnabled = true;
androidAdminCheckbox.Content = TextDefaults.SaveAndroidAdmin; androidAdminCheckbox.Content = Lang.Resources.SaveAndroidAdminCheckbox;
androidAdminCheckbox.IsEnabled = true; androidAdminCheckbox.IsEnabled = true;
vrClientCheckbox.Content = TextDefaults.SaveVRClient; vrClientCheckbox.Content = Lang.Resources.SaveVRClientCheckbox;
vrClientCheckbox.IsEnabled = true; vrClientCheckbox.IsEnabled = true;
} }
@ -123,34 +123,34 @@ public partial class NewInstallationDialog : Window
if (string.IsNullOrEmpty(_installationParts.WindowsServerPath)) if (string.IsNullOrEmpty(_installationParts.WindowsServerPath))
{ {
serverCheckbox.IsEnabled = false; serverCheckbox.IsEnabled = false;
serverCheckbox.Content += "\nCouldn't find directory with server"; serverCheckbox.Content += $"\n{Lang.Resources.NoServerError}";
} }
if (string.IsNullOrEmpty(_installationParts.WindowsAdminPath)) if (string.IsNullOrEmpty(_installationParts.WindowsAdminPath))
{ {
pcAdminCheckbox.IsEnabled = false; pcAdminCheckbox.IsEnabled = false;
pcAdminCheckbox.Content += "\nCouldn't find directory with PC admin"; pcAdminCheckbox.Content += $"\n{Lang.Resources.NoPCAdminError}";
} }
if (string.IsNullOrEmpty(_installationParts.WindowsContentPath)) if (string.IsNullOrEmpty(_installationParts.WindowsContentPath))
{ {
pcAdminCheckbox.IsEnabled = false; pcAdminCheckbox.IsEnabled = false;
pcAdminCheckbox.Content += "\nCouldn't find windows content"; pcAdminCheckbox.Content += $"\n{Lang.Resources.NoWindowsContentError}";
} }
if (string.IsNullOrEmpty(_installationParts.AndroidContentPath)) if (string.IsNullOrEmpty(_installationParts.AndroidContentPath))
{ {
vrClientCheckbox.IsEnabled = false; vrClientCheckbox.IsEnabled = false;
vrClientCheckbox.Content += "\nCouldn't find android content"; vrClientCheckbox.Content += $"\n{Lang.Resources.NoAndroidContentError}";
androidAdminCheckbox.IsEnabled = false; androidAdminCheckbox.IsEnabled = false;
androidAdminCheckbox.Content += "\nCouldn't find android content"; androidAdminCheckbox.Content += $"\n{Lang.Resources.NoAndroidContentError}";
} }
if (string.IsNullOrEmpty(_installationParts.PicoClientPath) && if (string.IsNullOrEmpty(_installationParts.PicoClientPath) &&
string.IsNullOrEmpty(_installationParts.OculusClientPath)) string.IsNullOrEmpty(_installationParts.OculusClientPath))
{ {
vrClientCheckbox.IsEnabled = false; vrClientCheckbox.IsEnabled = false;
vrClientCheckbox.Content += "\nCouldn't find any VR clients"; vrClientCheckbox.Content += $"\n{Lang.Resources.NoVRClientsError}";
} }
InstallButton.IsEnabled = new List<CheckBox?> InstallButton.IsEnabled = new List<CheckBox?>