committed by
GitHub
9 changed files with 238 additions and 227 deletions
@ -0,0 +1,133 @@ |
|||
import { app, remote } from 'electron' |
|||
import Store from 'electron-store' |
|||
import get from 'lodash.get' |
|||
import { lookup } from 'country-data-lookup' |
|||
import createDebug from 'debug' |
|||
import isRenderer from 'is-electron-renderer' |
|||
|
|||
// Defaine list of language that we will support.
|
|||
export const locales = [ |
|||
'bg', |
|||
'cs', |
|||
'de', |
|||
'el', |
|||
'en', |
|||
'es', |
|||
'fr', |
|||
'ga', |
|||
'hr', |
|||
'ja', |
|||
'nl', |
|||
'pt', |
|||
'ro', |
|||
'ru', |
|||
'sv', |
|||
'tr', |
|||
'uk', |
|||
'zh-CN', |
|||
'zh-TW' |
|||
] |
|||
|
|||
// Defaine list of currencies that we will support.
|
|||
export const currencies = [ |
|||
'USD', |
|||
'EUR', |
|||
'JPY', |
|||
'GBP', |
|||
'CAD', |
|||
'KRW', |
|||
'AUD', |
|||
'BRL', |
|||
'CHF', |
|||
'CLP', |
|||
'CNY', |
|||
'DKK', |
|||
'HKD', |
|||
'INR', |
|||
'ISK', |
|||
'NZD', |
|||
'PLN', |
|||
'RUB', |
|||
'SEK', |
|||
'SGD', |
|||
'THB', |
|||
'TWB' |
|||
] |
|||
|
|||
/** |
|||
* Debugger that does not log in the renderer process. |
|||
*/ |
|||
const debuger = createDebug('zap:i18n') |
|||
const debug = (...args) => { |
|||
if (!isRenderer) { |
|||
debuger(args) |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Get the most appropriate language code. |
|||
* @return {string} Language code. |
|||
*/ |
|||
export const getLocale = () => { |
|||
const store = new Store({ name: 'settings' }) |
|||
const userLocale = store.get('locale') |
|||
if (userLocale) { |
|||
debug('Determined locale as %s from settings', userLocale) |
|||
return userLocale |
|||
} |
|||
const defaultLocale = (app || remote.app).getLocale() || 'en-US' |
|||
const language = defaultLocale.toLowerCase().split(/[_-]+/)[0] |
|||
let locale = 'en' |
|||
if (locales.includes(language)) { |
|||
locale = language |
|||
} |
|||
if (locales.includes(defaultLocale)) { |
|||
locale = userLocale |
|||
} |
|||
debug('Determined locale as %s', locale) |
|||
return locale |
|||
} |
|||
|
|||
/** |
|||
* Get the most appropriate language code. |
|||
* @return {string} Language code. |
|||
*/ |
|||
export const getLanguageName = lang => { |
|||
const customNames = { |
|||
el: 'Greek', |
|||
'zh-CN': 'Chinese (Simplified, PRC)', |
|||
'zh-TW': 'Chinese (Traditional, Taiwan)' |
|||
} |
|||
if (customNames[lang]) { |
|||
return customNames[lang] |
|||
} |
|||
|
|||
const language = lang.toLowerCase().split(/[_-]+/)[0] |
|||
const data = lookup.languages({ alpha2: language }) |
|||
const name = get(data, '[0]name', language) |
|||
debug('Determined language as %s', name) |
|||
return name |
|||
} |
|||
|
|||
/** |
|||
* Get the most appropriate currency code. |
|||
* @return {string} Currency code. |
|||
*/ |
|||
export const getCurrency = () => { |
|||
const store = new Store({ name: 'settings' }) |
|||
const userCurrency = store.get('fiatTicker') |
|||
if (userCurrency) { |
|||
debug('Determined currency as %s from settings', userCurrency) |
|||
return userCurrency |
|||
} |
|||
const defaultLocale = (app || remote.app).getLocale() || 'en-US' |
|||
const country = defaultLocale.split(/[_-]+/)[1] |
|||
const data = lookup.countries({ alpha2: country }) |
|||
const detectedCurrency = get(data, '[0]currencies[0]', 'USD') |
|||
let currency = 'USD' |
|||
if (currencies.includes(detectedCurrency)) { |
|||
currency = detectedCurrency |
|||
} |
|||
debug('Determined currency as %s', currency) |
|||
return currency |
|||
} |
@ -0,0 +1,43 @@ |
|||
import { addLocaleData } from 'react-intl' |
|||
|
|||
// Load locale data.
|
|||
import bg from 'react-intl/locale-data/bg' |
|||
import cs from 'react-intl/locale-data/cs' |
|||
import de from 'react-intl/locale-data/de' |
|||
import el from 'react-intl/locale-data/el' |
|||
import en from 'react-intl/locale-data/en' |
|||
import es from 'react-intl/locale-data/es' |
|||
import fr from 'react-intl/locale-data/fr' |
|||
import ga from 'react-intl/locale-data/ga' |
|||
import hr from 'react-intl/locale-data/hr' |
|||
import ja from 'react-intl/locale-data/ja' |
|||
import nl from 'react-intl/locale-data/nl' |
|||
import pt from 'react-intl/locale-data/pt' |
|||
import ro from 'react-intl/locale-data/ro' |
|||
import ru from 'react-intl/locale-data/ru' |
|||
import sv from 'react-intl/locale-data/sv' |
|||
import tr from 'react-intl/locale-data/tr' |
|||
import uk from 'react-intl/locale-data/uk' |
|||
import zh from 'react-intl/locale-data/zh' |
|||
|
|||
// Add locale data.
|
|||
addLocaleData([ |
|||
...bg, |
|||
...cs, |
|||
...de, |
|||
...el, |
|||
...en, |
|||
...es, |
|||
...fr, |
|||
...ga, |
|||
...hr, |
|||
...ja, |
|||
...nl, |
|||
...pt, |
|||
...ro, |
|||
...ru, |
|||
...sv, |
|||
...tr, |
|||
...uk, |
|||
...zh |
|||
]) |
@ -0,0 +1,45 @@ |
|||
// Load translation data.
|
|||
import bgTranslationMessages from '../../translations/bg-BG.json' |
|||
import csTranslationMessages from '../../translations/cs-CZ.json' |
|||
import deTranslationMessages from '../../translations/de-DE.json' |
|||
import elTranslationMessages from '../../translations/el-GR.json' |
|||
import enTranslationMessages from '../../translations/en.json' |
|||
import esTranslationMessages from '../../translations/es-ES.json' |
|||
import frTranslationMessages from '../../translations/fr-FR.json' |
|||
import gaTranslationMessages from '../../translations/ga-IE.json' |
|||
import hrTranslationMessages from '../../translations/hr-HR.json' |
|||
import jaTranslationMessages from '../../translations/ja-JP.json' |
|||
import nlTranslationMessages from '../../translations/nl-NL.json' |
|||
import ptTranslationMessages from '../../translations/pt-BR.json' |
|||
import roTranslationMessages from '../../translations/ro-RO.json' |
|||
import ruTranslationMessages from '../../translations/ru-RU.json' |
|||
import svTranslationMessages from '../../translations/sv-SE.json' |
|||
import trTranslationMessages from '../../translations/tr-TR.json' |
|||
import ukTranslationMessages from '../../translations/uk-UA.json' |
|||
import zhCNTranslationMessages from '../../translations/zh-CN.json' |
|||
import zhTWTranslationMessages from '../../translations/zh-TW.json' |
|||
|
|||
// Collate all translations.
|
|||
const translations = { |
|||
en: enTranslationMessages, |
|||
bg: bgTranslationMessages, |
|||
'zh-CN': zhCNTranslationMessages, |
|||
'zh-TW': zhTWTranslationMessages, |
|||
hr: hrTranslationMessages, |
|||
cs: csTranslationMessages, |
|||
nl: nlTranslationMessages, |
|||
fr: frTranslationMessages, |
|||
ga: gaTranslationMessages, |
|||
de: deTranslationMessages, |
|||
el: elTranslationMessages, |
|||
ja: jaTranslationMessages, |
|||
pt: ptTranslationMessages, |
|||
ro: roTranslationMessages, |
|||
ru: ruTranslationMessages, |
|||
es: esTranslationMessages, |
|||
sv: svTranslationMessages, |
|||
tr: trTranslationMessages, |
|||
uk: ukTranslationMessages |
|||
} |
|||
|
|||
export default translations |
@ -1,220 +0,0 @@ |
|||
import { app, remote } from 'electron' |
|||
import { addLocaleData } from 'react-intl' |
|||
import Store from 'electron-store' |
|||
import get from 'lodash.get' |
|||
import { lookup } from 'country-data-lookup' |
|||
import createDebug from 'debug' |
|||
import isRenderer from 'is-electron-renderer' |
|||
|
|||
// Load locale data.
|
|||
import bg from 'react-intl/locale-data/bg' |
|||
import cs from 'react-intl/locale-data/cs' |
|||
import de from 'react-intl/locale-data/de' |
|||
import el from 'react-intl/locale-data/el' |
|||
import en from 'react-intl/locale-data/en' |
|||
import es from 'react-intl/locale-data/es' |
|||
import fr from 'react-intl/locale-data/fr' |
|||
import ga from 'react-intl/locale-data/ga' |
|||
import hr from 'react-intl/locale-data/hr' |
|||
import ja from 'react-intl/locale-data/ja' |
|||
import nl from 'react-intl/locale-data/nl' |
|||
import pt from 'react-intl/locale-data/pt' |
|||
import ro from 'react-intl/locale-data/ro' |
|||
import ru from 'react-intl/locale-data/ru' |
|||
import sv from 'react-intl/locale-data/sv' |
|||
import tr from 'react-intl/locale-data/tr' |
|||
import uk from 'react-intl/locale-data/uk' |
|||
import zh from 'react-intl/locale-data/zh' |
|||
|
|||
// Load translation data.
|
|||
import bgTranslationMessages from '../../translations/bg-BG.json' |
|||
import csTranslationMessages from '../../translations/cs-CZ.json' |
|||
import deTranslationMessages from '../../translations/de-DE.json' |
|||
import elTranslationMessages from '../../translations/el-GR.json' |
|||
import enTranslationMessages from '../../translations/en.json' |
|||
import esTranslationMessages from '../../translations/es-ES.json' |
|||
import frTranslationMessages from '../../translations/fr-FR.json' |
|||
import gaTranslationMessages from '../../translations/ga-IE.json' |
|||
import hrTranslationMessages from '../../translations/hr-HR.json' |
|||
import jaTranslationMessages from '../../translations/ja-JP.json' |
|||
import nlTranslationMessages from '../../translations/nl-NL.json' |
|||
import ptTranslationMessages from '../../translations/pt-BR.json' |
|||
import roTranslationMessages from '../../translations/ro-RO.json' |
|||
import ruTranslationMessages from '../../translations/ru-RU.json' |
|||
import svTranslationMessages from '../../translations/sv-SE.json' |
|||
import trTranslationMessages from '../../translations/tr-TR.json' |
|||
import ukTranslationMessages from '../../translations/uk-UA.json' |
|||
import zhCNTranslationMessages from '../../translations/zh-CN.json' |
|||
import zhTWTranslationMessages from '../../translations/zh-TW.json' |
|||
|
|||
/** |
|||
* Debugger that does not log in the renderer process. |
|||
*/ |
|||
const debuger = createDebug('zap:i18n') |
|||
const debug = (...args) => { |
|||
if (!isRenderer) { |
|||
debuger(args) |
|||
} |
|||
} |
|||
|
|||
// Add locale data.
|
|||
addLocaleData([ |
|||
...bg, |
|||
...cs, |
|||
...de, |
|||
...el, |
|||
...en, |
|||
...es, |
|||
...fr, |
|||
...ga, |
|||
...hr, |
|||
...ja, |
|||
...nl, |
|||
...pt, |
|||
...ro, |
|||
...ru, |
|||
...sv, |
|||
...tr, |
|||
...uk, |
|||
...zh |
|||
]) |
|||
|
|||
// Defaine list of language that we will support.
|
|||
export const locales = [ |
|||
'bg', |
|||
'cs', |
|||
'de', |
|||
'el', |
|||
'en', |
|||
'es', |
|||
'fr', |
|||
'ga', |
|||
'hr', |
|||
'ja', |
|||
'nl', |
|||
'pt', |
|||
'ro', |
|||
'ru', |
|||
'sv', |
|||
'tr', |
|||
'uk', |
|||
'zh-CN', |
|||
'zh-TW' |
|||
] |
|||
|
|||
// Defaine list of currencies that we will support.
|
|||
export const currencies = [ |
|||
'USD', |
|||
'EUR', |
|||
'JPY', |
|||
'GBP', |
|||
'CAD', |
|||
'KRW', |
|||
'AUD', |
|||
'BRL', |
|||
'CHF', |
|||
'CLP', |
|||
'CNY', |
|||
'DKK', |
|||
'HKD', |
|||
'INR', |
|||
'ISK', |
|||
'NZD', |
|||
'PLN', |
|||
'RUB', |
|||
'SEK', |
|||
'SGD', |
|||
'THB', |
|||
'TWB' |
|||
] |
|||
|
|||
// Collate all translations.
|
|||
export const translationMessages = { |
|||
en: enTranslationMessages, |
|||
bg: bgTranslationMessages, |
|||
'zh-CN': zhCNTranslationMessages, |
|||
'zh-TW': zhTWTranslationMessages, |
|||
hr: hrTranslationMessages, |
|||
cs: csTranslationMessages, |
|||
nl: nlTranslationMessages, |
|||
fr: frTranslationMessages, |
|||
ga: gaTranslationMessages, |
|||
de: deTranslationMessages, |
|||
el: elTranslationMessages, |
|||
ja: jaTranslationMessages, |
|||
pt: ptTranslationMessages, |
|||
ro: roTranslationMessages, |
|||
ru: ruTranslationMessages, |
|||
es: esTranslationMessages, |
|||
sv: svTranslationMessages, |
|||
tr: trTranslationMessages, |
|||
uk: ukTranslationMessages |
|||
} |
|||
|
|||
/** |
|||
* Get the most appropriate language code. |
|||
* @return {string} Language code. |
|||
*/ |
|||
export const getLocale = () => { |
|||
const store = new Store({ name: 'settings' }) |
|||
const userLocale = store.get('locale') |
|||
if (userLocale) { |
|||
debug('Determined locale as %s from settings', userLocale) |
|||
return userLocale |
|||
} |
|||
const defaultLocale = (app || remote.app).getLocale() || 'en-US' |
|||
const language = defaultLocale.toLowerCase().split(/[_-]+/)[0] |
|||
let locale = 'en' |
|||
if (locales.includes(language)) { |
|||
locale = language |
|||
} |
|||
if (locales.includes(defaultLocale)) { |
|||
locale = userLocale |
|||
} |
|||
debug('Determined locale as %s', locale) |
|||
return locale |
|||
} |
|||
|
|||
/** |
|||
* Get the most appropriate language code. |
|||
* @return {string} Language code. |
|||
*/ |
|||
export const getLanguageName = lang => { |
|||
const customNames = { |
|||
el: 'Greek', |
|||
'zh-CN': 'Chinese (Simplified, PRC)', |
|||
'zh-TW': 'Chinese (Traditional, Taiwan)' |
|||
} |
|||
if (customNames[lang]) { |
|||
return customNames[lang] |
|||
} |
|||
|
|||
const language = lang.toLowerCase().split(/[_-]+/)[0] |
|||
const data = lookup.languages({ alpha2: language }) |
|||
const name = get(data, '[0]name', language) |
|||
debug('Determined language as %s', name) |
|||
return name |
|||
} |
|||
|
|||
/** |
|||
* Get the most appropriate currency code. |
|||
* @return {string} Currency code. |
|||
*/ |
|||
export const getCurrency = () => { |
|||
const store = new Store({ name: 'settings' }) |
|||
const userCurrency = store.get('fiatTicker') |
|||
if (userCurrency) { |
|||
debug('Determined currency as %s from settings', userCurrency) |
|||
return userCurrency |
|||
} |
|||
const defaultLocale = (app || remote.app).getLocale() || 'en-US' |
|||
const country = defaultLocale.split(/[_-]+/)[1] |
|||
const data = lookup.countries({ alpha2: country }) |
|||
const detectedCurrency = get(data, '[0]currencies[0]', 'USD') |
|||
let currency = 'USD' |
|||
if (currencies.includes(detectedCurrency)) { |
|||
currency = detectedCurrency |
|||
} |
|||
debug('Determined currency as %s', currency) |
|||
return currency |
|||
} |
Loading…
Reference in new issue