잉여개발기 11 månader sedan
förälder
incheckning
91e3831fd3
100 ändrade filer med 1151 tillägg och 1124 borttagningar
  1. 3 3
      app.py
  2. 1 0
      requirements.txt
  3. 1 1
      route/__init__.py
  4. 3 3
      route/api_skin_info.py
  5. 1 1
      route/api_user_info.py
  6. 6 6
      route/bbs_delete.py
  7. 7 7
      route/bbs_make.py
  8. 17 17
      route/bbs_w.py
  9. 8 8
      route/bbs_w_comment_tool.py
  10. 7 7
      route/bbs_w_delete.py
  11. 14 14
      route/bbs_w_edit.py
  12. 5 5
      route/bbs_w_hide.py
  13. 5 5
      route/bbs_w_pinned.py
  14. 8 8
      route/bbs_w_post.py
  15. 10 10
      route/bbs_w_tool.py
  16. 31 37
      route/edit.py
  17. 1 1
      route/edit_backlink_reset.py
  18. 6 6
      route/edit_delete.py
  19. 5 5
      route/edit_delete_file.py
  20. 7 7
      route/edit_delete_multiple.py
  21. 22 22
      route/edit_move.py
  22. 6 6
      route/edit_request.py
  23. 7 7
      route/edit_revert.py
  24. 10 10
      route/edit_upload.py
  25. 16 16
      route/filter_all.py
  26. 32 32
      route/filter_all_add.py
  27. 65 65
      route/give_admin_groups.py
  28. 4 4
      route/give_delete_admin_group.py
  29. 26 26
      route/give_user_ban.py
  30. 11 11
      route/give_user_fix.py
  31. 4 1
      route/go_api_bbs.py
  32. 1 1
      route/go_api_w_render.py
  33. 1 1
      route/go_main_func_easter_egg.py
  34. 4 4
      route/list_acl.py
  35. 3 3
      route/list_admin.py
  36. 6 6
      route/list_admin_auth_use.py
  37. 5 5
      route/list_admin_group.py
  38. 8 8
      route/list_history.py
  39. 8 8
      route/list_image_file.py
  40. 4 4
      route/list_long_page.py
  41. 4 4
      route/list_no_link.py
  42. 5 5
      route/list_old_page.py
  43. 4 4
      route/list_please.py
  44. 10 10
      route/list_title_index.py
  45. 4 4
      route/list_user.py
  46. 17 17
      route/list_user_check.py
  47. 7 7
      route/list_user_check_delete.py
  48. 5 5
      route/login_find.py
  49. 12 12
      route/login_find_email.py
  50. 10 10
      route/login_find_email_check.py
  51. 10 10
      route/login_find_key.py
  52. 8 8
      route/login_login.py
  53. 6 6
      route/login_login_2fa.py
  54. 6 6
      route/login_login_2fa_email.py
  55. 9 9
      route/login_register.py
  56. 6 7
      route/login_register_email.py
  57. 5 5
      route/login_register_email_check.py
  58. 6 6
      route/login_register_submit.py
  59. 1 1
      route/main_func_error_404.py
  60. 8 8
      route/main_search_deep.py
  61. 14 14
      route/main_setting.py
  62. 3 3
      route/main_setting_404_page.py
  63. 12 12
      route/main_setting_email_test.py
  64. 22 22
      route/main_setting_external.py
  65. 10 10
      route/main_setting_head.py
  66. 59 59
      route/main_setting_main.py
  67. 6 6
      route/main_setting_main_logo.py
  68. 42 42
      route/main_setting_phrase.py
  69. 5 5
      route/main_setting_robot.py
  70. 4 4
      route/main_setting_sitemap.py
  71. 11 11
      route/main_setting_sitemap_set.py
  72. 32 32
      route/main_setting_skin_set.py
  73. 6 6
      route/main_setting_top_menu.py
  74. 5 5
      route/main_sys_restart.py
  75. 4 4
      route/main_sys_shutdown.py
  76. 9 9
      route/main_sys_update.py
  77. 41 41
      route/main_tool_admin.py
  78. 34 34
      route/main_tool_other.py
  79. 20 20
      route/main_tool_redirect.py
  80. 44 4
      route/n_bbs_in.py
  81. 3 3
      route/n_bbs_main.py
  82. 3 3
      route/n_bbs_w_set.py
  83. 3 3
      route/n_edit_move_all.py
  84. 4 4
      route/n_give_auth.py
  85. 9 9
      route/n_list_recent_block.py
  86. 5 5
      route/n_list_recent_discuss.py
  87. 3 3
      route/n_list_user_check_submit.py
  88. 3 3
      route/n_topic_list.py
  89. 3 3
      route/n_w_watch_list.py
  90. 12 12
      route/recent_app_submit.py
  91. 36 36
      route/recent_change.py
  92. 6 6
      route/recent_edit_request.py
  93. 5 5
      route/recent_history_add.py
  94. 5 5
      route/recent_history_delete.py
  95. 5 5
      route/recent_history_reset.py
  96. 5 5
      route/recent_history_send.py
  97. 14 14
      route/recent_history_tool.py
  98. 5 5
      route/recent_record_reset.py
  99. 7 7
      route/recent_record_topic.py
  100. 100 110
      route/tool/func.py

+ 3 - 3
app.py

@@ -462,7 +462,7 @@ def before_request_func():
                             history.go(0);
                         }
                     </script>
-                    <h2>''' + get_lang(conn, 'error_password_require_for_wiki_access') + '''</h2>
+                    <h2>''' + load_lang('error_password_require_for_wiki_access') + '''</h2>
                     <input type="password" id="wiki_access">
                     <input type="submit" onclick="opennamu_do_wiki_access();">
                 '''
@@ -873,9 +873,9 @@ app.route('/api/v2/history/<int:num>/<set_type>/<everything:doc_name>')(api_list
 app.route('/api/v2/topic/<int:num>/<set_type>/<everything:name>')(api_topic_list)
 
 app.route('/api/v2/bbs')(api_bbs_list)
-app.route('/api/v2/bbs/main')(api_bbs)
+app.route('/api/v2/bbs/main')(api_bbs_exter)
 app.route('/api/v2/bbs/set/<int:bbs_num>/<name>', methods = ['GET', 'PUT'])(api_bbs_w_set)
-app.route('/api/v2/bbs/in/<int:bbs_num>/<int:page>')(api_bbs)
+app.route('/api/v2/bbs/in/<int:bbs_num>/<int:page>')(api_bbs_exter)
 app.route('/api/v2/bbs/w/<sub_code>', defaults = { 'legacy' : '' })(api_bbs_w)
 app.route('/api/v2/bbs/w/tabom/<sub_code>', methods = ['GET', 'POST'])(api_bbs_w_tabom)
 app.route('/api/v2/bbs/w/comment/<sub_code>/<tool>', defaults = { 'legacy' : '' })(api_bbs_w_comment_exter)

+ 1 - 0
requirements.txt

@@ -6,6 +6,7 @@ hypercorn
 
 aiohttp
 asyncio
+nest_asyncio
 requests
 
 diff-match-patch

+ 1 - 1
route/__init__.py

@@ -196,7 +196,7 @@ from route.go_api_list_auth import api_list_auth
 from route.go_api_list_markup import api_list_markup
 from route.go_api_list_history import api_list_history, api_list_history_exter
 
-from route.go_api_bbs import api_bbs
+from route.go_api_bbs import api_bbs, api_bbs_exter
 from route.go_api_bbs_list import api_bbs_list
 from route.go_api_bbs_w import api_bbs_w
 from route.go_api_bbs_w_set import api_bbs_w_set

+ 3 - 3
route/api_skin_info.py

@@ -4,7 +4,7 @@ from .tool.func import *
 
 async def api_skin_info(name = ''):
     with get_db_connect() as conn:
-        name = skin_check(conn) if name == '' else './views/' + name + '/index.html'
+        name = await skin_check(conn) if name == '' else './views/' + name + '/index.html'
 
         if not flask.request.args.get('all', None):
             json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", name)
@@ -25,7 +25,7 @@ async def api_skin_info(name = ''):
                 "Before Namu" : "https://raw.githubusercontent.com/openNAMU/openNAMU-Skin-Before_Namu/master/info.json"
             }
 
-            for i in load_skin(conn, skin_check(conn, 1), 1):
+            for i in await load_skin(await skin_check(conn, 1), 1):
                 json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", './views/' + i + '/index.html')
                 try:
                     json_data = json_loads(open(json_address, encoding='utf8').read())
@@ -33,7 +33,7 @@ async def api_skin_info(name = ''):
                     json_data = None
 
                 if json_data:
-                    if i == skin_check(conn, 1):
+                    if i == await skin_check(conn, 1):
                         json_data = {**json_data, **{ "main" : "true" }}
 
                     if "info_link" in json_data:

+ 1 - 1
route/api_user_info.py

@@ -74,6 +74,6 @@ async def api_user_info(user_name = ''):
             'edit_request_able',
             'cidr'
         ]
-        lang_data = { for_a : get_lang(conn, for_a) for for_a in lang_data_list }
+        lang_data = { for_a : await get_lang(for_a) for for_a in lang_data_list }
                 
         return flask.jsonify({ 'data' : data_result, 'language' : lang_data })

+ 6 - 6
route/bbs_delete.py

@@ -26,14 +26,14 @@ async def bbs_delete(bbs_num = ''):
             
             return redirect(conn, '/bbs/main')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'bbs_delete'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('bbs_delete'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
+                data = await render_simple_set('''
                     <form method="post">
-                        <span>''' + get_lang(conn, 'delete_warning') + '''</span>
+                        <span>''' + await get_lang('delete_warning') + '''</span>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'delete') + '''</button>
+                        <button type="submit">''' + await get_lang('delete') + '''</button>
                     </form>
                 '''),
-                menu = [['bbs/set/' + bbs_num_str, get_lang(conn, 'return')]]
+                menu = [['bbs/set/' + bbs_num_str, await get_lang('return')]]
             ))

+ 7 - 7
route/bbs_make.py

@@ -21,21 +21,21 @@ async def bbs_make():
 
             return redirect(conn, '/bbs/main')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'bbs_make'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('bbs_make'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <input placeholder="''' + get_lang(conn, 'bbs_name') + '''" name="bbs_name">
+                        <input placeholder="''' + await get_lang('bbs_name') + '''" name="bbs_name">
                         <hr class="main_hr">
                         
                         <select name="bbs_type">
-                            <option value="comment">''' + get_lang(conn, 'comment_base') + '''</option>
-                            <option value="thread">''' + get_lang(conn, 'thread_base') + '''</option>
+                            <option value="comment">''' + await get_lang('comment_base') + '''</option>
+                            <option value="thread">''' + await get_lang('thread_base') + '''</option>
                         </select>
                         <hr class="main_hr">
                         
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['bbs/main', get_lang(conn, 'return')]]
+                menu = [['bbs/main', await get_lang('return')]]
             ))

+ 17 - 17
route/bbs_w.py

@@ -22,24 +22,24 @@ async def bbs_w(bbs_num = '', tool = 'bbs', page = 1, name = ''):
             bbs_num_str = str(bbs_num)
 
             title_name = bbs_name
-            sub = '(' + get_lang(conn, 'bbs') + ')'
-            menu = [['bbs/main', get_lang(conn, 'return')], ['bbs/edit/' + bbs_num_str, get_lang(conn, 'add')], ['bbs/set/' + bbs_num_str, get_lang(conn, 'bbs_set')]]
+            sub = '(' + await get_lang('bbs') + ')'
+            menu = [['bbs/main', await get_lang('return')], ['bbs/edit/' + bbs_num_str, await get_lang('add')], ['bbs/set/' + bbs_num_str, await get_lang('bbs_set')]]
         elif tool == 'record':
             curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
             db_data = curs.fetchall()
             bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
             
             title_name = name
-            sub = '(' + get_lang(conn, 'bbs_record') + ')'
-            menu = [['user/' + url_pas(name), get_lang(conn, 'user_tool')]]
+            sub = '(' + await get_lang('bbs_record') + ')'
+            menu = [['user/' + url_pas(name), await get_lang('user_tool')]]
         elif tool == 'comment_record':
             curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
             db_data = curs.fetchall()
             bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
             
             title_name = name
-            sub = '(' + get_lang(conn, 'bbs_comment_record') + ')'
-            menu = [['user/' + url_pas(name), get_lang(conn, 'user_tool')]]
+            sub = '(' + await get_lang('bbs_comment_record') + ')'
+            menu = [['user/' + url_pas(name), await get_lang('user_tool')]]
         else:
             curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
             db_data = curs.fetchall()
@@ -53,9 +53,9 @@ async def bbs_w(bbs_num = '', tool = 'bbs', page = 1, name = ''):
                     bbs_type = db_data_2[0][0] if db_data_2 else 'comment'
 
                     if bbs_type == 'thread':
-                        bbs_type = get_lang(conn, 'thread_base')
+                        bbs_type = await get_lang('thread_base')
                     else:
-                        bbs_type = get_lang(conn, 'comment_base')
+                        bbs_type = await get_lang('comment_base')
                     
                     curs.execute(db_change('select set_data from bbs_data where set_id = ? and set_name = "date" order by set_code + 0 desc limit 1'), [for_a[1]])
                     db_data_2 = curs.fetchall()
@@ -69,25 +69,25 @@ async def bbs_w(bbs_num = '', tool = 'bbs', page = 1, name = ''):
             
             data += '<hr class="main_hr">'
 
-            title_name = get_lang(conn, 'bbs_main')
-            menu = [['other', get_lang(conn, 'other_tool')]] + ([['bbs/make', get_lang(conn, 'add')]] if admin_auth == 1 else [])
+            title_name = await get_lang('bbs_main')
+            menu = [['other', await get_lang('other_tool')]] + ([['bbs/make', await get_lang('add')]] if admin_auth == 1 else [])
 
         if tool == 'comment_record':
             data += '''
                 <table id="main_table_set">
                     <tr id="main_table_top_tr">
-                        <td id="main_table_width">''' + get_lang(conn, 'editor') + '''</td>
-                        <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
-                        <td id="main_table_width">''' + get_lang(conn, 'comment') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('editor') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('time') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('comment') + '''</td>
                     </tr>
             '''
         else:
             data += '''
                 <table id="main_table_set">
                     <tr id="main_table_top_tr">
-                        <td id="main_table_width">''' + get_lang(conn, 'editor') + '''</td>
-                        <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
-                        <td id="main_table_width">''' + get_lang(conn, 'last_comment_time') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('editor') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('time') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('last_comment_time') + '''</td>
                     </tr>
             '''
 
@@ -188,7 +188,7 @@ async def bbs_w(bbs_num = '', tool = 'bbs', page = 1, name = ''):
                 
         data += '</table>'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
+        return easy_minify(flask.render_template(await skin_check(conn),
             imp = [title_name, await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
             data = data,
             menu = menu

+ 8 - 8
route/bbs_w_comment_tool.py

@@ -8,23 +8,23 @@ async def bbs_w_comment_tool(bbs_num = '', post_num = '', comment_num = ''):
         post_num_str = str(post_num)
         
         data += '''
-            <h2>''' + get_lang(conn, 'tool') + '''</h2>
+            <h2>''' + await get_lang('tool') + '''</h2>
             <ul>
-                <li><a href="/bbs/raw/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '/' + url_pas(comment_num) + '">' + get_lang(conn, 'raw') + '''</a></li>
-                <li><a href="/bbs/edit/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '/' + url_pas(comment_num) + '">' + get_lang(conn, 'edit') + '''</a></li>
+                <li><a href="/bbs/raw/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '/' + url_pas(comment_num) + '">' + await get_lang('raw') + '''</a></li>
+                <li><a href="/bbs/edit/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '/' + url_pas(comment_num) + '">' + await get_lang('edit') + '''</a></li>
             </ul>
         '''
 
         if await acl_check('', 'owner_auth', '', '') != 1:
             data += '''
-                <h3>''' + get_lang(conn, 'owner') + '''</h2>
+                <h3>''' + await get_lang('owner') + '''</h2>
                 <ul>
-                    <li><a href="/bbs/delete/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '/' + url_pas(comment_num) + '">' + get_lang(conn, 'delete') + '''</a></li>
+                    <li><a href="/bbs/delete/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '/' + url_pas(comment_num) + '">' + await get_lang('delete') + '''</a></li>
                 </ul>
             '''
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'bbs_comment_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('bbs_comment_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = data,
-            menu = [['bbs/w/' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '#' + url_pas(comment_num), get_lang(conn, 'return')]]
+            menu = [['bbs/w/' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '#' + url_pas(comment_num), await get_lang('return')]]
         ))

+ 7 - 7
route/bbs_w_delete.py

@@ -47,20 +47,20 @@ async def bbs_w_delete(bbs_num = '', post_num = '', comment_num = ''):
             sub = '(' + bbs_name + ')'
             sub += ' (' + post_num_str + ')'
             
-            name = get_lang(conn, 'bbs_comment_delete')
+            name = await get_lang('bbs_comment_delete')
             if comment_num == '':
-                name = get_lang(conn, 'bbs_post_delete')
+                name = await get_lang('bbs_post_delete')
             else:
                 sub += ' (' + comment_num + ')'
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
-                data = render_simple_set(conn, '''
+                data = await render_simple_set('''
                     <form method="post">
-                        <span>''' + get_lang(conn, 'delete_warning') + '''</span>
+                        <span>''' + await get_lang('delete_warning') + '''</span>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'delete') + '''</button>
+                        <button type="submit">''' + await get_lang('delete') + '''</button>
                     </form>
                 '''),
-                menu = [['bbs/w/' + bbs_num_str + '/' + post_num_str, get_lang(conn, 'return')]]
+                menu = [['bbs/w/' + bbs_num_str + '/' + post_num_str, await get_lang('return')]]
             ))

+ 14 - 14
route/bbs_w_edit.py

@@ -112,45 +112,45 @@ async def bbs_w_edit(bbs_num = '', post_num = '', comment_num = ''):
                 for data_list in acl_list:
                     acl_div[for_a] += '<option value="' + data_list + '">' + (data_list if data_list != '' else 'normal') + '</option>'
     
-            editor_top_text = '<a href="/filter/edit_filter">(' + get_lang(conn, 'edit_filter_rule') + ')</a>'
+            editor_top_text = '<a href="/filter/edit_filter">(' + await get_lang('edit_filter_rule') + ')</a>'
 
             if editor_top_text != '':
                 editor_top_text += '<hr class="main_hr">'
 
             if comment_num != '':
-                bbs_title = get_lang(conn, 'bbs_comment_edit')
+                bbs_title = await get_lang('bbs_comment_edit')
             elif post_num == '':
-                bbs_title = get_lang(conn, 'post_add')
+                bbs_title = await get_lang('post_add')
             else:
-                bbs_title = get_lang(conn, 'post_edit')
+                bbs_title = await get_lang('post_edit')
     
-            return easy_minify(conn, flask.render_template(skin_check(conn), 
+            return easy_minify(flask.render_template(await skin_check(conn), 
                 imp = [bbs_title, await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data =  editor_top_text + '''
                     <form method="post">                        
-                        <input style="''' + option_display + '''" placeholder="''' + get_lang(conn, 'title') + '''" name="title" value="''' + html.escape(title) + '''">
+                        <input style="''' + option_display + '''" placeholder="''' + await get_lang('title') + '''" name="title" value="''' + html.escape(title) + '''">
                         <hr style="''' + option_display + '''" class="main_hr">
 
                         ''' + await edit_editor(conn, ip, data, 'bbs') + '''
 
                         <!--
                         <div style="''' + option_display + '''">
-                            ''' + render_simple_set(conn, '''
+                            ''' + await render_simple_set('''
                                 <hr class="main_hr">
-                                <a href="/acl/TEST#exp">(''' + get_lang(conn, 'reference') + ''')</a>
-                                <h2>''' + get_lang(conn, 'acl') + '''</h2>
-                                <h3>''' + get_lang(conn, 'post_view_acl') + '''</h3>
+                                <a href="/acl/TEST#exp">(''' + await get_lang('reference') + ''')</a>
+                                <h2>''' + await get_lang('acl') + '''</h2>
+                                <h3>''' + await get_lang('post_view_acl') + '''</h3>
                                 <select name="post_view_acl">''' + acl_div[0] + '''</select>
 
-                                <h4>''' + get_lang(conn, 'post_comment_acl') + '''</h4>
+                                <h4>''' + await get_lang('post_comment_acl') + '''</h4>
                                 <select name="post_comment_acl">''' + acl_div[1] + '''</select>
 
-                                <h2>''' + get_lang(conn, 'markup') + '''</h2>
-                                ''' + get_lang(conn, 'not_working') + '''
+                                <h2>''' + await get_lang('markup') + '''</h2>
+                                ''' + await get_lang('not_working') + '''
                             ''') + '''
                         </div>
                         -->
                     </form>
                 ''',
-                menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')]]
+                menu = [['bbs/in/' + bbs_num_str, await get_lang('return')]]
             ))

+ 5 - 5
route/bbs_w_hide.py

@@ -20,12 +20,12 @@ async def bbs_w_hide(bbs_num = '', post_num = ''):
         if flask.request.method == 'POST':
             pass
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'bbs_post_hide'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')' + ' (' + post_num_str + ')', 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('bbs_post_hide'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')' + ' (' + post_num_str + ')', 0])],
+                data = await render_simple_set('''
                     <form method="post">
-                        <button type="submit">''' + get_lang(conn, 'hide') + '''</button>
+                        <button type="submit">''' + await get_lang('hide') + '''</button>
                     </form>
                 '''),
-                menu = [['bbs/w/' + bbs_num_str + '/' + post_num_str, get_lang(conn, 'return')]]
+                menu = [['bbs/w/' + bbs_num_str + '/' + post_num_str, await get_lang('return')]]
             ))

+ 5 - 5
route/bbs_w_pinned.py

@@ -33,14 +33,14 @@ async def bbs_w_pinned(bbs_num = '', post_num = ''):
             return redirect(conn, '/bbs/in/' + bbs_num_str)
         else:
             curs.execute(db_change('select set_data from bbs_data where set_code = ? and set_id = ? and set_name = "pinned"'), [post_num_str, bbs_num_str])
-            pinned = get_lang(conn, 'pinned') if not curs.fetchall() else get_lang(conn, 'pinned_release')
+            pinned = await get_lang('pinned') if not curs.fetchall() else await get_lang('pinned_release')
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'bbs_post_pinned'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')' + ' (' + post_num_str + ')', 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('bbs_post_pinned'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')' + ' (' + post_num_str + ')', 0])],
+                data = await render_simple_set('''
                     <form method="post">
                         <button type="submit">''' + pinned + '''</button>
                     </form>
                 '''),
-                menu = [['bbs/w/' + bbs_num_str + '/' + post_num_str, get_lang(conn, 'return')]]
+                menu = [['bbs/w/' + bbs_num_str + '/' + post_num_str, await get_lang('return')]]
             ))

+ 8 - 8
route/bbs_w_post.py

@@ -31,15 +31,15 @@ async def bbs_w_post_comment(conn, user_id, sub_code, comment_num, bbs_num_str,
                 comment_add_count += 1
 
             date = ''
-            date += '<a href="javascript:opennamu_change_comment(\'' + sub_code_check + '\');">(' + get_lang(conn, 'comment') + ')</a> '
-            date += '<a href="/bbs/tool/' + bbs_num_str + '/' + post_num_str + '/' + sub_code_check + '">(' + get_lang(conn, 'tool') + ')</a> '
+            date += '<a href="javascript:opennamu_change_comment(\'' + sub_code_check + '\');">(' + await get_lang('comment') + ')</a> '
+            date += '<a href="/bbs/tool/' + bbs_num_str + '/' + post_num_str + '/' + sub_code_check + '">(' + await get_lang('tool') + ')</a> '
             date += temp_dict['comment_date']
 
             comment_data += '<span style="padding-left: 20px;"></span>' * margin_count
             comment_data += api_topic_thread_make(
                 await ip_pas(temp_dict['comment_user_id']),
                 date,
-                render_set(conn, doc_data = temp_dict['comment']),
+                await render_set(conn, doc_data = temp_dict['comment']),
                 sub_code_check,
                 color = color,
                 add_style = 'width: calc(100% - ' + str(margin_count * 20) + 'px);'
@@ -175,7 +175,7 @@ async def bbs_w_post(bbs_num = '', post_num = ''):
                     return await re_error(conn, 0)
 
                 date = ''
-                date += '<a href="javascript:opennamu_change_comment(\'0\');">(' + get_lang(conn, 'comment') + ')</a> '
+                date += '<a href="javascript:opennamu_change_comment(\'0\');">(' + await get_lang('comment') + ')</a> '
                 date += temp_dict['date']
 
                 data = ''
@@ -183,7 +183,7 @@ async def bbs_w_post(bbs_num = '', post_num = ''):
                 data += api_topic_thread_make(
                     await ip_pas(temp_dict['user_id']),
                     date,
-                    render_set(conn, doc_data = temp_dict['data']),
+                    await render_set(conn, doc_data = temp_dict['data']),
                     '0',
                     color = 'red'
                 )
@@ -209,8 +209,8 @@ async def bbs_w_post(bbs_num = '', post_num = ''):
                     </form>
                 '''
 
-                return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [bbs_name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'bbs') + ')', 0])],
+                return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [bbs_name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('bbs') + ')', 0])],
                     data = data,
-                    menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')], ['bbs/edit/' + bbs_num_str + '/' + post_num_str, get_lang(conn, 'edit')], ['bbs/tool/' + bbs_num_str + '/' + post_num_str, get_lang(conn, 'tool')]]
+                    menu = [['bbs/in/' + bbs_num_str, await get_lang('return')], ['bbs/edit/' + bbs_num_str + '/' + post_num_str, await get_lang('edit')], ['bbs/tool/' + bbs_num_str + '/' + post_num_str, await get_lang('tool')]]
                 ))

+ 10 - 10
route/bbs_w_tool.py

@@ -10,33 +10,33 @@ async def bbs_w_tool(bbs_num = '', post_num = ''):
         post_num_str = str(post_num)
         
         data += '''
-            <h2>''' + get_lang(conn, 'tool') + '''</h2>
+            <h2>''' + await get_lang('tool') + '''</h2>
             <ul>
-                <li><a href="/bbs/raw/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + get_lang(conn, 'raw') + '''</a></li>
+                <li><a href="/bbs/raw/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + await get_lang('raw') + '''</a></li>
             </ul>
         '''
 
         if await acl_check('', 'bbs_auth', '', '') != 1:
             curs.execute(db_change('select set_data from bbs_data where set_code = ? and set_id = ? and set_name = "pinned"'), [post_num_str, bbs_num_str])
-            pinned = get_lang(conn, 'pinned') if not curs.fetchall() else get_lang(conn, 'pinned_release')
+            pinned = await get_lang('pinned') if not curs.fetchall() else await get_lang('pinned_release')
 
             data += '''
-                <h3>''' + get_lang(conn, 'admin') + '''</h3>
+                <h3>''' + await get_lang('admin') + '''</h3>
                 <ul>
-                    <!-- <li><a href="/bbs/blind/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + get_lang(conn, 'hide') + '''</a></li> -->
+                    <!-- <li><a href="/bbs/blind/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + await get_lang('hide') + '''</a></li> -->
                     <li><a href="/bbs/pinned/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + pinned + '''</a></li>
                 </ul>
             '''
 
             data += '''
-                <h3>''' + get_lang(conn, 'owner') + '''</h2>
+                <h3>''' + await get_lang('owner') + '''</h2>
                 <ul>
