Skip to content

Commit 0031db3

Browse files
Merge branch 'master' of https://github.com/reactjs/reactjs.org into sync-6e79d088
2 parents 0ddcf53 + 6e79d08 commit 0031db3

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

src/components/TitleAndMetaTags/TitleAndMetaTags.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
import Helmet from 'react-helmet';
99
import React from 'react';
10+
import {urlRoot} from 'site-constants';
11+
// $FlowFixMe This is a valid path
12+
import languages from '../../../content/languages.yml';
1013

1114
const defaultDescription =
1215
'Một thư viện JavaScript xây dựng giao diện người dùng';
@@ -17,6 +20,32 @@ type Props = {
1720
canonicalUrl: string,
1821
};
1922

23+
// only provide alternate links to pages in languages where 95-100% of core content has been translated
24+
// which is determined by status enum of 2
25+
const completeLanguages = languages.filter(language => {
26+
return language.status == 2;
27+
});
28+
29+
const alternatePages = canonicalUrl => {
30+
return completeLanguages.map(language => (
31+
<link
32+
key={('alt-', language.code)}
33+
rel="alternate"
34+
hreflang={language.code}
35+
href={canonicalUrl.replace(
36+
urlRoot,
37+
`https://${
38+
language.code === 'en' ? '' : `${language.code}.`
39+
}reactjs.org`,
40+
)}
41+
/>
42+
));
43+
};
44+
45+
const defaultPage = canonicalUrl => {
46+
return canonicalUrl.replace(urlRoot, 'https://reactjs.org');
47+
};
48+
2049
const TitleAndMetaTags = ({title, ogDescription, canonicalUrl}: Props) => {
2150
return (
2251
<Helmet title={title}>
@@ -30,6 +59,14 @@ const TitleAndMetaTags = ({title, ogDescription, canonicalUrl}: Props) => {
3059
/>
3160
<meta property="fb:app_id" content="623268441017527" />
3261
{canonicalUrl && <link rel="canonical" href={canonicalUrl} />}
62+
{canonicalUrl && (
63+
<link
64+
rel="alternate"
65+
href={defaultPage(canonicalUrl)}
66+
hreflang="x-default"
67+
/>
68+
)}
69+
{canonicalUrl && alternatePages(canonicalUrl)}
3370
</Helmet>
3471
);
3572
};

src/pages/languages.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,11 @@ const Language = ({code, name, status, translatedName}) => {
140140
}}>
141141
{status === 0 && translatedName}
142142
{status > 0 && (
143-
<a href={`https://${prefix}reactjs.org/`} rel="nofollow">
143+
<a
144+
href={`https://${prefix}reactjs.org/`}
145+
rel="nofollow"
146+
lang={code}
147+
hrefLang={code}>
144148
{translatedName}
145149
</a>
146150
)}

0 commit comments

Comments
 (0)