text: 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',
  ]
  
  // Define 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',
    'UAH',
  ]
  
  /**
   * 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 getDefaultLocale = () => {
    const defaultLocale = window.navigator.language || 'en-US'
    const language = defaultLocale.toLowerCase().split(/[_-]+/)[0]
    let locale = 'en'
    if (locales.includes(language)) {
      locale = language
    }
    if (locales.includes(defaultLocale)) {
      locale = defaultLocale
    }
    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 getDefaultCurrency = () => {
    const defaultLocale = getDefaultLocale()
    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
  }
  