-                    <li><a href="/bbs/delete/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + get_lang(conn, 'delete') + '''</a></li>
+                    <li><a href="/bbs/delete/''' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str) + '">' + await get_lang('delete') + '''</a></li>
                 </ul>
             '''
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'bbs_post_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('bbs_post_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = data,
-            menu = [['bbs/w/' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str), get_lang(conn, 'return')]]
+            menu = [['bbs/w/' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str), await get_lang('return')]]
         ))

+ 31 - 37
route/edit.py

@@ -4,26 +4,20 @@ from .tool.func import *
 
 from .view_set import view_set_markup
 
-def edit_render_set(name, content):
-    with get_db_connect() as conn:
-        render_set(conn, 
-            doc_name = name,
-            doc_data = content
+async def edit_timeout(conn, name, content, timeout = 3):
+    try:
+        await asyncio.wait_for(
+            render_set(
+                conn,
+                doc_name = name,
+                doc_data = content
+            ),
+            timeout = timeout
         )
 
-# https://stackoverflow.com/questions/13821156/timeout-function-using-threading-in-python-does-not-work
-def edit_timeout(func, args = (), timeout = 3):
-    pool = multiprocessing.Pool(processes = 1)
-    result = pool.apply_async(func, args = args)
-    try:
-        result.get(timeout = timeout)
-    except multiprocessing.TimeoutError:
-        pool.terminate()
-        return 1
-    else:
-        pool.close()
-        pool.join()
         return 0
+    except asyncio.TimeoutError:
+        return 1
         
 async def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = ''):
     curs = conn.cursor()
@@ -53,9 +47,9 @@ async def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', na
     elif do_type == 'bbs':
         do_type = 'edit'
             
-    p_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else get_lang(conn, 'default_edit_help')
+    p_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else await get_lang('default_edit_help')
     
-    monaco_editor_top += '<a href="javascript:opennamu_do_editor_temp_save();">(' + get_lang(conn, 'load_temp_save') + ')</a> <a href="javascript:opennamu_do_editor_temp_save_load();">(' + get_lang(conn, 'load_temp_save_load') + ')</a>'
+    monaco_editor_top += '<a href="javascript:opennamu_do_editor_temp_save();">(' + await get_lang('load_temp_save') + ')</a> <a href="javascript:opennamu_do_editor_temp_save_load();">(' + await get_lang('load_temp_save_load') + ')</a>'
     monaco_editor_top += '<hr class="main_hr">'
     
     darkmode = flask.request.cookies.get('main_css_darkmode', '0')
@@ -70,8 +64,8 @@ async def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', na
 
     # 에디터 선택창
     monaco_editor_top += '<select onclick="do_sync_monaco_and_textarea();" id="opennamu_select_editor" onchange="opennamu_edit_turn_off_monaco();">'
-    monaco_editor_top += '<option value="default" ' + ('selected' if editor_display[0] == '' else '') + '>' + get_lang(conn, 'default') + '</option>'
-    monaco_editor_top += '<option value="monaco" ' + ('selected' if editor_display[1] == '' else '') + '>' + get_lang(conn, 'monaco_editor') + '</option>'
+    monaco_editor_top += '<option value="default" ' + ('selected' if editor_display[0] == '' else '') + '>' + await get_lang('default') + '</option>'
+    monaco_editor_top += '<option value="monaco" ' + ('selected' if editor_display[1] == '' else '') + '>' + await get_lang('monaco_editor') + '</option>'
     monaco_editor_top += '</select> '
 
     # 문법 선택창
@@ -82,7 +76,7 @@ async def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', na
 
     textarea_size = 'opennamu_textarea_500' if do_type == 'edit' else 'opennamu_textarea_100'
 
-    out_field = await captcha_get(conn) + ip_warning(conn) + addon
+    out_field = await captcha_get(conn) + await ip_warning(conn) + addon
     if out_field != '':
         out_field += '<hr class="main_hr">'
 
@@ -91,7 +85,7 @@ async def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', na
         <div>
             ''' + monaco_editor_top + '''
             <hr class="main_hr">
-            ''' + edit_button(conn) + '''
+            ''' + await edit_button(conn) + '''
             <div id="opennamu_editor_user_button"></div>
         </div>
         
@@ -111,8 +105,8 @@ async def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', na
             });
         </script>
                         
-        <button id="opennamu_save_button" type="submit" onclick="do_stop_exit_release();">''' + get_lang(conn, 'send') + '''</button>
-        <button id="opennamu_preview_button" type="button" onclick="opennamu_do_editor_preview();">''' + get_lang(conn, 'preview') + '''</button>
+        <button id="opennamu_save_button" type="submit" onclick="do_stop_exit_release();">''' + await get_lang('send') + '''</button>
+        <button id="opennamu_preview_button" type="button" onclick="opennamu_do_editor_preview();">''' + await get_lang('preview') + '''</button>
         <hr class="main_hr">
 
         <div id="opennamu_preview_area"></div>
@@ -214,7 +208,7 @@ async def edit(name = 'Test', section = 0, do_type = ''):
             db_data_2 = curs.fetchall()
             db_data_2 = number_check(db_data_2[0][0]) if db_data_2 and db_data_2[0][0] != '' else ''
             if db_data_2 != '' and platform.system() in ('Linux', 'Darwin'):
-                timeout = edit_timeout(edit_render_set, (name, content), timeout = int(db_data_2))
+                timeout = await edit_timeout(conn, name, content, int(db_data_2))
             else:
                 timeout = 0
 
@@ -239,7 +233,7 @@ async def edit(name = 'Test', section = 0, do_type = ''):
                     leng
                 )
                 
-                render_set(conn, 
+                await render_set(conn, 
                     doc_name = name,
                     doc_data = content,
                     data_type = 'backlink'
@@ -278,7 +272,7 @@ async def edit(name = 'Test', section = 0, do_type = ''):
                 
                 if load_title == 0 and section == '':
                     load_title = name
-                    editor_top_text += '<a href="/manager/15/' + url_pas(name) + '">(' + get_lang(conn, 'load') + ')</a> '
+                    editor_top_text += '<a href="/manager/15/' + url_pas(name) + '">(' + await get_lang('load') + ')</a> '
                 elif section != '':
                     load_title = name
                     
@@ -335,7 +329,7 @@ async def edit(name = 'Test', section = 0, do_type = ''):
 
                 doc_ver = flask.request.form.get('ver', '')
 
-                warning_edit = get_lang(conn, 'exp_edit_conflict') + ' '
+                warning_edit = await get_lang('exp_edit_conflict') + ' '
     
                 if flask.request.form.get('ver', '0') == '0':
                     warning_edit += '<a href="/raw/' + url_pas(name) + '">(r' + doc_ver + ')</a>'
@@ -352,15 +346,15 @@ async def edit(name = 'Test', section = 0, do_type = ''):
             if data_section == '':
                 data_section = data
     
-            editor_top_text += '<a href="/filter/edit_filter">(' + get_lang(conn, 'edit_filter_rule') + ')</a>'
+            editor_top_text += '<a href="/filter/edit_filter">(' + await get_lang('edit_filter_rule') + ')</a>'
     
             if editor_top_text != '':
                 editor_top_text += '<hr class="main_hr">'
 
             sub_menu = ' (' + str(section) + ')' if section != '' else ''
-            sub_title = '(' + get_lang(conn, 'edit_request') + ')' if edit_req_mode == 1 else '(' + get_lang(conn, 'edit') + ')'
+            sub_title = '(' + await get_lang('edit_request') + ')' if edit_req_mode == 1 else '(' + await get_lang('edit') + ')'
 
-            return easy_minify(conn, flask.render_template(skin_check(conn), 
+            return easy_minify(flask.render_template(await skin_check(conn), 
                 imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css([sub_title + sub_menu, 0])],
                 data = editor_top_text + '''
                     <form method="post">
@@ -370,16 +364,16 @@ async def edit(name = 'Test', section = 0, do_type = ''):
                         <input style="display: none;" id="opennamu_editor_doc_name" value="''' + html.escape(name) + '''">
                         <input style="display: none;" name="ver" value="''' + doc_ver + '''">
                         
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="send">
+                        <input placeholder="''' + await get_lang('why') + '''" name="send">
                         <hr class="main_hr">
                         
                         ''' + await edit_editor(conn, ip, data_section, addon = get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'edit') , name = name) + '''
                     </form>
                 ''',
                 menu = [
-                    ['w/' + url_pas(name), get_lang(conn, 'return')],
-                    ['delete/' + url_pas(name), get_lang(conn, 'delete')], 
-                    ['move/' + url_pas(name), get_lang(conn, 'move')], 
-                    ['upload', get_lang(conn, 'upload')]
+                    ['w/' + url_pas(name), await get_lang('return')],
+                    ['delete/' + url_pas(name), await get_lang('delete')], 
+                    ['move/' + url_pas(name), await get_lang('move')], 
+                    ['upload', await get_lang('upload')]
                 ]
             ))

+ 1 - 1
route/edit_backlink_reset.py

@@ -7,7 +7,7 @@ async def edit_backlink_reset(name = 'Test'):
         curs.execute(db_change("select data from data where title = ?"), [name])
         old = curs.fetchall()
         if old:
-            render_set(conn, 
+            await render_set(conn, 
                 doc_name = name,
                 doc_data = old[0][0],
                 data_type = 'backlink'

+ 6 - 6
route/edit_delete.py

@@ -53,15 +53,15 @@ async def edit_delete(name):
 
             return redirect(conn, '/w/' + url_pas(name))
         else:            
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'delete') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('delete') + ')', 0])],
                 data = '''
                     <form method="post">
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="send">
+                        <input placeholder="''' + await get_lang('why') + '''" name="send">
                         <hr class="main_hr">
-                        ''' + await captcha_get(conn) + ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'delete')  + '''
-                        <button type="submit">''' + get_lang(conn, 'delete') + '''</button>
+                        ''' + await captcha_get(conn) + await ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'delete')  + '''
+                        <button type="submit">''' + await get_lang('delete') + '''</button>
                     </form>
                 ''',
-                menu = [['w/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['w/' + url_pas(name), await get_lang('return')]]
             ))

+ 5 - 5
route/edit_delete_file.py

@@ -30,18 +30,18 @@ async def edit_delete_file(name = 'test.jpg'):
 
             return redirect(conn, '/w/' + url_pas(name))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'file_delete') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('file_delete') + ')', 0])],
                 data = '''
                     <form method="post">
                         <img src="/image/''' + url_pas(file_all_name) + '''">
                         <hr class="main_hr">
                         <a href="/image/''' + url_pas(file_all_name) + '''">/image/''' + url_pas(file_all_name) + '''</a>
                         <hr class="main_hr">
-                        <label><input name="with_doc" type="checkbox" checked> ''' + get_lang(conn, 'file_delete_with_document') + '''</label>
+                        <label><input name="with_doc" type="checkbox" checked> ''' + await get_lang('file_delete_with_document') + '''</label>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'file_delete') + '''</button>
+                        <button type="submit">''' + await get_lang('file_delete') + '''</button>
                     </form>
                 ''',
-                menu = [['w/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['w/' + url_pas(name), await get_lang('return')]]
             ))

+ 7 - 7
route/edit_delete_multiple.py

@@ -23,17 +23,17 @@ async def edit_delete_multiple():
 
             return redirect(conn, '/recent_change')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'many_delete'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('many_delete'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <textarea class="opennamu_textarea_500" placeholder="''' + get_lang(conn, 'many_delete_help') + '''" name="content"></textarea>
+                        <textarea class="opennamu_textarea_500" placeholder="''' + await get_lang('many_delete_help') + '''" name="content"></textarea>
                         <hr class="main_hr">
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="send" type="text">
+                        <input placeholder="''' + await get_lang('why') + '''" name="send" type="text">
                         <hr class="main_hr">
-                        ''' + await captcha_get(conn) + ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'edit')  + '''
-                        <button type="submit">''' + get_lang(conn, 'delete') + '''</button>
+                        ''' + await captcha_get(conn) + await ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'edit')  + '''
+                        <button type="submit">''' + await get_lang('delete') + '''</button>
                     </form>
                 ''',
-                menu = [['manager/1', get_lang(conn, 'return')]]
+                menu = [['manager/1', await get_lang('return')]]
             ))

+ 22 - 22
route/edit_move.py

@@ -213,53 +213,53 @@ async def edit_move(name):
             owner_auth = await acl_check(tool = 'owner_auth')
             owner_auth = 1 if owner_auth == 0 else 0
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'move') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('move') + ')', 0])],
                 data = '''
                     <form method="post">
-                        <span>''' + get_lang(conn, 'document_name') + '''</span>
+                        <span>''' + await get_lang('document_name') + '''</span>
                         <hr class="main_hr">
                         <input value="''' + name + '''" name="title" type="text">
                         <hr class="main_hr">
                         
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="send" type="text">
+                        <input placeholder="''' + await get_lang('why') + '''" name="send" type="text">
                         <hr class="main_hr">
                         
-                        <h2>''' + get_lang(conn, 'document') + '''</h2>
+                        <h2>''' + await get_lang('document') + '''</h2>
                         <select name="move_option">
-                            <option value="normal"> ''' + get_lang(conn, 'normal') + '''</option>
-                            <option value="none"> ''' + get_lang(conn, 'dont_move') + '''</option>
-                            <option value="reverse"> ''' + get_lang(conn, 'replace_move') + '''</option>
-                            ''' + ('<option value="merge"> ' + get_lang(conn, 'merge_move') + '</option>' if owner_auth == 1 else '') + '''
+                            <option value="normal"> ''' + await get_lang('normal') + '''</option>
+                            <option value="none"> ''' + await get_lang('dont_move') + '''</option>
+                            <option value="reverse"> ''' + await get_lang('replace_move') + '''</option>
+                            ''' + ('<option value="merge"> ' + await get_lang('merge_move') + '</option>' if owner_auth == 1 else '') + '''
                         </select>
                         <hr class="main_hr">
-                        <!-- <label><input type="checkbox" name="move_redirect_make"> ''' + get_lang(conn, 'move_redirect_make') + '''</label>
+                        <!-- <label><input type="checkbox" name="move_redirect_make"> ''' + await get_lang('move_redirect_make') + '''</label>
                         <hr class="main_hr"> -->
                         
-                        <h2>''' + get_lang(conn, 'discussion') + '''</h2>
+                        <h2>''' + await get_lang('discussion') + '''</h2>
                         <select name="move_topic_option">
-                            <option value="none"> ''' + get_lang(conn, 'dont_move') + '''</option>
-                            <option value="normal"> ''' + get_lang(conn, 'normal') + '''</option>
-                            <option value="reverse"> ''' + get_lang(conn, 'replace_move') + '''</option>
-                            ''' + ('<option value="merge"> ' + get_lang(conn, 'merge_move') + '</option>' if owner_auth == 1 else '') + '''
+                            <option value="none"> ''' + await get_lang('dont_move') + '''</option>
+                            <option value="normal"> ''' + await get_lang('normal') + '''</option>
+                            <option value="reverse"> ''' + await get_lang('replace_move') + '''</option>
+                            ''' + ('<option value="merge"> ' + await get_lang('merge_move') + '</option>' if owner_auth == 1 else '') + '''
                         </select>
                         <hr class="main_hr">
 
                         ''' + ((
-                            '''<h2>''' + get_lang(conn, 'document_set') + '''</h2>
+                            '''<h2>''' + await get_lang('document_set') + '''</h2>
                             <select name="document_set_option">
-                                <option value="none"> ''' + get_lang(conn, 'dont_move') + '''</option>
-                                <option value="normal"> ''' + get_lang(conn, 'normal') + '''</option>
-                                <option value="reverse"> ''' + get_lang(conn, 'replace_move') + '''</option>
+                                <option value="none"> ''' + await get_lang('dont_move') + '''</option>
+                                <option value="normal"> ''' + await get_lang('normal') + '''</option>
+                                <option value="reverse"> ''' + await get_lang('replace_move') + '''</option>
                             </select>
                             <hr class="main_hr">
                             '''
                         ) if owner_auth == 1 else '') + '''
 
-                        ''' + await captcha_get(conn) + ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'move')  + '''
+                        ''' + await captcha_get(conn) + await ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'move')  + '''
                         
-                        <button type="submit">''' + get_lang(conn, 'move') + '''</button>
+                        <button type="submit">''' + await get_lang('move') + '''</button>
                     </form>
                 ''',
-                menu = [['w/' + url_pas(name), get_lang(conn, 'return')], ['move_all', get_lang(conn, 'multiple_move')]]
+                menu = [['w/' + url_pas(name), await get_lang('return')], ['move_all', await get_lang('multiple_move')]]
             ))

+ 6 - 6
route/edit_request.py

@@ -63,7 +63,7 @@ async def edit_request(name = 'Test', do_type = ''):
                     mode = 'edit_request'
                 )
                 
-                render_set(conn, 
+                await render_set(conn, 
                     doc_name = name,
                     doc_data = edit_request_data,
                     data_type = 'backlink'
@@ -88,10 +88,10 @@ async def edit_request(name = 'Test', do_type = ''):
             db_data = curs.fetchall()
             old_data = db_data[0][0] if db_data else ''
 
-            result = view_diff_do(old_data, edit_request_data, 'r' + doc_ver, get_lang(conn, 'edit_request'))
+            result = view_diff_do(old_data, edit_request_data, 'r' + doc_ver, await get_lang('edit_request'))
 
-            return easy_minify(conn, flask.render_template(skin_check(conn), 
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'edit_request_check') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn), 
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('edit_request_check') + ')', 0])],
                 data = '''
                     <div id="opennamu_get_user_info">''' + html.escape(edit_request_user) + '''</div>
                     <hr class="main_hr">
@@ -102,8 +102,8 @@ async def edit_request(name = 'Test', do_type = ''):
                     ''' + result + '''
                     <hr class="main_hr">
                     <form method="post">
-                        <button ''' + disabled + ''' id="opennamu_save_button" type="submit" name="check" value="Y">''' + get_lang(conn, 'approve') + '''</button>
-                        <button ''' + disabled + ''' id="opennamu_preview_button" type="submit" name="check" value="">''' + get_lang(conn, 'decline') + '''</button>
+                        <button ''' + disabled + ''' id="opennamu_save_button" type="submit" name="check" value="Y">''' + await get_lang('approve') + '''</button>
+                        <button ''' + disabled + ''' id="opennamu_preview_button" type="submit" name="check" value="">''' + await get_lang('decline') + '''</button>
                         <hr class="main_hr">
                         <textarea readonly class="opennamu_textarea_500">''' + html.escape(edit_request_data) + '''</textarea>
                     </form>

+ 7 - 7
route/edit_revert.py

@@ -61,7 +61,7 @@ async def edit_revert(name, num):
                 mode = 'revert'
             )
 
-            render_set(conn, 
+            await render_set(conn, 
                 doc_name = name,
                 doc_data = data[0][0],
                 data_type = 'backlink'
@@ -74,15 +74,15 @@ async def edit_revert(name, num):
             else:
                 preview = ''
             
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(r' + str(num) + ') (' + get_lang(conn, 'revert') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(r' + str(num) + ') (' + await get_lang('revert') + ')', 0])],
                 data = '''
                     <form method="post">
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="send" type="text">
+                        <input placeholder="''' + await get_lang('why') + '''" name="send" type="text">
                         <hr class="main_hr">
-                        ''' + await captcha_get(conn) + ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'revert')  + '''
-                        <button type="submit">''' + get_lang(conn, 'revert') + '''</button>
+                        ''' + await captcha_get(conn) + await ip_warning(conn) + get_edit_text_bottom_check_box(conn) + get_edit_text_bottom(conn, 'revert')  + '''
+                        <button type="submit">''' + await get_lang('revert') + '''</button>
                     </form>
                 ''' + preview,
-                menu = [['history/' + url_pas(name), get_lang(conn, 'history')], ['recent_changes', get_lang(conn, 'recent_change')]]
+                menu = [['history/' + url_pas(name), await get_lang('history')], ['recent_changes', await get_lang('recent_change')]]
             ))

+ 10 - 10
route/edit_upload.py

@@ -99,7 +99,7 @@ async def edit_upload():
 
                 curs.execute(db_change("insert into data (title, data) values (?, ?)"), ['file:' + name, file_d])
 
-                render_set(conn, 
+                await render_set(conn, 
                     doc_name = 'file:' + name,
                     doc_data = file_d,
                     data_type = 'backlink'
@@ -120,7 +120,7 @@ async def edit_upload():
 
             return redirect(conn, '/w/file:' + name)
         else:
-            license_list = '<option value="direct_input">' + get_lang(conn, 'direct_input') + '</option>'
+            license_list = '<option value="direct_input">' + await get_lang('direct_input') + '</option>'
             file_name = html.escape(flask.request.args.get('name', ''))
 
             curs.execute(db_change("select html from html_filter where kind = 'image_license'"))
@@ -135,28 +135,28 @@ async def edit_upload():
             db_data = curs.fetchall()
             upload_default = html.escape(db_data[0][0]) if db_data and db_data[0][0] != '' else ''
             
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'upload'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('upload'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
-                    <a href="/filter/file_filter">(''' + get_lang(conn, 'file_filter_list') + ''')</a> <a href="/filter/extension_filter">(''' + get_lang(conn, 'extension_filter_list') + ''')</a>
+                    <a href="/filter/file_filter">(''' + await get_lang('file_filter_list') + ''')</a> <a href="/filter/extension_filter">(''' + await get_lang('extension_filter_list') + ''')</a>
                     ''' + upload_help + '''
                     <hr class="main_hr">
-                    ''' + get_lang(conn, 'max_file_size') + ''' : ''' + str(file_max) + '''MB
+                    ''' + await get_lang('max_file_size') + ''' : ''' + str(file_max) + '''MB
                     <hr class="main_hr">
                     <form method="post" enctype="multipart/form-data" accept-charset="utf8">
                         <input multiple="multiple" type="file" name="f_data[]">
                         <hr class="main_hr">
-                        <input placeholder="''' + get_lang(conn, 'file_name') + '''" name="f_name" value="''' + file_name + '''">
+                        <input placeholder="''' + await get_lang('file_name') + '''" name="f_name" value="''' + file_name + '''">
                         <hr class="main_hr">
                         <select name="f_lice_sel">
                             ''' + license_list + '''
                         </select>
                         <hr class="main_hr">
-                        <textarea class="opennamu_textarea_100" placeholder="''' + get_lang(conn, 'other') + '''" name="f_lice">''' + upload_default + '''</textarea>
+                        <textarea class="opennamu_textarea_100" placeholder="''' + await get_lang('other') + '''" name="f_lice">''' + upload_default + '''</textarea>
                         <hr class="main_hr">
                         ''' + await captcha_get(conn) + '''
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['other', get_lang(conn, 'return')]]
+                menu = [['other', await get_lang('return')]]
             ))

+ 16 - 16
route/filter_all.py

@@ -21,37 +21,37 @@ async def filter_all(tool):
                 return await re_error(conn, 0)
 
         if tool == 'inter_wiki':
-            title = get_lang(conn, 'interwiki_list')
+            title = await get_lang('interwiki_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'inter_wiki'"))
         elif tool == 'email_filter':
-            title = get_lang(conn, 'email_filter_list')
+            title = await get_lang('email_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'email'"))
         elif tool == 'name_filter':
-            title = get_lang(conn, 'id_filter_list')
+            title = await get_lang('id_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'name'"))
         elif tool == 'edit_filter':
-            title = get_lang(conn, 'edit_filter_list')
+            title = await get_lang('edit_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'regex_filter'"))
         elif tool == 'file_filter':
-            title = get_lang(conn, 'file_filter_list')
+            title = await get_lang('file_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'file'"))
         elif tool == 'image_license':
-            title = get_lang(conn, 'image_license_list')
+            title = await get_lang('image_license_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'image_license'"))
         elif tool == 'extension_filter':
-            title = get_lang(conn, 'extension_filter_list')
+            title = await get_lang('extension_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'extension'"))
         elif tool == 'document':
-            title = get_lang(conn, 'document_filter_list')
+            title = await get_lang('document_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'document'"))
         elif tool == 'outer_link':
-            title = get_lang(conn, 'outer_link_filter_list')
+            title = await get_lang('outer_link_filter_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'outer_link'"))
         elif tool == 'template':
-            title = get_lang(conn, 'template_document_list')
+            title = await get_lang('template_document_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'template'"))
         else:
-            title = get_lang(conn, 'edit_tool_list')
+            title = await get_lang('edit_tool_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'edit_top'"))
 
         db_data = curs.fetchall()
@@ -62,9 +62,9 @@ async def filter_all(tool):
             div += html.escape(data[0])
             if admin == 1:
                 if tool in ('inter_wiki', 'outer_link', 'edit_filter', 'document', 'edit_top', 'template'):
-                    div += ' <a href="/filter/' + tool + '/add/' + url_pas(data[0]) + '">(' + get_lang(conn, 'edit') + ')</a>'
+                    div += ' <a href="/filter/' + tool + '/add/' + url_pas(data[0]) + '">(' + await get_lang('edit') + ')</a>'
                     
-                div += ' <a href="/filter/' + tool + '/del/' + url_pas(data[0]) + '">(' + get_lang(conn, 'delete') + ')</a>'
+                div += ' <a href="/filter/' + tool + '/del/' + url_pas(data[0]) + '">(' + await get_lang('delete') + ')</a>'
 
             div += '</td>'
 
@@ -85,10 +85,10 @@ async def filter_all(tool):
 
         if admin == 1:
             div += '<hr class="main_hr">'
-            div += '<a href="/filter/' + tool + '/add">(' + get_lang(conn, 'add') + ')</a>'
+            div += '<a href="/filter/' + tool + '/add">(' + await get_lang('add') + ')</a>'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
+        return easy_minify(flask.render_template(await skin_check(conn),
             imp = [title, await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['manager/1', get_lang(conn, 'return')]]
+            menu = [['manager/1', await get_lang('return')]]
         ))

+ 32 - 32
route/filter_all_add.py

@@ -123,7 +123,7 @@ async def filter_all_add(tool, name = None):
 
                     select = '''
                         <hr class="main_hr">
-                        ''' + get_lang(conn, 'inter_wiki_space_change') + '''
+                        ''' + await get_lang('inter_wiki_space_change') + '''
                         <hr class="main_hr">
                         <select name="inter_type">
                             <option ''' + select[0] + ''' value="url_encode">%20</option>
@@ -133,17 +133,17 @@ async def filter_all_add(tool, name = None):
                 else:
                     ex = 'youtube.com'
 
-                title = get_lang(conn, 'interwiki_add') if tool == 'inter_wiki' else get_lang(conn, 'outer_link_add')
+                title = await get_lang('interwiki_add') if tool == 'inter_wiki' else await get_lang('outer_link_add')
                 form_data = '''
-                    ''' + get_lang(conn, 'name') + '''
+                    ''' + await get_lang('name') + '''
                     <hr class="main_hr">
                     <input value="''' + html.escape(value[0]) + '''" type="text" name="title">
                     <hr class="main_hr">
-                    ''' + get_lang(conn, 'link') + ''' (EX : ''' + ex + ''')
+                    ''' + await get_lang('link') + ''' (EX : ''' + ex + ''')
                     <hr class="main_hr">
                     <input value="''' + html.escape(value[1]) + '''" type="text" name="link">
                     <hr class="main_hr">
-                    ''' + get_lang(conn, 'icon') + ''' (''' + ('HTML' if tool == 'inter_wiki' else get_lang(conn, 'html_or_link')) + ''') (''' + get_lang(conn, 'link') + ' - EX' + ''' : /image/Test.svg)
+                    ''' + await get_lang('icon') + ''' (''' + ('HTML' if tool == 'inter_wiki' else await get_lang('html_or_link')) + ''') (''' + await get_lang('link') + ' - EX' + ''' : /image/Test.svg)
                     <hr class="main_hr">
                     <input value="''' + html.escape(value[2]) + '''" type="text" name="icon">
                     ''' + select + '''
@@ -161,49 +161,49 @@ async def filter_all_add(tool, name = None):
                     textarea = ''
                     time_data = ''
 
-                title = get_lang(conn, 'edit_filter_add')
+                title = await get_lang('edit_filter_add')
                 form_data = '''
                     <hr class="main_hr">
-                    <input placeholder="''' + get_lang(conn, 'day') + '''" name="day" type="text" value="''' + html.escape(time_data) + '''">
+                    <input placeholder="''' + await get_lang('day') + '''" name="day" type="text" value="''' + html.escape(time_data) + '''">
                     <hr class="main_hr">
