# These users were blocked because they are spammers, and therefore shouldn't be
# included in the credits section.
watabas
p.karlsen
Julpetter
viki19822
jjroot19
mattiasxxpersson
JeremyMaloney
greenairbus01

# These users joined the project but didn't make any translation, so they
# shouldn't be credited neither.
# NOTE: This list should be revisited in the future in case they actually
# contribute.
yolandarobinson3838
ema168rutter
bsiwanon
nlmyst-35

# These users joined the project and submitted translations, but all of them
# are incorrect (e.g. they were submitted to the wrong language).
# We block them so they aren't listed with the wrong language.
# NOTE: Once their translations have been cleaned/moved, each translator should
# be removed from this list.
mikkosaarinentapani
deepIQ
Trytek
onebadai1
ahmedsayd

# This is the extension creator, so he shouldn't be credited as a translator
# neither.
avm99963
