aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Ryujinx.Ava/Common/Locale/LocaleManager.cs14
-rw-r--r--src/Ryujinx.Ava/Ryujinx.Ava.csproj2
-rw-r--r--src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml16
-rw-r--r--src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml9
-rw-r--r--src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml3
-rw-r--r--src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml12
-rw-r--r--src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml4
-rw-r--r--src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml4
-rw-r--r--src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml2
-rw-r--r--src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml2
-rw-r--r--src/Ryujinx.Ava/UI/Windows/MainWindow.axaml6
-rw-r--r--src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml3
-rw-r--r--src/Ryujinx.Ava/UI/Windows/StyleableWindow.cs10
-rw-r--r--src/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml2
14 files changed, 60 insertions, 29 deletions
diff --git a/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs b/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs
index 64f3a7e8..0e613838 100644
--- a/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs
+++ b/src/Ryujinx.Ava/Common/Locale/LocaleManager.cs
@@ -16,8 +16,10 @@ namespace Ryujinx.Ava.Common.Locale
private readonly Dictionary<LocaleKeys, string> _localeStrings;
private Dictionary<LocaleKeys, string> _localeDefaultStrings;
private readonly ConcurrentDictionary<LocaleKeys, object[]> _dynamicValues;
+ private string _localeLanguageCode;
public static LocaleManager Instance { get; } = new();
+ public event Action LocaleChanged;
public LocaleManager()
{
@@ -104,6 +106,15 @@ namespace Ryujinx.Ava.Common.Locale
}
}
+ public bool IsRTL()
+ {
+ return _localeLanguageCode switch
+ {
+ "he_IL" => true,
+ _ => false
+ };
+ }
+
public string UpdateAndGetDynamicValue(LocaleKeys key, params object[] values)
{
_dynamicValues[key] = values;
@@ -124,6 +135,9 @@ namespace Ryujinx.Ava.Common.Locale
{
this[item.Key] = item.Value;
}
+
+ _localeLanguageCode = languageCode;
+ LocaleChanged?.Invoke();
}
private static Dictionary<LocaleKeys, string> LoadJsonLanguage(string languageCode = DefaultLanguageCode)
diff --git a/src/Ryujinx.Ava/Ryujinx.Ava.csproj b/src/Ryujinx.Ava/Ryujinx.Ava.csproj
index 054a5c7f..b6d37a2f 100644
--- a/src/Ryujinx.Ava/Ryujinx.Ava.csproj
+++ b/src/Ryujinx.Ava/Ryujinx.Ava.csproj
@@ -119,6 +119,7 @@
<None Remove="Assets\Locales\en_US.json" />
<None Remove="Assets\Locales\es_ES.json" />
<None Remove="Assets\Locales\fr_FR.json" />
+ <None Remove="Assets\Locales\he_IL.json" />
<None Remove="Assets\Locales\de_DE.json" />
<None Remove="Assets\Locales\it_IT.json" />
<None Remove="Assets\Locales\ja_JP.json" />
@@ -143,6 +144,7 @@
<EmbeddedResource Include="Assets\Locales\en_US.json" />
<EmbeddedResource Include="Assets\Locales\es_ES.json" />
<EmbeddedResource Include="Assets\Locales\fr_FR.json" />
+ <EmbeddedResource Include="Assets\Locales\he_IL.json" />
<EmbeddedResource Include="Assets\Locales\de_DE.json" />
<EmbeddedResource Include="Assets\Locales\it_IT.json" />
<EmbeddedResource Include="Assets\Locales\ja_JP.json" />
diff --git a/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml b/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml
index 9004f751..fecf0888 100644
--- a/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml
+++ b/src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml
@@ -86,17 +86,17 @@
HorizontalAlignment="Stretch"
FontWeight="Bold"
Text="{Binding TitleName}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding Developer}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding Version}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
</StackPanel>
</Border>
@@ -110,12 +110,12 @@
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding TitleId}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding FileExtension}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
</StackPanel>
<StackPanel
@@ -127,17 +127,17 @@
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding TimePlayedString}"
- TextAlignment="Right"
+ TextAlignment="End"
TextWrapping="Wrap" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding LastPlayedString, Converter={helpers:LocalizedNeverConverter}}"
- TextAlignment="Right"
+ TextAlignment="End"
TextWrapping="Wrap" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding FileSizeString}"
- TextAlignment="Right"
+ TextAlignment="End"
TextWrapping="Wrap" />
</StackPanel>
<ui:SymbolIcon
diff --git a/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml b/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml
index bb96b10d..e0b586b4 100644
--- a/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml
+++ b/src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml
@@ -1,11 +1,12 @@
-<UserControl
+<UserControl
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
- d:DesignWidth="800"
+ mc:Ignorable="d"
+ d:DesignWidth="800"
d:DesignHeight="450"
x:Class="Ryujinx.Ava.UI.Renderer.RendererHost"
+ FlowDirection="LeftToRight"
Focusable="True">
-</UserControl> \ No newline at end of file
+</UserControl>
diff --git a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml
index d636873a..99f2b6b6 100644
--- a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml
@@ -101,7 +101,7 @@
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
SelectedIndex="0"
- ItemsSource="{Binding ProfilesList}"
+ ItemsSource="{Binding ProfilesList}"
Text="{Binding ProfileName, Mode=TwoWay}" />
<Button
Grid.Column="2"
@@ -218,6 +218,7 @@
<Grid
Name="SettingButtons"
MinHeight="450"
+ FlowDirection="LeftToRight"
IsVisible="{Binding ShowSettings}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
diff --git a/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml b/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml
index 01133a4b..f9e192e6 100644
--- a/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml
@@ -88,7 +88,7 @@
IsVisible="{Binding !ShowLoadProgress}"
PointerReleased="VsyncStatus_PointerReleased"
Text="VSync"
- TextAlignment="Left" />
+ TextAlignment="Start" />
<Border
Width="2"
Height="12"
@@ -105,7 +105,7 @@
IsVisible="{Binding !ShowLoadProgress}"
PointerReleased="DockedStatus_PointerReleased"
Text="{Binding DockedStatusText}"
- TextAlignment="Left" />
+ TextAlignment="Start" />
<Border
Width="2"
Height="12"
@@ -225,7 +225,7 @@
VerticalAlignment="Center"
IsVisible="{Binding !ShowLoadProgress}"
Text="{Binding GameStatusText}"
- TextAlignment="Left" />
+ TextAlignment="Start" />
<Border
Width="2"
Height="12"
@@ -240,7 +240,7 @@
VerticalAlignment="Center"
IsVisible="{Binding !ShowLoadProgress}"
Text="{Binding FifoStatusText}"
- TextAlignment="Left" />
+ TextAlignment="Start" />
<Border
Width="2"
Height="12"
@@ -255,7 +255,7 @@
VerticalAlignment="Center"
IsVisible="{Binding !ShowLoadProgress}"
Text="{Binding BackendText}"
- TextAlignment="Left" />
+ TextAlignment="Start" />
<Border
Width="2"
Height="12"
@@ -270,7 +270,7 @@
VerticalAlignment="Center"
IsVisible="{Binding !ShowLoadProgress}"
Text="{Binding GpuNameText}"
- TextAlignment="Left" />
+ TextAlignment="Start" />
</StackPanel>
<StackPanel
Grid.Column="3"
diff --git a/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml
index 65fbd443..b1786430 100644
--- a/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml
@@ -27,7 +27,7 @@
Grid.Row="0"
TextWrapping="Wrap"
HorizontalAlignment="Left"
- TextAlignment="Left"
+ TextAlignment="Start"
Text="{locale:Locale ProfileImageSelectionNote}" />
<StackPanel
Grid.Row="2"
@@ -59,4 +59,4 @@
</Button>
</StackPanel>
</Grid>
-</UserControl> \ No newline at end of file
+</UserControl>
diff --git a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml b/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml
index debf4b84..3fdb4ab9 100644
--- a/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml
+++ b/src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml
@@ -49,7 +49,7 @@
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding UserId}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap" />
<Button Grid.Column="1"
HorizontalAlignment="Right"
@@ -79,4 +79,4 @@
</Button>
</StackPanel>
</Grid>
-</UserControl> \ No newline at end of file
+</UserControl>
diff --git a/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml b/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml
index a8fd11b2..a0fd2a1a 100644
--- a/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml
@@ -238,7 +238,7 @@
<TextBlock
FontSize="10"
Text="{locale:Locale AboutRyujinxContributorsButtonHeader}"
- TextAlignment="Right"
+ TextAlignment="End"
ToolTip.Tip="{locale:Locale AboutRyujinxMaintainersContentTooltipMessage}" />
</Button>
</StackPanel>
diff --git a/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml b/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml
index caf7c1f3..c587aa87 100644
--- a/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml
@@ -72,4 +72,4 @@
Click="CancelButton_Click" />
</Grid>
</Grid>
-</window:StyleableWindow> \ No newline at end of file
+</window:StyleableWindow>
diff --git a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml
index 0d9a5949..4def7c28 100644
--- a/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/MainWindow.axaml
@@ -158,7 +158,7 @@
FontWeight="Bold"
IsVisible="{Binding ShowLoadProgress}"
Text="{Binding LoadHeading}"
- TextAlignment="Left"
+ TextAlignment="Start"
TextWrapping="Wrap"
MaxWidth="500" />
<Border
@@ -192,7 +192,7 @@
FontSize="18"
IsVisible="{Binding ShowLoadProgress}"
Text="{Binding CacheLoadStatus}"
- TextAlignment="Left"
+ TextAlignment="Start"
MaxWidth="500" />
</Grid>
</Grid>
@@ -202,4 +202,4 @@
Grid.Row="2" />
</Grid>
</Grid>
-</window:StyleableWindow> \ No newline at end of file
+</window:StyleableWindow>
diff --git a/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml b/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
index a0a75f61..40cac90d 100644
--- a/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
@@ -101,6 +101,9 @@
<Style Selector="Grid#PlaceholderGrid">
<Setter Property="Height" Value="40" />
</Style>
+ <Style Selector="ui|NavigationViewItem ui|SymbolIcon">
+ <Setter Property="FlowDirection" Value="LeftToRight" />
+ </Style>
</ui:NavigationView.Styles>
</ui:NavigationView>
<ReversibleStackPanel
diff --git a/src/Ryujinx.Ava/UI/Windows/StyleableWindow.cs b/src/Ryujinx.Ava/UI/Windows/StyleableWindow.cs
index 84b53035..3cd12bc8 100644
--- a/src/Ryujinx.Ava/UI/Windows/StyleableWindow.cs
+++ b/src/Ryujinx.Ava/UI/Windows/StyleableWindow.cs
@@ -1,7 +1,9 @@
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
+using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
+using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ui.Common.Configuration;
using System.IO;
using System.Reflection;
@@ -22,6 +24,14 @@ namespace Ryujinx.Ava.UI.Windows
Icon = new WindowIcon(stream);
stream.Position = 0;
IconImage = new Bitmap(stream);
+
+ LocaleManager.Instance.LocaleChanged += LocaleChanged;
+ LocaleChanged();
+ }
+
+ private void LocaleChanged()
+ {
+ FlowDirection = LocaleManager.Instance.IsRTL() ? FlowDirection.RightToLeft : FlowDirection.LeftToRight;
}
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
diff --git a/src/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml b/src/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml
index 78fc6b28..3eff389f 100644
--- a/src/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml
+++ b/src/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml
@@ -130,4 +130,4 @@
</StackPanel>
</Panel>
</Grid>
-</UserControl> \ No newline at end of file
+</UserControl>