Skip to content

Commit fd803ce

Browse files
authored
Merge pull request #3 from rasyidf/feature-lang
Version 0.5 Update
2 parents 161a64c + 8928625 commit fd803ce

26 files changed

+930
-390
lines changed

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019 Fahmi Rasyid
3+
Copyright (c) 2020 Fahmi Rasyid
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

Localization.Demo/App.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public partial class App : Application
1212
protected override void OnStartup(StartupEventArgs e)
1313
{
1414
base.OnStartup(e);
15-
LocalizationService.Current.Register("Languages","en-US");
15+
LanguageService.Current.Initialize();
1616

1717
}
1818

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
{
2+
"AppId": "",
3+
"Version": "0.5",
4+
"Type": "Multi",
5+
"Author": "Rasyid",
6+
"Languages": [
7+
{
8+
"EnglishName": "English",
9+
"CultureName": "United Kingdom",
10+
"Culture": "en-GB",
11+
"RTL" : "false"
12+
},
13+
{
14+
"EnglishName": "Italian",
15+
"CultureName": "Italy",
16+
"Culture": "it-IT",
17+
"RTL": "false"
18+
}
19+
],
20+
21+
"Data": [
22+
{
23+
"data": [
24+
{
25+
"Id": 0,
26+
"Title": {
27+
"en-GB": "Demo Window",
28+
"it-IT": "Demo Window"
29+
}
30+
},
31+
{
32+
"Id": 11,
33+
"Header": {
34+
"en-GB": "File",
35+
"it-IT": "File"
36+
}
37+
},
38+
{
39+
"Id": 110,
40+
"Header": {
41+
"en-GB": "Quit",
42+
"it-IT": "Quit"
43+
}
44+
},
45+
{
46+
"Id": 12,
47+
"Header": {
48+
"en-GB": "Edit",
49+
"it-IT": "Edit"
50+
}
51+
},
52+
{
53+
"Id": 120,
54+
"Header": {
55+
"en-GB": "Cut",
56+
"it-IT": "Cut"
57+
}
58+
},
59+
{
60+
"Id": 121,
61+
"Header": {
62+
"en-GB": "Copy",
63+
"it-IT": "Copy"
64+
}
65+
},
66+
{
67+
"Id": 122,
68+
"Header": {
69+
"en-GB": "Paste",
70+
"it-IT": "Paste"
71+
}
72+
},
73+
{
74+
"Id": 123,
75+
"Header": {
76+
"en-GB": "Option",
77+
"it-IT": "Option"
78+
}
79+
},
80+
{
81+
"Id": 13,
82+
"Header": {
83+
"en-GB": "View",
84+
"it-IT": "View"
85+
}
86+
},
87+
{
88+
"Id": 130,
89+
"Header": {
90+
"en-GB": "Status Bar",
91+
"it-IT": "Status Bar"
92+
}
93+
},
94+
{
95+
"Id": 14,
96+
"Header": {
97+
"en-GB": "Language",
98+
"it-IT": "Language"
99+
}
100+
},
101+
{
102+
"Id": 15,
103+
"Header": {
104+
"en-GB": "Help",
105+
"it-IT": "Help"
106+
}
107+
},
108+
{
109+
"Id": 150,
110+
"Header": {
111+
"en-GB": "About",
112+
"it-IT": "About"
113+
}
114+
},
115+
{
116+
"Id": 21,
117+
"Text": {
118+
"en-GB": "This is rasyidf.localize demo program",
119+
"it-IT": "This is rasyidf.localize demo program"
120+
}
121+
},
122+
{
123+
"Id": 22,
124+
"Text": {
125+
"en-GB": "Select your language:",
126+
"it-IT": "Select your language:"
127+
}
128+
},
129+
{
130+
"Id": 24,
131+
"Text": {
132+
"en-GB": "Languages :",
133+
"it-IT": "Languages :"
134+
}
135+
},
136+
{
137+
"Id": 510,
138+
"Content": {
139+
"en-GB": "Hello",
140+
"it-IT": "Hello"
141+
}
142+
},
143+
{
144+
"Id": 511,
145+
"Header": {
146+
"en-GB": "Hello World",
147+
"it-IT": "Hello World"
148+
},
149+
"Text": {
150+
"en-GB": "this is a message",
151+
"it-IT": "this is a message"
152+
}
153+
}
154+
]
155+
}
156+
]
157+
}

Localization.Demo/Languages/de-DE.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8" ?>
2-
<Pack EnglishName="German" CultureName="Deutsch" Culture="de-DE">
2+
<Pack AppId="LOCADEMO" version="0.5" Author="Rasyid" EnglishName="German" CultureName="Deutsch" Culture="de-DE">
33
<Value Id="0" Title="Demo Window" />
44
<Value Id="11" Header="Datei" />
55
<Value Id="110" Header="Beenden" />

Localization.Demo/Languages/en-US.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8" ?>
2-
<Pack EnglishName="English" CultureName="English" Culture="en-US">
2+
<Pack AppId="LOCADEMO" version="0.5" Author="Rasyid" EnglishName="English" CultureName="English" Culture="en-US">
33
<Value Id="0" Title="Demo Window" />
44
<Value Id="11" Header="File" />
55
<Value Id="110" Header="Exit" />

Localization.Demo/Languages/id-ID.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8" ?>
2-
<Pack EnglishName="Indonesian" CultureName="Bahasa Indonesia" Culture="id-ID">
2+
<Pack AppId="LOCADEMO" version="0.4" Author="Rasyid" EnglishName="Indonesian" CultureName="Bahasa Indonesia" Culture="id-ID">
33
<Value Id="0" Title="Jendela Demonstrasi" />
44
<Value Id="11" Header="Berkas" />
55
<Value Id="110" Header="Keluar" />

Localization.Demo/Languages/jv-Latn-ID.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
2+
"AppId" : "Demo",
3+
"Version" : "0.4",
4+
"Type" : "Single",
5+
"Author" : "Rasyid",
26
"EnglishName": "Javanese",
37
"CultureName": "Basa Jawa",
48
"Culture": "jv-Latn-ID",

Localization.Demo/Rasyidf.Localization.Demo.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@
9191
<Generator>ResXFileCodeGenerator</Generator>
9292
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
9393
</EmbeddedResource>
94+
<None Include="Languages\It-De.json">
95+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
96+
</None>
9497
<None Include="Properties\Settings.settings">
9598
<Generator>SettingsSingleFileGenerator</Generator>
9699
<LastGenOutput>Settings.Designer.cs</LastGenOutput>

Localization.Demo/View/MainWindow.xaml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
xmlns:ul="clr-namespace:Rasyidf.Localization;assembly=Rasyidf.Localization"
99
x:Name="Root"
1010
x:Uid="Root"
11-
Width="321.899"
12-
Height="338.275"
11+
Width="432.425"
12+
Height="320.412"
1313
mc:Ignorable="d">
1414
<Window.DataContext>
1515
<demo:MainWindowViewModel />
@@ -21,12 +21,15 @@
2121
<Window.Resources>
2222
<DataTemplate x:Key="LanguageDictionaryItemTemplate">
2323
<TextBlock><Run Text="{Binding EnglishName, Mode=OneWay}" />
24-
(<Run Text="{Binding CultureName, Mode=OneWay}" />
25-
)</TextBlock>
24+
(<Run Text="{Binding CultureName, Mode=OneWay}" />)</TextBlock>
2625
</DataTemplate>
2726
</Window.Resources>
2827
<Grid>
29-
<Menu Height="19" VerticalAlignment="Top">
28+
<Grid.ColumnDefinitions>
29+
<ColumnDefinition Width="38*"/>
30+
<ColumnDefinition Width="5*"/>
31+
</Grid.ColumnDefinitions>
32+
<Menu Height="19" VerticalAlignment="Top" Grid.ColumnSpan="2">
3033
<MenuItem Header="{ul:Tr File, Uid=11}">
3134
<MenuItem Header="{ul:Tr Exit, Uid=110}" />
3235
</MenuItem>
@@ -57,7 +60,7 @@
5760
<TextBlock
5861
Margin="10,24,10,0"
5962
VerticalAlignment="Top"
60-
TextWrapping="Wrap">
63+
TextWrapping="Wrap" Grid.ColumnSpan="2" Height="16">
6164
<TextBlock.Text>
6265
<ul:Tr Uid="21" Default="This is Dynamic Language Demo" />
6366
</TextBlock.Text>
@@ -68,15 +71,13 @@
6871
VerticalAlignment="Top"
6972
Text="{ul:Tr 'Select Language :',
7073
Uid=22}"
71-
TextWrapping="Wrap" />
74+
TextWrapping="Wrap" Height="16" Width="92" />
7275
<ListBox
73-
Height="140"
74-
Margin="10,81,10,0"
75-
VerticalAlignment="Top"
76+
Margin="10,81,10,76"
7677
ItemTemplate="{DynamicResource LanguageDictionaryItemTemplate}"
7778
ItemsSource="{Binding Cultures}"
7879
SelectedItem="{Binding SelectedPack}" />
79-
<StatusBar Height="24" VerticalAlignment="Bottom">
80+
<StatusBar Height="24" VerticalAlignment="Bottom" Grid.ColumnSpan="2">
8081
<StatusBarItem Height="24" Width="100" VerticalAlignment="Top" >
8182
<TextBlock Text="{ul:Tr 'Languages',
8283
Uid=24}"/>
@@ -88,6 +89,6 @@
8889
Path="LanguageCount" />
8990
</StatusBarItem>
9091
</StatusBar>
91-
<Button Content="{ul:Tr Hallo, Uid=510}" Margin="73,0,0,29" Command="{Binding ShowMessageCommand}" VerticalAlignment="Bottom" Height="40" HorizontalAlignment="Left" Width="164"/>
92+
<Button Content="{ul:Tr Hallo, Uid=510}" Margin="10,0,0,29" Command="{Binding ShowMessageCommand}" VerticalAlignment="Bottom" Height="30" HorizontalAlignment="Left" Width="143"/>
9293
</Grid>
9394
</Window>

