diff options
-rw-r--r-- | src/Ryujinx.Ava/Common/Locale/LocaleManager.cs | 14 | ||||
-rw-r--r-- | src/Ryujinx.Ava/Ryujinx.Ava.csproj | 2 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Controls/ApplicationListView.axaml | 16 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Renderer/RendererHost.axaml | 9 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml | 3 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Views/Main/MainStatusBarView.axaml | 12 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Views/User/UserProfileImageSelectorView.axaml | 4 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Views/User/UserRecovererView.axaml | 4 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Windows/AboutWindow.axaml | 2 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Windows/AmiiboWindow.axaml | 2 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Windows/MainWindow.axaml | 6 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml | 3 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Windows/StyleableWindow.cs | 10 | ||||
-rw-r--r-- | src/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml | 2 |
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> |