@ -1,12 +1,28 @@
import { ResourceKey } from 'i18next' ;
import { uniq } from 'lodash' ;
import { config } from '@grafana/runtime' ;
export const ENGLISH_US = 'en-US' ;
export const FRENCH_FRANCE = 'fr-FR' ;
export const SPANISH_SPAIN = 'es-ES' ;
export const GERMAN_GERMANY = 'de-DE' ;
export const BRAZILIAN_PORTUGUESE = 'pt-BR' ;
export const CHINESE_SIMPLIFIED = 'zh-Hans' ;
export const ITALIAN_ITALY = 'it-IT' ;
export const JAPANESE_JAPAN = 'ja-JP' ;
export const INDONESIAN_INDONESIA = 'id-ID' ;
export const KOREAN_KOREA = 'ko-KR' ;
export const RUSSIAN_RUSSIA = 'ru-RU' ;
export const CZECH_CZECHIA = 'cs-CZ' ;
export const DUTCH_NETHERLANDS = 'nl-NL' ;
export const HUNGARIAN_HUNGARY = 'hu-HU' ;
export const PORTUGUESE_PORTUGAL = 'pt-PT' ;
export const POLISH_POLAND = 'pl-PL' ;
export const SWEDISH_SWEDEN = 'sv-SE' ;
export const TURKISH_TURKEY = 'tr-TR' ;
export const CHINESE_TRADITIONAL = 'zh-Hant' ;
export const PSEUDO_LOCALE = 'pseudo' ;
export const DEFAULT_LANGUAGE = ENGLISH_US ;
@ -24,6 +40,113 @@ export interface LanguageDefinition<Namespace extends string = string> {
loader : Record < Namespace , LocaleFileLoader > ;
}
// New languages added recently without translations available yet
const NEW_LANGUAGES : LanguageDefinition [ ] = [
{
code : CHINESE_TRADITIONAL ,
name : '中文(繁體)' ,
loader : {
grafana : ( ) = > import ( '../../../locales/zh-Hant/grafana.json' ) ,
} ,
} ,
{
code : ITALIAN_ITALY ,
name : 'Italiano' ,
loader : {
grafana : ( ) = > import ( '../../../locales/it-IT/grafana.json' ) ,
} ,
} ,
{
code : JAPANESE_JAPAN ,
name : '日本語' ,
loader : {
grafana : ( ) = > import ( '../../../locales/ja-JP/grafana.json' ) ,
} ,
} ,
{
code : INDONESIAN_INDONESIA ,
name : 'Bahasa Indonesia' ,
loader : {
grafana : ( ) = > import ( '../../../locales/id-ID/grafana.json' ) ,
} ,
} ,
{
code : KOREAN_KOREA ,
name : '한국어' ,
loader : {
grafana : ( ) = > import ( '../../../locales/ko-KR/grafana.json' ) ,
} ,
} ,
{
code : RUSSIAN_RUSSIA ,
name : 'Русский' ,
loader : {
grafana : ( ) = > import ( '../../../locales/ru-RU/grafana.json' ) ,
} ,
} ,
{
code : CZECH_CZECHIA ,
name : 'Čeština' ,
loader : {
grafana : ( ) = > import ( '../../../locales/cs-CZ/grafana.json' ) ,
} ,
} ,
{
code : DUTCH_NETHERLANDS ,
name : 'Nederlands' ,
loader : {
grafana : ( ) = > import ( '../../../locales/nl-NL/grafana.json' ) ,
} ,
} ,
{
code : HUNGARIAN_HUNGARY ,
name : 'Magyar' ,
loader : {
grafana : ( ) = > import ( '../../../locales/hu-HU/grafana.json' ) ,
} ,
} ,
{
code : PORTUGUESE_PORTUGAL ,
name : 'Português' ,
loader : {
grafana : ( ) = > import ( '../../../locales/pt-PT/grafana.json' ) ,
} ,
} ,
{
code : POLISH_POLAND ,
name : 'Polski' ,
loader : {
grafana : ( ) = > import ( '../../../locales/pl-PL/grafana.json' ) ,
} ,
} ,
{
code : SWEDISH_SWEDEN ,
name : 'Svenska' ,
loader : {
grafana : ( ) = > import ( '../../../locales/sv-SE/grafana.json' ) ,
} ,
} ,
{
code : TURKISH_TURKEY ,
name : 'Türkçe' ,
loader : {
grafana : ( ) = > import ( '../../../locales/tr-TR/grafana.json' ) ,
} ,
} ,
] ;
export const LANGUAGES : LanguageDefinition [ ] = [
{
code : ENGLISH_US ,
@ -74,6 +197,10 @@ export const LANGUAGES: LanguageDefinition[] = [
} ,
] satisfies Array < LanguageDefinition < ' grafana ' > > ;
if ( config . featureToggles ? . extraLanguages ) {
LANGUAGES . push ( . . . NEW_LANGUAGES ) ;
}
if ( process . env . NODE_ENV === 'development' ) {
LANGUAGES . push ( {
code : PSEUDO_LOCALE ,