1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
# Pleroma: A lightweight social networking server
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.GettextTest do
use ExUnit.Case
require Pleroma.Web.Gettext
test "put_locales/1: set the first in the list to Gettext's locale" do
Pleroma.Web.Gettext.put_locales(["zh_Hans", "en_test"])
assert "zh_Hans" == Gettext.get_locale(Pleroma.Web.Gettext)
end
test "with_locales/2: reset locale on exit" do
old_first_locale = Gettext.get_locale(Pleroma.Web.Gettext)
old_locales = Pleroma.Web.Gettext.get_locales()
Pleroma.Web.Gettext.with_locales ["zh_Hans", "en_test"] do
assert "zh_Hans" == Gettext.get_locale(Pleroma.Web.Gettext)
assert ["zh_Hans", "en_test"] == Pleroma.Web.Gettext.get_locales()
end
assert old_first_locale == Gettext.get_locale(Pleroma.Web.Gettext)
assert old_locales == Pleroma.Web.Gettext.get_locales()
end
describe "handle_missing_translation/5" do
test "fallback to next locale if some translation is not available" do
Pleroma.Web.Gettext.with_locales ["x_unsupported", "en_test"] do
assert "xxYour account is awaiting approvalxx" ==
Pleroma.Web.Gettext.dpgettext(
"static_pages",
"approval pending email subject",
"Your account is awaiting approval"
)
end
end
test "putting en locale at the front should not make gettext fallback unexpectedly" do
Pleroma.Web.Gettext.with_locales ["en", "en_test"] do
assert "Your account is awaiting approval" ==
Pleroma.Web.Gettext.dpgettext(
"static_pages",
"approval pending email subject",
"Your account is awaiting approval"
)
end
end
test "duplicated locale in list should not result in infinite loops" do
Pleroma.Web.Gettext.with_locales ["x_unsupported", "x_unsupported", "en_test"] do
assert "xxYour account is awaiting approvalxx" ==
Pleroma.Web.Gettext.dpgettext(
"static_pages",
"approval pending email subject",
"Your account is awaiting approval"
)
end
end
test "direct interpolation" do
Pleroma.Web.Gettext.with_locales ["en_test"] do
assert "xxYour digest from some instancexx" ==
Pleroma.Web.Gettext.dpgettext(
"static_pages",
"digest email subject",
"Your digest from %{instance_name}",
instance_name: "some instance"
)
end
end
test "fallback with interpolation" do
Pleroma.Web.Gettext.with_locales ["x_unsupported", "en_test"] do
assert "xxYour digest from some instancexx" ==
Pleroma.Web.Gettext.dpgettext(
"static_pages",
"digest email subject",
"Your digest from %{instance_name}",
instance_name: "some instance"
)
end
end
test "fallback to msgid" do
Pleroma.Web.Gettext.with_locales ["x_unsupported"] do
assert "Your digest from some instance" ==
Pleroma.Web.Gettext.dpgettext(
"static_pages",
"digest email subject",
"Your digest from %{instance_name}",
instance_name: "some instance"
)
end
end
end
describe "handle_missing_plural_translation/7" do
test "direct interpolation" do
Pleroma.Web.Gettext.with_locales ["en_test"] do
assert "xx1 New Followerxx" ==
Pleroma.Web.Gettext.dpngettext(
"static_pages",
"new followers count header",
"%{count} New Follower",
"%{count} New Followers",
1,
count: 1
)
assert "xx5 New Followersxx" ==
Pleroma.Web.Gettext.dpngettext(
"static_pages",
"new followers count header",
"%{count} New Follower",
"%{count} New Followers",
5,
count: 5
)
end
end
test "fallback with interpolation" do
Pleroma.Web.Gettext.with_locales ["x_unsupported", "en_test"] do
assert "xx1 New Followerxx" ==
Pleroma.Web.Gettext.dpngettext(
"static_pages",
"new followers count header",
"%{count} New Follower",
"%{count} New Followers",
1,
count: 1
)
assert "xx5 New Followersxx" ==
Pleroma.Web.Gettext.dpngettext(
"static_pages",
"new followers count header",
"%{count} New Follower",
"%{count} New Followers",
5,
count: 5
)
end
end
test "fallback to msgid" do
Pleroma.Web.Gettext.with_locales ["x_unsupported"] do
assert "1 New Follower" ==
Pleroma.Web.Gettext.dpngettext(
"static_pages",
"new followers count header",
"%{count} New Follower",
"%{count} New Followers",
1,
count: 1
)
assert "5 New Followers" ==
Pleroma.Web.Gettext.dpngettext(
"static_pages",
"new followers count header",
"%{count} New Follower",
"%{count} New Followers",
5,
count: 5
)
end
end
end
end
|