Localization.Demo/ViewModel/MainWindowViewModel.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,41 @@ internal class MainWindowViewModel : INotifyPropertyChanged
1212

1313
public MainWindowViewModel()
1414
{
15-
var a = LocalizationService.RegisteredPacks;
15+
var a = LanguageService.RegisteredPacks;
1616
var cultures = a.Keys;
1717
foreach (var culture in cultures)
1818
{
19-
var pack = BaseLanguagePack.GetResources(culture);
19+
var pack = LanguageItem.GetResources(culture);
2020
Cultures.Add(pack);
2121
CultureMenus.Add(new MenuItem() { Header= $"{pack.EnglishName} ({pack.CultureName})", Tag = pack });
2222
}
2323
}
2424

25-
private RelayCommand<BaseLanguagePack> _changeLanguageCommand;
26-
public RelayCommand<BaseLanguagePack> ChangeLanguageCommand => _changeLanguageCommand ?? (_changeLanguageCommand = new RelayCommand<BaseLanguagePack>(ChangeLanguage));
25+
private RelayCommand<LanguageItem> _changeLanguageCommand;
26+
public RelayCommand<LanguageItem> ChangeLanguageCommand => _changeLanguageCommand ?? (_changeLanguageCommand = new RelayCommand<LanguageItem>(ChangeLanguage));
27+
2728
private RelayCommand _showMessageCommand;
2829
public RelayCommand ShowMessageCommand => _showMessageCommand ?? (_showMessageCommand = new RelayCommand(ShowMessage));
2930

3031
private void ShowMessage(object obj)
3132
{
32-
MessageBox.Show(LocalizationService.GetString("511", "Text", "Message"),LocalizationService.GetString("511", "Header","Header"));
33+
MessageBox.Show(Application.Current.MainWindow,"511,Text".Localize() ,LanguageService.GetString("511", "Header","Header"));
3334
}
3435

35-
private void ChangeLanguage(BaseLanguagePack value)
36+
private void ChangeLanguage(LanguageItem value)
3637
{
3738
if (value != null)
3839
{
39-
LocalizationService.Current.ChangeLanguage(value);
40+
LanguageService.Current.ChangeLanguage(value);
4041
OnPropertyChanged(nameof(SelectedPack));
4142
}
4243
}
4344

44-
private ObservableCollection<BaseLanguagePack> _cultures = new ObservableCollection<BaseLanguagePack>();
45-
private BaseLanguagePack _selectedPack;
45+
private ObservableCollection<LanguageItem> _cultures = new ObservableCollection<LanguageItem>();
46+
private LanguageItem _selectedPack;
4647
private ObservableCollection<MenuItem> _cultureMenus = new ObservableCollection<MenuItem>();
4748

48-
public ObservableCollection<BaseLanguagePack> Cultures
49+
public ObservableCollection<LanguageItem> Cultures
4950
{
5051
get => _cultures; set
5152
{
@@ -63,13 +64,13 @@ public ObservableCollection<MenuItem> CultureMenus
6364
}
6465
public int LanguageCount => Cultures.Count;
6566

66-
public BaseLanguagePack SelectedPack
67+
public LanguageItem SelectedPack
6768
{
6869
get => _selectedPack;
6970
set
7071
{
7172
_selectedPack = value;
72-
LocalizationService.Current.ChangeLanguage(value);
73+
LanguageService.Current.ChangeLanguage(value);
7374
OnPropertyChanged(nameof(SelectedPack));
7475
}
7576
}

Localization.Demo/ViewModel/RelayCommand.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ public void Execute(object parameter)
3030
_execute(parameter);
3131
}
3232

33-
// Ensures WPF commanding infrastructure asks all RelayCommand objects whether their
34-
// associated views should be enabled whenever a command is invoked
33+
3534
public event EventHandler CanExecuteChanged
3635
{
3736
add

0 commit comments

Comments
 (0)