radj307.Localization.WPF
0.3.1
See the version list below for details.
dotnet add package radj307.Localization.WPF --version 0.3.1
NuGet\Install-Package radj307.Localization.WPF -Version 0.3.1
<PackageReference Include="radj307.Localization.WPF" Version="0.3.1" />
paket add radj307.Localization.WPF --version 0.3.1
#r "nuget: radj307.Localization.WPF, 0.3.1"
// Install radj307.Localization.WPF as a Cake Addin #addin nuget:?package=radj307.Localization.WPF&version=0.3.1 // Install radj307.Localization.WPF as a Cake Tool #tool nuget:?package=radj307.Localization.WPF&version=0.3.1
radj307.Localization
Easy to use localization libraries for C# & WPF.
Loosely based on CodingSeb.Localization, but is capable of both reading and writing translation config files.
Nuget | Version |
---|---|
radj307.Localization | |
radj307.Localization.WPF | |
radj307.Localization.Json | |
radj307.Localization.Yaml | |
radj307.Localization.Xml |
Packages
The library's functionality is divided between packages, allowing you to only install what you need.
- radj307.Localization
Contains the core library, theLoc
class, and the translation functionality. - radj307.Localization.WPF
Contains theTr
markup extension and some binding converters.
The provided markup extension allows you to swap languages at runtime without any additional code. - radj307.Localization.Json
Contains the default serializer/deserializer for JSON translation config files. - radj307.Localization.Yaml
Contains the default serializer/deserializer for YAML translation config files. - radj307.Localization.Xml
Contains the default serializer/deserializer for XML translation config files.
Basic Usage
C#
using Localization;
Loc.Instance.CurrentLanguageName = "English";
Loc.Instance.Translate("MainWindow.Text"); //< "Hello World!"
Loc.Instance.CurrentLanguageName = "French";
Loc.Instance.Translate("MainWindow.Text"); //< "Salut tout le monde!"
// Loc.Tr is equivalent to Loc.Instance.Translate
Loc.Tr("This.Key.Does.Not.Exist", defaultText: "Default Text!"); //< "Default Text!"
XAML
No xmlns
declaration is required, the Tr
markup extension is available globally.
<TextBlock Text="{Tr 'MainWindow.Text'}" />
<TextBlock Text="{Tr 'MainWindow.Text', DefaultText='(Translation Not Provided)'}" />
<TextBlock Text="{Tr {Binding MyProperty},
FormatString='[1]: {0} {2}',
FormatArgs={MakeArray {Binding Header},
'\\'}}" />
Translation Config Files
Translation configs store the translated strings for your application. You can use any file
format or syntax you wish by writing an ITranslationLoader
implementation for it. Default
loader implementations are provided for JSON & YAML documents.
While it is recommended to keep languages separate for maintainability, there is nothing stopping you from saving multiple languages in the same file.
JSON
Syntax used by the JsonTranslationLoader
class:
{
"MainWindow": {
"Text": {
"English": "Hello World!",
"French": "Salut tout le monde!"
}
}
}
Alternative syntax used by the JsonSingleTranslationLoader
class:
{
"$LanguageName": "English",
"MainWindow": {
"Text": "Hello World!"
}
}
JsonSingleTranslationLoader
only supports 1 language per file, but the syntax is much easier to write.
YAML
Syntax used by the YamlTranslationLoader
class:
MainWindow:
Text:
English: "Hello World!"
French: "Salut tout le monde!"
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0-windows7.0 is compatible. net7.0-windows was computed. net8.0-windows was computed. |
-
net6.0-windows7.0
- radj307.Localization (>= 0.3.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on radj307.Localization.WPF:
Package | Downloads |
---|---|
VolumeControl.SDK
Official Addon SDK for the Volume Control application. |
GitHub repositories
This package is not used by any popular GitHub repositories.