-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Expand file tree
/
Copy pathtranslations.js
More file actions
59 lines (53 loc) · 1.65 KB
/
translations.js
File metadata and controls
59 lines (53 loc) · 1.65 KB
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
const defaultStrings = require("../intl/en.json")
const languageMetadata = require("../data/translations.json")
const supportedLanguages = Object.keys(languageMetadata)
const legacyHomepageLanguages = supportedLanguages.filter(
(lang) => languageMetadata[lang].useLegacyHomepage
)
const consoleError = (message) => {
const { NODE_ENV } = process.env
if (NODE_ENV === "development") {
console.error(message)
}
}
// Returns the en.json value
const getDefaultMessage = (key) => {
const defaultMessage = defaultStrings[key]
if (defaultMessage === undefined) {
consoleError(
`No key "${key}" in en.json. Cannot provide a default message.`
)
}
return defaultMessage || ""
}
const isLangRightToLeft = (lang) => {
return lang === "ar" || lang === "fa"
}
const translateMessageId = (id, intl) => {
if (!id) {
consoleError(`No id provided for translation.`)
return ""
}
if (!intl || !intl.formatMessage) {
consoleError(`Invalid/no intl provided for translation id ${id}`)
return ""
}
const translation = intl.formatMessage({
id,
defaultMessage: getDefaultMessage(id),
})
if (translation === id) {
consoleError(
`Intl ID string "${id}" has no match. Default message of "" returned.`
)
return ""
}
return translation
}
// Must export using ES5 to import in gatsby-node.js
module.exports.languageMetadata = languageMetadata
module.exports.supportedLanguages = supportedLanguages
module.exports.getDefaultMessage = getDefaultMessage
module.exports.isLangRightToLeft = isLangRightToLeft
module.exports.translateMessageId = translateMessageId
module.exports.legacyHomepageLanguages = legacyHomepageLanguages