Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Localization of data annotations in separate class library

We are trying to implement localization for our domain models which are existing in a separate class library project within our solution. However, we are not able to get it working as our models data annotation attributes doesn't get translated at all.

Project structure

  • Solution
    • Web project
      • Resource folder (Contains .resx files. Ex. App.en.resx) Works fine
    • Class library
      • Domain models
      • Resource folder (Contains .resx files. Ex. App.en.resx) Doesn't work

Startup.cs

services.AddMvc()
     .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
     .AddDataAnnotationsLocalization();

Note

Localization works within the Web project, e.g it translates views, controllers. However, it doesn't work when we try to translate models which exists in a separate project.

// Regards

like image 711
Rovdjuret Avatar asked Sep 14 '25 02:09

Rovdjuret


1 Answers

There is no support to translate data annotations, views, controller etc that exists in a separate project for now without implementing it by yourself.

The solution is to write your own custom implementation using IStringLocalizer, IStringLocalizerFactory and register it in Startup.cs. See how StringLocalizer/Factory works.

FYI: The aspnet team that is working on Localizer is aware of this and is working on a solution to support this in the future. See aspnet/Localization

like image 125
Rovdjuret Avatar answered Sep 16 '25 16:09

Rovdjuret