-                    <input placeholder="''' + get_lang(conn, 'regex') + '''" name="content" value="''' + html.escape(textarea) + '''" type="text">
+                    <input placeholder="''' + await get_lang('regex') + '''" name="content" value="''' + html.escape(textarea) + '''" type="text">
                 '''
             elif tool == 'name_filter':
-                title = get_lang(conn, 'id_filter_add')
+                title = await get_lang('id_filter_add')
                 form_data = '' + \
-                    get_lang(conn, 'regex') + \
+                    await get_lang('regex') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(name) + '" type="text" name="title">' + \
                 ''
             elif tool == 'file_filter':
-                title = get_lang(conn, 'file_filter_add')
+                title = await get_lang('file_filter_add')
                 form_data = '' + \
-                    get_lang(conn, 'regex') + \
+                    await get_lang('regex') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(name) + '" type="text" name="title">' + \
                 ''
             elif tool == 'email_filter':
-                title = get_lang(conn, 'email_filter_add')
+                title = await get_lang('email_filter_add')
                 form_data = '' + \
-                    get_lang(conn, 'email') + \
+                    await get_lang('email') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(name) + '" type="text" name="title">' + \
                 ''
             elif tool == 'image_license':
-                title = get_lang(conn, 'image_license_add')
+                title = await get_lang('image_license_add')
                 form_data = '' + \
-                    get_lang(conn, 'license') + \
+                    await get_lang('license') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(name) + '" type="text" name="title">' + \
                 ''
             elif tool == 'extension_filter':
-                title = get_lang(conn, 'extension_filter_add')
+                title = await get_lang('extension_filter_add')
                 form_data = '' + \
-                    get_lang(conn, 'extension') + \
+                    await get_lang('extension') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(name) + '" type="text" name="title">' + \
                     '<hr class="main_hr">' + \
-                    get_lang(conn, 'max_file_size') + ' (MB) (' + get_lang(conn, 'default') + ' : ' + get_lang(conn, 'empty') + ')' + \
+                    await get_lang('max_file_size') + ' (MB) (' + await get_lang('default') + ' : ' + await get_lang('empty') + ')' + \
                     '<hr class="main_hr">' + \
                     '<input value="" type="text" name="max_file_size">' + \
                 ''
@@ -214,24 +214,24 @@ async def filter_all_add(tool, name = None):
                 db_data = curs.fetchall()
                 acl_list = [['selected' if db_data and db_data[0][1] == for_a else '', for_a] for for_a in acl_list]
 
-                title = get_lang(conn, 'document_filter_add')
+                title = await get_lang('document_filter_add')
                 form_data = '''
-                    ''' + get_lang(conn, 'name') + '''
+                    ''' + await get_lang('name') + '''
                     <hr class="main_hr">
                     <input value="''' + html.escape(name) + '''" type="text" name="name">
                     <hr class="main_hr">
-                    ''' + get_lang(conn, 'regex') + '''
+                    ''' + await get_lang('regex') + '''
                     <hr class="main_hr">
                     <input value="''' + (html.escape(db_data[0][0]) if db_data else '') + '''" type="text" name="regex">
                     <hr class="main_hr">
-                    <a href="/acl/Test#exp">''' + get_lang(conn, 'acl') + '''</a>
+                    <a href="/acl/Test#exp">''' + await get_lang('acl') + '''</a>
                     <hr class="main_hr">
                     <select name="acl">
                         ''' + ''.join(['<option ' + for_a[0] + ' value=' + for_a[1] + '>' + ('normal' if for_a[1] == '' else for_a[1]) + '</option>' for for_a in acl_list]) + '''
                     </select>
                 '''
             elif tool == 'template':
-                title = get_lang(conn, 'template_document_add')
+                title = await get_lang('template_document_add')
 
                 value = ''
                 if name:
@@ -240,17 +240,17 @@ async def filter_all_add(tool, name = None):
                     value = exist[0][0] if exist else '' 
 
                 form_data = '' + \
-                    get_lang(conn, 'template') + \
+                    await get_lang('template') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(name) + '" type="text" name="title">' + \
                     '<hr class="main_hr">' + \
-                    get_lang(conn, 'explanation') + \
+                    await get_lang('explanation') + \
                     '<hr class="main_hr">' + \
                     '<input value="' + html.escape(value) + '" type="text" name="exp">' + \
                     '<hr class="main_hr">' + \
                 ''
             else:
-                title = get_lang(conn, 'edit_tool_add')
+                title = await get_lang('edit_tool_add')
                 
                 value = ''
                 if name:
@@ -259,23 +259,23 @@ async def filter_all_add(tool, name = None):
                     value = exist[0][0] if exist else ''    
 
                 form_data = '''
-                    ''' + get_lang(conn, 'title') + '''
+                    ''' + await get_lang('title') + '''
                     <hr class="main_hr">
                     <input value="''' + html.escape(name) + '''" type="text" name="title">
                     <hr class="main_hr">
-                    ''' + get_lang(conn, 'markup') + '''
+                    ''' + await get_lang('markup') + '''
                     <hr class="main_hr">
                     <input value="''' + html.escape(value) + '''" type="text" name="markup">
                 '''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [title, await wiki_set(), await wiki_custom(conn), wiki_css([get_sub, 0])],
                 data =  '''
                         <form method="post">
                             ''' + form_data + '''
                             <hr class="main_hr">
-                            <button ''' + stat + ''' type="submit">''' + get_lang(conn, 'add') + '''</button>
+                            <button ''' + stat + ''' type="submit">''' + await get_lang('add') + '''</button>
                         </form>
                         ''',
-                menu = [['filter/' + tool, get_lang(conn, 'return')]]
+                menu = [['filter/' + tool, await get_lang('return')]]
             ))

+ 65 - 65
route/give_admin_groups.py

@@ -5,67 +5,67 @@ async def give_admin_groups(name = 'test'):
         curs = conn.cursor()
 
         acl_name_list = [
-            [1, 'owner', get_lang(conn, 'owner_authority')],
-                [2, '', get_lang(conn, 'all_function_authority')],
-                [2, 'admin', get_lang(conn, 'admin_authority')],
-                    [3, 'ban', get_lang(conn, 'ban_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'toron', get_lang(conn, 'discussion_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'check', get_lang(conn, 'user_analyze_authority')],
-                        [4, 'view_user_watchlist', get_lang(conn, 'view_user_watchlist_authority')],
-                        [4, '', get_lang(conn, 'user_check_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'acl', get_lang(conn, 'document_acl_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'hidel', get_lang(conn, 'history_hide_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'give', get_lang(conn, 'authorization_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'bbs', get_lang(conn, 'bbs_management_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'vote_fix', get_lang(conn, 'vote_management_authority')],
-                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
-                    [3, 'admin_default_feature', get_lang(conn, 'admin_default_feature_authority')],
-                        [4, 'doc_watch_list_view', get_lang(conn, 'doc_watch_list_view_authority')],
-                        [4, 'treat_as_admin', get_lang(conn, 'treat_as_admin_authority')],
-                        [4, 'view_hide_user_name', get_lang(conn, 'view_hide_user_name_authority')],
-                        [4, 'user_name_bold', get_lang(conn, 'user_name_bold_authority')],
-                        [4, 'multiple_upload', get_lang(conn, 'multiple_upload_authority')],
-                        [4, 'slow_edit_pass', get_lang(conn, 'slow_edit_pass_authority')],
-                        [4, 'edit_bottom_compulsion_pass', get_lang(conn, 'edit_bottom_compulsion_pass_authority')],
-                        [4, 'edit_filter_pass', get_lang(conn, 'edit_filter_pass_authority')],
-                        [4, '', get_lang(conn, 'user_authority')],
-            [1, 'user', get_lang(conn, 'user_authority')],
-                [2, 'captcha_pass', get_lang(conn, 'captcha_pass_authority')],
-                [2, 'ip', get_lang(conn, 'ip_authority')],
-                    [3, 'document', get_lang(conn, 'document_authority')],
-                        [4, 'edit', get_lang(conn, 'edit_authority')],
-                            [5, '', get_lang(conn, 'view_authority')],
-                        [4, 'edit_request', get_lang(conn, 'edit_request_authority')],
-                            [5, '', get_lang(conn, 'view_authority')],
-                        [4, 'move', get_lang(conn, 'move_authority')],
-                            [5, '', get_lang(conn, 'view_authority')],
-                        [4, 'new_make', get_lang(conn, 'new_make_authority')],
-                            [5, '', get_lang(conn, 'view_authority')],
-                        [4, 'delete', get_lang(conn, 'delete_authority')],
-                            [5, '', get_lang(conn, 'view_authority')],
-                        [4, 'view', get_lang(conn, 'view_authority')],
-                    [3, 'discuss', get_lang(conn, 'discuss_authority')],
-                        [4, 'discuss_make_new_thread', get_lang(conn, 'discuss_make_new_thread_authority')],
-                            [5, '', get_lang(conn, 'discuss_view_authority')],
-                        [4, 'discuss_view', get_lang(conn, 'discuss_view_authority')],
-                    [3, 'upload', get_lang(conn, 'upload_authority')],
-                    [3, 'vote', get_lang(conn, 'vote_authority')],
-                    [3, 'bbs_use', get_lang(conn, 'bbs_authority')],
-                        [4, 'bbs_edit', get_lang(conn, 'bbs_edit_authority')],
-                            [5, '', get_lang(conn, 'bbs_view_authority')],
-                        [4, 'bbs_comment', get_lang(conn, 'bbs_comment_authority')],
-                            [5, '', get_lang(conn, 'bbs_view_authority')],
-                        [4, 'bbs_view', get_lang(conn, 'bbs_view_authority')],
-                    [3, 'captcha_one_check_five_pass', get_lang(conn, 'captcha_one_check_five_pass_authority')],
-                    [3, 'edit_filter_view', get_lang(conn, 'edit_filter_view_authority')],
-                    [3, 'nothing', get_lang(conn, 'nothing_authority')]
+            [1, 'owner', await get_lang('owner_authority')],
+                [2, '', await get_lang('all_function_authority')],
+                [2, 'admin', await get_lang('admin_authority')],
+                    [3, 'ban', await get_lang('ban_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'toron', await get_lang('discussion_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'check', await get_lang('user_analyze_authority')],
+                        [4, 'view_user_watchlist', await get_lang('view_user_watchlist_authority')],
+                        [4, '', await get_lang('user_check_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'acl', await get_lang('document_acl_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'hidel', await get_lang('history_hide_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'give', await get_lang('authorization_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'bbs', await get_lang('bbs_management_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'vote_fix', await get_lang('vote_management_authority')],
+                        [4, '', await get_lang('admin_default_feature_authority')],
+                    [3, 'admin_default_feature', await get_lang('admin_default_feature_authority')],
+                        [4, 'doc_watch_list_view', await get_lang('doc_watch_list_view_authority')],
+                        [4, 'treat_as_admin', await get_lang('treat_as_admin_authority')],
+                        [4, 'view_hide_user_name', await get_lang('view_hide_user_name_authority')],
+                        [4, 'user_name_bold', await get_lang('user_name_bold_authority')],
+                        [4, 'multiple_upload', await get_lang('multiple_upload_authority')],
+                        [4, 'slow_edit_pass', await get_lang('slow_edit_pass_authority')],
+                        [4, 'edit_bottom_compulsion_pass', await get_lang('edit_bottom_compulsion_pass_authority')],
+                        [4, 'edit_filter_pass', await get_lang('edit_filter_pass_authority')],
+                        [4, '', await get_lang('user_authority')],
+            [1, 'user', await get_lang('user_authority')],
+                [2, 'captcha_pass', await get_lang('captcha_pass_authority')],
+                [2, 'ip', await get_lang('ip_authority')],
+                    [3, 'document', await get_lang('document_authority')],
+                        [4, 'edit', await get_lang('edit_authority')],
+                            [5, '', await get_lang('view_authority')],
+                        [4, 'edit_request', await get_lang('edit_request_authority')],
+                            [5, '', await get_lang('view_authority')],
+                        [4, 'move', await get_lang('move_authority')],
+                            [5, '', await get_lang('view_authority')],
+                        [4, 'new_make', await get_lang('new_make_authority')],
+                            [5, '', await get_lang('view_authority')],
+                        [4, 'delete', await get_lang('delete_authority')],
+                            [5, '', await get_lang('view_authority')],
+                        [4, 'view', await get_lang('view_authority')],
+                    [3, 'discuss', await get_lang('discuss_authority')],
+                        [4, 'discuss_make_new_thread', await get_lang('discuss_make_new_thread_authority')],
+                            [5, '', await get_lang('discuss_view_authority')],
+                        [4, 'discuss_view', await get_lang('discuss_view_authority')],
+                    [3, 'upload', await get_lang('upload_authority')],
+                    [3, 'vote', await get_lang('vote_authority')],
+                    [3, 'bbs_use', await get_lang('bbs_authority')],
+                        [4, 'bbs_edit', await get_lang('bbs_edit_authority')],
+                            [5, '', await get_lang('bbs_view_authority')],
+                        [4, 'bbs_comment', await get_lang('bbs_comment_authority')],
+                            [5, '', await get_lang('bbs_view_authority')],
+                        [4, 'bbs_view', await get_lang('bbs_view_authority')],
+                    [3, 'captcha_one_check_five_pass', await get_lang('captcha_one_check_five_pass_authority')],
+                    [3, 'edit_filter_view', await get_lang('edit_filter_view_authority')],
+                    [3, 'nothing', await get_lang('nothing_authority')]
         ]
 
         if html.escape(name) != name:
@@ -108,14 +108,14 @@ async def give_admin_groups(name = 'test'):
 
             data += '</ul>'
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'admin_group') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('admin_group') + ')', 0])],
                 data = '''
                     <form method="post">
                         ''' + data + '''
                         <hr class="main_hr">
-                        <button ''' + state +  ''' type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button ''' + state +  ''' type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['auth/list', get_lang(conn, 'return')]]
+                menu = [['auth/list', await get_lang('return')]]
             ))

+ 4 - 4
route/give_delete_admin_group.py

@@ -21,12 +21,12 @@ async def give_delete_admin_group(name = 'test'):
             else:
                 return await re_error(conn, 47)
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, "delete_admin_group"), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + name + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang("delete_admin_group"), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + name + ')', 0])],
                 data = '' + \
                     '<form method="post">' + \
-                        '<button type="submit">' + get_lang(conn, 'delete') + '</button>' + \
+                        '<button type="submit">' + await get_lang('delete') + '</button>' + \
                     '</form>' + \
                 '',
-                menu = [['auth/list', get_lang(conn, 'return')]]
+                menu = [['auth/list', await get_lang('return')]]
             ))

+ 26 - 26
route/give_user_ban.py

@@ -103,11 +103,11 @@ async def give_user_ban(name = None, ban_type = ''):
             return redirect(conn, '/recent_block')
         else:
             if ban_type == 'multiple':
-                main_name = get_lang(conn, 'multiple_ban')
-                n_name = '<textarea class="opennamu_textarea_500" placeholder="' + get_lang(conn, 'name_or_ip_or_regex_or_cidr_multiple') + '" name="name"></textarea><hr class="main_hr">'
+                main_name = await get_lang('multiple_ban')
+                n_name = '<textarea class="opennamu_textarea_500" placeholder="' + await get_lang('name_or_ip_or_regex_or_cidr_multiple') + '" name="name"></textarea><hr class="main_hr">'
             else:
-                main_name = get_lang(conn, 'ban')
-                n_name = '<input placeholder="' + get_lang(conn, 'name_or_ip_or_regex_or_cidr') + '" value="' + (name if name else '') + '" name="name"><hr class="main_hr">'
+                main_name = await get_lang('ban')
+                n_name = '<input placeholder="' + await get_lang('name_or_ip_or_regex_or_cidr') + '" value="' + (name if name else '') + '" name="name"><hr class="main_hr">'
 
             now = 0
             
@@ -129,55 +129,55 @@ async def give_user_ban(name = None, ban_type = ''):
 
             owner_option = ''
             if await acl_check(tool = 'owner_auth', ip = ip) != 1:
-                owner_option = '<option value="private" ' + ('selected' if ban_type == 'private' else '') + '>' + get_lang(conn, 'private') + '</option>'
+                owner_option = '<option value="private" ' + ('selected' if ban_type == 'private' else '') + '>' + await get_lang('private') + '</option>'
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [main_name, await wiki_set(), await wiki_custom(conn), wiki_css([now, 0])],
                 data = info_data + '''
                     <form method="post" ''' + action + '''>
-                        <h2>''' + get_lang(conn, 'method') + '''</h2>
+                        <h2>''' + await get_lang('method') + '''</h2>
                         ''' + n_name + '''
         
                         <select name="do_ban_type">
-                            <option value="normal">''' + get_lang(conn, 'normal') + '''</option>
-                            <option value="regex" ''' + ('selected' if ban_type == 'regex' else '') + '>' + get_lang(conn, 'regex') + '''</option>
-                            <option value="cidr" ''' + ('selected' if ban_type == 'cidr' else '') + '>' + get_lang(conn, 'cidr') + '''</option>
+                            <option value="normal">''' + await get_lang('normal') + '''</option>
+                            <option value="regex" ''' + ('selected' if ban_type == 'regex' else '') + '>' + await get_lang('regex') + '''</option>
+                            <option value="cidr" ''' + ('selected' if ban_type == 'cidr' else '') + '>' + await get_lang('cidr') + '''</option>
                             ''' + owner_option + '''
                         </select>
                         <hr class="main_hr">
         
                         <select name="ban_option">
-                            <option value="">''' + get_lang(conn, 'default') + '''</option>
-                            <option value="login_able">''' + get_lang(conn, 'login_able') + '''</option>
-                            <option value="login_able_and_regsiter_disable">''' + get_lang(conn, 'login_able_and_regsiter_disable') + '''</option>
-                            <option value="edit_request_able">''' + get_lang(conn, 'edit_request_able') + '''</option>
-                            <option value="completely_ban">''' + get_lang(conn, 'completely_ban') + '''</option>
-                            <option value="dont_come_this_site">''' + get_lang(conn, 'dont_come_this_site') + '''</option>
-                            <option value="release">''' + get_lang(conn, 'release') + '''</option>
+                            <option value="">''' + await get_lang('default') + '''</option>
+                            <option value="login_able">''' + await get_lang('login_able') + '''</option>
+                            <option value="login_able_and_regsiter_disable">''' + await get_lang('login_able_and_regsiter_disable') + '''</option>
+                            <option value="edit_request_able">''' + await get_lang('edit_request_able') + '''</option>
+                            <option value="completely_ban">''' + await get_lang('completely_ban') + '''</option>
+                            <option value="dont_come_this_site">''' + await get_lang('dont_come_this_site') + '''</option>
+                            <option value="release">''' + await get_lang('release') + '''</option>
                         </select>
         
-                        <h2>''' + get_lang(conn, 'date') + '''</h2>
+                        <h2>''' + await get_lang('date') + '''</h2>
                         <select name="date_type">
-                            <option value="date">''' + get_lang(conn, 'date') + '''</option>
-                            <option value="days">''' + get_lang(conn, 'day') + '''</option>
+                            <option value="date">''' + await get_lang('date') + '''</option>
+                            <option value="days">''' + await get_lang('day') + '''</option>
                         </select>
                         <hr class="main_hr">
         
-                        <span>''' + get_lang(conn, 'day') + '''</span>
+                        <span>''' + await get_lang('day') + '''</span>
                         <hr class="main_hr">
                         <input name="date_days">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'date') + '''</span>
+                        <span>''' + await get_lang('date') + '''</span>
                         <hr class="main_hr">
                         <input type="date" value="''' + date_value + '''" name="date" pattern="\\d{4}-\\d{2}-\\d{2}">
         
-                        <h2>''' + get_lang(conn, 'other') + '''</h2>
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="why" type="text">
+                        <h2>''' + await get_lang('other') + '''</h2>
+                        <input placeholder="''' + await get_lang('why') + '''" name="why" type="text">
                         <hr class="main_hr">
         
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))   

+ 11 - 11
route/give_user_fix.py

@@ -47,28 +47,28 @@ async def give_user_fix(user_name = ''):
 
             return redirect(conn, '/user/' + url_pas(user_name))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'user_fix'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('user_fix'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
                         <div id="opennamu_get_user_info">''' + html.escape(user_name) + '''</div>
                         <hr class="main_hr">
-                        <a href="/change/user_name/''' + url_pas(user_name) + '''">(''' + get_lang(conn, 'change_user_name') + ''')</a>
+                        <a href="/change/user_name/''' + url_pas(user_name) + '''">(''' + await get_lang('change_user_name') + ''')</a>
                         <hr class="main_hr">
                         <select name="select">
-                            <option value="password_change">''' + get_lang(conn, 'password_change') + '''</option>
-                            <option value="2fa_password_change">''' + get_lang(conn, '2fa_password_change') + '''</option>
-                            <option value="2fa_off">''' + get_lang(conn, '2fa_off') + '''</option>
+                            <option value="password_change">''' + await get_lang('password_change') + '''</option>
+                            <option value="2fa_password_change">''' + await get_lang('2fa_password_change') + '''</option>
+                            <option value="2fa_off">''' + await get_lang('2fa_off') + '''</option>
                         </select>
                         <hr class="main_hr">
-                        ''' + get_lang(conn, 'password_change') + ''' | ''' + get_lang(conn, '2fa_password_change') + '''
+                        ''' + await get_lang('password_change') + ''' | ''' + await get_lang('2fa_password_change') + '''
                         <hr class="main_hr">
-                        <input placeholder="''' + get_lang(conn, 'new_password') + '''" name="new_password" type="password">
+                        <input placeholder="''' + await get_lang('new_password') + '''" name="new_password" type="password">
                         <hr class="main_hr">
-                        <input placeholder="''' + get_lang(conn, 'password_confirm') + '''" name="password_check" type="password">
+                        <input placeholder="''' + await get_lang('password_confirm') + '''" name="password_check" type="password">
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'go') + '''</button>
+                        <button type="submit">''' + await get_lang('go') + '''</button>
                     </form>
                 ''',
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))

+ 4 - 1
route/go_api_bbs.py

@@ -5,4 +5,7 @@ async def api_bbs(bbs_num = "", page = 1):
     other_set["bbs_num"] = str(bbs_num)
     other_set["page"] = str(page)
 
-    return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
+    return await python_to_golang(sys._getframe().f_code.co_name, other_set)
+
+async def api_bbs_exter(bbs_num = "", page = 1):
+    return flask.jsonify(await api_bbs(bbs_num, page))

+ 1 - 1
route/go_api_w_render.py

