@@ -75,10 +75,10 @@ public class JsonLocalizationProviderOptions
7575/// </example>
7676public class JsonLocalizationProvider : ILocalizationProvider < JsonLocalizationProviderOptions >
7777{
78- private readonly ConcurrentDictionary < string , Dictionary < string , string > > _cache = new ( ) ;
79- private JsonLocalizationProviderOptions ? _options ;
78+ protected readonly ConcurrentDictionary < string , Dictionary < string , string > > _cache = new ( ) ;
79+ protected JsonLocalizationProviderOptions ? _options ;
8080
81- public string Name => "Json" ;
81+ public virtual string Name => "Json" ;
8282
8383 public void Initialize ( JsonLocalizationProviderOptions options )
8484 {
@@ -89,7 +89,7 @@ public void Initialize(JsonLocalizationProviderOptions options)
8989 /// <summary>
9090 /// Loads all localization resources.
9191 /// </summary>
92- private void LoadAll ( )
92+ protected virtual void LoadAll ( )
9393 {
9494 if ( _options == null ) return ;
9595
@@ -108,7 +108,7 @@ private void LoadAll()
108108 /// Resource naming format: {Assembly}.Localization.{culture}.json
109109 /// Example: AvaloniaLab.Localization.en.json
110110 /// </summary>
111- private void LoadFromEmbeddedResources ( )
111+ protected virtual void LoadFromEmbeddedResources ( )
112112 {
113113 var assembly = _options ! . Assembly ?? Assembly . GetCallingAssembly ( ) ;
114114 var resourceNames = assembly . GetManifestResourceNames ( ) ;
@@ -146,7 +146,7 @@ private void LoadFromEmbeddedResources()
146146 /// Example: AvaloniaLab.Localization.en.json -> en
147147 /// AvaloniaLab.Localization.zh-CN.json -> zh-CN
148148 /// </summary>
149- private string ? ExtractCultureName ( string resourceName )
149+ protected virtual string ? ExtractCultureName ( string resourceName )
150150 {
151151 var parts = resourceName . Split ( '.' ) ;
152152
@@ -169,7 +169,7 @@ private void LoadFromEmbeddedResources()
169169 /// File naming format: {culture}.json
170170 /// Example: en.json, zh-CN.json
171171 /// </summary>
172- private void LoadFromFiles ( )
172+ protected virtual void LoadFromFiles ( )
173173 {
174174 var basePath = _options ! . BasePath ;
175175
@@ -207,7 +207,7 @@ private void LoadFromFiles()
207207 /// Flat format: {"App.Title": "My App"} -> {"App.Title": "My App"}
208208 /// Nested format: {"App": {"Title": "My App"}} -> {"App.Title": "My App"}
209209 /// </example>
210- private Dictionary < string , string > ? ParseJsonToFlatDictionary ( string json )
210+ protected virtual Dictionary < string , string > ? ParseJsonToFlatDictionary ( string json )
211211 {
212212 var result = new Dictionary < string , string > ( ) ;
213213
@@ -239,7 +239,7 @@ private void LoadFromFiles()
239239 /// <param name="obj">JSON object to flatten</param>
240240 /// <param name="prefix">Current key prefix</param>
241241 /// <param name="result">Result dictionary to populate</param>
242- private void FlattenJsonObject ( JsonObject obj , string prefix , Dictionary < string , string > result )
242+ protected virtual void FlattenJsonObject ( JsonObject obj , string prefix , Dictionary < string , string > result )
243243 {
244244 foreach ( var property in obj )
245245 {
@@ -284,7 +284,7 @@ public IEnumerable<CultureInfo> GetAvailableCultures()
284284 return null ;
285285 }
286286
287- private bool TryGetFromCulture ( string key , CultureInfo culture , out string ? value )
287+ protected virtual bool TryGetFromCulture ( string key , CultureInfo culture , out string ? value )
288288 {
289289 value = null ;
290290 if ( _cache . TryGetValue ( culture . Name , out var dict ) )
0 commit comments