TedToolkit.Localizations
2026.4.8
dotnet add package TedToolkit.Localizations --version 2026.4.8
NuGet\Install-Package TedToolkit.Localizations -Version 2026.4.8
<PackageReference Include="TedToolkit.Localizations" Version="2026.4.8" />
<PackageVersion Include="TedToolkit.Localizations" Version="2026.4.8" />
<PackageReference Include="TedToolkit.Localizations" />
paket add TedToolkit.Localizations --version 2026.4.8
#r "nuget: TedToolkit.Localizations, 2026.4.8"
#:package TedToolkit.Localizations@2026.4.8
#addin nuget:?package=TedToolkit.Localizations&version=2026.4.8
#tool nuget:?package=TedToolkit.Localizations&version=2026.4.8
TedToolkit.Localizations
A compile-time localization framework for .NET that generates strongly-typed C# classes from JSON translation files using a Roslyn incremental source generator.
Features
- Strongly-typed access — localization keys become properties and methods, verified at compile time
- Multi-culture support — define translations in culture-specific JSON files with automatic fallback
- Parameter interpolation — use
{{placeholder}}syntax for dynamic values in localized strings - XML documentation — generated members include docs showing all available translations per key
- Runtime overrides — dynamically override translations via
LocalizationSettings.LocalizedStrings - Culture change notifications — subscribe to
LocalizationSettings.OnCultureChangedto react to culture switches - Wide framework support — targets .NET 6–10, .NET Framework 4.7.2+, and .NET Standard 2.0/2.1
Installation
dotnet add package TedToolkit.Localizations
Quick Start
1. Create JSON translation files
Create a base translation file (default/fallback language):
Localizations/Localization.json
{
"Hello": "Nice to meet '{{You}}'!",
"Sub": {
"Nice": "Great!\nThanks!"
}
}
Add culture-specific translations by appending the culture code before .json:
Localizations/Localization.zh-CN.json
{
"Hello": "你好啊,{{You}}!",
"Sub": {
"Nice": "太棒了!\n感谢!"
}
}
2. Register the JSON files as AdditionalFiles
In your .csproj:
<ItemGroup>
<AdditionalFiles Include="Localizations\Localization*.json" />
</ItemGroup>
3. Use the generated code
using TedToolkit.Localizations;
using YourAssemblyName; // generated Localization class uses your assembly name as namespace
// Access localized strings — strongly typed!
Console.WriteLine(Localization.Hello("Ted")); // "Nice to meet 'Ted'!"
Console.WriteLine(Localization.Sub.Nice); // "Great!\nThanks!"
// Switch culture at runtime
LocalizationSettings.Culture = "zh-CN";
Console.WriteLine(Localization.Hello("秋水")); // "你好啊,秋水!"
Console.WriteLine(Localization.Sub.Nice); // "太棒了!\n感谢!"
How It Works
The source generator reads all Localization*.json files at compile time and produces a static Localization class:
- Simple strings become
static stringproperties with[MethodImpl(AggressiveInlining)] - Parameterized strings (containing
{{param}}) becomestatic stringmethods with typed parameters - Nested JSON objects become nested static classes (e.g.,
Localization.Sub.Nice) - Culture resolution uses a
switchonLocalizationSettings.Culturefor each key, falling back to the default translation
JSON File Format
| File Pattern | Purpose |
|---|---|
Localization.json |
Base/default translations (required) |
Localization.{culture}.json |
Culture-specific translations (e.g., zh-CN, fr-FR, ja-JP) |
Supported value types
- Plain string — generates a read-only property
- String with
{{parameters}}— generates a method withstringparameters - Nested object — generates a nested static class
Runtime API
LocalizationSettings
| Member | Description |
|---|---|
Culture |
Gets or sets the current culture code. Defaults to CultureInfo.CurrentCulture.Name. |
LocalizedStrings |
A Dictionary<string, string> for runtime translation overrides (keyed by dot-separated path, e.g., "Sub.Nice"). |
OnCultureChanged |
An Action<string> event raised when Culture is set. |
License
LGPL-3.0. See COPYING and COPYING.LESSER for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- No dependencies.
-
.NETFramework 4.8
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
-
net10.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on TedToolkit.Localizations:
| Package | Downloads |
|---|---|
|
TedToolkit.Assertions
Some amazing assertion. |
|
|
TedToolkit.InterpolatedParser
Interpolated Parser |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.4.8 | 53 | 4/8/2026 |
| 2026.2.1.2 | 756 | 2/1/2026 |
| 2026.2.1.1 | 121 | 2/1/2026 |
| 2026.2.1 | 96 | 2/1/2026 |
| 2026.1.30 | 97 | 1/30/2026 |
| 2026.1.29 | 101 | 1/29/2026 |