@@ -594,9 +594,13 @@ def get_language(lang):
594594
595595def get_lang_general (conn , lang ):
596596 """ Language general attributes. """
597+ ref_q = "SELECT id, ref_id FROM tbl_language WHERE name = ?"
598+ ref_data = conn .execute (ref_q , (lang ,)).fetchone ()
599+ lang_id = ref_data [1 ] if ref_data [1 ] else ref_data [0 ]
600+
597601 lang_q = conn .execute (
598602 """SELECT id, name, label, features, marc_code, description
599- FROM tbl_language WHERE name = ?""" , (lang ,))
603+ FROM tbl_language WHERE id = ?""" , (lang_id ,))
600604 lang_data = lang_q .fetchone ()
601605
602606 if not lang_data :
@@ -605,7 +609,7 @@ def get_lang_general(conn, lang):
605609 return {
606610 "id" : lang_data [0 ],
607611 "data" : {
608- "name" : lang_data [ 1 ] ,
612+ "name" : lang ,
609613 "label" : lang_data [2 ],
610614 "has_s2r" : bool (lang_data [3 ] & FEAT_S2R ),
611615 "has_r2s" : bool (lang_data [3 ] & FEAT_R2S ),
@@ -617,6 +621,7 @@ def get_lang_general(conn, lang):
617621
618622
619623def get_lang_normalize (conn , lang_id ):
624+ lang_id = _get_ref (conn , lang_id )
620625 qry = conn .execute (
621626 """SELECT src, dest FROM tbl_normalize
622627 WHERE lang_id = ?""" ,
@@ -628,6 +633,7 @@ def get_lang_ignore(conn, lang_id):
628633 """
629634 Ignore list as a tuple.
630635 """
636+ lang_id = _get_ref (conn , lang_id )
631637 qry = conn .execute (
632638 """SELECT rule, features FROM tbl_ignore
633639 WHERE lang_id = ?""" ,
@@ -644,6 +650,7 @@ def get_lang_map(conn, lang_id, t_dir):
644650
645651 Generator of tuples (source, destination).
646652 """
653+ lang_id = _get_ref (conn , lang_id )
647654 qry = conn .execute (
648655 """SELECT src, dest FROM tbl_trans_map
649656 WHERE lang_id = ? AND dir = ?
@@ -656,6 +663,7 @@ def get_lang_map(conn, lang_id, t_dir):
656663
657664def get_lang_options (conn , lang_id ):
658665 """ Language options as a tuple of dictionaries. """
666+ lang_id = _get_ref (conn , lang_id )
659667 qry = conn .execute (
660668 """SELECT name, label, description, dtype, options, default_v
661669 FROM tbl_option
@@ -676,6 +684,7 @@ def get_lang_options(conn, lang_id):
676684
677685
678686def get_lang_hooks (conn , lang_id , t_dir ):
687+ lang_id = _get_ref (conn , lang_id )
679688 """ Language hooks in sorting order. """
680689 hooks = defaultdict (list )
681690
@@ -698,9 +707,18 @@ def get_lang_hooks(conn, lang_id, t_dir):
698707
699708
700709def get_lang_dcap (conn , lang_id ):
710+ lang_id = _get_ref (conn , lang_id )
701711 qry = conn .execute (
702712 """SELECT rule
703713 FROM tbl_double_cap WHERE lang_id = ?""" ,
704714 (lang_id ,))
705715
706716 return tuple (row [0 ] for row in qry )
717+
718+
719+ def _get_ref (conn , lang_id ):
720+ ref_data = conn .execute (
721+ """SELECT ref_id FROM tbl_language WHERE id = ?""" ,
722+ (lang_id ,)).fetchone ()
723+
724+ return ref_data [0 ] if ref_data and ref_data [0 ] else lang_id
0 commit comments