@@ -45,7 +45,7 @@ async def api_w_render(name = '', tool = '', request_method = '', request_data =
                 data_org = re.sub('^\n+', '', data_org)
 
             if markup in ('', 'namumark'):
-                data_pas = render_set(conn, 
+                data_pas = await render_set(conn, 
                     doc_name = name, 
                     doc_data = data_org, 
                     data_type = data_type,

+ 1 - 1
route/go_main_func_easter_egg.py

@@ -12,7 +12,7 @@ async def main_func_easter_egg():
     
         data = ''
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
+        return easy_minify(flask.render_template(await skin_check(conn),
             imp = ['Easter Egg', await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = data,
             menu = 0

+ 4 - 4
route/list_acl.py

@@ -30,10 +30,10 @@ async def list_acl(arg_num = 1):
             ''
 
         div += '</ul>'
-        div += get_next_page_bottom(conn, '/list/document/acl/{}', arg_num, list_data)
+        div += await get_next_page_bottom('/list/document/acl/{}', arg_num, list_data)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'acl_document_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('acl_document_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 3 - 3
route/list_admin.py

@@ -19,8 +19,8 @@ async def list_admin():
 
         div += '</ul>'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'admin_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('admin_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 6 - 6
route/list_admin_auth_use.py

@@ -35,18 +35,18 @@ async def list_admin_auth_use(arg_num = 1, arg_search = 'normal'):
                 list_data += '<li>' + await ip_pas(data[0]) + ' | ' + html.escape(do_data) + ' | ' + data[2] + '</li>'
 
             list_data += '</ul>'
-            list_data += get_next_page_bottom(conn, '/list/admin/auth_use_page/{}/' + url_pas(arg_search), arg_num, get_list)
+            list_data += await get_next_page_bottom('/list/admin/auth_use_page/{}/' + url_pas(arg_search), arg_num, get_list)
 
             arg_search = html.escape(arg_search) if arg_search != 'normal' else ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'authority_use_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('authority_use_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <input class="opennamu_width_200" name="search" placeholder="''' + get_lang(conn, 'start_with_search') + '''" value="''' + arg_search + '''">
-                        <button type="submit">''' + get_lang(conn, 'search') + '''</button>
+                        <input class="opennamu_width_200" name="search" placeholder="''' + await get_lang('start_with_search') + '''" value="''' + arg_search + '''">
+                        <button type="submit">''' + await get_lang('search') + '''</button>
                     </form>
                     <hr class="main_hr">
                 ''' + list_data,
-                menu = [['other', get_lang(conn, 'return')]]
+                menu = [['other', await get_lang('return')]]
             ))

+ 5 - 5
route/list_admin_group.py

@@ -10,7 +10,7 @@ async def list_admin_group():
         curs.execute(db_change("select distinct name from alist order by name asc"))
         for data in curs.fetchall():
             if await acl_check('', 'owner_auth', '', '') != 1 and not data[0] in org_acl_list:
-                delete_admin_group = ' <a href="/auth/list/delete/' + url_pas(data[0]) + '">(' + get_lang(conn, "delete") + ')</a>'
+                delete_admin_group = ' <a href="/auth/list/delete/' + url_pas(data[0]) + '">(' + await get_lang("delete") + ')</a>'
             else:
                 delete_admin_group = ''
 
@@ -24,11 +24,11 @@ async def list_admin_group():
         list_data += '' + \
             '</ul>' + \
             '<hr class="main_hr">' + \
-            '<a href="/manager/8">(' + get_lang(conn, 'add') + ')</a>' + \
+            '<a href="/manager/8">(' + await get_lang('add') + ')</a>' + \
         ''
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'admin_group_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('admin_group_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = list_data,
-            menu = [['manager', get_lang(conn, 'return')]]
+            menu = [['manager', await get_lang('return')]]
         ))

+ 8 - 8
route/list_history.py

@@ -25,14 +25,14 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
                 data = await api_list_history(num, set_type, doc_name)
 
                 title = doc_name
-                sub = '(' + get_lang(conn, 'history') + ') (' + get_lang(conn, set_type) + ')'
-                menu = [['w/' + url_pas(doc_name), get_lang(conn, 'return')], ['history_add/' + url_pas(doc_name), get_lang(conn, 'history_add')], ['history_reset/' + url_pas(doc_name), get_lang(conn, 'history_reset')]]
+                sub = '(' + await get_lang('history') + ') (' + await get_lang(set_type) + ')'
+                menu = [['w/' + url_pas(doc_name), await get_lang('return')], ['history_add/' + url_pas(doc_name), await get_lang('history_add')], ['history_reset/' + url_pas(doc_name), await get_lang('history_reset')]]
             else:
                 data = await api_list_recent_change(num, set_type, 50, '')
 
-                title = get_lang(conn, 'recent_change')
-                sub = '(' + get_lang(conn, set_type) + ')'
-                menu = [['other', get_lang(conn, 'return')], ['recent_edit_request', get_lang(conn, 'edit_request')]]
+                title = await get_lang('recent_change')
+                sub = '(' + await get_lang(set_type) + ')'
+                menu = [['other', await get_lang('return')], ['recent_edit_request', await get_lang('edit_request')]]
 
             lang = data["language"]
             auth = data["auth"]
@@ -147,7 +147,7 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
                 '''
 
             if tool == "history":
-                data_html += get_next_page_bottom(conn, f'/history_page/{{}}/{set_type}/{doc_name}', num, data)
+                data_html += await get_next_page_bottom(f'/history_page/{{}}/{set_type}/{doc_name}', num, data)
                 data_html = (
                     '<form method="post">'
                     f'<select name="a">{select}</select> '
@@ -157,9 +157,9 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
                     '<hr class="main_hr"></hr>' + data_html
                 )
             else:
-                data_html += get_next_page_bottom(conn, f'/recent_change/{{}}/{set_type}', num, data)
+                data_html += await get_next_page_bottom(f'/recent_change/{{}}/{set_type}', num, data)
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [title, await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
                 data = data_html,
                 menu = menu

+ 8 - 8
route/list_image_file.py

@@ -8,9 +8,9 @@ async def list_image_file(arg_num = 1, do_type = 0):
 
         list_data = ''
         if do_type == 0:
-            list_data += '<a href="/list/image">(' + get_lang(conn, 'image') + ')</a>'
+            list_data += '<a href="/list/image">(' + await get_lang('image') + ')</a>'
         else:
-            list_data += '<a href="/list/file">(' + get_lang(conn, 'normal') + ')</a>'
+            list_data += '<a href="/list/file">(' + await get_lang('normal') + ')</a>'
         
         list_data += '<hr class="main_hr">'
 
@@ -36,7 +36,7 @@ async def list_image_file(arg_num = 1, do_type = 0):
                 render_data += '||\n'
                 render_data += sub_data + '||'
 
-            end_data = render_set(conn, 
+            end_data = await render_set(conn, 
                 doc_name = '',
                 doc_data = render_data,
                 data_type = 'view',
@@ -54,12 +54,12 @@ async def list_image_file(arg_num = 1, do_type = 0):
             list_data += '</ul>'
 
         if do_type == 0:
-            list_data += get_next_page_bottom(conn, '/list/file/{}', arg_num, data_list)
+            list_data += await get_next_page_bottom('/list/file/{}', arg_num, data_list)
         else:
-            list_data += get_next_page_bottom(conn, '/list/image/{}', arg_num, data_list)
+            list_data += await get_next_page_bottom('/list/image/{}', arg_num, data_list)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'image_file_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('image_file_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = list_data,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 4 - 4
route/list_long_page.py

@@ -23,10 +23,10 @@ async def list_long_page(tool = 'long_page', arg_num = 1):
 
             div += '</li>'
 
-        div += '</ul>' + get_next_page_bottom(conn, '/list/document/' + ('long' if title == 'long_page' else 'short') + '/{}', arg_num, n_list)
+        div += '</ul>' + await get_next_page_bottom('/list/document/' + ('long' if title == 'long_page' else 'short') + '/{}', arg_num, n_list)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, title), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang(title), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 4 - 4
route/list_no_link.py

@@ -21,10 +21,10 @@ async def list_no_link(num = 1):
 
             div += '</li>'
         
-        div += '</ul>' + get_next_page_bottom(conn, '/list/document/no_link/{}', num, n_list)
+        div += '</ul>' + await get_next_page_bottom('/list/document/no_link/{}', num, n_list)
         
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'no_link_document_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('no_link_document_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 5 - 5
route/list_old_page.py

@@ -6,9 +6,9 @@ async def list_old_page(num = 1, set_type = 'old'):
     with get_db_connect() as conn:
         title = ''
         if set_type == 'old':
-            title = get_lang(conn, 'old_page')
+            title = await get_lang('old_page')
         else:
-            title = get_lang(conn, 'new_page')
+            title = await get_lang('new_page')
 
         data = await api_list_old_page(num, set_type)
         data = data["data"]
@@ -23,10 +23,10 @@ async def list_old_page(num = 1, set_type = 'old'):
 
             data_html += await opennamu_make_list(right, data[for_a][1])
 
-        data_html += get_next_page_bottom(conn, f'/list/document/{set_type}/{{}}', int(num), data)
+        data_html += await get_next_page_bottom(f'/list/document/{set_type}/{{}}', int(num), data)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
+        return easy_minify(flask.render_template(await skin_check(conn),
             imp = [title, await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = data_html,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 4 - 4
route/list_please.py

@@ -17,10 +17,10 @@ async def list_please(arg_num = 1):
                 '</li>' + \
             ''
 
-        div += '</ul>' + get_next_page_bottom(conn, '/list/document/need/{}', arg_num, data_list)
+        div += '</ul>' + await get_next_page_bottom('/list/document/need/{}', arg_num, data_list)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'need_document'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('need_document'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 10 - 10
route/list_title_index.py

@@ -40,26 +40,26 @@ async def list_title_index(num = 1):
                 data += '''
                     </ul>
                     <ul>
-                        <li>''' + get_lang(conn, 'all') + ' : ' + str(count_end[0]) + '''</li>
+                        <li>''' + await get_lang('all') + ' : ' + str(count_end[0]) + '''</li>
                     </ul>
                     <ul>
-                        <li>''' + get_lang(conn, 'category') + ' : ' + str(count_end[1]) + '''</li>
-                        <li>''' + get_lang(conn, 'user_document') + ' : ' + str(count_end[2]) + '''</li>
-                        <li>''' + get_lang(conn, 'file') + ' : ' + str(count_end[3]) + '''</li>
-                        <li>''' + get_lang(conn, 'other') + ' : ' + str(count_end[4]) + '''</li>
+                        <li>''' + await get_lang('category') + ' : ' + str(count_end[1]) + '''</li>
+                        <li>''' + await get_lang('user_document') + ' : ' + str(count_end[2]) + '''</li>
+                        <li>''' + await get_lang('file') + ' : ' + str(count_end[3]) + '''</li>
+                        <li>''' + await get_lang('other') + ' : ' + str(count_end[4]) + '''</li>
                 '''
             else:
                 data += '''
                     </ul>
                     <ul>
-                        <li>''' + get_lang(conn, 'all') + ' : ' + all_title[0][0] + '''</li>
+                        <li>''' + await get_lang('all') + ' : ' + all_title[0][0] + '''</li>
                 '''
 
-        data += '</ul>' + get_next_page_bottom(conn, '/list/document/all/{}', num, title_list)
+        data += '</ul>' + await get_next_page_bottom('/list/document/all/{}', num, title_list)
         sub = ' (' + str(num) + ')'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'all_document_list'), await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('all_document_list'), await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
             data = data,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 4 - 4
route/list_user.py

@@ -16,10 +16,10 @@ async def list_user(arg_num = 1):
             list_data += ' | ' + data[1] if data[1] != '' else ''
             list_data += '</li>'
 
-        list_data += '</ul>' + get_next_page_bottom(conn, '/list/user/{}', arg_num, user_list)
+        list_data += '</ul>' + await get_next_page_bottom('/list/user/{}', arg_num, user_list)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'member_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('member_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = list_data,
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 17 - 17
route/list_user_check.py

@@ -67,7 +67,7 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
                     b_ip_count = len(curs.fetchall())
 
                     if a_ip_count + b_ip_count != all_ip_count:
-                        div += get_lang(conn, 'same_ip_exist') + '<hr class="main_hr">'    
+                        div += await get_lang('same_ip_exist') + '<hr class="main_hr">'    
             else:
                 plus = ''
                 set_list = [name, sql_num]
@@ -83,8 +83,8 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
             if record:
                 if not plus_id:
                     div = '' + \
-                        '<a href="/manager/14/' + url_pas(name) + '">(' + get_lang(conn, 'compare') + ')</a> ' + \
-                        '<a href="/list/user/check/' + url_pas(name) + '/simple">(' + get_lang(conn, 'simple_check') + ')</a>' + \
+                        '<a href="/manager/14/' + url_pas(name) + '">(' + await get_lang('compare') + ')</a> ' + \
+                        '<a href="/list/user/check/' + url_pas(name) + '/simple">(' + await get_lang('simple_check') + ')</a>' + \
                         '<hr class="main_hr">' + \
                     '' + div
                 else:
@@ -98,9 +98,9 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
                     <table id="main_table_set">
                         <tbody>
                             <tr id="main_table_top_tr">
-                                <td id="main_table_width">''' + get_lang(conn, 'name') + '''</td>
-                                <td id="main_table_width">''' + get_lang(conn, 'ip') + '''</td>
-                                <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
+                                <td id="main_table_width">''' + await get_lang('name') + '''</td>
+                                <td id="main_table_width">''' + await get_lang('ip') + '''</td>
+                                <td id="main_table_width">''' + await get_lang('time') + '''</td>
                             </tr>
                 '''
 
@@ -123,7 +123,7 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
                             <td>
                                 <a href="/list/user/check/''' + url_pas(data[0]) + '''">''' + data[0] + '''</a>
                                 <a href="/list/user/check/delete/''' + url_pas(data[0]) + '/' + url_pas(data[1]) + '/' + url_pas(data[3]) + '/' + ('0' if ip_or_user(name) == 0 else '1') + '''">
-                                    (''' + get_lang(conn, 'delete') + ''')
+                                    (''' + await get_lang('delete') + ''')
                                 </a>
                             </td>
                             <td><a href="/list/user/check/''' + url_pas(data[1]) + '''">''' + data[1] + '''</a></td>
@@ -140,13 +140,13 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
                 '''
 
             if plus_id:
-                div += get_next_page_bottom(conn, 
+                div += await get_next_page_bottom(
                     '/list/user/check/' + url_pas(name) + '/normal/{}/' + url_pas(plus_id), 
                     num, 
                     record
                 )
             else:
-                div += get_next_page_bottom(conn, 
+                div += await get_next_page_bottom(
                     '/list/user/check/' + url_pas(name) + '/normal/{}', 
                     num, 
                     record
@@ -155,10 +155,10 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
             if plus_id:
                 name += ', ' + plus_id
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'check') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('check') + ')', 0])],
                 data = div,
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))
         else:
             curs.execute(db_change("" + \
@@ -174,18 +174,18 @@ async def list_user_check(name = 'test', plus_name = None, arg_num = 1, do_type
 
             if div != '':
                 div = '<ul>' + div + '</ul>'
-                div += get_next_page_bottom(conn, 
+                div += await get_next_page_bottom(
                     '/list/user/check/' + url_pas(name) + '/' + check_type + '/{}', 
                     num, 
                     record
                 )
 
             div = '' + \
-                '<a href="/list/user/check/' + url_pas(name) + '/normal">(' + get_lang(conn, 'check') + ')</a>' + \
+                '<a href="/list/user/check/' + url_pas(name) + '/normal">(' + await get_lang('check') + ')</a>' + \
             '' + div
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'simple_check') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('simple_check') + ')', 0])],
                 data = div,
-                menu = [['check/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['check/' + url_pas(name), await get_lang('return')]]
             ))

+ 7 - 7
route/list_user_check_delete.py

@@ -17,20 +17,20 @@ async def list_user_check_delete(name = None, ip = None, time = None, do_type =
 
                 return redirect(conn, '/list/user/check/' + url_pas(user_id if return_type == '0' else user_ip))
             else:
-                return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [get_lang(conn, 'check'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'delete') + ')', 0])],
+                return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [await get_lang('check'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('delete') + ')', 0])],
                     data = '''
-                        ''' + get_lang(conn, 'name') + ''' : ''' + user_id + '''
+                        ''' + await get_lang('name') + ''' : ''' + user_id + '''
                         <hr class="main_hr">
-                        ''' + get_lang(conn, 'ip') + ''' : ''' + user_ip + '''
+                        ''' + await get_lang('ip') + ''' : ''' + user_ip + '''
                         <hr class="main_hr">
-                        ''' + get_lang(conn, 'time') + ''' : ''' + time + '''
+                        ''' + await get_lang('time') + ''' : ''' + time + '''
                         <hr class="main_hr">
                         <form method="post">
-                            <button type="submit">''' + get_lang(conn, 'delete') + '''</button>
+                            <button type="submit">''' + await get_lang('delete') + '''</button>
                         </form>
                     ''',
-                    menu = [['check/' + url_pas(user_id if return_type == '0' else user_ip), get_lang(conn, 'return')]]
+                    menu = [['check/' + url_pas(user_id if return_type == '0' else user_ip), await get_lang('return')]]
                 ))
         else:
             return redirect(conn)

+ 5 - 5
route/login_find.py

@@ -2,13 +2,13 @@ from .tool.func import *
 
 async def login_find():
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'password_search'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('password_search'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = '''
                 <ul>
-                    <li><a href="/login/find/email">''' + get_lang(conn, 'email') + '''</a></li>
-                    <li><a href="/login/find/key">''' + get_lang(conn, 'key') + '''</a></li>
+                    <li><a href="/login/find/email">''' + await get_lang('email') + '''</a></li>
+                    <li><a href="/login/find/key">''' + await get_lang('key') + '''</a></li>
                 </ul>
             ''',
-            menu = [['user', get_lang(conn, 'return')]]
+            menu = [['user', await get_lang('return')]]
         ))

+ 12 - 12
route/login_find_email.py

@@ -79,18 +79,18 @@ async def login_find_email(tool):
                 sql_d = curs.fetchall()
                 b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
         
-                return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [get_lang(conn, 'password_search'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'email') + ')', 0])],
+                return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [await get_lang('password_search'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('email') + ')', 0])],
                     data = b_text + '''
                         <form method="post">
-                            <input placeholder="''' + get_lang(conn, 'id') + '''" name="id" type="text">
+                            <input placeholder="''' + await get_lang('id') + '''" name="id" type="text">
                             <hr class="main_hr">
-                            <input placeholder="''' + get_lang(conn, 'email') + '''" name="email" type="text">
+                            <input placeholder="''' + await get_lang('email') + '''" name="email" type="text">
                             <hr class="main_hr">
-                            <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                            <button type="submit">''' + await get_lang('save') + '''</button>
                         </form>
                     ''',
-                    menu = [['user', get_lang(conn, 'return')]]
+                    menu = [['user', await get_lang('return')]]
                 ))
             else:
                 if tool == 'need_email' and not 'c_type' in flask.session:
@@ -100,17 +100,17 @@ async def login_find_email(tool):
                 sql_d = curs.fetchall()
                 b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
         
-                return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [get_lang(conn, 'email'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+                return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [await get_lang('email'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                     data = '''
-                        <a href="/filter/email_filter">(''' + get_lang(conn, 'email_filter_list') + ''')</a>
+                        <a href="/filter/email_filter">(''' + await get_lang('email_filter_list') + ''')</a>
                         <hr class="main_hr">
                         ''' + b_text + '''
                         <form method="post">
-                            <input placeholder="''' + get_lang(conn, 'email') + '''" name="email" type="text">
+                            <input placeholder="''' + await get_lang('email') + '''" name="email" type="text">
                             <hr class="main_hr">
-                            <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                            <button type="submit">''' + await get_lang('save') + '''</button>
                         </form>
                     ''',
-                    menu = [['user', get_lang(conn, 'return')]]
+                    menu = [['user', await get_lang('return')]]
                 ))

+ 10 - 10
route/login_find_email_check.py

@@ -30,15 +30,15 @@ async def login_find_email_check(tool):
                 sql_d = curs.fetchall()
                 b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
         
-                return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [get_lang(conn, 'reset_user_ok'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+                return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [await get_lang('reset_user_ok'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                     data = '' + \
                         b_text + \
-                        get_lang(conn, 'id') + ' : ' + user_id + \
+                        await get_lang('id') + ' : ' + user_id + \
                         '<hr class="main_hr">' + \
-                        get_lang(conn, 'password') + ' : ' + user_pw + \
+                        await get_lang('password') + ' : ' + user_pw + \
                     '',
-                    menu = [['user', get_lang(conn, 'return')]]
+                    menu = [['user', await get_lang('return')]]
                 ))
             elif 'c_type' in flask.session and (flask.session['c_key'] == input_key or flask.session['c_key'] == 'email_pass'):
                 curs.execute(db_change('select data from other where name = "encode"'))
@@ -121,15 +121,15 @@ async def login_find_email_check(tool):
             sql_d = curs.fetchall()
             b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
         
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'check_key'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('check_key'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
                         ''' + b_text + '''
-                        <input placeholder="''' + get_lang(conn, 'key') + '''" name="key" type="password">
+                        <input placeholder="''' + await get_lang('key') + '''" name="key" type="password">
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 10 - 10
route/login_find_key.py

@@ -29,26 +29,26 @@ async def login_find_key():
             sql_d = curs.fetchall()
             b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
             
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [get_lang(conn, 'reset_user_ok'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [await get_lang('reset_user_ok'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                     data = '' + \
                         b_text + \
-                        get_lang(conn, 'id') + ' : ' + user_id + \
+                        await get_lang('id') + ' : ' + user_id + \
                         '<hr class="main_hr">' + \
-                        get_lang(conn, 'password') + ' : ' + key + \
+                        await get_lang('password') + ' : ' + key + \
                     '',
-                    menu = [['user', get_lang(conn, 'return')]]
+                    menu = [['user', await get_lang('return')]]
                 ))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'password_search'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('password_search'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <input placeholder="''' + get_lang(conn, 'key') + '''" name="key" type="password">
+                        <input placeholder="''' + await get_lang('key') + '''" name="key" type="password">
                         <hr class="main_hr">
                         ''' + await captcha_get(conn) + '''
-                        <button type="submit">''' + get_lang(conn, 'send') + '''</button>
+                        <button type="submit">''' + await get_lang('send') + '''</button>
                     </form>
                 ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 8 - 8
route/login_login.py

@@ -49,20 +49,20 @@ async def login_login():
 
                 return redirect(conn, '/user')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'login'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('login'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data =  '''
                         <form method="post">
-                            <input placeholder="''' + get_lang(conn, 'id') + '''" name="id" type="text">
+                            <input placeholder="''' + await get_lang('id') + '''" name="id" type="text">
                             <hr class="main_hr">
-                            <input placeholder="''' + get_lang(conn, 'password') + '''" name="pw" type="password">
+                            <input placeholder="''' + await get_lang('password') + '''" name="pw" type="password">
                             <hr class="main_hr">
-                            <!-- <label><input type="checkbox" name="auto_login"> ''' + get_lang(conn, 'auto_login') + ''' (''' + get_lang(conn, 'not_working') + ''')</label>
+                            <!-- <label><input type="checkbox" name="auto_login"> ''' + await get_lang('auto_login') + ''' (''' + await get_lang('not_working') + ''')</label>
                             <hr class="main_hr"> -->
                             ''' + await captcha_get(conn) + '''
-                            <button type="submit">''' + get_lang(conn, 'login') + '''</button>
-                            ''' + http_warning(conn) + '''
+                            <button type="submit">''' + await get_lang('login') + '''</button>
+                            ''' + await http_warning() + '''
                         </form>
                         ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 6 - 6
route/login_login_2fa.py

@@ -49,16 +49,16 @@ async def login_login_2fa():
 
             return redirect(conn, '/user')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'login'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('login'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data =  '''
                         <form method="post">
-                            <input placeholder="''' + get_lang(conn, '2fa_password') + '''" name="pw" type="password">
+                            <input placeholder="''' + await get_lang('2fa_password') + '''" name="pw" type="password">
                             <hr class="main_hr">
                             ''' + await captcha_get(conn) + '''
-                            <button type="submit">''' + get_lang(conn, 'login') + '''</button>
-                            ''' + http_warning(conn) + '''
+                            <button type="submit">''' + await get_lang('login') + '''</button>
+                            ''' + await http_warning() + '''
                         </form>
                         ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 6 - 6
route/login_login_2fa_email.py

@@ -44,16 +44,16 @@ async def login_login_2fa_email():
 
             return redirect(conn, '/user')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'login'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('login'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data =  '''
                         <form method="post">
-                            <input placeholder="''' + get_lang(conn, '2fa_password') + '''" name="pw" type="password">
+                            <input placeholder="''' + await get_lang('2fa_password') + '''" name="pw" type="password">
                             <hr class=\"main_hr\">
                             ''' + await captcha_get(conn) + '''
-                            <button type="submit">''' + get_lang(conn, 'login') + '''</button>
-                            ''' + http_warning(conn) + '''
+                            <button type="submit">''' + await get_lang('login') + '''</button>
+                            ''' + await http_warning() + '''
                         </form>
                         ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 9 - 9
route/login_register.py

@@ -83,31 +83,31 @@ async def login_register():
             curs.execute(db_change("select data from other where name = 'password_min_length'"))
             db_data = curs.fetchall()
             if db_data and db_data[0][0] != '':
-                password_min_length = ' (' + get_lang(conn, 'password_min_length') + ' : ' + db_data[0][0] + ')'
+                password_min_length = ' (' + await get_lang('password_min_length') + ' : ' + db_data[0][0] + ')'
             else:
                 password_min_length = ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'register'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('register'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
                         ''' + contract + '''
 
-                        <input placeholder="''' + get_lang(conn, 'id') + '''" name="id" type="text">
+                        <input placeholder="''' + await get_lang('id') + '''" name="id" type="text">
                         <hr class="main_hr">
 
-                        <input placeholder="''' + get_lang(conn, 'password') + password_min_length + '''" name="pw" type="password">
+                        <input placeholder="''' + await get_lang('password') + password_min_length + '''" name="pw" type="password">
                         <hr class="main_hr">
 
-                        <input placeholder="''' + get_lang(conn, 'password_confirm') + '''" name="pw2" type="password">
+                        <input placeholder="''' + await get_lang('password_confirm') + '''" name="pw2" type="password">
                         <hr class="main_hr">
 
                         ''' + await captcha_get(conn) + '''
 
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
 
-                        ''' + http_warning(conn) + '''
+                        ''' + await http_warning() + '''
                     </form>
                 ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 6 - 7
route/login_register_email.py

@@ -35,7 +35,6 @@ async def login_register_email():
             else:
                 i_text = 'Key : ' + str(flask.session.get('reg_key'))
 
-
             curs.execute(db_change('select id from user_set where name = "email" and data = ?'), [user_email])
             if curs.fetchall():
                 return await re_error(conn, 35)
@@ -51,17 +50,17 @@ async def login_register_email():
             sql_d = curs.fetchall()
             b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'email'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('email'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
-                    <a href="/filter/email_filter">(''' + get_lang(conn, 'email_filter_list') + ''')</a>
+                    <a href="/filter/email_filter">(''' + await get_lang('email_filter_list') + ''')</a>
                     <hr class="main_hr">
                     ''' + b_text + '''
                     <form method="post">
-                        <input placeholder="''' + get_lang(conn, 'email') + '''" name="email" type="text">
+                        <input placeholder="''' + await get_lang('email') + '''" name="email" type="text">
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 5 - 5
route/login_register_email_check.py

@@ -34,15 +34,15 @@ async def login_register_email_check():
             sql_d = curs.fetchall()
             b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'check_key'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('check_key'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
                         ''' + b_text + '''
-                        <input placeholder="''' + get_lang(conn, 'key') + '''" name="key" type="text">
+                        <input placeholder="''' + await get_lang('key') + '''" name="key" type="text">
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 6 - 6
route/login_register_submit.py

@@ -52,16 +52,16 @@ async def login_register_submit():
 
             return await re_error(conn, 43)
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'approval_question'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('approval_question'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        ''' + get_lang(conn, 'approval_question') + ' : ' + data_que + '''
+                        ''' + await get_lang('approval_question') + ' : ' + data_que + '''
                         <hr class="main_hr">
-                        <input placeholder="''' + get_lang(conn, 'approval_question') + '''" name="answer">
+                        <input placeholder="''' + await get_lang('approval_question') + '''" name="answer">
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['user', get_lang(conn, 'return')]]
+                menu = [['user', await get_lang('return')]]
             ))

+ 1 - 1
route/main_func_error_404.py

@@ -23,7 +23,7 @@ async def main_func_error_404(e = ''):
                 db_data = db_data[0][0] if db_data and db_data[0][0] != '' else ''
 
                 if db_data != '':
-                    return easy_minify(conn, flask.render_template(skin_check(conn),
+                    return easy_minify(flask.render_template(await skin_check(conn),
                         imp = ['404', await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                         data = db_data,
                         menu = 0

+ 8 - 8
route/main_search_deep.py

@@ -18,15 +18,15 @@ async def main_search_deep(name = 'Test', search_type = 'title', num = 1):
             div = '''
                 <form method="post">
                     <input class="opennamu_width_200" name="search" value="''' + html.escape(name) + '''">
-                    <button type="submit">''' + get_lang(conn, 'search') + '''</button>
+                    <button type="submit">''' + await get_lang('search') + '''</button>
                 </form>
                 <hr class="main_hr">
             '''
 
             if search_type == 'title':
-                div += '<a href="/search_data_page/1/' + url_pas(name) + '">(' + get_lang(conn, 'search_document_data') + ')</a>'
+                div += '<a href="/search_data_page/1/' + url_pas(name) + '">(' + await get_lang('search_document_data') + ')</a>'
             else:
-                div += '<a href="/search_page/1/' + url_pas(name) + '">(' + get_lang(conn, 'search_document_name') + ')</a>'
+                div += '<a href="/search_page/1/' + url_pas(name) + '">(' + await get_lang('search_document_name') + ')</a>'
 
             name_new = ''
             if re.search(r'^분류:', name):
@@ -45,7 +45,7 @@ async def main_search_deep(name = 'Test', search_type = 'title', num = 1):
             div += '''
                 <ul>
                     <li>
-                        ''' + get_lang(conn, 'go') + ''' : <a ''' + link_id + ' href="/w/' + url_pas(name) + '">' + html.escape(name) + '''</a>
+                        ''' + await get_lang('go') + ''' : <a ''' + link_id + ' href="/w/' + url_pas(name) + '">' + html.escape(name) + '''</a>
                     </li>
                 </ul>
                 <ul>
@@ -58,12 +58,12 @@ async def main_search_deep(name = 'Test', search_type = 'title', num = 1):
             div += '</ul>'
             
             if search_type == 'title':
-                div += get_next_page_bottom(conn, '/search_page/{}/' + url_pas(name), num, all_list)
+                div += await get_next_page_bottom('/search_page/{}/' + url_pas(name), num, all_list)
             else:
-                div += get_next_page_bottom(conn, '/search_data_page/{}/' + url_pas(name), num, all_list)
+                div += await get_next_page_bottom('/search_data_page/{}/' + url_pas(name), num, all_list)
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'search') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('search') + ')', 0])],
                 data = div,
                 menu = 0
             ))

+ 14 - 14
route/main_setting.py

@@ -3,23 +3,23 @@ from .tool.func import *
 async def main_setting():
     with get_db_connect() as conn:
         li_list = [
-            ['main', get_lang(conn, 'main_setting')],
-            ['phrase', get_lang(conn, 'text_setting')],
+            ['main', await get_lang('main_setting')],
+            ['phrase', await get_lang('text_setting')],
             ['robot', 'robots.txt'],
-            ['external', get_lang(conn, 'ext_api_req_set')],
-            ['head', get_lang(conn, 'main_head')],
-            ['body/top', get_lang(conn, 'main_body')],
-            ['body/bottom', get_lang(conn, 'main_bottom_body')],
-            ['sitemap_set', get_lang(conn, 'sitemap_management')],
-            ['top_menu', get_lang(conn, 'top_menu_setting')],
-            ['skin_set', get_lang(conn, 'main_skin_set_default')],
-            ['404_page', get_lang(conn, '404_page_setting')]
+            ['external', await get_lang('ext_api_req_set')],
+            ['head', await get_lang('main_head')],
+            ['body/top', await get_lang('main_body')],
+            ['body/bottom', await get_lang('main_bottom_body')],
+            ['sitemap_set', await get_lang('sitemap_management')],
+            ['top_menu', await get_lang('top_menu_setting')],
+            ['skin_set', await get_lang('main_skin_set_default')],
+            ['404_page', await get_lang('404_page_setting')]
         ]
 
         li_data = ''.join(['<li><a href="/setting/' + str(li[0]) + '">' + li[1] + '</a></li>' for li in li_list])
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-            data = '<h2>' + get_lang(conn, 'list') + '</h2><ul>' + li_data + '</ul>',
-            menu = [['manager', get_lang(conn, 'return')]]
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            data = '<h2>' + await get_lang('list') + '</h2><ul>' + li_data + '</ul>',
+            menu = [['manager', await get_lang('return')]]
         ))

+ 3 - 3
route/main_setting_404_page.py

@@ -53,8 +53,8 @@ async def main_setting_404_page():
                 '</form>'
             )
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, '404_page_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('404_page_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = data_html,
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 12 - 12
route/main_setting_email_test.py

@@ -10,28 +10,28 @@ async def main_setting_email_test():
         if flask.request.method == 'POST':
             render_data = await api_func_email()
             if render_data["response"] == "ok":
-                data = get_lang(conn, "ok")
+                data = await get_lang("ok")
             else:
-                data = get_lang(conn, "error")
+                data = await get_lang("error")
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, "email_test"), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang("email_test"), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = data,
-                menu = [["setting/external", get_lang(conn, 'return')]]
+                menu = [["setting/external", await get_lang('return')]]
             ))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, "email_test"), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang("email_test"), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <input name="title" placeholder="''' + get_lang(conn, "title") + '''">
+                        <input name="title" placeholder="''' + await get_lang("title") + '''">
                         <hr class="main_hr">
-                        <input name="email" placeholder="''' + get_lang(conn, "email") + '''">
+                        <input name="email" placeholder="''' + await get_lang("email") + '''">
                         <hr class="main_hr">
-                        <textarea  name="data" class="opennamu_textarea_500" placeholder="''' + get_lang(conn, "content") + '''"></textarea>
+                        <textarea  name="data" class="opennamu_textarea_500" placeholder="''' + await get_lang("content") + '''"></textarea>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, "send") + '''</button>
+                        <button type="submit">''' + await get_lang("send") + '''</button>
                     </form>
                 ''',
-                menu = [["setting/external", get_lang(conn, 'return')]]
+                menu = [["setting/external", await get_lang('return')]]
             ))

+ 22 - 22
route/main_setting_external.py

