Skip to content

Commit 42cad4d

Browse files
Merge pull request #48 from AndrewKeepCoding/support-target-dp-in-uid
Support target DependencyProperty in Uids.Uid
2 parents b8fc0a9 + 31bba1b commit 42cad4d

File tree

7 files changed

+42
-27
lines changed

7 files changed

+42
-27
lines changed

WinUI3Localizer.SampleApp/MainWindow.xaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@
2525
Grid.Column="1"
2626
Margin="8,0,0,0"
2727
VerticalAlignment="Center"
28-
l:Uids.Uid="MainWindow_AppTitleBar"
28+
l:Uids.Uid="MainWindow_AppTitleBar.Text"
2929
FontSize="12"
30-
Text="WinUI 3 Localizer"
3130
TextWrapping="NoWrap" />
3231
</Grid>
3332
<!-- Shell -->

WinUI3Localizer.SampleApp/Strings/en-US/Resources.resw

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
<data name="MainPage" xml:space="preserve">
217217
<value>Main</value>
218218
</data>
219-
<data name="MainWindow_AppTitleBar.Text" xml:space="preserve">
219+
<data name="MainWindow_AppTitleBar" xml:space="preserve">
220220
<value>WinUI3Localizer Sample App😎</value>
221221
</data>
222222
<data name="MainWindow_en-US.Text" xml:space="preserve">

WinUI3Localizer.SampleApp/Strings/es-ES/Resources.resw

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
<data name="MainPage" xml:space="preserve">
217217
<value>Principal</value>
218218
</data>
219-
<data name="MainWindow_AppTitleBar.Text" xml:space="preserve">
219+
<data name="MainWindow_AppTitleBar" xml:space="preserve">
220220
<value>WinUI3Localizer App de Muestra😎</value>
221221
</data>
222222
<data name="MainWindow_en-US.Text" xml:space="preserve">

WinUI3Localizer.SampleApp/Strings/ja/Resources.resw

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
<data name="MainPage" xml:space="preserve">
217217
<value>メイン</value>
218218
</data>
219-
<data name="MainWindow_AppTitleBar.Text" xml:space="preserve">
219+
<data name="MainWindow_AppTitleBar" xml:space="preserve">
220220
<value>WinUI3Localizer サンプルアプリ 😎</value>
221221
</data>
222222
<data name="MainWindow_en-US.Text" xml:space="preserve">

WinUI3Localizer.SampleApp/WinUI3Localizer.SampleApp.csproj

+9-11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputType>WinExe</OutputType>
44
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
@@ -17,6 +17,7 @@
1717
<WindowsPackageType>None</WindowsPackageType>
1818
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
1919
-->
20+
<WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>
2021
</PropertyGroup>
2122

2223
<ItemGroup>
@@ -43,26 +44,23 @@
4344

4445
<ItemGroup>
4546
<PackageReference Include="ColorCode.WinUI" Version="2.0.15" />
46-
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
47+
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.1" />
4748
<PackageReference Include="CommunityToolkit.WinUI.UI.Controls.DataGrid" Version="7.1.2" />
4849
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
4950
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
5051
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
5152
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
52-
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240428000" />
53-
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.3233" />
54-
<PackageReference Include="Serilog" Version="3.1.1" />
53+
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.6.240829007" />
54+
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1" />
55+
<PackageReference Include="Serilog" Version="4.0.1" />
5556
<PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0" />
5657
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" />
57-
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
58-
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
58+
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
59+
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
60+
<PackageReference Include="WinUI3Localizer" Version="2.3.0-alpha" />
5961
<Manifest Include="$(ApplicationManifest)" />
6062
</ItemGroup>
6163

62-
<ItemGroup>
63-
<ProjectReference Include="..\WinUI3Localizer\WinUI3Localizer.csproj" />
64-
</ItemGroup>
65-
6664
<!-- Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging Tools extension
6765
to be activated for this project even if the Windows App SDK Nuget package has not yet been restored -->
6866
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnablePreviewMsixTooling)'=='true'">

WinUI3Localizer/Localizer.cs

+28-10
Original file line numberDiff line numberDiff line change
@@ -294,27 +294,45 @@ private async Task LocalizeDependencyObjects()
294294

295295
private void LocalizeDependencyObject(DependencyObject dependencyObject)
296296
{
297-
if (Uids.GetUid(dependencyObject) is string uid &&
298-
CurrentDictionary.TryGetItems(uid, out LanguageDictionary.Items? items) is true)
297+
if (Uids.GetUid(dependencyObject) is not string uidSource ||
298+
string.IsNullOrEmpty(uidSource) is true)
299299
{
300-
foreach (LanguageDictionary.Item item in items)
301-
{
302-
LocalizeDependencyObject(dependencyObject, item);
303-
}
300+
Logger.LogWarning("DependencyObject does not have Uid. [Type: {Type}]", dependencyObject.GetType());
301+
return;
302+
}
303+
304+
string uid = uidSource;
305+
string? uidDependencyPropertyName = null;
306+
307+
if (uidSource.Split('.') is { Length: 2 } splitResult)
308+
{
309+
uid = splitResult[0];
310+
uidDependencyPropertyName = splitResult[1] + "Property";
311+
}
312+
313+
if (CurrentDictionary.TryGetItems(uid, out LanguageDictionary.Items? items) is false)
314+
{
315+
Logger.LogWarning("DependencyObject does not have Uid in the dictionary. [Type: {Type} Uid: {Uid}]", dependencyObject.GetType(), uid);
316+
return;
317+
}
318+
319+
foreach (LanguageDictionary.Item item in items)
320+
{
321+
LocalizeDependencyObject(dependencyObject, uidDependencyPropertyName ?? item.DependencyPropertyName, item.Value);
304322
}
305323
}
306324

307-
private void LocalizeDependencyObject(DependencyObject dependencyObject, LanguageDictionary.Item item)
325+
private void LocalizeDependencyObject(DependencyObject dependencyObject, string dependencyPropertyName, string value)
308326
{
309327
if (GetDependencyProperty(
310328
dependencyObject,
311-
item.DependencyPropertyName) is DependencyProperty dependencyProperty)
329+
dependencyPropertyName) is DependencyProperty dependencyProperty)
312330
{
313-
LocalizeDependencyObjectsWithDependencyProperty(dependencyObject, dependencyProperty, item.Value);
331+
LocalizeDependencyObjectsWithDependencyProperty(dependencyObject, dependencyProperty, value);
314332
return;
315333
}
316334

317-
LocalizeDependencyObjectsWithoutDependencyProperty(dependencyObject, item.Value);
335+
LocalizeDependencyObjectsWithoutDependencyProperty(dependencyObject, value);
318336
}
319337

320338
private void LocalizeDependencyObjectsWithDependencyProperty(DependencyObject dependencyObject, DependencyProperty dependencyProperty, string value)

WinUI3Localizer/WinUI3Localizer.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
- You/users can add new languages even after deployment
1818
- Use standard Resources.resw
1919
</Description>
20-
<Version>2.2.0</Version>
20+
<Version>2.3.0-alpha</Version>
2121
<PackageTags>winui3;winappsdk;localization;localize;language;multilanguage</PackageTags>
2222
<PackageProjectUrl>https://github.com/AndrewKeepCoding/WinUI3Localizer</PackageProjectUrl>
2323
<RepositoryUrl>https://github.com/AndrewKeepCoding/WinUI3Localizer</RepositoryUrl>

0 commit comments

Comments
 (0)