Skip to content
This repository was archived by the owner on May 26, 2025. It is now read-only.

Commit 95fcce3

Browse files
committed
Merge branch 'feature/chinese-translation-2'
2 parents 0887074 + 95be581 commit 95fcce3

3 files changed

Lines changed: 146 additions & 0 deletions

File tree

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
namespace Validot.Translations
2+
{
3+
using System.Collections.Generic;
4+
5+
public static partial class Translation
6+
{
7+
public static IReadOnlyDictionary<string, string> Chinese { get; } = new Dictionary<string, string>
8+
{
9+
[MessageKey.Global.Error] = "错误",
10+
[MessageKey.Global.Required] = "需要",
11+
[MessageKey.Global.Forbidden] = "禁止",
12+
[MessageKey.Global.ReferenceLoop] = "(引用循环)",
13+
14+
[MessageKey.BoolType.True] = "必须为真",
15+
[MessageKey.BoolType.False] = "必须为假",
16+
17+
[MessageKey.CharType.EqualToIgnoreCase] = "必须等于 {value} (无视条件)",
18+
[MessageKey.CharType.NotEqualToIgnoreCase] = "不可等于 {value} (无视条件)",
19+
20+
[MessageKey.GuidType.EqualTo] = "必须等于 {value}",
21+
[MessageKey.GuidType.NotEqualTo] = "不可等于 {value}",
22+
[MessageKey.GuidType.NotEmpty] = "不可全部为零",
23+
24+
[MessageKey.Collections.EmptyCollection] = "必须为空",
25+
[MessageKey.Collections.NotEmptyCollection] = "不可为空",
26+
[MessageKey.Collections.ExactCollectionSize] = "必须包含 {size} 个对象",
27+
[MessageKey.Collections.MinCollectionSize] = "必须包含至少 {min} 个对象",
28+
[MessageKey.Collections.MaxCollectionSize] = "只能包含最多 {max} 个对象",
29+
[MessageKey.Collections.CollectionSizeBetween] = "只能包含 {min} 到 {max} 个对象",
30+
31+
[MessageKey.Numbers.EqualTo] = "必须等于 {value}",
32+
[MessageKey.Numbers.NotEqualTo] = "不可等于 {value}",
33+
[MessageKey.Numbers.GreaterThan] = "必须大于 {min}",
34+
[MessageKey.Numbers.GreaterThanOrEqualTo] = "必须大于或等于 {min}",
35+
[MessageKey.Numbers.LessThan] = "只能小于 {max}",
36+
[MessageKey.Numbers.LessThanOrEqualTo] = "只能小于或等于 {max}",
37+
[MessageKey.Numbers.Between] = "只能在 {min} 到 {max} 之间 (不包括)",
38+
[MessageKey.Numbers.BetweenOrEqualTo] = "只能在 {min} 到 {max} 之间 (包括)",
39+
[MessageKey.Numbers.NonZero] = "不可为零",
40+
[MessageKey.Numbers.Positive] = "必须为正值",
41+
[MessageKey.Numbers.NonPositive] = "不可为正值",
42+
[MessageKey.Numbers.Negative] = "必须为负值",
43+
[MessageKey.Numbers.NonNegative] = "不可为负值",
44+
[MessageKey.Numbers.NonNaN] = "必须非NaN",
45+
46+
[MessageKey.Texts.Email] = "必须为有效邮箱地址",
47+
[MessageKey.Texts.EqualTo] = "必须等于 {value}",
48+
[MessageKey.Texts.NotEqualTo] = "不可等于 {value}",
49+
[MessageKey.Texts.Contains] = "必须包含 {value}",
50+
[MessageKey.Texts.NotContains] = "不可包含 {value}",
51+
[MessageKey.Texts.NotEmpty] = "不可为空",
52+
[MessageKey.Texts.NotWhiteSpace] = "不可仅使用空格字符",
53+
[MessageKey.Texts.SingleLine] = "只能包含单行",
54+
[MessageKey.Texts.ExactLength] = "长度必须确切为 {length} 个字符",
55+
[MessageKey.Texts.MaxLength] = "长度最多为 {max} 个字符",
56+
[MessageKey.Texts.MinLength] = "长度最少为 {min} 个字符",
57+
[MessageKey.Texts.LengthBetween] = "长度只能在 {min} 到 {max} 个字符之间",
58+
[MessageKey.Texts.Matches] = "必须匹配正则表达式模板 {pattern}",
59+
[MessageKey.Texts.StartsWith] = "必须以 {value} 起始",
60+
[MessageKey.Texts.EndsWith] = "必须以 {value} 结束",
61+
62+
[MessageKey.Times.EqualTo] = "必须等于 {value}",
63+
[MessageKey.Times.NotEqualTo] = "不可等于 {value}",
64+
[MessageKey.Times.After] = "必须晚于 {min}",
65+
[MessageKey.Times.AfterOrEqualTo] = "必须晚于或等于 {min}",
66+
[MessageKey.Times.Before] = "必须早于 {max}",
67+
[MessageKey.Times.BeforeOrEqualTo] = "必须早于或等于 {max}",
68+
[MessageKey.Times.Between] = "只能处于 {min} 到 {max} 之间 (不包括)",
69+
[MessageKey.Times.BetweenOrEqualTo] = "只能处于 {min} 到 {max} 之间 (包括)",
70+
71+
[MessageKey.TimeSpanType.EqualTo] = "必须等于 {value}",
72+
[MessageKey.TimeSpanType.NotEqualTo] = "不可等于 {value}",
73+
[MessageKey.TimeSpanType.GreaterThan] = "必须大于 {min}",
74+
[MessageKey.TimeSpanType.GreaterThanOrEqualTo] = "必须大于或等于 {min}",
75+
[MessageKey.TimeSpanType.LessThan] = "只能小于 {max}",
76+
[MessageKey.TimeSpanType.LessThanOrEqualTo] = "只能小于或等于 {max}",
77+
[MessageKey.TimeSpanType.Between] = "只能处于 {min} 到 {max} 之间 (不包括)",
78+
[MessageKey.TimeSpanType.BetweenOrEqualTo] = "只能处于 {min} 到 {max} 之间 (包括)",
79+
[MessageKey.TimeSpanType.NonZero] = "不可为零",
80+
[MessageKey.TimeSpanType.Positive] = "必须为正值",
81+
[MessageKey.TimeSpanType.NonPositive] = "不可为正值",
82+
[MessageKey.TimeSpanType.Negative] = "必须为负值",
83+
[MessageKey.TimeSpanType.NonNegative] = "不可为负值"
84+
};
85+
}
86+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
namespace Validot
2+
{
3+
using Validot.Settings;
4+
using Validot.Translations;
5+
6+
public static partial class TranslationsExtensions
7+
{
8+
/// <summary>
9+
/// Adds Chinese translation dictionary for the error messages used in the built-in rules.
10+
/// </summary>
11+
/// <param name="this">Settings fluent API builder - input.</param>
12+
/// <returns>Settings fluent API builder - output.</returns>
13+
public static ValidatorSettings WithChineseTranslation(this ValidatorSettings @this)
14+
{
15+
ThrowHelper.NullArgument(@this, nameof(@this));
16+
17+
return @this.WithTranslation(nameof(Translation.Chinese), Translation.Chinese);
18+
}
19+
}
20+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
namespace Validot.Tests.Unit.Translations.Chinese
2+
{
3+
using System.Linq;
4+
5+
using FluentAssertions;
6+
7+
using Validot.Settings;
8+
using Validot.Translations;
9+
10+
using Xunit;
11+
12+
public class ChineseTranslationsExtensionsTests
13+
{
14+
[Fact]
15+
public void Chinese_Should_HaveValues_NonNullNorEmptyNorWhiteSpace()
16+
{
17+
Translation.Chinese.Values.All(m => !string.IsNullOrWhiteSpace(m)).Should().BeTrue();
18+
}
19+
20+
[Fact]
21+
public void Chinese_Should_HaveValues_OnlyFromMessageKeys()
22+
{
23+
MessageKey.All.Should().Contain(Translation.Chinese.Keys);
24+
}
25+
26+
[Fact]
27+
public void Chinese_Should_HaveValues_OnlyWithAllowedPlaceholders()
28+
{
29+
Translation.Chinese.ShouldContainOnlyValidPlaceholders();
30+
}
31+
32+
[Fact]
33+
public void WithChineseTranslation_Should_AddTranslation()
34+
{
35+
var settings = new ValidatorSettings();
36+
settings.WithChineseTranslation();
37+
TranslationTestHelpers.ShouldContainSingleTranslation(settings.Translations, "Chinese", Translation.Chinese);
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)