@@ -65,80 +65,80 @@ async def main_setting_external():
                 else:
                     re_ver += '<option value="' + i + '">' + re_ver_list[i] + '</option>'
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'ext_api_req_set'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('ext_api_req_set'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+                data = await render_simple_set('''
                     <form method="post">
-                        <h2>''' + get_lang(conn, 'captcha') + '''</h2>
-                        <a href="https://www.google.com/recaptcha/">(''' + get_lang(conn, 'recaptcha') + ''')</a> <a href="https://www.hcaptcha.com/">(''' + get_lang(conn, 'hcaptcha') + ''')</a>
+                        <h2>''' + await get_lang('captcha') + '''</h2>
+                        <a href="https://www.google.com/recaptcha/">(''' + await get_lang('recaptcha') + ''')</a> <a href="https://www.hcaptcha.com/">(''' + await get_lang('hcaptcha') + ''')</a>
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'public_key') + '''</span>
+                        <span>''' + await get_lang('public_key') + '''</span>
                         <hr class="main_hr">
                         <input name="recaptcha" value="''' + html.escape(d_list[0]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'secret_key') + '''</span>
+                        <span>''' + await get_lang('secret_key') + '''</span>
                         <hr class="main_hr">
                         <input name="sec_re" value="''' + html.escape(d_list[1]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'version') + '''</span>
+                        <span>''' + await get_lang('version') + '''</span>
                         <hr class="main_hr">
                         <select name="recaptcha_ver">
                             ''' + re_ver + '''
                         </select>
 
-                        <h2>''' + get_lang(conn, 'email_setting') + '''</h2>
-                        <a href="/setting/phrase#s-6">(''' + get_lang(conn, 'text_setting') + ''')</a>
+                        <h2>''' + await get_lang('email_setting') + '''</h2>
+                        <a href="/setting/phrase#s-6">(''' + await get_lang('text_setting') + ''')</a>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" name="email_have" ''' + ('checked' if d_list[9] != '' else '')  + '''> ''' + get_lang(conn, 'email_required') + '''</label>
+                        <label><input type="checkbox" name="email_have" ''' + ('checked' if d_list[9] != '' else '')  + '''> ''' + await get_lang('email_required') + '''</label>
 
-                        <h3>''' + get_lang(conn, 'smtp_setting') + '''</h3>
+                        <h3>''' + await get_lang('smtp_setting') + '''</h3>
                         <a href="https://support.google.com/mail/answer/7126229">(Google)</a>
                         <hr class="main_hr">
-                        <a href="/setting/email_test">(''' + get_lang(conn, 'test') + ''')</a>
+                        <a href="/setting/email_test">(''' + await get_lang('test') + ''')</a>
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'smtp_server') + '''</span>
+                        <span>''' + await get_lang('smtp_server') + '''</span>
                         <hr class="main_hr">
                         <input name="smtp_server" value="''' + html.escape(d_list[2]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'smtp_port') + '''</span>
+                        <span>''' + await get_lang('smtp_port') + '''</span>
                         <hr class="main_hr">
                         <input name="smtp_port" value="''' + html.escape(d_list[3]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'smtp_security') + '''</span>
+                        <span>''' + await get_lang('smtp_security') + '''</span>
                         <hr class="main_hr">
                         <select name="smtp_security">
                             ''' + security_radios + '''
                         </select>
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'smtp_username') + '''</span>
+                        <span>''' + await get_lang('smtp_username') + '''</span>
                         <hr class="main_hr">
                         <input name="smtp_email" value="''' + html.escape(d_list[5]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'smtp_password') + '''</span>
+                        <span>''' + await get_lang('smtp_password') + '''</span>
                         <hr class="main_hr">
                         <input type="password" name="smtp_pass" value="''' + html.escape(d_list[6]) + '''">
 
-                        <h2>''' + get_lang(conn, 'oauth') + ''' (''' + get_lang(conn, 'not_working') + ''')</h2>
+                        <h2>''' + await get_lang('oauth') + ''' (''' + await get_lang('not_working') + ''')</h2>
                         <a href="https://developers.google.com/identity/protocols/oauth2">(Google)</a>
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'oauth_client_id') + '''</span>
+                        <span>''' + await get_lang('oauth_client_id') + '''</span>
                         <hr class="main_hr">
                         <input name="oauth_client_id" value="''' + html.escape(d_list[8]) + '''">
                         <hr class="main_hr">
 
                         <hr class="main_hr">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 '''),
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 10 - 10
route/main_setting_head.py

@@ -49,7 +49,7 @@ async def main_setting_head(num, skin_name = '', set_preview = 0):
                 form_action = 'formaction="/setting/body/top"'
                 data_preview = flask.request.form.get('content', '') if set_preview == 1 else ''
                 plus = '''
-                    <button id="opennamu_preview_button" type="submit" formaction="/setting_preview/body/top">''' + get_lang(conn, 'preview') + '''</button>
+                    <button id="opennamu_preview_button" type="submit" formaction="/setting_preview/body/top">''' + await get_lang('preview') + '''</button>
                     <hr class="main_hr">
                     <div id="opennamu_preview_area">''' + data_preview + '''</div>
                 '''
@@ -59,20 +59,20 @@ async def main_setting_head(num, skin_name = '', set_preview = 0):
                 data_preview = flask.request.form.get('content', '') if set_preview == 1 else ''
                 form_action = 'formaction="/setting/body/bottom"'
                 plus = '''
-                    <button id="opennamu_preview_button" type="submit" formaction="/setting_preview/body/bottom">''' + get_lang(conn, 'preview') + '''</button>
+                    <button id="opennamu_preview_button" type="submit" formaction="/setting_preview/body/bottom">''' + await get_lang('preview') + '''</button>
                     <hr class="main_hr">
                     <div id="opennamu_preview_area">''' + data_preview + '''</div>
                 '''
             else:
                 skin_list = ''
-                for for_a in load_skin(conn, '', 1):
+                for for_a in await load_skin('', 1):
                     skin_list += '<a href="/setting/head/' + url_pas(for_a) + '">(' + html.escape(for_a) + ')</a> '
                     skin_list += '<a href="/setting/head/' + url_pas(for_a) + '-cssdark">(' + html.escape(for_a) + '-cssdark)</a> '
 
                 curs.execute(db_change("select data from other where name = 'head' and coverage = ?"), [skin_name])
                 title = '_head'
                 start = '' + \
-                    '<a href="/setting/head">(' + get_lang(conn, 'all') + ')</a> ' + \
+                    '<a href="/setting/head">(' + await get_lang('all') + ')</a> ' + \
                     skin_list + '''
                     <hr class="main_hr">
                     <span>
@@ -97,17 +97,17 @@ async def main_setting_head(num, skin_name = '', set_preview = 0):
             else:
                 sub_plus = ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, data = 'main' + title, safe = 1), await wiki_set(), await wiki_custom(conn), wiki_css(['(HTML)' + sub_plus, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang(data = 'main' + title, safe = 1), await wiki_set(), await wiki_custom(conn), wiki_css(['(HTML)' + sub_plus, 0])],
                 data = '''
                     <form method="post">
                         ''' + start + '''
-                        <textarea class="opennamu_textarea_500" placeholder="''' + get_lang(conn, 'enter_html') + '''" name="content" id="content">''' + html.escape(data) + '''</textarea>
+                        <textarea class="opennamu_textarea_500" placeholder="''' + await get_lang('enter_html') + '''" name="content" id="content">''' + html.escape(data) + '''</textarea>
                         <hr class="main_hr">
-                        ''' + (get_lang(conn, 'main_css_warning') + '<hr class="main_hr">' if title == '_head' else '') + '''
-                        <button id="opennamu_save_button" type="submit" ''' + form_action + '''>''' + get_lang(conn, 'save') + '''</button>
+                        ''' + (await get_lang('main_css_warning') + '<hr class="main_hr">' if title == '_head' else '') + '''
+                        <button id="opennamu_save_button" type="submit" ''' + form_action + '''>''' + await get_lang('save') + '''</button>
                         ''' + plus + '''
                     </form>
                 ''',
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 59 - 59
route/main_setting_main.py

@@ -117,7 +117,7 @@ async def main_setting_main():
             for for_a in ip_load_option:
                 view_ip_option = for_a
                 if for_a == 'default':
-                    view_ip_option = get_lang(conn, 'default')
+                    view_ip_option = await get_lang('default')
 
                 if d_list[46] == for_a:
                     ip_load_select_data = '<option value="' + for_a + '">' + view_ip_option + '</option>' + ip_load_select_data
@@ -125,209 +125,209 @@ async def main_setting_main():
                     ip_load_select_data += '<option value="' + for_a + '">' + view_ip_option + '</option>'
 
             basic_set = '''
-                <h2>''' + get_lang(conn, 'basic_set') + '''</h2>
+                <h2>''' + await get_lang('basic_set') + '''</h2>
                             
-                <span>''' + get_lang(conn, 'wiki_name') + '''</span>
+                <span>''' + await get_lang('wiki_name') + '''</span>
                 <hr class="main_hr">
                 <input name="name" value="''' + html.escape(d_list[0]) + '''">
                 <hr class="main_hr">
 
-                <span><a href="/setting/main/logo">(''' + get_lang(conn, 'wiki_logo') + ''')</a></span>
+                <span><a href="/setting/main/logo">(''' + await get_lang('wiki_logo') + ''')</a></span>
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'main_page') + '''</span>
+                <span>''' + await get_lang('main_page') + '''</span>
                 <hr class="main_hr">
                 <input name="frontpage" value="''' + html.escape(d_list[2]) + '''">
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'tls_method') + '''</span>
+                <span>''' + await get_lang('tls_method') + '''</span>
                 <hr class="main_hr">
                 <select name="http_select">''' + tls_select + '''</select>
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'domain') + '''</span> (EX : 2du.pythonanywhere.com) (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                <span>''' + await get_lang('domain') + '''</span> (EX : 2du.pythonanywhere.com) (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                 <hr class="main_hr">
                 <input name="domain" value="''' + html.escape(d_list[22]) + '''">
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'wiki_host') + '''</span>
+                <span>''' + await get_lang('wiki_host') + '''</span>
                 <hr class="main_hr">
                 <input name="host" value="''' + html.escape(d_list[16]) + '''">
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'wiki_port') + '''</span>
+                <span>''' + await get_lang('wiki_port') + '''</span>
                 <hr class="main_hr">
                 <input name="port" value="''' + html.escape(d_list[10]) + '''">
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'wiki_secret_key') + '''</span>
+                <span>''' + await get_lang('wiki_secret_key') + '''</span>
                 <hr class="main_hr">
                 <input type="password" name="key" value="''' + html.escape(d_list[11]) + '''">
                 <hr class="main_hr">
                 
-                <label><input type="checkbox" name="wiki_access_password_need" ''' + check_box_div[8] + '''> ''' + get_lang(conn, 'set_wiki_access_password_need') + ''' (''' + get_lang(conn, 'restart_required') + ''')</label>
+                <label><input type="checkbox" name="wiki_access_password_need" ''' + check_box_div[8] + '''> ''' + await get_lang('set_wiki_access_password_need') + ''' (''' + await get_lang('restart_required') + ''')</label>
                 <hr class="main_hr">
                 
-                <span>''' + get_lang(conn, 'set_wiki_access_password') + '''</span> (''' + get_lang(conn, 'restart_required') + ''')
+                <span>''' + await get_lang('set_wiki_access_password') + '''</span> (''' + await get_lang('restart_required') + ''')
                 <hr class="main_hr">
                 <input type="password" name="wiki_access_password" value="''' + html.escape(d_list[32]) + '''">
                 <hr class="main_hr">
 
-                <span>''' + get_lang(conn, 'wiki_load_ip_select') + '''</span> (''' + get_lang(conn, 'restart_required') + ''')
+                <span>''' + await get_lang('wiki_load_ip_select') + '''</span> (''' + await get_lang('restart_required') + ''')
                 <hr class="main_hr">
                 <select name="load_ip_select">''' + ip_load_select_data + '''</select>
                 
-                <h3>''' + get_lang(conn, 'authority_use_list') + '''</h3>
+                <h3>''' + await get_lang('authority_use_list') + '''</h3>
                 
-                <label><input type="checkbox" name="auth_history_off" ''' + check_box_div[14] + '''> ''' + get_lang(conn, 'authority_use_list_off') + '''</label>
+                <label><input type="checkbox" name="auth_history_off" ''' + check_box_div[14] + '''> ''' + await get_lang('authority_use_list_off') + '''</label>
                 <hr class="main_hr">
                 
