mindroot 9.11.0__py3-none-any.whl → 9.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindroot might be problematic. Click here for more details.
- mindroot/coreplugins/home/templates/home.jinja2 +1 -0
- mindroot/docs/Makefile +20 -0
- mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
- mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
- mindroot/docs/_build/doctrees/environment.pickle +0 -0
- mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
- mindroot/docs/_build/doctrees/index.doctree +0 -0
- mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
- mindroot/docs/_build/doctrees/installation.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
- mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
- mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
- mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
- mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
- mindroot/docs/_build/html/.buildinfo +4 -0
- mindroot/docs/_build/html/.buildinfo.bak +4 -0
- mindroot/docs/_build/html/_images/envvar.png +0 -0
- mindroot/docs/_build/html/_images/files.png +0 -0
- mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
- mindroot/docs/_build/html/_images/mood.png +0 -0
- mindroot/docs/_build/html/_images/moon.png +0 -0
- mindroot/docs/_build/html/_images/openrouter.png +0 -0
- mindroot/docs/_build/html/_images/restart.png +0 -0
- mindroot/docs/_build/html/_modules/index.html +425 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
- mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
- mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
- mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
- mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
- mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
- mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
- mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
- mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
- mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
- mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
- mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
- mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
- mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
- mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
- mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
- mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- mindroot/docs/_build/html/_static/basic.css +906 -0
- mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/theme.css +4 -0
- mindroot/docs/_build/html/_static/custom.css +19 -0
- mindroot/docs/_build/html/_static/debug.css +69 -0
- mindroot/docs/_build/html/_static/doctools.js +149 -0
- mindroot/docs/_build/html/_static/documentation_options.js +13 -0
- mindroot/docs/_build/html/_static/file.png +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/jquery.js +2 -0
- mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
- mindroot/docs/_build/html/_static/js/theme.js +1 -0
- mindroot/docs/_build/html/_static/js/versions.js +228 -0
- mindroot/docs/_build/html/_static/language_data.js +192 -0
- mindroot/docs/_build/html/_static/minus.png +0 -0
- mindroot/docs/_build/html/_static/plus.png +0 -0
- mindroot/docs/_build/html/_static/pygments.css +232 -0
- mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
- mindroot/docs/_build/html/_static/searchtools.js +635 -0
- mindroot/docs/_build/html/_static/skeleton.css +296 -0
- mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
- mindroot/docs/_build/html/_static/styles/furo.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
- mindroot/docs/_build/html/chat_with_assistant.html +329 -0
- mindroot/docs/_build/html/developer_documentation.html +338 -0
- mindroot/docs/_build/html/genindex.html +4690 -0
- mindroot/docs/_build/html/getting_started.html +423 -0
- mindroot/docs/_build/html/index.html +357 -0
- mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
- mindroot/docs/_build/html/installation.html +330 -0
- mindroot/docs/_build/html/llm_api_key.html +337 -0
- mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
- mindroot/docs/_build/html/objects.inv +0 -0
- mindroot/docs/_build/html/programming_task.html +326 -0
- mindroot/docs/_build/html/py-modindex.html +1307 -0
- mindroot/docs/_build/html/search.html +307 -0
- mindroot/docs/_build/html/searchindex.js +1 -0
- mindroot/docs/_build/html/source/ahp.html +302 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
- mindroot/docs/_build/html/source/mindroot.html +811 -0
- mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
- mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
- mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
- mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
- mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
- mindroot/docs/_build/html/source/modules.html +377 -0
- mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
- mindroot/docs/_build/html/starting_mindroot.html +325 -0
- mindroot/docs/_build/html/user_documentation.html +333 -0
- mindroot/docs/_static/custom.css +19 -0
- mindroot/docs/chat_with_assistant.rst +14 -0
- mindroot/docs/conf.py +54 -0
- mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
- mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
- mindroot/docs/data/equivalent_flags.json +1 -0
- mindroot/docs/data/mcp/servers.json +9 -0
- mindroot/docs/data/models.json +57 -0
- mindroot/docs/data/plugin_manifest.json +95 -0
- mindroot/docs/data/preferred_models.json +12 -0
- mindroot/docs/data/providers.json +62 -0
- mindroot/docs/developer_documentation.rst +26 -0
- mindroot/docs/envvar.png +0 -0
- mindroot/docs/files.png +0 -0
- mindroot/docs/getting_started.rst +139 -0
- mindroot/docs/index.rst +38 -0
- mindroot/docs/install_plugins_with_tools.rst +25 -0
- mindroot/docs/installation.rst +21 -0
- mindroot/docs/installopenrouter.png +0 -0
- mindroot/docs/llm_api_key.rst +22 -0
- mindroot/docs/llm_plugin_installation.rst +27 -0
- mindroot/docs/make.bat +35 -0
- mindroot/docs/mood.png +0 -0
- mindroot/docs/moon.png +0 -0
- mindroot/docs/openrouter.png +0 -0
- mindroot/docs/personas/local/Assistant/avatar.png +0 -0
- mindroot/docs/personas/local/Assistant/faceref.png +0 -0
- mindroot/docs/personas/local/Assistant/persona.json +7 -0
- mindroot/docs/programming_task.rst +10 -0
- mindroot/docs/restart.png +0 -0
- mindroot/docs/source/ahp.rst +7 -0
- mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
- mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
- mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
- mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
- mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
- mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.rst +35 -0
- mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
- mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
- mindroot/docs/source/mindroot.lib.auth.rst +29 -0
- mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
- mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
- mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
- mindroot/docs/source/mindroot.lib.providers.rst +61 -0
- mindroot/docs/source/mindroot.lib.rst +152 -0
- mindroot/docs/source/mindroot.registry.rst +29 -0
- mindroot/docs/source/mindroot.rst +54 -0
- mindroot/docs/source/modules.rst +7 -0
- mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
- mindroot/docs/starting_mindroot.rst +12 -0
- mindroot/docs/user_documentation.rst +16 -0
- mindroot/server.py +10 -1
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +415 -8
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html class="writer-html5" lang="en" data-content_root="../../../../">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>mindroot.lib.plugins.l8n_static_handler — MindRoot 9.10.0 documentation</title>
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=e59714d7" />
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<script src="../../../../_static/jquery.js?v=5d32c60e"></script>
|
|
14
|
+
<script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
15
|
+
<script src="../../../../_static/documentation_options.js?v=3c16008f"></script>
|
|
16
|
+
<script src="../../../../_static/doctools.js?v=9bcbadda"></script>
|
|
17
|
+
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
18
|
+
<script src="../../../../_static/js/theme.js"></script>
|
|
19
|
+
<link rel="index" title="Index" href="../../../../genindex.html" />
|
|
20
|
+
<link rel="search" title="Search" href="../../../../search.html" />
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body class="wy-body-for-nav">
|
|
24
|
+
<div class="wy-grid-for-nav">
|
|
25
|
+
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
26
|
+
<div class="wy-side-scroll">
|
|
27
|
+
<div class="wy-side-nav-search" style="background: #343131" >
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
<a href="../../../../index.html" class="icon icon-home">
|
|
32
|
+
MindRoot
|
|
33
|
+
</a>
|
|
34
|
+
<div role="search">
|
|
35
|
+
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
|
|
36
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
37
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
|
38
|
+
<input type="hidden" name="area" value="default" />
|
|
39
|
+
</form>
|
|
40
|
+
</div>
|
|
41
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
42
|
+
<!-- Local TOC -->
|
|
43
|
+
<div class="local-toc"></div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #343131" >
|
|
49
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
50
|
+
<a href="../../../../index.html">MindRoot</a>
|
|
51
|
+
</nav>
|
|
52
|
+
|
|
53
|
+
<div class="wy-nav-content">
|
|
54
|
+
<div class="rst-content">
|
|
55
|
+
<div role="navigation" aria-label="Page navigation">
|
|
56
|
+
<ul class="wy-breadcrumbs">
|
|
57
|
+
<li><a href="../../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
58
|
+
<li class="breadcrumb-item"><a href="../../../index.html">Module code</a></li>
|
|
59
|
+
<li class="breadcrumb-item active">mindroot.lib.plugins.l8n_static_handler</li>
|
|
60
|
+
<li class="wy-breadcrumbs-aside">
|
|
61
|
+
</li>
|
|
62
|
+
</ul>
|
|
63
|
+
<hr/>
|
|
64
|
+
</div>
|
|
65
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
66
|
+
<div itemprop="articleBody">
|
|
67
|
+
|
|
68
|
+
<h1>Source code for mindroot.lib.plugins.l8n_static_handler</h1><div class="highlight"><pre>
|
|
69
|
+
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
70
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
71
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
|
72
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Request</span><span class="p">,</span> <span class="n">Response</span>
|
|
73
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi.staticfiles</span><span class="w"> </span><span class="kn">import</span> <span class="n">StaticFiles</span>
|
|
74
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">starlette.responses</span><span class="w"> </span><span class="kn">import</span> <span class="n">FileResponse</span>
|
|
75
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">starlette.types</span><span class="w"> </span><span class="kn">import</span> <span class="n">Scope</span><span class="p">,</span> <span class="n">Receive</span><span class="p">,</span> <span class="n">Send</span>
|
|
76
|
+
<span class="c1">#from lib.utils.debug import debug_box</span>
|
|
77
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
|
78
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">traceback</span>
|
|
79
|
+
|
|
80
|
+
<span class="c1"># Import l8n translation functions</span>
|
|
81
|
+
<span class="k">try</span><span class="p">:</span>
|
|
82
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">mindroot.coreplugins.l8n.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">replace_placeholders</span><span class="p">,</span> <span class="n">extract_plugin_root</span><span class="p">,</span> <span class="n">get_localized_file_path</span><span class="p">,</span> <span class="n">load_plugin_translations</span>
|
|
83
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">mindroot.coreplugins.l8n.middleware</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_request_language</span>
|
|
84
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">mindroot.coreplugins.l8n.language_detection</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_fallback_language</span>
|
|
85
|
+
<span class="n">L8N_AVAILABLE</span> <span class="o">=</span> <span class="kc">True</span>
|
|
86
|
+
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
87
|
+
<span class="n">trace</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
|
|
88
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"L8n not available for static files: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">trace</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
89
|
+
<span class="n">L8N_AVAILABLE</span> <span class="o">=</span> <span class="kc">False</span>
|
|
90
|
+
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
91
|
+
|
|
92
|
+
<div class="viewcode-block" id="TranslatedStaticFiles">
|
|
93
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.TranslatedStaticFiles">[docs]</a>
|
|
94
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">TranslatedStaticFiles</span><span class="p">(</span><span class="n">StaticFiles</span><span class="p">):</span>
|
|
95
|
+
<span class="w"> </span><span class="sd">"""Custom StaticFiles handler that applies l8n translations to JavaScript files."""</span>
|
|
96
|
+
|
|
97
|
+
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">directory</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
98
|
+
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">directory</span><span class="o">=</span><span class="n">directory</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
99
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span> <span class="o">=</span> <span class="n">plugin_name</span>
|
|
100
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">directory_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span>
|
|
101
|
+
|
|
102
|
+
<div class="viewcode-block" id="TranslatedStaticFiles.get_current_language">
|
|
103
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.TranslatedStaticFiles.get_current_language">[docs]</a>
|
|
104
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_current_language</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
105
|
+
<span class="w"> </span><span class="sd">"""Get the current language for the request."""</span>
|
|
106
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Getting current language for static file request..."</span><span class="p">)</span>
|
|
107
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">L8N_AVAILABLE</span><span class="p">:</span>
|
|
108
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"WARNING: L8n not available, defaulting to 'en'."</span><span class="p">)</span>
|
|
109
|
+
<span class="k">return</span> <span class="s1">'en'</span>
|
|
110
|
+
|
|
111
|
+
<span class="k">try</span><span class="p">:</span>
|
|
112
|
+
<span class="c1"># Try to get from request state first (set by middleware)</span>
|
|
113
|
+
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="s1">'language'</span><span class="p">):</span>
|
|
114
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Using language from request state: </span><span class="si">{</span><span class="n">request</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">language</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
115
|
+
<span class="k">return</span> <span class="n">request</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">language</span>
|
|
116
|
+
|
|
117
|
+
<span class="c1"># Fallback to l8n middleware function</span>
|
|
118
|
+
<span class="n">lang</span> <span class="o">=</span> <span class="n">get_request_language</span><span class="p">()</span>
|
|
119
|
+
<span class="k">return</span> <span class="n">get_fallback_language</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span> <span class="k">if</span> <span class="n">lang</span> <span class="k">else</span> <span class="s1">'en'</span>
|
|
120
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
121
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error getting language for static file: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
122
|
+
<span class="k">return</span> <span class="s1">'en'</span></div>
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
<div class="viewcode-block" id="TranslatedStaticFiles.should_translate_file">
|
|
126
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.TranslatedStaticFiles.should_translate_file">[docs]</a>
|
|
127
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">should_translate_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
128
|
+
<span class="w"> </span><span class="sd">"""Check if a file should be translated."""</span>
|
|
129
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">L8N_AVAILABLE</span><span class="p">:</span>
|
|
130
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"L8n not available, skipping translation check."</span><span class="p">)</span>
|
|
131
|
+
<span class="k">return</span> <span class="kc">False</span>
|
|
132
|
+
|
|
133
|
+
<span class="c1"># show suffix</span>
|
|
134
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Checking if file should be translated: </span><span class="si">{</span><span class="n">file_path</span><span class="si">}</span><span class="s2"> suffix is </span><span class="si">{</span><span class="n">file_path</span><span class="o">.</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
135
|
+
<span class="c1"># Only translate JavaScript files for now</span>
|
|
136
|
+
<span class="k">return</span> <span class="n">file_path</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'.js'</span><span class="p">,</span> <span class="s1">'.mjs'</span><span class="p">]</span></div>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<div class="viewcode-block" id="TranslatedStaticFiles.apply_translations_to_js">
|
|
140
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.TranslatedStaticFiles.apply_translations_to_js">[docs]</a>
|
|
141
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">apply_translations_to_js</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">language</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
142
|
+
<span class="w"> </span><span class="sd">"""Apply translations to JavaScript content.</span>
|
|
143
|
+
<span class="sd"> </span>
|
|
144
|
+
<span class="sd"> This looks for __TRANSLATE_key__ placeholders in JS files and replaces them</span>
|
|
145
|
+
<span class="sd"> with translated strings. If translations are missing, returns None to</span>
|
|
146
|
+
<span class="sd"> signal that the original file should be served instead.</span>
|
|
147
|
+
<span class="sd"> """</span>
|
|
148
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">L8N_AVAILABLE</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">content</span><span class="p">:</span>
|
|
149
|
+
<span class="k">return</span> <span class="n">content</span>
|
|
150
|
+
|
|
151
|
+
<span class="k">try</span><span class="p">:</span>
|
|
152
|
+
<span class="c1"># Use the l8n replace_placeholders function</span>
|
|
153
|
+
<span class="n">translated_content</span> <span class="o">=</span> <span class="n">replace_placeholders</span><span class="p">(</span><span class="n">content</span><span class="p">,</span> <span class="n">language</span><span class="p">,</span> <span class="n">file_path</span><span class="p">)</span>
|
|
154
|
+
|
|
155
|
+
<span class="c1"># If None is returned, translations are incomplete</span>
|
|
156
|
+
<span class="k">if</span> <span class="n">translated_content</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
157
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"L8n: Missing translations for JS file, will serve original: </span><span class="si">{</span><span class="n">file_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
158
|
+
<span class="k">return</span> <span class="kc">None</span>
|
|
159
|
+
|
|
160
|
+
<span class="k">return</span> <span class="n">translated_content</span>
|
|
161
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
162
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error applying translations to JS file </span><span class="si">{</span><span class="n">file_path</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
163
|
+
<span class="k">return</span> <span class="kc">None</span> <span class="c1"># Fallback to original file on error</span></div>
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
<div class="viewcode-block" id="TranslatedStaticFiles.get_response">
|
|
167
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.TranslatedStaticFiles.get_response">[docs]</a>
|
|
168
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">scope</span><span class="p">:</span> <span class="n">Scope</span><span class="p">)</span> <span class="o">-></span> <span class="n">Response</span><span class="p">:</span>
|
|
169
|
+
<span class="w"> </span><span class="sd">"""Override to add translation support for JavaScript files."""</span>
|
|
170
|
+
<span class="k">try</span><span class="p">:</span>
|
|
171
|
+
<span class="c1"># Get the full file path</span>
|
|
172
|
+
<span class="n">full_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">directory_path</span> <span class="o">/</span> <span class="n">path</span>
|
|
173
|
+
|
|
174
|
+
<span class="c1"># Check if file exists and should be translated</span>
|
|
175
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"l8n Checking static file: </span><span class="si">{</span><span class="n">full_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
176
|
+
<span class="k">if</span> <span class="n">full_path</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">should_translate_file</span><span class="p">(</span><span class="n">full_path</span><span class="p">):</span>
|
|
177
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"l8n Translating static file: </span><span class="si">{</span><span class="n">full_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
178
|
+
<span class="c1"># Create a request object to get language</span>
|
|
179
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">Request</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
|
180
|
+
<span class="n">current_language</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_current_language</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
181
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[UPDATE] l8n Current language for static file: </span><span class="si">{</span><span class="n">current_language</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
182
|
+
|
|
183
|
+
<span class="n">localized_path</span> <span class="o">=</span> <span class="n">get_localized_file_path</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">full_path</span><span class="p">))</span>
|
|
184
|
+
|
|
185
|
+
<span class="c1"># Check if localized file exists</span>
|
|
186
|
+
<span class="k">if</span> <span class="n">localized_path</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
|
187
|
+
<span class="c1"># Read the localized file content</span>
|
|
188
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">localized_path</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"utf-8"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
189
|
+
<span class="n">content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
|
190
|
+
|
|
191
|
+
<span class="c1"># Apply translations</span>
|
|
192
|
+
<span class="n">translated_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">apply_translations_to_js</span><span class="p">(</span>
|
|
193
|
+
<span class="n">content</span><span class="p">,</span> <span class="n">current_language</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">localized_path</span><span class="p">)</span>
|
|
194
|
+
<span class="p">)</span>
|
|
195
|
+
|
|
196
|
+
<span class="c1"># If translations are complete, serve translated content</span>
|
|
197
|
+
<span class="k">if</span> <span class="n">translated_content</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
198
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"l8n: Serving translated JS file: </span><span class="si">{</span><span class="n">full_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
199
|
+
<span class="k">return</span> <span class="n">Response</span><span class="p">(</span>
|
|
200
|
+
<span class="n">content</span><span class="o">=</span><span class="n">translated_content</span><span class="p">,</span>
|
|
201
|
+
<span class="n">media_type</span><span class="o">=</span><span class="s2">"application/javascript"</span><span class="p">,</span>
|
|
202
|
+
<span class="n">headers</span><span class="o">=</span><span class="p">{</span>
|
|
203
|
+
<span class="s2">"Cache-Control"</span><span class="p">:</span> <span class="s2">"no-cache, no-store, must-revalidate"</span><span class="p">,</span>
|
|
204
|
+
<span class="s2">"Pragma"</span><span class="p">:</span> <span class="s2">"no-cache"</span><span class="p">,</span>
|
|
205
|
+
<span class="s2">"Expires"</span><span class="p">:</span> <span class="s2">"0"</span>
|
|
206
|
+
<span class="p">}</span>
|
|
207
|
+
<span class="p">)</span>
|
|
208
|
+
<span class="k">else</span><span class="p">:</span>
|
|
209
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"l8n: Translations incomplete, serving original JS file: </span><span class="si">{</span><span class="n">full_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
210
|
+
<span class="k">else</span><span class="p">:</span>
|
|
211
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"l8n: No localized version found, serving original JS file: </span><span class="si">{</span><span class="n">full_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
212
|
+
<span class="c1"># For non-JS files or when translation is not available, use default behavior</span>
|
|
213
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"l8n Serving static file without translation: </span><span class="si">{</span><span class="n">full_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
214
|
+
<span class="k">return</span> <span class="k">await</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_response</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">scope</span><span class="p">)</span>
|
|
215
|
+
|
|
216
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
217
|
+
<span class="n">trace</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
|
|
218
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error in translated static file handler: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">trace</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
219
|
+
<span class="c1"># Fallback to default behavior on error</span>
|
|
220
|
+
<span class="k">return</span> <span class="k">await</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_response</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">scope</span><span class="p">)</span></div>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
<div class="viewcode-block" id="mount_translated_static_files">
|
|
225
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.mount_translated_static_files">[docs]</a>
|
|
226
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">mount_translated_static_files</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">category</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
227
|
+
<span class="w"> </span><span class="sd">"""Mount plugin static files with translation support.</span>
|
|
228
|
+
<span class="sd"> </span>
|
|
229
|
+
<span class="sd"> Args:</span>
|
|
230
|
+
<span class="sd"> app (FastAPI): The FastAPI application instance</span>
|
|
231
|
+
<span class="sd"> plugin_name (str): Name of the plugin</span>
|
|
232
|
+
<span class="sd"> category (str): Plugin category ('core' or 'installed')</span>
|
|
233
|
+
<span class="sd"> """</span>
|
|
234
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">.paths</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_plugin_path</span>
|
|
235
|
+
|
|
236
|
+
<span class="c1"># debug_box(f"Mounting translated static files for plugin: {plugin_name} in category: {category}")</span>
|
|
237
|
+
|
|
238
|
+
<span class="n">plugin_dir</span> <span class="o">=</span> <span class="n">get_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
239
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_dir</span><span class="p">:</span>
|
|
240
|
+
<span class="k">return</span>
|
|
241
|
+
|
|
242
|
+
<span class="n">dir_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">)</span>
|
|
243
|
+
|
|
244
|
+
<span class="k">if</span> <span class="n">category</span> <span class="o">!=</span> <span class="s1">'core'</span><span class="p">:</span>
|
|
245
|
+
<span class="n">static_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'src'</span><span class="p">,</span> <span class="n">dir_name</span><span class="p">,</span> <span class="s1">'static'</span><span class="p">)</span>
|
|
246
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">static_path</span><span class="p">):</span>
|
|
247
|
+
<span class="n">static_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'static'</span><span class="p">)</span>
|
|
248
|
+
<span class="k">else</span><span class="p">:</span>
|
|
249
|
+
<span class="n">static_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'static'</span><span class="p">)</span>
|
|
250
|
+
|
|
251
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">static_path</span><span class="p">):</span>
|
|
252
|
+
<span class="c1"># Use our custom TranslatedStaticFiles instead of regular StaticFiles</span>
|
|
253
|
+
<span class="n">app</span><span class="o">.</span><span class="n">mount</span><span class="p">(</span>
|
|
254
|
+
<span class="sa">f</span><span class="s2">"/</span><span class="si">{</span><span class="n">dir_name</span><span class="si">}</span><span class="s2">/static"</span><span class="p">,</span>
|
|
255
|
+
<span class="n">TranslatedStaticFiles</span><span class="p">(</span><span class="n">directory</span><span class="o">=</span><span class="n">static_path</span><span class="p">,</span> <span class="n">plugin_name</span><span class="o">=</span><span class="n">plugin_name</span><span class="p">),</span>
|
|
256
|
+
<span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"/</span><span class="si">{</span><span class="n">dir_name</span><span class="si">}</span><span class="s2">/static"</span>
|
|
257
|
+
<span class="p">)</span>
|
|
258
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Mounted translated static files for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> at </span><span class="si">{</span><span class="n">static_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
259
|
+
<span class="c1">#debug_box(f"Mounted translated static files for plugin: {plugin_name} at {static_path}")</span>
|
|
260
|
+
<span class="k">else</span><span class="p">:</span>
|
|
261
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No static files found for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">. Searched in </span><span class="si">{</span><span class="n">static_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
|
262
|
+
|
|
263
|
+
<span class="c1">#debug_box(f"No static files found for plugin: {plugin_name}. Searched in {static_path}")</span>
|
|
264
|
+
|
|
265
|
+
<span class="c1"># JavaScript-specific translation helpers</span>
|
|
266
|
+
<div class="viewcode-block" id="create_js_translation_object">
|
|
267
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.create_js_translation_object">[docs]</a>
|
|
268
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">create_js_translation_object</span><span class="p">(</span><span class="n">translations</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
269
|
+
<span class="w"> </span><span class="sd">"""Create a JavaScript object containing translations.</span>
|
|
270
|
+
<span class="sd"> </span>
|
|
271
|
+
<span class="sd"> This can be injected into JS files to provide client-side translation support.</span>
|
|
272
|
+
<span class="sd"> </span>
|
|
273
|
+
<span class="sd"> Args:</span>
|
|
274
|
+
<span class="sd"> translations: Dictionary of translation key-value pairs</span>
|
|
275
|
+
<span class="sd"> </span>
|
|
276
|
+
<span class="sd"> Returns:</span>
|
|
277
|
+
<span class="sd"> JavaScript code defining a translation object</span>
|
|
278
|
+
<span class="sd"> """</span>
|
|
279
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
280
|
+
|
|
281
|
+
<span class="c1"># Safely serialize translations to JavaScript</span>
|
|
282
|
+
<span class="n">js_translations</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">translations</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
283
|
+
|
|
284
|
+
<span class="k">return</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
285
|
+
<span class="s2">// Auto-generated translation object</span>
|
|
286
|
+
<span class="s2">window.MINDROOT_TRANSLATIONS = </span><span class="si">{</span><span class="n">js_translations</span><span class="si">}</span><span class="s2">;</span>
|
|
287
|
+
|
|
288
|
+
<span class="s2">// Helper function to get translations</span>
|
|
289
|
+
<span class="s2">window.translate = function(key, fallback) </span><span class="se">{{</span>
|
|
290
|
+
<span class="s2"> return window.MINDROOT_TRANSLATIONS[key] || fallback || key;</span>
|
|
291
|
+
<span class="se">}}</span><span class="s2">;</span>
|
|
292
|
+
|
|
293
|
+
<span class="s2">// Alias for shorter usage</span>
|
|
294
|
+
<span class="s2">window.t = window.translate;</span>
|
|
295
|
+
<span class="s2">"""</span></div>
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
<div class="viewcode-block" id="inject_translations_into_js">
|
|
299
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.l8n_static_handler.inject_translations_into_js">[docs]</a>
|
|
300
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">inject_translations_into_js</span><span class="p">(</span><span class="n">content</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">translations</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
301
|
+
<span class="w"> </span><span class="sd">"""Inject translation object into JavaScript content.</span>
|
|
302
|
+
<span class="sd"> </span>
|
|
303
|
+
<span class="sd"> This prepends translation definitions to JS files.</span>
|
|
304
|
+
<span class="sd"> </span>
|
|
305
|
+
<span class="sd"> Args:</span>
|
|
306
|
+
<span class="sd"> content: Original JavaScript content</span>
|
|
307
|
+
<span class="sd"> translations: Translation dictionary</span>
|
|
308
|
+
<span class="sd"> </span>
|
|
309
|
+
<span class="sd"> Returns:</span>
|
|
310
|
+
<span class="sd"> JavaScript content with translations injected</span>
|
|
311
|
+
<span class="sd"> """</span>
|
|
312
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">translations</span><span class="p">:</span>
|
|
313
|
+
<span class="k">return</span> <span class="n">content</span>
|
|
314
|
+
|
|
315
|
+
<span class="n">translation_js</span> <span class="o">=</span> <span class="n">create_js_translation_object</span><span class="p">(</span><span class="n">translations</span><span class="p">)</span>
|
|
316
|
+
<span class="k">return</span> <span class="n">translation_js</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">content</span></div>
|
|
317
|
+
|
|
318
|
+
</pre></div>
|
|
319
|
+
|
|
320
|
+
</div>
|
|
321
|
+
</div>
|
|
322
|
+
<footer>
|
|
323
|
+
|
|
324
|
+
<hr/>
|
|
325
|
+
|
|
326
|
+
<div role="contentinfo">
|
|
327
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
328
|
+
</div>
|
|
329
|
+
|
|
330
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
331
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
332
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
</footer>
|
|
336
|
+
</div>
|
|
337
|
+
</div>
|
|
338
|
+
</section>
|
|
339
|
+
</div>
|
|
340
|
+
<script>
|
|
341
|
+
jQuery(function () {
|
|
342
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
343
|
+
});
|
|
344
|
+
</script>
|
|
345
|
+
|
|
346
|
+
</body>
|
|
347
|
+
</html>
|