4
4
namespace Masa . Contrib . Globalization . I18n . Tests ;
5
5
6
6
[ TestClass ]
7
+ // ReSharper disable once InconsistentNaming
7
8
public class I18nTest
8
9
{
9
- private const string DEFAULT_RESOURCE = "Resources/ I18n" ;
10
+ private static readonly string DefaultResource = Path . Combine ( "Resources" , " I18n") ;
10
11
11
12
[ TestInitialize ]
12
13
public void Initialize ( )
@@ -23,6 +24,7 @@ public void TestLocalization(string cultureName, string expectedValue)
23
24
services . AddLogging ( ) ;
24
25
services . TestAddI18n ( ) ;
25
26
var serviceProvider = services . BuildServiceProvider ( ) ;
27
+ // ReSharper disable once InconsistentNaming
26
28
var i18n = serviceProvider . GetRequiredService < II18n > ( ) ;
27
29
i18n . SetUiCulture ( cultureName ) ;
28
30
var value = i18n [ "Name" ] ;
@@ -39,8 +41,9 @@ public void TestLocalization(string cultureName, string expectedValue)
39
41
public void TestLocalization2 ( string cultureName , string expectedValue )
40
42
{
41
43
var builder = WebApplication . CreateBuilder ( ) ;
42
- builder . Services . TestAddI18n ( DEFAULT_RESOURCE ) ;
44
+ builder . Services . TestAddI18n ( DefaultResource ) ;
43
45
var serviceProvider = builder . Services . BuildServiceProvider ( ) ;
46
+ // ReSharper disable once InconsistentNaming
44
47
var i18n = serviceProvider . GetRequiredService < II18n > ( ) ;
45
48
i18n . SetUiCulture ( cultureName ) ;
46
49
var value = i18n [ "Name" ] ;
@@ -56,8 +59,9 @@ public void TestLocalization2(string cultureName, string expectedValue)
56
59
public void TestLocalization3 ( string cultureName , string expectedValue )
57
60
{
58
61
var builder = WebApplication . CreateBuilder ( ) ;
59
- builder . Services . AddI18n ( DEFAULT_RESOURCE ) ;
62
+ builder . Services . AddI18n ( DefaultResource ) ;
60
63
var serviceProvider = builder . Services . BuildServiceProvider ( ) ;
64
+ // ReSharper disable once InconsistentNaming
61
65
var i18n = serviceProvider . GetRequiredService < II18n > ( ) ;
62
66
i18n . SetUiCulture ( cultureName ) ;
63
67
var value = i18n [ "Name" ] ;
@@ -67,4 +71,53 @@ public void TestLocalization3(string cultureName, string expectedValue)
67
71
value = i18n [ "Name2" ] ;
68
72
Assert . AreEqual ( "Name2" , value ) ;
69
73
}
74
+
75
+ [ DataTestMethod ]
76
+ [ DataRow ( "zh-CN" , "Name" , "吉姆" , false ) ]
77
+ [ DataRow ( "en-US" , "Name" , "Jim" , false ) ]
78
+ [ DataRow ( "zh-CN" , "Name2" , "吉姆2" , true ) ]
79
+ [ DataRow ( "en-US" , "Name2" , "Jim2" , true ) ]
80
+ public void TestAddMultiResources ( string culture , string key , string expectedResult , bool isCustom )
81
+ {
82
+ var services = new ServiceCollection ( ) ;
83
+ services . Configure < MasaI18nOptions > ( options =>
84
+ options . Resources
85
+ . Add < CustomResource > ( )
86
+ . AddJson ( Path . Combine ( "Resources" , "I18n2" ) ) ) ;
87
+ services . AddI18n ( ) ;
88
+ BuildingBlocks . Globalization . I18n . I18n . SetUiCulture ( culture ) ;
89
+ var actualResult = "" ;
90
+ actualResult = ! isCustom ?
91
+ BuildingBlocks . Globalization . I18n . I18n . T ( key ) :
92
+ services . BuildServiceProvider ( ) . GetRequiredService < II18n < CustomResource > > ( ) . T ( key ) ;
93
+ Assert . AreEqual ( expectedResult , actualResult ) ;
94
+ }
95
+
96
+ [ DataTestMethod ]
97
+ [ DataRow ( "zh-CN" , "Name" , "吉姆" , false ) ]
98
+ [ DataRow ( "zh-CN" , "name" , "吉姆" , false ) ]
99
+ [ DataRow ( "en-US" , "Name" , "Jim" , false ) ]
100
+ [ DataRow ( "en-US" , "name" , "Jim" , false ) ]
101
+ [ DataRow ( "zh-CN" , "Name2" , "吉姆2" , true ) ]
102
+ [ DataRow ( "zh-CN" , "name2" , "吉姆2" , true ) ]
103
+ [ DataRow ( "en-US" , "Name2" , "Name2" , true ) ]
104
+ [ DataRow ( "en-US" , "name2" , "name2" , true ) ]
105
+ public void TestAddMultiResources2 ( string culture , string key , string expectedResult , bool isCustom )
106
+ {
107
+ var services = new ServiceCollection ( ) ;
108
+ services . Configure < MasaI18nOptions > ( options =>
109
+ options . Resources
110
+ . Add < CustomResource > ( )
111
+ . AddJson ( Path . Combine ( "Resources" , "I18n2" ) , new List < CultureModel > ( )
112
+ {
113
+ new ( "zh-CN" )
114
+ } ) ) ;
115
+ services . AddI18n ( ) ;
116
+ BuildingBlocks . Globalization . I18n . I18n . SetUiCulture ( culture ) ;
117
+ var actualResult = "" ;
118
+ actualResult = ! isCustom ?
119
+ BuildingBlocks . Globalization . I18n . I18n . T ( key ) :
120
+ services . BuildServiceProvider ( ) . GetRequiredService < II18n < CustomResource > > ( ) . T ( key ) ;
121
+ Assert . AreEqual ( expectedResult , actualResult ) ;
122
+ }
70
123
}
0 commit comments