Skip to content

Commit 07253c8

Browse files
bvaughngaearon
authored andcommitted
Add "Languages" page (#1691)
* Added language selector page * PR nits * Fix typo in variable name * Added language icon. Show search icon in mobile. * Tweaked header alignment * Split languages into 3 categories based on progress: complete, partially translated, and needs contributors * Lower-cased pt-* language codes * Re-added locale sort * Renamed 'Partially Translated' header to 'In Progress'
1 parent aa8adc4 commit 07253c8

File tree

5 files changed

+373
-27
lines changed

5 files changed

+373
-27
lines changed

content/languages.yml

+133
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# Status enums indicate what percentage of "core" content has been translated:
2+
# 0: Incomplete (0–49%)
3+
# 1: Partially complete (50–94%)
4+
# 2: Complete (95–100%)
5+
6+
- name: English
7+
translated_name: English
8+
code: en
9+
status: 2
10+
- name: Arabic
11+
translated_name: العربية
12+
code: ar
13+
status: 0
14+
- name: Azerbaijani
15+
translated_name: Azərbaycanca
16+
code: az
17+
status: 0
18+
- name: Bulgarian
19+
translated_name: Български
20+
code: bg
21+
status: 0
22+
- name: Bengali
23+
translated_name: বাংলা
24+
code: bn
25+
status: 0
26+
- name: German
27+
translated_name: Deutsch
28+
code: de
29+
status: 0
30+
- name: Spanish
31+
translated_name: Español
32+
code: es
33+
status: 2
34+
- name: Persian
35+
translated_name: فارسی
36+
code: fa
37+
status: 0
38+
- name: French
39+
translated_name: Français
40+
code: fr
41+
status: 0
42+
- name: Hebrew
43+
translated_name: עברית
44+
code: he
45+
status: 0
46+
- name: Hindi
47+
translated_name: हिन्दी
48+
code: hi
49+
status: 0
50+
- name: Armenian
51+
translated_name: Հայերեն
52+
code: hy
53+
status: 0
54+
- name: Indonesian
55+
translated_name: Bahasa Indonesia
56+
code: id
57+
status: 0
58+
- name: Italian
59+
translated_name: Italiano
60+
code: it
61+
status: 0
62+
- name: Japanese
63+
translated_name: 日本語
64+
code: ja
65+
status: 1
66+
- name: Korean
67+
translated_name: 한국어
68+
code: ko
69+
status: 0
70+
- name: Malayalam
71+
translated_name: മലയാളം
72+
code: ml
73+
status: 0
74+
- name: Nepali
75+
translated_name: नेपाली
76+
code: ne
77+
status: 0
78+
- name: Dutch
79+
translated_name: Nederlands
80+
code: nl
81+
status: 0
82+
- name: Polish
83+
translated_name: Polski
84+
code: pl
85+
status: 0
86+
- name: Portuguese (Brazil)
87+
translated_name: Português do Brasil
88+
code: pt-br
89+
status: 1
90+
- name: Portuguese (Portugal)
91+
translated_name: Português europeu
92+
code: pt-pt
93+
status: 0
94+
- name: Romanian
95+
translated_name: Română
96+
code: ro
97+
status: 0
98+
- name: Russian
99+
translated_name: Русский
100+
code: ru
101+
status: 0
102+
- name: Sinhala
103+
translated_name: සිංහල
104+
code: si
105+
status: 0
106+
- name: Tamil
107+
translated_name: தமிழ்
108+
code: ta
109+
status: 0
110+
- name: Turkish
111+
translated_name: Türkçe
112+
code: tr
113+
status: 0
114+
- name: Ukrainian
115+
translated_name: Українська
116+
code: uk
117+
status: 0
118+
- name: Uzbek
119+
translated_name: Oʻzbekcha
120+
code: uz
121+
status: 0
122+
- name: Vietnamese
123+
translated_name: Tiếng Việt
124+
code: vi
125+
status: 0
126+
- name: Simplified Chinese
127+
translated_name: 简体中文
128+
code: zh-hans
129+
status: 0
130+
- name: Traditional Chinese
131+
translated_name: 繁體中文
132+
code: zh-hant
133+
status: 0

src/components/LayoutHeader/DocSearch.js

+10-19
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,23 @@ class DocSearch extends Component<{}, State> {
4242
flex: '0 0 auto',
4343
flexDirection: 'row',
4444
alignItems: 'center',
45-
paddingLeft: '0.5rem',
46-
paddingRight: '0.5rem',
45+
paddingLeft: '0.25rem',
46+
paddingRight: '0.25rem',
4747

48-
[media.lessThan('small')]: {
49-
justifyContent: 'flex-end',
50-
},
5148
[media.lessThan('large')]: {
49+
justifyContent: 'flex-end',
5250
marginRight: 10,
5351
},
54-
[media.between('small', 'medium')]: {
55-
width: 'calc(100% / 3)',
56-
},
5752
[media.between('medium', 'xlarge')]: {
58-
width: 'calc(100% / 6)',
53+
//width: 'calc(100% / 6)',
5954
},
60-
[media.greaterThan('small')]: {
61-
minWidth: 120,
55+
[media.greaterThan('large')]: {
56+
minWidth: 100,
6257
},
6358
}}>
6459
<input
6560
css={{
61+
width: '100%',
6662
appearance: 'none',
6763
background: 'transparent',
6864
border: 0,
@@ -71,12 +67,12 @@ class DocSearch extends Component<{}, State> {
7167
fontWeight: 300,
7268
fontFamily: 'inherit',
7369
position: 'relative',
74-
padding: '5px 5px 5px 29px',
70+
padding: '4px 4px 4px 29px',
7571
backgroundImage: 'url(/search.svg)',
7672
backgroundSize: '16px 16px',
7773
backgroundRepeat: 'no-repeat',
7874
backgroundPositionY: 'center',
79-
backgroundPositionX: '5px',
75+
backgroundPositionX: '4px',
8076

8177
':focus': {
8278
outline: 0,
@@ -86,11 +82,6 @@ class DocSearch extends Component<{}, State> {
8682

8783
[media.lessThan('large')]: {
8884
fontSize: 16,
89-
},
90-
[media.greaterThan('small')]: {
91-
width: '100%',
92-
},
93-
[media.lessThan('small')]: {
9485
width: '16px',
9586
transition: 'width 0.2s ease, padding 0.2s ease',
9687
paddingLeft: '16px',
@@ -104,7 +95,7 @@ class DocSearch extends Component<{}, State> {
10495
}}
10596
id="algolia-doc-search"
10697
type="search"
107-
placeholder="Search docs"
98+
placeholder="Search"
10899
aria-label="Search docs"
109100
/>
110101
</form>

src/components/LayoutHeader/Header.js

+70-7
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ const Header = ({location}: {location: Location}) => (
9292

9393
<nav
9494
css={{
95+
flex: '1',
9596
display: 'flex',
9697
flexDirection: 'row',
9798
alignItems: 'stretch',
9899
overflowX: 'auto',
99100
overflowY: 'hidden',
100101
WebkitOverflowScrolling: 'touch',
101102
height: '100%',
102-
width: '60%',
103103

104104
[media.size('xsmall')]: {
105105
flexGrow: '1',
@@ -139,12 +139,17 @@ const Header = ({location}: {location: Location}) => (
139139

140140
<div
141141
css={{
142-
[media.lessThan('medium')]: {
143-
display: 'none',
144-
},
145-
[media.greaterThan('large')]: {
146-
width: 'calc(100% / 6)',
147-
},
142+
display: 'flex',
143+
alignItems: 'center',
144+
justifyContent: 'flex-end',
145+
width: 'auto',
146+
147+
//[media.lessThan('medium')]: {
148+
//width: 'auto',
149+
//},
150+
//[media.greaterThan('large')]: {
151+
//width: 'calc(100% / 4)',
152+
//},
148153
}}>
149154
<Link
150155
css={{
@@ -161,10 +166,45 @@ const Header = ({location}: {location: Location}) => (
161166
backgroundColor: colors.lighter,
162167
borderRadius: 15,
163168
},
169+
170+
[media.lessThan('medium')]: {
171+
display: 'none',
172+
},
164173
}}
165174
to="/versions">
166175
v{version}
167176
</Link>
177+
<Link
178+
css={{
179+
display: 'flex',
180+
alignItems: 'center',
181+
padding: '5px 10px',
182+
whiteSpace: 'nowrap',
183+
...fonts.small,
184+
185+
':hover': {
186+
color: colors.brand,
187+
},
188+
189+
':focus': {
190+
outline: 0,
191+
backgroundColor: colors.lighter,
192+
borderRadius: 15,
193+
},
194+
}}
195+
to="/languages">
196+
<LanguagesIcon />{' '}
197+
<span
198+
css={{
199+
marginLeft: '0.5rem',
200+
201+
[media.lessThan('medium')]: {
202+
display: 'none',
203+
},
204+
}}>
205+
Languages
206+
</span>
207+
</Link>
168208
<a
169209
css={{
170210
padding: '5px 10px',
@@ -181,6 +221,10 @@ const Header = ({location}: {location: Location}) => (
181221
backgroundColor: colors.lighter,
182222
borderRadius: 15,
183223
},
224+
225+
[media.lessThan('large')]: {
226+
display: 'none',
227+
},
184228
}}
185229
href="https://github.com/facebook/react/"
186230
target="_blank"
@@ -200,4 +244,23 @@ const Header = ({location}: {location: Location}) => (
200244
</header>
201245
);
202246

247+
const LanguagesIcon = () => (
248+
<svg
249+
xmlns="http://www.w3.org/2000/svg"
250+
width="24"
251+
height="24"
252+
viewBox="0 0 24 24">
253+
<path d="M0 0h24v24H0z" fill="none" />
254+
<path
255+
css={{fill: 'currentColor'}}
256+
d="
257+
M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5
258+
7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09
259+
5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62
260+
7l1.62-4.33L19.12 17h-3.24z
261+
"
262+
/>
263+
</svg>
264+
);
265+
203266
export default Header;

0 commit comments

Comments
 (0)