Xtensive.Orm.Localization
7.0.5
See the version list below for details.
dotnet add package Xtensive.Orm.Localization --version 7.0.5
NuGet\Install-Package Xtensive.Orm.Localization -Version 7.0.5
<PackageReference Include="Xtensive.Orm.Localization" Version="7.0.5" />
paket add Xtensive.Orm.Localization --version 7.0.5
#r "nuget: Xtensive.Orm.Localization, 7.0.5"
// Install Xtensive.Orm.Localization as a Cake Addin #addin nuget:?package=Xtensive.Orm.Localization&version=7.0.5 // Install Xtensive.Orm.Localization as a Cake Tool #tool nuget:?package=Xtensive.Orm.Localization&version=7.0.5
Xtensive.Orm.Localization
Summary
The extension transparently solves a task of application or service localization. This implies that localizable resources are a part of domain model so they are stored in database.
Prerequisites
DataObjects.Net 7.0.x or later (http://dataobjects.net)
Implementation
Implement ILocalizable<TLocalization> on your localizable entities, e.g.:
[HierarchyRoot]
public class Page : Entity, ILocalizable<PageLocalization>
{
[Field, Key]
public int Id { get; private set; }
// Localizable field. Note that it is non-persistent
public string Title
{
get { return Localizations.Current.Title; }
set { Localizations.Current.Title = value; }
}
[Field] // This is a storage of all localizations for Page class
public LocalizationSet<PageLocalization> Localizations { get; private set; }
public Page(Session session) : base(session) {}
}
Define corresponding localizations, e.g.:
[HierarchyRoot]
public class PageLocalization : Localization<Page>
{
[Field(Length = 100)]
public string Title { get; set; }
public PageLocalization(Session session, CultureInfo culture, Page target)
: base(session, culture, target) {}
}
Examples of usage
Example #1. Access localizable properties as regular ones, e.g.:
page.Title = "Welcome";
string title = page.Title;
Example #2. Mass editing of localizable properties:
var en = new CultureInfo("en-US");
var sp = new CultureInfo("es-ES");
var page = new Page(session);
page.Localizations[en].Title = "Welcome";
page.Localizations[sp].Title = "Bienvenido";
Example #3. Value of localizable properties reflects culture of the current Thread, e.g.:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
string title = page.Title; // title is "Welcome"
Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
string title = page.Title; // title is "Bienvenido"
Example #4. Instead of altering CurrentThread, instance of LocalizationScope can be used, e.g.:
using (new LocalizationScope(new CultureInfo("en-US"))) {
string title = page.Title; // title is "Welcome"
}
using (new LocalizationScope(new CultureInfo("es-ES"))) {
string title = page.Title; // title is "Bienvenido"
}
Example #5. LINQ queries that include localizable properties are transparently translated
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
var query = from p in session.Query.All<Page>()
where p.Title=="Welcome"
select p;
Assert.AreEqual(1, query.Count());
Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
var query = from p in session.Query.All<Page>()
where p.Title=="Bienvenido"
select p;
Assert.AreEqual(1, query.Count());
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Xtensive.Orm (>= 7.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
7.2.0-Beta-1 | 101 | 12/28/2023 |
7.1.2 | 107 | 10/18/2024 |
7.1.1 | 192 | 11/14/2023 |
7.1.0 | 327 | 4/12/2023 |
7.1.0-RC | 140 | 3/9/2023 |
7.1.0-Beta-2 | 209 | 12/19/2022 |
7.1.0-Beta-1 | 159 | 7/4/2022 |
7.0.5 | 110 | 6/3/2024 |
7.0.4 | 94 | 11/12/2023 |
7.0.3 | 512 | 3/21/2022 |
7.0.2 | 482 | 2/8/2022 |
7.0.1 | 357 | 10/29/2021 |
7.0.0 | 363 | 6/2/2021 |
6.0.13 | 128 | 4/4/2024 |
6.0.12 | 106 | 11/10/2023 |
6.0.11 | 305 | 1/12/2023 |
6.0.10 | 450 | 4/29/2022 |
6.0.9 | 496 | 2/2/2022 |
6.0.8 | 414 | 10/28/2021 |
6.0.7 | 372 | 8/27/2021 |
6.0.6 | 418 | 5/24/2021 |
6.0.5 | 441 | 3/9/2021 |
6.0.4 | 486 | 12/22/2020 |
6.0.3 | 499 | 9/29/2020 |
6.0.0 | 661 | 1/28/2020 |
5.1.0-Beta-1 | 1,035 | 1/30/2015 |
5.0.24 | 404 | 4/27/2021 |
5.0.23 | 413 | 2/4/2021 |
5.0.22 | 532 | 11/18/2020 |
5.0.21 | 517 | 11/6/2020 |
5.0.20 | 639 | 12/25/2019 |
5.0.19 | 647 | 5/30/2019 |
5.0.19-Beta-2 | 438 | 4/16/2019 |
5.0.19-Beta-1 | 524 | 12/29/2018 |
5.0.18 | 860 | 9/28/2018 |
5.0.18-Beta-3 | 764 | 7/2/2018 |
5.0.18-Beta-2 | 684 | 6/6/2018 |
5.0.18-Beta-1 | 759 | 4/24/2018 |
5.0.17 | 943 | 2/27/2018 |
5.0.17-Beta-3 | 685 | 2/12/2018 |
5.0.17-Beta-2 | 761 | 1/12/2018 |
5.0.17-Beta-1 | 773 | 12/28/2017 |
5.0.16 | 1,029 | 12/1/2017 |
5.0.16-Beta-1 | 717 | 9/27/2017 |
5.0.15 | 971 | 8/1/2017 |
5.0.14 | 1,019 | 6/19/2017 |
5.0.13 | 1,011 | 3/22/2017 |
5.0.12 | 1,008 | 2/14/2017 |
5.0.11 | 978 | 1/25/2017 |
5.0.11-RC2 | 803 | 12/16/2016 |
5.0.11-RC | 1,110 | 9/20/2016 |
5.0.10 | 1,063 | 8/5/2016 |
5.0.10-RC | 801 | 6/30/2016 |
5.0.9 | 1,144 | 3/3/2016 |
5.0.8 | 1,059 | 2/15/2016 |
5.0.7 | 1,060 | 1/27/2016 |
5.0.7-RC2 | 803 | 12/8/2015 |
5.0.7-RC | 864 | 9/10/2015 |
5.0.6 | 1,159 | 7/3/2015 |
5.0.5 | 1,229 | 4/23/2015 |
5.0.4 | 1,115 | 3/19/2015 |
5.0.4-RC | 1,279 | 2/25/2015 |
5.0.3 | 1,811 | 10/31/2014 |
5.0.2 | 1,115 | 9/11/2014 |
5.0.0 | 1,211 | 8/15/2014 |
5.0.0-RC2 | 927 | 8/1/2014 |
5.0.0-RC | 896 | 7/21/2014 |
5.0.0-Beta-3 | 873 | 5/28/2014 |
5.0.0-Beta-2 | 938 | 2/28/2014 |
5.0.0-Beta-1 | 962 | 11/14/2013 |
4.6.9 | 1,095 | 7/3/2015 |
4.6.8 | 1,139 | 8/1/2014 |
4.6.7 | 1,225 | 6/23/2014 |
4.6.6 | 1,364 | 4/9/2014 |
4.6.5 | 1,179 | 1/7/2014 |
4.6.4 | 1,330 | 9/30/2013 |
4.6.3 | 1,309 | 2/4/2013 |
4.6.2 | 1,456 | 11/28/2012 |
4.6.0 | 1,430 | 10/11/2012 |
4.6.0-RC | 1,096 | 10/4/2012 |
4.5.8 | 1,180 | 9/30/2013 |
4.5.7 | 1,300 | 2/4/2013 |
4.5.6 | 1,348 | 11/28/2012 |
4.5.5 | 1,380 | 10/11/2012 |
4.5.5-RC | 1,083 | 10/4/2012 |
4.5.3 | 1,380 | 8/6/2012 |
4.5.2 | 1,492 | 5/10/2012 |
4.5.0 | 1,427 | 3/13/2012 |