2018-10-31 19:34:40 +00:00
|
|
|
# coding=utf-8
|
2018-10-04 18:16:49 +00:00
|
|
|
|
2018-12-15 00:36:28 +00:00
|
|
|
import os
|
2018-10-04 18:16:49 +00:00
|
|
|
import sqlite3
|
|
|
|
import pycountry
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
from get_args import args
|
2019-02-27 21:12:29 +00:00
|
|
|
from subzero.language import Language
|
2018-10-31 19:34:40 +00:00
|
|
|
|
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def load_language_in_db():
|
|
|
|
# Get languages list in langs tuple
|
2018-10-31 19:34:40 +00:00
|
|
|
langs = [[lang.alpha_3, lang.alpha_2, lang.name]
|
|
|
|
for lang in pycountry.languages
|
|
|
|
if hasattr(lang, 'alpha_2')]
|
2019-01-15 16:25:13 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
# Open database connection
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
2019-01-15 16:25:13 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
# Insert languages in database table
|
|
|
|
c.executemany('''INSERT OR IGNORE INTO table_settings_languages(code3, code2, name) VALUES(?, ?, ?)''', langs)
|
2018-10-31 19:34:40 +00:00
|
|
|
c.execute('''INSERT OR IGNORE INTO table_settings_languages(code3, code2, name) VALUES(?, ?, ?)''',
|
|
|
|
('pob', 'pb', 'Brazilian Portuguese'))
|
2019-01-15 16:25:13 +00:00
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
langs = [[lang.bibliographic, lang.alpha_3]
|
|
|
|
for lang in pycountry.languages
|
|
|
|
if hasattr(lang, 'alpha_2') and hasattr(lang, 'bibliographic')]
|
2019-01-15 16:25:13 +00:00
|
|
|
|
2018-10-24 23:56:37 +00:00
|
|
|
# Update languages in database table
|
|
|
|
c.executemany('''UPDATE table_settings_languages SET code3b = ? WHERE code3 = ?''', langs)
|
2019-01-15 16:25:13 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
# Commit changes to database table
|
|
|
|
db.commit()
|
2019-01-15 16:25:13 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
# Close database connection
|
|
|
|
db.close()
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def language_from_alpha2(lang):
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
|
|
|
try:
|
|
|
|
result = c.execute('''SELECT name FROM table_settings_languages WHERE code2 = ?''', (lang,)).fetchone()[0]
|
|
|
|
except:
|
|
|
|
result = None
|
2018-10-17 00:20:32 +00:00
|
|
|
db.close()
|
2018-10-04 18:16:49 +00:00
|
|
|
return result
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def language_from_alpha3(lang):
|
|
|
|
if lang == 'fre':
|
|
|
|
lang = 'fra'
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
|
|
|
try:
|
2018-10-31 19:34:40 +00:00
|
|
|
result = c.execute('''SELECT name FROM table_settings_languages WHERE code3 = ? OR code3b = ?''',
|
|
|
|
(lang, lang)).fetchone()[0]
|
2018-10-04 18:16:49 +00:00
|
|
|
except:
|
|
|
|
result = None
|
2018-10-17 00:20:32 +00:00
|
|
|
db.close()
|
2018-10-04 18:16:49 +00:00
|
|
|
return result
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def alpha2_from_alpha3(lang):
|
|
|
|
if lang == 'fre':
|
|
|
|
lang = 'fra'
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
|
|
|
try:
|
2018-10-31 19:34:40 +00:00
|
|
|
result = c.execute('''SELECT code2 FROM table_settings_languages WHERE code3 = ? OR code3b = ?''',
|
|
|
|
(lang, lang)).fetchone()[0]
|
2018-10-04 18:16:49 +00:00
|
|
|
except:
|
|
|
|
result = None
|
2018-10-17 00:20:32 +00:00
|
|
|
db.close()
|
2018-10-04 18:16:49 +00:00
|
|
|
return result
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def alpha2_from_language(lang):
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
|
|
|
try:
|
|
|
|
result = c.execute('''SELECT code2 FROM table_settings_languages WHERE name = ?''', (lang,)).fetchone()[0]
|
|
|
|
except:
|
|
|
|
result = None
|
2018-10-17 00:20:32 +00:00
|
|
|
db.close()
|
2018-10-04 18:16:49 +00:00
|
|
|
return result
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def alpha3_from_alpha2(lang):
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
|
|
|
try:
|
|
|
|
result = c.execute('''SELECT code3 FROM table_settings_languages WHERE code2 = ?''', (lang,)).fetchone()[0]
|
|
|
|
except:
|
|
|
|
result = None
|
2018-10-17 00:20:32 +00:00
|
|
|
db.close()
|
2018-10-04 18:16:49 +00:00
|
|
|
return result
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
def alpha3_from_language(lang):
|
2018-10-31 19:34:40 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
2018-10-04 18:16:49 +00:00
|
|
|
c = db.cursor()
|
|
|
|
try:
|
|
|
|
result = c.execute('''SELECT code3 FROM table_settings_languages WHERE name = ?''', (lang,)).fetchone()[0]
|
|
|
|
except:
|
|
|
|
result = None
|
2018-10-17 00:20:32 +00:00
|
|
|
db.close()
|
2018-10-04 18:16:49 +00:00
|
|
|
return result
|
|
|
|
|
2018-10-31 19:34:40 +00:00
|
|
|
|
2019-02-27 21:12:29 +00:00
|
|
|
def get_language_set(kind="code3"):
|
2019-02-27 21:07:20 +00:00
|
|
|
db = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
|
|
|
|
c = db.cursor()
|
|
|
|
c.execute('''SELECT ?, name FROM table_settings_languages WHERE enabled = 1''', (kind,))
|
2019-02-27 21:12:29 +00:00
|
|
|
language_set = set()
|
|
|
|
|
|
|
|
for lang in c.fetchall():
|
|
|
|
# fixme: currently only works with kind=code3
|
|
|
|
if lang == 'pob':
|
|
|
|
language_set.add(Language('por', 'BR'))
|
|
|
|
else:
|
|
|
|
language_set.add(Language(lang))
|
|
|
|
|
|
|
|
return language_set
|
2019-02-27 21:07:20 +00:00
|
|
|
|
|
|
|
|
2018-10-04 18:16:49 +00:00
|
|
|
if __name__ == '__main__':
|
2018-10-17 00:20:32 +00:00
|
|
|
load_language_in_db()
|