Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ad1fdbe

Browse files
Resx Localization
1 parent 499a823 commit ad1fdbe

File tree

9 files changed

+5430
-991
lines changed

9 files changed

+5430
-991
lines changed

‎src/App.axaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
<ResourceInclude Source="/Resources/Icons.axaml"/>
1010
<ResourceInclude Source="/Resources/Themes.axaml"/>
1111
</ResourceDictionary.MergedDictionaries>
12-
13-
<ResourceInclude x:Key="en_US" Source="/Resources/Locales/en_US.axaml"/>
14-
<ResourceInclude x:Key="zh_CN" Source="/Resources/Locales/zh_CN.axaml"/>
1512
</ResourceDictionary>
1613
</Application.Resources>
1714

‎src/App.axaml.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
using Avalonia.Media.Fonts;
88
using Avalonia.Styling;
99
using System;
10+
using System.Globalization;
1011
using System.IO;
12+
using System.Linq;
1113
using System.Reflection;
1214
using System.Text;
15+
using System.Threading;
1316

1417
namespace SourceGit {
1518
public partial class App : Application {
@@ -70,7 +73,21 @@ public static void SendNotification(string context, string message) {
7073

7174
public static void SetLocale(string localeKey) {
7275
var app = Current as App;
73-
var targetLocale = app.Resources[localeKey] as ResourceDictionary;
76+
localeKey = localeKey.Replace("_", "-");
77+
78+
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(localeKey);
79+
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture ;
80+
Assets.Resources.Culture = Thread.CurrentThread.CurrentUICulture;
81+
82+
var locale = new ResourceDictionary();
83+
var res = new Assets.Resources();
84+
var props = typeof(Assets.Resources).GetProperties()
85+
.Where(m=> m.PropertyType == typeof(string))
86+
.ToDictionary(k=> k.Name.Replace("_", "."), v=> v.GetValue(res));
87+
foreach (var prop in props)
88+
locale.Add(prop.Key, prop.Value);
89+
90+
var targetLocale = locale;
7491
if (targetLocale == null || targetLocale == app._activeLocale) {
7592
return;
7693
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /