import { useState, useEffect } from 'react' import { PrimeReactProvider } from 'primereact/api' import 'primereact/resources/themes/lara-light-cyan/theme.css' import ModelTable from './components/ModelTable' import LanguageTable from './components/LanguageTable' import DatasetTable from './components/DatasetTable' import WorldMap from './components/WorldMap' import AutoComplete from './components/AutoComplete' import LanguagePlot from './components/LanguagePlot' import SpeakerPlot from './components/SpeakerPlot' import HistoryPlot from './components/HistoryPlot' import CostPlot from './components/CostPlot' import { Carousel } from 'primereact/carousel' import { Dialog } from 'primereact/dialog' import { Button } from 'primereact/button' function App () { const [data, setData] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [selectedLanguages, setSelectedLanguages] = useState([]) const [dialogVisible, setDialogVisible] = useState(false) const [aboutVisible, setAboutVisible] = useState(false) const [contributeVisible, setContributeVisible] = useState(false) useEffect(() => { fetch('/api/data', { method: 'POST', body: JSON.stringify({ selectedLanguages }) }) .then(response => { if (!response.ok) { throw new Error('Network response was not ok') } return response.json() }) .then(jsonData => { setData(jsonData) setLoading(false) }) .catch(err => { setError(err.message) setLoading(false) }) }, [selectedLanguages]) const [windowWidth, setWindowWidth] = useState(window.innerWidth) const [windowHeight, setWindowHeight] = useState(window.innerHeight) useEffect(() => { const handleResize = () => { setWindowWidth(window.innerWidth) setWindowHeight(window.innerHeight) } window.addEventListener('resize', handleResize) return () => window.removeEventListener('resize', handleResize) }, []) return (
Work in Progress: This dashboard is currently under active development. Evaluation results are not yet final. GitHub
🌍

AI Language Proficiency Monitor

Comprehensive multilingual evaluation results for AI language models

{data && ( setSelectedLanguages(items)} /> )}
{loading && (
)} {error &&

Error: {error}

} {data && ( <>
)}
{/* About Dialog */} setAboutVisible(false)} style={{ width: '600px' }} modal header="About this tool" >

The AI Language Proficiency Monitor presents comprehensive multilingual evaluation results of AI language models.

Who is this for?

  • Practitioners can pick the best model for a given language.
  • Policymakers and funders can identify and prioritize neglected languages.
  • Model developers can compete on our AI Language Proficiency metric.

⚡ Live Updates

Benchmark results automatically refresh every night and include the most popular models from OpenRouter, plus community-submitted models.

Authors

The AI Language Proficiency Monitor is a collaboration between BMZ's Data Lab, the BMZ-Initiative Fair Forward (implemented by GIZ), and the E&E group of DFKI's Multilinguality and Language Technology Lab.

🔗 Links

View source code on GitHub

{/* Contribute Dialog */} setContributeVisible(false)} style={{ width: '600px' }} modal header="Add your model & Contribute" >

🚀 Submit Your Model

Have a custom fine-tuned model you'd like to see on the leaderboard?

→ Submit your model here

🔧 Contribute to Development

Help us expand language coverage and add new evaluation tasks:

→ Contribution guidelines

{/* Full-screen Dialog for Charts */} setDialogVisible(false)} style={{ width: '90vw', height: '90vh' }} maximizable modal header={null} > {data && (
, , , , , ]} numScroll={1} numVisible={1} itemTemplate={item => item} circular style={{ width: '100%', height: 'calc(90vh - 120px)' }} />
)}
) } export default App