From b24bb1da7dd59402cbfe02081c09c687aa499afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 2 Nov 2015 00:18:26 +0100 Subject: [PATCH] new module for simple language code to name mapping --- gallery_dl/iso639_1.py | 41 +++++++++++++++++++++++++++++++++++++++++ test/test_iso639_1.py | 25 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 gallery_dl/iso639_1.py create mode 100644 test/test_iso639_1.py diff --git a/gallery_dl/iso639_1.py b/gallery_dl/iso639_1.py new file mode 100644 index 00000000..2e639e9f --- /dev/null +++ b/gallery_dl/iso639_1.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- + +# Copyright 2015 Mike Fährmann +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +"""Conversion between language names and ISO 639-1 codes""" + +def code_to_language(code, default="English"): + """Map an ISO 639-1 language code to its actual name""" + return codes.get(code, default) + +def language_to_code(lang, default="en"): + """Map a language name to its ISO 639-1 code""" + for code, language in codes.items(): + if language == lang: + return code + return default + +codes = { + "cs": "Czech", + "da": "Danish", + "de": "German", + "en": "English", + "es": "Spanish", + "fi": "Finnish", + "fr": "French", + "it": "Italian", + "jp": "Japanese", + "ko": "Korean", + "nl": "Dutch", + "no": "Norwegian", + "pl": "Polish", + "pt": "Portuguese", + "ru": "Russian", + "sv": "Swedish", + "vi": "Vietnamese", + "zh": "Chinese", +} diff --git a/test/test_iso639_1.py b/test/test_iso639_1.py new file mode 100644 index 00000000..1e705ce0 --- /dev/null +++ b/test/test_iso639_1.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Copyright 2015 Mike Fährmann +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +import unittest +import gallery_dl.iso639_1 as iso639_1 + +class TestISO639_1(unittest.TestCase): + + def test_code_to_language(self): + self.assertEqual(iso639_1.code_to_language("en"), "English") + self.assertEqual(iso639_1.code_to_language("xx"), "English") + self.assertEqual(iso639_1.code_to_language("xx", default=None), None) + def test_language_to_code(self): + self.assertEqual(iso639_1.language_to_code("English"), "en") + self.assertEqual(iso639_1.language_to_code("Nothing"), "en") + self.assertEqual(iso639_1.language_to_code("Nothing", default=None), None) + +if __name__ == '__main__': + unittest.main()