# Based on Mojolicious::Plugin::Number::Commify
my $THOUSAND_SEP_RE = qr/(
  ^[-+]?           # beginning of number.
  \d+?             # first digits before first comma
  (?=              # followed by, (but not included in the match) :
    (?>(?:\d{3})+) # some positive multiple of three digits.
    (?!\d)         # an *exact* multiple, not x * 3 + 1 or whatever.
  )|               # or:
  \G\d{3}          # after the last group, get three digits
  (?=\d)           # but they have to have more digits after them.
)/x;

{
  _ => sub { $_->locale },
  de => {
    numf => sub {
      shift;
      my %val = @_;
      my $num = $val{number} or return 0;
      $num =~ s/$THOUSAND_SEP_RE/$1\./g;
      return $num;
    },
    numo => sub {
      shift;
      my %val = @_;
      my $day = $val{day} or return '';
        return $day . '.';
    },
    about => 'Über KorAP',
    login => 'Anmelden',
    logout => 'Abmelden',
    register => 'Registrieren',
    pwdforgotten => 'Password vergessen?',
    # TODO: use document.write() refering to vc.getName()!
    searchjob => '»<%== $q %>« <% if (param("collection")) { %>im definierten Korpus <% } %>mit <%== loc("QL_" . $ql, "unbekannter Anfragesprache") %>',
    searchtitle => '<%= loc("en_korap_label") %>: Finde <%== loc("searchjob") %>',
    searchplaceholder => 'Finde ...',
    go => 'Los!',
    news => 'Neuigkeiten',
    in => 'in',
    by => 'von',
    page => {
      -sg => 'S.',
      pl => 'S.'
    },
    pwd => 'Passwort',
    email => 'Email',
    username => 'Benutzername',
    upload => 'Hochladen',
    userormail => 'Benutzername oder Email',
    with => 'mit',
    glimpse => {
      desc => 'Zeige nur die ersten Treffer in beliebiger Reihenfolge'
    },
    activateJS => 'Für den vollen Funktionsumfang aktivieren Sie bitte JavaScript!',
    faq => 'FAQ',
    citationIntro => 'Wenn Sie die hier bereitgestellten Forschungswerkzeuge und Korpusdaten in Ihrer Forschung verwenden, zitieren Sie bitte mindestens je eine der aufgeführten Publikationen zu KorAP und zur Korpusgrundlage sowie – sofern einschlägig – die relevanten Publikationen zu den verwendeten Annotationen, Klassifikationen und Aufbereitungen:',
    corpusPub => 'Korpusgrundlage',
    korapPub => 'KorAP',
    annotationToolPub => 'Korpusaufbereitung, Annotation und Klassifikation',
    tutorial => 'Hilfe',
    tour => 'Tour',
    notAvailInCorpus => 'Im vorliegenden Korpus nicht verfügbar',
    pubOn => 'veröffentlicht am',
    matchCount => 'Treffer',
    noMatches => 'Es wurden keine Treffer für <%== loc("searchjob") %> gefunden.',
    moreMatches => {
      -short => 'mehr als',
      long => 'Dieser Wert gibt die Mindestanzahl an Treffern wieder. Die tatsächliche Trefferanzahl kann aufgrund von Sucheinschränkungen nicht angezeigt werden.',
    },
    notFound => '404 - Seite nicht gefunden',
    notIssued => 'Die Aktion konnte nicht durchgeführt werden.',
    backendNotAvailable => 'Das Backend ist nicht verfügbar unter <code><%= app->korap->api =></code>!',
    jsFile => 'kalamar-<%= $Kalamar::VERSION %>-de.js',
    underConstruction => 'In Vorbereitung!',
    korap => {
      -short => 'KorAP',
      desc => '<%= loc "en_korap_label" %> - Korpusanalyseplattform der nächsten Generation',
      overview => '<%= loc "en_korap_label" %> - Übersicht',
      keywords => 'KorAP, DeReKo, Korpussuche, IDS Mannheim, Leibniz-Institut für Deutsche Sprache',
    },
    privacy => 'Datenschutz',
    imprint => 'Impressum',
    settings => 'Einstellungen',
    'oclock' => 'Uhr',
    maintenanceWork => {
      time => 'Wartungsfenster',
      desc => 'Aufgrund von Wartungsarbeiten wird es zu Unterbrechungen des Dienstes kommen.',
    },
    Template => {
      intro => 'de/intro',
      doc => {
        ql => {
          '.' => 'de/doc/ql',
          'poliqarp-plus' => 'de/doc/ql/poliqarp-plus',
          'cosmas-2' => 'de/doc/ql/cosmas-2',
          'regexp' => 'de/doc/ql/regexp',
          'fcsql' => 'de/doc/ql/fcsql',
          'cql' => 'de/doc/ql/cql',
          'annis' => 'de/doc/ql/annis'
        },
        faq => {
          '.' => 'de/doc/faq'
        },
        api => {
          '.' => 'de/doc/api',
          'koralquery' => 'de/doc/api/koralquery'
        },
        annotation => {
          '.' => 'de/doc/annotation'
        },
        data => {
          'annotation' => 'de/doc/data/annotation'
        },
        development => {
          '.' => 'de/doc/development',
          'kalamar' => 'de/doc/development/kalamar',
          'karang' => 'de/doc/development/karang',
          'koral' => 'de/doc/development/koral',
          'krill' => 'de/doc/development/krill',
          'kustvakt' => 'de/doc/development/kustvakt'
        }
      }
    },
    Nav => {
      'ql' => 'Anfragesprachen',
      '#queryterms' => 'Suchbegriffe',
      '#logical-operators' => 'Logische Operatoren',
      '#distance-operators' =>  'Abstandsoperatoren',
      '#annotation-operators' =>  'Annotationsoperatoren',
      '#combination-operators'=>  'Kombinationsoperatoren',
      '#area-operators' =>  'Textbereich-Operatoren',
      '#segments' => 'Einfache Segmente',
      '#complex' => 'Komplexe Segmente',
      '#spans' => 'Span-Segmente',
      '#paradigmatic-operators' => 'Paradigmatische Operatoren',
      '#syntagmatic-operators' => 'Syntagmatische Operatoren',
      '#class-operators' => 'Klassen-Operatoren',
      'regexp' => 'Reguläre Ausdrücke',
      'data' => 'Korpusdaten',
      'corpus' => 'Korpora',
      'annotation' => 'Annotationen',
      '#default-foundries' => 'Standard Foundries',
      'development' => 'Entwicklung',
      'faq' => 'FAQ',
    }
  },
  -en => {
    jsFile => 'kalamar-<%= $Kalamar::VERSION %>-en.js',
    numf => sub {
      shift;
      my %val = @_;
      my $num = $val{number} or return 0;
      $num =~ s/$THOUSAND_SEP_RE/$1\,/g;
      return $num;
    },
    numo => sub {
      shift;
      my %val = @_;
      my $day = $val{day} or return '';
      if ($day > 3) {
        return $day . 'th';
      } elsif ($day == 3) {
        return '3rd';
      } elsif ($day == 2) {
        return '2nd';
      };
      return '1st';
    },
    about => 'About KorAP',
    login => 'Login',
    logout => 'Logout',
    register => 'Register',
    pwdforgotten => 'Password forgotten?',
    go => 'Go!',
    news => 'News',
    # TODO: use document.write() refering to vc.getName()!
    searchjob => '»<%== $q %>« <% if (param("collection")) { %>in the defined corpus <% } %>with <%== loc("QL_". $ql, "unknown query language") %>',
    searchtitle => '<%= loc("korap_label") %>: Find <%== loc("searchjob") %>',
    searchplaceholder => 'Find ...',
    in => 'in',
    by => 'by',
    page => {
      -sg => 'p.',
      pl  => 'pp.',
    },
    pwd => 'Password',
    email => 'Email',
    username => 'Username',
    upload => 'Upload',
    userormail => 'Username or Email',
    with => 'with',
    notAvailInCorpus => 'Not available in the current corpus',
    pubOn => 'published on',
    matchCount => '<%= quant($found, "match", "matches") %>',
    noMatches => 'There were no matches found for <%== loc("searchjob") %>.',
    moreMatches => {
      -short => 'more than',
      long => 'This value represents the minimum number of matches in the database. The exact number cannot be displayed due to search restrictions.',
    },

    notFound => '404 - Page not found',
    notIssued => 'Unable to perform the action.',
    backendNotAvailable => 'The backend is not available at <code><%= app->korap->api %></code>!',
    glimpse => {
      -short => 'Glimpse',
      desc => 'Just show the first matches in arbitrary order'
    },
    activateJS => 'To make use of all features, please activate JavaScript!',
    faq => 'FAQ',
    citationIntro => 'If you use the research tools and corpus data provided here in your research, please cite at least one of the listed publications on KorAP and on the underlying corpus and, where applicable, the relevant publications on the annotations, classifications and preparation steps used:',
    corpusPub => 'Corpus basis',
    korapPub => 'KorAP',
    annotationToolPub => 'Corpus preparation, annotation and classification',
    'oclock' => 'o\'clock',
    underConstruction => 'Under Construction!',
    tutorial => 'Help',
    tour => 'Tour',
    korap => {
      -short => 'KorAP',
      label => '<%= loc "korap_short" %><% if (loc("title_addon")) { %>-<%= loc("title_addon") %><% } %>',
      desc => '<%= loc "korap_label" %> - Corpus Analysis Platform',
      overview => '<%= loc "korap_label" %> - Overview',
      region => 'DE-BW',
      placename => 'Mannheim',
      keywords => 'KorAP, DeReKo, Corpus Query Platform, IDS Mannheim, Leibniz Institute for the German Language'
    },
    QL => {
      poliqarp => 'Poliqarp',
      cosmas2 => 'Cosmas II',
      annis => 'Annis QL',
      cqp => 'CQP',
      cql => 'CQL v1.2',
      fcsql => 'FCSQL'
    },
    privacy => 'Privacy',
    imprint => 'Imprint',
    settings => 'Settings',
    maintenanceWork => {
      time => 'Maintenance',
      desc => 'Due to maintenance work the service will be interrupted.',
    },
    Template => {
      intro => 'intro',
      doc => {
        ql => {
          '.' => 'doc/ql',
          'poliqarp-plus' => 'doc/ql/poliqarp-plus',
          'cosmas-2' => 'doc/ql/cosmas-2',
          'regexp' => 'doc/ql/regexp',
          'fcsql' => 'doc/ql/fcsql',
          'cql' => 'doc/ql/cql',
          'annis' => 'doc/ql/annis'
        },
        faq => {
          '.' => 'doc/faq'
        },
        api => {
          '.' => 'doc/api',
          'koralquery' => 'doc/api/koralquery'
        },
        annotation => {
          '.' => '/doc/annotation'
        },
        data => {
          'annotation' => 'doc/data/annotation'
        },
        development => {
          '.' => 'doc/development',
          'kalamar' => 'doc/development/kalamar',
          'karang' => 'doc/development/karang',
          'koral' => 'doc/development/koral',
          'krill' => 'doc/development/krill',
          'kustvakt' => 'doc/development/kustvakt'
        }
      }
    },
    Nav => {
      'ql' => 'Query Languages',
      '#queryterms' => 'Query Terms',
      '#logical-operators' => 'Logical Operators',
      '#distance-operators' =>  'Distance Operators',
      '#annotation-operators' =>  'Annotation Operators',
      '#combination-operators'=>  'Combination Operators',
      '#area-operators' =>  'Area Operators',
      '#segments' => 'Simple Segments',
      '#complex' => 'Complex Segments',
      '#spans' => 'Span Segments',
      '#paradigmatic-operators' => 'Paradigmatic Operators',
      '#syntagmatic-operators' => 'Syntagmatic Operators',
      '#class-operators' => 'Class Operators',
      'regexp' => 'Regular Expressions',
      'data' => 'Corpus Data',
      'corpus' => 'Corpora',
      'annotation' => 'Annotations',
      '#default-foundries' => 'Default Foundries',
      'development' => 'Development',
      'faq' => 'FAQ'
    }
  },
  Piwik => {
    en => {
      'HowToOptOut' => 'How to opt-out from Piwik/Matomo tracking?'
    },
    de => {
      'HowToOptOut' => 'Wie kann ich die Weitergabe meiner Daten per Matomo/Piwik unterbinden?'
    }
  }
};