-                <span>''' + get_lang(conn, 'authority_use_list_expiration_date') + '''</span> (''' + get_lang(conn, 'day') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                <span>''' + await get_lang('authority_use_list_expiration_date') + '''</span> (''' + await get_lang('day') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                 <hr class="main_hr">
                 <input name="auth_history_expiration_date" value="''' + html.escape(d_list[43]) + '''">
                 <hr class="main_hr">
 
-                <h3>''' + get_lang(conn, 'communication_set') + '''</h3>
+                <h3>''' + await get_lang('communication_set') + '''</h3>
                 
-                <label><input type="checkbox" name="enable_comment" ''' + check_box_div[5] + '''> ''' + get_lang(conn, 'enable_comment_function') + '''</label>
+                <label><input type="checkbox" name="enable_comment" ''' + check_box_div[5] + '''> ''' + await get_lang('enable_comment_function') + '''</label>
                 <hr class="main_hr">
 
-                <label><input type="checkbox" name="user_name_level" ''' + check_box_div[15] + '''> ''' + get_lang(conn, 'display_level_in_user_name') + '''</label>
+                <label><input type="checkbox" name="user_name_level" ''' + check_box_div[15] + '''> ''' + await get_lang('display_level_in_user_name') + '''</label>
                 <hr class="main_hr">
 
-                <label><input type="checkbox" name="not_use_view_count" ''' + check_box_div[16] + '''> ''' + get_lang(conn, 'not_use_view_count') + '''</label>
+                <label><input type="checkbox" name="not_use_view_count" ''' + check_box_div[16] + '''> ''' + await get_lang('not_use_view_count') + '''</label>
                 <hr class="main_hr">
             '''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'main_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('main_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+                data = await render_simple_set('''
                     <form method="post">
                         ''' + basic_set + '''
-                        <h2>''' + get_lang(conn, 'design_set') + '''</h2>
+                        <h2>''' + await get_lang('design_set') + '''</h2>
                         
-                        <span>''' + get_lang(conn, 'wiki_skin') + '''</span>
+                        <span>''' + await get_lang('wiki_skin') + '''</span>
                         <hr class="main_hr">
-                        <select name="skin">''' + load_skin(conn, d_list[5] if d_list[5] != '' else 'ringo') + '''</select>
+                        <select name="skin">''' + await load_skin(d_list[5] if d_list[5] != '' else 'ringo') + '''</select>
 
-                        <h2>''' + get_lang(conn, 'render_set') + '''</h2>
+                        <h2>''' + await get_lang('render_set') + '''</h2>
                         
-                        <label><input type="checkbox" name="namumark_compatible" ''' + check_box_div[10] + '''> ''' + get_lang(conn, 'namumark_fully_compatible_mode') + '''</label>
+                        <label><input type="checkbox" name="namumark_compatible" ''' + check_box_div[10] + '''> ''' + await get_lang('namumark_fully_compatible_mode') + '''</label>
                         <hr class="main_hr">
                         
-                        <label><input type="checkbox" name="link_case_insensitive" ''' + check_box_div[12] + '''> ''' + get_lang(conn, 'link_case_insensitive') + '''</label>
+                        <label><input type="checkbox" name="link_case_insensitive" ''' + check_box_div[12] + '''> ''' + await get_lang('link_case_insensitive') + '''</label>
                         <hr class="main_hr">
 
-                        <h2>''' + get_lang(conn, 'login_set') + '''</h2>
+                        <h2>''' + await get_lang('login_set') + '''</h2>
                         
-                        <label><input type="checkbox" name="reg" ''' + check_box_div[0] + '''> ''' + get_lang(conn, 'no_register') + '''</label>
+                        <label><input type="checkbox" name="reg" ''' + check_box_div[0] + '''> ''' + await get_lang('no_register') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" name="ip_view" ''' + check_box_div[1] + '''> ''' + get_lang(conn, 'hide_ip') + '''</label>
+                        <label><input type="checkbox" name="ip_view" ''' + check_box_div[1] + '''> ''' + await get_lang('hide_ip') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" name="user_name_view" ''' + check_box_div[11] + '''> ''' + get_lang(conn, 'hide_user_name') + '''</label>
+                        <label><input type="checkbox" name="user_name_view" ''' + check_box_div[11] + '''> ''' + await get_lang('hide_user_name') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" name="requires_approval" ''' + check_box_div[3] + '''> ''' + get_lang(conn, 'requires_approval') + '''</label>
+                        <label><input type="checkbox" name="requires_approval" ''' + check_box_div[3] + '''> ''' + await get_lang('requires_approval') + '''</label>
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'password_min_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('password_min_length') + '''</span> (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="password_min_length" value="''' + html.escape(d_list[30]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'encryption_method') + '''</span>
+                        <span>''' + await get_lang('encryption_method') + '''</span>
                         <hr class="main_hr">
                         <select name="encode">''' + encode_select + '''</select>
 
-                        <h3>''' + get_lang(conn, 'ua') + '''</h3>
+                        <h3>''' + await get_lang('ua') + '''</h3>
                         
-                        <label><input type="checkbox" name="ua_get" ''' + check_box_div[4] + '''> ''' + get_lang(conn, 'ua_get_off') + '''</label>
+                        <label><input type="checkbox" name="ua_get" ''' + check_box_div[4] + '''> ''' + await get_lang('ua_get_off') + '''</label>
                         <hr class="main_hr">
                         
-                        <span>''' + get_lang(conn, 'ua_expiration_date') + '''</span> (''' + get_lang(conn, 'day') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('ua_expiration_date') + '''</span> (''' + await get_lang('day') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="ua_expiration_date" value="''' + html.escape(d_list[42]) + '''">
                         <hr class="main_hr">
                         
-                        <h2>''' + get_lang(conn, 'server_set') + '''</h2>
+                        <h2>''' + await get_lang('server_set') + '''</h2>
 
-                        <span>''' + get_lang(conn, 'update_branch') + '''</span>
+                        <span>''' + await get_lang('update_branch') + '''</span>
                         <hr class="main_hr">
                         <select name="update">''' + branch_div + '''</select>
 
                         <span ''' + sqlite_only + '''>
-                            <h3>''' + get_lang(conn, 'backup') + ''' (''' + get_lang(conn, 'sqlite_only') + ''')</h3>
+                            <h3>''' + await get_lang('backup') + ''' (''' + await get_lang('sqlite_only') + ''')</h3>
                             
-                            <span>''' + get_lang(conn, 'backup_warning') + ''' (EX : data_YYYYMMDDHHMMSS.db)</span>
+                            <span>''' + await get_lang('backup_warning') + ''' (EX : data_YYYYMMDDHHMMSS.db)</span>
                             <hr class="main_hr">
                             <hr class="main_hr">
                             
-                            <span>''' + get_lang(conn, 'backup_interval') + '''</span> (''' + get_lang(conn, 'hour') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                            <span>''' + await get_lang('backup_interval') + '''</span> (''' + await get_lang('hour') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                             <hr class="main_hr">
                             <input name="back_up" value="''' + html.escape(d_list[9]) + '''">
                             <hr class="main_hr">
                             
-                            <span>''' + get_lang(conn, 'backup_where') + '''</span> (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'empty') + ''') (''' + get_lang(conn, 'example') + ''' : ./data/backup.db)
+                            <span>''' + await get_lang('backup_where') + '''</span> (''' + await get_lang('default') + ''' : ''' + await get_lang('empty') + ''') (''' + await get_lang('example') + ''' : ./data/backup.db)
                             <hr class="main_hr">
                             <input name="backup_where" value="''' + html.escape(d_list[21]) + '''">
                             <hr class="main_hr">
 
-                            <span>''' + get_lang(conn, 'backup_count') + '''</span> (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                            <span>''' + await get_lang('backup_count') + '''</span> (''' + await get_lang('default') + ''' : ''' + await get_lang('empty') + ''')
                             <hr class="main_hr">
                             <input name="backup_count" value="''' + html.escape(d_list[41]) + '''">
                             <hr class="main_hr">
                         </span>
 
-                        <h2>''' + get_lang(conn, 'edit_set') + '''</h2>
+                        <h2>''' + await get_lang('edit_set') + '''</h2>
                         
-                        <span>''' + get_lang(conn, 'slow_edit') + '''</span> (''' + get_lang(conn, 'second') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('slow_edit') + '''</span> (''' + await get_lang('second') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="slow_edit" value="''' + html.escape(d_list[19]) + '''">
                         <hr class="main_hr">
                         
-                        <label><input type="checkbox" name="edit_bottom_compulsion" ''' + check_box_div[7] + '''> ''' + get_lang(conn, 'edit_bottom_compulsion') + '''</label>
+                        <label><input type="checkbox" name="edit_bottom_compulsion" ''' + check_box_div[7] + '''> ''' + await get_lang('edit_bottom_compulsion') + '''</label>
                         <hr class="main_hr">
                         
-                        <span>''' + get_lang(conn, 'title_max_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('title_max_length') + '''</span> (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="title_max_length" value="''' + html.escape(d_list[28]) + '''">
                         <hr class="main_hr">
                         
-                        <span>''' + get_lang(conn, 'title_topic_max_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('title_topic_max_length') + '''</span> (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="title_topic_max_length" value="''' + html.escape(d_list[29]) + '''">
                         <hr class="main_hr">
                         
-                        <span>''' + get_lang(conn, 'max_file_size') + ''' (MB)</span>
+                        <span>''' + await get_lang('max_file_size') + ''' (MB)</span>
                         <hr class="main_hr">
                         <input name="upload" value="''' + html.escape(d_list[4]) + '''">
                         <hr class="main_hr">
                         
-                        <label><input type="checkbox" name="history_recording_off" ''' + check_box_div[9] + '''> ''' + get_lang(conn, 'set_history_recording_off') + '''</label>
+                        <label><input type="checkbox" name="history_recording_off" ''' + check_box_div[9] + '''> ''' + await get_lang('set_history_recording_off') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" name="move_with_redirect" ''' + check_box_div[13] + '''> ''' + get_lang(conn, 'move_with_redirect') + ''' (''' + get_lang(conn, 'not_working') + ''')</label>
+                        <label><input type="checkbox" name="move_with_redirect" ''' + check_box_div[13] + '''> ''' + await get_lang('move_with_redirect') + ''' (''' + await get_lang('not_working') + ''')</label>
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'slow_thread') + '''</span> (''' + get_lang(conn, 'second') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('slow_thread') + '''</span> (''' + await get_lang('second') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="slow_thread" value="''' + html.escape(d_list[38]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'edit_timeout') + '''</span> (''' + get_lang(conn, 'second') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''') (''' + get_lang(conn, 'linux_only') + ''')
+                        <span>''' + await get_lang('edit_timeout') + '''</span> (''' + await get_lang('second') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''') (''' + await get_lang('linux_only') + ''')
                         <hr class="main_hr">
                         <input name="edit_timeout" value="''' + html.escape(d_list[39]) + '''">
                         <hr class="main_hr">
 
-                        <span>''' + get_lang(conn, 'document_content_max_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <span>''' + await get_lang('document_content_max_length') + '''</span> (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="document_content_max_length" value="''' + html.escape(d_list[40]) + '''">
                         <hr class="main_hr">
 
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 '''),
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 6 - 6
route/main_setting_main_logo.py

@@ -7,7 +7,7 @@ async def main_setting_main_logo():
         if await acl_check('', 'owner_auth', '', '') == 1:
             return await re_error(conn, 0)
 
-        skin_list = [0] + load_skin(conn, '', 1)
+        skin_list = [0] + await load_skin('', 1)
         i_list = []
         for i in skin_list:
             i_list += [['logo', '' if i == 0 else i]]
@@ -38,19 +38,19 @@ async def main_setting_main_logo():
             end_data = ''
             for i in range(0, len(skin_list)):
                 end_data += '' + \
-                    '<span>' + get_lang(conn, 'wiki_logo') + ' ' + ('(' + skin_list[i] + ')' if skin_list[i] != 0 else '') + ' (HTML)' + \
+                    '<span>' + await get_lang('wiki_logo') + ' ' + ('(' + skin_list[i] + ')' if skin_list[i] != 0 else '') + ' (HTML)' + \
                     '<hr class="main_hr">' + \
                     '<input name="' + (skin_list[i] if skin_list[i] != 0 else 'main_css') + '" value="' + html.escape(d_list[i]) + '">' + \
                     '<hr class="main_hr">' + \
                 ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'wiki_logo'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('wiki_logo'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
                         ''' + end_data + '''
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['setting/main', get_lang(conn, 'return')]]
+                menu = [['setting/main', await get_lang('return')]]
             ))

+ 42 - 42
route/main_setting_phrase.py

@@ -60,121 +60,121 @@ async def main_setting_phrase():
                     curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, ''])
                     d_list += ['']
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'text_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('text_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+                data = await render_simple_set('''
                     <form method="post">
-                        <h2>''' + get_lang(conn, 'register_text') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('register_text') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[0] + '''">''' + html.escape(d_list[0]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'non_login_alert') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('non_login_alert') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[1] + '''">''' + html.escape(d_list[1]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'copyright_checkbox_text') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('copyright_checkbox_text') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[3] + '''">''' + html.escape(d_list[3]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'check_key_text') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('check_key_text') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[4] + '''">''' + html.escape(d_list[4]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'email_title') + '''</h2>
+                        <h2>''' + await get_lang('email_title') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[5] + '''">''' + html.escape(d_list[5]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'email_text') + '''</h2>
+                        <h2>''' + await get_lang('email_text') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[6] + '''">''' + html.escape(d_list[6]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'email_insert_text') + '''</h2>
+                        <h2>''' + await get_lang('email_insert_text') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[7] + '''">''' + html.escape(d_list[7]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'password_search_text') + '''</h2>
+                        <h2>''' + await get_lang('password_search_text') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[8] + '''">''' + html.escape(d_list[8]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'reset_user_text') + '''</h2>
+                        <h2>''' + await get_lang('reset_user_text') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[9] + '''">''' + html.escape(d_list[9]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'error_401') + '''</h2>
+                        <h2>''' + await get_lang('error_401') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[10] + '''">''' + html.escape(d_list[10]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'error_404') + '''</h2>
+                        <h2>''' + await get_lang('error_404') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[11] + '''">''' + html.escape(d_list[11]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'approval_question') + '''</h2>
-                        <sup><a href="/setting/main">''' + get_lang(conn, 'approval_question_visible_only_when_approval_on') + '''</a></sup>
+                        <h2>''' + await get_lang('approval_question') + '''</h2>
+                        <sup><a href="/setting/main">''' + await get_lang('approval_question_visible_only_when_approval_on') + '''</a></sup>
                         <hr class="main_hr">
                         <textarea class="opennamu_textarea_100" name="''' + i_list[12] + '''">''' + html.escape(d_list[12]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'edit_help') + '''</h2>
+                        <h2>''' + await get_lang('edit_help') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[13] + '''">''' + html.escape(d_list[13]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'upload_help') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('upload_help') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[14] + '''">''' + html.escape(d_list[14]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'upload_default') + '''</h2>
+                        <h2>''' + await get_lang('upload_default') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[15] + '''">''' + html.escape(d_list[15]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'bottom_text') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('bottom_text') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[16] + '''">''' + html.escape(d_list[16]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'topic_text') + '''</h2>
+                        <h2>''' + await get_lang('topic_text') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[17] + '''">''' + html.escape(d_list[17]) + '''</textarea>
                         
-                        <h2>''' + get_lang(conn, 'phrase_user_page_admin') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('phrase_user_page_admin') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[18] + '''">''' + html.escape(d_list[18]) + '''</textarea>
                         
-                        <h2>''' + get_lang(conn, 'phrase_user_page_owner') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('phrase_user_page_owner') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[19] + '''">''' + html.escape(d_list[19]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'phrase_old_page_warning') + ''' (''' + get_lang(conn, 'beta') + ''') (HTML)</h2>
+                        <h2>''' + await get_lang('phrase_old_page_warning') + ''' (''' + await get_lang('beta') + ''') (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[20] + '''">''' + html.escape(d_list[20]) + '''</textarea>
                         
-                        <h2>''' + get_lang(conn, 'bbs_help') + '''</h2>
+                        <h2>''' + await get_lang('bbs_help') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[21] + '''">''' + html.escape(d_list[21]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'bbs_comment_help') + '''</h2>
+                        <h2>''' + await get_lang('bbs_comment_help') + '''</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[22] + '''">''' + html.escape(d_list[22]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'outdated_doc_warning') + '''  (HTML)</h2>
-                        <span>''' + get_lang(conn, 'period') + '''</span> (''' + get_lang(conn, 'day') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
+                        <h2>''' + await get_lang('outdated_doc_warning') + '''  (HTML)</h2>
+                        <span>''' + await get_lang('period') + '''</span> (''' + await get_lang('day') + ''') (''' + await get_lang('off') + ''' : ''' + await get_lang('empty') + ''')
                         <hr class="main_hr">
                         <input name="''' + i_list[24] + '''" value="''' + html.escape(d_list[24]) + '''">
                         <hr class="main_hr">
-                        <textarea class="opennamu_textarea_100" name="''' + i_list[23] + '''" placeholder="''' + get_lang(conn, 'old_page_warning') + '''">''' + html.escape(d_list[23]) + '''</textarea>
+                        <textarea class="opennamu_textarea_100" name="''' + i_list[23] + '''" placeholder="''' + await get_lang('old_page_warning') + '''">''' + html.escape(d_list[23]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'category') + '''</h2>
+                        <h2>''' + await get_lang('category') + '''</h2>
                         <input name="''' + i_list[25] + '''" value="''' + html.escape(d_list[25]) + '''">
 
-                        <h2>''' + get_lang(conn, 'redirect') + '''</h2>
+                        <h2>''' + await get_lang('redirect') + '''</h2>
                         <span>EX : {0} ➤ {1}</span>
                         <hr class="main_hr">
                         <input name="''' + i_list[26] + '''" value="''' + html.escape(d_list[26]) + '''">
 
-                        <h2>''' + get_lang(conn, 'template_var') + '''</h2>
-                        <h3>''' + get_lang(conn, 'template_var_1') + ''' (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'top') + ''') (HTML)</h3>
+                        <h2>''' + await get_lang('template_var') + '''</h2>
+                        <h3>''' + await get_lang('template_var_1') + ''' (''' + await get_lang('default') + ''' : ''' + await get_lang('top') + ''') (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[27] + '''">''' + html.escape(d_list[27]) + '''</textarea>
 
-                        <h3>''' + get_lang(conn, 'template_var_2') + ''' (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'sidebar') + ''') (HTML)</h3>
+                        <h3>''' + await get_lang('template_var_2') + ''' (''' + await get_lang('default') + ''' : ''' + await get_lang('sidebar') + ''') (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[28] + '''">''' + html.escape(d_list[28]) + '''</textarea>
 
-                        <h3>''' + get_lang(conn, 'template_var_3') + ''' (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'bottom') + ''') (HTML)</h3>
+                        <h3>''' + await get_lang('template_var_3') + ''' (''' + await get_lang('default') + ''' : ''' + await get_lang('bottom') + ''') (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[29] + '''">''' + html.escape(d_list[29]) + '''</textarea>
 
-                        <h2>''' + get_lang(conn, 'edit_bottom_text') + ''' (HTML)</h2>
+                        <h2>''' + await get_lang('edit_bottom_text') + ''' (HTML)</h2>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[2] + '''">''' + html.escape(d_list[2]) + '''</textarea>
 
-                        <h3>''' + get_lang(conn, 'edit_only_bottom_text') + ''' (HTML)</h3>
+                        <h3>''' + await get_lang('edit_only_bottom_text') + ''' (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[30] + '''">''' + html.escape(d_list[30]) + '''</textarea>
 
-                        <h3>''' + get_lang(conn, 'move_bottom_text') + ''' (HTML)</h3>
+                        <h3>''' + await get_lang('move_bottom_text') + ''' (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[31] + '''">''' + html.escape(d_list[31]) + '''</textarea>
 
-                        <h3>''' + get_lang(conn, 'delete_bottom_text') + ''' (HTML)</h3>
+                        <h3>''' + await get_lang('delete_bottom_text') + ''' (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[32] + '''">''' + html.escape(d_list[32]) + '''</textarea>
 
-                        <h3>''' + get_lang(conn, 'revert_bottom_text') + ''' (HTML)</h3>
+                        <h3>''' + await get_lang('revert_bottom_text') + ''' (HTML)</h3>
                         <textarea class="opennamu_textarea_100" name="''' + i_list[33] + '''">''' + html.escape(d_list[33]) + '''</textarea>
 
                         <hr class="main_hr">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 '''),
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 5 - 5
route/main_setting_robot.py

@@ -36,18 +36,18 @@ async def main_setting_robot():
 
             return redirect(conn, '/setting/robot')
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = ['robots.txt', await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
-                    <a href="/robots.txt">(''' + get_lang(conn, 'view') + ''')</a>
+                    <a href="/robots.txt">(''' + await get_lang('view') + ''')</a>
                     <hr class="main_hr">
                     <form method="post">
                         <textarea class="opennamu_textarea_500" name="content">''' + html.escape(data) + '''</textarea>
                         <hr class="main_hr">
-                        <label><input type="checkbox" name="default" ''' + default_data + '''> ''' + get_lang(conn, 'default') + '''</label>
+                        <label><input type="checkbox" name="default" ''' + default_data + '''> ''' + await get_lang('default') + '''</label>
                         <hr class="main_hr">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 4 - 4
route/main_setting_sitemap.py

@@ -94,12 +94,12 @@ async def main_setting_sitemap(do_type = 0):
             else:
                 return ''
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'sitemap_manual_create'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('sitemap_manual_create'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'create') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('create') + '''</button>
                     </form>
                 ''',
-                menu = [['setting/sitemap_set', get_lang(conn, 'return')]]
+                menu = [['setting/sitemap_set', await get_lang('return')]]
             ))

+ 11 - 11
route/main_setting_sitemap_set.py

@@ -48,7 +48,7 @@ async def main_setting_sitemap_set():
 
             sitemap_list = ''
             if os.path.exists('sitemap.xml'):
-                sitemap_list += '<a href="/sitemap.xml">(' + get_lang(conn, 'view') + ')</a>'
+                sitemap_list += '<a href="/sitemap.xml">(' + await get_lang('view') + ')</a>'
 
                 for_a = 0
                 while os.path.exists('sitemap_' + str(for_a) + '.xml'):
@@ -56,32 +56,32 @@ async def main_setting_sitemap_set():
 
                     for_a += 1
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'sitemap_management'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('sitemap_management'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     ''' + sitemap_list + '''
                     <hr class="main_hr">
                     <form method="post">
-                        <a href="/setting/sitemap">(''' + get_lang(conn, 'sitemap_manual_create') + ''')</a>
+                        <a href="/setting/sitemap">(''' + await get_lang('sitemap_manual_create') + ''')</a>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" ''' + check_box_div[4] + ''' name="sitemap_auto_make"> ''' + get_lang(conn, 'sitemap_auto_make') + '''</label>
+                        <label><input type="checkbox" ''' + check_box_div[4] + ''' name="sitemap_auto_make"> ''' + await get_lang('sitemap_auto_make') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" ''' + check_box_div[0] + ''' name="sitemap_auto_exclude_domain"> ''' + get_lang(conn, 'stiemap_exclude_domain') + '''</label>
+                        <label><input type="checkbox" ''' + check_box_div[0] + ''' name="sitemap_auto_exclude_domain"> ''' + await get_lang('stiemap_exclude_domain') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" ''' + check_box_div[1] + ''' name="sitemap_auto_exclude_user_page"> ''' + get_lang(conn, 'stiemap_exclude_user_page') + '''</label>
+                        <label><input type="checkbox" ''' + check_box_div[1] + ''' name="sitemap_auto_exclude_user_page"> ''' + await get_lang('stiemap_exclude_user_page') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" ''' + check_box_div[2] + ''' name="sitemap_auto_exclude_file_page"> ''' + get_lang(conn, 'stiemap_exclude_file_page') + '''</label>
+                        <label><input type="checkbox" ''' + check_box_div[2] + ''' name="sitemap_auto_exclude_file_page"> ''' + await get_lang('stiemap_exclude_file_page') + '''</label>
                         <hr class="main_hr">
 
-                        <label><input type="checkbox" ''' + check_box_div[3] + ''' name="sitemap_auto_exclude_category_page"> ''' + get_lang(conn, 'stiemap_exclude_category_page') + '''</label>
+                        <label><input type="checkbox" ''' + check_box_div[3] + ''' name="sitemap_auto_exclude_category_page"> ''' + await get_lang('stiemap_exclude_category_page') + '''</label>
                         <hr class="main_hr">
 
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 32 - 32
route/main_setting_skin_set.py

@@ -9,7 +9,7 @@ async def main_setting_skin_set():
         if await acl_check('', 'owner_auth', '', '') == 1:
             return await re_error(conn, 0)
             
-        set_list = user_setting_skin_set_main_set_list(conn)
+        set_list = await user_setting_skin_set_main_set_list()
 
         if flask.request.method == 'POST':
             for for_b in set_list:
@@ -39,123 +39,123 @@ async def main_setting_skin_set():
 
             set_data_main = { for_b : '' for for_b in set_list }
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'main_skin_set_default'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'beta') + ')', 0])],
-                data = render_simple_set(conn, '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('main_skin_set_default'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('beta') + ')', 0])],
+                data = await render_simple_set('''
                     <form method="post">
-                        <h2>''' + get_lang(conn, "render") + '''</h2>
-                        <h3>''' + get_lang(conn, "strike") + '''</h3>
+                        <h2>''' + await get_lang("render") + '''</h2>
+                        <h3>''' + await get_lang("strike") + '''</h3>
                         ''' + set_data_main["main_css_strike"] + '''
                         <select name="main_css_strike">
                             ''' + set_data["main_css_strike"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "bold") + '''</h3>
+                        <h3>''' + await get_lang("bold") + '''</h3>
                         ''' + set_data_main["main_css_bold"] + '''
                         <select name="main_css_bold">
                             ''' + set_data["main_css_bold"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "category") + '''</h3>
-                        <h4>''' + get_lang(conn, "position") + '''</h4>
+                        <h3>''' + await get_lang("category") + '''</h3>
+                        <h4>''' + await get_lang("position") + '''</h4>
                         ''' + set_data_main["main_css_category_set"] + '''
                         <select name="main_css_category_set">
                             ''' + set_data["main_css_category_set"] + '''
                         </select>
-                        <h4>''' + get_lang(conn, "category_change_title") + '''</h4>
+                        <h4>''' + await get_lang("category_change_title") + '''</h4>
                         ''' + set_data_main["main_css_category_change_title"] + '''
                         <select name="main_css_category_change_title">
                             ''' + set_data["main_css_category_change_title"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "footnote") + ''' (''' + get_lang(conn, 'beta') + ''')</h3>
-                        <h4>''' + get_lang(conn, "footnote_render") + '''</h4>
+                        <h3>''' + await get_lang("footnote") + ''' (''' + await get_lang('beta') + ''')</h3>
+                        <h4>''' + await get_lang("footnote_render") + '''</h4>
                         ''' + set_data_main["main_css_footnote_set"] + '''
                         <select name="main_css_footnote_set">
                             ''' + set_data["main_css_footnote_set"] + '''
                         </select>
-                        <h4>''' + get_lang(conn, "footnote_number") + '''</h4>
+                        <h4>''' + await get_lang("footnote_number") + '''</h4>
                         ''' + set_data_main["main_css_footnote_number"] + '''
                         <select name="main_css_footnote_number">
                             ''' + set_data["main_css_footnote_number"] + '''
                         </select>
-                        <h4>''' + get_lang(conn, "footnote_real_num_view") + '''</h4>
+                        <h4>''' + await get_lang("footnote_real_num_view") + '''</h4>
                         ''' + set_data_main["main_css_view_real_footnote_num"] + '''
                         <select name="main_css_view_real_footnote_num">
                             ''' + set_data["main_css_view_real_footnote_num"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "include_link") + '''</h3>
+                        <h3>''' + await get_lang("include_link") + '''</h3>
                         ''' + set_data_main["main_css_include_link"] + '''
                         <select name="main_css_include_link">
                             ''' + set_data["main_css_include_link"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "image") + ''' (''' + get_lang(conn, 'beta') + ''')</h3>
+                        <h3>''' + await get_lang("image") + ''' (''' + await get_lang('beta') + ''')</h3>
                         ''' + set_data_main["main_css_image_set"] + '''
                         <select name="main_css_image_set">
                             ''' + set_data["main_css_image_set"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "toc") + '''</h3>
+                        <h3>''' + await get_lang("toc") + '''</h3>
                         ''' + set_data_main["main_css_toc_set"] + '''
                         <select name="main_css_toc_set">
                             ''' + set_data["main_css_toc_set"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "exter_link") + '''</h3>
+                        <h3>''' + await get_lang("exter_link") + '''</h3>
                         ''' + set_data_main["main_css_exter_link"] + '''
                         <select name="main_css_exter_link">
                             ''' + set_data["main_css_exter_link"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "link_delimiter") + '''</h3>
+                        <h3>''' + await get_lang("link_delimiter") + '''</h3>
                         ''' + set_data_main["main_css_link_delimiter"] + '''
                         <select name="main_css_link_delimiter">
                             ''' + set_data["main_css_link_delimiter"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "force_darkmode") + '''</h3>
+                        <h3>''' + await get_lang("force_darkmode") + '''</h3>
                         ''' + set_data_main["main_css_darkmode"] + '''
                         <select name="main_css_darkmode">
                             ''' + set_data["main_css_darkmode"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "table") + '''</h3>
-                        <h4>''' + get_lang(conn, "table_scroll") + '''</h4>
+                        <h3>''' + await get_lang("table") + '''</h3>
+                        <h4>''' + await get_lang("table_scroll") + '''</h4>
                         ''' + set_data_main["main_css_table_scroll"] + '''
                         <select name="main_css_table_scroll">
                             ''' + set_data["main_css_table_scroll"] + '''
                         </select>
-                        <h4>''' + get_lang(conn, "table_transparent") + '''</h4>
+                        <h4>''' + await get_lang("table_transparent") + '''</h4>
                         ''' + set_data_main["main_css_table_transparent"] + '''
                         <select name="main_css_table_transparent">
                             ''' + set_data["main_css_table_transparent"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "list_view_change") + '''</h3>
+                        <h3>''' + await get_lang("list_view_change") + '''</h3>
                         ''' + set_data_main["main_css_list_view_change"] + '''
                         <select name="main_css_list_view_change">
                             ''' + set_data["main_css_list_view_change"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "view_joke") + '''</h3>
+                        <h3>''' + await get_lang("view_joke") + '''</h3>
                         ''' + set_data_main["main_css_view_joke"] + '''
                         <select name="main_css_view_joke">
                             ''' + set_data["main_css_view_joke"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "math_scroll") + '''</h3>
+                        <h3>''' + await get_lang("math_scroll") + '''</h3>
                         ''' + set_data_main["main_css_math_scroll"] + '''
                         <select name="main_css_math_scroll">
                             ''' + set_data["main_css_math_scroll"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "view_history") + '''</h3>
+                        <h3>''' + await get_lang("view_history") + '''</h3>
                         ''' + set_data_main["main_css_view_history"] + '''
                         <select name="main_css_view_history">
                             ''' + set_data["main_css_view_history"] + '''
                         </select>
-                        <h3>''' + get_lang(conn, "font_size") + '''</h3>
+                        <h3>''' + await get_lang("font_size") + '''</h3>
                         ''' + set_data_main["main_css_font_size"] + '''
                         <select name="main_css_font_size">
                             ''' + set_data["main_css_font_size"] + '''
                         </select>
-                        <h2>''' + get_lang(conn, "edit") + '''</h2>
-                        <h3>''' + get_lang(conn, "monaco_editor") + '''</h3>
+                        <h2>''' + await get_lang("edit") + '''</h2>
+                        <h3>''' + await get_lang("monaco_editor") + '''</h3>
                         ''' + set_data_main["main_css_monaco"] + '''
                         <select name="main_css_monaco">
                             ''' + set_data["main_css_monaco"] + '''
                         </select>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 '''),
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 6 - 6
route/main_setting_top_menu.py

@@ -22,8 +22,8 @@ async def main_setting_top_menu():
             db_data = curs.fetchall()
             db_data = db_data[0][0] if db_data else ''
             
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'top_menu_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('top_menu_setting'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <span>
                         EX)
@@ -37,13 +37,13 @@ async def main_setting_top_menu():
                         /w/FrontPage
                     </span>
                     <hr class="main_hr">
-                    ''' + get_lang(conn, 'not_support_skin_warning') + '''
+                    ''' + await get_lang('not_support_skin_warning') + '''
                     <hr class="main_hr">
                     <form method="post">
-                        <textarea class="opennamu_textarea_500" placeholder="''' + get_lang(conn, 'enter_top_menu_setting') + '''" name="content" id="content">''' + html.escape(db_data) + '''</textarea>
+                        <textarea class="opennamu_textarea_500" placeholder="''' + await get_lang('enter_top_menu_setting') + '''" name="content" id="content">''' + html.escape(db_data) + '''</textarea>
                         <hr class="main_hr">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
+                        <button id="opennamu_save_button" type="submit">''' + await get_lang('save') + '''</button>
                     </form>
                 ''',
-                menu = [['setting', get_lang(conn, 'return')]]
+                menu = [['setting', await get_lang('return')]]
             ))

+ 5 - 5
route/main_sys_restart.py

@@ -45,14 +45,14 @@ async def main_sys_restart(golang_process):
                         print('Golang process not terminated properly.')
 
             threading.Thread(target = main_sys_restart_do).start()
-            return flask.Response(get_lang(conn, "warning_restart"), status = 200)
+            return flask.Response(await get_lang("warning_restart"), status = 200)
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'wiki_restart'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('wiki_restart'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <button type="submit">''' + get_lang(conn, 'restart') + '''</button>
+                        <button type="submit">''' + await get_lang('restart') + '''</button>
                     </form>
                 ''',
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))

+ 4 - 4
route/main_sys_shutdown.py

@@ -12,12 +12,12 @@ async def main_sys_shutdown():
 
             sys.exit()
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'wiki_shutdown'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('wiki_shutdown'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
-                        <button type="submit">''' + get_lang(conn, 'shutdown') + '''</button>
+                        <button type="submit">''' + await get_lang('shutdown') + '''</button>
                     </form>
                 ''',
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))

+ 9 - 9
route/main_sys_update.py

@@ -45,7 +45,7 @@ async def main_sys_update(golang_process):
                     linux_exe_chmod()
 
                     threading.Thread(target = main_sys_restart_do).start()
-                    return flask.Response(get_lang(conn, "warning_restart"), status = 200)
+                    return flask.Response(await get_lang("warning_restart"), status = 200)
                 
                 print('Error : update failed')
             elif platform.system() == 'Windows':
@@ -61,27 +61,27 @@ async def main_sys_update(golang_process):
                     os.system('del update.zip')
                     
                     threading.Thread(target = main_sys_restart_do).start()
-                    return flask.Response(get_lang(conn, "warning_restart"), status = 200)
+                    return flask.Response(await get_lang("warning_restart"), status = 200)
             
             print('Error : update failed')
 
             return await re_error(conn, 34)
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'update'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-                data = get_lang(conn, 'update_warning') + '''
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('update'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+                data = await get_lang('update_warning') + '''
                     <hr class="main_hr">
                     <ul>
-                        <li id="ver_send_2">''' + get_lang(conn, 'version') + ''' : </li>
-                        <li id="ver_send">''' + get_lang(conn, 'lastest') + ''' : </li>
+                        <li id="ver_send_2">''' + await get_lang('version') + ''' : </li>
+                        <li id="ver_send">''' + await get_lang('lastest') + ''' : </li>
                     </ul>
                     <a href="https://github.com/openNAMU/openNAMU">(Beta)</a> <a href="https://github.com/openNAMU/openNAMU/tree/stable">(Stable)</a>
                     <hr class="main_hr">
                     <form method="post">
-                        <button type="submit">''' + get_lang(conn, 'update') + '''</button>
+                        <button type="submit">''' + await get_lang('update') + '''</button>
                     </form>
                     <!-- JS : opennamu_do_insert_version -->
                 ''',
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))
 

+ 41 - 41
route/main_tool_admin.py

@@ -2,61 +2,61 @@ from .tool.func import *
 
 async def main_tool_admin():
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'admin_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-            data = render_simple_set(conn, '''
-                <h2>''' + get_lang(conn, 'admin') + '''</h2>
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('admin_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            data = await render_simple_set('''
+                <h2>''' + await get_lang('admin') + '''</h2>
                 <ul>
-                    <li><a href="/manager/2">''' + get_lang(conn, 'document_setting') + '''</a></li>
-                    <li><a href="/acl_multiple">''' + get_lang(conn, 'mutiple_document_setting') + '''</a></li>
-                    <li><a href="/manager/3">''' + get_lang(conn, 'check_user') + '''</a></li>
-                    <li><a href="/auth/ban">''' + get_lang(conn, 'ban') + '''</a></li>
-                    <li><a href="/auth/ban/multiple">''' + get_lang(conn, 'multiple_ban') + '''</a></li>
-                    <li><a href="/manager/5">''' + get_lang(conn, 'authorize') + '''</a></li>
-                    <li><a href="/auth/give">''' + get_lang(conn, 'multiple_authorize') + '''</a></li>
-                    <li><a href="/auth/give_total">''' + get_lang(conn, 'auth_to_auth') + '''</a></li>
-                    <li><a href="/delete_multiple">''' + get_lang(conn, 'many_delete') + '''</a></li>
-                    <li><a href="/app_submit">''' + get_lang(conn, 'application_list') + '''</a></li>
+                    <li><a href="/manager/2">''' + await get_lang('document_setting') + '''</a></li>
+                    <li><a href="/acl_multiple">''' + await get_lang('mutiple_document_setting') + '''</a></li>
+                    <li><a href="/manager/3">''' + await get_lang('check_user') + '''</a></li>
+                    <li><a href="/auth/ban">''' + await get_lang('ban') + '''</a></li>
+                    <li><a href="/auth/ban/multiple">''' + await get_lang('multiple_ban') + '''</a></li>
+                    <li><a href="/manager/5">''' + await get_lang('authorize') + '''</a></li>
+                    <li><a href="/auth/give">''' + await get_lang('multiple_authorize') + '''</a></li>
+                    <li><a href="/auth/give_total">''' + await get_lang('auth_to_auth') + '''</a></li>
+                    <li><a href="/delete_multiple">''' + await get_lang('many_delete') + '''</a></li>
+                    <li><a href="/app_submit">''' + await get_lang('application_list') + '''</a></li>
                 </ul>
-                <h2>''' + get_lang(conn, 'owner') + '''</h2>
+                <h2>''' + await get_lang('owner') + '''</h2>
                 <ul>
-                    <li><a href="/auth/list">''' + get_lang(conn, 'admin_group_list') + '''</a></li>
-                    <li><a href="/register">''' + get_lang(conn, 'add_user') + '''</a></li>
-                    <li><a href="/setting">''' + get_lang(conn, 'setting') + '''</a></li>
-                    <li><a href="/manager/18">''' + get_lang(conn, 'user_fix') + '''</a></li>
+                    <li><a href="/auth/list">''' + await get_lang('admin_group_list') + '''</a></li>
+                    <li><a href="/register">''' + await get_lang('add_user') + '''</a></li>
+                    <li><a href="/setting">''' + await get_lang('setting') + '''</a></li>
+                    <li><a href="/manager/18">''' + await get_lang('user_fix') + '''</a></li>
                 </ul>
-                <h3>''' + get_lang(conn, 'filter') + '''</h3>
+                <h3>''' + await get_lang('filter') + '''</h3>
                 <ul>
-                    <li><a href="/filter/edit_filter">''' + get_lang(conn, 'edit_filter_list') + '''</a></li>
-                    <li><a href="/filter/inter_wiki">''' + get_lang(conn, 'interwiki_list') + '''</a></li>
-                    <li><a href="/filter/edit_top">''' + get_lang(conn, 'edit_tool_list') + '''</a></li>
-                    <li><a href="/filter/image_license">''' + get_lang(conn, 'image_license_list') + '''</a></li>
-                    <li><a href="/filter/email_filter">''' + get_lang(conn, 'email_filter_list') + '''</a></li>
-                    <li><a href="/filter/name_filter">''' + get_lang(conn, 'id_filter_list') + '''</a></li>
-                    <li><a href="/filter/file_filter">''' + get_lang(conn, 'file_filter_list') + '''</a></li>
-                    <li><a href="/filter/extension_filter">''' + get_lang(conn, 'extension_filter_list') + '''</a></li>
-                    <li><a href="/filter/document">''' + get_lang(conn, 'document_filter_list') + '''</a></li>
-                    <li><a href="/filter/outer_link">''' + get_lang(conn, 'outer_link_filter_list') + '''</a> (''' + get_lang(conn, 'beta') + ''')
-                    <li><a href="/filter/template">''' + get_lang(conn, 'template_document_list') + '''</a> (''' + get_lang(conn, 'beta') + ''')
+                    <li><a href="/filter/edit_filter">''' + await get_lang('edit_filter_list') + '''</a></li>
+                    <li><a href="/filter/inter_wiki">''' + await get_lang('interwiki_list') + '''</a></li>
+                    <li><a href="/filter/edit_top">''' + await get_lang('edit_tool_list') + '''</a></li>
+                    <li><a href="/filter/image_license">''' + await get_lang('image_license_list') + '''</a></li>
+                    <li><a href="/filter/email_filter">''' + await get_lang('email_filter_list') + '''</a></li>
+                    <li><a href="/filter/name_filter">''' + await get_lang('id_filter_list') + '''</a></li>
+                    <li><a href="/filter/file_filter">''' + await get_lang('file_filter_list') + '''</a></li>
+                    <li><a href="/filter/extension_filter">''' + await get_lang('extension_filter_list') + '''</a></li>
+                    <li><a href="/filter/document">''' + await get_lang('document_filter_list') + '''</a></li>
+                    <li><a href="/filter/outer_link">''' + await get_lang('outer_link_filter_list') + '''</a> (''' + await get_lang('beta') + ''')
+                    <li><a href="/filter/template">''' + await get_lang('template_document_list') + '''</a> (''' + await get_lang('beta') + ''')
                 </ul>
-                <h3>''' + get_lang(conn, 'server') + '''</h2>
+                <h3>''' + await get_lang('server') + '''</h2>
                 <ul>
-                    <li><a href="/restart">''' + get_lang(conn, 'wiki_restart') + '''</a></li>
-                    <li><a href="/shutdown">''' + get_lang(conn, 'wiki_shutdown') + '''</a></li>
-                    <li><a href="/update">''' + get_lang(conn, 'update') + '''</a></li>
+                    <li><a href="/restart">''' + await get_lang('wiki_restart') + '''</a></li>
+                    <li><a href="/shutdown">''' + await get_lang('wiki_shutdown') + '''</a></li>
+                    <li><a href="/update">''' + await get_lang('update') + '''</a></li>
                 </ul>
-                <h2>''' + get_lang(conn, 'version') + '''</h2>
+                <h2>''' + await get_lang('version') + '''</h2>
                 <ul>
-                    <li id="ver_send_2">''' + get_lang(conn, 'version') + ''' : </li>
-                    <li id="ver_send">''' + get_lang(conn, 'lastest') + ''' : </li>
+                    <li id="ver_send_2">''' + await get_lang('version') + ''' : </li>
+                    <li id="ver_send">''' + await get_lang('lastest') + ''' : </li>
                 </ul>
-                <h3>''' + get_lang(conn, 'skin_info') + '''</h3>
+                <h3>''' + await get_lang('skin_info') + '''</h3>
                 <ul>
-                    <li><a href="/api/skin_info?all=true">''' + get_lang(conn, 'skin_info') + '''</a></li>
+                    <li><a href="/api/skin_info?all=true">''' + await get_lang('skin_info') + '''</a></li>
                     <div id="ver_send_3"></div>
                 </ul>
                 <!-- JS : opennamu_do_insert_version -->
                 <!-- JS : opennamu_do_insert_version_skin -->
             '''),
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 34 - 34
route/main_tool_other.py

@@ -2,54 +2,54 @@ from .tool.func import *
 
 async def main_tool_other():
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'other_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-            data = render_simple_set(conn, '''
-                <h2>''' + get_lang(conn, 'user_tool') + '''</h2>
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('other_tool'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            data = await render_simple_set('''
+                <h2>''' + await get_lang('user_tool') + '''</h2>
                 <ul>
-                    <li><a href="/manager/6">''' + get_lang(conn, 'user_tool') + '''</a></li>
+                    <li><a href="/manager/6">''' + await get_lang('user_tool') + '''</a></li>
                 </ul>
-                <h2>''' + get_lang(conn, 'list') + '''</h2>
-                <h3>''' + get_lang(conn, 'admin') + '''</h3>
+                <h2>''' + await get_lang('list') + '''</h2>
+                <h3>''' + await get_lang('admin') + '''</h3>
                 <ul>               
-                    <li><a href="/list/admin">''' + get_lang(conn, 'admin_list') + '''</a></li>
-                    <li><a href="/list/admin/auth_use">''' + get_lang(conn, 'authority_use_list') + '''</a></li>
+                    <li><a href="/list/admin">''' + await get_lang('admin_list') + '''</a></li>
+                    <li><a href="/list/admin/auth_use">''' + await get_lang('authority_use_list') + '''</a></li>
                 </ul>
-                <h3>''' + get_lang(conn, 'discussion') + '''</h3>
+                <h3>''' + await get_lang('discussion') + '''</h3>
                 <ul>
-                    <li><a href="/recent_discuss">''' + get_lang(conn, 'recent_discussion') + '''</a></li>
+                    <li><a href="/recent_discuss">''' + await get_lang('recent_discussion') + '''</a></li>
                 </ul>
-                <h3>''' + get_lang(conn, 'document') + '''</h3>
+                <h3>''' + await get_lang('document') + '''</h3>
                 <ul>
-                    <li><a href="/recent_change">''' + get_lang(conn, 'recent_change') + '''</a></li>
-                    <li><a href="/list/document/all">''' + get_lang(conn, 'all_document_list') + '''</a></li>
-                    <li><a href="/list/document/acl">''' + get_lang(conn, 'acl_document_list') + '''</a></li>
-                    <li><a href="/list/document/need">''' + get_lang(conn, 'need_document') + '''</a></li>
-                    <li><a href="/list/document/long">''' + get_lang(conn, 'long_page') + '''</a></li>
-                    <li><a href="/list/document/short">''' + get_lang(conn, 'short_page') + '''</a></li>
-                    <li><a href="/list/document/old">''' + get_lang(conn, 'old_page') + '''</a></li>
-                    <li><a href="/list/document/new">''' + get_lang(conn, 'new_page') + '''</a></li>
-                    <li><a href="/list/document/no_link">''' + get_lang(conn, 'no_link_document_list') + '''</a></li>
-                </ul>
-                <h3>''' + get_lang(conn, 'user') + '''</h3>
+                    <li><a href="/recent_change">''' + await get_lang('recent_change') + '''</a></li>
+                    <li><a href="/list/document/all">''' + await get_lang('all_document_list') + '''</a></li>
+                    <li><a href="/list/document/acl">''' + await get_lang('acl_document_list') + '''</a></li>
+                    <li><a href="/list/document/need">''' + await get_lang('need_document') + '''</a></li>
+                    <li><a href="/list/document/long">''' + await get_lang('long_page') + '''</a></li>
+                    <li><a href="/list/document/short">''' + await get_lang('short_page') + '''</a></li>
+                    <li><a href="/list/document/old">''' + await get_lang('old_page') + '''</a></li>
+                    <li><a href="/list/document/new">''' + await get_lang('new_page') + '''</a></li>
+                    <li><a href="/list/document/no_link">''' + await get_lang('no_link_document_list') + '''</a></li>
+                </ul>
+                <h3>''' + await get_lang('user') + '''</h3>
                 <ul>
-                    <li><a href="/recent_block">''' + get_lang(conn, 'recent_ban') + '''</a></li>
-                    <li><a href="/list/user">''' + get_lang(conn, 'member_list') + '''</a></li>
+                    <li><a href="/recent_block">''' + await get_lang('recent_ban') + '''</a></li>
+                    <li><a href="/list/user">''' + await get_lang('member_list') + '''</a></li>
                 </ul>
-                <h3>''' + get_lang(conn, 'other') + '''</h3>
+                <h3>''' + await get_lang('other') + '''</h3>
                 <ul>
-                    <li><a href="/list/file">''' + get_lang(conn, 'image_file_list') + '''</a></li>
-                    <li><a href="/vote">''' + get_lang(conn, 'vote_list') + '''</a></li>
-                    <li><a href="/bbs/main">''' + get_lang(conn, 'bbs_main') + '''</a></li>
+                    <li><a href="/list/file">''' + await get_lang('image_file_list') + '''</a></li>
+                    <li><a href="/vote">''' + await get_lang('vote_list') + '''</a></li>
+                    <li><a href="/bbs/main">''' + await get_lang('bbs_main') + '''</a></li>
                 </ul>
-                <h2>''' + get_lang(conn, 'other') + '''</h2>
+                <h2>''' + await get_lang('other') + '''</h2>
                 <ul>
-                    <li><a href="/upload">''' + get_lang(conn, 'upload') + '''</a></li>
-                    <li><a href="/manager/10">''' + get_lang(conn, 'search') + '''</a></li>
+                    <li><a href="/upload">''' + await get_lang('upload') + '''</a></li>
+                    <li><a href="/manager/10">''' + await get_lang('search') + '''</a></li>
                 </ul>
-                <h2>''' + get_lang(conn, 'admin') + '''</h2>
+                <h2>''' + await get_lang('admin') + '''</h2>
                 <ul>
-                    <li><a href="/manager/1">''' + get_lang(conn, 'admin_tool') + '''</a></li>
+                    <li><a href="/manager/1">''' + await get_lang('admin_tool') + '''</a></li>
                 </ul>
             '''),
             menu = 0

+ 20 - 20
route/main_tool_redirect.py

@@ -5,22 +5,22 @@ async def main_tool_redirect(num = 1, add_2 = ''):
         curs = conn.cursor()
 
         title_list = {
-            0 : [get_lang(conn, 'document_name'), '/acl', get_lang(conn, 'document_setting')],
-            1 : [0, '/list/user/check', get_lang(conn, 'check')],
-            2 : [get_lang(conn, 'file_name'), '/filter/file_filter/add', get_lang(conn, 'file_filter_add')],
-            3 : [0, '/auth/give', get_lang(conn, 'authorize')],
-            4 : [0, '/user', get_lang(conn, 'user_tool')],
-            6 : [get_lang(conn, 'name'), '/auth/list/add', get_lang(conn, 'add_admin_group')],
-            7 : [get_lang(conn, 'name'), '/filter/edit_filter/add', get_lang(conn, 'edit_filter_add')],
-            8 : [get_lang(conn, 'document_name'), '/search', get_lang(conn, 'search')],
-            9 : [0, '/recent_block/user', get_lang(conn, 'blocked_user')],
-            10 : [0, '/recent_block/admin', get_lang(conn, 'blocked_admin')],
-            11 : [get_lang(conn, 'document_name'), '/watch_list', get_lang(conn, 'add_watchlist')],
-            12 : [get_lang(conn, 'compare_target'), '/list/user/check', get_lang(conn, 'compare_target')],
-            13 : [get_lang(conn, 'document_name'), '/edit', get_lang(conn, 'load')],
-            14 : [get_lang(conn, 'document_name'), '/star_doc', get_lang(conn, 'add_star_doc')],
-            16 : [0, '/auth/give/fix', get_lang(conn, 'user_fix')],
-            17 : [get_lang(conn, 'search'), '/recent_block/all/1', get_lang(conn, 'search')],
+            0 : [await get_lang('document_name'), '/acl', await get_lang('document_setting')],
+            1 : [0, '/list/user/check', await get_lang('check')],
+            2 : [await get_lang('file_name'), '/filter/file_filter/add', await get_lang('file_filter_add')],
+            3 : [0, '/auth/give', await get_lang('authorize')],
+            4 : [0, '/user', await get_lang('user_tool')],
+            6 : [await get_lang('name'), '/auth/list/add', await get_lang('add_admin_group')],
+            7 : [await get_lang('name'), '/filter/edit_filter/add', await get_lang('edit_filter_add')],
+            8 : [await get_lang('document_name'), '/search', await get_lang('search')],
+            9 : [0, '/recent_block/user', await get_lang('blocked_user')],
+            10 : [0, '/recent_block/admin', await get_lang('blocked_admin')],
+            11 : [await get_lang('document_name'), '/watch_list', await get_lang('add_watchlist')],
+            12 : [await get_lang('compare_target'), '/list/user/check', await get_lang('compare_target')],
+            13 : [await get_lang('document_name'), '/edit', await get_lang('load')],
+            14 : [await get_lang('document_name'), '/star_doc', await get_lang('add_star_doc')],
+            16 : [0, '/auth/give/fix', await get_lang('user_fix')],
+            17 : [await get_lang('search'), '/recent_block/all/1', await get_lang('search')],
         }
         
         if num == 1:
@@ -43,7 +43,7 @@ async def main_tool_redirect(num = 1, add_2 = ''):
                 return redirect(conn, title_list[num][1] + '/' + url_pas(add_1))
         else:
             if title_list[num][0] == 0:
-                placeholder = get_lang(conn, 'user_name')
+                placeholder = await get_lang('user_name')
             else:
                 placeholder = title_list[num][0]
 
@@ -57,15 +57,15 @@ async def main_tool_redirect(num = 1, add_2 = ''):
                         '<hr class="main_hr">' + \
                     ''
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [title_list[num][2], await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '''
                     <form method="post">
                         ''' + top_plus + '''
                         <input placeholder="''' + placeholder + '''" id="data_field" name="name" type="text">
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'go') + '''</button>
+                        <button type="submit">''' + await get_lang('go') + '''</button>
                     </form>
                 ''',
-                menu = [['manager', get_lang(conn, 'return')]]
+                menu = [['manager', await get_lang('return')]]
             ))

+ 44 - 4
route/n_bbs_in.py

@@ -1,5 +1,7 @@
 from .tool.func import *
 
+from .go_api_bbs import api_bbs
+
 async def bbs_in(bbs_num = 1, page = 1):
     with get_db_connect() as conn:
         curs = conn.cursor()
@@ -13,12 +15,50 @@ async def bbs_in(bbs_num = 1, page = 1):
     
         bbs_name = db_data[0][0]
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [bbs_name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'bbs') + ') (' + str(page) + ')', 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [bbs_name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('bbs') + ') (' + str(page) + ')', 0])],
             data = '' + \
                 '<div id="opennamu_bbs_in"></div>' + \
                 '<script defer src="/views/main_css/js/route/bbs_in.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_in(); });</script>' + \
             '',
-            menu = [['bbs/main', get_lang(conn, 'return')], ['bbs/edit/' + bbs_num_str, get_lang(conn, 'add')], ['bbs/set/' + bbs_num_str, get_lang(conn, 'bbs_set')]]
-        ))
+            menu = [['bbs/main', await get_lang('return')], ['bbs/edit/' + bbs_num_str, await get_lang('add')], ['bbs/set/' + bbs_num_str, await get_lang('bbs_set')]]
+        ))
+
+'''
+async def bbs_in(bbs_num = 1, page = 1):
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        bbs_num_str = str(bbs_num)
+
+        curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
+        db_data = curs.fetchall()
+        if not db_data:
+            return redirect(conn, '/bbs/main')
+    
+        bbs_name = db_data[0][0]
+
+    data = await api_bbs(bbs_num, page)
+
+    data_html = ''
+    for for_a in range(len(data)):
+        data_html += '<div class="opennamu_recent_change">'
+        data_html += '<a href="/bbs/w/' + data[for_a]['set_id'] + '/' + data[for_a]['set_code'] + '">' + html.escape(data[for_a]['title']) + '</a>'
+        data_html += '<div style="float: right;">'
+        data_html += '<span id="opennamu_bbs_comment_' + str(for_a) + '"></span>'
+        data_html += data[for_a]['user_id_render'] + ' | '
+
+        if data[for_a]['pinned'] == '1':
+            data_html += '<span style="color: red;">' + data[for_a]['date'] + '</span>'
+        else:
+            data_html += data[for_a]['date']
+
+            data_html += '</div>'
+            data_html += '<div style="clear: both;"></div>'
+
+            data_html += '</div>'
+            data_html += '<hr class="main_hr">'
+
+        get_next_page_bottom()
+'''

+ 3 - 3
route/n_bbs_main.py

@@ -2,12 +2,12 @@ from .tool.func import *
 
 async def bbs_main():
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'bbs_main'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('bbs_main'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = '' + \
                 '<div id="opennamu_bbs_main"></div>' + \
                 '<script defer src="/views/main_css/js/route/bbs_main.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_main(); });</script>' + \
             '',
-            menu = [['other', get_lang(conn, 'other_tool')], ['bbs/make', get_lang(conn, 'add')]]
+            menu = [['other', await get_lang('other_tool')], ['bbs/make', await get_lang('add')]]
         ))

+ 3 - 3
route/n_bbs_w_set.py

@@ -13,12 +13,12 @@ async def bbs_w_set(bbs_num = ''):
 
         bbs_num_str = str(bbs_num)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'bbs_set'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('bbs_set'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
             data = '' + \
                 '<div id="opennamu_bbs_w_set"></div>' + \
                 '<script defer src="/views/main_css/js/route/bbs_w_set.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_w_set(); });</script>' + \
             '',
-            menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')]]
+            menu = [['bbs/in/' + bbs_num_str, await get_lang('return')]]
         ))

+ 3 - 3
route/n_edit_move_all.py

@@ -2,12 +2,12 @@ from .tool.func import *
 
 async def edit_move_all():
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'multiple_move'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('multiple_move'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = '' + \
                 '<div id="opennamu_edit_move_all"></div>' + \
                 '<script defer src="/views/main_css/js/route/edit_move_all.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_edit_move_all(); });</script>' + \
             '',
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 4 - 4
route/n_give_auth.py

@@ -3,17 +3,17 @@ from .tool.func import *
 async def give_auth(user_name = ''):
     with get_db_connect() as conn:
         if user_name == '':
-            user_name = get_lang(conn, 'authorize')
+            user_name = await get_lang('authorize')
             sub = 0
         else:
-            sub = '(' + get_lang(conn, 'authorize') + ')'
+            sub = '(' + await get_lang('authorize') + ')'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
+        return easy_minify(flask.render_template(await skin_check(conn),
             imp = [user_name, await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
             data = '' + \
                 '<div id="opennamu_give_auth"></div>' + \
                 '<script defer src="/views/main_css/js/route/give_auth.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_give_auth(); });</script>' + \
             '',
-            menu = [['manager', get_lang(conn, 'return')]]
+            menu = [['manager', await get_lang('return')]]
         ))

+ 9 - 9
route/n_list_recent_block.py

@@ -4,24 +4,24 @@ async def list_recent_block(user_name = 'Test', tool = 'all', num = 1, why = '')
     with get_db_connect() as conn:
         sub = 0
         if tool == 'ongoing':
-            sub = '(' + get_lang(conn, 'in_progress') + ')'
+            sub = '(' + await get_lang('in_progress') + ')'
         elif tool == 'regex':
-            sub = '(' + get_lang(conn, 'regex') + ')'
+            sub = '(' + await get_lang('regex') + ')'
         elif tool == 'user':
-            sub = '(' + get_lang(conn, 'blocked') + ')'
+            sub = '(' + await get_lang('blocked') + ')'
         elif tool == 'cidr':
-            sub = '(' + get_lang(conn, 'cidr') + ')'
+            sub = '(' + await get_lang('cidr') + ')'
         elif tool == 'private':
-            sub = '(' + get_lang(conn, 'private') + ')'
+            sub = '(' + await get_lang('private') + ')'
         elif tool == 'admin':
-            sub = '(' + get_lang(conn, 'admin') + ')'
+            sub = '(' + await get_lang('admin') + ')'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'recent_ban'), await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('recent_ban'), await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
             data = '' + \
                 '<div id="opennamu_list_recent_block"></div>' + \
                 '<script defer src="/views/main_css/js/route/list_recent_block.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_list_recent_block(); });</script>' + \
             '',
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 5 - 5
route/n_list_recent_discuss.py

@@ -4,16 +4,16 @@ async def list_recent_discuss(num = 1, tool = 'normal'):
     with get_db_connect() as conn:
         m_sub = 0
         if tool == 'close':
-            m_sub = '(' + get_lang(conn, 'close_discussion') + ')'
+            m_sub = '(' + await get_lang('close_discussion') + ')'
         elif tool == 'open':
-            m_sub = '(' + get_lang(conn, 'open_discussion') + ')'
+            m_sub = '(' + await get_lang('open_discussion') + ')'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'recent_discussion'), await wiki_set(), await wiki_custom(conn), wiki_css([m_sub, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('recent_discussion'), await wiki_set(), await wiki_custom(conn), wiki_css([m_sub, 0])],
             data = '' + \
                 '<div id="opennamu_list_recent_discuss"></div>' + \
                 '<script defer src="/views/main_css/js/route/list_recent_discuss.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_list_recent_discuss(); });</script>' + \
             '',
-            menu = [['other', get_lang(conn, 'return')]]
+            menu = [['other', await get_lang('return')]]
         ))

+ 3 - 3
route/n_list_user_check_submit.py

@@ -2,12 +2,12 @@ from .tool.func import *
 
 async def list_user_check_submit(name = 'Test'):
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'check') + ')', 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('check') + ')', 0])],
             data = '' + \
                 '<div id="opennamu_list_user_check_submit"></div>' + \
                 '<script defer src="/views/main_css/js/route/list_user_check_submit.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_list_user_check_submit(); });</script>' + \
             '',
-            menu = [['setting', get_lang(conn, 'return')]]
+            menu = [['setting', await get_lang('return')]]
         ))

+ 3 - 3
route/n_topic_list.py

@@ -2,12 +2,12 @@ from .tool.func import *
 
 async def topic_list(page = 1, name = 'Test'):
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'discussion_list') + ')', 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('discussion_list') + ')', 0])],
             data = '' + \
                 '<div id="opennamu_topic_list"></div>' + \
                 '<script defer src="/views/main_css/js/route/topic_list.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_topic_list(); });</script>' + \
             '',
-            menu = [['w/' + url_pas(name), get_lang(conn, 'document')]]
+            menu = [['w/' + url_pas(name), await get_lang('document')]]
         ))

+ 3 - 3
route/n_w_watch_list.py

@@ -2,12 +2,12 @@ from .tool.func import *
 
 async def w_watch_list(name, num = 1, do_type = 'watch_list'):
     with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, do_type if do_type == 'star_doc' else 'watchlist') + ')', 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang(do_type if do_type == 'star_doc' else 'watchlist') + ')', 0])],
             data = '' + \
                 '<div id="opennamu_w_watch_list"></div>' + \
                 '<script defer src="/views/main_css/js/route/w_watch_list.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_w_watch_list(); });</script>' + \
             '',
-            menu = [['w/' + url_pas(name), get_lang(conn, 'return')]]
+            menu = [['w/' + url_pas(name), await get_lang('return')]]
         ))

+ 12 - 12
route/recent_app_submit.py

@@ -9,26 +9,26 @@ async def recent_app_submit():
         curs.execute(db_change('select data from other where name = "requires_approval"'))
         requires_approval = curs.fetchall()
         if requires_approval and requires_approval[0][0] != 'on':
-            div += get_lang(conn, 'approval_requirement_disabled')
+            div += await get_lang('approval_requirement_disabled')
 
         if flask.request.method == 'GET':
             curs.execute(db_change('select data from user_set where name = "application"'))
             db_data = curs.fetchall()
             if db_data:
                 div += '' + \
-                    get_lang(conn, 'all_register_num') + ' : ' + str(len(db_data)) + \
+                    await get_lang('all_register_num') + ' : ' + str(len(db_data)) + \
                     '<hr class="main_hr">' + \
                 ''
 
                 div += '''
                     <table id="main_table_set">
                         <tr id="main_table_top_tr">
-                            <td id="main_table_width_half">''' + get_lang(conn, 'id') + '''</td>
-                            <td id="main_table_width_half">''' + get_lang(conn, 'email') + '''</td>
+                            <td id="main_table_width_half">''' + await get_lang('id') + '''</td>
+                            <td id="main_table_width_half">''' + await get_lang('email') + '''</td>
                         </tr>
                         <tr id="main_table_top_tr">
-                            <td>''' + get_lang(conn, 'approval_question') + '''</td>
-                            <td>''' + get_lang(conn, 'answer') + '''</td>
+                            <td>''' + await get_lang('approval_question') + '''</td>
+                            <td>''' + await get_lang('answer') + '''</td>
                         </tr>                        
                 '''
 
@@ -70,12 +70,12 @@ async def recent_app_submit():
                                             id="opennamu_save_button"
                                             name="approve" 
                                             value="''' + application['id'] + '''">
-                                        ''' + get_lang(conn, 'approve') + '''
+                                        ''' + await get_lang('approve') + '''
                                     </button>
                                     <button type="submit" 
                                             name="decline" 
                                             value="''' + application['id'] + '''">
-                                        ''' + get_lang(conn, 'decline') + '''
+                                        ''' + await get_lang('decline') + '''
                                     </button>
                                 </td>
                             </tr>
@@ -84,12 +84,12 @@ async def recent_app_submit():
 
                 div += '</table>'
             else:
-                div += get_lang(conn, 'no_applications_now')
+                div += await get_lang('no_applications_now')
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'application_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('application_list'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = div,
-                menu = [['other', get_lang(conn, 'return')]]
+                menu = [['other', await get_lang('return')]]
             ))
         else:
             if await acl_check(tool = 'ban_auth', memo = 'app submit') == 1:

+ 36 - 36
route/recent_change.py

@@ -36,18 +36,18 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
         owner = 1 if owner == 0 else 0
 
         option_list = [
-            ['normal', get_lang(conn, 'normal')],
-            ['edit', get_lang(conn, 'edit')],
-            ['move', get_lang(conn, 'move')],
-            ['delete', get_lang(conn, 'delete')],
-            ['revert', get_lang(conn, 'revert')],
-            ['r1', get_lang(conn, 'new_doc')],
-            ['edit_request', get_lang(conn, 'edit_request')],
-            ['file', get_lang(conn, 'file')],
-            ['category', get_lang(conn, 'category')]
+            ['normal', await get_lang('normal')],
+            ['edit', await get_lang('edit')],
+            ['move', await get_lang('move')],
+            ['delete', await get_lang('delete')],
+            ['revert', await get_lang('revert')],
+            ['r1', await get_lang('new_doc')],
+            ['edit_request', await get_lang('edit_request')],
+            ['file', await get_lang('file')],
+            ['category', await get_lang('category')]
         ]
         if tool == 'history':
-            option_list += [['setting', get_lang(conn, 'setting')]]
+            option_list += [['setting', await get_lang('setting')]]
 
         if flask.request.method == 'POST':
             return redirect(conn, '/diff/' + flask.request.form.get('b', '1') + '/' + flask.request.form.get('a', '1') + '/' + url_pas(name))
@@ -66,11 +66,11 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
 
             if tool == 'history':
                 div += '''
-                    <td id="main_table_width">''' + get_lang(conn, 'version') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'editor') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('version') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('editor') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('time') + '''</td>
                 '''
-                sub = '(' + get_lang(conn, 'history') + ')'
+                sub = '(' + await get_lang('history') + ')'
 
                 set_type = '' if set_type == 'edit' else set_type
                 if set_type != 'normal':
@@ -81,11 +81,11 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                 data_list = curs.fetchall()
             elif tool == 'record':
                 div +=  '''
-                    <td id="main_table_width">''' + get_lang(conn, 'document_name') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'editor') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('document_name') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('editor') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('time') + '''</td>
                 '''
-                sub = '(' + get_lang(conn, 'edit_record') + ')'
+                sub = '(' + await get_lang('edit_record') + ')'
                 set_type = '' if set_type == 'edit' else set_type
 
                 if set_type != 'normal':
@@ -96,9 +96,9 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                 data_list = curs.fetchall()
             else:
                 div +=  '''
-                    <td id="main_table_width">''' + get_lang(conn, 'document_name') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'editor') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('document_name') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('editor') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('time') + '''</td>
                 '''
                 sub = ''
                 set_type = '' if set_type == 'edit' else set_type
@@ -133,7 +133,7 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                     leng = '<span style="color:gray;">(' + data[5] + ')</span>'
 
                 ip = all_ip[data[3]]
-                m_tool = '<a href="/history_tool/' + data[0] + '/' + url_pas(data[1]) + '">(' + get_lang(conn, 'tool') + ')</a>'
+                m_tool = '<a href="/history_tool/' + data[0] + '/' + url_pas(data[1]) + '">(' + await get_lang('tool') + ')</a>'
 
                 style = ['', '']
                 date = data[2]
@@ -143,7 +143,7 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                     if data[7] == 'r1':
                         type_data = ' (' + data[7] + ')'
                     else:
-                        type_data = ' (' + get_lang(conn, data[7]) + ')'
+                        type_data = ' (' + await get_lang(data[7]) + ')'
 
                 send += type_data
 
@@ -194,25 +194,25 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                     ' '.join(['<a href="/history_page/1/' + for_a[0] + '/' + url_pas(name) + '">(' + for_a[1] + ')</a> ' for for_a in option_list]) + \
                     '<hr class="main_hr">' + div + \
                 ''
-                menu = [['w/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['w/' + url_pas(name), await get_lang('return')]]
 
                 if set_type == 'normal':
                     div = '''
                         <form method="post">
                             <select name="a">''' + select + '''</select> <select name="b">''' + select + '''</select>
-                            <button type="submit">''' + get_lang(conn, 'compare') + '''</button>
+                            <button type="submit">''' + await get_lang('compare') + '''</button>
                         </form>
                         <hr class="main_hr">
                     ''' + div
 
                 if admin == 1:
                     menu += [
-                        ['history_add/' + url_pas(name), get_lang(conn, 'history_add')],
-                        ['history_reset/' + url_pas(name), get_lang(conn, 'history_reset')]
+                        ['history_add/' + url_pas(name), await get_lang('history_add')],
+                        ['history_reset/' + url_pas(name), await get_lang('history_reset')]
                     ]
 
                 title = name
-                div += get_next_page_bottom(conn, '/history_page/{}/' + set_type + '/' + url_pas(name), num, data_list)
+                div += await get_next_page_bottom('/history_page/{}/' + set_type + '/' + url_pas(name), num, data_list)
             elif tool == 'record':
                 div = '' + \
                     ' '.join(['<a href="/record/1/' + for_a[0] + '/' + url_pas(name) + '">(' + for_a[1] + ')</a> ' for for_a in option_list]) + \
@@ -220,28 +220,28 @@ async def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                 ''
 
                 title = name
-                menu = [['user/' + url_pas(name), get_lang(conn, 'user_tool')]]
+                menu = [['user/' + url_pas(name), await get_lang('user_tool')]]
                 if admin == 1:
-                    menu += [['record/reset/' + url_pas(name), get_lang(conn, 'record_reset')]]
+                    menu += [['record/reset/' + url_pas(name), await get_lang('record_reset')]]
 
-                div += get_next_page_bottom(conn, '/record/{}/' + url_pas(set_type) + '/' + url_pas(name), num, data_list)
+                div += await get_next_page_bottom('/record/{}/' + url_pas(set_type) + '/' + url_pas(name), num, data_list)
             else:
                 div = '' + \
                     ' '.join(['<a href="/recent_change/1/' + for_a[0] + '">(' + for_a[1] + ')</a> ' for for_a in option_list]) + \
-                    '<a href="/recent_change/1/user">(' + get_lang(conn, 'user_document') + ')</a> ' + \
+                    '<a href="/recent_change/1/user">(' + await get_lang('user_document') + ')</a> ' + \
                     '<hr class="main_hr">' + div + \
                 ''
 
-                menu = [['other', get_lang(conn, 'return')], ['recent_edit_request', get_lang(conn, 'edit_request')]]
-                title = get_lang(conn, 'recent_change')
+                menu = [['other', await get_lang('return')], ['recent_edit_request', await get_lang('edit_request')]]
+                title = await get_lang('recent_change')
 
                 if all_admin == 1:
-                    div += get_next_page_bottom(conn, '/recent_change/{}/' + set_type, num, data_list)
+                    div += await get_next_page_bottom('/recent_change/{}/' + set_type, num, data_list)
 
             if sub == '':
                 sub = 0
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [title, await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
                 data = div,
                 menu = menu

+ 6 - 6
route/recent_edit_request.py

@@ -11,9 +11,9 @@ async def recent_edit_request():
             <table id="main_table_set">
                 <tbody>
                     <tr id="main_table_top_tr">
-                        <td id="main_table_width">''' + get_lang(conn, 'discussion_name') + '''</td>
-                        <td id="main_table_width">''' + get_lang(conn, 'editor') + '''</td>
-                        <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('discussion_name') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('editor') + '''</td>
+                        <td id="main_table_width">''' + await get_lang('time') + '''</td>
                     </tr>
         '''
 
@@ -49,8 +49,8 @@ async def recent_edit_request():
             '</table>' + \
         ''
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'recent_edit_request'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('recent_edit_request'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
             data = div,
-            menu = [['recent_change', get_lang(conn, 'return')]]
+            menu = [['recent_change', await get_lang('return')]]
         ))

+ 5 - 5
route/recent_history_add.py

@@ -29,18 +29,18 @@ async def recent_history_add(name = 'Test', do_type = ''):
 
             return redirect(conn, '/history/' + url_pas(name))
         else:            
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'history_add'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + name + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('history_add'), await wiki_set(), await wiki_custom(conn), wiki_css(['(' + name + ')', 0])],
                 data = '''
                     <form method="post">
-                        <input placeholder="''' + get_lang(conn, 'why') + '''" name="send">
+                        <input placeholder="''' + await get_lang('why') + '''" name="send">
                         <hr class="main_hr">
                         
-                        <input placeholder="''' + get_lang(conn, 'name') + '''" name="get_ip">
+                        <input placeholder="''' + await get_lang('name') + '''" name="get_ip">
                         <hr class="main_hr">
 
                         ''' + await edit_editor(conn, ip) + '''
                     </form>
                 ''',
-                menu = [['history/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['history/' + url_pas(name), await get_lang('return')]]
             ))

+ 5 - 5
route/recent_history_delete.py

@@ -16,14 +16,14 @@ async def recent_history_delete(name = 'Test', rev = 1):
 
             return redirect(conn, '/history/' + url_pas(name))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'history_delete') + ') (r' + num + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('history_delete') + ') (r' + num + ')', 0])],
                 data = '''
                     <form method="post">
-                        <span>''' + get_lang(conn, 'delete_warning') + '''</span>
+                        <span>''' + await get_lang('delete_warning') + '''</span>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'delete') + '''</button>
+                        <button type="submit">''' + await get_lang('delete') + '''</button>
                     </form>
                 ''',
-                menu = [['history/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['history/' + url_pas(name), await get_lang('return')]]
             ))

+ 5 - 5
route/recent_history_reset.py

@@ -14,14 +14,14 @@ async def recent_history_reset(name = 'Test'):
 
             return redirect(conn, '/history/' + url_pas(name))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'history_reset') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('history_reset') + ')', 0])],
                 data = '''
                     <form method="post">
-                        <span>''' + get_lang(conn, 'delete_warning') + '''</span>
+                        <span>''' + await get_lang('delete_warning') + '''</span>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'reset') + '''</button>
+                        <button type="submit">''' + await get_lang('reset') + '''</button>
                     </form>
                 ''',
-                menu = [['history/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['history/' + url_pas(name), await get_lang('return')]]
             ))

+ 5 - 5
route/recent_history_send.py

@@ -27,18 +27,18 @@ async def recent_history_send(name = 'Test', rev = 1):
             if send:
                 send = send[0][0]
 
-                return easy_minify(conn, flask.render_template(skin_check(conn),
-                    imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'send_edit') + ') (r' + num + ')', 0])],
+                return easy_minify(flask.render_template(await skin_check(conn),
+                    imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('send_edit') + ') (r' + num + ')', 0])],
                     data = '''
                         <form method="post">
-                            <span>''' + get_lang(conn, 'delete_warning') + '''</span>
+                            <span>''' + await get_lang('delete_warning') + '''</span>
                             <hr class="main_hr">
                             <input value="''' + html.escape(send) + '''" name="send">
                             <hr class="main_hr">
-                            <button type="submit">''' + get_lang(conn, 'edit') + '''</button>
+                            <button type="submit">''' + await get_lang('edit') + '''</button>
                         </form>
                     ''',
-                    menu = [['history/' + url_pas(name), get_lang(conn, 'return')]]
+                    menu = [['history/' + url_pas(name), await get_lang('return')]]
                 ))
             else:
                 return redirect(conn, '/history/' + url_pas(name))

+ 14 - 14
route/recent_history_tool.py

@@ -7,43 +7,43 @@ async def recent_history_tool(name = 'Test', rev = 1):
         num = str(rev)
 
         data = '' + \
-            '<h2>' + get_lang(conn, 'tool') + '</h2>' + \
+            '<h2>' + await get_lang('tool') + '</h2>' + \
             '<ul>' + \
-                '<li><a href="/raw_rev/' + num + '/' + url_pas(name) + '">' + get_lang(conn, 'raw') + '</a></li>' + \
+                '<li><a href="/raw_rev/' + num + '/' + url_pas(name) + '">' + await get_lang('raw') + '</a></li>' + \
         ''
 
-        data += '<li><a href="/revert/' + num + '/' + url_pas(name) + '">' + get_lang(conn, 'revert') + ' (r' + num + ')</a></li>'
+        data += '<li><a href="/revert/' + num + '/' + url_pas(name) + '">' + await get_lang('revert') + ' (r' + num + ')</a></li>'
         if rev - 1 > 0:
-            data += '<li><a href="/revert/' + str(rev - 1) + '/' + url_pas(name) + '">' + get_lang(conn, 'revert') + ' (r' + str(rev - 1) + ')</a></li>'
+            data += '<li><a href="/revert/' + str(rev - 1) + '/' + url_pas(name) + '">' + await get_lang('revert') + ' (r' + str(rev - 1) + ')</a></li>'
 
         if rev - 1 > 0:
-            data += '<li><a href="/diff/' + str(rev - 1) + '/' + num + '/' + url_pas(name) + '">' + get_lang(conn, 'compare') + '</a></li>'
+            data += '<li><a href="/diff/' + str(rev - 1) + '/' + num + '/' + url_pas(name) + '">' + await get_lang('compare') + '</a></li>'
 
-        data += '<li><a href="/history/' + url_pas(name) + '">' + get_lang(conn, 'history') + '</a></li>'
+        data += '<li><a href="/history/' + url_pas(name) + '">' + await get_lang('history') + '</a></li>'
         data += '</ul>'
 
         if await acl_check(tool = 'hidel_auth') != 1:
-            data += '<h3>' + get_lang(conn, 'admin') + '</h3>'
+            data += '<h3>' + await get_lang('admin') + '</h3>'
             data += '<ul>'
             curs.execute(db_change('select title from history where title = ? and id = ? and hide = "O"'), [name, num])
             data += '<li><a href="/history_hidden/' + num + '/' + url_pas(name) + '">'
             if curs.fetchall():
-                data += get_lang(conn, 'hide_release') 
+                data += await get_lang('hide_release') 
             else:
-                data += get_lang(conn, 'hide')
+                data += await get_lang('hide')
 
             data += '</a></li>'
             data += '</ul>'
 
         if await acl_check('', 'owner_auth', '', '') != 1:
-            data += '<h3>' + get_lang(conn, 'owner') + '</h3>'
+            data += '<h3>' + await get_lang('owner') + '</h3>'
             data += '<ul>'
-            data += '<li><a href="/history_delete/' + num + '/' + url_pas(name) + '">' + get_lang(conn, 'history_delete') + '</a></li>'
-            data += '<li><a href="/history_send/' + num + '/' + url_pas(name) + '">' + get_lang(conn, 'send_edit') + '</a></li>'
+            data += '<li><a href="/history_delete/' + num + '/' + url_pas(name) + '">' + await get_lang('history_delete') + '</a></li>'
+            data += '<li><a href="/history_send/' + num + '/' + url_pas(name) + '">' + await get_lang('send_edit') + '</a></li>'
             data += '</ul>'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
+        return easy_minify(flask.render_template(await skin_check(conn),
             imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(r' + num + ')', 0])],
             data = data,
-            menu = [['history/' + url_pas(name), get_lang(conn, 'return')]]
+            menu = [['history/' + url_pas(name), await get_lang('return')]]
         ))

+ 5 - 5
route/recent_record_reset.py

@@ -14,14 +14,14 @@ async def recent_record_reset(name = 'Test'):
 
             return redirect(conn, '/record/' + url_pas(name))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'record_reset') + ')', 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [name, await wiki_set(), await wiki_custom(conn), wiki_css(['(' + await get_lang('record_reset') + ')', 0])],
                 data = '''
                     <form method="post">
-                        <span>''' + get_lang(conn, 'delete_warning') + '''</span>
+                        <span>''' + await get_lang('delete_warning') + '''</span>
                         <hr class="main_hr">
-                        <button type="submit">''' + get_lang(conn, 'reset') + '''</button>
+                        <button type="submit">''' + await get_lang('reset') + '''</button>
                     </form>
                 ''',
-                menu = [['record/' + url_pas(name), get_lang(conn, 'return')]]
+                menu = [['record/' + url_pas(name), await get_lang('return')]]
             ))

+ 7 - 7
route/recent_record_topic.py

@@ -10,9 +10,9 @@ async def recent_record_topic(name = 'Test'):
         div = '''
             <table id="main_table_set">
                 <tr id="main_table_top_tr">
-                    <td id="main_table_width">''' + get_lang(conn, 'discussion_name') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'writer') + '''</td>
-                    <td id="main_table_width">''' + get_lang(conn, 'time') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('discussion_name') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('writer') + '''</td>
+                    <td id="main_table_width">''' + await get_lang('time') + '''</td>
                 </tr>
         '''
         sub = '(' + html.escape(name) + ')'
@@ -37,10 +37,10 @@ async def recent_record_topic(name = 'Test'):
             ''
 
         div += '</table>'
-        div += get_next_page_bottom(conn, '/record/topic/' + url_pas(name) + '?num={}', num, data_list)
+        div += await get_next_page_bottom('/record/topic/' + url_pas(name) + '?num={}', num, data_list)
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'discussion_record'), await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('discussion_record'), await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
             data = div,
-            menu = [['other', get_lang(conn, 'other')], ['user/' + url_pas(name), get_lang(conn, 'user_tool')]]
+            menu = [['other', await get_lang('other')], ['user/' + url_pas(name), await get_lang('user_tool')]]
         ))

+ 100 - 110
route/tool/func.py

@@ -79,6 +79,7 @@ import werkzeug.debug
 
 import flask
 import asyncio
+import nest_asyncio
 import aiohttp
 
 import requests
@@ -887,31 +888,31 @@ def get_default_robots_txt(conn):
 def load_random_key(long = 128):
     return ''.join(random.choice("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") for _ in range(long))
 
-def http_warning(conn):
+async def http_warning():
     return '''
         <div id="opennamu_http_warning_text"></div>
-        <span style="display: none;" id="opennamu_http_warning_text_lang">''' + get_lang(conn, 'http_warning') + '''</span>
+        <span style="display: none;" id="opennamu_http_warning_text_lang">''' + await get_lang('http_warning') + '''</span>
     '''
 
-def get_next_page_bottom(conn, link, num, page, end = 50):
+async def get_next_page_bottom(link, num, page, end = 50):
     list_data = ''
 
     if num == 1:
         if len(page) == end:
             list_data += '' + \
                 '<hr class="main_hr">' + \
-                '<a href="' + link.format(str(num + 1)) + '">(' + get_lang(conn, 'next') + ')</a>' + \
+                '<a href="' + link.format(str(num + 1)) + '">(' + await get_lang('next') + ')</a>' + \
             ''
     elif len(page) != end:
         list_data += '' + \
             '<hr class="main_hr">' + \
-            '<a href="' + link.format(str(num - 1)) + '">(' + get_lang(conn, 'previous') + ')</a>' + \
+            '<a href="' + link.format(str(num - 1)) + '">(' + await get_lang('previous') + ')</a>' + \
         ''
     else:
         list_data += '' + \
             '<hr class="main_hr">' + \
-            '<a href="' + link.format(str(num - 1)) + '">(' + get_lang(conn, 'previous') + ')</a> ' + \
-            '<a href="' + link.format(str(num + 1)) + '">(' + get_lang(conn, 'next') + ')</a>' + \
+            '<a href="' + link.format(str(num - 1)) + '">(' + await get_lang('previous') + ')</a> ' + \
+            '<a href="' + link.format(str(num + 1)) + '">(' + await get_lang('next') + ')</a>' + \
         ''
 
     return list_data
@@ -951,7 +952,7 @@ async def get_user_title_list(conn, ip = ''):
 
     # default
     user_title = {
-        '' : get_lang(conn, 'default'),
+        '' : await get_lang('default'),
         '🌳' : '🌳 newbie',
     }
 
@@ -1042,7 +1043,7 @@ def get_tool_js_safe(data):
 
     return data
 
-def edit_button(conn):
+async def edit_button(conn):
     curs = conn.cursor()
 
     insert_list = []
@@ -1056,12 +1057,12 @@ def edit_button(conn):
     for insert_data in insert_list:
         data += '<a href="javascript:do_insert_data(\'' + get_tool_js_safe(insert_data[0]) + '\');">(' + html.escape(insert_data[1]) + ')</a> '
 
-    data += (' ' if data != '' else '') + '<a href="/filter/edit_top">(' + get_lang(conn, 'add') + ')</a>'
+    data += (' ' if data != '' else '') + '<a href="/filter/edit_top">(' + await get_lang('add') + ')</a>'
     data += '<hr class="main_hr">'
     
     return data
 
-def ip_warning(conn):
+async def ip_warning(conn):
     curs = conn.cursor()
 
     if ip_or_user() != 0:
@@ -1074,7 +1075,7 @@ def ip_warning(conn):
             ''
         else:
             text_data = '' + \
-                '<span>' + get_lang(conn, 'no_login_warning') + '</span>' + \
+                '<span>' + await get_lang('no_login_warning') + '</span>' + \
                 '<hr class="main_hr">' + \
             ''
     else:
@@ -1126,7 +1127,7 @@ def pw_check(conn, data, data2, type_d = 'no', id_d = ''):
     return re_data
         
 # Func-skin
-def easy_minify(conn, data, tool = None):
+def easy_minify(data, tool = None):
     return data
 
 def get_lang_name(conn, tool = ''):
@@ -1157,43 +1158,32 @@ def get_lang_name(conn, tool = ''):
 
     return lang_name
 
-def get_lang(conn, data, safe = 0):
-    lang_name = get_lang_name(conn)
+async def get_lang(data, safe = 0):
+    other_set = {}
+    other_set["data"] = data
+    other_set["legacy"] = ""
 
-    if (lang_name + '_' + data) in global_lang_data:
-        if safe == 1:
-            return global_lang_data[lang_name + '_' + data]
-        else:
-            return html.escape(global_lang_data[lang_name + '_' + data])
+    res = await python_to_golang('api_func_language', other_set)
+    if res['response'] == 'ok':
+        return res['data'][data]
     else:
-        lang_list = os.listdir('lang')
-        if (lang_name + '.json') in lang_list:
-            lang = json_loads(open(os.path.join('lang', lang_name + '.json'), encoding = 'utf8').read())
-            
-            for title in lang:
-                global_lang_data[lang_name + '_' + title] = lang[title] 
-        else:
-            lang = {}
-
-        if data in lang:
-            if safe == 1:
-                return lang[data] 
-            else:
-                return html.escape(lang[data])
-
-    print(data + ' (' + lang_name + ')')
-    return html.escape(data + ' (' + lang_name + ')')
+        return data + ' (M)'
 
 # 하위 호환용
 def load_lang(data, safe = 0):
-    with get_db_connect() as conn:
-        return get_lang(conn, data, safe)
-
-def skin_check(conn, set_n = 0):
+    try:
+        loop = asyncio.get_running_loop()
+        if loop.is_running():
+            nest_asyncio.apply()
+            return loop.run_until_complete(get_lang(data, safe))
+    except RuntimeError:
+        return asyncio.run(get_lang(data, safe))
+
+async def skin_check(conn, set_n = 0):
     curs = conn.cursor()
 
     # 개편 필요?
-    skin_list = load_skin(conn, 'ringo', 1)
+    skin_list = await load_skin('ringo', 1)
     skin = skin_list[0]
     ip = ip_check()
     
@@ -1302,7 +1292,7 @@ async def wiki_custom(conn):
     curs = conn.cursor()
 
     ip = ip_check()
-    skin_name = '_' + skin_check(conn, 1)
+    skin_name = '_' + await skin_check(conn, 1)
 
     if ip_or_user(ip) == 0:
         user_icon = 1
@@ -1347,7 +1337,7 @@ async def wiki_custom(conn):
         user_notice = str(count[0][0]) if count else '0'
     else:
         user_icon = 0
-        user_name = get_lang(conn, 'user')
+        user_name = await get_lang('user')
         email = ''
         user_admin = '0'
         user_acl_list = '0'
@@ -1378,7 +1368,7 @@ async def wiki_custom(conn):
         await level_check(ip)
     ]
 
-def load_skin(conn, data = '', set_n = 0, default = 0):
+async def load_skin(data = '', set_n = 0, default = 0):
     # without_DB
 
     # data -> 가장 앞에 있을 스킨 이름
@@ -1398,7 +1388,7 @@ def load_skin(conn, data = '', set_n = 0, default = 0):
         if skin_data != 'default':
             see_data = skin_data
         else:
-            see_data = get_lang(conn, 'default')
+            see_data = await get_lang('default')
 
         if skin_data != 'main_css':
             if set_n == 0:
@@ -1426,7 +1416,7 @@ def load_skin(conn, data = '', set_n = 0, default = 0):
         return skin_return_data
 
 # Func-markup
-def render_set(conn, doc_name = '', doc_data = '', data_type = 'view', markup = '', parameter = {}):
+async def render_set(conn, doc_name = '', doc_data = '', data_type = 'view', markup = '', parameter = {}):
     curs = conn.cursor()
 
     # data_type in ['view', 'from', 'thread', 'api_view', 'api_thread', 'api_include', 'backlink']
@@ -1451,8 +1441,8 @@ def render_set(conn, doc_name = '', doc_data = '', data_type = 'view', markup =
 
     ip = ip_check()
     render_lang_data = {
-        'toc' : get_lang(conn, 'toc'),
-        'category' : get_lang(conn, 'category')
+        'toc' : await get_lang('toc'),
+        'category' : await get_lang('category')
     }
 
     curs.execute(db_change('select data from other where name = "category_text"'))
@@ -1550,7 +1540,7 @@ def render_set(conn, doc_name = '', doc_data = '', data_type = 'view', markup =
     else:
         return get_class_render[0] + '<script>window.addEventListener("DOMContentLoaded", function() {' + get_class_render[1] + '});</script>'
         
-def render_simple_set(conn, data):
+async def render_simple_set(data):
     # without_DB
 
     toc_data = ''
@@ -1561,7 +1551,7 @@ def render_simple_set(conn, data):
     if toc_search_data:
         toc_data += '''
             <div class="opennamu_TOC" id="toc">
-                <span class="opennamu_TOC_title">''' + get_lang(conn, 'toc') + '''</span>
+                <span class="opennamu_TOC_title">''' + await get_lang('toc') + '''</span>
                 <br>
         '''
     
@@ -2224,162 +2214,162 @@ async def re_error(conn, data):
         if (await ban_check())[0] == 1:
             end = '<div id="opennamu_get_user_info">' + html.escape(ip_check()) + '</div>'
         else:
-            end = '<ul><li>' + get_lang(conn, 'authority_error') + '</li></ul>'
+            end = '<ul><li>' + await get_lang('authority_error') + '</li></ul>'
 
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'error'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
-            data = '<h2>' + get_lang(conn, 'error') + '</h2>' + end,
+        return easy_minify(flask.render_template(await skin_check(conn),
+            imp = [await get_lang('error'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            data = '<h2>' + await get_lang('error') + '</h2>' + end,
             menu = 0
         )), 401
     else:
-        title = get_lang(conn, 'error')
+        title = await get_lang('error')
         sub_title = title
         return_code = 400
 
         num = data
         if num == 1:
-            data = get_lang(conn, 'no_login_error')
+            data = await get_lang('no_login_error')
         elif num == 2:
-            data = get_lang(conn, 'no_exist_user_error')
+            data = await get_lang('no_exist_user_error')
         elif num == 3:
-            data = get_lang(conn, 'authority_error')
+            data = await get_lang('authority_error')
         elif num == 4:
-            data = get_lang(conn, 'no_admin_block_error')
+            data = await get_lang('no_admin_block_error')
         elif num == 5:
-            data = get_lang(conn, 'error_skin_set')
+            data = await get_lang('error_skin_set')
         elif num == 8:
             data = '' + \
-                get_lang(conn, 'long_id_error') + '<br>' + \
-                get_lang(conn, 'id_char_error') + ' <a href="/filter/name_filter">(' + get_lang(conn, 'id_filter_list') + ')</a><br>' + \
-                get_lang(conn, 'same_id_exist_error') + \
+                await get_lang('long_id_error') + '<br>' + \
+                await get_lang('id_char_error') + ' <a href="/filter/name_filter">(' + await get_lang('id_filter_list') + ')</a><br>' + \
+                await get_lang('same_id_exist_error') + \
             ''
         elif num == 9:
-            data = get_lang(conn, 'file_exist_error')
+            data = await get_lang('file_exist_error')
         elif num == 10:
-            data = get_lang(conn, 'password_error')
+            data = await get_lang('password_error')
         elif num == 11:
-            data = get_lang(conn, 'topic_long_error')
+            data = await get_lang('topic_long_error')
         elif num == 12:
-            data = get_lang(conn, 'email_error')
+            data = await get_lang('email_error')
         elif num == 13:
-            data = get_lang(conn, 'recaptcha_error')
+            data = await get_lang('recaptcha_error')
         elif num == 14:
-            data = get_lang(conn, 'file_extension_error') + ' <a href="/filter/extension_filter">(' + get_lang(conn, 'extension_filter_list') + ')</a>'
+            data = await get_lang('file_extension_error') + ' <a href="/filter/extension_filter">(' + await get_lang('extension_filter_list') + ')</a>'
         elif num == 15:
-            data = get_lang(conn, 'edit_record_error')
+            data = await get_lang('edit_record_error')
         elif num == 16:
-            data = get_lang(conn, 'same_file_error')
+            data = await get_lang('same_file_error')
         elif num == 17:
             curs.execute(db_change('select data from other where name = "upload"'))
             db_data = curs.fetchall()
             file_max = number_check(db_data[0][0]) if db_data and db_data[0][0] != '' else '2'
-            data = get_lang(conn, 'file_capacity_error') + file_max
+            data = await get_lang('file_capacity_error') + file_max
         elif num == 18:
-            data = get_lang(conn, 'email_send_error')
+            data = await get_lang('email_send_error')
         elif num == 19:
-            data = get_lang(conn, 'move_error')
+            data = await get_lang('move_error')
         elif num == 20:
-            data = get_lang(conn, 'password_diffrent_error')
+            data = await get_lang('password_diffrent_error')
         elif num == 21:
-            data = get_lang(conn, 'edit_filter_error')
+            data = await get_lang('edit_filter_error')
         elif num == 22:
-            data = get_lang(conn, 'file_name_error')
+            data = await get_lang('file_name_error')
         elif num == 23:
-            data = get_lang(conn, 'regex_error')
+            data = await get_lang('regex_error')
         elif num == 24:
             curs.execute(db_change("select data from other where name = 'slow_edit'"))
             db_data = curs.fetchall()
             db_data = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'fast_edit_error') + db_data
+            data = await get_lang('fast_edit_error') + db_data
         elif num == 25:
-            data = get_lang(conn, 'too_many_dec_error')
+            data = await get_lang('too_many_dec_error')
         elif num == 26:
-            data = get_lang(conn, 'application_not_found')
+            data = await get_lang('application_not_found')
         elif num == 27:
-            data = get_lang(conn, "invalid_password_error")
+            data = await get_lang("invalid_password_error")
         elif num == 28:
-            data = get_lang(conn, 'watchlist_overflow_error')
+            data = await get_lang('watchlist_overflow_error')
         elif num == 29:
-            data = get_lang(conn, 'copyright_disagreed')
+            data = await get_lang('copyright_disagreed')
         elif num == 30:
-            data = get_lang(conn, 'ie_wrong_callback')
+            data = await get_lang('ie_wrong_callback')
         elif num == 33:
-            data = get_lang(conn, 'restart_fail_error')
+            data = await get_lang('restart_fail_error')
         elif num == 34:
-            data = get_lang(conn, "update_error") + ' <a href="https://github.com/opennamu/opennamu">(Github)</a>'
+            data = await get_lang("update_error") + ' <a href="https://github.com/opennamu/opennamu">(Github)</a>'
         elif num == 35:
-            data = get_lang(conn, 'same_email_error')
+            data = await get_lang('same_email_error')
         elif num == 36:
-            data = get_lang(conn, 'input_email_error')
+            data = await get_lang('input_email_error')
         elif num == 37:
-            data = get_lang(conn, 'error_edit_send_request')
+            data = await get_lang('error_edit_send_request')
         elif num == 38:
             curs.execute(db_change("select data from other where name = 'title_max_length'"))
             db_data = curs.fetchall()
             db_data = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'error_title_length_too_long') + db_data
+            data = await get_lang('error_title_length_too_long') + db_data
         elif num == 39:
             curs.execute(db_change("select data from other where name = 'title_topic_max_length'"))
             db_data = curs.fetchall()
             db_data = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'error_title_length_too_long') + db_data
+            data = await get_lang('error_title_length_too_long') + db_data
         elif num == 40:
             curs.execute(db_change("select data from other where name = 'password_min_length'"))
             db_data = curs.fetchall()
             password_min_length = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'error_password_length_too_short') + password_min_length
+            data = await get_lang('error_password_length_too_short') + password_min_length
         elif num == 41:
             curs.execute(db_change("select data from other where name = 'edit_timeout'"))
             db_data = curs.fetchall()
             db_data = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'timeout_error') + db_data
+            data = await get_lang('timeout_error') + db_data
         elif num == 42:
             curs.execute(db_change("select data from other where name = 'slow_thread'"))
             db_data = curs.fetchall()
             db_data = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'fast_edit_error') + db_data
+            data = await get_lang('fast_edit_error') + db_data
         elif num == 43:
-            title = get_lang(conn, 'application_submitted')
+            title = await get_lang('application_submitted')
             sub_title = title
-            data = get_lang(conn, 'waiting_for_approval')
+            data = await get_lang('waiting_for_approval')
         elif num == 44:
             curs.execute(db_change("select data from other where name = 'document_content_max_length'"))
             db_data = curs.fetchall()
             db_data = '' if not db_data else db_data[0][0]
-            data = get_lang(conn, 'error_content_length_too_long') + db_data
+            data = await get_lang('error_content_length_too_long') + db_data
         elif num == 45:
-            data = get_lang(conn, 'cidr_error')
+            data = await get_lang('cidr_error')
         elif num == 46:
-            data = get_lang(conn, 'func_404_error')
+            data = await get_lang('func_404_error')
             title = '404'
             return_code = 404
         elif num == 47:
-            data = get_lang(conn, 'still_use_auth_error')
+            data = await get_lang('still_use_auth_error')
         elif num == 48:
-            data = get_lang(conn, 'xss_data_include_error')
+            data = await get_lang('xss_data_include_error')
         elif num == 49:
-            data = get_lang(conn, 'password_same_as_id_error')
+            data = await get_lang('password_same_as_id_error')
         else:
             data = '???'
 
         if num == 5:
             if flask.request.path != '/skin_set':
-                data += '<br>' + get_lang(conn, 'error_skin_set_old') + ' <a href="/skin_set">(' + get_lang(conn, 'go') + ')</a>'
+                data += '<br>' + await get_lang('error_skin_set_old') + ' <a href="/skin_set">(' + await get_lang('go') + ')</a>'
 
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'skin_set'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
+            return easy_minify(flask.render_template(await skin_check(conn),
+                imp = [await get_lang('skin_set'), await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '' + \
                     '<div id="main_skin_set">' + \
-                        '<h2>' + get_lang(conn, 'error') + '</h2>' + \
+                        '<h2>' + await get_lang('error') + '</h2>' + \
                         '<ul>' + \
                             '<li>' + data + '</a></li>' + \
                         '</ul>' + \
                     '</div>' + \
                 '',
-                menu = [['change', get_lang(conn, 'user_setting')], ['change/skin_set/main', get_lang(conn, 'main_skin_set')]]
+                menu = [['change', await get_lang('user_setting')], ['change/skin_set/main', await get_lang('main_skin_set')]]
             ))
         else:
-            return easy_minify(conn, flask.render_template(skin_check(conn),
+            return easy_minify(flask.render_template(await skin_check(conn),
                 imp = [title, await wiki_set(), await wiki_custom(conn), wiki_css([0, 0])],
                 data = '' + \
                     '<h2>' + sub_title + '</h2>' + \

Vissa filer visades inte eftersom för många filer har ändrats