/* * Created by PyramIDE. * User: フランスのトトロ aka (David RENÉ) * Date: 17/04/2020 * Time: 15:00 * © David RENÉ */ read system/logger.anubis read locale/L3.anubis read locale/L3LanguageInfo.anubis read xlib/web/types/controllers_web_site.anubis read xlib/web/web_session.anubis public define One set_dictionary(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_DICTIONARY", n). public define One set_dictionary(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_DICTIONARY", n). public define String get_dictionary(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_DICTIONARY", ""). public define String default_language = "en". public define (String symbolic_name) -> String make_translate_function ( String dictionary_collection_name, String lang, (LogLevel, String) -> One logger ) = if l3_load_base(dictionary_collection_name) is { failure then logger(logError, "Can't load translation dictionary for '"+dictionary_collection_name+"'"); (String symbolic_name) |-> "[" + symbolic_name + "]", success(L3 local) then //now we set the current language with _l3_object = l3_set_current(local, lang), l3_object = l3_set_default(_l3_object, default_language), if lang = "symb" then (String symbolic_name) |-> "[" + l3_get_text(l3_object, symbolic_name) + "]" else (String symbolic_name) |-> l3_get_text(l3_object, symbolic_name) } . public define (String symbolic_name) -> String make_translate_function_for_lang ( WEB_Session _session, String lang, (LogLevel, String) -> One logger ) = with app_dictionary = get_String(_session.fields, "AWS_CURRENT_DICTIONARY", ""), make_translate_function(app_dictionary, lang, logger) . public define (String symbolic_name) -> String make_translate_function_for_lang ( WEB_Session _session, String lang ) = with app_dictionary = get_String(_session.fields, "AWS_CURRENT_DICTIONARY", ""), make_translate_function(app_dictionary, lang, (LogLevel level, String txt) |-> println(txt)) . public define (String symbolic_name) -> String make_translate_function ( WEB_Session _session, (LogLevel, String) -> One logger ) = with lang = _session.language, app_dictionary = get_String(_session.fields, "AWS_CURRENT_DICTIONARY", ""), make_translate_function(app_dictionary, lang, logger) . public define (String symbolic_name) -> String make_translate_function ( WEB_Session _session ) = make_translate_function(_session, (LogLevel level, String txt) |-> println(txt)) . public define (String symbolic_name) -> String make_translate_function_for_dictionary ( WEB_Session _session, String dictionary_collection_name, (LogLevel, String) -> One logger ) = with lang = _session.language, make_translate_function(dictionary_collection_name, lang, logger) . public define (String symbolic_name) -> String make_translate_function_for_dictionary ( WEB_Session _session, String dictionary_collection_name, ) = with lang = _session.language, make_translate_function(dictionary_collection_name, lang, (LogLevel level, String txt) |-> println(txt)) . public define (String symbolic_name, List((String, String)) list_key_value) -> String make_translate_with_key_value_function ( WEB_Session _session ) = (String symbolic_name, List((String, String)) list_key_value) |-> with translated_sentence = make_translate_function(_session, (LogLevel level, String txt) |-> println(txt))(symbolic_name), find_and_replace_dict(translated_sentence, list_key_value) . public define (String symbolic_name, List((String, String)) list_key_value) -> String make_translate_with_key_value_function_for_lang ( WEB_Session _session, String lang, ) = (String symbolic_name, List((String, String)) list_key_value) |-> with translated_sentence = make_translate_function_for_lang(_session, lang)(symbolic_name), find_and_replace_dict(translated_sentence, list_key_value) . public define (String symbolic_name, List((String, String)) list_key_value) -> String make_translate_with_key_value_function_for_dictionary ( WEB_Session _session, String dictionary_collection_name, ) = (String symbolic_name, List((String, String)) list_key_value) |-> with translated_sentence = make_translate_function_for_dictionary(_session, dictionary_collection_name)(symbolic_name), find_and_replace_dict(translated_sentence, list_key_value) . public define List((List(CoreAttrs),WebArgValue, String)) language_list_for_combo ( String dictionary_collection_name //means application name ) = map((L3LangDicProperty dico_prop) |-> since dico_prop is l3LangDicProperty( _, _, lang_code, _, _, _), with lang_info = l3_get_language_info(lang_code), ((List(CoreAttrs))[], wav(lang_code), self_name(lang_info)) , l3_get_all_dicos(dictionary_collection_name) ) . define HTML language_line ( String language_code, String language )= li([style("background-image: url(/xlib/flags/lang/24/"+language_code+".png);"), event(onclick, "language_changed('"+language_code+"');")], text(language)) . define HTML language_line ( String language_code, String language, String -> String action )= div(id(generate_random_string(15)+"_"+language_code), [ img([class("clickable"), event(onclick, action(language_code))],"/xlib/flags/lang/24/"+language_code+".png"), text([class("clickable"), event(onclick, action(language_code))],language) ]) . public define HTML flags_menu ( String dictionary_collection_name, String lang, Bool show_symbolic ) = with make_line = (L3LangDicProperty dico_prop) |-> if dico_prop is l3LangDicProperty( _, sha1, lang_code, user_def, creat, update) then with lang_info = l3_get_language_info(lang_code), if lang_code = lang then empty else language_line(lang_code, self_name(lang_info)), head_tags([ css(css_file("/xlib/css/flags_menu.css")), js(js_file("/xlib/js/xlib.js")) ], dl([ //literal("
 
\n"), //literal(""), img([event(onmouseover, "showObject('l3-flag');"), event(onmouseout, "hideObject('l3-flag');")], "/xlib/flags/lang/24/"+lang+".png" ), dd([style("display: none"),id("l3-flag"), event(onmouseover, "showObject('l3-flag');"), event(onmouseout, "hideObject('l3-flag');")], ul( map(make_line, l3_get_all_dicos(dictionary_collection_name))+ [ if show_symbolic then language_line("symb", "symbolic") else empty ] )), ]) //!dl ) . public define HTML flags_menu ( WEB_Session _session, Bool show_symbolic, (LogLevel, String) -> One logger ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), flags_menu(app_dictionnary, lang, show_symbolic) . define HTML language_line_bs ( String language_code, String language )= // li([style("background-image: url(/xlib/flags/lang/24/"+language_code+".png);"), // event(onclick, "language_changed('"+language_code+"');")], text(language)) div(class("l3-flags"), a(class("dropdown-item l3-flag"), href(url("?aws_c=language&aws_a=do_change_language&language_code="+language_code)), [ img(class("l3-flag"), "/xlib/flags/lang/24/"+language_code+".png"), text(language)])) . public define HTML flags_menu_bs ( String dictionary_collection_name, String lang, Bool show_symbolic ) = with make_line = (L3LangDicProperty dico_prop) |-> if dico_prop is l3LangDicProperty( _, sha1, lang_code, user_def, creat, update) then with lang_info = l3_get_language_info(lang_code), //if the language is already selected language, don't add as selectable language if lang_code = lang then empty else language_line_bs(lang_code, self_name(lang_info)), head_tags([ css(css_file("/xlib/css/flags_menu.css")), //js(js_file("/xlib/js/xlib.js")) ], li( class("nav-item dropdown"), [ //literal("
 
\n"), //literal(""), a([id("l3-flag"), class("nav-link dropdown-toggle l3-flag"), role("button"), data("bs-toggle", "dropdown")], img(class("l3-flag"), "/xlib/flags/24x24/"+lang+".png")), //img([event(onmouseover, "showObject('l3-flag');"), event(onmouseout, "hideObject('l3-flag');")], "/xlib/flags/lang/24/"+lang+".png" ), //dd([style("display: none"),id("l3-flag"), event(onmouseover, "showObject('l3-flag');"), event(onmouseout, "hideObject('l3-flag');")], div( class("dropdown-menu dropdown-menu-end"), [ //line with current selected language div(class("l3-flag"), a(class("dropdown-item l3-flag"), href(url("#")), [img(class("l3-flag"), "/xlib/flags/lang/24/"+lang+".png"), text(l3_get_language_info(lang).self_name)])) , div(class("dropdown-divider")) ] + map(make_line, l3_get_all_dicos(dictionary_collection_name))+ [ if show_symbolic then language_line_bs("symb", "symbolic") else empty ] ) ]) //]) //!dl ) . public define HTML flags_menu_bs ( WEB_Session _session, Bool show_symbolic, (LogLevel, String) -> One logger ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), flags_menu_bs(app_dictionnary, lang, show_symbolic) . public define HTML choose_lang_dialog ( String dictionary_collection_name, String -> String action, Bool show_symbolic, List(String) exclude_lang )= with make_line = (L3LangDicProperty dico_prop) |-> if dico_prop is l3LangDicProperty( _, sha1, lang_code, user_def, creat, update) then with lang_info = l3_get_language_info(lang_code), //if language belong to exclude list, return an empty line if lang_code:exclude_lang then empty else language_line(lang_code, self_name(lang_info), action), head_tags([ css(css_file("/xlib/css/flags_menu.css")), js(js_file("/xlib/js/xlib.js")) ], [ dl([ //img([event(onmouseover, "showObject('l3-flag');"), event(onmouseout, "hideObject('l3-flag');")], "/xlib/flags/lang/24/"+lang+".png" ), dd([style("display: block"),id("l3-flag")], ul( map(make_line, l3_get_all_dicos(dictionary_collection_name))+ [ if show_symbolic then language_line("symb", "symbolic", action) else empty ] )), ]) //!dl ] ) . public define HTML choose_lang_dialog ( WEB_Session _session, String -> String action, Bool show_symbolic ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), choose_lang_dialog(app_dictionnary, action, show_symbolic, []) . public define HTML choose_lang_dialog ( WEB_Session _session, String -> String action, List(String) exclude_lang ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), choose_lang_dialog(app_dictionnary, action, false, exclude_lang) . public define HTML choose_lang_dialog ( WEB_Session _session, String -> String action ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), choose_lang_dialog(app_dictionnary, action, false, []) . /* DROPDOWN part */ define HTML dd_language_line ( String language_code, String language, String -> String action )= li(event(onclick, action(language_code)), [ img("/xlib/flags/lang/24/"+language_code+".png"), text(language) ]) . public define HTML choose_lang_dropdown ( String dictionary_collection_name, String -> String action, String image, //Web element on which is sticked the dropdown Bool on_click, Bool show_symbolic, List(String) exclude_lang )= with rand_id = generate_random_string(15)+"_flag", with make_line = (L3LangDicProperty dico_prop) |-> if dico_prop is l3LangDicProperty( _, sha1, lang_code, user_def, creat, update) then with lang_info = l3_get_language_info(lang_code), //if language belong to exclude list, return an empty line if lang_code:exclude_lang then empty else dd_language_line(lang_code, self_name(lang_info), action), head_tags([ css(css_file("/xlib/css/flags_menu.css")), js(js_file("/xlib/js/xlib.js")) ], [ img([class("icon_in_text clickable"), event(if on_click then onclick else onmouseover, "showObject('"+rand_id+"');"), event(onmouseout, "hideObject('"+rand_id+"');")], image ), ul([id(rand_id), class("drop-flag-body"), event(onmouseover, "showObject('"+rand_id+"');"), event(onmouseout, "hideObject('"+rand_id+"');"), style("display: none"), ], map(make_line, l3_get_all_dicos(dictionary_collection_name))+ [ if show_symbolic then dd_language_line("symb", "symbolic", action) else empty ] ) ] ) . public define HTML choose_lang_dropdown ( WEB_Session _session, String -> String action, String image, //Web element on which is sticked the dropdown Bool on_click, Bool show_symbolic ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), choose_lang_dropdown(app_dictionnary, action, image, on_click, show_symbolic, []) . public define HTML choose_lang_dropdown ( WEB_Session _session, String -> String action, String image, //Web element on which is sticked the dropdown Bool on_click, List(String) exclude_lang ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), choose_lang_dropdown(app_dictionnary, action, image, on_click, false, exclude_lang) . public define HTML choose_lang_dropdown ( WEB_Session _session, // String -> String action, //web action function to call when language is choosen String image, //Web element on which is sticked the dropdown Bool on_click //true if the dropdown shown on click event else it's on mouseover ) = with lang = _session.language, app_dictionnary = get_dictionary(_session), choose_lang_dropdown(app_dictionnary, action, image, on_click, false, []) .