Multiple .resx files treated as separate languages instead of separate resource groups
Description
When a project contains multiple .resx files for different resource domains (e.g. CustomerResources.resx, SharedResources.resx, GlassResources.resx, QuoteResources.resx), the extension incorrectly treats each file as a separate language column instead of recognizing them as separate resource groups belonging to the same language.
Environment
- VS Code version: latest
- LRM extension version: latest
- Project type: ASP.NET Core Blazor with
IStringLocalizer
Resource folder structure
Resources/
CustomerResources.resx
GlassResources.resx
QuoteResources.resx
SharedResources.resx
Expected behavior
The Resource Editor should show one column per language, aggregating keys from all .resx files. The Dashboard should report correct coverage based on the actual number of languages (e.g. 1 language = 1 column).
Actual behavior
- The Resource Editor shows one column per
.resx file (4 files = 4 columns), all labeled it
- All columns show
(empty) for keys that exist in files other than the first one detected
- The Dashboard shows inflated metrics:
180% Avg Coverage, -32 Missing Translations, 8 Languages (instead of 1)
- Adding a new
.resx file adds a new column instead of extending the existing language
Steps to reproduce
- Create a project with multiple
.resx files for different resource domains (e.g. CustomerResources.resx, SharedResources.resx)
- Set
lrm.resourcePath to the resources folder
- Set
Default Language Code to it in LRM settings
- Open the LRM Dashboard and Resource Editor
- Observe that each
.resx file is shown as a separate language column
Additional context
This is a common pattern in ASP.NET Core projects using IStringLocalizer<T>, where resources are split by domain/feature (Customers, Orders, Products, etc.) rather than having a single monolithic resource file. LRM appears to be designed around a single-file-per-language model, which does not match this widely used .NET convention.
The lrm.json defaultLanguage setting and the VS Code Default Language Code setting do not resolve the issue.
Workaround
None found. Using a single .resx file works correctly but is not a viable architecture for medium/large projects.
Multiple .resx files treated as separate languages instead of separate resource groups
Description
When a project contains multiple
.resxfiles for different resource domains (e.g.CustomerResources.resx,SharedResources.resx,GlassResources.resx,QuoteResources.resx), the extension incorrectly treats each file as a separate language column instead of recognizing them as separate resource groups belonging to the same language.Environment
IStringLocalizerResource folder structure
Expected behavior
The Resource Editor should show one column per language, aggregating keys from all
.resxfiles. The Dashboard should report correct coverage based on the actual number of languages (e.g. 1 language = 1 column).Actual behavior
.resxfile (4 files = 4 columns), all labeledit(empty)for keys that exist in files other than the first one detected180% Avg Coverage,-32 Missing Translations,8 Languages(instead of 1).resxfile adds a new column instead of extending the existing languageSteps to reproduce
.resxfiles for different resource domains (e.g.CustomerResources.resx,SharedResources.resx)lrm.resourcePathto the resources folderDefault Language Codetoitin LRM settings.resxfile is shown as a separate language columnAdditional context
This is a common pattern in ASP.NET Core projects using
IStringLocalizer<T>, where resources are split by domain/feature (Customers, Orders, Products, etc.) rather than having a single monolithic resource file. LRM appears to be designed around a single-file-per-language model, which does not match this widely used .NET convention.The
lrm.jsondefaultLanguagesetting and the VS CodeDefault Language Codesetting do not resolve the issue.Workaround
None found. Using a single
.resxfile works correctly but is not a viable architecture for medium/large projects.