# This file contains the list of available translations.
#
# Each should be prefixed with the English name for the language and
# the current maintainer's name in their preferred form and contact
# e-mail address.

# Asturian - Marcos Alvarez Costales <marcos.alvarez.costales@gmail.com>
ast

# Bosnian - Safir Šećerović <sapphire@linux.org.ba>
bs

# Catalan - Jordi Mallach <jordi@debian.org>
ca

# Czech - Miroslav Kure <kurem@debian.cz>
cs

# Danish - Claus Hindsgaul <claus_h@image.dk>
da

# German - Sven Joachim <svenjoac@gmx.de>
de

# Dzongkha - norbu <nor_den@hotmail.com>
dz

# Greek (Hellenic) - George Papamichelakis <george@step.gr>
el

# Esperanto - Felipe Castro <fefcas@gmail.com>
eo

# Spanish - Javier Fernández-Sanguino Peña <jfs@debian.org>
es

# Estonian - Ivar Smolin <okul@linux.ee>
et

# Basque (Euskara) - Piarres Beobide Egaña <pi@beobide.net>
eu

# French - Christian Perrier <bubulle@debian.org>
fr

# Galician - Héctor Fernández López <trorrr@yahoo.es>
gl

# Hungarian - Szervác Attila <sas@321.hu>
hu

# Indonesian - Arief S Fitrianto <arief@gurame.fisika.ui.ac.id>
id

# Italian - Stefano Canepa <sc@linux.it>
it

# Japanese - Kenshi Muto <kmuto@debian.org>
ja

# Khmer - Khoem Sokhem <khoemsokhem@khmeros.info>
km

# Korean - Changwoo Ryu <cwryu@debian.org>
ko

# Kurdish - Erdal Ronahi <erdal.ronahi@gmail.com>
ku

# Lithuanian - Gintautas Miliauskas <gintas@akl.lt>
lt

# Marathi - Priti Patil <prithisd@gmail.com>
mr

# Norwegian (Bokmål) - Bjorn Steensrud <bjornst@powertech.no>
nb

# Nepali - Paras Pradhan <pradhanparas@gmail.com>
ne

# Dutch - Bart Cornelis <cobaco@linux.be>
nl

# Norwegian (Nynorsk) - Håvard Korsvoll <korsvoll@skulelinux.no>
nn

# Punjabi - Amanpreet Singh Alam <apbrar@gmail.com>
pa

# Polish - Bartosz Feñski <fenio@debian.org>
pl

# Portuguese - Miguel Figueiredo <elmig@debianpt.org>
pt

# Brazilian Portuguese - André Luís Lopes <andrelop@debian.org>
pt_BR

# Romanian - Eddy Petrisor <eddy.petrisor@gmail.com>
ro

# Russian - Yuri Kozlov <yuray@id.ru>
ru

# Slovak - Ivan Masár <helix84@centrum.sk>
sk

# Swedish - Peter Krefting <peterk@debian.org>
sv

# Thai - Theppitak Karoonboonyanan <thep@linux.thai.net>
th

# Tagalog - Eric Pareja <xenos@upm.edu.ph>
tl

# Vietnamese - Clytie Siddall <clytie@riverland.net.au>
vi

# Simplified Chinese - Tchaikov <chaisave@263.com>
zh_CN

# Traditional Chinese - Asho Yeh <asho@debian.org.tw>
zh_TW
